4

私は画像を生成しようとしています。

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))' に表示されています;..これを解決する方法を教えてもらえますか?

4

1 に答える 1

3

ほとんどの場合C1、タイプuint8です。あなたはそれを変換する必要があります、すなわち:

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

C1に変換しない場合はdoubleIタイプにもなりますuint8-必要なものが含まれず、log関数は機能しません。

于 2013-02-15T22:27:27.477 に答える