2017-06-01 13 views
-1

現在、MATLABのinterp1()を使用して画像(カラーとグレースケール)のサイズを変更するソリューションを作成するのには苦労しています。私はどこにでも見ましたが、私が見つけた唯一の解決策はinterp2()を使用することです。これはできないものです。私は今、ほぼ3日間試して研究していますが、何も助けません。前もって感謝します。MATLABの画像補間はinterp1を伴う

+1

なぜあなたは_interp2_できませんか? –

+0

私はinterp2を使用する方が簡単だと理解していますが、この質問ではinterp1しか使用できません。 –

+0

私はこの[投稿](https://stackoverflow.com/questions/6183155/resizing-an-image-in-matlab)を見て、それを参照しようとしていますが、何かが間違っているか欠落しています。 –

答えて

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) 
+0

そんなに@シヴァの小道具にあなたに感謝:)私はこれを調べます。 –

+0

画像のサイズを大きくしたいのですが? –

0

補間に反対の場合は、行と列をスキップすることがあります。

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

そしてまた、あなたはimresizeに外観を持つことができます。

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

この問題ではinterp1()を使用する必要があり、この場合はimresize()を使用しないでください。前もって感謝します。 –

関連する問題