MATLAB中的图像插值涉及interp1

Image interpolation in MATLAB involves interp1

目前我正在努力创建一个解决方案来使用 MATLAB 中的 interp1() 调整图像(颜色和灰度)的大小。我到处都看过,但我找到的唯一解决方案是使用 interp2(),这是我做不到的。我已经尝试和研究了将近 3 天,但没有任何帮助。提前谢谢你。

如果您反对插值,您可以跳过几行和几列。

I = imread('peppers.png') ;   
size(I)
I1 = I(1:2:end,1:2:end,:) ;
size(I1)

此外,您可以查看 imresize

I2 = imresize(I,[200 200]) ;

由于您严格要求使用 interp1..您可以按以下方式进行。根据全局索引进行插值。

I = imread('peppers.png') ;
[nx,ny,t] = size(I) ;
%%
dx = 4 ; dy = 4 ;   % see to it that dx and dy are multiples of nx and ny
%% Global indices 
idx = 1:nx*ny ;
% for interpolation 
idxi = 1:dx:nx ; idyi = 1:dy:ny ;
[I1,J1] = meshgrid(idxi,idyi) ;
idxi = sub2ind([nx,ny],I1,J1)' ;
%%
nxi = nx/dx ; nyi = ny/dy ;
I1 = zeros(nxi,nyi,t) ;
%%
for i = 1:t
    C = I(:,:,i) ;
    temp = interp1(idx,double(C(:)),idxi(:)) ;
    I1(:,:,i) = reshape(temp,nxi,nyi) ;
end
I1 = uint8(I1) ;
imshow(I1)
size(I)
size(I1)