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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章