数字图像处理主要在以下两个方面有着相当大的应用前景:1)数字信号通讯及模式识别。 2)数字图像的修饰及制作。

  如果要说数字图像处理有什么吸引我们的,可以举这样的例子:比如,你可以把自己认为最漂亮的五个美女的头像储存进数据库中,由图像分析程序分析得到你心目中最漂亮的女生的图像;再如,以后的大门可以不需要使用钥匙,只要装一个摄像探头,它可以根据指纹,头像等人体特征,判定谁是它认可的房屋主人。所以,为了这么吸引人的目标,让我们一起努力吧:)

  [原理]

  数字图像处理的学科基础是统计学,高等数学,随机数学以及计算机图像学偏重颜色及视感方面的内容。许多数字图像的处理算法已经相当成熟,而且实现它们的难度并不算大,关键是找到对应的编程语言合适的像素操作函数即可。这里介绍最简单的一种数字图像处理方式---灰度图像的边缘提取。

  在介绍边缘提取的主要内容前,先着重提一下灰度直方图对于数字图像处理的意义,灰度直方图就是对图像上各级灰度出现的次数进行统计,进行规一化处理之后,绘制出的以灰度值为横坐标,以灰度的频率值为纵坐标的图像。从灰度直方图上可以"读"出关于图像颜色分布的许多信息,是数字图像的第一步,很多的处理都以此为基础展开的。图1是待处理的著名的lena图像,而图2则是它的二维灰度直方图。而根据数字图像在每个像素点的灰度值的不同,可以做出以像素点横,纵值为x,y坐标值,以(x,y)点的灰度值为z坐标值的二维灰度值图,如图3所示,从二维灰度值图中,可以直观的了解到图像各像素点之间灰度变化情况。

  

  图1:Lena原像 图2:Lena原像对应的灰度直方图

  

  图3:Lena原像的二维灰度值图

  好,下面转入边缘提取的正题。所谓边缘提取,就是将图像中各种人物及物品的边缘的刻画出来,而其它的非边缘区域则用边缘区域的对比色进行填充。让我们再把视线回到二维灰度值图上,很显然,如果把图像看成一个连续的曲面,那么在边缘处由于灰度值的剧烈变化,那么无疑,在边缘处像素点的导数(可以是关于x或y的一阶导数或关于x,y的二阶导数)必定要高过非边缘区域处的点。而由于我们的图像是一个个像素点组成的,所以,用离散化的点的刻画不仅更为直接,而且要比连续的曲面处理方便不少。这时,要做的只是将连续曲面上的导数进行离散化(将微分方程改写成差分方程)。在边缘提取里,将这样的离散化,称作"算子"。其中,基于一阶导数著名算子为普通一阶微分算子,Roberts及Sobel算子,基于二阶导数又称为拉普拉斯(Laplace)算子。这算子具体操作起来,其实就是将每个像素点四周的点进行相应的差分运算,实际表现为一个9个像素值(像素x,y及其周围的八个像素,图像四周上的像素作为非边缘点处理)和其对应系数的内积操作,得到的是关于像素点(x,y)的相应导数值,再设定好相应的阙值,即可显示出边缘提取的效果。具体的算子操作在数字图像的课本上都有详述,这里不再赘述。所以,真正进行边缘提取操作还是相当容易的,这容易还是赖于前人栽树的功劳啊。

  [实验结果]

  实现相对简单,具体实现代码请参考源码。

  下面给出两组实验结果,看来,从视觉感受来说,一阶微分算子效果要好些,而二阶的边缘提取能将图像的更多细节变化提取出来,在进一步进行图像处理里,所得信息会更有用些。

  

  图3:普通一阶微分算子 图4:拉普拉斯算子1