MATLAB中的图像插值涉及interp1

时间:2017-06-01 08:08:34

标签: matlab interpolation image-resizing

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

2 个答案:

答案 0 :(得分:0)

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

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

此外,您还可以查看 imresize

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

答案 1 :(得分:0)

由于您严格使用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)