【问题标题】:Color discrimination of matrix connected components矩阵连通分量的颜色辨别
【发布时间】:2018-08-30 11:13:43
【问题描述】:

在 Matlab 中,我有一个矩阵 M,比如说:

M=[0 0 2 2 0 0
   0 0 2 2 0 3
   1 1 2 2 3 3
   1 1 0 0 0 0
   1 1 0 0 0 0];

带有一些标记为 1,2 和 3 的连接组件。 我需要通过使用不同的颜色(例如红色、绿色和蓝色)来区分组件(1、2 和 3)。任何帮助做到这一点。提前致谢

【问题讨论】:

  • 我不明白你想要达到什么目的。能否请您提供一张图片,说明您得到了什么,以及您希望它是什么?
  • 如果标记为 1,2,3 的矩阵元素代表像素集合,我如何将集合 1 涂成红色,将集合 2 涂成绿色,将集合 3 涂成蓝色? (参见图连接组件主题)
  • 那么,image(M+1), colormap([1 1 1; 1 0 0; 0 1 0; 0 0 1])?
  • @Luis Mendo。谢谢路易斯。效果很好!
  • 很高兴它成功了。添加为答案

标签: matlab matrix colors


【解决方案1】:

您可以使用imagecolormap。从前者的文档中,

image(C) 将数组C 中的数据显示为图像。 C的每个元素 指定图像 1 个像素的颜色。

C是一个二维m×n矩阵时,C的元素被用作 索引到当前colormap 以确定颜色。对于'direct'CDataMapping(默认), C 中的值被视为颜色图索引(如果 double,则基于 1,基于 0 如果uint8uint16)。

因此,您只需调用image(M+1),使值从1开始;然后定义一个合适的颜色图。颜色图是一个 3 列矩阵,其中每一行根据其 RGB 分量定义一种颜色。

M = [0 0 2 2 0 0;0 0 2 2 0 3;1 1 2 2 3 3;1 1 0 0 0 0;1 1 0 0 0 0];
imagesc(M+1)       % add 1 so that values start at 1, not 0
cmap = [1 1 1;     % white
        .7 0 0;    % dark red
        0 .7 0;    % dark green
        0 0 .7];   % dark blue
colormap(cmap)     % set colormap
axis tight         % avoid white space around the values
axis equal         % aspect ratio 1:1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多