Coherent Line Drawing Proc. NPAR 2007 https://github.com/uva-graphics/coherent_line_drawing https://github.com/SSARCandy/Coherent-Line-Drawing https://ssarcandy.tw/2017/06/26/Coherent-Line-Drawing/
所谓的 Line drawing 就是直线素描,在这里的意境就是:输入一幅图像,输出一副直线艺术风格画
本文主要是对 传统基于 difference-of-Gaussians (DoG) binary thresholding 进行边缘检测的改进 。 传统的 difference-of-Gaussians (DoG) 使用的是 isotropic filter kernel,普通的高斯核是 各向同性的,也就是没有原来的算法在进行高斯卷积时没有考虑边缘的方向信息。 这里将边缘的梯度方向信息溶于到 difference-of-Gaussians (DoG) binary thresholding 中。
The main idea behind our approach is to take into account the direction of the local image structure in DoG filtering, rather than looking in all directions.Especially, we apply DoG filter only in a direction perpendicular to that of the local `edge flow’, that is, the direction in which there is supposed to exist the biggest contrast. We then collect the evidence (filter response) along this flow to finally determine the edge strength
本文的主要思想就是在进行 DoG filtering 时,考虑图像局部结构的方向信息。我们只在边缘梯度方向的法线方向进行 DoG filter。 然后我们沿着边缘梯度方向综合考虑 DoG filter 的响应来最终决定其 edge strength
对于图像的梯度方向信息,我们使用 Edge Tangent Flow 来描述
这个 Edge Tangent Flow 必须满足几个条件: 1)可以描述中医边缘的流向 2)邻近的向量必须要平滑(避免邻近的向量方向差太多),除非是角落 3)重要的边缘必须要维持它原本的方向
Generate initial ETF Edge Tangent Flow的 初始化 这里使用 Sobel operator 来获取初始的 gradient map,然后归一化,接着对向量旋转90度 taking perpendicular vectors (in the counter-clockwise sense)
Refining ETF 使用 ETF construction filter 进行迭代平滑, ETF construction filter 定义如下:
Flow-based Difference-of-Gaussians 根据 flow-based kernel 来进行 Difference-of-Gaussians(DoG) ,对每個像素沿着 ETF 垂直方向做一维的 DoG,亦即对上图中 -T~T 做 DoG
再沿着 -S~S 做一维的高斯加权:
最后进行二值化
Iterative FDoG filtering 有时候做一次 FDoG 效果并不够好,所以可以藉由反覆做 FDoG 来达到更良好的效果。 要反覆套用 FDoG 也很容易,只要将原图与 FDoG 的输出叠加,然后以这个新的图片当作原图再次套用一次 FDoG 即可。