数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。所以计算机处理的图像都是数字化的图像。在MATLAB中,图像都是以数值矩阵的形式存在和处理的。
2.1.1 像素
像素是构成数字图像的基本单位。一张图片尺寸为600×300像素,即表示横向有600个像素,纵向有300个像素。在数字图像中,每个像素都有对应的数值,二进制图像的像素值为0或1,灰度图像的像素值为0~255,由这些像素值组成的数字图像才能被计算机进行处理。一个像素的具体长度与显示器的分辨率有关,在Photoshop中,1厘米=28.346像素,此时1像素=0.035 278厘米。
2.1.2 分辨率
分辨率可分为屏幕分辨率(显示分辨率)、图像分辨率、打印分辨率(dpi)三个主要类别。下面主要介绍屏幕分辨率和图像分辨率的概念。
1.屏幕分辨率
屏幕分辨率就是计算机显示器的屏幕上能显示信息的数量,即能显示的像素个数,通常以水平和垂直像素数量来衡量。一台计算机显示器的分辨率为1600×900像素,表示该显示器水平方向上能显示1600个像素,垂直方向上能显示900个像素。对于同一台显示器来说,分辨率越高,能显示的像素就越多,屏幕就越清晰。
查看计算机显示器屏幕分辨率的方式有:(1)通过在计算机(Windows 7操作系统)的桌面上单击鼠标右键,选择“屏幕分辨率”,如图2-1所示。(2)打开“控制面板”,选择“外观和个性化”→“显示”→“调整屏幕分辨率”。调整屏幕分辨率的窗口如图2-2所示,可以看到屏幕分辨率有多种选择,如1600×900、1024×768、800×600等。通过调整分辨率,观察显示器的清晰程度,可以看到分辨率越高,显示器屏幕越清晰。
图2-1 Windows 7操作系统中查看屏幕分辨率的方法
图2-2 Windows 7操作系统中调整屏幕分辨率窗口
在实际应用中,显示设备(如显示器、平板电脑、手机屏幕等)的分辨率也经常用每英寸包含的像素个数(Pixels Per Inch,PPI),即每英寸像素数(像素密度)来表示。该值越大,画面的细节就越丰富;该值越小,图像显示就越大。已知屏幕尺寸和屏幕分辨率时,就可以计算该屏幕的PPI。例如,一个5英寸、分辨率为1280×720像素的手机屏幕,其PPI=sqrt(1280×720/5)=429ppi。类似地,已知屏幕的PPI及其尺寸时,也可以计算屏幕分辨率。2010年,史蒂夫·乔布斯(Steve Jobs)在iPhone 4发布会上介绍视网膜技术时,他是这样阐述的:“当你所拿的东西距离你10~12英寸(约25~30厘米)时,它的分辨率只要在300ppi这个‘神奇数字’以上,人眼的视网膜就无法分辨出像素点了。”因此,iPhone 4屏幕的像素密度就设定在326ppi。
2.图像分辨率
图像的分辨率就是图像的尺寸,也称为图像的宽和高,即水平方向上的像素个数和垂直方向上的像素个数。一张分辨率为640×480像素的图片,有480行像素信息,每行有640个像素,该图片包含的像素个数是307 200,也就是我们常说的30万像素。而一个分辨率为1600×1200像素的图片,就达到了约200万的像素。
在实际应用中,视频画面的分辨率经常用多少P表示,它表示一个视频画面的垂直像素数,下面将详细介绍。
3.视频分辨率
经常说某个视频是720P或1080P,P指的是Progressive,即逐行扫描。480P是640×480像素的分辨率。720P是由美国电影电视工程协会制定的一种高清电视格式,即1280×720像素的分辨率。后来又出现了1080P的格式,即分辨率为1920×1080像素。现实生活中,不同的视频网站对标清、高清、超清有不同的定义,通常情况下,标清视频画面的分辨率小于等于480P,而高清视频画面的分辨率为720P(视频中画面的分辨率为1280×720像素),超清视频画面的分辨率则为1080P(视频中画面的分辨率为1920×1080像素)。
2.1.3 图像的色调、亮度和饱和度
1.图像的色调
色调就是通常意义下的彩色,它随波长的变化而变化,反映理论颜色的基本特征。在三原色中,可见光的波长为380~780nm(纳米),不同波长呈现出不同的颜色,可见波长从长到短依次为红、橙、黄、绿、青、蓝、紫。红色的波长为700nm、绿色的波长为546.1nm、蓝色的波长为435.8nm。只有单一波长成分的光称为单色光,含有两种以上波长成分的光称为复合光。色彩通常都是由一种单色光和白光按照一定比例混色的。色调和饱和度合称为色度,色度表示的是色彩的纯度。色度反映颜色的色调和饱和度。颜色由亮度和色度共同表示。
2.图像的亮度
亮度是人眼对光强度的感受,图像的亮度就是图像中光的强度。不同波长的光有着不同的色调,给人不同的颜色感受,也给人不同的亮度感受。人眼一般感到红光最暗,蓝光次之,而黄绿光最亮。
数字图像由数值矩阵表示,每个数值都是图像的像素值。下面我们借助MATLAB工具,介绍如何通过修改像素值改变图像的亮度。
我们使用MATLAB图像处理工具箱中的imadd函数,让数字图像的像素值增加一个常数,从而改变图像的亮度;也可以利用MATLAB图像处理工具箱中的immultiply函数,让数字图像矩阵乘以一个常数,如果常数大于1,则图像的亮度增强,否则图像的亮度将降低,图像变暗。下面我们通过Code1介绍如何利用这些函数改变图像的亮度。
Code1:ch2_1.m
运行Code1后,结果如图2-3所示。我们可以看到,处理后的图像(b)、(c)和原图像(a)相比,亮度明显增加;图像(d)的亮度和原图像(a)相比,明显降低。
图2-3 不同图像亮度的试验结果
此外,还可以利用MATLAB中的其他函数改变图像的亮度,如imadjust函数(调整参数Gamma,如果Gamma小于1,则图像亮度增加;如果Gamma大于1,则图像亮度变暗)、brighten函数(调整参数Beta,如果0<Beta<1,则图像亮度增加;如果-1<Beta<0,则图像亮度变暗)。读者可以查阅MATLAB帮助文档进行这些函数的学习。
3.图像的饱和度
色彩的饱和度就是颜色的纯净度,饱和度越高,色彩越鲜明。色彩的饱和度取决于颜色中白光的比例,色彩中的白光越多,饱和度就越低。纯单色光的饱和度为100%,纯白光的饱和度为0%。
下面我们通过使用Photoshop调整一幅图像的饱和度,观察调整前后图像的变化。具体步骤如下:
(1)在Photoshop中打开一幅图像,如图2-4(a)所示。
(2)选择“图像”→“调整”→“色相/饱和度”,打开“色相/饱和度”对话框,如图2-5所示。
(3)调整饱和度的值。将饱和度调整为100,对应的图片如图2-4(b)所示;将饱和度调整为-100,对应的图片如图2-4(c)所示。
图2-4 同一图片不同饱和度值的变化
图2-5 “色相/饱和度”对话框
上面已经提到,色调和饱和度合称为色度。亮度和色度(色调和饱和度)共同决定了图像的特性。
2.1.4 图像的对比度
对比度是图像的黑白之间的差异,差异越大,则对比度越大,能表示的颜色就越丰富。但是现在还没有通用标准来衡量对比度,需要依靠人的眼睛进行判断。
在MATLAB中,函数imadjust可以增加图片的对比度,格式如下。
Newimg=imadjust(img);
下面我们通过Code2了解如何利用函数imadjust增加图片的对比度。
Code2:ch2_2.m
运行Code2后,结果如图2-6所示。可以看到,处理后的灰度图像(b)和对应的原图(a)相比,对比度增加,图像也更清晰了;处理后的RGB图像(d)和对应的原图(c)相比,颜色更加鲜亮。
图2-6 Code2的运行结果
图2-6 Code2的运行结果(续)
2.1.5 图像的纹理
图像的纹理特征是描述一幅图像的重要性质之一,图像的纹理、颜色和形状一起用来表述图像的视觉特征,也就是人的视觉能感受到的自然特征。
纹理,通常意义上指的是物体表面凹凸不平的沟纹,或者光滑物体表面的彩色图案,这些图案会让人有凹凸不平的视觉感受。图2-7所示的三幅图像就是有纹理的图像。
图2-7 有纹理的图像
灰度分布在空间位置上的反复出现形成了纹理,所以图像空间中一定距离的两个像素是有关系的,灰度共生矩阵就是利用图像灰度级之间的相关性来描述纹理的一种常用方法。灰度共生矩阵的特征有:熵、ASM能量、对比度、均匀度和自相关,可以用这些特征来分析图像的纹理。
· 熵(Entropy):如果灰度共生矩阵元素值分布均匀,则表示图像近于随机,熵值就越大。
· ASM能量:灰度共生矩阵中每个元素的平方和,表示图像是否分布均匀、纹理是否粗糙。图像越有结构,ASM越大。
· 对比度(Contrast):表示图像的清晰程度和纹理深浅程度。灰度共生矩阵中偏离对角线的元素值越大,对比度就越大,纹理也就越深。
· 均匀度:表示图像纹理的粗细度。纹理越粗糙,则均匀度越大;纹理越细致,则均匀度越小。
· 自相关(Correlation):描述灰度共生矩阵中水平或垂直方向上的相似度。如果矩阵中水平方向的元素值均匀相等,则水平方向的相关性大,对应的图像在水平方向上越有纹理,则水平方向灰度共生矩阵的自相关值大于其他方向灰度共生矩阵的自相关值。
在MATLAB中,函数graycomatrix可以生成一幅图像的灰度共生矩阵,格式如下。
glcm=graycomatrix(img,[param1,val1,param2,val2…])
img是输入的原图像,glcm是返回的灰度共生矩阵。函数graycomatrix可以设置一些参数,如表2-1所示。
表2-1 函数graycomatrix的参数
在MATLAB中,函数graycoprops可以获取一个共生矩阵的熵、ASM能量、对比度和自相关的属性值,格式如下。
下面我们通过Code3说明如何利用函数graycomatrix生成图像对应的灰度共生矩阵,并利用函数graycoprops获取共生矩阵的属性值。
Code3:ch2_3.m
运行Code3后,结果如图2-8所示。在MATLAB工作空间中查看glcm1和glcm2的值,如图2-9所示。最后,统计两幅纹理图像的对比度、自相关、熵的属性值,即工作空间中的stats1和stats2,结果如表2-2所示。
图2-8 Code3的运行结果
图2-9 两幅纹理图像对应的灰度共生矩阵
表2-2 两幅纹理图像对应的灰度共生矩阵的属性值
空调风格栅图的纹理比较深,所以它的对比度比较大。