图像几何变换之放大缩小(MATLAB)
几何变换之放大缩小
概念 1.缩小:从图像中,删除部分像素; 2. 放大:向图像中增加部分像素,增加像素的取值是根据周围相邻像素的值进行插值计算得到的。
用法
调用格式: B = imresize(A,m) B = imresize(A,m,method) B = imresize(A,[mrows ncols],method) B = imresize(…,method,h) 参数说明:
(1)返回的对象B的长宽是图像A的长宽的m倍。
-
m大于1, 则放大图像; m小于1, 缩小图像。
(2)参数method指定的插值运算来改变图像的大小,三种选值:
nearest最近邻插值(默认值) bilinear双线性插值 bicubic双三次插值(R2013a版本默认为这种算法,不同版本可能有不同的默认参数)
(3)numrows和numcols分别指定目标图像的高度和宽度。显而易见,由于这种格式允许图像缩放后长宽比例和源图像长宽比例不同,因此所产生的图像有可能发生畸变。
(4)B = imresize(…,method,h) 中的h可以是任意一个FIR滤波器(h通常由函数ftrans2、fwind1、fwind2、或fsamp2等生成的二维FIR滤波器)。
缩小示例代码1:
%缩小 I=imread(pout.tif) k1=0.6;k2=0.72; [m,n] = size(I); M = round(m*k1); N = round(n*k2); for i=1:M for j=1:N x=round(i/k1); if x>m x=m;end y=round(j/k2); if y>n y=n;%防止图像大小溢出 G(i,j)=I(x,y); end end figure(1); subplot(121); imshow(I); subplot(122); imshow(G);
缩小示例代码2:
I = imread(pout.tif); H = imresize(I,[175 180]); figure(1); subplot(121); imshow(I); subplot(122); imshow(H);
运行结果: 练习题1:关于图像缩小处理,下列说法正确的是( )
A、图像的缩小只能按比例进行 B、图像的缩小是从原始图像中选择合适的像素点,使图像缩小后可以尽量保持原有图像的概貌特征 C、利用基于等间隔采样的图像缩小方法对图像进行处理时,不需要计算出采样间隔 D、图像的缩小只能按不比例进行
正确答案: B
练习题2:关于图像放大处理,下列说法正确的是( ) A、图像的放大不会引起图像的畸变 B、图像的放大处理不需要对未知数据进行估计 C、当放大倍数比较大的时候,使用基于像素放大原理的图像放大方法不会导致马赛克现象 D、从物理意义上讲,图像的放大是图像缩小的逆操作
正确答案: D
练习题3:图像I经过 imresize(I,0.3)处理之后,是( )。 A、放大 B、缩小
正确答案: B
练习题4:假设原图I大小为256x256,新图G大小为128*128,请补充完整缩小操作的关键代码。
正确答案: x=round(i/0.5); if x>m x=m;end y=round(j/0.5); if y >n y=n;end G(x,y)=I(x,y) 练习题5:假设原图I大小为256x256,新图G大小为512*512,请补充完整放大操作的关键代码。
正确答案: x=round(i/2); if x>m x=m;end y=round(i/2); if y >n y=n;end G(x,y)=I(x,y)
练习题6:为了产生一幅数字图像,需要把连续的感知数据转换为数字形式。 这包括两种处理:采样和量化。