MATLAB: Grayscale Picture Linearizing with for loop doesnt work

grayscaleimagelinearizeloopMATLAB

[m,n] = size(grey);
y = 2;
pens= zeroes(m,n);
for i = 1:m
for j = 1:n
pens(i,j) = floor(255*(power(grey(i,j)/255, y)));
end
end
imshow(pens);
For that grey is a grayscale picture (M x N matrix with gray values) this should be a perfectly working code. but it doesnt and i dont get why. If i try numbers between 0 and 255 for "grey(i,j)" as a single command i get the right values, but if i use it in the loop, i only get 0 or 255 as return in pens… does anyone know where the problem here lays?

Best Answer

pens(i,j) = floor(255*(power(double(grey(i,j))/255, y)));
and at the end,
imshow(uint8(pens));