您的位置:首页 > 运维架构

我的OpenCV学习笔记(10):空域滤波之锐化滤波器

2012-05-01 13:03 465 查看
锐化的作用是加强图像的边沿和轮廓,通常也成为高通滤波器:

模板一般设计为中心处的值为正,外围的值为负(总系数之和为0):

int main()
{
//源图像
Mat scr = imread("D:/picture/img.tif");
Mat rst;
imshow("原图像",scr);

Mat kernel(3,3,CV_32F,Scalar(-1));
// 分配像素置
kernel.at<float>(1,1) = 8;
filter2D(scr,rst,scr.depth(),kernel);
imshow("锐化结果",rst);
waitKey(0);
return 0;
}


 



我们可以看到,虽然增强了边沿,但是图像本身的层次和亮度已经基本丢失,对于那些与模板运算后小于0的数,会将他们自动置0,所以会有大片的黑色。

而我们通常使用的,是高增益滤波器,他在增强边沿、细节的同时,不会丢失源图像的低频成份:

高增益 = A原图-低通=(A-1)原图+(原图*低通)=(A-1)原图+高通,所以当A>1时,就会将源图像的一部分加入到高通滤波的结果中。

对于3*3的模板,正中间的数kernel(1,1)= 9A-1;其他数为-1。

程序只改动一行:

kernel.at<float>(1,1) = 8.9;


 

结果差异就很明显:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  filter