我遇到以下问题:我有黑白图像,必须对其进行着色:图像中的每个白色“斑点”都代表一个对象的实例,我想用一种新颜色为每个对象着色,但是我想为每个图像使用相同的颜色方案:
例如:
我手工绘制了几幅图像以显示结果的外观:
必须着色的黑白面具
2个对象,2种颜色:绿色,黄色
4个对象,4种颜色:绿色,黄色,红色,浅灰色
要自动执行,我已经尝试了方法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个对象,橙色和粉红色
另一张带有2个对象的图像,分别是橙色和粉红色
具有3个对象的图像,现在颜色改变:橙色,黄色和绿色(我需要:橙色,粉红色和新颜色
我遇到以下问题:我有黑白图像,必须将其着色:图像中的每个白色“ blob”代表一个对象的实例,我想用新的颜色为每个对象着色...] >
因为您正在生成随机颜色图,所以颜色不一致也就不足为奇了。
您想使用自己选择的颜色创建一个颜色图,并将该颜色图传递给每个图像,而不管存在的斑点数如何。但是请注意,默认情况下,色图被归一化为数据范围。由于数据范围根据找到的斑点数而变化,因此需要使用vmin=
和vmax
显式设置归一化。这是使用4个不同图像的演示: