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

83 visualizaciones (últimos 30 días)
Graham Boag
Graham Boag el 25 de Feb. de 2011
Comentada: image-pro el 17 de Abr. de 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 comentarios
Deepshikha Bhargava
Deepshikha Bhargava el 3 de Dic. de 2018
did you find the solution?
Image Analyst
Image Analyst el 3 de Dic. de 2018
Yes. Scroll down the page and see the Answer with the green check mark, meaning he accepted that answer.

Iniciar sesión para comentar.

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 25 de Feb. de 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 comentarios
Graham Boag
Graham Boag el 1 de Mzo. de 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 el 1 de Mzo. de 2011
I got it, sorry, nevermind!
imwrite(New_Image, 'new.tif')
seems to work! Thanks again for all your help with this problem Sean!

Iniciar sesión para comentar.

Más respuestas (4)

Sean de Wolski
Sean de Wolski el 25 de Feb. de 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 comentarios
Graham Boag
Graham Boag el 25 de Feb. de 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 el 25 de Feb. de 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

Iniciar sesión para comentar.


pooja chandrabose
pooja chandrabose el 25 de En. de 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 el 16 de Abr. de 2022
did you get the answer please tell me the code?
  1 comentario
Image Analyst
Image Analyst el 16 de Abr. de 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]);

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 16 de Abr. de 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 comentarios
Bruno Luong
Bruno Luong el 16 de Abr. de 2022
Because imresize requires image processing toolbox.
image-pro
image-pro el 17 de Abr. de 2022
i want to know how to apply newton divided difference interpolation in image

Iniciar sesión para comentar.

Categorías

Más información sobre Geometric Transformation and Image Registration en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by