其中
\begin{matrix}
f(x)=g(round(x),round(y)) \\
round(x)=\frac {size(g(x))}{ scale}\\
round(y)=\frac {size(g(y))}{ scale}\\
\end{matrix}
Matlab代码
%输入参数 源图像,放大倍数
function dst=imageNearestNeighbor(src,scale)
Row=size(src,1);
Col=size(src,2);%图像行数和列数
max_row=round(scale*Row);%求出变换后的坐标的最大值
max_col=round(scale*Col);
B=zeros(max_row,max_col,3);%定义变换后的图像 3表示3个通道(RGB)
for new_row=1:max_row
for new_col=1:max_col
x=round(new_row/scale);
y=round(new_col/scale);%最小临近法对图像进行插值
%处理边缘
if x==0 x=1;end
if y==0 y=1;end
if x>Row x=Row;end %溢出处理
if y>Col y=Col;end %溢出处理
B(i,j,:)=A(x,y,:); %B(i,j)像素点对应A最近邻点A(x,y)
end
end
B=uint8(B);%将矩阵转换成8位无符号整数
OpenCV代码
//待更新
Matlab代码
%采用双线性内插值对图像进行缩放处理
%参数n表示缩放的倍数
function []=scale2(n)
ima=imread('test.jpg'); %读取原图像
ima=double(ima); %二维矩阵转为双精度类型
swh=size(ima); %获取原图像的宽高
sh=swh(:,1); %获取原图像的高
sw=swh(:,2); %获取原图像的宽
%"加墙"
ima2=zeros(sh+2,sw+2);
ima2(1,2:sw+1)=ima(1,:); %原图像上边加墙,灰度值与边界一致
ima2(sh+2,2:sw+1)=ima(sh,:); %原图像下边加墙,灰度值与边界一致
ima2(2:sh+1,2:sw+1)=ima; %将原图像赋值给中心部分
ima2(:,1)=ima2(:,2); %原图像左边加墙,灰度值与边界一致
ima2(:,sw+2)=ima2(:,sw+1); %原图像右边加墙,灰度值与边界一致
dw=sw*n; %计算缩放后的图像的宽
dh=sh*n; %计算缩放后的图像的高
dw1=round((sw+2)*n); %计算加墙后缩放的图像的宽
dh1=round((sh+2)*n); %计算加墙后缩放的图像的高
resIma1=zeros(dh1,dw1); %创建原图像的矩阵
%从不是“墙”的位置开始计算缩放后的图像的各点灰度值
%考虑缩小图像时,输入的缩放倍数是小数,需进行取整
start=round(n+1);
endI=round(dh+n);
endJ=round(dw+n);
for i=start:endI
for j=start:endJ
tx=i/n; %缩放后的图像坐标在原图像处的位置
ty=j/n;
tdx=tx-floor(tx); %得到小数坐标
tdy=ty-floor(ty);
%确定临近四个角的坐标
%Q11点
Q11x=tx-tdx;
Q11y=ty-tdy;
%Q12点
Q12x=tx-tdx;
Q12y=Q11y+1;
%Q21点
Q21x=Q11x+1;
Q21y=Q11y;
%Q22点
Q22x=Q11x+1;
Q22y=Q11y+1;
%根据双线性内插算法,算出缩放后的图像在(i,j)点处的灰度值
resIma1(i,j)=tdx*tdy*ima2(Q11x,Q11y)+(1-tdx)*tdy*ima2(Q12x,Q12y)+tdx*(1-tdy)*ima2(Q21x,Q21y)+(1-tdy)*(1-tdx)*ima2(Q22x,Q22y);
end
end
resIma=resIma1(n+1:dh+n,n+1:dw+n); %截取除墙外的中心部分
resIma=uint8(resIma);
imshow(resIma); %显示缩放后的图像
end
OpenCV 代码
//待填坑
**附上一道很经典的 双线性插值 面试题 ** 已知Q12,Q22,Q11,Q21的坐标如图1,求P点的坐标
//笔者编程能力有限,待笔者好好研究研究。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有