Python灰度图像彩色化

article/2025/8/30 1:23:27
1️⃣作业要求

给定一幅灰度图像,使用任意方法将其变成一幅彩色图像,并尽量使得添加的色彩显得较为真实。

2️⃣核心代码

这里我们是直接调用了eccv16和siggraph17的模型,运行程序时会自动下载这两个model文件,然后经过对图像的预处理之后,放入模型中进行上色,最后输出上色后的图像。

import argparse
import matplotlib
import matplotlib.pyplot as plt
from colorizers import *
matplotlib.use('TKAgg')parser = argparse.ArgumentParser()
parser.add_argument('-i','--img_path', type=str, default='imgs/ansel_adams3.jpg')
parser.add_argument('--use_gpu', action='store_true', help='whether to use GPU')
parser.add_argument('-o','--save_prefix', type=str, default='saved', help='will save into this file with {eccv16.png, siggraph17.png} suffixes')
opt = parser.parse_args()# 加载上色器
colorizer_eccv16 = eccv16(pretrained=True).eval()
colorizer_siggraph17 = siggraph17(pretrained=True).eval()
if(opt.use_gpu):colorizer_eccv16.cuda()colorizer_siggraph17.cuda()# default size to process images is 256x256
# grab L channel in both original ("orig") and resized ("rs") resolutions
img = load_img("imgs/test2.jpg")
(tens_l_orig, tens_l_rs) = preprocess_img(img, HW=(256,256))
if(opt.use_gpu):tens_l_rs = tens_l_rs.cuda()# colorizer outputs 256x256 ab map
# resize and concatenate to original L channel
img_bw = postprocess_tens(tens_l_orig, torch.cat((0*tens_l_orig,0*tens_l_orig),dim=1))
out_img_eccv16 = postprocess_tens(tens_l_orig, colorizer_eccv16(tens_l_rs).cpu())
out_img_siggraph17 = postprocess_tens(tens_l_orig, colorizer_siggraph17(tens_l_rs).cpu())plt.imsave('%s_eccv16.png'%opt.save_prefix, out_img_eccv16)
plt.imsave('%s_siggraph17.png'%opt.save_prefix, out_img_siggraph17)plt.figure(figsize=(16,4))
plt.subplot(1,4,1)
plt.imshow(img,aspect='auto')
plt.title('Original')
plt.axis('off')plt.subplot(1,4,2)
plt.imshow(img_bw,aspect='auto')
plt.title('Input')
plt.axis('off')plt.subplot(1,4,3)
plt.imshow(out_img_eccv16,aspect='auto')
plt.title('Output (ECCV 16)')
plt.axis('off')
#
plt.subplot(1,4,4)
plt.imshow(out_img_siggraph17,aspect='auto')
plt.title('Output (SIGGRAPH 17)')
plt.axis('off')
plt.show()
3️⃣实验结果

对随机选取的三张测试图片进行上色。首先第一张就是我们输入的原图,然后将输入的原图转为灰度图像,也就是第二张图片。接着我们使用16年ECCV的网络模型进行上色预测,得到处理后的结果,即第三张图片,最后我们使用17年siggraph快速着色器模型进行自动上色,得到第四张图的结果。通过对比可以看出,上色结果和原图相似度还是十分高的,而且没有任何违和感,效果很鲁棒。

💖test1是周董,周董衣服及钢琴颜色完全相同,只是背景灯光不同而已。
在这里插入图片描述
💝test2是蓝天白云,自然景物的还原度是最高的,几乎和原图无差别。(我估计GAN中的辨别器Discriminator都识别不出来这是上色的假图片。)
在这里插入图片描述
💘test3是Taylor Swift,老霉依旧很美,上色后,和原图比起来,只是缺少些靓丽感。
在这里插入图片描述

⭐实验源码+报告⭐

在计算机视觉领域,人类在直觉上看来十分自然的事情,在计算机视觉中却非常困难。图像在计算机里只是一个数值矩阵。这个矩阵里面表达着什么东西,计算机毫无概念,这也正是现在机器学习要解决的问题。


http://chatgpt.dhexx.cn/article/VNfdHyhJ.shtml

相关文章

matlab 绘制灰度图

matlab 将矩阵中不同数值所对应的区域用 不同深度的灰度图画出来,不显示坐标轴标签,并设置在画布上全屏显示。 if 1close allrng (7)mask_allrand(256,256)*10;mask_allround(mod(mask_all,2));mask_allsort(mask_all);mask_all(1:100,1:50)0;mask_all(…

matlab读取一幅灰度图,Matlab处理灰度图

作业2:通过图像分析的方法对如下图像进行分析,获取颗粒特性参数。具体参数包括图像中的颗粒个数,颗粒面积,颗粒等效直径,非球形颗粒的长/短轴,非球形颗粒的方位。 图1 待处理颗粒图像 步骤: (1)…

python灰度图

任务描述 背景   真彩色图像和灰度图像是数字图像的两种常见类型,如下图所示,左图是真彩色图像,右图是灰度图像。    在真彩色图像中,像素颜色是 RGB 颜色,每个颜色包含 R、G、B 三个颜色分量。而在灰度图像中&…

图像处理--灰度图

灰度图 灰度图,Gray Scale Image 或是Grey Scale Image,又称灰阶图。把白色与黑色之间按对数关系分为若干等级,称为灰度。灰度分为256阶。 灰度图定义 什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点…

OpenCV(三)彩色图灰度化、通道分离、单通道反差处理(灰度图)、多通道反差处理(彩色图)

目录 一、彩色图灰度化 1、主要函数cvtColor()介绍 2、代码 3、效果 二、通道分离 1、向量介绍 2、总代码 3、效果 三、单通道(灰度图)反差处理 1、单通道向量访问 2、代码 3、效果 四、多通道(彩色图)反差处理(彩色图的反差处理) 1、多…

灰度图与RGB图

1.灰度图 灰度图就是单通道图像,而单通道图是指维度数为2的图像。 而灰度就是没有色彩,RGB色彩分量全部相等(可将这点与下文的RGB图进行对比)。那么灰度图的每个像素点就只有一个值表示颜色,像素值的范围就是[0~255]。…

ER图、ERD图

ER图、ERD图 1. 什么是ERD1.1 举例 2. ERD符号指南2.1 实体2.2 属性2.3 主键2.4 外键2.4 关系2.5 基数2.5.1 一对一的基数的例子2.5.2 一对多的基数的例子2.5.3 多对多的基数的例子 3.概念、逻辑和物理数据模型3.1 概念数据模型3.2 逻辑数据模型3.3 物理数据模型 4.如何绘制ER图…

2.2.2 ER图

2.2.2 ER图 关系型数据库提供了SQL语言,使应用程序开发人员与数据库管理和维护人员能够与数据库进行交互。但是在创建数据库和数据表之前,需要对数据库中的数据表进行设计,并能够正确设计出各数据表之间的关联关系。 通常使用ER图&#xf…

【系统架构】ER图的画图规范和优化点

文章目录 什么是ER图ER图的画图规范组成部分步骤注意 实例 第三弹,讲讲ER图的画图规范以及优化点 什么是ER图 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型 ER图…

学好er图

一、什么是er图? ​ 1、 实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器,独立于DBMS的ER图模型。 通常将它简称为ER图,相应地可把用ER图描绘的数据模型称为ER模型…

ER图学习笔记(附各个图型的举例,实战案例)

ER图常用图形如下: ER图图形含义详解 实体(长方体): 实体字面意思就是实际存在的,例如商品,货物,用户。 属性(椭圆): 属性我们不陌生,就是一个…

enterprise architect绘画ER图

ER图的实体(entity)即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体对象(entity instance…

数据库ER图

ER图的实体(entity)即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体对象(entity instance…

java er图_ER图与UML图

ER图:实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型 构成E-R图的基本要素是实体、属性和联系,其表示…

ER图符号含义

ER图在数据库设计中经常用到,用于表示数据库各个表之间的关系。 设计的时候,我个人用到的主要是下图中的两个: Many:一对多 一个数据源对应多个数据库表 One:一对一 一个度量对应一个display设置,一对一…

ER图

文章转载自「开发者圆桌」 E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并…

如何画数据库ER图

一、ER图基本概念 ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。 1、实体(entity) 即数据模型中的数据对象(即数据表),用长方体来表示&…

ER图详解及实例

文章目录 ER图基本概念ER图实例 ER图基本概念 ER图分为实体、属性、关系三个核心部分。在ER图中,实体是长方形,属性是椭圆形,关系为菱形。 实体(entity): 即数据模型中的数据对象(即数据表&…

什么是E-R图

E-R图,也称为实体关系图,用于显示实体集之间的关系。它提供了一种表示实体类型、属性和连接的方法;用来描述现实世界的概念模型。ER模型是数据库的设计或蓝图,将来可以作为数据库来实现。 在E-R图中,实体集是一组相似的…

绘制ER图

文章目录 前言一、ER图绘图规范二、使用步骤例如一个学生管理系统 前言 概念 ER图:实体关系图,简记E-R图,是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式 一、ER图绘图规范 实体用矩形表…