【问题标题】:Implementing Photoshop's "Poster edges" -filter实现 Photoshop 的“海报边缘”-filter
【发布时间】:2013-02-06 23:30:58
【问题描述】:

我正在尝试找出 Photoshop“海报边缘”滤镜由哪些效果组成。似乎它是边缘检测和后处理的组合,但我无法复制它,甚至不能接近,所以我想我错过了一些东西。下图显示了海报边缘过滤器前后的相同图像:

我尝试对图像执行后处理(和量化),以及使用 Sobel 进行边缘检测,但显然 Photoshop 正在做一些不同的事情,因为结果非常不同。基本上,与 Photoshop 滤镜相比,后处理看起来非常不同,边缘非常弱。

那么有谁知道海报边缘过滤器是如何实现的,或者知道应该进行什么图像处理才能从前者获得后者的图像。

这并不重要,但我使用的是 Java,我的图像过滤代码大部分基于此处找到的过滤器:http://www.jhlabs.com/ip/filters/index.html

编辑来自 adobe.com 的过滤器说明:

海报边缘根据您设置的海报化选项减少图像中的颜色数量(将其海报化),并找到图像的边缘并在其上绘制黑线。大面积区域具有简单的阴影,并且在整个图像中分布着精细的暗部细节。

【问题讨论】:

    标签: java image-processing


    【解决方案1】:

    关于边缘: 我假设 Photoshop 使用比简单的导数过滤器(如 Sobel)更复杂的东西来进行边缘检测。有一些边缘检测算法试图仅找到“显着”边缘,即那些与人类视觉相关的边缘,即人类艺术家在绘制线条草图时会绘制的边缘。朝这个方向发展(至少有点)的旧且(相当)简单的算法是Canny edge detector。你应该能够找到这个的实现。谷歌搜索当前研究文献的“突出优势”,但不要指望研究论文中有实现或漂亮的伪代码。

    关于分色:鉴于他们在 SIGGRAPH 上的演讲,Adobe 人员非常关注双边过滤(请谷歌,我不能再链接了),这是一种保留重要边缘的平滑技术。我认为如果您应用双边过滤器并在之后进行后处理,您应该更接近您想要的外观。不幸的是,有效地实现双边滤波器并非易事。

    为仍然对此主题感兴趣的人提供更新

    我上面建议的双边过滤器越来越多地被Guided filter 取代,至少在计算机视觉社区中(图形人们似乎还没有实现引导过滤器)。引导过滤器实现了类似的结果,但更容易有效地实现。引导过滤器的精确算法非常高效,而高效的双边过滤器需要近似值或极其复杂的算法。

    【讨论】:

    • 感谢您的指点。我实际上尝试过canny边缘检测,但测试图像的结果实际上比Sobel弱一点(似乎Canny产生了较弱的边缘,虽然更准确一点,我正在寻找更强的边缘,但它没有必须那么准确)。谷歌搜索双边过滤给出的结果我认为你可能是对的。不幸的是,从算法来看,它似乎也非常重要。得把那些旧的大学数学书挖出来……
    • Canny 边缘确实是“弱”的,因为它们只有 1 个像素宽。精明的边缘只是表明那里有边缘。我会尝试首先检测“好”边缘,然后“增长”它们,可能与它们的长度成正比,例如使用膨胀。
    • 经过几次测试,我现在得到的结果开始看起来像 PS 的海报边缘。仍然不存在,但现在我认为更多的是调整参数的问题。非常感谢您的帮助。现在只是为了让过滤在合理的时间内运行:P
    • @TuomasR,你能和我们分享一下结果和过程吗?谢谢。
    • 我对使用引导滤波器代替双边滤波器来提高计算性能很感兴趣。对于下采样图像,引导过滤器是双边的良好替代品吗?
    【解决方案2】:

    我怀疑您必须在多个尺度上执行此操作,才能过滤边缘响应。

    1. 在输入图像 [sigma_min, sigma_max] 的高斯平滑金字塔的多个级别(尺度)上运行边缘检测
    2. 然后,求和或选择跨尺度的最大边缘幅度
    3. 与原始图像相分离(混合?)

    【讨论】:

    • 您可能走在正确的轨道上,这与我正在做的事情非常接近,但我正在寻找能够准确告诉我该怎么做的东西。我已经对不同的组合进行了 很多 次试验和错误,但仍然没有产生预期的结果。
    • 不看源代码就无法给出确切的解决方案。可以分享一下吗?
    • 我可以,但是由于代码不能解决问题(结果是错误的,因为 99% 的可能性是效果序列不正确且缺少),我看不到它。在这种情况下,我正在寻找一个答案,上面写着“可以通过 X、Y 和 Z 实现结果”。在这种情况下,答案是包含“怀疑”、“任一个”等词。
    • 嗯...那里过早的输入键操作...缩短我的评论。总结一下:问题不在于现有的源码,问题在于不知道如何实现效果。您所做的描述与其他分析器相似,但实际解决方案似乎在于遗漏的细节,而不是现有过滤器的实际参数。 Photoshop 做了一些这里没有指出的事情,我还没有弄清楚。
    【解决方案3】:

    复制原始图像,然后应用PosterizeFilter。然后将EdgeFilterGrayscaleFilterInvertFilter 应用于副本。最后将 posterized 原件与副本相乘。那时你应该有接近Poster edges的东西。

    【讨论】:

    猜你喜欢
    • 2013-07-06
    • 2021-10-28
    • 2014-08-15
    • 2021-06-02
    • 2018-06-15
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多