数字图像Matlab实验操作手册(2010).doc

上传人:李医生 文档编号:7196159 上传时间:2020-11-05 格式:DOC 页数:32 大小:1.51MB
返回 下载 相关 举报
数字图像Matlab实验操作手册(2010).doc_第1页
第1页 / 共32页
数字图像Matlab实验操作手册(2010).doc_第2页
第2页 / 共32页
数字图像Matlab实验操作手册(2010).doc_第3页
第3页 / 共32页
数字图像Matlab实验操作手册(2010).doc_第4页
第4页 / 共32页
数字图像Matlab实验操作手册(2010).doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数字图像Matlab实验操作手册(2010).doc》由会员分享,可在线阅读,更多相关《数字图像Matlab实验操作手册(2010).doc(32页珍藏版)》请在三一文库上搜索。

1、Matlab 7.6简单入门Matlab是Mathworks公司推出的科技应用软件.l 启动点击Matlab/bin/matlab.exe, 打开Matlab的工作窗(或指令窗)l Matlab的使用方式指令行操作之直接交互工作方式;使用matlab编程语言之程序设计方式.l 交互方式的使用:在Matlab工作窗中一般输入以下三种指令行:命令表达式赋值语句:变量=表达式l Matlab的程序工作方式step 1. FileNewM-file %打开Matlab程序工作窗Editor/Debugger;step 2. 编写Matlab程序;ToolsRunl 基本命令:quit%退出Matlab

2、clc %清除指令窗口clear%从内存中清除变量和函数clf%清除当前图pack%合并工作内存中的碎块dir%列出文件cd%改变或显示当前工作目录disp%显示矩阵和文字内容size%确定矩阵的维数demo%演示程序help%在线帮助delete%删除文件whos%列出工作内存中的变量细节xpimage%图像处理性能的演示imagedemo%同上l 基本函数figure%创建图形窗口image %创建图形窗口imshow%显示图像colormap%设置配色图rgb2hsv%将rgb图像转换成hsv图像hsv2rgb%将hsv图像转换成rgb图像rgb2ycbcr%将rgb图像转换成ycbcr

3、图像ycbcr2rgb%将ycbcr图像转换成rgb图像abs%幅值fft2%二维快速Fourier变换ifft2%二维快速Fourier反变换log%自然对数dct2%二维快速余弦变换idct2%二维快速余弦反变换image%与imshow相似imfinfo%显示图像参数l 数据类型及运算1. Matlab的基本数据类型为矩阵(实数等皆看成1*的矩阵),矩阵的基本运算同线性代数:A+B%矩阵相加A- B %矩阵相减A*B %矩阵相乘A.*B %矩阵对应元素相乘2. 标量与矩阵进行运算的规定:S+B=sE+B s-B=sE-BB- s=B-sEs*B=sE*B3. 其他运算:inv(B)=B-

4、1An=An, A.n=(aijn)exp(A)=(exp(aij)log(A)=(log(aij)f(A)=(f(aij)A=A/l 矩阵的输入直接输入A=1 2 3; 4 5 6; 7 8 9矩阵编辑器edit Al 指令行结果的输出(有如下三个要点)指令行后有分号, 不输出结果指令行后无分号, 输出运算结果表达式后按回车, 则ans=之后, 给出结果l 冒号运算符设A是m*n矩阵B=A(:,r) %由第r列元素组成的矩阵B=A(s,:) %由第s行元素组成的矩阵B=A(s1:s2,r1:r2) %取A的子矩阵B=A(1 3 5,:) %由A的1,3,5行组成的矩阵l 给矩阵作标志L=X1

5、 & x1 & yII(2) B(i,j,1)=I(x,y,1); B(i,j,2)=I(x,y,2); B(i,j,3)=I(x,y,3); endendendimshow(uint8(B);imwrite(uint8(B),b.bmp,bmp);习题11 图像渐变clear allX1=imread(x1.jpg);X2=imread(x2.jpg);XX1=size(X1);XX2=size(X2);Y=X1;I=min(XX1(1),XX2(1);J=min(XX2(2),XX2(2); for i=1:9 for xxx=1:I for yyy=1:J Y(xxx,yyy,:)=i/

6、10*X1(xxx,yyy,:)+(1-i/10)*X2(xxx,yyy,:); end end Z=uint8(Y); subplot(3,3,i),imshow(Z);end习题12 对bmp图象文件进行操作实验3 图像增强l 直接灰度变换习题1 图象反转习题2对数变换习题3幂次变换AA=imread(A.jpg);CC=double(AA(:,:,1)+double(AA(:,:,2)+double(AA(:,:,3);BB=CC;WH=size(CC);W=WH(1);H=WH(2);for i=1:W for j=1:HBB(i,j)=CC(i,j)+255*(1/(CC(i,j)+

7、1)*CC(i,j);%BB(i,j)=255-CC(i,j);%BB(i,j)=255/log(155)*log(1+CC(i,j); endendcolormap(gray);subplot(1,2,1),imagesc(AA);subplot(1,2,2),imagesc(BB);习题4 位面图切割colormap(gray);bb=imread(head.jpg);for k=1:8cc=rem(double(bb),2k);ee=fix(cc/2(k-1);ff=ee*250;subplot(2,4,k),imagesc(ff);title(k-1);end;l 数据隐藏b=imre

8、ad(a.bmp);%c=b(:,:,1);bb=imread(b.bmp);%请用图画做一个水印图象b.bmp与a.bmp规格要相同cc=rem(double(bb),2);for k=1:8d=double(c)+2(k-1)*double(cc);%subplot(2,4,k),imshow(uint8(d);subplot(2,4,k),imagesc(d);%subplot(2,4,k),image(d);title(k-1);end;l 图像的灰度直方图a=imread(a.jpg);b=a(:,:,1);imshow(b);figure, imhist(b,64);%作b的灰度直

9、方图,64 可改为128, 256等l 直方图均衡化a=imread(a.jpg);b=a(:,:,1);imshow(b);c=histeq(b);%对b进行直方图均衡化imshow(c) ;figure, imhist(b,64);%作b的灰度直方图,64 可改为128, 256等l 领域平均法平滑滤波a=imread(a.jpg);b=a(:,:,1);c=0.1 0.1 0.10.1 0.2 0.10.1 0.1 0.1;d=conv2(b,c);imagesc(d);l 中值滤波a=imread(a.jpg);b=a(:,:,1);d=medfilt2(b, m n);%m,n为滤波

10、模板的规格imagesc(d);l 拉普拉斯锐化a=imread(1.jpg);b=a(:,:,1);c=0 1 0 1 -4 1 0 1 0 d=conv2(b,c);imagesc(d);习题5 中值滤波a=imread(fig6.jpg);imshow(a);pause;d=medfilt2(a,3 5);imshow(d);l 与图象滤波相关的几个Matlab函数(1) imnoise参见imnoise_test.mI = imread(Fig45.jpg);J = imnoise(I,salt & pepper,0.02);subplot(1,2,1), imshow(I);subp

11、lot(1,2,2),imshow(J);(2) fspecial(3) filter2参见filter2_test.mI = imread(cameraman.tif);subplot(2,2,1); imshow(I); title(Original Image);H = fspecial(motion,20,45);MotionBlur = imfilter(I,H,replicate);subplot(2,2,2); imshow(MotionBlur);title(Motion Blurred Image);H = fspecial(disk,10);blurred = imfilt

12、er(I,H,replicate);subplot(2,2,3); imshow(blurred); title(Blurred Image);H = fspecial(unsharp);sharpened = imfilter(I,H,replicate);subplot(2,2,4); imshow(sharpened); title(Sharpened Image);(4) medfilter2(5) fftshift参见fftshift_test.m实验4 彩色图象处理习题1 直方图的一个应用(真假币鉴别,仅供教学实验参考)a=imread(rmb.jpg);subplot(2,2,1

13、);imagesc(a);xlabel(真币);b=rgb2hsv(a);b1=b(:,:,1);subplot(2,2,2);imhist(b1,64);xlabel(色调);b2=b(:,:,2);subplot(2,2,3);imhist(b2,64);xlabel(饱和度);b3=b(:,:,3);subplot(2,2,4);imhist(b3,64); xlabel(亮度);习题2 运用调色板设计技术将灰度图像彩色化。clear all;a1=imread(a1.jpg);%将原始图像读到a1里aa=double(a1);a2=uint8(aa(:,:,1)+aa(:,:,2)+a

14、a(:,:,3)/3); %求原始图像的灰度图象,设为a2%以另外的图像为素材,制作一个调色板d1=imread(a2.jpg);%读该图像dd=double(d1);d2=uint8(dd(:,:,1)+dd(:,:,2)+dd(:,:,3)/3);%求该图象的灰度图象table=ones(256,4);%设置一个调色板tabled=size(d2);%求d2的行宽和列宽%将亮度相同的像素进行统计,亮度相同的像素的RGB分量的值按分量全部加起来,并将结果放置在table里。for i=1:d(1) for j=1:d(2) table(d2(i,j)+1,1)= table(d2(i,j)+

15、1,1)+dd(i,j,1); table(d2(i,j)+1,2)= table(d2(i,j)+1,2)+dd(i,j,2); table(d2(i,j)+1,3)= table(d2(i,j)+1,3)+dd(i,j,3); table(d2(i,j)+1,4)= table(d2(i,j)+1,4)+1; endend%规范调色板:将调色板中的值规范到0到255之间for i=1:256 table(i,1)=uint8( table(i,1)/table(i,4); table(i,2)= uint8(table(i,2)/table(i,4); table(i,3)=uint8(

16、table(i,3)/table(i,4); end%调色板制作完毕a3=a1;%设新图像为a3%如下程序段将灰度图象a2里的像素值用对应的调色板里的RGB植代替,形成一个新图像a3b=size(a2);for i=1:b(1) for j=1:b(2) a3(i,j,1)= table(a2(i,j)+1,1); a3(i,j,2)=table(a2(i,j)+1,2); a3(i,j,3)=table(a2(i,j)+1,3); endend%替代完成%显示结果如下:aa=double(a3);a4=uint8(aa(:,:,1)+aa(:,:,2)+aa(:,:,3)/3);subplo

17、t(2,2,1);imshow(a1);xlabel(A:原始图像);subplot(2,2,2);imshow(a2);xlabel(B:原始图像的灰度图象);subplot(2,2,3);imshow(uint8(a3);xlabel(C:还原图像);subplot(2,2,4);imshow(a4);xlabel(D:再灰度化图像);sa=0实验5 图像变换习题对数字图像作图像变换,观察其振幅谱clear all;I=imread(fig6.jpg);subplot(2,2,1);imshow(I);F=FFT2(I);subplot(2,2,2);imshow(log(1+abs(F)

18、,0 10,notruesize);C=dct2(I);subplot(2,2,3);imshow(log(1+abs(C),0 10,notruesize);H = double(hadamard(512);HH=H*double(I)*H;subplot(2,2,4);imshow(log(1+abs(HH),0 10,notruesize);习题2 对数字图像作图像变换,观察其振幅谱,并做反变换clear all;I=imread(fig6.jpg);subplot(2,3,1);imshow(I);C=dct2(I);subplot(2,3,2);imshow(log(1+abs(C)

19、,0 10,notruesize);CC=idct2(C);subplot(2,3,3);imagesc(abs(CC); H = double(hadamard(512);HH=H*double(I)*H;subplot(2,3,5);imshow(log(1+abs(HH),-10 10,notruesize);HHH=H*HH*H*512*512;subplot(2,3,6);imagesc(abs(HHH);习题3 对图像作图像变换,去其高频分量,再反变换clear all;a=imread(fig5.jpg);f=fft2(a);ff=f;h=0.99;xy=imfinfo(fig5

20、.jpg);y=xy.Width/2;x=xy.Height/2;hx=x*h;hy=y*h;%(x,y)为图象的中心%ff(x-hx:x+hx,y-hy:y+hy)=0;for i=1:xy.Width for j=1:xy.Height if (i-x)2+(j-y)2 0SS= pixel(i+1)/(b(1)*b(2)*log(pixel(i+1)/(b(1)*b(2)/log(2);S=S+SS;endend-S-S/81-(-S/8)实验八 图像分析习题1 印刷体字符识别%xunlian.m%识别集合为1行clear all;debug1=1; %debug=1调试,debug=0

21、运行SS=ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789;global dig;global count;global X;global data_theta;data_theta=128;%1)读图像b=imread(dig.bmp);bb=b(:,:,1);%取b的一个分量subplot(5,1,1),imshow(bb);%2)图像分割%2.1)将b二值化(相当于将字符图象从背景里分割出来)bw=bb250; subplot(5,1,2),imshow(bw);%2.2)确定字符图像的范围%2.2.1)求整个图像的重心s=size(bw);x0=0;y0=0;

22、S=0;for i=1:s(1) for j=1:s(2) S=S+bw(i,j); x0=x0+i*bw(i,j); y0=y0+j*bw(i,j); endendx0=x0/S;y0=y0/S;%2.2.2)求字符子图像的范围,本例为规则矩形x1=x0;y1=y0;%左上角坐标x2=x0;y2=y0;%右下角坐标for i=1:s(1) for j=1:s(2) if bw(i,j)=1 if ix1 x1=i; end if jx2 x2=i; end if jy2 y2=j; end end endend%2.2.3)显示外框bbw=bw;tt=3;%字符间距y2=y2+tt;y1=y

23、1-tt;for i=x1:x2 bbw(i,y1)=1; bbw(i,y2)=1;endfor j=y1:y2 bbw(x1,j)=1; bbw(x2,j)=1;endsubplot(5,1,3),imshow(bbw);%2.3)分离单个字符,并确定字符个数count=0;%字符个数bbww=0;k1=1;k2=1;lstart(k1)=y1;%每个字符的左坐标lend(k2)=y1;%每个字符的右坐标for j=y1:y2 status=0; for jj=x1:x2 status=status+bw(jj,j); end st= status0 ; if st=bbww count=count+1; if stbbww lstart(k1)=j; k1=k1+1; else lend(k2)=j; k2=k2+1; end %框定每个字符 for jj=x1:x2 bbw(jj,j)=1; end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1