簡體   English   中英

如何在MATLAB中在圖像中繪制三角形?

[英]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)組成。

您可以使用TRILONES函數創建問題中的矩陣:

>> 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.通過使用索引而不是乘法,您可以避免擔心將AB轉換為相同的數據類型(這將是必需的在這種情況下的乘法,因為Adouble類型而Buint8類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM