图像模糊是指使图像不清晰或不清晰。中值滤波器通常用于去除图像或信号中的噪声。中值滤波在数字图像处理中非常广泛地使用,因为在某些条件下,中值滤波可以在消除噪声的同时保留边缘。
在此程序中,我们将使用OpenCV-python(cv2)模块的两个功能。.让我们首先查看它们的语法和描述:
1) imread():
它将图像文件的绝对路径/相对路径作为参数,并返回其对应的图像矩阵。
如果标志值为:
1:加载彩色图像。
0:以灰度模式加载图像。
-1:加载图像,包括alpha通道。
如果未给出标志值,则显示原始图像,并给出哪个路径。
2) imshow():
以窗口名称和图像矩阵为参数,以便在具有指定窗口名称的显示窗口中显示图像。
同样在此程序中,我们将使用numpy模块的一个功能。
median():获取数组并返回数组的中位数。
另外,在此程序中,我们使用数组切片的概念
设A为一维数组:
A [start:stop:step]
start:序列的起始编号。
停止:生成不超过此数字的数字,但不包括此数字。
步骤:序列中每个数字之间的差。
示例
A = [1,2,3,4,5,6,7,8,9,10] print(A[ 1: 5]) Output: [2,3,4,5]
# import cv2 module import cv2 #将numpy模块作为np导入 import numpy as np #定义一个函数来执行 #图像的中值模糊 def MedianBlur(img,size) : Ic = img for i in range(size//2 + 1,Ic.shape [0]): for j in range(size//2 + 1,Ic.shape [1]): N = Ic[i-size//2 : i+ size//2 + 1, j - size//2: j+ size//2 + 1] #求子矩阵的中值 med = np.median(N) #将该中值赋给指定的像素坐标 img[i, j] = med # return blur image return img # Driver code if __name__ == "__main__" : #使用cv2的imread()函数读取图像 #我们必须通过图像的路径 #以及标志的值,该值是可选的 img = cv2.imread(r'C:\Users\user\Desktop\pic6.jpg',0) #显示灰度图像 cv2.imshow('original image',img) #子矩阵的阶 order = 5 #调用 MedianBlur 函数 img = MedianBlur(img,order) #显示平滑图像 cv2.imshow("smooth image",img)
输出结果