image - 如何在 MATLAB 中的图像中绘制三角形?

标签 image matlab matrix triangular

我需要在已加载的图像中绘制一个三角形。三角形应如下所示:

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)组成。

最佳答案

您可以使用 TRIL 创建一个类似于问题中的矩阵和 ONES功能:

>> 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 indexB 中,将非零索引设置为 0。通过使用索引而不是乘法,您可以避免担心转换 AB 到相同的数据类型(在这种情况下需要执行乘法,因为 Adouble 类型,而 B 是类型uint8).

关于image - 如何在 MATLAB 中的图像中绘制三角形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1568678/

相关文章:

c - XGetImage() 中缺少鼠标指针

matlab - MATLAB 配置的修订控制

matlab - isequal() 和 == 用于比较矩阵无法正常工作 matlab

python - 如何在 numpy python 中创建相似度矩阵?

python - 乘以稀疏矩阵的列元素

python - 从字节变量设置 Kivy 图像

html - 在图像的 src 标签中使用来自 URL 的 Base64 字符串

html - 他们 Logo 上的谷歌技巧是什么?

matlab - disp(fprintf()) 打印 fprintf 和字符数。为什么?

Python 连接和堆叠多个矩阵