Using double instead of im2double for images?

22 visualizaciones (últimos 30 días)
Sordin
Sordin el 1 de Abr. de 2017
Editada: Stephen23 el 1 de Abr. de 2017
I want to convert an input image into floating point, so that interpolation using interp2 will be possible. I want to achieve this without using the Image Processing Toolbox and without the im2double function. So I tried the syntax I=double(I), however, the resulting image looked very different than the original.
Here is a comparison of the resulting images using im2double(I) and double(I) respectively:
What is happening here? It looks like the double(I) code eliminates the higher frequencies from the spectrum of the image:
When I plot double(I) using imagesc instead of imshow I get the right image displayed, but the spectrum is still shrunken.
So, how can I implement what im2double does without using the pre-defined function? Any explanation is greatly appreciated.

Respuesta aceptada

Stephen23
Stephen23 el 1 de Abr. de 2017
Editada: Stephen23 el 1 de Abr. de 2017
"What is happening here?"
You input image is of class uint8, which means its values are from [0-255]. When you call double, you get the same range of values [0-255]. In contrast calling im2double scales the output to [0-1] (have a look in the variable viewer, and you will see that their output values are different).
imshow by default assumes that its inputs are [0-1]. So when you give it data [0-255] all of the values above 1 are shown as white. There are two easy solutions:
  1. scale the data yourself: out = double(inp)/255
  2. tell imshow the range to use: imshow(inp,[0,255])

Más respuestas (1)

Mohammad Anas
Mohammad Anas el 1 de Abr. de 2017
From your question, I can guess the solution to your problem is very simple. You probably may have to scale back the resulting image by multiplying with a factor of 255 in order to see the same image that would result by using im2double. Hope that helps.

Categorías

Más información sobre Convert Image Type 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