Why .^2 does not work as expected?

8 vues (au cours des 30 derniers jours)
Queila Martins
Queila Martins le 17 Juin 2016
Commenté : Queila Martins le 17 Juin 2016
Hi,
I'm doing some math calculations in a code. I noticed something strange in the code below:
a = imread('C:\tqPixels.png'); I = rgb2gray(a);
exp = I.^2
As tqPixels.png is an image with only 4 white pixels (all have 255 value), I thought that exp variable value would be each value powered to itself (255 * 255):
exp = [65025, 65025; 65025, 65025]
However, when I saw exp value in the results, it had the same values variable "I" had:
exp = [255, 255; 255, 255]
Sorry if this is very simple, but why .^2 does not work as it should?
I'm attaching the image and the code here for you to test. I really appreciate any suggestions on this.
a = imread('C:\tqPixels.png');
I = rgb2gray(a);
exp1 = I.^2;

Réponse acceptée

Roger Stafford
Roger Stafford le 17 Juin 2016
I think you need to convert I to ‘double’ before doing the exponentiation on it. As it is, I believe it is ‘uint8’ type and anything above 255 is set down to just 255. Do this:
exp1 = double(I).^2
  4 commentaires
Queila Martins
Queila Martins le 17 Juin 2016
That's true, Image Analyst (about variable's name). Thank you for pointing that :D
Also thank you Steven for the link. Very useful!!
Queila Martins
Queila Martins le 17 Juin 2016
Roger, it worked! Now it makes sense. Thank you so much!

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