【问题标题】:How to colour-code the objects in an image using MATLAB?如何使用 MATLAB 对图像中的对象进行颜色编码?
【发布时间】:2020-03-25 22:50:49
【问题描述】:

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

img = imread('lab5a.tif');
BW = imbinarize(img,graythresh(img));
figure; imshowpair(img,BW,'montage')
title ('Opening Operation on Image');
se = strel ('disk', 3);
rem = imclose(BW,se);
figure; imshow (rem, []);
title ('Removed Undesired Features');
CC = bwconncomp(rem);
L = labelmatrix(CC);
RGB = label2rgb(L, spring, 'c', 'shuffle');
figure; imshow(RGB, []);

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

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

【问题讨论】:

  • 你检查过你创建的变量了吗? CCL 有多大?描述您所做的任何调试都会有所帮助,但我猜它会将“对象”视为“背景”。

标签: image matlab label processing


【解决方案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}

你会得到这张图片:

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

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多