CA-CFAR 예제 코드

 이전 포스트에서 CFAR의 원리에 대해 알아본 적이 있다. 본 포스트에서는 Python으로 CA-CFAR에 대해 간단하게 구현한 예제를 수록하고 있다.

구현된 CA-CFAR은 아래 그림과 같이 구현되었다.

 


ca-cfar 코드

import numpy as np

class cacfar(object):
    def __init__(self, window_size, guard_size,pfa = 0.01, scale=1.0):
        self.pfa = pfa
        self.scale = scale
        self.window_size = window_size
        self.guard_size = guard_size
        
    def cal_threshold(self, left, right):       
        n = len(left)+len(right)
        s = np.sum(np.square(left))+np.sum(np.square(right))
        
        if n > 0:
            T= np.power(self.pfa,(-1.0 /n)) - 1
            average = s/n
            return T*average * self.scale
        
        return 0
    
    def clip_window(self, window,limit):
        for i in range(len(window)):
            if window[i] < 0:
                window[i] = 0
            if window[i] > limit:
                window[i] = limit
        return window        
    
    def get_thresholds(self,signal):
        threshold = np.zeros_like(signal)       
        for i in range(len(signal)):
            left_window = self.clip_window([i-self.guard_size-self.window_size,i-self.guard_size],len(signal)-1)
            right_window = self.clip_window([i+self.guard_size,i+self.guard_size+self.window_size],len(signal)-1)
            
            threshold[i] = self.cal_threshold(signal[left_window[0]:left_window[1]],signal[right_window[0]:right_window[1]])
        
        return threshold



ca-cfar 사용예

cfar = cacfar(window_size=30,guard_size=30,pfa=0.0001,scale=10)
threshold = cfar.get_thresholds(signal)




댓글

이 블로그의 인기 게시물

간단한 cfar 알고리즘에 대해

간단한 칼만 필터(Kalman Filter) 소스 코드와 사용 예제

windows에서 간단하게 크롬캐스트(Chromecast)를 통해 윈도우 화면 미러링 방법

바로 프로젝트 적용 가능한 FIR Filter (low/high/band pass filter )를 c나 python으로 만들기