[英]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.