下面是我在Matlab中编写的一个函数。该功能正常工作但输出显示三个不同输出的不同图像。
function Img = power_Law(Img)
temp = Img;
[a,b]=size(Img);
C=0.2;
omega=0.2;
for i=1:a
for j=1:b
img(i,j)=C*power(temp(i,j),omega);
end
end
imshow(img);
end
我的问题是我错过了任何转换吗?为什么输出不是单个图像。 这是输出的链接。 https://www.dropbox.com/s/p6vuhzodk29qaul/image.png
答案 0 :(得分:0)
您会注意到,在Matlab和Octave中,对矩阵执行的操作与其元素上的循环相比要快得多。循环也会造成犯错的可能性。
假设Img
的大小为900x1200x3,则img
的大小为900x3600,因为[a,b]=size(img)
返回a = 900
,b = 3600
为Img
是三维数组。
然后正确的代码看起来像这样,注意它不会改变img2
function img2 = power_law(img, C, omega)
img2 = C * power(img, omega);
imshow(img2);
end