我有一個JPEG圖像,我想更改圖像中3個相鄰像素的顏色,例如藍色。假設給出這些像素的位置,如(10,10), (10,11), (10,12)
。在MATLAB中給出像素位置的像素顏色更改
有關我們如何在MATLAB中做到這一點的任何想法?
我有一個JPEG圖像,我想更改圖像中3個相鄰像素的顏色,例如藍色。假設給出這些像素的位置,如(10,10), (10,11), (10,12)
。在MATLAB中給出像素位置的像素顏色更改
有關我們如何在MATLAB中做到這一點的任何想法?
你可以通過索引來做到這一點。假設您的圖像存儲在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
將是你要找的行因爲,col1
和col2
將是您想要更改的開始和結束列,並且[c1 c2 c3]
將是要將這些位置設置爲的RGB組件的元組。 c1
是紅色組件,c2
是綠色組件,c3
分別是藍色組件。上面的代碼將獨立於你想要設置的列的數量,只要你不會超出圖像的範圍!