「python opencv视觉入门到实战」二、格式与摄像头
「python opencv 视觉入门到实战」 三、图像编辑
「python opencv视觉入门到实战」 第四节色彩空间

「python opencv视觉入门到实战」 五、工具追踪
「python opencv视觉零根本到实战」 六、图像运算
「python opencv视觉零根本实战」 七逻辑运算运用
「python opencv视觉零到实战」 八、图片选区操作
如有缺点欢迎指出~
二、理解模糊的运用2.1 理解卷积是什么在本节中,卷积我们不过多的进行深入讲解,我本人对卷积也只是稍有理解,不敢过多的编写太深的内容。在OpenCV中的模糊操作中,模糊须要用到卷积,在此引入贾志刚老师对付OpenCV的基本卷积的讲解。以下是一个基本卷积的图示,第一列是一维数组中每一个位置的值。个中111我们称为卷积核。通过卷积核与一维数组进行打算终极将会得到蓝最下面的蓝色方块内的值。第一位我们照着写下,蓝色区域为1,蓝色方块内的第二个值为2,是如何得到的呢?很大略,用卷积核的每一个数乘上淡青蓝色的内容,那便是11,21,15,随后将它们进行相加,除以卷积核的步长,也便是3。这时就可以写成(11+21+15)/3即是2,余数为2,我们只取整数部分。之后的打算也是如此,包括二维的数据进行打算也是根据一维的打算事理同等。
2.2 均值模糊
在OpenCV中均值模糊利用blur函数,blur函数一样平常利用可以吸收2个参数,一个是src为输入的图像,一个是ksize为卷积核大小;卷积核大小可以给予一个矩阵,如上图所述的111是1行3列的卷积核,那么就可以写为(1,3)。模糊都可以去进行去噪操作,不同的模糊对付不同的噪点有不同的效果。均值模糊一样平常可以用在随机噪点的图片中,可以很好的去除噪点。
首先我们引入一张图片:
import cv2img = cv2.imread(r"C:\Users\Administrator\Desktop\2.jpg")cv2.imshow("img", img)
随后利用blur均值模糊函数对图片进行降噪:
blur_img=cv2.blur(img,(2,24))#图片去噪
blur函数第一个参数是img,为我们即将要处理的图片,第二个参数是(2,24),表示创建一个2行24列的卷积核进行卷积。末了显示图片并且进行等待,完全代码如下:
import cv2img = cv2.imread(r"C:\Users\Administrator\Desktop\3.jpg")cv2.imshow("img", img)blur_img=cv2.blur(img,(2,24))#图片去噪cv2.imshow("blur_img", blur_img)cv2.waitKey (0)#等待关闭cv2.destroyAllWindows()#destroy
我们可以从图片中看到,原图是存在一定的噪点,但是进行均值模糊后会变淡很多,但是图片会有一定模糊。
2.3 中值模糊中值模糊利用medianBlur函数,medianBlur一样平常吸收2个参数,一个是待处理的图片,还有一个是核的大小,规定为大于1的奇数,例如3、5、7…现在我有一张有椒盐噪点的图片:
中值模糊对付该类型的图片进行降噪效果十分显著。由于大多数代码已经讲解过,在此不再赘述,直接贴上代码:
import cv2img = cv2.imread(r"C:\Users\Administrator\Desktop\2.jpg")cv2.imshow("img", img)median_blur_img=cv2.medianBlur(img,5)cv2.imshow("median_blur_img", median_blur_img)cv2.waitKey (0)#等待关闭cv2.destroyAllWindows()#destroy
以上代码中利用了medianBlur中值模糊方法,传入了照片,并且给予了核大小值5,该值越大,则越模糊。结果如下:
2.4 锐化
在OpenCV中我们可以自定义内核对图像进行卷积,内核也有几种不同标准的内容,可以给图像进行卷积后达到一些指定的效果。自定义对内核进行卷积利用filter2D函数。函数原型如下:
cv.filter2D(src, ddepth, kernel)
src为待处理的图像;ddepth一样平常利用为-1,表示与原图像具有相同的深度;kernel为卷积核,为单通道浮点矩阵;由于我们进行初步利用直策应用一样平常的卷积核,这个时候直接传入固天命据即可,以是再次并不进行深度解释。
进行锐化的卷积核为:
kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)
传入至filter2D函数则为:
cv2.filter2D(blur_img, -1, kernel)
现在我们将一个受到均值模糊的图片利用filter2D函数进行锐化处理,完全代码如下:
import cv2import numpy as npimg = cv2.imread(r"C:\Users\Administrator\Desktop\4.jpg")cv2.imshow("img", img)blur_img=cv2.blur(img,(1,6))#图片去噪cv2.imshow("blur_img", blur_img)kernel=np.array([[0,-1,0],[-1,5,-1],[0,-1,0]],np.float32)dst = cv2.filter2D(blur_img, -1, kernel)cv2.imshow("dst", dst)cv2.waitKey (0)#等待关闭cv2.destroyAllWindows()#destroy
以上代码中blur_img,是均值模糊后的图片,我们将blur_img传入值filter2D函数中利用指定的卷积核进行锐化,末了得到dst图像数据。结果如下:均值模糊:
锐化处理:
从图片的结果可以看出,进行均值模糊后,再进行锐化,该图片的编译将得到加深。
2.4 浮雕矩阵:
kernel=np.array([[-2,-1,0],[-1,1,1],[0,1,2]],np.float32)
有点鬼畜,不要笑。
2.5 大纲矩阵:
kernel=np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]],np.float32)
矩阵:
kernel=np.array([[0,1,0],[1,-4,1],[0,1,0]],np.float32)
矩阵:
kernel=np.array([[0,0,0],[0,1,0],[0,0,0]],np.float32)
本系列文章首发于ebaina
三、总结理解了卷积卷积的运算办法理解多种模糊的利用方法理解了中值模糊对付椒盐噪点有很好的去噪效果