第三章 图像代数运算与逻辑运算PPT讲稿.ppt
《第三章 图像代数运算与逻辑运算PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第三章 图像代数运算与逻辑运算PPT讲稿.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 图像代数运算与逻辑运算第1页,共46页,编辑于2022年,星期二l例3-1 利用矩阵的加减运算增加或减少图像中的某种颜色成分。lA=imread(0045.jpg);ls=size(A);lB=double(A);lC(:,:,1)=B(:,:,1)+B(:,:,2);lC(:,:,2)=B(:,:,2);lC(:,:,3)=B(:,:,3)-B(:,:,2);lfor i=1:s(1)l for j=1:s(2)l for k=1:s(3)l if C(i,j,k)255l C(i,j,k)=255;l endl endl endlendlC=uint8(C);lsubplot(1,
2、2,1);imshow(A)lsubplot(1,2,2);imshow(C)3.1 图像的加减乘除运算 第2页,共46页,编辑于2022年,星期二l例3-2lA=imread(0045.jpg);ls=size(A);lB=double(A);lQ1=zeros(s(1),s(2);lQ2=zeros(s(1),s(2);lfor m=s(1):-1:1l for n=s(2):-1:1l Q1(m,n)=m;l Q2(m,n)=n;l endlend lC(:,:,1)=B(:,:,1);lC(:,:,2)=B(:,:,2)-Q2;lC(:,:,3)=B(:,:,3)+Q1/3;lfor
3、i=1:s(1)l for j=1:s(2)l for k=1:s(3)l if C(i,j,k)255l C(i,j,k)=255;l endl endl endlendlC=uint8(C);lsubplot(1,2,1);imshow(A)lsubplot(1,2,2);imshow(C)第3页,共46页,编辑于2022年,星期二l图像加减运算 图像的加减运算实质上就是两个矩阵或者三维图像的加减运算实质上就是两个矩阵或者三维数组进行加减运算。数组进行加减运算。l【例例3-3】利用矩阵的加减运算为图像添加背景。利用矩阵的加减运算为图像添加背景。A=imread(D:0043.jpg);B=
4、imread(D:125.jpg);s1=size(A);s2=size(B);m=s2(1);n=s2(2);A1=imresize(A,m n);A2=double(A1);B1=double(B);C=A2+B1;C1=uint8(C);subplot(1,3,1);imshow(A)subplot(1,3,2);imshow(B)subplot(1,3,3);imshow(C1)l合合理理的的选选择择两两个个图图像像,或或者者先先对对图图像像进进行行处处理理,然然后后把把两两个个图图象象相相加加,使一个图象成为背景。使一个图象成为背景。l左左 面面 程程 序序 就就 是是 把把 图图
5、像像125.jpg作为背景。作为背景。第4页,共46页,编辑于2022年,星期二程序的运行结果为图程序的运行结果为图3-3。程序中,为了把两个图像变为大小。程序中,为了把两个图像变为大小相同,使用了语句相同,使用了语句A1=imresize(A,m n)。语句。语句C1=uint8(C)是为是为了绘图才使用的,作者在实验时发现不使用语句了绘图才使用的,作者在实验时发现不使用语句C1=uint8(C),程序绘制不出图,程序绘制不出图3-3(c)。(a)前景图0043.jpg (b)背景图125.jpg (c)合成图像 图3-3 为图像添加背景【思考题】如何修改上面例【思考题】如何修改上面例3-3
6、中的程序,使背景图象清楚一些。中的程序,使背景图象清楚一些。第5页,共46页,编辑于2022年,星期二【例3-4】动画效果。A=imread(D:0010.jpg);A=imread(D:0010.jpg);s=size(A);s=size(A);m=s(1),n=s(2);m=s(1),n=s(2);B=zeros(m,n);B=zeros(m,n);A1=double(A);A1=double(A);for i=1for i=1:1010:255255B(100:250,250:380)=i;B(100:250,250:380)=i;A1(:,:,3)=A1(:,:,3)-B;A1(:,:
7、,3)=A1(:,:,3)-B;A2=uint8(A1);A2=uint8(A1);imshow(A2)imshow(A2)endend程序中,语句程序中,语句B(100:250,250:380)=iB(100:250,250:380)=i是把矩阵是把矩阵B B中的一块赋值中的一块赋值为为i i,随着,随着i i的增加,矩的增加,矩阵阵B B中的这一块的值也在中的这一块的值也在增加。增加。然后利用语句然后利用语句A1(:,:,3)=A1(:,:,3)A1(:,:,3)=A1(:,:,3)-B-B让花附近的蓝颜色让花附近的蓝颜色逐渐减少。逐渐减少。第6页,共46页,编辑于2022年,星期二(a)
8、i=1 (b)i=150 (c)i=250 图3-4 图像局部块蓝色逐渐消失【思考题】如何修改上面例3-4中的程序,使花附近的绿颜色逐渐渐少。程序运行结果是一个花颜色逐渐改变的动画,为了方便观察分析,取其中几帧放在图3-4中。第7页,共46页,编辑于2022年,星期二图像的乘除运算 图像的乘除运算主要指图像矩阵与常数进行乘除运图像的乘除运算主要指图像矩阵与常数进行乘除运算、图像矩阵与图像矩阵对应元素进行乘除运算、算、图像矩阵与图像矩阵对应元素进行乘除运算、图像矩阵与图像矩阵进行矩阵乘法运算等。图像矩阵与图像矩阵进行矩阵乘法运算等。1 1 图像矩阵与常数进行乘除运算图像矩阵与常数进行乘除运算图像
9、矩阵与常数进行乘除运算就相当于把矩阵所有图像矩阵与常数进行乘除运算就相当于把矩阵所有元素都扩大或缩小一定的倍数。当矩阵(元素)乘元素都扩大或缩小一定的倍数。当矩阵(元素)乘以大于以大于1 1的数时,图像亮度增加;乘以小于的数时,图像亮度增加;乘以小于1 1的数时的数时,图像变暗。,图像变暗。第8页,共46页,编辑于2022年,星期二2 2 图像矩阵与图像矩阵进行逐元素对应乘除运算图像矩阵与图像矩阵进行逐元素对应乘除运算在在Matlab中,两个数组进行逐元素对应相乘使用语句中,两个数组进行逐元素对应相乘使用语句A.*BA.*B,即在前一,即在前一个数组的右下角加上一个点。这种乘法要求个数组的右下
10、角加上一个点。这种乘法要求A A与与B B两个数组维数相同,两个数组维数相同,运算完后得到相同维数的数组。在这本书中,我们把这种乘法叫做矩运算完后得到相同维数的数组。在这本书中,我们把这种乘法叫做矩阵(元素)对应相乘。阵(元素)对应相乘。3 3 两个图像矩阵按照数学上定义的乘法进行运算两个图像矩阵按照数学上定义的乘法进行运算两个图像矩阵按照数学上定义的乘法进行运算以后,得到两个图像矩阵按照数学上定义的乘法进行运算以后,得到的新图像已经完全失去了原图像的形状,得到的新图像往的新图像已经完全失去了原图像的形状,得到的新图像往往是不可思议的。往是不可思议的。第9页,共46页,编辑于2022年,星期二
11、【例3-5】观察分析图像矩阵乘以或除以常数后图像亮度的改变。A=imread(D:0010.jpg);A1=double(A);A2=A1*1.5;A3=A1/1.5;A2=uint8(A2);A3=uint8(A3);subplot(1,3,1);imshow(A)subplot(1,3,2);imshow(A2)subplot(1,3,3);imshow(A3)(a)原图像 (b)乘以1.5后 (c)除以1.5后 图3-5 图像与常数乘除可以改变图像的亮度 设计左面程序,程序运行结果是图3-5。第10页,共46页,编辑于2022年,星期二【例3-6】利用矩阵对应相乘把两个图像合成在一起。A
12、=imread(D:0045.jpg);A=imread(D:0045.jpg);B=imread(D:0041.jpg);B=imread(D:0041.jpg);s=size(A);s=size(A);m=s(1),n=s(2);m=s(1),n=s(2);B1=imresize(B,m n);B1=imresize(B,m n);A=double(A);A=double(A);C=double(B1);C=double(B1);D=A.*C/128;D=A.*C/128;D=uint8(D);D=uint8(D);subplot(1,3,1);imshow(A)subplot(1,3,1
13、);imshow(A)subplot(1,3,2);imshow(B)subplot(1,3,2);imshow(B)subplot(1,3,3);imshow(D)subplot(1,3,3);imshow(D)设计左面程序,实现两个矩阵对应相乘运算。第11页,共46页,编辑于2022年,星期二 程序运行结果如图3-6所示。(a)图像0045.jpg (b)图像0041.jpg (c)对应相乘以后 图3-6 图像对应元素相乘得到新图像的效果 程序中语句程序中语句B1=imresize(B,m n)B1=imresize(B,m n)是为了把数组是为了把数组B B变为变为A A一样大小;一样大
14、小;语句语句D=A.*C/128D=A.*C/128中除以中除以128128是为了缩小乘积元素的值;使用语句是为了缩小乘积元素的值;使用语句A=double(A)A=double(A)是把数组元素变为双精度数便于计算;使用语句是把数组元素变为双精度数便于计算;使用语句D=uint8(D)D=uint8(D)是为了显示的需要。图是为了显示的需要。图3-63-6中实现的合成效果比较好,中实现的合成效果比较好,加法运算出现不了这个效果。一般情况下,乘法能够保留黑色,加法运算出现不了这个效果。一般情况下,乘法能够保留黑色,加法能够保留白色。加法能够保留白色。【思考题】为什么一般情况下,乘法能够保留黑色
15、,加法能够保留白色?第12页,共46页,编辑于2022年,星期二【例3-7】利用矩阵乘法计算并且比较手写数字图像乘积的特征。A=imread(D:00.jpg);B=imread(D:11.jpg);s=size(A);m=s(1),n=s(2);B1=imresize(B,n m);A1=double(A);B2=double(B1);C(:,:,1)=(A1(:,:,1)*B2(:,:,1)/(160*n);C(:,:,2)=(A1(:,:,2)*B2(:,:,2)/(160*n);C(:,:,3)=(A1(:,:,3)*B2(:,:,3)/(160*n);C=uint8(C);subpl
16、ot(1,3,1);imshow(A)subplot(1,3,2);imshow(B)subplot(1,3,3);imshow(C)第13页,共46页,编辑于2022年,星期二利用上面程序,更换读入的图像,可以得到图3-7所示图形。(a)实验用的实验用的4个图像个图像 (b)一个一个0与一个与一个1的乘积的乘积(c)一个一个0与另一个与另一个0的乘积的乘积 (d)一个一个1与另一个与另一个1的乘积的乘积 图图3-7 不同图像实行矩阵乘法以后得到的乘积图像比较不同图像实行矩阵乘法以后得到的乘积图像比较在这个例题中,完全可以先把图像变为灰度图像。这样的话,就在这个例题中,完全可以先把图像变为灰度
17、图像。这样的话,就可以简化程序。不过,上面程序是针对任意彩色图像编写的,所可以简化程序。不过,上面程序是针对任意彩色图像编写的,所以可以使用该程序对其他彩色图像进行实验。可以利用例以可以使用该程序对其他彩色图像进行实验。可以利用例3-7的方的方法对手写数字与手写汉字等进行识别法对手写数字与手写汉字等进行识别。第14页,共46页,编辑于2022年,星期二3.2 图像的特征值与奇异值 图像矩阵的特征值1 1 图像矩阵特征值图像矩阵特征值矩阵特征值是这样定义的:设矩阵特征值是这样定义的:设A是是n n矩阵,如果数矩阵,如果数与与n维非零向量维非零向量X满足方程满足方程 (3-1)则称数则称数为矩阵为
18、矩阵A的特征值,称非零向量的特征值,称非零向量X为为矩阵矩阵A的特的特征向量。征向量。Matlab提供了求取特征值的函数提供了求取特征值的函数eig(A),其中,其中A是参数,是参数,是要求取特征值的矩阵。是要求取特征值的矩阵。第15页,共46页,编辑于2022年,星期二【例3-9】比较相近图像的特征值。编写下面程序:k=input(k=input(请输入文件名请输入文件名:);:);A=imread(k);A=imread(k);s=size(A);s=size(A);s2=s(2);s2=s(2);A1=rgb2gray(A);A1=rgb2gray(A);A2=double(A1);A2
19、=double(A1);A3=imresize(A2,s2 s2);A3=imresize(A2,s2 s2);T=eig(A3);T=eig(A3);TT程程序序的的运运行行结结果果是是首首先先在在命命令令窗窗口口显显示示:“请请输输入入文文件件名名:”,然然后后在在这这个个提提示示后后面面输输入入D:0.jpg,按按Enter键键,则则可可以以计计算算出出0.bmp(调调整整为为方方阵阵后后)的的特特征征值值。因因为为图图像像0.bmp0.bmp有有白白色色边边缘缘,所所以以有有一一些些行行或或者者列列线线性性相相关关,求求得得的的特特征征值值中中排排在在后后面面的的有有一一些些是是0 0
20、。比比较较起起来来1 1的的手手写写图图像像的的特特征征值值为为0 0的的比比较较多多,因因为为1 1的的手手写写图图像像相相同同的行或者列比较多。的行或者列比较多。第16页,共46页,编辑于2022年,星期二(a)(b)(c)(d)图3-8 4个手写数字图像(a)的文件名为0.bmp,(b)的文件名为00.bmp,(c)的文件名为1.bmp,(d)的文件名为11.bmp从数值上能够观察出几个图像从数值上能够观察出几个图像的特征值的差别。为了更准确的特征值的差别。为了更准确的分析几个图像特征值之间的的分析几个图像特征值之间的相近与差别,编写左面程序:相近与差别,编写左面程序:for i=1:4
21、for i=1:4k=input(k=input(请输入文件名请输入文件名:);:);A=imread(k);A=imread(k);s=size(A);s=size(A);A1=double(A);A1=double(A);A2=imresize(A1,s(2)s(2);A2=imresize(A1,s(2)s(2);T=eig(A2);T=eig(A2);T1=abs(T);T1=abs(T);subplot(4,1,i)subplot(4,1,i)plot(T1)plot(T1)endend第17页,共46页,编辑于2022年,星期二程程序序运运行行时时,需需要要四四次次输输入入4 4个
22、个图图像像文文件件名名。程程序序的的运运行行结结果果如如图图3-93-9所所示示。图图3-93-9中中的的4 4个个曲曲线线从从上上到到下下分分别别对对应应着着图图像像0.bmp0.bmp、00.bmp00.bmp、1.bmp1.bmp、11.bmp11.bmp,是是把把这这4 4个个图图像像的的特特征征值值求求出出,然然后后取取绝绝对对值值(复复数数取取模模),最最后后把把绝绝对对值值绘绘制制出出来来。从从图图3-93-9可可以以看看出出两两个个0 0的的特特征征值值分分布布曲曲线线比比较较接接近近,两两个个1 1的的特特征征值值分分布布曲曲线线比比较较接接近近,所所以以可可以以使使用用这这
23、种种方方法法对对手手写写数数字字图图像像进进行行识别识别。语语句句k=input(k=input(请请输输入入文文件件名名:):)运运行行后后,函函数数inputinput将将在在命命令令窗窗口口显显示示提提示示行行“请请输输入入文文件件名名:”:”,输输入入文文件件名名时时,要要把把路径与文件名加上路径与文件名加上单单引号。引号。图图3-9 3-9 四个手写数字图像的特征值分布四个手写数字图像的特征值分布 第18页,共46页,编辑于2022年,星期二 2 2 图像矩阵特征向量图像矩阵特征向量在式在式3-1中,中,X就是矩阵的特征向量。就是矩阵的特征向量。因为一个方矩阵的特征值个数等于该矩阵的
24、阶数,即因为一个方矩阵的特征值个数等于该矩阵的阶数,即n n矩阵的矩阵的特征值有特征值有n个,所以特征向量至少有个,所以特征向量至少有n个。个。求特征值时,需要用二维方阵,在研究特征向量时也必须把图像化为求特征值时,需要用二维方阵,在研究特征向量时也必须把图像化为灰度图像,或者单独使用彩色图像的红色阵、绿色阵、蓝色阵等。灰度图像,或者单独使用彩色图像的红色阵、绿色阵、蓝色阵等。【例【例3-10】求图像矩阵的特征向量。】求图像矩阵的特征向量。A=imread(D:shizi1.bmp);A1=rgb2gray(A);A2=double(A1);G T=eig(A2);G使用左面程序可以求出使用左
25、面程序可以求出并且在命令窗口显示出并且在命令窗口显示出图像的特征向量。图像的特征向量。变量变量G中存储的就是灰度中存储的就是灰度图像图像A1的特征向量。的特征向量。第19页,共46页,编辑于2022年,星期二图像矩阵的奇异值 矩阵的矩阵的奇异值是这样定义的奇异值是这样定义的:设设mn矩阵矩阵A的秩为的秩为r,则,则必存在一个必存在一个mm阶正交矩阵阶正交矩阵Qm和一个和一个nn阶正交矩阵阶正交矩阵Qn,使使 QmTAQn=S 右端矩阵右端矩阵S为为nn阶对角矩阵,我们称阶对角矩阵,我们称S的主对角元为的主对角元为A的奇异值。的奇异值。矩阵的奇异值都是实数,并且矩阵不必须是方阵。矩阵的奇异值都是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 图像代数运算与逻辑运算PPT讲稿 第三 图像 代数 运算 逻辑运算 PPT 讲稿
限制150内