黑白图像自动上色(颜色迁移版)
在《一篇关于如何用深度学习完成自动上色(Automatic Image Colorization)的论文浅析》看到这个模型也可以作颜色风格迁移,这里也来试试,先换另一个模型:colornet_imagenet.t7。
看图:
这个模型和前面的哪个除了训练集不同外,着色输入层核大小已经换成了1x1了,总体来说基本相同。
RGB 和 Lab 互换 按《opencv2,RGB转Lab色彩空间》一文操作
主函数:
void PsColor(char * savefilename,PsColor模型 & sr)
{// 1。加边(8的倍数)// 2。分类部分// 3。编码部分// 4。融合// 5。着色(解码)部分 生成Lab中的ab// 去边(回到原图大小)// 6。y,y,y->L(ab)// 7。L+ab= Lab// 8。Lab->rgb->YUV// 9。替换Y,并->rgbint wid=bmp.width;int hei=bmp.height;int wh=wid * hei;cout<<"输入图像宽度:"<<wid<<endl;cout<<" 高度:"<<hei<<endl;
//卷积层 Y(wid,hei);//亮度Y.data=new float[wid * hei ]; bmp2YUV(&Y);卷积层 si(wid,hei);//亮度si.data=new float[wid * hei ]; 卷积层复制(&Y,&si);卷积层加以(si,-0.445f);// 1。加边(8的倍数)//伸缩零头:使宽,高保证为8的倍数而设,即 宽(高)除8的余数 + x0(y0) = 8int x0=0, y0=0;伸缩边(si, x0, y0);//卷积层 si备份(si.width,si.height);//亮度//si备份.data=new float[si.width * si.height ]; //卷积层复制(&si,&si备份);// 2。分类部分if (读取风格名(Style_Name)==false)return;//载入风格图if (Resizeloadjpg(Style_Name)==false){cout<<"可能需要在'风格图路径和名称.txt'文件中写上一个正确的文件名!!!"<<endl;return;}int swid=bmp.width;int shei=bmp.height;int swh=wid * hei;//卷积层 sY(swid,shei);//亮度sY.data=new float[swid * shei ]; bmp2YUV(&sY);卷积层加以(sY,-0.445f);cout<<"分类部分..."<<endl;//缩放到 224x224卷积层 di(224,224);di.data=new float[224*224];卷积层双三次插值(sY,di);卷积层* low = 低级特征前传f(di,sr);cout<<low->width<<","<<low->height<<","<<low->depth<<endl;卷积层* glo = 全局特征前传(*low,sr);cout<<glo->width<<","<<glo->height<<","<<glo->depth<<endl;del卷积层(*low);// 3。编码部分cout<<"编码部分..."<<endl;low = 低级特征前传e(si,sr);cout<<low->width<<","<<low->height<<","<<low->depth<<endl;卷积层 *mid = 中级特征前传(*low,sr);cout<<mid->width<<","<<mid->height<<","<<mid->depth<<endl;del卷积层(*low);// 4。融合cout<<"融合..."<<endl;卷积层 * fusion = 融合(*glo,*mid);cout<<fusion->width<<","<<fusion->height<<","<<fusion->depth<<endl;del卷积层(*glo);del卷积层(*mid);// 5。着色(解码)部分cout<<"解码-生成彩色..."<<endl;卷积层 * 源 = 着色前传(*fusion,sr);cout<<源->width<<","<<源->height<<","<<源->depth<<endl;伸缩边(*源, x0, y0,false);del卷积层(*fusion);//save_卷积层2txt(源,"ab.txt");// 6。y,y,y->L(ab), L+ab= Lab卷积层 rgb(wid,hei,3);rgb.data=new float[wid*hei*3];Resizeloadjpg(jpgname);//重新载入bmp2RGB(rgb);//rgbrgb2lab(rgb);//lab// 7。L+ab= Lab卷积层 ab(wid,hei,2);ab.data=rgb.data+wh;卷积层复制(源,&ab);lab2rgb(rgb);//rgb// 8。Lab->rgb->YUVRGB2bmp(rgb);卷积层 U(wid,hei);U.data=源->data; 卷积层 V(wid,hei);V.data=源->data+wid * hei ; bmp2YUV(&U,&V);// 9。替换Y,并->rgbYUV2bmp(&Y,&U,&V);del卷积层(*源);cout<<"图像转换成jpg格式... "<<endl;savejpg(savefilename);//保存bmp中的数据cout<<"转换文件已经保存为: "<<savefilename<<endl;}
两个灰度图:
分别上色:
互为风格图:
可以看出有对方的颜色了(前提是类型相似)。
再来看一个例子
两个灰度图:
分别上色:
互为风格图:
下载:
给黑白图像自动上色并可以作颜色迁移的win程序
可以给黑白图像上彩色的程序(win下),也可以做颜色迁移。由《siggraph2016_colorization-master》中的 colornet_imagenet.t7 模型改编而来。
https://download.csdn.net/download/juebai123/11194075
黑白图像自动上色(颜色迁移版)相关推荐
- 黑白图像自动上色(Colorization)
在<siggraph2016_colorization-master>有两个可以给黑白图片自动上色的模型:colornet.t7 和 colornet_imagenet.t7. 现来把这个 ...
- 宝藏AI应用推荐!带你体验黑白图像自动上色的快乐~
黑白与色彩 似乎把时代分割了两半~ 我在这头看见了错乱繁华,琳琅满目,看见快速消长的色彩缤纷. 翻开一张黑白照片 我能看到世代流传的印记,一种历久弥新的美 我能看到但我却又看不到"你&quo ...
- 智能黑白图像自动上色——C++实现
前言 <Colorful Image Colorization>是加里福利亚大学Richard Zhang发表在ECCV 2016上的文章,论文主要解决的问题是给灰度图的自动着色,算法并不 ...
- python图片自动上色_通过深度学习方法为黑白老照片自动上色,带我们重新忆起那段老时光!...
我们知道,深度学习几乎已经应用在每一个领域,但如果我们能够构建一个基于深度学习的模型,让它能够给老照片着色,重现我们童年的旧回忆,这该多么令人激动啊!那么我们要怎么做呢?本文的作者将为大家介绍一个教程 ...
- Python基于CycleGAN&pix2pix的黑白图像AI上色(源码&部署教程)
1.项目背景 自从GAN技术发展以来,许多新奇的应用都得到了落地,本次我们来介绍其中一个小应用,就是黑白图像上色.想必大家在网上经常看到一些给黑白图像上色的视频,可以修复早期的黑白影像,背后的技术就是 ...
- OpenCV4学习笔记(67)——dnn模块之基于colorization模型实现图像自动上色
本次要整理记录的内容是利用colorization模型来将灰度图像转换为彩色图像.colorization模型是利用Lab色彩空间的L(亮度)通道来预测a.b两个通道的值,也就是说当我们手里有一张灰度 ...
- 百行代码构建神经网络黑白图片自动上色系统
使用神经网络对图片进行风格化渲染是计算机视觉领域的热门应用之一.本文将向你介绍一种简单而有效的黑白图片上色方法,仅需 100 行代码,你也可以搭建自己的神经网络,几秒钟内让计算机自动完成手动工作需要几 ...
- 怎样给黑白照片自动上色?
这一系统采用了全新"深度学习技术",具体来说就是,他们会输入超过100万幅彩色照片,用以"训练"计算机识别各种对象,并根据照片上的灰度计算颜色.程序会根据计算结 ...
- 能给黑白照片自动上色的软件有哪些?这几款建议收藏
大家平时在收拾东西的时候,有没有发现家里的一些老照片?而且这些老照片大多数都是黑白照,这时候你会不会萌生一个想法,那就是将这些老照片变成一张有色彩的照片会是什么样的?其实想实现这个想法并不难,我们只要 ...
最新文章
- 机器学习入门(14)— 神经网络学习整体流程、误差反向传播代码实现、误差反向传播梯度确认、误差反向传播使用示例
- C++知识点8——函数的返回值
- RTX5 | 配置文件RTX_Config.h(一)
- SAP License:SAP从业者的收入状况
- 【报告分享】2020中国直播行业风云洞察.pdf
- 在线等:“手里 5 个 offer,优选头条还是阿里?”
- 零至二岁宝宝故事(一)
- 【计算机网络】物理层
- Java 简单的韩信点兵问题
- 如何给MySQL 数据瘦身
- 【PCB封装中的_L/_M/_N解释】IPC low/medium/high density 什么意思?
- SaaS独角兽成长秘籍:40%法则+7步走战略
- PostMan接口参数化、接口返回值传递
- 公众平台 java_java开发微信公众平台
- 东京工业大学计算机毕业生去向,打开心扉 收获东京工业大学计算机专业offer
- (写着玩)Python仿网络游戏《炉石传说》,继上次部分代码展示
- 代码战争之友人与敌人
- 破解mifare Classic(M1)非接触式射频IC卡--Mifare crack Hack 笔记二
- 看板项目管理:如何可视化工作以提高生产力?
- 邮件服务器 POP3协议 详解
热门文章
- GBK UTF-8 ASCLL URL编码
- iphone计算机锁,别人排队买11,我去店里刷了个机——记一次iPhone锁机刷机经历...
- 巨杉数据库SequoiaDB特性
- JeffDean又用深度学习搞事情:这次要颠覆整个计算机系统结构设计
- python数字滚动效果_玩转PPT数字滚动,让数据动起来
- 3DMAX 阵列工具、间隔工具快捷键
- spring整合通用mapper
- 7-164 统计字符个数
- Python保留字与标识符、变量、基本数据类型
- MAC OS 如何修改“文件”或“文件夹”的“创建时间”和“修改时间”