2012-12-19 52 views

回答

10

在MATLAB中圖像是矩陣(二維如果灰度,3D如果着色)。

您可以使用x(i,j)訪問灰度圖像中位置爲(i,j)的像素。

如果圖像有顏色,則可以使用x(i,j,:)分別訪問3矢量中的r,g,b值。如果你需要個人頻道,那麼你可以使用紅色爲x(i,j,1)

你可以閱讀this page瞭解更多。

+0

感謝您的回覆。我如何檢索圖像索引?正如我使用以下命令:'p1 = I(0,0);',我得到了: '???試圖訪問I(0,0);索引必須是一個正整數或邏輯「 」。 – Simplicity

+0

索引從1開始並轉到該維度的長度。這是不是像在C. – petrichor

+0

明白你的意思。但是,是不是有一些更實際的方法來獲得'所有'的像素值,而不需要索引索引?特別是正如你知道有些時候你可能有一個像素數量很大的圖像,並且會非常耗時地訪問每個像素。你怎麼看?謝謝 – Simplicity

1

您可以使用reshape提取圖像的所有像素值成矢量與像素值:

frame = imread('picture.jpg'); 
frame_size = size(frame); 
allpixels = reshape(frame, frame_size(1)*frame_size(2), frame_size(3)) 

當你想向量化你的Matlab代碼這可能是有用的(以避免for循環,遍歷每個像素)。要返回原來的圖像表示:

frame2 = reshape(allpixels, frame_size); 
+0

如何將「查詢」的座標轉換爲像素?例如,我想知道像素(1,1)和(20,20)處的值。我如何編寫它? –

0

獲得在pixel(1,1)我們乾脆寫image(1,1)值。