H极值和扩展极值

H极值和扩展极值 - 海水和火焰 - 形态学与OpenCV
 
  H极值和扩展极值 - 海水和火焰 - 形态学与OpenCV

转载于:https://www.cnblogs.com/carekee/articles/2298337.html

带噪图像极值中值滤波是一种常见的去噪方法,可以有效地去除图像中的椒盐噪声和胡椒噪声。以下是一个改进的带噪图像极值中值滤波程序的示例。 ```python import numpy as np import cv2 def median_extreme_filter(img, ksize, threshold): # 获取图像大小和通道数 h, w = img.shape[:2] c = 1 if len(img.shape) == 2 else img.shape[2] # 计算边缘扩展的大小 border = ksize // 2 # 对图像进行边缘扩展 img_ext = cv2.copyMakeBorder(img, border, border, border, border, cv2.BORDER_REPLICATE) # 初始化输出图像 img_out = np.zeros((h, w, c), dtype=np.uint8) # 遍历图像 for i in range(border, h + border): for j in range(border, w + border): # 获取当前像素邻域 roi = img_ext[i-border:i+border+1, j-border:j+border+1] # 计算当前像素邻域的中值和极值 median = np.median(roi) max_val = np.max(roi) min_val = np.min(roi) # 判断是否需要进行中值滤波 if max_val - min_val > threshold: img_out[i-border, j-border] = median else: img_out[i-border, j-border] = img[i-border, j-border] return img_out ``` 该函数的输入参数包括: - `img`:待处理的输入图像,可以是灰度图像或彩色图像。 - `ksize`:滤波器的大小,必须是正奇数。 - `threshold`:极值差阈值,如果当前像素邻域的极值差大于该阈值,则采用中值滤波。 该函数的输出为经过带噪图像极值中值滤波处理后的输出图像。 使用示例: ```python import cv2 # 读入图像 img = cv2.imread('input.jpg') # 进行带噪图像极值中值滤波处理 img_filtered = median_extreme_filter(img, ksize=3, threshold=50) # 显示原始图像和处理后的图像 cv2.imshow('Input', img) cv2.imshow('Filtered', img_filtered) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在使用时,可以根据实际情况调整滤波器大小和极值差阈值来获得更好的去噪效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值