以matlab繪出所載入之照片的光強度(明暗程度)

由於課業的需要,要將不同燈具照射桌面上,比較個別的差異

(明暗程度,照明範圍)。所以利用相機模擬人眼觀察並將所得的照片資訊匯入MATLAB,

照片的匯入我已經可行了,也可以將其轉成灰階影像(本來為彩色圖片,為了

只呈現明暗的強度所以轉成灰階),所得的影像矩陣卻不能用mesh指令繪出

立體圖形,不知道是哪裡出了問題?

以下是我的程式

clear all

img1= imread ('C:\Users\acer\Desktop\pitcure input matlab test.png');

%載入圖片

i=.2989*img1(:,:,1)+.5870*img1(:,:,2)+.1140*img1(:,:,3);

colormap(gray(256));

%轉成256灰階影像,此時是unit 8 的矩陣

mesh(i)

在這裡就出現錯誤資訊了,

Warning: CData must be double or single unless it is used only as a texture data

1.請問是因為我的影像矩陣式uint 8的關係嗎?

2.如果要轉成double的話,那要怎麼寫呢?

3.轉完後的矩陣所繪出的圖形能表現出明暗程度嗎?

由於matlab初學不久,麻煩回答的時候可以稍微講解一下可以讓我學嗎?

謝謝。

1 個解答

評分
  • 9 年前
    最佳解答

    Change the statement

    mesh(i)

    as

    mesh(double(i))

    or with the intensity but without wireframe your can use

    surf(double(i); shading interp;

    That would be OK!

還有問題?馬上發問,尋求解答。