图像锐化
图像锐化处理目的
既然谈到锐化就是对边缘的增强,下面是常见的边缘类型
特点:边缘上的灰度级变化平缓,边缘两侧灰度级变化比较快。
一般来说,边缘指局部不连续的图像特征,也是局部亮度变化最显著的部分。灰度值的跳变、颜色分量的突变、纹理结构的突变都可构成边缘信息。本文边缘信息指的是灰度值的跳变。
方法
微分运算
原理
由上图可见,当使用微分来定义两个像素点之间的变化率,两个像素点灰度级差值小,说明不是边界;差值大,说明是边界。所以最重要的是如何进行微分运算检测灰度级差值大,表明是边缘进行增亮。
运算方法
单向微分运算:水平方向
单向微分运算:垂直方向
双向微分运算:上下、左右两个方向同时进行微分,同时增强水平、垂直方向的边缘。
说明
梯度锐化
- 直接以梯度值代替:双向一次微分运算,算出梯度后让梯度值直接等于该点的灰度值。没有物体内部的信息量了
- 辅以门限判断:当梯度变化很小时,就是图像内部亮度差别而不是边界,可以不考虑。只有大于一定的预值【自己取得】才认为是边界,否则还是原灰度值。比较像素的梯度是否大于30,否若【说明就是图像内部差别不考虑】,将该像素点的灰度值恢复;若是,则将梯度值加100【提升亮度】,加100后若大于255,将其置为255.
3. 给边缘规定一个特定的灰度级:求出梯度值,与规定的灰度级30比较,若大于30,该像素设为255,否则还是原灰度级。
-
给背景规定灰度级:自己规定一个预值,梯度大于预值,使用梯度代替原像素,否则为规定的预值
-
根据梯度二值化图像:比较像素的梯度是否大于预值30,是则将灰度值置为255,否则将 该像素的灰度值置0。
边缘检测
Sobel算子:image =edge(in_image,’sobel’,threshold,direction);
Prewitt算子: image = edge(in_image,’prewitt’,threshold,direction);
Roberts算子: image = edge(in_image,’sobel’,threshold);
Canny算子:image = edge(in_image,’canny’,threshold);