Python通过使用用户定义的中值模糊滤镜执行模糊操作来平滑灰度图像
图像模糊是指使图像不清晰或不清晰。中值滤波器通常用于去除图像或信号中的噪声。中值滤波在数字图像处理中非常广泛地使用,因为在某些条件下,中值滤波可以在消除噪声的同时保留边缘。
在此程序中,我们将使用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]
Python程序可平滑灰度图像
# import cv2 moduleimport 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)
输出结果
以上是 Python通过使用用户定义的中值模糊滤镜执行模糊操作来平滑灰度图像 的全部内容, 来源链接: utcz.com/z/340729.html