我如何指定彩虹配色方案应如何转换为灰度

小原克也

我有彩虹配色方案的 CFD 图像,如下所示。(1.Original)
我希望 python 将此配色方案转换为灰度。但是,转换后的灰度(image2)不是我想要的(从黑色到白色的线性渐变)(image3)。
谁能告诉我如何将原始图像(图片1)转换为图片3?在此处输入图片说明

存在的重要性欧内斯特

正如评论中所说,这是一项不平凡的任务,因为原始图像中有两种不同的颜色:“彩虹”一种,从蓝色变为红色,灰度一种,即线条和数字为黑色,有些图像中的区域是灰色的。

假设您知道生成原始图像的颜色图,您可以执行以下操作,其中使用了我在此答案中提供的部分代码:How to decode color mapping in matplotlib's Colormap?
在这里,我假设它是 jet 颜色图。

import numpy as np
import matplotlib.colors
import matplotlib.pyplot as plt

image = plt.imread("data/jetcolimage.png")
print image.shape, image.max()

r = np.linspace(0,1, 256)
norm = matplotlib.colors.Normalize(0,1)
cmap = plt.cm.jet
mapvals = cmap(norm(r))[:,:3]

def get_value_from_cm(color):
    color=matplotlib.colors.to_rgb(color)
    #if color is already gray scale, dont change it
    if np.std(color) < 0.1:
        return np.mean(color)
    #otherwise return value from colormap
    distance = np.sum((mapvals - color)**2, axis=1)
    return r[np.argmin(distance)]

newim = np.zeros_like(image)
for i in range(image.shape[0]):
    for j in range(image.shape[1]):
        c = image[i,j,:3]
        newim[i,j] =  get_value_from_cm(c)


fig, (ax,ax2) = plt.subplots(ncols=2)
ax.imshow(image)
ax2.imshow(newim, cmap="gray")

ax.axis("off")
ax2.axis("off")
plt.show()

在此处输入图片说明

可以看出,剩下的问题是如何处理既不是灰度也不是颜色图一部分的值。这些来自原始图像的抗锯齿,可能会显示为白色。

有关从一种颜色图更改为另一种颜色图的方法,请参阅如何使用 Python 更改轮廓(从非 Python 中获得)中的颜色?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章