繁体   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