'uint8'类型的输入参数的未定义函数'log'

时间:2013-02-15 21:58:20

标签: matlab input arguments undefined

我一直在尝试生成图片。

C1 = imread(InputImage);
NumberOfGrayLevels=32;
I= 0.299*C1(:,:,1)+0.587*C1(:,:,2)+0.114*C1(:,:,3);
C = 0;
I=(C*log(I+1))';
new=uint8(mat2gray(I)*(NumberOfGrayLevels-1));
[m,n]= size(new);
rgb = zeros(m,n,3);
rgb(:,:,1) = new;
rgb(:,:,2) = rgb(:,:,1);
rgb(:,:,3) = rgb(:,:,2);
new = rgb/256;
imshow(new,[]);

no9=figure;
image(new);

错误显示在I =(C * log(I + 1))'; ..你能告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

最有可能C1属于uint8类型。你应该转换它,即:

C1 = imread(InputImage);
C1 = double(C1);
NumberOfGrayLevels = 32;
I = 0.299*C1(:,:,1) + 0.587*C1(:,:,2) + 0.114*C1(:,:,3);
.....

如果您未将C1转换为double,则I也将属于uint8类型 - 它不会包含您想要的内容和log函数无法使用它。