Can SQRT be used on an RGB image with double precision?

5 vues (au cours des 30 derniers jours)
FJ
FJ le 6 Avr 2018
Commenté : Rik le 6 Avr 2018
I am trying to square root my RGB image but it keeps showing me a white output image.

Réponse acceptée

Rik
Rik le 6 Avr 2018
That is due to the way you display the image. You probably have a uint8 input with values from 0-255. sqrt then does its thing and computes the square root for each element, and converts it to a double. Then you try to use imshow, but now your image is a double, so imshow assumes your data is scaled from 0-1, instead of 0-255 (or 0-15.9687).
You should read the doc for instructions on how you can specify the range, or just scale the image yourself.
  2 commentaires
FJ
FJ le 6 Avr 2018
Modifié(e) : FJ le 6 Avr 2018
Thank you. I'll look into that. So you are saying that once an uint8 is converted into a double (and applied with operations), the values change and I need to scale back to see the original image(with operations applied)?
Rik
Rik le 6 Avr 2018
You could scale the image to 0-1 doubles with the line below before you calculate the root.
I2 = im2double(I);
Then you don't have to worry about imshow, but your absolute values will be a factor sqrt(255) lower.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Convert Image Type dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by