实验一实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一图像几何变换

一、实验目的

图像几何变换是图像处理与分析的基础内容之一。使学生掌握图像平移、镜像、缩放和旋转等几何变换的方法以及程序实现。

二、实验设备

联想图像处理工作站

三、实验内容及要求

图像几何变换不改变图像的像素值,而是改变像素所在的几何位置,具有独特的方法。本实验的内容如下:

1.学会使用Matlab的图像处理工具箱(Image Processing Toolbox)。使学生初步具备使用该软件处理图像信息能力,并可以利用该软件完成本课程规定的其他实验和作业。

2.编程实现图像平移,要求平移后的图像大小不变;

3.编程实现图像的镜像;

4.编程实现图像的比例缩放,要求分别用最近邻插值、双线性插值和双三次插值三种方法来实现,并比较缩放效果;

5.编程实现以任意角度对图像进行旋转变换。

四、实验原理

1.图像平移

从上到下、从左到右依次计算新图像中的每个像素(x, y)在源图像中对应的坐标值(x0, y0);

即: x0 = x –△x,y0 = y –△y

其中,△x、△y分别是水平和垂直偏移量。

2.图像镜像

从上到下、从左到右依次计算新图像中的每个像素(x, y)在源图像中对应的坐标值(x0, y0);

即:x0 = fWidth – x,y0 = y 水平镜像

x0 = x,y0 = fHeight – y 垂直镜像

其中,fWidth、fHeight分别是图像的宽度和高度。

3.图像比例缩放

图像比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴方向按比例缩放fy倍,从而获得一幅新的图像。从上到下、从左到右依次计算新图

像中的每个像素(x, y )在源图像中对应的坐标值(x0, y0);即:

x0 = [x / fx + 0.5],y0 = [y / fy + 0.5]

其中,fx 、fy 分别是水平和垂直方向的缩放比率,中括号表示对括号内表达 式取整。

图像的比例缩放所产生的图像中的像素可能在源图像中找不到相应的像素 点,这时就需要进行插值处理,通常可用最近邻插值和双线性插值算法来实现。

(1) 最近邻插值

对通过反变换得到的浮点坐标进行简单的取整操作,得到一个整数型坐标, 这个整数型坐标对应的原图像的像素值就是新图像的像素值。

(2)双线性插值

对通过反变换得到的浮点坐标,求出此浮点坐标对应原图像四个邻域整数型 坐标的灰度值,然后经过双线性插值得到新图像的像素值。

(,)(1)(1)([],[])(1)([]1,[])(1)([],[]1)([]1,[]1)g x y v u f x y v uf x y v u f x y vuf x y =--+-++-++++(3) 双三次插值

对通过反变换得到的浮点坐标,求出此浮点坐标对应原图像16 个邻域整数 型坐标的灰度值,然后经过双三次插值得到新图像的像素值。

4.图像旋转

一般图像的旋转是以图像的中心为原点,将图像上的所有像素都旋转一个相同的角度。如图所示:

新图像坐标与原图像坐标对应关系:

0000cos sin sin cos x x y y x y θθθθ=-⎧⎨=+⎩

00

cos sin sin cos x x y y x y θθθθ=+⎧⎨=-+⎩ 两个常量: 010

2cos sin 222sin cos 222

w w h f h w h f θθθθ⎧=--+⎪⎪⎨⎪=-+⎪⎩

图像旋转之后会出现许多空洞点,须对这些空洞点进行插值处理。可用近邻插值,均值插值算法。

五、实验步骤

1.根据实验内容的要求在Matlab软件中编写相应程序;

2.调试运行程序,并记录结果;

3.完成实验报告。

六、实验结果及对应代码

1.图像平移

a、实验代码:

I = imread('cameraman.tif');

se = translate(strel(1), [25 25]);

J = imdilate(I,se);

imshow(I), title('原图')

figure, imshow(J), title('平移后');

b、实验结果:

2.图像比例缩放

a、实验代码:

clc,clear

A=imread('greens.jpg','jpg');

%显示原始图像

figure(1)

imshow(A)

title('原始图像');

%图像放大1.5倍

B=imresize(A,1.5,'nearest');

figure(2)

imshow(B)

title('最近邻法');

%双线性插值

C=imresize(A,1.5,'bilinear');

figure(3)

imshow(C)

title('双线性插值');

%双三次插值

D=imresize(A,1.5,'bicubic');

figure(4)

imshow(D)

title('双三次插值');

b、实验结果:

3.图像旋转

a、实验代码:

A=imread('greens.jpg','jpg');

%显示原始图像

figure(1)

imshow(A)

title('原始图像');

%旋转30度

B=imrotate(A,30,'nearest');

figure(2)

imshow(B)

title('最邻近插值');

C=imrotate(A,30,'bilinear');

figure(3)

imshow(C)

title('双线性插值');

D=imrotate(A,30,'bicubic');

figure(4)

imshow(D)

title('双三次插值');

b、实验结果:

相关文档
最新文档