目前暂时只接触到椒盐噪声和高斯噪声(正态分布)
1.图像平滑(低通滤波)
图像平滑又称图像模糊,图像滤波,主要目的是去噪,同时可能丢失图像细节,数学原理为卷积,有以下几种主流算法:
1.均值模糊
2.高斯模糊:沿卷积核中心对称分布,离中心越近,权重越大
3.最大值模糊(膨胀)
4.最小值模糊(腐蚀)
5.中值滤波:卷积核为奇数且维数至少为3(数学原理束缚)
6.非局部均值去噪
7.大佬可以自己算卷积核设计算法
根据反复实验,有效去除椒盐噪声主要采用中值滤波和非局部均值去噪,有效去除高斯噪声主要采用高斯滤波和非局部均值去噪
有个问题百思不得其解:无论如何调参,去除高斯噪声时,非局部均值去噪总是比高斯模糊效果好,这与我最初的想法相悖,可能是我没找到合适的样图。
非局部均值去噪api:
fastNlMeansDenoisingColored(InputArray src, OutputArray dst, float h=3, float hColor=3, int templateWindowSize=7, int searchWindowSize=21 )
src – 输入8位3通道图像
dst – Output image with the same size and type as src .
h – 亮度分量的参数调节滤波器强度。较大的h值可以很好地去除噪声,但也可以去除图像细节,较小的h值可以保留细节,但也可以保留一些噪声
hColor – 和h一样,但是对于颜色分量。对于大多数图像,值等于10将会消除有色噪声和不扭曲颜色
templateWindowSize – 用于计算权重的模板补丁的像素大小。应该是奇数。推荐值7像素
searchWindowSize – 用于计算给定像素的加权平均的窗口大小(以像素为单位)。应该是奇数。线性影响性能:更大的搜索窗口-更大的去噪时间。推荐值21像素
2.图像边缘检测
一维边缘算子:
1.罗伯特算子
2.皮威特算子
3.索贝尔算子(有独立的api: cv.Sobel())
二维边缘算子:
拉普拉斯算子
Canny边缘检测算法(很imba):(以下五点非原创)
1、图像灰度化:只有灰度图才能进行边缘检测
2、去噪:噪声点将影响边缘检测的准确性
3、求解梯度幅度和方向:利用sobel算子求解
4、非极大值抑制:定位准确的边缘同时可缩小边缘线宽
5、双阀值算法检测及连接边缘
使用api时,高低阈值一般为:high = 2 * low
3.图像锐化(高通滤波)
1.拉普拉斯锐化
2.USM锐化算法:
从原图获得模糊的mask和高对比度图像,再将二者加权
网友评论