摘 要: 从矩阵变换入手, 将矩阵变换应用到图像处理中, 且通过直方图匹配法及欧几里得距离法求取相似度来进行人脸识别和预测。所得实验结果直观高效, 相似度均能达到90%以上。
关键词: 数字图像处理; 矩阵变换; 人脸识别和预测; 相似度;
Abstract: This paper starts with matrix transformation, applies matrix transformation to image processing, and uses histogram matching method and Euclidean distance to obtain similarity for face recognition and prediction. The experimental results are intuitive and efficient, and the similarity can reach more than 90%.
Keyword: digital image processing; matrix transform; face recognition and prediction; similarity;
0 、引言
图像处理与分析是跨学科的前沿科学技术。在Matlab中, 数字图像是以矩阵或者阵列的方式存储的, 而矩阵或阵列能以图像的形式显示[1]。于是, 图像能以矩阵的方式储存及运算。矩阵中的元素就是图像中的像素值, 反之图像中的像素值就是矩阵中的元素。若数字图像排列成阵列, 相应的矩阵表示为:
在计算机中处理图像信号的技术被称为数字图像处理技术。图像信号经处理后能够获取到一幅数字图像, 也可能获取数字图像的某些特点。对数字图像的研究主要有以下几个方面[2]: (1) 图像获取; (2) 图像变换; (3) 图像增强; (4) 图像复原; (5) 图像分割。生活中很多信息都是图像信息, 灰度图像在Matlab中都是以矩阵形式存储的
1、 矩阵的基本操作
对图像进行相关的操作就是对对应矩阵进行相关的运算。Matlab语言能对同型矩阵或者一个标量与一个矩阵做加法和减法运算, 直接用运算符“+”和“-”。2个矩阵的加法和减法是在矩阵维数相同的情况下对应元素的加减, 而矩阵和标量的加减运算则是矩阵中的每一个元素都与标量进行加减运算。矩阵的加减起增减图像亮度的作用。
1.1、 矩阵的乘除运算
Matlab语言的矩阵乘法运算有标量与矩阵、矩阵与矩阵的乘法, 乘法所使用的运算符为“*”。标量与矩阵的乘法是标量与矩阵每一个元素相乘, 矩阵与矩阵的乘法按照线性代数的乘法规则。矩阵的除法分为左除 (用运算符“\”) 与右除 (用运算符“/”) 。对于矩阵A和B来说, A\B表示矩阵A左除B, 其计算结果与矩阵A的逆和矩阵B相乘的结果相等。矩阵的除法其实就是乘法。
1.2、 矩阵的拼接
矩阵拼接的原理是将2个或2个以上的单个矩阵, 按照一定方向拼接为一个新的矩阵。矩阵的拼接是一种特殊构造矩阵的方式, 不同的是基础单位是原来的矩阵, 目的是得到新的合并矩阵。矩阵拼接分为2种, 依照方向有水平与垂直2种拼接方式[3]: (1) 水平方向拼接的语句是:C=[A, B]; (2) 垂直方向拼接的语句是:C=[A;B]。
1.3、 矩阵的复制
repmat函数应用于对输入矩阵 (较小的矩阵) 进行备份, 然后拼接出一个较大矩阵, 从而完成矩阵的复制。语句如下[4]:B=rempa (A, m, n) 或者B=rempat (A, [m, n]) 。矩阵的复制效果如图1所示。
【由于本篇文章图片较多,如需全文请点击底部下载全文链接】
图1 矩阵的复制效果
2、 图像的基本操作
2.1、 图像的代数运算
2.1.1、 图像的加减运算
几幅大小相同的图像相加就是将对应矩阵进行相加, 2幅图像能够进行加法运算的前提是图像对应的矩阵是同型矩阵。由A±B实现矩阵的加减运算。2个图像的加减运算效果如图2所示。
图2 2 个图像的加减运算效果
2.1.2、 图像的乘除运算
图像相乘对应于矩阵相乘。图像的乘法运算可以实现掩模处理, 即屏蔽掉图像的某些部分。2个矩阵相乘时, 如A×B, A的列数必须要和B的行数相等才可以运算出结果。图像的除法运算可用于校正成像设备的非线性影响。图像像素点的除法运算可以检测图像之间的差别, 除法运算结果主要是像素值比率的变化。图像的乘法与除法运算效果如图3所示。
图3 图像的乘法与除法运算效果
2.1.3、 图像的线性运算
图像的线性运算是通过建立线性映射来调整原图像, 从而达到图像增强或减弱的目的, 公式表示为:
式 (2) 中, Y (x, y) 为目标像素值;X (x, y) 为源像素值;k为斜率;b表示截距。
1) 当k>1时, 可增强图像对比度, 图像像素值在变换后全部变大, 整体增亮。图像线性运算效果如图4所示。
2) 当k=1时, 常用于调整图像亮度。
3) 当0<k<1时, 效果与k>1时相反, 图像像素值在变换后全部变小, 整体削弱。
4) 当k<0时, 原图像较亮的区域变暗, 较暗的区域变亮。若k=-1, b=255, 图像实现反色的效果, imlincomb函数用于图像的线性运算。
图4 图像线性运算效果 (k=2, b=128)
2.2 、图像的几何运算
2.2.1、 图像的缩放
用imresize函数可以改变图像的大小[5], 即改变矩阵的大小, 可以将不同图像的矩阵变成相同大小的矩阵, 图像的缩放处理效果如图5所示。
图5 图像的缩放处理效果
2.2.2、 图像的裁剪
图像裁剪, 即在进行图像运算时, 可将图像的一部分裁剪作为研究的基础, 所裁剪的图像普遍是多边形形状。在剪裁矩阵时, 调用imcrop函数[5], B=imcrop (A, [x, y, z, w]) 。想要得到图像的坐标, 可以通过将图像坐标化, 也可以通过将图像显示后点击上方的数据游标, 从而选定图像中想要知道坐标的点。原图像及裁剪图像如图6所示。
图6 原图像及裁剪图像
2.2.3 、图像的拼接
图像的拼接技术是将很多幅有重叠部分的图像 (也许是不同时间、不同视角或者不同的传感器获取的) 连接成一幅大型的无缝的高分辨率图像的技术。在拼接时, 由于组成的是矩阵形式, 所以需要对其方向进行一定的判断。因此, 在拼接时要注意2幅图像拼接方向的维度。2幅图像的拼接图像如图7所示。
图7 2 幅图像的拼接图像
2.3、 图像的区域操作
2.3.1、 区域选择与区域填充
Matlab中[6], roifill函数用于对指定区域进行填充, 能实现根据颜色选定区域。区域填充与按灰度选择区域如图8所示。
图8 区域填充与按灰度选择区域
2.3.2 边缘提取与对象选择
用bwperim函数能很好地实现图像边缘轮廓的提取。同时bwselect函数能从图像中提取指定对象[6]。
3、 数字图像处理的应用———人脸识别与预测
3.1、 比较2张照片上的人是否为同一个人
网上搜索同一个人不同年龄的照片, 然后截取其面部图像, 将其转换为灰度图像并用imresize函数转化为相同大小。运用Matlab软件计算2张图片的相似度。网上搜索的图像经预处理后的效果如图9所示。
图9 网上搜索的图像经预处理后的效果
3.1.1 、直方图匹配法 (巴氏距离表示相似度)
分别计算图9的灰度化图像的直方图, 然后计算2个直方图的归一化相关系数 (巴氏距离, 直方图相交距离) 。对于离散型概率分布p和q在同一域义, 巴氏距离被定义为:
式 (3) ~ (4) 中, BC (p, q) 是Bhattacharryya系数[7], 且0≤DB (p, q) ≤∞, 0≤BC (p, q) ≤1。对这2个灰度图像绘制直方图计算相关系数, 灰度图像的直方图如图10所示。
图1 0 灰度图像的直方图
Bhattacharyya系数是对2个统计样本的重叠量的近似计算。巴氏系数可用来对2组样本的相关性进行测量。由结果得这2幅图片的Bhattacharryya系数为0.677 3, 也就是说这2幅图像的相似程度达到67.73%;截取面部之后Bhattacharryya系数为0.700 7, 2幅图像的相似度达到了70.07%。
3.1.2、 欧几里得距离法 (余弦相似性表示相关性)
由欧几里得距离的原理易知:2个向量, 若其夹角θ为0, 意味着2个向量的方向相同线段重合;若其夹角θ为90°, 表示2个向量的方向垂直, 2个向量完全不重合。我们可以通过夹角的大小来判断向量的相似程度[8]。夹角越小, 就代表越相似。由余弦定理有:
假设向量坐标为 (x1, y1) , 向量坐标为 (x2, y2) , 则余弦定理的表现形式为:
余弦的这种计算方法对n维向量也成立。假设A和B是2个n维向量, 则A, B可分别表示为 (A1, A2, …, An) 和 (B1, B2, …, Bn) 的形式, 则A与B的夹角θ的余弦:
cosθ的取值为0~1, 值越大, 则2个向量间的d值越小, 即距离越近, 相似度越大。在Matlab中绘图并计算得到结果。欧几里得距离计算余弦相似度如图11所示。
图1 1 欧几里得距离计算余弦相似度
对比图像的直方图可知2张图像大致相同, 计算得余弦角度为40.776 8°, 对应的余弦值为0.757 3。也就是说这2张图像相似程度为75.73%。
3.2、 人脸预测
网上得到同一个人不同时期的照片, 并截取其面部图像, 然后进行灰度化并转换为同样大小。同一个人不同时期的照片及截取面部之后灰度化的图像如图12所示。
图1 2 同一个人不同时期的照片及截取面部之后灰度化的图像 (图像从左到右对应的灰度图像依次标号为B1, B2, B3, B4)
3.2.1、 基于Matlab的多项式拟合预测
在Matlab中采用多项式拟合函数, 将图12中的4个图导入Matlab中用imresize函数得到4个同型的矩阵, 分别记作B1, B2, B3, B4, 以x表示4个年龄段的年龄值, 用B1 (i) 表示第1张图片对应矩阵的第i个位置的像素值, 其他几张图片也取和第1张图片所对应的点即第i个点的像素值。再用polyfit函数进行二次多项式及三次多项式拟合得到拟合函数, 通过polyval函数求得预测年龄图片第i个点的像素值。用for循环对矩阵的每一组对应元素作多项式拟合预测, 产生新的值, 由这些元素组成的矩阵显示成灰度图像, 即得到面部预测图像。多项式拟合人脸预测图如图13所示。
图1 3 多项式拟合人脸预测图
从图像效果不难辨认出预测的图像确为其人, 该算法能很好地预测出未来面部的大致情况, 在刑侦等领域能发挥很大的作用。但图像清晰度有待进一步提高, 究其原因可能是图像作灰度化处理时丢失了一些图像信息, 且不同年龄面部的对应点有些许的偏差, 当然, 图像本身附带有噪声干扰, 且拟合的点数太少 (每组才4个点) 导致结果不是特别完美。
3.2.2、 基于Matlab的插值预测
所谓插值法就是用一个便于计算的简单的函数? (x) 去代替f (x) , 使得φ (xi) =y, 通常称f (x) 为被插值函数, x0, x1, …, xn为插值节点, ? (x) 为插值函数, 求? (x) 的方法叫插值法[9]。
插值法细分为许多种, 有Lagrange插值多项式、逐次线性插值、Newton插值多项式、Hermit插值多项式、3次样条插值等[10,11]。在Matlab中插值函数也可以直接调用interp函数。文中采用三次多项式插值、逐次线性插值分别对数据作内插和外插。内插法可用来预测此人已有年龄间的面容, 外插用来预测已有年龄之外的面容。运用Matlab软件相应的编写程序, 类似多项式拟合的处理方法, 得到三次多项式插值图像如图14所示。
从图像上来看, 直观上可以辨认出预测的图像是确为其人, 三次多项式内插的效果较三次多项式外插效果要好, 这是由插值算法本身所决定的。
图1 4 三次多项式插值图像
3.2.3、 对预测结果的检验
1) 采用直方图匹配法对预测图像进行检验, 因为预测的不同年龄图像较多, 故随机选取其中的几张预测图和几张原图进行检验。先对拟合预测方法进行匹配检验, 分别选取年龄较近的24岁原图与20岁预测图, 50岁原图与60岁及70岁预测图进行比较, 匹配检验结果为:H1=0.671 9, H2=0.583 5, H3=0.645 3。50岁原图与60岁预测图及其对应直方图如图15所示。
图1 5 5 0 岁原图与60岁预测图及其对应直方图
2) 采用直方图匹配法对三次多项式插值预测相似度进行检验, 分别选取24岁原图与35岁预测图, 30岁原图与35岁预测图以及50岁原图与60岁预测图进行相似度检测, 匹配结果为:H1=0.565 9, H2=0.566 8, H3=0.352 3。24岁原图与35岁预测图其对应直方图如图16所示。
图1 6 2 4 岁原图与35岁预测图其对应直方图
通过相似度的匹配比较, 不难发现所预测的图像跟原图的相似度大都大于0.5, 因而这2种方法预测的结果还是较为准确且能接受的。为了进一步提高相似度, 后期工作主要考虑在图像处理过程中如何消除噪声干扰以及像素的准确对位。对于拟合预测, 二次拟合和三次拟合的效果都比较好, 这是由原图像幅数决定的;而插值预测中三次多项式插值较线性插值好, 这是由插值原理决定的。同文献[12]比较, 本文采用的拟合预测及插值预测原理通俗易懂, 方法简单, 编程易于上手, 运行时间短, 效率高, 且有较理想的效果。
4 、结束语
本文在矩阵变换的基础上对图像进行了相关操作, 利用Matlab软件实现了数字图像处理。在此基础上对人脸进行识别和预测, 得到较为直观的结果。将图像处理技术与矩阵变换相结合, 可作为今后进一步研究的方向。
参考文献
[1]Liu X X, Li J F, Hu X Y.Generalized inverse problems for part symmetric matrices on a subspace in structural dynamic model updating[J].Mathematical and Computer Modelling, 2010, 53 (1) :110-121.
[2]Dehghan M, Hajarian M.An iterative method for solving the generalized coupled Sylvester matrix equations over generalized bisymmetric matrices[J].Applied Mathematical Modelling, 2010, 34 (3) :639-654.
[3]王家文, 李仰军.MATLAB 7.0图形图像处理[M].北京:国防工业出版社, 2006:23-42.
[4]Gurav P, Iyer H N, Jain R, et al.A MATLABbased tool for microwave amplifier analysis[C]//IEEE Conference on Information and Communication Technologies.IEEE, 2013:1014-1018.
[5]谢永华, 韩丽萍.基于主梯度编码局部二进制模式的花粉图像识别[J].计算机应用, 2018, 38 (6) :1765-1770, 1783.
[6]楼顺天, 姚若玉, 沈俊霞.MATLAB 7.x程序设计语言[M].2版.西安:西安电子科技大学出版社, 2007:145-166.
[7]吴煜, 杨爱萍, 章宦记, 等.基于黎曼与巴氏距离的脑磁图信号分类方法[J].计算机科学与探索, 2017, 11 (5) :776-784.
[8]王祥玲, 王蒙军, 周亚同.车牌字符的类欧几里得距离特征提取与分析[J].计算机仿真, 2014, 31 (4) :184-187.
[9]张洋.基于双线性插值法的图像缩放算法的设计与实现[J].电子设计工程, 2016, 24 (3) :169-170
[10]崔利宏, 铁旭, 张丰利.三元分次Lagrange插值[J].吉林师范大学学报 (自然科学版) , 2016, 37 (2) :45-49.
[11]张旭, 吴嘎日迪.Lagrange插值和Hermite插值在Orlicz空间内的逼近[J].应用数学, 2018 (1) :237-242.
[12]蒋婷, 沈旭东, 陆伟, 等.基于多特征融合的人脸颜值预测[J].网络新媒体技术, 2017, 6 (2) :7-13.