如果手中仅有一张灰度图,能否给它上色呢?根据图像处理的相关知识可以知道,彩色图像转为灰度图像这个过程(伪彩色处理过程)是不可逆的,也就是说手中的这个灰度图不可能被某种算法无损的恢复为彩色图像,如下图:

然而,查阅资料发现相关的介绍非常少,仅仅找到一些伪彩色处理的基本概念,尽管opencv和matplotlib等都提供了伪彩色的功能,但是也很难找到其实现的细节。所以自己根据博客相关知识进行了整理,这种上色方式是为了给宇智波鼬的眼睛上色好看才选择的!

本次记录包含以下三个部分:

(1)R、G、B值与颜色的对应关系

(2)python实现上色方案

(3)上色结果分析

如何上色是完全按照个人喜好的,我选择的颜色值仅仅是一种参考。

1、R、G、B值与颜色的对应关系

我们知道,R、G、B值和颜色是具有对应关系的,比如下面展示的表格中【1】:当R=255,G=255,B=0时,颜色为“Yellow1”(第一行,三个值分别表示RGB,后面以# 开头表示16进制格式):

对于任何一种想要的颜色,都可以通过查阅【1】中提供的表选择到。所以上色过程就变为查表过程,通过给灰度图的不同位置或者不同灰度值选择不同的R、G和B值,就实现了上色。

2、python实现上色方案

按照我的理解,灰度图转为彩色图的核心在于如何给每个像素赋RGB值,如何赋值即对应一种规则。我根据操作发现按照亮度值(灰度值大小)区间的不同,来区分不同颜色是可行的。

通过查表,决定使用红色red、黑色black、粉色pink来给图像上色,对应的rgb值如下:

color_dict = {"black": [0, 0, 0],

"red": [238, 0, 0],

"pink": [255, 192, 203]}

决定颜色后,需要将灰度值分为三个区间(分几个区间表示自己想要几种颜色),分别为(0,15)、(15,140)以及(140,255),三个区间分别设置为black、red、pink,如下图:

上图横坐标表示像素值的大小,纵坐标表示对应的颜色值;python实现的代码如下:

def gray2rgb(gray, color_dict):

"""

convert gray image into RGB image

:param gray: single channel image with numpy type

:param color_dict: color map

:return: rgb image

"""

# 1:创建新图像容器

rgb_image = np.zeros(shape=(*gray.shape, 3))

# 2: 遍历每个像素点

for i in range(rgb_image.shape[0]):

for j in range(rgb_image.shape[1]):

# 3:对不同的灰度值选择不同的颜色

if gray[i, j] < 15:

rgb_image[i, j, :] = color_dict["black"]

elif 140 >= gray[i, j] >= 15:

rgb_image[i, j, :] = color_dict["red"]

else:

rgb_image[i, j, :] = color_dict["pink"]

return rgb_image.astype(np.uint8)

上色结果如下:

3、上色结果分析

是如何确定3个区间以及3个区间的端点值呢?

我是通过图像直方图确定的,通过统计0-255中每个值出现的次数,发现像素值普遍集中在0-120之间;尤其是像素值在0-15之间更是出现了峰值,这个区间肯定就是背景了!所以将这个范围的像素赋值为黑色;在15-140之间的像素分布比较均匀,对应的应该是眼球,设置为白色;对于大于140的区域,几乎没有多少像素点,随便选择一个无关紧要的颜色即可:

按照灰度值分层是很常见的操作,目前深度学习也有很多图像上色方面的研究,以后会做进一步研究。

参考:

python不带颜色的图形_用python给黑白图像上色相关推荐

  1. python不带颜色的图形_如何使用Matplotlib设置图形背景颜色的不透明度 - python

    我一直在玩Matplotlib,无法弄清楚如何更改图形的背景颜色,或者如何使背景完全透明. 参考方案 如果只希望图形和轴的整个背景都是透明的,则在使用transparent=True保存图形时,只需指 ...

  2. python不带颜色的图形_python – 为什么seaborn pairplot中的kde子图中没有显示颜色?...

    使用参数创建seaborn pairplot sns.pairplot(iris.drop("Id", axis=1), diag_kind="kde", hu ...

  3. python不带颜色的图形_python-Matplotlib添加基于现有颜色系列的图例

    您可以使用带有基于色图和散点图归一化颜色的空图来创建图例手柄. import pandas as pd import numpy as np; np.random.seed(1) import mat ...

  4. python怎么设置颜色深浅变化_机器学习中减弱不同图像数据色调及颜色深浅差异...

    关键词:消除不同图像数据色调差异/消除颜色深浅差异/病理/机器学习/深度学习/人工智能 机器学习训练图像数据时可能会因为图像数据之间的颜色深浅,色调等影响训练和预测结果,本方法可以减弱颜色深浅/色调不 ...

  5. python turtle画有趣的图形_使用python Turtle库画出“精美碎花小清新风格树”

    Turtle库手册可以查询查询 使用Turtle画树,看了一下网上的代码,基本上核心的方法是使用递归:其次通过递归传参更笔的粗细从而改变绘制时的线段,更改树的躯干大小,在遍历到最后一个节点时,更改笔的 ...

  6. python 绘制带阴影的图形

    python 绘制带阴影的图形 设置图形大小 import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=[4,4]) ...

  7. python处理视频动漫化_用Python实现抖音上的“人像动漫化”特效,原来这么简单...

    原标题:用Python实现抖音上的"人像动漫化"特效,原来这么简单 作者 | 黄伟呢 来源 | 数据分析与统计学之美 前几天,女友拉着我和她玩儿抖音,就是这个 人像动漫化的操作,顿 ...

  8. python黑白图片上色_百度AI攻略:黑白图像上色

    [使用攻略][评测报告][黑白图像上色] 1.功能描述: 百度智能识别黑白图像内容并填充色彩,使黑白图像变得鲜活,让老照片重新焕发活力.本文针对黑白图像上色功能开发了使用攻略,提供全套代码,并与其他厂 ...

  9. python不解压直接提取文件_用python不解压的读取bz2文件和gz文件

    当一个文档特别大的时候(比如wikidata等知识库的dump),往往会采用bz2或者gz对其进行压缩,方便下载,同时减少存储空间(bz2压缩率更高一些). 那么,如何不用解压也能读取原来的文档呢? ...

  10. python自带的文档生成工具,Python文档生成工具pydoc

    在Python中有很多很好的工具来生成字符串文档(docstring),比如说: epydoc.doxygen.sphinx,但始终觉得pydoc还是不错的工具,用法非常简单,功能也算不错,本文主要介 ...

最新文章

  1. JAVA实现从上往下打印二叉树(《剑指offer》)
  2. python numpy创建数组方法汇总array() zeros() zeros_like() ones() ones_like() empty() empty_like() arange eyes
  3. iOS开发:iPhone6、6 plus适配
  4. mybatis框架--学习笔记(下)
  5. Java 压缩解压字符串(支持中文)
  6. mysql_根据身份证号识别性别、年龄、所在省份
  7. 7-55 求整数序列中出现次数最多的数 (15 分)
  8. 全局变量求平均分最高分最低分_打分函数trimmean,去掉最高最低分求平均分,用它就对了...
  9. 如何使用 Buildah 构建容器镜像
  10. C语言——指针篇(四)多维数组和多维指针(内含数组指针和指针数组笔记)
  11. 南华大学ACM队2021年7.14训练赛题解
  12. 初中计算机室教学计划,初中信息技术教学计划
  13. 下载3GPP协议的方法
  14. 【私藏】开发APP必须知道的API集合
  15. 学习SpringBoot:知乎超赞回答:Java如何进阶?分享面经
  16. 数据结构第一次上机实验报告
  17. python中的set是什么意思_python中的set是什么
  18. 太太太长了,不行,我受不鸟了
  19. 【框架大全】2022年可用QQ机器人框架价格表
  20. Moonlight串流Steam闪屏的小伙伴们,解决方法见本文。

热门文章

  1. Hbase RegionServer 宕机
  2. Spring Cloud(二):服务注册与发现 Eureka【Finchley 版】
  3. SEO要领:8文章主持技巧(两)
  4. 设计模式(外观模式)
  5. 解决Myeclipse10 Building Workspace速度慢的问题
  6. H3C VLAN同步MVRP实验
  7. HCIE Security 单包攻击防范 备考笔记(幕布)
  8. NP、OSPF监测调试
  9. 动态路由协议的基本配置---RIP
  10. Comparable与Comparator