2009-10-14 179 views
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)組成。

回答

9

您可以通過使用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相同的尺寸。將結果用作logical index轉換爲B,將非零索引設置爲0.通過使用索引而不是乘法,可以避免擔心將AB轉換爲相同的數據類型(執行此操作所需的數據類型因爲A的類型爲doubleB的類型爲uint8)。

+1

下三角矩陣函數超出了homerolled解決方案。 – 2009-10-14 20:21:52

+0

是的,的確如此。 +1 – 2009-10-14 20:25:06

+0

謝謝你,這很好。我的問題是我想這個矩陣與矩陣包含圖像::>和矩陣包含圖像包含3參數(W,H,RGB) PLZ試試看看問題,然後幫我.. 謝謝 – 2009-10-16 16:50:14