xiaozongpeng 发表于 2023-1-6 13:17

聊聊图像的抽象化处理

最近看了些关于图像的抽象化处理的资料,感觉挺有意思的,在这里跟大家分享一下。自己相对于真实感渲染,比较关注的是NPR方面的东西,所以以后写的东西大概都会发在这个专栏,感兴趣的童鞋可以关注下。
何为图像的抽象化

简单的讲就是输入一张图像,生成一张简单易懂的图像。它可以作为其他风格(比如铅笔画,水彩画等)的预处理。也可以本身形成一种风格。图像的抽象化其实具体有两个方面。一个是结构的简化(比如点线面),一个是颜色的简化。比如标题的图像就是结构变简单了明暗层次也简化了。下面的图也很好地解释了图像的抽象化:


图像抽象化的相关研究

下面会列出一些相关的研究论文,感兴趣的童鞋可以自行搜索。
Stylization and abstraction of photographs



主要是边缘检测和色彩分割,在色彩分割的时候导入了观察者的视角的概念。在观察者看得清的地方保留较多细节(分的较细),在看不太到的地方分的较粗。
Real-Time Video Abstraction



在lab颜色空间进行处理,用了Bilateral Filter和色彩量化做颜色的简化,然后用DOG提取边缘。
Coherent Line Drawing


生成比较好看的线描画。为了对噪点有比较好的鲁棒性,导入了Edge Tangent Flow的概念。
Image Abstraction by Structureasa Adaptive Filtering


用了Bilateral Filter的变种Separated Orientation-aligned Bilateral Filter做了滤波,然后做色彩量化。另外,用了FDOG的变种Separated Flow-based Difference-of-Gaussians来做边缘检测。
Flow-Based Image Abstraction



主要是色彩的简化,使用了Bilateral Filter的变种Flow-Based Bilateral Filter(FBL filter)。
Pixelated Image Abstraction



生成像素画的研究。不仅仅是分辨率降低了,也做了色彩的减少。
Non-photorealistic rendering with spot colour



比较另类的研究,模拟了专色的效果(关于专色可以看这里https://zhuanlan.zhihu.com/p/41835690)。首先将图像转为HSV,然后在H上对图像进行明度量化,通过图像的矩来计算量化得到的色块的形状,还计算了每个色块的显著性。然后对形状相对紧密,并且显著性高的色块上色。但是感觉算法缺乏理论依据,结果也不是很稳定。
Learning Deep Sketch Abstraction



使用强化学习去训练笔触,由于对机器学习不怎么了解,所以没有怎么理解,权当增长见识。
Unity中使用Compute Shader来实现

我选的是Image Abstraction by Structureasa Adaptive Filtering这篇论文的方法,因为这篇论文的算法是用OpenGL实现的,移植到Compute Shader应该是可行的。
处理流程如下:


1.在RGB颜色空间计算结构张量;
2.平滑结构张量;
3.计算结构张量的两个特征向量;
4.将图像转为Lab;
5.用Separated Orientation-aligned Bilateral Filter滤波得到颜色简化的图像;
6.用Separated FDoG对5的结果滤波得到边缘;
7.对5的结果进行颜色量化(只在明度L上进行量化);
8.将6和7的结果合在一起;
9.将Lab转为RGB颜色空间。
结果如下:



原图



抽象化后的图像

由于是在GPU上作为后处理实现的,因此是实时的:

实时的抽象化
https://www.zhihu.com/video/1227325875521540096
通过调整参数可以得到截然不同的风格:

截然不同的风格
https://www.zhihu.com/video/1227328271488159744
算法很简单,代码就不放了。

KaaPexei 发表于 2023-1-6 13:25

关注点赞收藏三连发

mypro334 发表于 2023-1-6 13:29

我选的是Image Abstraction by Structureasa Adaptive Filtering这篇论文的方法,因为这篇论文的算法是用OpenGL实现的,移植到Compute Shader应该是可行的。----大佬,这个opengl的代码有开源吗?

unityloverz 发表于 2023-1-6 13:39

没有啊,cs的代码是自己写的

rustum 发表于 2023-1-6 13:46

大佬代码可以分享一下吗

yukamu 发表于 2023-1-6 13:55

大佬,可以分享一下代码吗?[感谢]

RhinoFreak 发表于 2023-1-6 13:59

大佬,求代码分享
页: [1]
查看完整版本: 聊聊图像的抽象化处理