2D Interpolation (Linear and spline) of a greyscale image

34 vues (au cours des 30 derniers jours)
Graham Boag
Graham Boag le 25 Fév 2011
Commenté : image-pro le 17 Avr 2022
Hi Guys,
I have a grey scale image (shown below):
http://www.qfpost.com/download.do?get=f8295c24e09fe632b90a1d09ae5ac69a
Which I wish to interpolate to give 10 times the number of pixels - This is so I can find the edge of the beam when using a white-black intensity graph across the image as the edge is not exactly on a pixel - after carrying out a Canny edge detection.
The following code:
ZI = interp2(X,Y,Z,XI,YI,method)
seems to be the code I require where method will be 'linear' etc, however, I am not sure what the values X,Y,Z,XI and YI should be.
I guess that Z is my image, and the X and Y are co-ordinates of some kind but how would I determine then? I think it has something to do with meshgrids but I do not know very much about such techniques.
Any help would be much appreciated! Thanks, Graham
  4 commentaires
Deepshikha Bhargava
Deepshikha Bhargava le 3 Déc 2018
did you find the solution?
Image Analyst
Image Analyst le 3 Déc 2018
Yes. Scroll down the page and see the Answer with the green check mark, meaning he accepted that answer.

Connectez-vous pour commenter.

Réponse acceptée

Sean de Wolski
Sean de Wolski le 25 Fév 2011
Z is your image. You'll want to convert it to double for the interpolation and then back to uint8 or whatever other class after:
I = your_image;
class_of_I = class(I);
[x y] = meshgrid(1:256);
[xi yi] = meshgrid(1:0.1:256);
class_of_I
New_Image = cast(interp2(x,y,double(I),xi,yi,'linear'),class_of_I);
  9 commentaires
Graham Boag
Graham Boag le 1 Mar 2011
It does show me the new_image but also it says:
Warning: Image is too big to fit on screen; displaying at 25%
> In imuitools\private\initSize at 73
In imshow at 262
Is there a way I can save the full image to avoid the warning?
Graham Boag
Graham Boag le 1 Mar 2011
I got it, sorry, nevermind!
imwrite(New_Image, 'new.tif')
seems to work! Thanks again for all your help with this problem Sean!

Connectez-vous pour commenter.

Plus de réponses (4)

Sean de Wolski
Sean de Wolski le 25 Fév 2011
X,Y are the results of:
[X Y] = meshgrid(1:256)
Xi, Yi are the locations that you want an interpolated value at, for your example:
[Xi Yi] = meshgrid(1:0.1:256);
%SCd
  3 commentaires
Graham Boag
Graham Boag le 25 Fév 2011
I seem to get the following error when I type my code:
ZI = interp2(X,Y,Z,Xi,Yi)
??? Error using ==> times
Integers can only be combined with integers of the same
class, or scalar doubles.
Error in ==> interp2>linear at 354
F = ( arg3(ndx).*(onemt) + arg3(ndx+1).*t ).*(1-s)
+ ...
Error in ==> interp2 at 220
zi = linear(ExtrapVal,x,y,z,xi,yi);
Graham Boag
Graham Boag le 25 Fév 2011
Sorry the above answer is when i typed a random value for Z. If I type:
Z = peaks(X,Y);
It seems to run for ages..then i type imshow(ZI) and I get a message saying the image is too big to fit on screen. Have I run the method correctly? Sorry If this is not so clear

Connectez-vous pour commenter.


pooja chandrabose
pooja chandrabose le 25 Jan 2018
I need to know how to apply interpolation in a image (biliner,cubic, convolution)plz I need this info as soon as possible

image-pro
image-pro le 16 Avr 2022
did you get the answer please tell me the code?
  1 commentaire
Image Analyst
Image Analyst le 16 Avr 2022
I don't know why all the answers were using interp2 and meshgrid when you can do it simply with imresize()
outputImage = imresize(inputImage, [numDesiredRows, numDesiredColumns]);

Connectez-vous pour commenter.


Image Analyst
Image Analyst le 16 Avr 2022
I don't know why all the answers were using interp2 and meshgrid when you can do it simply with imresize()
outputImage = imresize(inputImage, [numDesiredRows, numDesiredColumns]);
imresize() has several interpolation schemes you can choose from.
  2 commentaires
Bruno Luong
Bruno Luong le 16 Avr 2022
Because imresize requires image processing toolbox.
image-pro
image-pro le 17 Avr 2022
i want to know how to apply newton divided difference interpolation in image

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by