這是一個有趣的小問題。爲什麼不從定義中寫出它,而不是試圖爲它找到一個庫?
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
如果你不想窗口是大小x尺寸的正方形,只需更換uniform_filter
用別的東西(卷積磁盤,高斯濾波器等)。只要計算img_mean
和img_square_mean
,任何類型的(加權)平均濾波器都可以。
李過濾器似乎相當老式的過濾器。它在邊緣表現不好,因爲對於任何有邊緣的窗口來說,方差將遠遠高於整體圖像方差,因此(未濾波圖像相對於濾波圖像的)權重要接近1
一個例子:
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')
![Lee filtered](https://i.stack.imgur.com/o4Lxe.png)
正如你所看到的降噪總體很好,但沿着邊緣弱得多。
我對SAR不熟悉,所以我不知道Lee過濾器是否具有某些功能,使其特別適用於SAR斑點,但您可能需要考慮現代邊緣感知的除霧器,如引導過濾器或雙邊過濾器。
非常感謝!!!!亞歷克斯,其實我是這個領域的新手,並沒有找到一份好的文學作品。感謝很多!!!!!!!! –
@Shubham_geo不客氣。我增加了一些筆記和一個例子。 –
pyradar軟件包似乎是我擁有的圖像的一個問題,您能否指點我們到正確的位置,我們可以在這裏找到所有過濾器的定義,就像您上面的過濾器一樣? https://pyradar-tools.readthedocs.io/en/latest/examples.html#example-of-filtros – bicepjai