实现Photoshop的“海报边缘” - 过滤器

时间:2010-10-06 08:37:26

标签: java image-processing

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

alt text

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

所以有人知道如何实现海报边缘滤镜,或者知道应该采用什么图像处理来实现前者的后一种图像。

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

修改来自adobe.com的过滤器说明:

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

3 个答案:

答案 0 :(得分:9)

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

关于海报化:鉴于他们在SIGGRAPH的谈话,Adobe人员非常关注双边过滤(请谷歌,我不能再连接),这是一种保留重要优势的平滑技术。我想如果你应用双边过滤器并在之后进行分色,你应该更接近你想要的外观。不幸的是,有效地实施双边滤波器并非易事。

对仍然对此主题感兴趣的任何人的更新

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

答案 1 :(得分:0)

我怀疑你必须在几个等级上做这个,以便过滤边缘响应。

  1. 在输入图像的高斯平滑金字塔的多个级别(比例)上运行边缘检测[sigma_min,sigma_max]
  2. 然后,要么总和,要么选择跨刻度的最大边缘量值
  3. 与原始图像分色(混合?)

答案 2 :(得分:0)

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