数字图像处理实验.docx
《数字图像处理实验.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验.docx(11页珍藏版)》请在冰豆网上搜索。
数字图像处理实验
数字图像实验报告
院系
物理工程学院
专业
测试计量技术与仪器
姓名
代啟林
学号
201312131581
日期
2013年1月3日
数字图像处理实验内容
一、实验一:
图像文件读取和格式转换(BMP、JPG),FMRI_MRI利用Matlab编程,实现多种格式图像的读取,显示和格式转换。
1.Bmp格式文件的读取
源程序1
[X,map]=imread('C:
\Users\Administrator\Desktop\实验\fmri.bmp');
imshow(X)
Fmri.bmp转换成fmri.jpg格式
源程序2
A=imread('C:
\Users\Administrator\Desktop\实验\fmri.bmp');
imwrite(A,'fmri.jpg')
imshow('fmri.jpg')
2.Bmp格式文件的读取
源程序3
[X,map]=imread('C:
\Users\Administrator\Desktop\实验\mri.bmp');
imshow(X)
Fmri.bmp转换成fmri.jpg格式
源程序4
A=imread('C:
\Users\Administrator\Desktop\实验\mri.bmp');
imwrite(A,'mri.jpg')
imshow('mri.jpg')
3.Img格式文件的读取与转换
(1)对img格式文件读取
源程序5
fid=fopen('C:
\Users\Administrator\Desktop\实验\cell_128.img','r');%打开无格式的图像文件
data=(fread(fid,[256,256],'uint8'))';%转换成为二元图像文件
figure
(1)
imagesc(data),colormap(gray),title('cell_128原图像','Color','r');%显示原图像
(2)Img格式文件转换
>>fid=fopen('C:
\Users\Administrator\Desktop\实验\cell_128.img','r');%打开无格式的图像文件
>>data=(fread(fid,[256,256],'uint8'))';%转换成为二元图像文件
>>figure
(1)
>>imagesc(data),colormap(gray),title('cell_128原图像','Color','r');%显示原图像
>>imwrite(A,'cell_128.jpg')
>>imshow('cell_128.jpg')
同样的,我们分别对fing_128.img,lena.img,进行读取,其转换过程如上cell_128.img转换过程一样,这里我不在累述。
fid=fopen('C:
\Users\Administrator\Desktop\实验\fing_128.img','r');%打开无格式的图像文件
data=(fread(fid,[256,256],'uint8'))';%转换成为二元图像文件
figure
(1)
imagesc(data),colormap(gray),title('fing_128原图像','Color','r');%显示原图像
fid=fopen('C:
\Users\Administrator\Desktop\实验\lena.img','r');%打开无格式的图像文件
data=(fread(fid,[256,256],'uint8'))';%转换成为二元图像文件
figure
(1)
imagesc(data),colormap(gray),title('lena原图像','Color','r');%显示原图像
二、实验二:
图像的直方图调整和灰度变换
1.图“fmri.bmp”为一幅原图像,该图像右边的剪切图像为从“fmri.bmp”中剪切出的将用于分析的子图像块。
为了便于分析与观察,把子图像块旋转90度置于水平位置并把该图存在名为“fmri.bmp”的图像文件中。
以上的过程可用以下代码实现。
x=imread('C:
\Users\Administrator\Desktop\实验\fmri.bmp');
figure,imshow(x);
y=imcrop(x);
figure,imshow(y,[]);
z=imrotate(y,90);
imwrite(z,'C:
\Users\Administrator\Desktop\实验\fmri.bmp','bmp');
isrgb(z)
2.通过比较灰度原图和经均衡化后的图形可见图像变得清晰,均衡化后的直方图形状比原直方图的形状更理想。
程序代码如下:
x=imread('C:
\Users\Administrator\Desktop\实验\university.jpg');
y=rgb2gray(x);
subplot(221),imshow(y);title('Fig1.jpg灰度化图像');
subplot(222),imhist(y);title('均衡化前直方图');
I=histeq(y);
subplot(223),imshow(I);title('均衡化后图像');
subplot(224),imhist(I);title('均衡化后直方图');
运行结果
通过灰度调整把感兴趣的灰度范围拉开,使图像中亮的越亮,暗的越暗,分别取原图中要变换的灰度范围为(0.3,0.7)和(0.5,0.6),把变换后的图像相比较,见图3,可知原图所变换的灰度范围小,则调整后的图像反差大。
程序代码如下:
x=imread('C:
\Users\Administrator\Desktop\实验\mri_s6.jpg');
y=imadjust(x,[0.30.7],[]);
z=imadjust(x,[0.50.6],[]);
subplot(211),imshow(y);title('原图所变换的灰度范围(0.3,0.7)');
subplot(212),imshow(z);title('原图所变换的灰度范围(0.5,0.6)');
三、实验三:
图像的变换和频域滤波:
(1)完成图像的快速傅立叶变换;
(2)频域实现低通滤波。
(1)用MATLAB中的fft2函数对其进行FFT:
同屏显示原图f1和FFT(f1)的幅度谱图;
图2
%源程序2
a=zeros(128,128);
a(33:
97,57:
73)=255;
F1=fft2(a);
subplot(121);
imshow(a);
subplot(122);
mesh(1:
128,1:
128,abs(F1));
(2)频域滤波
对如所示的数字图像lena.img(256×256大小、256级灰度)进行频域的理想低通、高通滤波,同屏显示原图、幅度谱图和低通、高通滤波的结果图。
①原图频谱图
%源程序6
file=fopen('C:
\Users\thebluedb\Desktop\实验\lena.img','r');
lena=fread(file,[256,256],'uint8');
F=fft2(lena);
F1=fftshift(F);
F1temp=log(F1+1);
mesh(0:
255,0:
255,abs(F1));
②理想低通滤波
%源程序7
figure;
r=88;%另取24、11、5
m=256;n=256;
fori=1:
m
forj=1:
n
if(((i-m/2)^2+(j-n/2)^2)mask(i,j)=1;
else
mask(i,j)=0;
end
end
end
F2=F1.*mask;
F2temp=log(F2+1);
mesh(1:
256,1:
256,abs(F2))
③低通滤波结果图
%源程序8
Figure;
ilena1=ifft2(ifftshift(F2));
imshow(ilena1,[0,255]);
四、实验四:
磁共振大脑断层图像的边界提取(MRI)
X=imread('C:
\Users\Administrator\Desktop\实验\fmri.bmp','bmp');
B=edge(x,'sobel');
subplot(221);
imshow(B);title('sobel边界提取');
c=edge(x,'prewitt');
subplot(222);
imshow(c);title('prewitt边界提取');
d=edge(x,'roberts');
subplot(223);
imshow(d);title('roberts边界提取');
e=edge(x,'canny');
subplot(224);
imshow(e);title('canny边界提取');