我正在尝试编写代码以将伽玛函数应用于图像。
根据我的理解(希望我没错),你得到一个像素并将其提升到一定值。在这种情况下,我选择了0.5(因为它必须是低于1的值)。
我写的代码粘贴在下面:
memorial_image = hdrread('hw1_memorial.hdr');
[M, N] = size(memorial_image);
for i = 1:M
for j= 1:N
new_image(i,j) = memorial_image(i,j) ^ 0.5;
end
end
imshow(new_image)
给出:
所以问题是当我尝试向用户显示图像时,它不会只显示一张图片,但在这种情况下,其中三张图片的色调不同。为什么会这样?
答案 0 :(得分:0)
这是因为memorial_image
或'hw1_memorial.hdr'
具有代表RGB的三维。当您使用[M, N] = size(memorial_image);
时,第三个维度将与第二个维度相乘。看看这个较小的例子来理解:
>> a= rand(2,2,3);
>> size(a)
ans =
2 2 3
>> [m n]=size(a)
m =
2
n =
6
顺便说一句,你的代码可以被矢量化并写成一行:
new_image = memorial_image .^ 0.5;