[英]How can I draw a triangle in an image in 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)組成。
>> 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
相同的尺寸。 結果用作B
的邏輯索引 ,將非零索引設置為0.通過使用索引而不是乘法,您可以避免擔心將A
和B
轉換為相同的數據類型(這將是必需的在這種情況下的乘法,因為A
是double
類型而B
是uint8
類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.