matlab简单图像处理实验报告.docx
《matlab简单图像处理实验报告.docx》由会员分享,可在线阅读,更多相关《matlab简单图像处理实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
matlab简单图像处理实验报告
实验一:
图像文件类型转换
实验目的:
理解数字图像文件的几种基本类型
掌握在MATLAB中进行图象文件类型转换的方法
观察图象转换前后的效果
加深对图象文件类型的理解
熟悉图象格式、颜色系统间的转换
实验内容:
1)灰度图像与索引图像的相互转换
2)RGB图像与索引图像的相互转换
3)将图像转换为二值化图像
实验方法:
利用MATLAB工具进行实验
一、灰度图像到索引图像的转换
clear
>>info=imfinfo('rice.png')
info=
Filename:
'rice.png'
FileModDate:
'26-Jan-200300:
03:
06'
FileSize:
44607
Format:
'png'
FormatVersion:
[]
Width:
256
Height:
256
BitDepth:
8
ColorType:
'grayscale'
FormatSignature:
[13780787113102610]
Colormap:
[]
Histogram:
[]
InterlaceType:
'none'
Transparency:
'none'
SimpleTransparencyData:
[]
BackgroundColor:
[]
RenderingIntent:
[]
Chromaticities:
[]
Gamma:
[]
XResolution:
[]
YResolution:
[]
ResolutionUnit:
[]
XOffset:
[]
YOffset:
[]
OffsetUnit:
[]
SignificantBits:
[]
ImageModTime:
'27Dec200219:
57:
12+0000'
Title:
[]
Author:
[]
Description:
'Ricegrains'
Copyright:
'CopyrightTheMathWorks,Inc.'
CreationTime:
[]
Software:
[]
Disclaimer:
[]
Warning:
[]
Source:
[]
Comment:
[]
OtherText:
[]
RGB=imread('rice.png');
>>figure(3);
>>imshow(RGB);
>>figure
(1);
>>[RGB1,map1]=gray2ind(RGB,128);
>>imshow(RGB1,map1);
>>figure
(2);
>>[RGB2,map2]=gray2ind(RGB,16);
>>imshow(RGB2,map2);
>>imwrite(RGB1,map1,'3.bmp');
>>imwrite(RGB2,map2,'4.bmp');
图3图1
图2
实验结果分析:
从上述实验结果,我们可以看出灰度级不同,图像的亮度也不一样。
这是因为图像的量化灰度级数是256,灰度取值范围一般从0~255,在人的视觉系统中,不同的灰度值人感觉到的亮度不一样。
我们调用函数info=imfinfo('3.bmp'),info=imfinfo('4.bmp')来检查得到的图像是不是索引图像,发现他们都是ColorType:
'indexed',这就说明以3.bmp或4.bmp命名的文件是索引图像。
以下是索引图到灰度图的转化:
clear
>>[x,map]=imread('3.bmp');
>>figure
(1),imshow(x);
>>I=ind2gray(x,map);
>>figure
(2),imshow(I);
图1图2
二、RGB图像到索引图像的转换
info=imfinfo('1646063.jpg')
info=
Filename:
'1646063.jpg'
FileModDate:
'23-Mar-201015:
54:
36'
FileSize:
60317
Format:
'jpg'
FormatVersion:
''
Width:
320
Height:
226
BitDepth:
24
ColorType:
'truecolor'
FormatSignature:
''
NumberOfSamples:
3
CodingMethod:
'Huffman'
CodingProcess:
'Sequential'
Comment:
{}
RGB=imread('1646063.jpg');
>>figure
(1);
>>imshow(RGB);
>>figure
(2);
>>y=rgb2ind(RGB,256);
>>imwrite(y,'1s.bmp');
>>imshow(y);
实验结果分析:
通过把图像的数据赋予给RGB图像,然后利用转换语句y=rgb2ind(RGB,256)把彩色图像转换为索引图,我们调用函数info=imfinfo('1s.bmp')检查所得图像是不是索引图,发现ColorType:
'indexed',这就说明以1s.bmp命名的文件是索引图。
以下是索引图转换二值图:
>>[x,map]=imread('3.bmp');
>>figure
(1),imshow(x);
>>RGB=ind2rgb(x,map);
>>figure
(2),imshow(RGB);
三、RGB图像到二值图像的转换
clear
>>info=imfinfo('20081228224116246.jpg')
info=
Filename:
'20081228224116246.jpg'
FileModDate:
'23-Mar-201015:
55:
03'
FileSize:
55227
Format:
'jpg'
FormatVersion:
''
Width:
580
Height:
483
BitDepth:
24
ColorType:
'truecolor'
FormatSignature:
''
NumberOfSamples:
3
CodingMethod:
'Huffman'
CodingProcess:
'Sequential'
Comment:
{'CompressedwithJPEGOptimizer4.00,'}
>>RGB=imread('20081228224116246.jpg');
>>figure(3);
>>imshow(RGB);
>>bw1=im2bw(RGB,0.5);
>>bw2=im2bw(RGB,0.6);
>>figure
(1);
>>imshow(bw1);
>>figure
(2);
>>imshow(bw2);
图3
图1
图2
实验结果分析:
从实验结果可以看出,阈值不同,图像的清晰度也不一样。
阈值的取值范围在[0,1]之间,它相当一个门限,输入图像的像素大于这个门限时就可以输出。
以下为灰度图转换为二值图:
Clear
I=imread('rice.png');
>>figure(3);
>>imshow(I);
>>bw1=im2bw(I,0.5);
>>bw2=im2bw(I,0.6);
>>figure
(1);
>>imshow(bw1);
>>figure
(2);
>>imshow(bw2);
图3
图1
图2
实验二:
图像变换
实验目的:
掌握图像变换的方法,观察图象变换的效果,熟悉图像傅立叶变换。
实验内容:
快速卷积实验,对图像进行傅立叶变换;
实验方法:
利用MATLAB图像处理工具箱进行实验
一、傅立叶变换实验
A=magic(3);
B=ones(3);
A(8,8)=0;
B(8,8)=0;
>>C=ifft2(fft2(A).*fft2(B));
>>C=C(1:
5,1:
5);
>>C=real(C)
C=
8.00009.000015.00007.00006.0000
11.000017.000030.000019.000013.0000
15.000030.000045.000030.000015.0000
7.000021.000030.000023.00009.0000
4.000013.000015.000011.00002.0000
>>C=conv2(A,B);
>>C=C(1:
5,1:
5)
C=
891576
1117301913
1530453015
72130239
41315112
clear
>>figure
(1);
>>RGB=imread('cameraman.tif');
>>imshow(RGB);
>>figure
(2);
>>B=fftshift(fft2(RGB));
imshow(log(abs(B)),[]),colormap(jet(64)),colorbar;
clear
>>A=zeros(128);
>>A(60:
68,60:
68)=1;
>>figure
(1);
>>imshow(A);
>>figure
(2);
>>B=fft2(A);
>>imshow(B);
C=fftshift(fft2(A));
>>figure(3),imshow(C);
figure(4);
>>imshow(log(abs(C)),[]),colormap(jet(64)),colorbar;
实验三:
数字图像滤波及边缘检测(综合性实验)
实验目的:
1)综合运用图像处理的基本原理方法,解决实际问题;
2)学会使用Matlab中值滤波函数和图像处理并了解适用范围;
3)了解函数imnoise的基本功能和输入参数的特点;
4)掌握线性平滑滤波器和非线性平滑滤波器(中值滤波)的性能。
5)掌握图象边缘检测的基本算法。
实验内容:
平滑滤波,中值滤波,边缘检测
实验方法:
利用MATLAB图像处理工具箱进行实验
一、图象平滑滤波
1.均值滤波(线性滤波)
clear
>>I=imread('kids.tif');
>>imshow(I)
>>I1=imnoise(I,'gaussian',0,0.02);
>>figure,imshow(I1)
>>h=[111;111;111];
>>h=h/9;
>>J=conv2(I1,h);
figure,imshow(J,[])
clear
>>I=imread('kids.tif');
>>imshow(I)
>>I1=imnoise(I,'gaussian',0,0.02);
>>figure,imshow(I1)
>>h=[11111;11111;11111;11111;11111];
>>h=h/9;
>>J=conv2(I1,h);
figure,imshow(J,[])
clear
>>I=imread('kids.tif');
>>imshow(I)
>>I1=imnoise(I,'gaussian',0,0.02);
>>figure,imshow(I1)
h=[1111111
1111111
1111111
1111111
1111111
1111111
1111111];
>>h=h/9;
>>J=conv2(I1,h);
figure,imshow(J,[])
2.中值滤波(非线性滤波)
clear
>>I=imread('kids.tif');
>>J=imnoise(I,'gaussian',0.02);
>>K=medfilt2(J);
>>subplot(1,3,1),imshow(I);
>>subplot(1,3,2),imshow(J);
>>subplot(1,3,3),imshow(K);
clear
>>I=imread('Big_2009.jpg');
>>J=imnoise(I,'gaussian',0.02);
>>K=imnoise(I,'salt&pepper',0.02);
>>subplot(1,3,1),imshow(I);
>>subplot(1,3,2),imshow(J);
>>subplot(1,3,3),imshow(K);
小结:
不同的滤波方法得出的效果不一样,同一种方法选择不同的参数得出的结果也不一样。
如上图所示,对于中值滤波选择了3x3,5x5,7x7观察图形,清晰度不同。
二、边缘检测
clear
>>I=imread('trees.tif');
>>imshow(I)
>>BW1=edge(I,'Roberts');
>>figure,imshow(BW1)
>>BW2=edge(I,'sobel');
>>figure,imshow(BW2)
BW3=edge(I,'Prewitt');
>>figure,imshow(BW3)
>>
小结:
边缘检测的方法也有很多,不同的检测方法提取的信息也不一样,该实验中,选择了'Roberts','sobel','Prewitt'算子分别对图像进行处理,观察结果发现有些细节在有的图片上有,而有的则没有。
实验四:
小波在图像降噪中的应用
实验目的:
掌握小波变换的基础知识;
掌握小波去噪的基本原理,观察小波降噪后的图象差别;
掌握一维和二维信号的小波去噪方法
实验内容:
利用matlab产生一有噪信号;
应用小波变换的方法将该信号进行降噪处理,观察图像的变换;
利用matlab小波分析工具箱去除图像噪声
实验方法:
利用matlab软件及其小波分析工具箱
clear
>>sqrt_snr=3;
>>init=231434;
>>[x,xn]=wnoise(3,11,sqrt_snr,init);
>>plot(x)
>>figure,plot(xn)
lev=5;
>>xd=wden(x,'heursure','s','one',lev,'sym8');
>>figure,plot(xd)
>>xd=wden(x,'rigrsure','s','sln',lev,'sym8');
>>figure,plot(xd)
>>xd=wden(x,'sqtwolog','s','sln',lev,'sym8');
>>figure,plot(xd)
不同的去噪方法得出的结果不同,其中有好有坏。
用matlab小波工具箱对图片进行去噪。
>>wavemenu
单击wavelet2-D按钮,选择file菜单里的命令选择例子图像,
单击De-noise按钮,在新产生的窗口中可以选择阈值处理,还可以手动设置。
选择penalizehigh阈值方法进行去噪
还可以继续选择不同的方法进行去噪,另外通过手动设置阈值,一下是手动设置阈值的几个图:
把每层的阈值都设为0。
把每层的阈值都设为最大。
根据前两个图取中间比较合适的阈值,是之能够得到满意的结果。
小结:
根据实验结果我们可以发现对图片进行去噪的处理方法比较的多,由于这里只是对一张图片进行处理,理论上将对不同噪声图片处理的方法不一样,处理时应该选择与之对应的方法才能得出好的效果来。