最大最小值滤波
最大最小值滤波是一种比较保守的图像处理手段,与中值滤波类似,首先要排序周围像素和
中心像素值,然后将中心像素值与最小和最大像素值比较,如果比最小值小,则替换中心像
素为最小值,如果中心像素比最大值大,则替换中心像素为最大值。一个Kernel矩阵为3X3的最大最小值滤波如下:
python源码:
# 最大最小值滤波算子
def max_min_value_filter(image, ksize=3, mode=1):
"""
:param image: 原始图像
:param ksize: 卷积核大小
:param mode: 最大值:1 或最小值:2
:return:
"""
img = image.copy()
rows, cols, channels = img.shape
if channels == 3:
img = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
padding = (ksize-1) // 2
new_img = cv2.copyMakeBorder(img, padding, padding, padding, padding, cv2.BORDER_CONSTANT, value=255)
for i in range(rows):
for j in range(cols):
roi_img = new_img[i:i+ksize, j:j+ksize].copy()
min_val, max_val, min_index, max_index = cv2.minMaxLoc(roi_img)
if mode == 1:
img[i, j] = max_val
elif mode == 2:
img[i, j] = min_val
else:
raise Exception("please Select a Mode: max(1) or min(2)")
cv2.imshow("max_min_filter", img)
cv2.waitKey(0)
cv2.destroyAllWindows()