# 图像缩放

1.采用双线性插值进行重采样；
2.X,Y方向的缩放倍数参函数参数的形式传入；
3.可以只考虑输入图像为3通道，8位深度的情况；
4.不能调用图像处理库的缩放函数来完成；

RGB = imread('H:/数字图像处理/ipe_data/009.jpg');
R = RGB(:,:,1);
G = RGB(:,:,2);
B = RGB(:,:,3);
[nrows,ncols,ncoms]=size(RGB);
% Next line is the scale-factor,the range is 1.0-9.0
K1 = str2double(inputdlg('请输入行缩放倍数', 'INPUT scale factor', 1, {'0.5'}));%行默认变为原来的0.5倍
K2 = str2double(inputdlg('请输入列缩放倍数', 'INPUT scale factor', 1, {'0.4'}));%列默认变为原来的0.4倍
width = K1 * ncols;
height = K2 * nrows;
OUT = uint8(zeros(height,width,ncoms));
RR = uint8(zeros(height,width));
GG = uint8(zeros(height,width));
BB = uint8(zeros(height,width));
% width scalor and height scalor
widthScale = ncols/width;
heightScale = nrows/height;
% bilinear interpolate
for y = 1:height
for x =1:width % this index range is to avoid exceeding the permitted matrix index
xx = x * widthScale; % xx and yy are the source ordinate,while x and y are the destinate ordinate
yy = y * heightScale;
if (xx <= 1)
xx = 1;
end
if (xx > ncols-1)
xx = ncols-1;
end
if (yy <= 1)
yy = 1;
end
if (yy > nrows-1)
yy = nrows-1;
end

if (xx/double(uint16(xx)) == 1.0) && (yy/double(uint16(yy)) == 1.0) % if a and b is integer,then J(x,y) <- I(x,y)
RR(y,x) = R(int16(yy),int16(xx));
GG(y,x) = G(int16(yy),int16(xx));
BB(y,x) = B(int16(yy),int16(xx));
else % a or b is not integer
a = double(uint16(yy)); % (a,b) is the base-dot
b = double(uint16(xx));

r11 = double(R(a,b));
r12 = double(R(a,b+1));
r21 = double(R(a+1,b));
r22 = double(R(a+1,b+1));
RR(y,x) = uint8( (b+1-xx) * ((yy-a)*r21 + (a+1-yy)*r11) + (xx-b) * ((yy-a)*r22 +(a+1-yy) * r12) );

g11 = double(G(a,b));
g12 = double(G(a,b+1));
g21 = double(G(a+1,b));
g22 = double(G(a+1,b+1));
GG(y,x) = uint8( (b+1-xx) * ((yy-a)*g21 + (a+1-yy)*g11) + (xx-b) * ((yy-a)*g22 +(a+1-yy) * g12) );

b11 = double(B(a,b));
b12 = double(B(a,b+1));
b21 = double(B(a+1,b));
b22 = double(B(a+1,b+1));
BB(y,x) = uint8( (b+1-xx) * ((yy-a)*b21 + (a+1-yy)*b11) + (xx-b) * ((yy-a)*b22 +(a+1-yy) * b12) );
end
end
end
OUT(:,:,1) = RR;
OUT(:,:,2) = GG;
OUT(:,:,3) = BB;
imshow(RGB),title('原图');
figure;
imshow(OUT),title('修改图');

• 本文已收录于以下专栏：

## 插值实现图像缩放

• 2017年04月09日 17:40
• 1KB
• 下载

## 图像缩放算法

• 2013年09月07日 14:33
• 16.29MB
• 下载

## 实用的jquery插件--图像缩放插件

• 2014年05月03日 12:18
• 589KB
• 下载

## 精彩编程与编程技巧-VB 调用 IMAGE 控件实现图像缩放的一种方法...

• 2009年10月10日 22:30
• 3KB
• 下载

## 通过pyrUp和pyrDown实现图像缩放的简单程序

• roslei
• 2016年08月10日 11:28
• 360

## 简单的图像缩放

• 2008年08月02日 10:56
• 28KB
• 下载

## Jquery+.net实现图像缩放截取（类似开心网）

• 2012年01月04日 17:32
• 196KB
• 下载

## 图像缩放

#include #include #include int main(int argc, char* argv[]) { IplImage *src = 0; //源图像指针 ...

## 双线性插值进行图像缩放

• 2017年08月14日 20:17
• 2KB
• 下载

举报原因： 您举报文章：图像缩放 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)