机器视觉及MATLAB仿真研究.docx
- 文档编号:12654000
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:28
- 大小:1.09MB
机器视觉及MATLAB仿真研究.docx
《机器视觉及MATLAB仿真研究.docx》由会员分享,可在线阅读,更多相关《机器视觉及MATLAB仿真研究.docx(28页珍藏版)》请在冰豆网上搜索。
机器视觉及MATLAB仿真研究
机器视觉技术及应用
学院:
电气与信息工程学院
班级:
自动化072
姓名:
***
学号:
************
2011-01-04
题目:
一
产生下图所示图像f1(m,n),其中图像大小为256×256,中间亮条为128×32,暗处=0,亮处=100。
对其进行FFT:
①同屏显示原图f1(m,n)和FFT(f1)的幅度谱图;
②若令
,重复以上过程,比较二者幅度谱的异同,简述理由;
③若将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的幅度谱,并与FFT(f2)
的幅度谱进行比较;
④若将f1(m,n)顺时针旋转90度得到f4(m,n),令f5(m,n)=f1(m,n)+f4(m,n),试显示FFT(f5)
的幅度谱,并指出其与FFT(f1)和FFT(f4)的关系;
⑤若令f6(m,n)=f2(m,n)+f3(m,n),试显示FFT(f6)的幅度谱,并指出其与FFT(f2)和FFT(f3)
的关系,比较FFT(f6)和FFT(f5)的幅度谱。
1、显示图像
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>a=zeros(256,256);*\设置256*256大小的图形\*
>>a(64:
192,112:
144)=100;*\设置128*32大小的亮条\*
>>imshow(a)*\在窗口中显示要求图像\*
>>
2.对其进行FFT:
>>clear,closeall
>>a=zeros(256,256);
>>a(64:
192,112:
144)=100;*\设置128*32大小的亮条\*
>>imshow(a)
>>F=fft2(a);*\对a进行傅立叶变换\*
>>b=log(abs(F));*\对F取对数\*
>>imshow(b,[.15]);colormap(jet);colorbar*\显示b图像\*
>>
3.同屏显示原图f1(m,n)和FFT(f1):
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>a=zeros(256,256);*\设置256*256大小的图形\*
>>a(64:
192,112:
144)=100;
>>subplot(1,2,1),imshow(a)*\在窗口中显示原图像(第一行第一列)\*
>>F=fft2(a);*\对a进行傅立叶变换\*
>>b=log(abs(F));*\对F取对数\*
>>subplot(1,2,2),imshow(b)*\在窗口中显示b图像(第一行第二列)\*
>>
4.实现
>>clear,closeall
>>a=zeros(256,256);
>>a(64:
2:
192,112:
2:
144)=100;*\隔行隔列显示\*
>>imshow(a)
>>a(65:
2:
191,113:
2:
143)=100;*\隔行隔列显示\*
>>imshow(a)
>>
5.对f2进行二维快速傅里叶变换并图原图同屏显示:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>a=zeros(256,256);*\设置256*256大小的图形\*
>>a(64:
2:
192,112:
2:
144)=100;*\隔行隔列显示\*
>>a(65:
2:
191,113:
2:
143)=100;*\隔行隔列显示\*
>>subplot(1,2,1),imshow(a);
>>F=fft2(a);
>>b=log(abs(F));*\傅立叶变换\*
>>subplot(1,2,2),imshow(b)
>>
6.将f2(m,n)顺时针旋转90度得到f3(m,n),试显示FFT(f3)的幅度谱
>>clear,closeall
>>a=zeros(256,256);
>>a(64:
2:
192,112:
2:
144)=100;*\隔行隔列显示\*
>>a(65:
2:
191,113:
2:
143)=100;*\隔行隔列显示\*
>>c=imrotate(a,90);*\旋转90度\*
>>subplot(1,2,1),imshow(a);*\一行两列显示\*
>>subplot(1,2,2),imshow(c)
>>
7、将f1(m,n)顺时针旋转90度得,同一行显示:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>a=zeros(256,256);*\设置256*256大小的图形\*
>>a(64:
2:
192,112:
2:
144)=100;*\隔行隔列显示\*
>>a(65:
2:
191,113:
2:
143)=100;*\隔行隔列显示\*
>>c=imrotate(a,90);*\旋转90度\*
>>F1=fft2(c);
>>F2=log(abs(F1));*\傅立叶变换\*
>>subplot(1,3,1),imshow(a);*\一行三列显示\*
>>subplot(1,3,2),imshow(c);
>>subplot(1,3,3),imshow(F2);
>>
8.将f1(m,n)顺时针旋转90度得到f4(m,n),令f5(m,n)=f1(m,n)+f4(m,n),试显示FFT(f5)
>>clear,closeall
>>a=zeros(256,256);
>>a(64:
192,112:
144)=100;
>>imshow(a)
>>d=imrotate(a,90);*\旋转90度\*
>>subplot(2,2,1),imshow(a);*\一行二列显示\*
>>subplot(2,2,2),imshow(d);
>>f=a+d;
>>f1=fft2(f);
>>f2=log(abs(f1));*\傅立叶变换\*
>>subplot(2,2,3),imshow(f);
>>subplot(2,2,4),imshow(f2);
>>
9.令f6(m,n)=f2(m,n)+f3(m,n),显示FFT(f6)的幅度谱
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>a=zeros(256,256);
>>a(64:
2:
192,112:
2:
144)=100;*\隔行隔列显示\*
>>a(65:
2:
191,113:
2:
143)=100;*\隔行隔列显示\*
>>b=imrotate(a,90);*\旋转90度\*
>>subplot(2,2,1),imshow(a);
>>subplot(2,2,2),imshow(b);
>>c=a+b;
>>F1=fft2(c);*\傅立叶变换\*
>>F2=fftshift(abs(F1));
>>subplot(2,2,3),imshow(F2);
>>
题目二:
一幅灰度图像(256级,白为255,黑为0),分别加入高斯白噪声和椒盐噪声,再分别进行3×3的平均滤波和中值滤波,显示原图像、加噪图像和滤波结果图像,并比较四种滤波结果。
1.无噪声的灰度图像:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('moon.tif');*\将图像处理工具中自带的图像moon.tif给数组E\*
>>imshow(E)*\显示图像\*
>>
2.加上高斯噪声的图像:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('moon.tif');*\将图像处理工具中自带的图像moon.tif给数组E\*
>>imshow(E)*\显示图像\*
>>E=imnoise(E,'gaussian',0,0.02);*\添加均值为0,方差为0.02高斯噪声\*
>>imshow(E)*\显示图像\*
>>
3.加上椒盐噪声的图像:
>>clear,closeall
>>E=imread('moon.tif');
>>imshow(E)
>>E=imnoise(E,'salt&pepper',0.02);*\添加均值为0,方差为0.02的椒盐噪声\*
>>imshow(E)
>>
4.加上高斯噪声的进行均值滤波:
>>clear,closeall
>>E=imread('moon.tif');
>>imshow(E)
>>E=imnoise(E,'gaussian',0,0.02);*\添加均值为0,方差为0.02的高斯噪声\*
>>imshow(E)
>>x=[111
111
111];*\产生滤波模板\*
>>X=x/9;*\对滤波模板归一化\*
>>Z=conv2(E,x)*\用均值模板对图像滤波\*
>>E=unit16(Z);*\转换数据是16位整型\*
>>imshow(Z,[])
>>
5.加上椒盐噪声的进行中值滤波:
>>clear;closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('moon.tif');*\将图像处理工具中自带的图像moon.tif给数组E\*
>>imshow(E)*\显示图像\*
>>E=imnoise(E,'salt&pepper',0.02);*\加上均值是0,方差是0.02的椒盐噪声\*
>>imshow(E)*\显示图像\*
>>K=medfilt2(E);*\二维统计顺序过滤\*
>>imshow(K)*\显示图像\*
>>
6.加上椒盐噪声的图像经过均值滤波:
>>clear;closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('moon.tif');*\将图像处理工具中自带的图像moon.tif给数组E\*
>>imshow(E)*\显示图像\*
>>E=imnoise(E,'gaussian',0,0.02);*\加上均值是0,方差是0.02的椒盐噪声\*
>>h=[111
111
111];*\产生滤波模板\*
>>H=h/9;*\对滤波模板归一化\*
>>J=conv2(E,h);*\用均值模板对图像滤波\*
>>E=unit16(J);*\转换数据是16位整型\*
>>imshow(J,[])*\显示图像\*
>>
7.同屏显示原图,加噪图像,滤波结果图像:
>>clear;closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('moon.tif');*\将图像处理工具中自带的图像moon.tif给数组E\*
>>C=imnoise(E,'gaussian',0,0.02);*\加上均值是0,方差是0.02的高斯噪声\*
>>D=imnoise(E,'salt&pepper',0.02);*\加上均值是0,方差0.02的椒盐噪声\*
>>h=[111
111
111];*\产生滤波模板\*
>>H=h/9;*\对滤波模板归一化\*
>>J=conv2(C,h);*\用均值模板对图像滤波\*
>>C=unit16(J);*\转换数据是16位整型\*
>>K=medfilt2(C);*\二维统计顺序过滤\*
>>Y=medfilt2(D);*\二维统计顺序过滤\*
>>h=[111
111
111];*\产生滤波模板\*
>>H=h/9;*\对滤波模板归一化\*
>>E=conv2(D,h);*\用均值模板对图像滤波\*
>>D=unit16(J);*\转换数据是16位整型\*
>>subplot(3,3,1),imshow(E,[]),title('yuantu');*\显示图像依次是三行三列的各个位置,给每幅图片命名\*
>>subplot(3,3,2),imshow(A,[]),title('yuantugaussian');
>>subplot(3,3,3),imshow(B,[]),title('yuantusalt&pepper');
>>subplot(3,3,4),imshow(J,[]),title('yuantugaussianJUNZHILVBO');
>>subplot(3,3,5),imshow(K,[]),title('yuantugaussianZHONGZHILVBO');
>>subplot(3,3,6),imshow(Y,[]),title('salt&pepperZHONGZHILVBO');
>>subplot(3,3,7),imshow(E,[]),title('salt&pepperJUNZHILVBO');
>>
第三题:
对某一灰度图像,进行如下处理:
(1)分别利用Roberts、Prewitt和Sobel边缘检测算子进行边缘检测;
(2)将Roberts、Prewitt和Sobel边缘检测算子修改为锐化算子,对原图像进行锐化,同屏显示原图像、边缘检测结果和锐化后图像,说明三者之间的关系。
1.原图
>>clear;closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>imshow(E);*\显示图像\*
>>
1.进行Roberts算子边缘检测
>>clear;closeall
>>E=imread('cameraman.tif');
>>imshow(E);
>>A=edge(I,'roberts');*\边缘检测roberts算子\*
>>imshow(A);*\显示\*
>>
2.进行prewitt算子边缘检测
>>clear;closeall
>>E=imread('cameraman.tif');
>>imshow(E);
>>B=edge(E,'prewitt');*\边缘prewitt'算子\*
>>imshow(B);*\显示\*
>>
3.进行Sobel算子边缘检测
>>clear;closeall
>>E=imread('cameraman.tif');
>>imshow(E);
>>C=edge(E,'Sobel');*\边缘Sobel算子\*
>>imshow(C);*\显示\*
>>
5.原图像进行锐化滤波器中的拉氏算子增强:
>>clear;closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>imshow(E);*\显示\*
>>E=double(E);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>imshow(E,[])*\显示\*
>>h=[010
1-40
010];
>>J=conv2(E,h,'same');*\拉式算子对图像滤波\*
>>k=E-J;*\增强图像为原始图像减去拉式算子的图像\*
>>imshow(k,[])*\显示\*
>>
6.同屏显示原图和锐化后的图像:
>>clear;closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>E=double(E);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>imshow(E,[])
>>h=[010
1-40
010];
>>J=conv2(E,h,'same');*\拉式算子对图像滤波\*
>>P=E-J;*\增强图像为原始图像减去拉式算子的图像\*
>>subplot(1,2,1),imshow(E,[])*\显示图像是一行两列\*
>>subplot(1,2,2),imshow(P,[])
>>
7.进行Roberts算子边缘检测锐化:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>imshow(I);*\显示\*
>>A=edge(I,'roberts');*\边缘roberts算子\*
>>imshow(A);
>>A=double(A);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>imshow(A,[])
>>h=[010
1-40
010];
>>J=conv2(A,h,'same');*\拉式算子对图像滤波\*
>>P=A-J;*\增强图像为原始图像减去拉式算子的图像\*
>>subplot(1,2,1),imshow(A,[])*\显示图像是一行两列\*
>>subplot(1,2,2),imshow(P,[])
>>
8.进行prewitt算子边缘检测锐化:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>imshow(E);*\显示\*
>>B=edge(E,'prewitt');*\边缘prewitt算子\*
>>imshow(B);
>>B=double(B);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>imshow(B,[])
>>h=[010
1-40
010];
>>J=conv2(B,h,'same');*\拉式算子对图像滤波\*
>>P=B-J;*\增强图像为原始图像减去拉式算子的图像\*
>>subplot(1,2,1),imshow(B,[])*\显示图像是一行两列\*
>>subplot(1,2,2),imshow(P,[])
>>
9.进行Sobel算子边缘检测锐化:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>imshow(E);
>>C=edge(E,'Sobel');
>>imshow(C);
>>C=double(C);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>imshow(C,[])
>>h=[010
1-40
010];
>>J=conv2(C,h,'same');*\拉式算子对图像滤波\*
>>P=C-J;
>>subplot(1,2,1),imshow(C,[])
>>subplot(1,2,2),imshow(P,[])
>>
10.同屏显示原图和Roberts锐化图:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>B=double(I);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>h=[010
1-40
010];
>>J=conv2(B,h,'same');
>>subplot(2,2,1),imshow(I,[]),title('yuantu');
>>subplot(2,2,2),imshow(B,[]),title('yuantuRuihua');
>>C=edge(I,'roberts');
>>d=double(C);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>h=[010
1-40
010];
>>q=conv2(d,h,'same');*\拉式算子对图像滤波\*
>>subplot(2,2,3),imshow(C,[]),title('yuanturoberts');
>>subplot(2,2,4),imshow(C,[]),title('yuanturobertsRUIHUA');
>>
11.同屏显示原图和PREWITT锐化图:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>B=double(E);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>h=[010
1-40
010];
>>J=conv2(B,h,'same');
>>subplot(2,2,1),imshow(I,[]),title('yuantu');
>>subplot(2,2,2),imshow(B,[]),title('yuantuRuihua');
>>C=edge(I,'prewitt');
>>d=double(C);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>h=[010
1-40
010];
>>q=conv2(d,h,'same');*\拉式算子对图像滤波\*
>>subplot(2,2,3),imshow(C,[]),title('yuantuprewitt');
>>subplot(2,2,4),imshow(C,[]),title('yuantuprewittruihua');
>>
12.同屏显示原图sobel锐化图:
>>clear,closeall*\清除所有工作平台变量,关闭打开的图形窗口\*
>>E=imread('cameraman.tif');*\将工具栏的照片给数组E\*
>>B=double(E);*\卷积不支持8整型所以将图像矩阵转化为double型\*
>>h=[0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器 视觉 MATLAB 仿真 研究
![提示](https://static.bdocx.com/images/bang_tan.gif)