黑白图像自动上色(颜色迁移版)

在《一篇关于如何用深度学习完成自动上色(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,并->rgb

	int wid=bmp.width;
	int hei=bmp.height;
	int wh=wid * hei;

		cout<<"输入图像宽度:"<width<<","<height<<","<depth<width<<","<height<<","<depth<width<<","<height<<","<depth<width<<","<height<<","<depth<width<<","<height<<","<depth<width<<","<<源->height<<","<<源->depth<L(ab), L+ab= Lab
	卷积层 rgb(wid,hei,3);
	rgb.data=new float[wid*hei*3];

	Resizeloadjpg(jpgname);//重新载入

	bmp2RGB(rgb);//rgb
	rgb2lab(rgb);//lab


	//  7。L+ab= Lab


	卷积层 ab(wid,hei,2);
	ab.data=rgb.data+wh;
	卷积层复制(源,&ab);

	lab2rgb(rgb);//rgb

	//  8。Lab->rgb->YUV

	RGB2bmp(rgb);

	卷积层 U(wid,hei);
	U.data=源->data; 
	卷积层 V(wid,hei);
	V.data=源->data+wid * hei ; 
	bmp2YUV(&U,&V);

	//  9。替换Y,并->rgb

	YUV2bmp(&Y,&U,&V);
	
	del卷积层(*源);
	


	cout<<"图像转换成jpg格式... "<

两个灰度图:

黑白图像自动上色(颜色迁移版)_第1张图片黑白图像自动上色(颜色迁移版)_第2张图片

分别上色:

黑白图像自动上色(颜色迁移版)_第3张图片黑白图像自动上色(颜色迁移版)_第4张图片

互为风格图:

黑白图像自动上色(颜色迁移版)_第5张图片黑白图像自动上色(颜色迁移版)_第6张图片

可以看出有对方的颜色了(前提是类型相似)。

再来看一个例子

两个灰度图:

黑白图像自动上色(颜色迁移版)_第7张图片黑白图像自动上色(颜色迁移版)_第8张图片

分别上色:

黑白图像自动上色(颜色迁移版)_第9张图片黑白图像自动上色(颜色迁移版)_第10张图片

互为风格图:

黑白图像自动上色(颜色迁移版)_第11张图片黑白图像自动上色(颜色迁移版)_第12张图片

 

下载:

给黑白图像自动上色并可以作颜色迁移的win程序

可以给黑白图像上彩色的程序(win下),也可以做颜色迁移。由《siggraph2016_colorization-master》中的 colornet_imagenet.t7 模型改编而来。

https://download.csdn.net/download/juebai123/11194075

 

 

 

你可能感兴趣的:(杂类)