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