先看书上的介绍如下:
解释如下:
这个滤波的编码方面关键点在
如果明确了高斯参数的值,上面过程的编码非常简单,这里故不给出!!!
但是在实际过程中的高斯噪声处理,在小波域去噪的效果非常好,特别是BM3D算法在小波域章节将做介绍!!!
如下这里使用我们上课时讲义的介绍,感觉这里会更容易理解:
分为两个步骤
其中做法的原因上面的图片中已经注释,下面给出代码:
# 自适应中值滤波
# count 为最大窗口数,original 为原图
def adaptiveMedianDeNoise(count, original):
# 初始窗口大小
startWindow = 3
# 卷积范围
c = int(count/2)
rows, cols = original.shape
newI = np.zeros(original.shape)
for i in range(c, rows - c):
for j in range(c, cols - c):
k = int(startWindow / 2)
median = np.median(original[i - k:i + k + 1, j - k:j + k + 1])
mi = np.min(original[i - k:i + k + 1, j - k:j + k + 1])
ma = np.max(original[i - k:i + k + 1, j - k:j + k + 1])
if mi < median < ma:
if mi < original[i, j] < ma:
newI[i, j] = original[i, j]
else:
newI[i, j] = median
else:
while True:
startWindow = startWindow + 2
k = int(startWindow / 2)
median = np.median(original[i - k:i + k + 1, j - k:j + k + 1])
mi = np.min(original[i - k:i + k + 1, j - k:j + k + 1])
ma = np.max(original[i - k:i + k + 1, j - k:j + k + 1])
if mi < median < ma or startWindow > count:
break
if mi < median < ma or startWindow > count:
if mi < original[i, j] < ma:
newI[i, j] = original[i, j]
else:
newI[i, j] = median
return newI
def medianDeNoise(original):
rows, cols = original.shape
ImageDenoise = np.zeros(original.shape)
for i in range(3, rows - 3):
for j in range(3, cols - 3):
ImageDenoise[i, j] = np.median(original[i - 3:i + 4, j - 3:j + 4])
return ImageDenoise
def show(f, s, a, b, c):
plt.subplot(a, b, c)
plt.imshow(f, "gray")
plt.axis('on')
plt.title(s)
def main():
original = plt.imread("lena.tiff", 0)
rows, cols = original.shape
original_noise = pepperNoise(100000, original)
adapMedianDeNoise = adaptiveMedianDeNoise(7, original_noise)
mediDeNoise = medianDeNoise(original_noise)
plt.figure()
show(original, "original", 2, 2, 1)
show(original_noise, "original_noise", 2, 2, 2)
show(adapMedianDeNoise, "adaptiveMedianDeNoise", 2, 2, 3)
show(mediDeNoise, "medianDeNoise", 2, 2, 4)
plt.show()
效果如下:
这里没有对边界做特殊处理,用的黑框,这里读者可以用边缘复制等处理都行,但是从这里可以看出自适应中值滤波和普通中值滤波的区别主要有3个方面:
转载我博客应当经我允许,至少要把原文链接放在文章最前面,这是对本人辛苦原创基本的尊重。
上一篇:数字图像处理python实现-图像去噪之空间域统计排序滤波
下一篇:数字图像处理杂项-同态滤波