实验一 数字图像的获取
一、实验目的
1、了解图像的实际获取过程。
2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。
3、熟练掌握图像读、写、显示、类型转换等 matlab 函数的用法。
二、实验内容
1、读取一幅彩色图像,将该彩色图像转化为灰度图像,再将灰度图像转化为索引图像并显示所有图像。
2、编程实现空间分辨率变化的效果。
三、实验原理
1、图像读、写、显示 I=imread(‘image.jpg’) Imview(I) Imshow(I)
Imwrite(I,’wodeimage.jpg’) 2、图像类型转换
I=mat2gray(A,[amin,amax]);按指定的取值区间[amin,amax]将数据矩阵 A 转化为灰度
图像 I,amin 对应灰度 0,amax 对应 1,也可以不指定该区间。
[x,map]=gray2ind(I,n);按指定的灰度级 n 将灰度图像转化为索引图像,n 默认为 64
I=ind2gray(x,map);索引图像转化为灰度图像 I=grb2gray(RGB);真彩色图像转化为灰度图像
[x,map]=rgb2ind(RGB);真彩色图像转化为索引图像 RGB=ind2rgb(x,map);索引图像转化为真彩色图像
BW=im2bw(I,level);将灰度图像转化为二值图像,level 取值在[0,1]之间
BW=im2bw(x,map,level);将索引图像转化为二值图像,level 取值在[0,1]之间 BW=im2bw(RGB,level);将真彩色图像转化为二值图像,level 取值在[0,1]之间
四、实验代码及结果
1、 in=imread('peppers.png');
i=rgb2gray(in);[x,map]=gray2ind(i,128); subplot(131),imshow(in) subplot(132),imshow(i)
subplot(133),imshow(x),colormap(map)
、%空间分辨率变化的效果
clc,close all,clear
i=imread('cameraman.tif'); i=imresize(i,[256,256]); i1=i(1:2:end,1:2:end); [m1,n1]=size(i)
i2=i1(1:2:end,1:2:end); [m2,n2]=size(i2)
i3=i2(1:2:end,1:2:end); [m3,n3]=size(i3)
subplot(221),imshow(i),xlabel('256 x 256') subplot(222),imshow(i1),xlabel('128 x 128') subplot(223),imshow(i2),xlabel('64 x 64') subplot(224),imshow(i3),xlabel('32 x 32')
256 x 25664 x 64128 x 12832 x 32
2
实验二 图像的几何变换
一、实验目的
掌握图像的基本几何变换的方法 1、图像的平移 2、图像的旋转
二、实验内容
练习用matalb命令实现图像的平移、旋转操作 1、.编写实现图像平移的函数
2、用imread命令从你的硬盘读取一幅256×256灰度图;
3、调用平移函数,将256×256灰度图平移100行200列,在同一个窗口中显示平移前和平移后的图像。
4、再开辟一个窗口,分别用最近邻插值法、双线性插值法实现图像顺势针旋转50°,显示在同一窗口中,并比较两种效果图(在报告中)
三、实验原理
提示:图片平移就是实现运算
?x'??10x0??x? ?'????? ?y???01y0???y??1??001??1? ??????
?x'?x?x0即:??y'?y?y0四、实验代码及结果
1、function [I]=hmove(i,x0,y0); %编写实现图像平移的函数hmove,平移量为 [r,c]=size(i); %x0,y0,平移前图像矩阵为i, I(r+x0,c+y0)=0; %平移后图像矩阵为I for x=1:r;
for y=1:c; x1=x+x0; y1=y+y0;
I(x1,y1)=i(x,y); end; end;
参考程序 subplot(2,2,1) imshow(RGB) subplot(2,2,3)
gray1=rgb2gray(RGB);
imagesc(gray1),colormap(gray);
subplot(2,2,2)
I1=hmove(gray1,100,20);
subimage(gray1),axis('image');
subplot(2,2,4),imagesc(I1),colormap(gray),axis([1,700],[1,820]);
2、显示图像的傅立叶频谱 ? a=0:800;b=0:600;
? %[x,y]=meshgrid([-20:0.2:20],[-20:0.2:20]); ? [x,y]=meshgrid(a,b); ? i=imread('hr.jpg'); ? I=rgb2gray(i);
? subplot(1,2,1),subimage([0,800],[0,600],i); ? subplot(1,2,2); ? s=fft2(I,601,801);
? mesh(x,y,log(abs(s)));%图像的傅立叶幅度频谱以三维图形显示 ? colormap(hsv);
实验三 图像空域变换增强(1)
一、实验目的
1、掌握直方图均衡化算法。
2、巩固灰度变换、直方图修正、图像算术和逻辑运算等基础知识。 3、熟练掌握空域变换增强的matlab 相关函数用法,并能利用算法自己编写matlab 程序实现图像空域变换增强。
二、实验内容
1、用函数imcomplement 对灰度图像cameraman.tif 取反。 2、利用如下分段变换曲线对canmeraman.tif 做线性灰度变换。
3、利用直方图求取算法计算以及显示pout.tif 的直方图,并和imhist 函数生成的直方图作比较。
三、实验原理
在图像处理中,空域是指由像素组成的空间,空域增强方法是指直接作用于像素的增强方法。空域处理可以表示为:
g(x, y)=T[ f (x, y)]
j=imcomplement(i);对图像取反 imhist();显示图像的直方图 histeq();直方图均衡化函数
imnoise(I,type,parameters);给图像加噪声 bitand();图像位与运算 bitor();图像位或运算
四、实验代码与结果
1、 i=imread('cameraman.tif');
j=imcomplement(i); subplot(121),imshow(i) subplot(122),imshow(j)
2、 clear,close all,clc
in1=imread('cameraman.tif');