在matlab R2014a中应用于256 * 256矩阵时,im2double给出1 * 1矩阵

时间:2015-09-02 11:48:07

标签: matlab

我想将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,[]);




1 个答案:

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

可能有用,但我没有测试过。