图像处理基础及OpenCV实现(五)

五、 图像锐化

图像锐化与图像去噪的操作相反,是为了凸显图像一些轮廓和边缘,从而更好的对图像中的目标进行分割和识别,同样这样的操作也会增强噪声,故需要抑制一些噪声的方法。图像锐化的空域方法是利用微分实现的,常见的有一阶微分和二阶微分。因为图像边界信息往往是位于高频部分,利用频域的低通滤波来得到图像的高频信息也可以提取到边界信息。

1、 一阶微分法

图像的微分是利用梯度来实现的,而数字图像的微分运算一般使用差分来代替。

Roberts算子
水平和垂直方向的模板如下图:
在这里插入图片描述
将水平和垂直模板分别与图像卷积,最后计算的梯度可以表示为它们的平方平均或近似为它们的绝对值之和,如下式所示:
g(x,y)=|f(x,y)-f(x-1,y-1)|+|f(x-1,y)-f(x,y-1)|

Prewitt算子
考虑到目标像素周围的点,先求平均,再进行差分,水平和垂直方向的模板如下图:

在这里插入图片描述

Sobel算子
考虑到对距离的加权平均,一定程度的抑制噪声,水平和垂直方向的模板如下图:
在这里插入图片描述
其他模板如各向同性sobel算子、方向梯度模板等不再赘述可自行百度。

Opencv函数

CVAPI(void) cvSobel( const CvArr* src, CvArr* dst,
                    int xorder, int yorder,
                    int aperture_size CV_DEFAULT(3));

参数一:源图像
参数二:输出图像
参数三:x 方向上的差分阶数
参数四:y 方向上的差分阶数
参数五:核的大小,必须是1、3、5、7 。等于1时使用 3x1 或 1x3 内核。特殊变量 CV_SCHARR (=-1),对应 3x3 Scharr 滤波器, Scharr 滤波器系数是:
在这里插入图片描述

注1:sobel算子卷积出的结果会存在负号,因此源图像为8位无符号,输出图像应该保存为16位有符号数,然后再进行转换。代码如下:

	IplImage *src, *dst;
	src = cvCreateImage(cvGetSize(m_ipl), IPL_DEPTH_8U, 1);
	cvCvtColor(m_ipl, src, CV_RGB2GRAY);
	dst = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值