【数字图像处理】图像风格迁移

代码和实验报告下载:http://download.csdn.net/detail/jsgaobiao/9523313


Ø  【作业要求】

设计自己的算法完成一个附图所示的图像风格迁移算法(基于matlab的快速实现)(很可能用到,并且鼓励使用)基于频率域的图像处理.

      除提交必要的作业文档外,每人必须提交1组附件图像做出的效果最佳的结果测试图,匿名投票评佳。

【数字图像处理】图像风格迁移_第1张图片

Ø  【文件说明】

main.m:

读取参考图片和目标图片,并进行图像风格迁移。

FFT.m:

对图像进行快速傅里叶变换,提取幅值和相位。

iFFT.m:

根据幅值和相位,对图像进行傅里叶反变换。

Reinhard.m:

使用Reinhard算法进行图像的色彩转移。

ChangeBrightness.m:

改变图像的亮度值。

 

Ø  【作业思路】

思路一:

根据老师课上提到的图像的幅值和相位的分解,我们可以认为图像频域的幅值记录了原图的颜色、各个频率分量的多少,图像频域的相位则保留了图像的细节信息。

【数字图像处理】图像风格迁移_第2张图片

在此基础上,观察作业的示例图片,我们可以发现风格迁移后的图像,保留了原图像的整体内容,但是丢弃了原图的色彩特征,转而采用参考图像的色彩特征(蓝、黑、黄)以及部分参考图像的细节信息(天空中的太阳)。

【数字图像处理】图像风格迁移_第3张图片

所以我的思路是:

对于原图:保留原图的相位(细节内容)丢弃原图的幅值(颜色信息),也就是将原图转化为灰度图像后,再做频域分解。

对于参考图:做频域分解,再与原图分解后的幅度、相位叠加,获得新图片。

 

但是经过尝试,效果并不好(从左到右:原图、参考图、合成图):

【数字图像处理】图像风格迁移_第4张图片【数字图像处理】图像风格迁移_第5张图片

 

可以看出,合成图的颜色基本接近参考图,可以大概看出天空中太阳的轮廓,但是图中的噪声很多,图片很模糊。

也许直接将相位叠加的做法导致了这一结果,显然这个思路还需要改进。

 

思路二:

         在图像的分解和重建领域中,经常使用到小波变换的分解方法。小波变换的优点是有完善的重建能力,它能保证信号在分解过程中没有任何信息损失,即小波变换作为一组表示信号分解的基函数是唯一的。它可以将图像分解为模糊图像和细节图像之和。

         所以我尝试使用小波变换的方法合并图像。

【数字图像处理】图像风格迁移_第6张图片

这是直接用小波变换合并两张图像的结果,可以看出效果比之前好不少。但是依然存在两个问题:

1、 两张图片的颜色混合后,产生了一些色调偏差;

2、 参考图象(星空)过于明显,对原图产生了干扰,看起来比较混乱。

 

针对这两个问题我分别做了如下的尝试:

1、 色调的偏差是由于两张图片颜色的混合导致的,根据思路一中的分析,我们应该丢弃原图中的色彩信息,只保留参考图像(星空)的色彩信息。

但是,如果按照思路一中先将原图转换成灰度图像再融合图像的方式,合成后的图像会被”灰化”。经过查阅资料,我最后使用了Reinhard色彩转移算法——先将参考图像的色彩转移到原图,再进行图像的融合。

2、 因为两张图片的直接融合,几乎按照相同的比例保留了两张图片的细节部分,所以看起来非常的混乱。所以我们要区分出主次关系(原图的细节为主,参考图片的细节为次),所以我对参考图片进行了高斯模糊,并且降低了亮度后,再与原图融合,得到了不错的效果。

 【数字图像处理】图像风格迁移_第7张图片

以下是一些效果图(从左起:原图、参考图、合成图,它们可能采用了不同的高斯模糊和小波变换的参数),

 【数字图像处理】图像风格迁移_第8张图片


Ø  【小结和思考】

按照上述方式进行的风格化迁移,在部分图片的组合下取得了不错的效果。但是,有些图片的组合效果却不够理想,例如:

【数字图像处理】图像风格迁移_第9张图片

因为参考图中的白塔与背景对比非常强,所以高斯模糊、降低亮度等方式并不能缓解两张图片融合后的“冲突感”。而且,白塔图片本身的风格也不是特别明显,所以这样的两张图片的合并效果就十分有限了。

所以,与机器学习训练出来的结果相比,使用小波变换加Reinhard的算法具有快速、简单的优点,但是效果还是存在一定的差距的。


你可能感兴趣的:(MatLab,数字图像处理)