Я пытаюсь создать свой собственный алгоритм интерполяции ближайшего соседа в Matlab, чтобы увеличить изображение с 556 × 612 до 1668 × 1836.
Это домашнее задание !!!
Я уже пытался это сделать, но столкнулся с ошибкой, когда значения внутри M (не все, но большинство) преобразуются в 255 (пустое пространство), и я не могу понять, почему. Любая помощь будет оценена! На картинке изображена зебра.
![Image after interpolation](https://i.stack.imgur.com/ZIFV4.png)
%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');