imshow多次显示相同的图片

时间:2017-09-30 19:00:05

标签: matlab image-processing

我正在尝试编写代码以将伽玛函数应用于图像。

Original Image

Original Image

根据我的理解(希望我没错),你得到一个像素并将其提升到一定值。在这种情况下,我选择了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)

给出:

New image - result of the code above

所以问题是当我尝试向用户显示图像时,它不会只显示一张图片,但在这种情况下,其中三张图片的色调不同。为什么会这样?

1 个答案:

答案 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;