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)




댓글

이 블로그의 인기 게시물

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

간단한 cfar 알고리즘에 대해

이미지의 가장자리 경계면 검출 (edge detection) 원리와 예제

이미지 blur와 양방향 필터링(Bilateral Filtering)

모기 퇴치기 Android 모기 퇴치 앱으로 만들어 쓰자