数字图像处理锐化技术的原理与实现
2018-03-23赵辰裕
摘 要随着当前计算机技术和网络技术的不断发展,我们的一言一行都被逐渐数字化了。很多真实存在或者抽象的事物都能够用数据进行表现和变换。抽象的图像和视频目前已经可以通过数字进行存储,也可以通过改变图像的数据来优化图像。本文主要介绍数字图像处理领域中锐化技术的几种经典算法的原理,并且使用matlab简单地实现算法。
【关键词】数字图像处理 锐化 Sobel 算子 matlab
1 技术背景
数字图像处理技术发展迅速,目前已经应用在各行各业之中,比如停车场的车牌自动识别,考勤系统的人脸识别等。随着人工智能和大数据技术的逐渐兴起,自动化和数字化将是未来社会的主流趋势,所以数字图像处理技术将会不断发展。
锐化技术仅仅是数字图像处理技术中的一个很小的步骤,但是在处理图像的过程中却是非常必要的,甚至说是必须要进行的一步操作。原因如下:图像可分为高频能量部分和低频能量部分。高频能量部分指的是图像中像素的亮度变化较为剧烈的区域,低频部分指的是图像中像素的亮度变化较为平缓的区域。高频部分主要出现在图像中事物的边缘处,以及图像中的噪声位置。待处理的图像大部分都是存在噪声的,所以可以认为在任何图像处理过程中都少不了“去噪”这一步骤,而事物边缘部分和噪声同属于高频部分,在去噪的过程中就会模糊了图像中的“边缘”部分。所以在去噪操作后往往都会采用锐化技术,使图像中的边缘部分更加明显。
2 经典锐化算法
在介绍几种经典锐化算法前,先对图像数字化做一解释。
如果我们将一张图像看作是由m*n个各种颜色的像素点构成的,那么我们就可以将图像中的每一个像素点对应为一个数字编号,便可以将图像转化为数字矩阵。但是,该如何对多种多样不同的颜色进行编号呢?不同的人给出的编号规则是不是统一呢?以上问题可以由规定统一的计算机颜色模型来解决。
现实生活中我们可以由红,黄,蓝这三种颜色搭配出任意一种颜色。在计算机世界中,也有这样的三原色,那就是红,绿,蓝三种颜色,这三种颜色组成了计算机系统中的颜色模型——RGB模型。在RGB模型中,(0,0,0)代表黑色,(255,255,255)代表白色。按照这样的规则,每种颜色都能够与RGB模型建立对应关系。
如图1:一个5*5的黑白图像就可以转换为如下数字矩阵。
转换为RGB矩阵(表1)。
锐化的原理是将RGB三个颜色通道的值分别进行处理,然后对其进行合并得到锐化之后的图像,所以下面的锐化处理过程,本文仅仅考虑对一个颜色通道进行锐化处理。
在介绍算法前,在此先简单地介绍一下梯度的概念,梯度不是一个确切的数值,它是一个向量,这个向量指向当前位置变化最快的方向。比如一个人站在山顶上,那个最陡峭的方向,便是梯度方向。梯度的长度就是该向量的模。梯度和梯度的长度数学表达如下:
梯度的长度可以表示为:
基于以上两个公式,有人提出了很多利用梯度方式计算图像像素点数值的算子,以下就是其中较为常见的算子。
2.1 单方向梯度算子
单方向梯度算子是较为简单和直观的一种算子,其核心原理就是:模版的中心元素的值等于模板中元素的加权值之和,不需要应用上述的梯度长度计算公式。
以下为单方向梯度算子的模板:
水平方向模板,对水平方向的边缘起到较好的增强作用。
其像素的计算公式为:
垂直方向的微分算子模板,對垂直方向的边缘起到较好的增强作用。
其像素的计算公式为:
2.2 laplacian算子
laplacian算子与单方向梯度算子类似,但是它具有各方向同等性,即与坐标轴无关。
laplacian算子分为四邻域和八邻域模板:
四邻域模板:
其像素的计算公式为:
八邻域模板:
其像素的计算公式为:
2.3 Robert算子
Robert算子是一种交叉差分法,如果我们图片中多为正负45度的边缘,那么使用Robert算子来对图像进行锐化是较为合适的,因为Robert算子能够较好的增强正、负45度的图像边缘。
Robert算子的模板如下:
由此可以得出,Robert算子计算当前像素值的公式为:
2.4 prewitt算子
prewitt算子与Robert算子的不同之处在于:Robert算子是在一个2*2的模板范围内进行计算,而prewitt算子是在一个3*3的模板范围内对像素进行求值。
相比于Robert算子,使用prewitt算子对图像进行边缘增强,可以使图像的水平和垂直方向的边缘更加明显。prewitt算子的模板如下:
由此可以得出,prewitt算子计算当前像素值的公式为:
2.5 Sobel算子
Sobel算子的形式与prewitt算子非常相似,原理也基本相同,但是Sobel算子认为相邻点的距离远近对当前像素点的影响是不同的,距离越近的像素点对当前像素的影响越大,所以权值不应该都是1。Sobel在prewitt算子的基础上增加了权重的概念,其边缘增强的效果更佳。
Sobel算子的模板如下:
由此可以得出,Sobel算子计算当前像素值的公式为:
3 锐化算法实现
本节均是使用matlab软件进行编程实现,字母“d”表示转换为二维数组矩阵的图像,字母“g”表示与d等大小的空白图像,我们要将d图像计算后的结果存储在g图像中。
实现的思路是通过嵌套循环图像的x轴和图像的y轴,遍历到每一个点,计算出当前点经过算子计算后的值,并且赋给图像g相对应位置的点,最终图像g就是经过锐化后的图像。
3.1 单方向梯度算子的算法实现
水平方向梯度算子:
for i=2:m-1
for j=2:n-1
s=abs((d(i-1,j-1)*1+d(i-1,j)*2+d(i-1,j+1)*1+d(i+1,j-1)*(-1)+d(i+1,j)*(-2)+d(i+1,j+1)*(-1)));
g(i,j)=s;
end
end
垂直方向梯度算子:
for i=2:m-1
for j=2:n-1
s=abs((d(i-1,j-1)*(-1)+d(i,j-1)*(-2)+d(i+1,j-1)*(-1)+d(i-1,j+1)*1+d(i,j+1)*2+d(i+1,j+1)*1));
g(i,j)=s;
end
可以明显看出不同的算子在水平和垂直两个方向上的边缘增强效果是不同的。水平方向算子将窗户的水平护栏边缘增强,而垂直方向算子也使垂直方向有相似的效果。
3.2 laplacian算子的算法实现
for i=2:m-1
for j=2:n-1
s=-d(i-1,j)-d(i+1,j)-d(i,j-1)-d(i,j+1)+4*d(i,j);
end
End
可以看出圖片有些失真,原因是因为laplacian算子对四个方向都有一定的边缘增强效果,使得边缘过于明显,轮廓内的图像失真。
3.3 Robert算子的算法实现
for i=1:m-1
for j=1:n-1
s=((d(i,j)-d(i+1,j+1))^2+(d(i+1,j)-d(i,j+1))^2)^(1/2);
g(i,j)=s;
end
end
可以看出,与单方向梯度算子相比,Robert算子没有明显地突出水平或是垂直方向,对两个方向的边缘都有一定程度的增强,并且对正负45度方向的边缘有较强的增强。
3.4 prewitt算子的算法实现
for i=2:m-1
for j=2:n-1
gx=(d(i-1,j-1)*(-1)+d(i,j-1)*(-1)+d(i+1,j-1)*(-1)+d(i-1,j+1)*1+d(i,j+1)*1+d(i+1,j+1)*1); gy=(d(i-1,j-1)*1+d(i-1,j)*1+d(i-1,j+1)*1+d(i+1,j-1)*(-1)+d(i+1,j)*(-1)+d(i+1,j+1)*(-1));
g(i,j)=(s1^2+s2^2)^(1/2);
end
End
效果图(图5)。
可以看出图片也稍有失真,没有Robert算子的锐化效果好,但是比laplacian算子的效果好一些,水平和垂直方向的边缘都得到了增强。
3.5 Sobel算子的算法实现
for i=2:m-1
for j=2:n-1
gx=(d(i-1,j-1)*(-1)+d(i,j-1)*(-2)+d(i+1,j-1)*(-1)+d(i-1,j+1)*1+d(i,j+1)*2+d(i+1,j+1)*1);
gy=(d(i-1,j-1)*(-1)+d(i-1,j)*(-2)+d(i-1,j+1)*(-1)+d(i+1,j-1)*1+d(i+1,j)*2+d(i+1,j+1)*1);
g(i,j)=(gx^2+gy^2)^(1/2);
end
end
效果图(图6)。
Sobel与prewitt算子的原理相似,所以效果图也是十分相近的,但是Sobel算子的锐化效果要比prewitt算子的锐化效果好一些。
通过编程实现每一个算子,可以体会到每一种算子的锐化侧重点都是不同的,我们不能笼统地认为哪一种算子锐化效果最好,因为每种算子都有其适应的图像场景,我们在选取算子前应该分析图像的特点,或是尝试使用不同的算子,观察并选择较为适合的算子。
4 总结
本文通过介绍了几种常见的锐化算子的原理和实现过程,得到了以下结论:
单方向梯度算子和Laplacian算子较为相似,都是均值型算子,但是单方向梯度算法对特定方向的边缘有较好的增强效果,而Laplacian算子不对方向进行特殊处理,两者都对噪声敏感。
Robert 算子利用交叉差分法对图像进行边缘处理,所以其锐化后的边缘不是很平滑。Robert算子也对噪声敏感,所以适用于边缘较明显且噪声较少的图像。
Prewitt算子和Sobel算子类似,都是对两个方向间隔两行(两列)的像素值进行差分计算,两者都对噪声有抑制作用。Sobel考虑到像素的距离不同产生的影响也不同,所以在算法设计时考虑了权重。因此Sobel算子较prewitt算子锐化效果更好。
以上仅为数字图像处理锐化技术中几个常见的锐化算子,原理和实现都较为简单明了。在日后的学习过程中,本人将对数字图像处理锐化技术及其他技术进行更加广泛和深入的了解和研究。
参考文献
[1]杨康叶,邬春学.基于RGB模型颜色相似性的彩色图像分割[J].计算机系统应用,2013,22(03):128-131.
[2]孙增国,韩崇昭.基于Laplacian算子的图像增强[J].计算机应用研究,2007,24(01):222-223.
[3]王冰.用Roberts算子进行边缘处理[J].甘肃科技,2008,24(10):18-20.
[4]冯新宇,方伟林,杨栋.基于中值滤波与Sobel、Canny算子的图像边缘检测研究[J].黑龙江大学工程学报,2009,36(01):101-103.
作者简介
赵辰裕(2001-),男,安徽省马鞍山市人。现就读于宁波市鄞州中学。
作者单位
宁波市鄞州中学 浙江省宁波市 315101