我想将256 * 256矩阵类型的uint8转换为256 * 256类型的double类型,但是当我使用im2double()时,它给了我一个类型为double的1 * 1矩阵。
我想对我的图像进行伽玛变换,因为我需要使用幂函数,这反过来要求我使用double类型的矩阵,因为用户将输入的gamma值将是double类型和幂函数的值表示它可以在矩阵和标量都是相同类型时运行,即双重
代码如下:
b=imread('cameraman.tif');
[m,n] = size(b);
c=input('enter value of c');
gamma=input('enter value of gamma');
I2 = im2double(b);
for i=1:m
for j=1:n
I2=c*power(I2(i,j),gamma);
end
end
imshow(I2,[]);

答案 0 :(得分:0)
请勿使用im2double
,您的矩阵b
就是[256 x 256]
矩阵。只需使用double(b)
,或作为一个班轮:b=double(imread('cameraman.tif'));
你最有可能改进for
循环(通过完全删除它以支持向量化你的方程式),使用bsxfun
:
I2 = c*bsxfun(@power, b, gamma);
就像事后的想法一样:
I2 = c*b.^gamma;
可能有用,但我没有测试过。