Using double instead of im2double for images?

12 Ansichten (letzte 30 Tage)
Sordin
Sordin am 1 Apr. 2017
Bearbeitet: Stephen23 am 1 Apr. 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.

Akzeptierte Antwort

Stephen23
Stephen23 am 1 Apr. 2017
Bearbeitet: Stephen23 am 1 Apr. 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])

Weitere Antworten (1)

Mohammad Anas
Mohammad Anas am 1 Apr. 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.

Kategorien

Mehr zu Convert Image Type finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by