2
我需要在已加載的圖像中繪製三角形。三角形應該是這樣的:如何在MATLAB中的圖像中繪製三角形?
1 0 0 0 0 0
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
1 1 1 1 1 1
但我的主要問題是,我不知道我怎麼可以創建一個這樣的矩陣。我想把這個矩陣乘以一個圖像,圖像矩陣由3個參數(W,H,RGB)組成。
我需要在已加載的圖像中繪製三角形。三角形應該是這樣的:如何在MATLAB中的圖像中繪製三角形?
1 0 0 0 0 0
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
1 1 1 1 1 1
但我的主要問題是,我不知道我怎麼可以創建一個這樣的矩陣。我想把這個矩陣乘以一個圖像,圖像矩陣由3個參數(W,H,RGB)組成。
您可以通過使用TRIL和ONES功能創建像在你的問題中矩陣:
>> A = tril(ones(6))
A =
1 0 0 0 0 0
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 1 0 0
1 1 1 1 1 0
1 1 1 1 1 1
編輯:根據您在下面評論,這聽起來像你有一個3 d RGB圖像矩陣B
,並且您希望將B
的每個顏色平面乘以矩陣A
。這將得到將圖像的上三角部分(對應於A
中的所有零)設置爲黑色的最終結果。假設B
是一個6×6×3矩陣(即B
匹配那些A
的行和列),在這裏是使用索引一個溶液(和功能REPMAT)代替乘法:
>> B = randi([0 255],[6 6 3],'uint8'); % A random uint8 matrix as an example
>> B(repmat(~A,[1 1 3])) = 0; % Set upper triangular part to 0
>> B(:,:,1) % Take a peek at the first plane
ans =
8 0 0 0 0 0
143 251 0 0 0 0
225 40 123 0 0 0
171 219 30 74 0 0
48 165 150 157 149 0
94 96 57 67 27 5
對REPMAT的調用複製了A
的否定版本3次,使其具有與B
相同的尺寸。將結果用作logical index轉換爲B
,將非零索引設置爲0.通過使用索引而不是乘法,可以避免擔心將A
和B
轉換爲相同的數據類型(執行此操作所需的數據類型因爲A
的類型爲double
而B
的類型爲uint8
)。
下三角矩陣函數超出了homerolled解決方案。 – 2009-10-14 20:21:52
是的,的確如此。 +1 – 2009-10-14 20:25:06
謝謝你,這很好。我的問題是我想這個矩陣與矩陣包含圖像::>和矩陣包含圖像包含3參數(W,H,RGB) PLZ試試看看問題,然後幫我.. 謝謝 – 2009-10-16 16:50:14