回顾,上节课你学到了什么?
常见的邻接关系有3种: 4邻接N4(p)、D邻接ND(p)和8邻接N8(p)
根据连通性的定义,有4联通、8联通和m联通三种。
cv.erode(img,kernel,iterations)
cv.dilate(img,kernel,iterations)
cv.morphologyEx(img,op,kernel)
开运算:先腐蚀后膨胀。去除边缘高亮毛细噪声,不影响原来的图像
闭运算:先膨胀后腐蚀。消除中间暗淡孔洞,不影响原来的图像
礼帽(顶帽):原图像与开运算图像之差,高亮显示噪声
黑帽:闭运算结果与原图之差,高亮显示暗淡孔洞
目录
1.图像噪声
图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。噪声的存在严重影响了遥感图像的质量,因此在图像增强处理和分类处理之前,必须予以纠正。有常见有椒盐噪声,高斯噪声等。
椒盐噪声
椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。
高斯噪声
高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。噪声点各种颜色都有,常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。除常用抑制噪声的方法外,对高斯噪声的抑制方法常常采用数理统计方法。
2.图像平滑
从信号角度就是去除高频,保留低频。
根据滤波器不同,分为:均值滤波,高斯滤波,中值滤波,双边滤波。
均值滤波
由一个归一化卷积框完成的。相当于使得中心元素的像素值是周围元素的平均值,使得不会出现突然高的像素噪声,缓慢过渡。
例如,3x3标准化的平均过滤器如下所示:
优点:计算简单,运算快。缺点:去除细节,图像模糊
cv.blur(img,ksize,anchor,borderType)
img:处理图像
ksize:卷积核大小
anchor:锚点,默认(-1,-1)表示卷积核中心
borderType:边界类型
举例
#4.1
import cv2 as cv pic1 = cv.imread("5.png") res=cv.blur(pic1,(5,5)) cv.imshow("img",pic1) cv.imshow("blur",res) cv.waitKey(0)
结果
高斯滤波
实质,加权重的卷积核滤波器
二维高斯是构建高斯滤波器的基础,其概率分布函数是二维正态分布:
最高点大小与标准差有关。越接近中心取值越大。
高斯平滑实际上就是设定一个标志差,中心点(0,0)代入二维正态函数中心点求最高值为中心点权重,周围点一样代入坐标求值,最后分别给周围点和中心点赋予不同的权重,总权重归一化后,再加和就是中心点的像素值
优点:对于密集的高斯噪声有很好的处理效果
cv.GaussianBlur(img,ksize,sigmaX,sigmaY,borderType)
ksize:卷积核大小,注意都为奇数
sigmaX:x方向标准差
sigmaY:y方向标准差,不写默认为0,表示和sigmaX相同
borderType:边界类型
举例
#5.2
import cv2 as cv pic1 = cv.imread("5.png") res=cv.GaussianBlur(pic1,(3,3),1 ) cv.imshow("img",pic1) cv.imshow("GaussianBlur",res) cv.waitKey(0)
结果
中值滤波
中值滤波是一种典型的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值。
优点:’中值滤波对椒盐噪声(有特别高的噪声点)来说尤其有用,因为它不依赖于邻域内那些与典型值差别很大的值。
cv.medianBlur(img,ksize)
ksize:卷积核大小,为integer类型
#4.3
import cv2 as cv pic1 = cv.imread("5.png") res=cv.medianBlur(pic1,5) cv.imshow("img",pic1) cv.imshow("medianBlur",res) cv.waitKey(0)
结果
双边滤波
双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。双边滤波器的好处是可以做边缘保存(edge preserving),一般过去用的维纳滤波或者高斯滤波去降噪,都会较明显地模糊边缘,对于高频细节的保护效果并不明。
双边滤波器顾名思义比高斯滤波多了一个高斯方差sigma-d,它是基于空间分布的高斯滤波函数,所以在边缘附近,离的较远的像素不会太多影响到边缘上的像素值,这样就保证了边缘附近像素值的保存。但是由于保存了过多的高频信息,对于彩色图像里的高频噪声,双边滤波器不能够干净的滤掉,只能够对于低频信息进行较好的滤波
双边滤波算法原理:
cv.
filter2D(img, ddepth, ksize, dst, anchor, delta, borderType)
ddepth:指定输出图像深度,-1表示与src深度保持一致
ksize:卷积内核大小, 需大于零,可以不同,如核大小(4,5)
dst:2D卷积操作后的结果
anchor:锚点;默认值Point(-1,-1)表示锚位于内核中央
delta:在将它们存储在dst中之前,将delta可选值添加到已过滤的像素中,默认为None
borderType:边框模式用于图像外部的像素, 默认边缘像素拷贝
举例
#4.4
import cv2 as cv import numpy as np pic1 = cv.imread("5.png") res=cv.filter2D(pic1,-1,(4,5)) cv.imshow("img",pic1) cv.imshow("medianBlur",res) cv.waitKey(0)
结果
总结,这节课你学到了什么?
椒盐噪声
高斯噪声
均值滤波cv.blur(img,ksize,anchor,borderType)
高斯滤波cv.GaussianBlur(img,ksize,sigmaX,sigmaY,borderType)
中值滤波cv.medianBlur(img,ksize)
双边滤波
cv.filter2D(img, ddepth, ksize)