图像空域运算

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

实验二图像空域运算

实验内容:(1)选择两幅图像,一幅是物体图像,一幅是背景图像,采用正确的图像代数运算方法,分别实现图像叠加、混合图像的分离和图像的局部显示效果。

(2)对一幅图像实现按比例缩小和不按比例任意缩小的效果,以及图像的成倍放大和不按比例放大效果。

(3)将一幅图像分别旋转45度和90度,与原图像对比,观察它们的区别。

实验原理:(1)叠加:将两幅图像进行加法运算。

分离:将混合图像与背景图像做减法运算;

局部显示:设置掩模模板,对于需要保留下来的区域,掩模图像的值置为1,而在需要被抑制掉的区域,掩模图像的值置为0。

(2)比例缩放关系:x1=ax0, y1=ay0

(3)旋转变换关系:

cos sin0

sin cos0 10011 x x y y

ββ

ββ

⎛⎫⎛⎫⎛⎫ ⎪ ⎪⎪=-

⎪ ⎪⎪ ⎪ ⎪⎪⎝⎭⎝⎭⎝⎭

实验报告要求:给出实验代码,和实验结果图,并对实验结果进行分析。

所用函数:

imread从文件读取图像

imwrite把图像写成文件

调用格式:imwrite(A,filename,fmt)

其中,A是图像数据, filename是目标图像名字, fmt是要生成的图片的格式。图像格式有:bmp、gif、hdf、jpg(或jpeg)、jp2或jpx、pbm、pcx、pgm、png、pnm、ppm、ras、tif(或tiff)、xwd。

举例:

imgrgb = imread('flower.jpg');

imwrite(imgrgb, 'flower.bmp', 'bmp'); % jpg格式转换为bmp格式

imresize函数实现图像的缩放

调用格式

(1)B = imresize(A, m)

返回的图像B的长宽是图像A的长宽的m倍,即缩放图像。 m大于1,则放大图像; m小于1,缩小图像。

(2)B = imresize(A, [numrows numcols])

numrows和numcols分别指定目标图像的高度和宽度。显而易见,由于这种格式允许图像缩放后长宽比例和源图像长宽比例不相同,因此所产生的图像有可能发生畸变。

imrotate函数实现图像的旋转

调用格式:

(1)B = imrotate(A,angle)

将图像A(图像的数据矩阵)绕图像的中心点旋转angle度,正数表示逆时针旋转,负数表示顺时针旋转。返回旋转后的图像矩阵。以这种格式调用该函数,该函数默认采用最近邻线性插值(Nearest-neighbor interpolation)。旋转后的图像超出的部分填充0(黑色)。(2)B = imrotate(A,angle,method)

使用method参数可以改变插值算法,method参数可以为下面这三个值:

'nearest':最邻近线性插值(Nearest-neighbor interpolation)

'bilinear':双线性插值(Bilinear interpolation)

'bicubic':双三次插值(或叫做双立方插值)(Bicubic interpolation)

(3)B = imrotate(A,angle,method,bbox)

bbox参数用于指定输出图像属性:

'crop':通过对旋转后的图像B进行裁剪,保持旋转后输出图像B的尺寸和输入图像A

的尺寸一样。

'loose':使输出图像足够大,以保证源图像旋转后超出图像尺寸范围的像素值没有丢失。一般上这种格式产生的图像的尺寸都要大于源图像的尺寸。

附录:

1.图像加减运算和局部显示

图像加减

clear all

I=imread('D:\matlab图片\lanse.jpg');

J=imread('D:\matlab图片\lena.jpg');

%图像相加

k=imadd(I,J);

%图像相减,还原原图像

I1=imsubtract(k,J);

J1=imsubtract(k,I);

subplot(2,3,1);imshow(I);xlabel('原始图像I');

subplot(2,3,2);imshow(J);xlabel('原始图像J');

subplot(2,3,3);imshow(k,[]);xlabel('相加后的图像k'); subplot(2,3,4),imshow(I1,[]);xlabel('相减得到原始图像I1'); subplot(2,3,5),imshow(J1,[]);xlabel('相减得到原始图像J1');运行结果:

图像局部显示

clear all

%图像的局部显示

I2=imread('D:\matlab图片\lena_gray.bmp');

subplot(1,2,1);imshow(I2);xlabel('原始图像I2');

%设置模板

[m,n]=size(I2);

for i=1:m

for j=1:n

h(i,j)=0;

end

end

for i=50:1:200

for j=50:1:200

h(i,j)=I2(i,j);

end

end

subplot(1,2,2);imshow(h,[]);xlabel('局部显示');运行结果:

2.图像缩放

源代码:

clear all

I=imread('D:\matlab图片\lena_gray.bmp'); figure;imshow(I);xlabel('原图像');

%按比例图像缩放

B = imresize(I, 1.5);

figure;imshow(B);xlabel('按比例放大');

C = imresize(I, 0.5);

figure;imshow(C);xlabel('按比例缩小');

%指定图像大小缩放

D = imresize(I, [350 300]);

figure;imshow(D);xlabel('指定放大');

E = imresize(I, [150 200]);

figure;imshow(E);xlabel('指定缩小');

运行结果:

相关文档
最新文档