【发布时间】:2020-07-02 04:04:10
【问题描述】:
我遇到以下问题: 我有黑白图像,我必须对其进行着色:图像中的每个白色“斑点”都代表一个对象的一个实例,我想用新颜色为每个对象着色,但是对于每个图像我想使用相同的颜色方案:
例如:
- 第一张图片:3 个对象 -> 使用的颜色:红色、绿色、黄色
- 第二张图片:2 个对象 -> 使用的颜色:红色、绿色
- 第三张图片:5 个对象 -> 使用的颜色:红色、绿色、黄色、粉色、橙色
我已经手动为几张图片上色以显示结果应该是什么样子:
必须着色的黑白蒙版
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 个对象的图像,现在颜色发生变化:橙色、黄色和绿色(我需要:橙色、粉红色和新颜色
【问题讨论】:
标签: python matplotlib colors image-segmentation colormap