So I have got this image that I am trying to resize which I have already attached. The requirement for me is to resize the image without using the functions imresize() or immse() but use interp1(). And I have no clue where exactly to begin.

 Réponse acceptée

KSSV
KSSV le 8 Mai 2018

1 vote

I = imread('lighthouse.png') ;
N = 1000 ; % interp1 along row
[m,n,p] = size(I) ;
iwant = zeros(m,N,p) ;
xi = linspace(1,n,N) ;
for i = 1:m
for j = 1:p
T = interp1(1:n,double(I(i,:,j)),xi) ;
iwant(i,:,j) = T ;
end
end
iwant = uint8(iwant) ;
imshow(iwant)

3 commentaires

Quan Seah
Quan Seah le 8 Mai 2018
Thank you so much!
Quan Seah
Quan Seah le 8 Mai 2018
I realized that your code only interp1 along row, what if i want to interp1 along columns, since the code you showed me only changes the width not the length.
Image Analyst
Image Analyst le 8 Mai 2018
For each pixel you need to call it twice, once with the top and bottom neighbors, and once with the right and left neighbors.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by