whats wrong with this nearest neighbor zoom code

I think every thing is ok but the answer is not correct
I=imread('C:\Users\AliReza\Desktop\B.jpg');
for Channel = 1 : 3
I1 = I(:,:,Channel);
S=2 ;
[M , N]=size(I1);
M2=S*M;
N2=S*N;
I2=zeros(M2 , N2);
for i =1:M2
for j = 1:N2
x =i/S;
y=j/S;
x2=round(x);
y2=round(y);
if (x2<1)||(x2>M)||(y2<1)||(y2>N)
I2(i , j)=0;
else
I2(i,j)=I1(x2 ,y2);
end
end
I3(:, :, Channel) = I2;
end
imshow(I3,[])

댓글 수: 1

What do you think is incorrect? Why do you think there is a problem? Perhaps you need to either learn to use the debugger, or you need to give more information if you seriously expect an answer.

댓글을 달려면 로그인하십시오.

 채택된 답변

Walter Roberson
Walter Roberson 2016년 10월 23일

1 개 추천

Change
I2=zeros(M2 , N2);
to
I2 = zeros(M2 , N2, class(I));

추가 답변 (1개)

Image Analyst
Image Analyst 2016년 10월 22일

1 개 추천

Not sure what "is not correct" means. Perhaps you'd like to see the Mathworks demo on zooming an image, attached.
Or perhaps you want to use imresize() or imcrop().

댓글 수: 2

dear image Analyst i write the code for gray and it works but when i want to do the same with rgb images just with adding channel i don't get the last result as i expected
Looks like you've accepted Walter's answer so I assume you're all set now. Write back if that's not the case.

댓글을 달려면 로그인하십시오.

태그

질문:

2016년 10월 22일

댓글:

2016년 10월 23일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by