利用Matlab进行图像处理

  

1   前言

 

MATLAB是Math Works公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的,界面友好的用户环境。MATLAB的推出得到了各个领域专家学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。由各个领域的专家学者相继推出了MATLAB工具箱,而且工具箱还在不断的增加,这些工具箱给各个领域的研究和工程应用提供了有力的工具。借助于这些“巨人肩上的工具”,各个层次的研究人员可直观、方便地进行分析、计算及设计工作。从而大大地节省了时间。

 

2  本文所用到的MATLAB命令

imread();  image();  whos; for;  randn();  double();  uint8();  cat();  dwt2();

关于上述的命令使用方法可以参考一些MATLAB方面的书籍或者用MATLAB自带的帮助(help)命令.

如  我想知道dwt2()命令的使用方法 可以执行下面的命令

>> help dwt2

系统就会告诉你它的使用要求和方法,如果系统说找不到对应的帮助文件,那就可能是你装的MATLAB里面没有这个命令,那很可能这个命令就不能使用

. 本文所用到的图像都是作者直接把图像文件放到Matlab的work子目录里面的。如果直接在Matlab上运行作者所写的代码,肯定不会通过。不过Matlab自己也带有图像,查阅一下相关的资料,就很容易明白怎么去做。

3 程序和实验结果

>> [x,map]=imread('lena.bmp');

>> image(x);colormap(map);

>> whos x

  Name      Size        Bytes  Class     

  x       256x256       65536  uint8 array 

Grand total is 65536 elements using 65536 bytes

 

 

 
 


  图1为运行结果                               

 

                图1                     

                                                                                                                    

⑵.图像的旋转

① >> image(x');colormap(map);   x’是x的转置

  

② >> [x,map]=imread('lena.bmp');

>> for i=1:128

for j=1:256

t=x(i,j);

x(i,j)=x(256-i+1,j);

x(256-i+1,j)=t;

end

end

>> image(x);colormap(map);

 

①和②的运行结果,自己先想想应该是什么一个结果,然后再到电脑上实现一下,看看是否与自己的想法一致。

                                                                                                                                                                                                                 

③>> [x,map]=imread('lena.bmp');    

>> for i=1:128

for j=1:256

x(i,j)=x(256-i+1,j);

end

end

>> image(x);colormap(map);

 

 

运行结果如图2

 

 
 

 

 

                                       图2

 

 

④ >> [x,map]=imread('lena.bmp');              

>> b=randn(256);

>> x=double(x)*b;

>> image(x);colormap(map);

运行结果将是原图像变成了一个模糊的一个图像,和原图像完全不一样。

 

⑤ >> det(b) 

ans = -5.3438e+252

>> image(x*inv(b));colormap(map);

   我们将会看到,图像又被还原成了原来的图像。

                                                     

.通过这几个例子,可以看出利用矩阵的知识来处理图像,是很方便的,当然矩阵有很多变换方式,有兴趣的自己可以做一些变换,看看得到什么效果.

 

                    

MATLAB在小波中的应用

MATLAB工具箱中,有专门的小波处理图像的函数命令,这对我们对图像利用小波的知识进行相应的变换提供了方便,这里我们只是对灰度图像和彩色图像进行小波分解。限于篇幅,没有把运行结果显示在文章中。

  • 灰度图像的分解

① >> [x,map]=imread('lena.bmp');          >> [ca,ch,cv,cd]=dwt2(x,'db1');

>> image([ca,ch;cv,cd]);colormap(map);      

② >>image([ca,4*ch;4*cv,4*cd]);colormap(map);

 对后面的三个都乘以一个数,主要是为了能看清楚这三个分量。                                   

对彩色图像的分解

彩色图像在存储在电脑上是以三位矩阵的方式存储的,关于图像的存储方法自己可以查阅相关的资料.

     MATLAB提供的小波分解函数一般只对二维矩阵可以进行分解和重构;根据彩色图像成像的原理,我们把彩色图像的RGB三个分量先提出来,对三个分量进行分解,然后再加起来,就得到了彩色图像的分解。MATLAB也提供了从三维矩阵提取二维矩阵的方法.

① >> [x,map]=imread('Barbara.bmp');

>> image(x);colormap(map);

 

② >> [x,map]=imread('Barbara.bmp');

>> image(x);colormap(map);

>> a=x(:,:,1);

>> b=x(:,:,2);

>> c=x(:,:,3);

>> [ca,ch,cv,cd]=dwt2(a,'db1');

>> [ca1,ch1,cv1,cd1]=dwt2(b,'db1');

>> [ca2,ch2,cv2,cd2]=dwt2(c,'db1');

>> B=uint8(cat(3,ca,ca1,ca2));

>> B1=uint8(cat(3,ch,ch1,ch2));

>> B2=uint8(cat(3,cv,cv1,cv2));

>> B3=uint8(cat(3,cd,cd1,cd2));

>> image([B,B1;B2,B3]);colormap(map);

                                                 

三个分量看得不是很明显;我们适当地扩大分量,来看一下效果

B1=uint8(cat(3,4*ch,4*ch1,4*ch2));

B2=uint8(cat(3,4*cv,4*cv1,4*cv2));

B3=uint8(cat(3,4*cd,4*cd1,4*cd2));

image([B,B1;B2,B3]);colormap(map);

实验结果可以看出,其它三个被突出了。                                        

为了说明a,b,c是原来彩色图像的三个RGB分量,我们可以用a,b,c再组合成原来的彩色的图像.

>> image(cat(3,a,b,c));colormap(map);

 

 运行结果可以看出,和原来的彩色图像是一样的。                                             

                                             

结束语

 

   本文只是进行了一些简单的图像处理,Mtalab软件本身还包含一些复杂的图像处理命令,如边缘检测,图像的增强等等,另外,对图像进行了小波分解以后,还可以进行图像的压缩,还可以利用二进小波变换来求图像的奇异点。总之,Mtalab作为一个强大的数据处理软件,

为我们进行科学研究提供了极大的方便。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值