python - 将 RGB 热图图像转换为灰度热图的正确方法

标签 python colors rgb

我正在尝试将 RGB 热图图像转换为灰度热图图像。首先我认为这是一个简单的rgb 到灰度转换。但事实并非如此。

例如,蓝色可能代表软的东西,红色可能代表硬的东西。

RGB heatmap

使用常用的简单rgb到灰度转换方法,我发现红色和蓝色已经转换为保存灰色,尽管它们的表示性质非常不同。

enter image description here

但是我想要这样的蓝色是深灰色,红色是亮灰色

enter image description here

我已经搜索了很多。不幸的是我没有找到(或者也许我无法理解)。在阅读了一些关于 RGB 颜色模型的文章后,我找到了一种生成灰度图像的方法。我的代码是

import colorsys
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

img = mpimg.imread('input_image/abnormal_hi_res.png')
img = img[ : , : , 0:3] # keep only r, g, b channels  

new_image = np.zeros((img.shape[0], img.shape[1]))

for y_pos in range(img.shape[0]):
    for x_pos in range (img.shape[1]):

        color = img[y_pos, x_pos]
        r,g,b = color
        h, _, _ = colorsys.rgb_to_hls(r, g, b) 
        new_image[y_pos, x_pos] = 1.0 - h

plt.imshow(new_image, cmap='gray')
plt.show()

但我相信应该存在一种经过验证的数学支持的好方法。
请帮我找出解决这个问题的正确方法。

最佳答案

您可以点击这些链接。他们对热图和灰度有一些很好的注释

https://docs.opencv.org/3.1.0/de/d25/imgproc_color_conversions.html https://matplotlib.org/users/colormaps.html

*更新

首先,您需要将 BGR 图像转换为 LUV,然后将其转换为灰度图像。使用opencv。

opencv中BGR转换为LUV的代码。

灰色 = cv2.cvtColor(img, cv2.COLOR_BGR2LUV)

I think it what you are looking for

关于python - 将 RGB 热图图像转换为灰度热图的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53827622/

相关文章:

text - 使用 Swift 更改文本颜色

php - PHP 函数 : brightness(); making RGB colors darker/brighter 需要帮助

python - 如何使用 Python 提取 ODT(OpenDocumentText) 格式的表格、文本和图片?

python - 如何将 Teradata 中的精确格式表导出到 Excel?

python - 使用最小二乘法进行颜色校正

android listview 交替行颜色但默认光标选择

使用 stm32f429-discovery LTDC 控制 WVGA 显示器

python - 如何将 RGB PIL 图像转换为具有 3 个 channel 的 numpy 数组?

python - OptionParser 是否与 Sphinx 冲突?

python - 掩码二维 numpy 数组