如何使用MATLAB对图像中的对象进行颜色编码?

时间:2020-03-25 22:50:49

标签: image matlab label processing

我有一个图像:Image,我对其进行了分段以接收二进制图像。我想用不同的颜色标记图像中的每个对象。到目前为止,我有以下代码:

listen 8080 deferred;

    client_max_body_size 500M;

    location /invocations {
      proxy_pass http://localhost:8501/v1/models/<modelname>:predict;
    }

    location /ping {
      return 200 "OK";
    }

输出为以下图像:Output,这不是我想要的。它为背景着色,并且对象为白色。我只希望这些物体具有不同的颜色。

任何形式的帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

在您的示例中,图像的背景和前景与您认为的相反。 matlab命令的默认设置是假定较高值的像素(白色)是前景或感兴趣的项目,而较低值的像素(黑色)是背景。因此,当您运行示例代码时,对象CC仅包含1个对象(图像中为蓝色的“背景”):

CC = 

  struct with fields:

    Connectivity: 8
       ImageSize: [256 256]
      NumObjects: 1
    PixelIdxList: {[43341×1 double]}

解决此问题的任何简便方法都只是使用imcomplement命令反转清理后的图像。将此行添加到您的代码中:

% invert the image so that the background is black
rem = imcomplement(rem);

现在CC结构包含62个已标识的对象:

CC = 

  struct with fields:

    Connectivity: 8
       ImageSize: [256 256]
      NumObjects: 62
    PixelIdxList: {1×62 cell}

您将获得此图像:

Colored Items

如果要更改用于项目的颜色,请查看colormap命令的label2rgb属性。