网站一级域名和二级域名,汉堡云虚拟主机,中国铁路建设投资公司网站,天元建设集团有限公司单位代码基本原理#xff1a;
自适应中值滤波器是一种图像处理技术#xff0c;用于去除图像中的噪声。其原理是根据像素周围邻域内像素值的特性#xff0c;动态地选择滤波器的大小和中值滤波的程度。
**邻域选择#xff1a;**对于每个像素点#xff0c;选取一个窗口或者邻域
自适应中值滤波器是一种图像处理技术用于去除图像中的噪声。其原理是根据像素周围邻域内像素值的特性动态地选择滤波器的大小和中值滤波的程度。
**邻域选择**对于每个像素点选取一个窗口或者邻域通常是一个正方形或者矩形窗口在这个窗口内进行滤波操作。 像素排序对于选取的窗口内的像素值按照大小进行排序找出其中间值中位数。 **噪声检测**比较中心像素值与中位数的差值通过一定的阈值来判断这个窗口内是否存在噪声。如果中心像素值与中位数的差值超过了设定的阈值说明这个像素可能受到了噪声的影响。 **滤波处理**如果被判定为受噪声影响的像素则将中心像素值替换为中位数值否则保持原来的像素值不变。
自适应中值滤波器的优点是可以根据像素周围局部区域的情况来动态地调整滤波器的大小和中值滤波的程度能够更好地适应不同类型和程度的噪声。但是它也有可能在某些情况下无法有效去除噪声或者造成图像细节的损失因此在实际应用中需要根据具体情况进行调整和优化。 编写代码输出如下图所示的结果 注意
这是一幅被胡椒和盐粒概率均为0.25的严重椒盐噪声污染的图像。结果依次显示了中值滤波器、自适应中值滤波器对该图像滤波的结果。注意观察自适应滤波器对图像清晰度和细节的较好保持。
代码实现
import cv2
import numpy as np
import skimage
from matplotlib import pyplot as pltimg cv2.imread(Fig0514.tif,0)#中值滤波器
def median_filter(image, kernel):height, width image.shape[:2]m, n kernel.shape[:2]padding_h int((m - 1) / 2)padding_w int((n - 1) / 2)# 这样的填充方式可以奇数核或者偶数核都能正确填充image_pad np.pad(image, ((padding_h, m - 1 - padding_h), \(padding_w, n - 1 - padding_w)), modeedge)image_result np.zeros(image.shape)for i in range(height):for j in range(width):temp image_pad[i:i m, j:j n]image_result[i, j] np.median(temp)return image_resultdef adaptive_median_denoise(image, sxy3, smax7):epsilon 1e-8height, width image.shape[:2]m, n smax, smaxpadding_h int((m - 1) / 2)padding_w int((n - 1) / 2)# 这样的填充方式可以奇数核或者偶数核都能正确填充image_pad np.pad(image, ((padding_h, m - 1 - padding_h), \(padding_w, n - 1 - padding_w)), modeedge)img_new np.zeros(image.shape)for i in range(padding_h, height padding_h):for j in range(padding_w, width padding_w):sxy 3 # 每一轮都重置k int(sxy / 2)block image_pad[i - k:i k 1, j - k:j k 1]zxy image[i - padding_h][j - padding_w]zmin np.min(block)zmed np.median(block)zmax np.max(block)if zmin zmed zmax:if zmin zxy zmax:img_new[i - padding_h, j - padding_w] zxyelse:img_new[i - padding_h, j - padding_w] zmedelse:while True:sxy sxy 2k int(sxy / 2)if zmin zmed zmax or sxy smax:breakblock image_pad[i - k:i k 1, j - k:j k 1]zmed np.median(block)zmin np.min(block)zmax np.max(block)if zmin zmed zmax or sxy smax:if zmin zxy zmax:img_new[i - padding_h, j - padding_w] zxyelse:img_new[i - padding_h, j - padding_w] zmedreturn img_new# 自适中值滤波器处理椒盐噪声
kernel np.ones([7,7])img_arithmentic_mean median_filter(img, kernelkernel)
img_adaptive_median adaptive_median_denoise(img)plt.figure(figsize(7,4))
plt.subplot(1,3,1)
plt.imshow(img, cmap gray)
plt.title(original), plt.xticks([]),plt.yticks([])
plt.subplot(1,3,2)
plt.imshow(img_arithmentic_mean, cmap gray)
plt.title(median), plt.xticks([]),plt.yticks([])
plt.subplot(1,3,3)
plt.imshow(img_adaptive_median, cmap gray)
plt.title(adaptive), plt.xticks([]),plt.yticks([])
plt.show()
结果展示 自适应中值滤波器 Adaptive Median Filter上面提到常规的中值滤波器在噪声的密度不是很大的情况下根据经验噪声的出现的概率小于0.2效果不错。但是当概率出现的概率较高时常规的中值滤波的效果就不是很好了。有一个选择就是增大滤波器的窗口大小这虽然在一定程度上能解决上述的问题但是会给图像造成较大的模糊。
常规的中值滤波器的窗口尺寸是固定大小不变的就不能同时兼顾去噪和保护图像的细节。这时就要寻求一种改变根据预先设定好的条件在滤波的过程中动态的改变滤波器的窗口尺寸大小这就是自适应中值滤波器 Adaptive Median Filter。在滤波的过程中自适应中值滤波器会根据预先设定好的条件改变滤波窗口的尺寸大小同时还会根据一定的条件判断当前像素是不是噪声如果是则用邻域中值替换掉当前像素不是则不作改变。 常规的中值滤波器的窗口尺寸是固定大小不变的就不能同时兼顾去噪和保护图像的细节。这时就要寻求一种改变根据预先设定好的条件在滤波的过程中动态的改变滤波器的窗口尺寸大小这就是自适应中值滤波器 Adaptive Median Filter。在滤波的过程中自适应中值滤波器会根据预先设定好的条件改变滤波窗口的尺寸大小同时还会根据一定的条件判断当前像素是不是噪声如果是则用邻域中值替换掉当前像素不是则不作改变。
自适应中值滤波器有三个目的
• 滤除椒盐噪声 • 平滑其他非脉冲噪声 • 尽可能的保护图像中细节信息避免图像边缘的细化或者粗化。 噪声出现的概率较低自适应中值滤波器可以较快的得出结果不需要去增加窗口的尺寸反之噪声的出现的概率较高则需要增大滤波器的窗口尺寸这也符合种中值滤波器的特点噪声点比较多时需要更大的滤波器窗口尺寸。 中值滤波器能够很好的滤除“椒盐”噪声。椒盐噪声是在图像上随机出现的孤立点根据中值滤波器的原理使用邻域像素的中值代替原像素能够有效的消除这些孤立的噪声点。
和均值滤波器的区别
和均值滤波器相比中值滤波在消除噪声的同时还能在很大程度保护图像的细节不会造成很大的模糊。 和常规的中值滤波器相比自适应中值滤波器能够更好的保护图像中的边缘细节部分。