如何为图像中的对象分别上色,颜色不同>>

问题描述 投票:2回答:1

我遇到以下问题:我有黑白图像,必须对其进行着色:图像中的每个白色“斑点”都代表一个对象的实例,我想用一种新颜色为每个对象着色,但是我想为每个图像使用相同的颜色方案:

例如:

  • 第一张图像:3个对象->使用的颜色:红色,绿色,黄色
  • 第二张图像:2个对象->使用的颜色:红色,绿色
  • 第三个图像:5个对象->使用的颜色:红色,绿色,黄色,粉红色,橙色
  • 我手工绘制了几幅图像以显示结果的外观:

必须着色的黑白面具

image

2个对象,2种颜色:绿色,黄色

image

4个对象,4种颜色:绿色,黄色,红色,浅灰色

image

要自动执行,我已经尝试了方法here

import scipy
from scipy import ndimage
import matplotlib.pyplot as plt
import matplotlib
from random import random

colors = [(1,1,1)] + [(random(),random(),random()) for i in xrange(255)]
new_map = matplotlib.colors.LinearSegmentedColormap.from_list('new_map', colors, N=256)

im = scipy.misc.imread('blobs.jpg',flatten=1)
blobs, number_of_blobs = ndimage.label(im)

plt.imshow(blobs, cmap=new_map)
plt.imsave('jj2.png',blobs, cmap=new_map)
plt.show()

问题是,如果我在图像上运行,对象的颜色会根据每个图像中有多少个对象而有不同的颜色:

例如:

  • 第一张图像:3个对象->使用的颜色:红色,绿色,黄色

  • 第二张图像:2个对象->使用的颜色:橙色,黄色

  • 第三张图像:5个对象->使用的颜色:红色,橙色,绿色,柠檬绿,黄色

  • 第四个图像:3个对象->使用的颜色:红色,绿色,黄色

  • 这里有一些图片可以使第三张图像的颜色看起来不正确:

2个对象,橙色和粉红色

image

另一张带有2个对象的图像,分别是橙色和粉红色

image

具有3个对象的图像,现在颜色改变:橙色,黄色和绿色(我需要:橙色,粉红色和新颜色

image

我遇到以下问题:我有黑白图像,必须将其着色:图像中的每个白色“ blob”代表一个对象的实例,我想用新的颜色为每个对象着色...] >

python matplotlib colors image-segmentation colormap
1个回答
0
投票

因为您正在生成随机颜色图,所以颜色不一致也就不足为奇了。

您想使用自己选择的颜色创建一个颜色图,并将该颜色图传递给每个图像,而不管存在的斑点数如何。但是请注意,默认情况下,色图被归一化为数据范围。由于数据范围根据找到的斑点数而变化,因此需要使用vmin=vmax显式设置归一化。这是使用4个不同图像的演示:

© www.soinside.com 2019 - 2024. All rights reserved.