2014-09-06 357 views

回答

2

你可以通過索引來做到這一點。假設您的圖像存儲在im中,並且您已通過imread讀取它。假設你的圖像是彩色的,是uint8型的,只需將做到這一點:

im(10,10:12,1) = 0; 
im(10,10:12,2) = 0; 
im(10,10:12,3) = 255; 

這將在第10行,列10改變像素 - 12和修改他們的每一個顏色平面,使紅色通道0,綠色通道爲0,藍色通道爲255.這將有效地使這三個位置的像素變爲藍色。但是,如果您的圖像只是灰度和單個2D矩陣,則在執行上述操作之前,您需要創建顏色版本。這可以通過複製每個通道的每個圖像來完成。換句話說:

im = cat(3,im,im,im); 

然後,您可以使用im併爲任何希望的像素着色。


如果你想使這個量化的,你當然可以通過使用repmat

im(10,10:12,:) = repmat([0 0 255], 3, 1); 

這將實現與上述相同的結果。


一般情況下,如果你想對任何一個行和列位置的變量數量做到這一點,你可以這樣做:

im(row,col1:col2,:) = repmat([c1 c2 c3], col2 - col1 + 1, 1); 

row將是你要找的行因爲,col1col2將是您想要更改的開始和結束列,並且[c1 c2 c3]將是要將這些位置設置爲的RGB組件的元組。 c1是紅色組件,c2是綠色組件,c3分別是藍色組件。上面的代碼將獨立於你想要設置的列的數量,只要你不會超出圖像的範圍!