OpenCV图像锐化

参考文献:

http://blog.csdn.net/xmfthu/article/details/15027195

http://blog.sina.com.cn/s/blog_627e716701015z79.html

锐化的作用是加强图像的边沿和轮廓,通常也成为高通滤波器:

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


#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
using namespace cv;


int main()
{
	//源图像
	Mat scr = imread("lena.jpg");
	Mat rst;
	imshow("原图像",scr);

	Mat kernel(3,3,CV_32F,Scalar(-1)); 
	// 分配像素置
//	kernel.at<float>(1,1) = 8;
	kernel.at<float>(1,1) = 8.9;
	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。

程序只改动一行:

[cpp]  view plain copy
  1. kernel.at<float>(1,1) = 8.9;  


 

结果差异就很明显:

参考文献:

http://ggicci.blog.163.com/blog/static/210364096201262123236955/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值