几何变换之放大缩小
概念
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:为了产生一幅数字图像,需要把连续的感知数据转换为数字形式。
这包括两种处理:采样和量化。