Matlabで独自の最近隣内挿アルゴリズムを作成して、556×612の画像を1668×1836に拡大しようとしています。
これは宿題です!!!
私はすでにこれを試みましたが、M内の値が(すべてではなくほとんど)255(空白)に変換されるというエラーが発生し、その理由を理解できません。どんな助けでもいただければ幸いです!写真はシマウマの写真です。
%Take in image and convert to greyscale
I = imread('Zebra.jpg');
Igray = rgb2gray(I);
% Step-3: Resize the image to enlarged 1668x1836 by interpolation
% Step-3(a) : Using nearest neighbour
%First we will need to work out the dimension of the image
[j , k] = size(Igray);
%Now we need to set the size of the image we want
NewX = 1836;
NewY = 1668;
% Work out ratio of old to new
ScaleX = NewX./(j-1);
ScaleY = NewY./(k-1);
%Image Buffer
M = zeros(NewX, NewY);
%Create output image
for count1 = 1:NewX
for count2 = 1:NewY
M(count1,count2) = Igray(1+round(count1./ScaleX),1+round(count2./ScaleY));
end
end
%Show Images
imshow(M);
title('Scaled Image NN');
試してみてくださいimshow(M,[])
。M
タイプを指定せずに作成したため、になりますdouble
。double
画像は[0-1]であるためimshow
、デフォルトでは1より大きい値のすべてが白になります。
または、元の画像として作成M
しますuint8
M = zeros(NewX, NewY,'uint8');
さらに良いコードは次のようになります。
M = zeros(NewX, NewY,class(Igray));
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加