2016-09-30 11 views
2

위성 SAR 이미지에서 스펙 클 노이즈 제거를하려고합니다. SAR 이미지에서 스펙 클 노이즈 제거를 수행하는 패키지가 없습니다. pyradar를 사용해 보았지만 python 2.7에서 작동하고 Python 3.5를 사용하여 Anaconda에서 작업하고 있습니다. 또한 Rsgislib도 사용할 수 있지만 Linux에 있습니다. Joseph Meiring도 github에서 Lee 필터 코드를 제공했지만 작동하지 않습니다. : https://github.com/reptillicus/LeeFilter파이썬의 스펙 클 (Lee Filter)

친절하게도 Speckle Filter 용 Python 스크립트를 공유하거나 Python에서 스펙 클 필터 디자인을 진행하는 방법이 있습니다.

답변

5

이것은 약간의 재미가 있습니다. 그것을위한 라이브러리를 찾으려하지 말고 정의에서 쓰지 않으시겠습니까?

from scipy.ndimage.filters import uniform_filter 
from scipy.ndimage.measurements import variance 

def lee_filter(img, size): 
    img_mean = uniform_filter(img, (size, size)) 
    img_sqr_mean = uniform_filter(img**2, (size, size)) 
    img_variance = img_sqr_mean - img_mean**2 

    overall_variance = variance(img) 

    img_weights = img_variance**2/(img_variance**2 + overall_variance**2) 
    img_output = img_mean + img_weights * (img - img_mean) 
    return img_output 

당신이 윈도우 단지 (디스크, 가우시안 필터 등으로 회선) 다른 뭔가 uniform_filter 교체, 크기 X 크기의 정사각형하지 않으려면

. img_meanimg_square_mean 모두를 계산할 때와 동일하면 모든 유형의 (가중치 적용된) 평균 필터가 수행됩니다.

Lee 필터는 다소 고풍스러운 필터처럼 보입니다. 가장자리가있는 창에서는 분산이 전반적인 이미지 분산보다 훨씬 높으므로 필터링 된 이미지에 비례하여 필터링되지 않은 이미지의 가중치가 이동하기 때문에 가장자리에서 제대로 작동하지 않습니다. 당신은 노이즈 감소는 일반적으로 아주 좋은,하지만 가장자리를 따라 훨씬 약한 볼 수 있듯이

from pylab import * 
import numpy as np 
img = np.random.normal(0.5, 0.1, (100,100)) 
img[:,:50] += 0.25 
imshow(img, vmin=0, vmax=1, cmap='gray') 
imshow(lee_filter(img, 20), vmin=0, vmax=1, cmap='gray') 

Noisy image with edge Lee filtered

: 1.

에 예 가까워 야합니다.

저는 SAR에 익숙하지 않아서 리 필터에 SAR의 얼룩에 특히 좋은 몇 가지 기능이 있는지는 모르겠지만 가이드 필터 나 가이드와 같은 최신 에지 인식 노이즈 필터를 조사하고 싶을 수도 있습니다. 양측 필터.

+0

고맙습니다. !!!! 알렉스, 실제로 나는이 영역에 새로운 사람이고 좋은 문학을 찾을 수 없었다. 많이 감사합니다 !!!!!!!! –

+1

@Shubham_geo 환영합니다. 나는 더 많은 노트와 예제를 추가했다. –

+0

pyradar 패키지는 내가 가지고있는 이미지에서 문제가되는 것처럼 보입니다. 위 필터와 같은 모든 필터에 대한 정의를 찾을 수있는 정확한 위치를 알려줄 수 있습니까? https://pyradar-tools.readthedocs.io/en/latest/examples.html#example-of-filtros – bicepjai