Java 实现Photoshop';s";海报边缘“-滤波器

Java 实现Photoshop';s";海报边缘“-滤波器,java,image-processing,Java,Image Processing,我试图找出Photoshop“海报边缘”过滤器的效果是什么。这似乎是边缘检测和后处理的结合,但我无法复制,甚至无法接近,所以我想我遗漏了一些东西。下图显示了海报边缘过滤器前后的相同图像: 我尝试过对图像进行后处理(和量化),以及使用Sobel进行边缘检测,但显然Photoshop做了一些不同的事情,因为结果非常不同。基本上,与photoshop过滤器相比,后处理看起来非常不同,边缘非常弱 那么,是否有人知道海报边缘过滤器是如何实现的,或者是否有人知道应该进行哪些图像处理以从前者获得后一个图像

我试图找出Photoshop“海报边缘”过滤器的效果是什么。这似乎是边缘检测和后处理的结合,但我无法复制,甚至无法接近,所以我想我遗漏了一些东西。下图显示了海报边缘过滤器前后的相同图像:

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

那么,是否有人知道海报边缘过滤器是如何实现的,或者是否有人知道应该进行哪些图像处理以从前者获得后一个图像

这并不重要,但我使用的是Java,我的图像过滤代码主要基于这里的过滤器:

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


海报边缘根据设置的后处理选项减少图像中的颜色数量(后处理),并查找图像的边缘并在其上绘制黑线。较大的宽区域具有简单的着色,精细的暗细节分布在整个图像中。

我怀疑您必须在多个尺度上进行此操作,以便过滤边缘响应

  • 在输入图像的高斯平滑金字塔的多个级别(比例)上运行边缘检测[sigma_min,sigma_max]
  • 然后,求和或选择跨刻度的最大边缘幅值
  • 使用原始图像进行后期处理(混合?)

  • 复制原始图像,然后应用。然后应用,并复制。最后,将经过后期处理的原件与副本相乘。在这一点上,你应该有一些接近海报边缘的东西:我假设Photoshop使用了比简单的导数过滤器(如Sobel)更复杂的东西来进行边缘检测。有一些边缘检测算法试图只找到“显著”边缘,即那些与人类视觉相关的边缘,即人类艺术家绘制线条草图时会绘制的边缘。一个古老且(相当)简单的算法朝着这个方向(至少有一点)发展,这就是。您应该能够找到这个的实现。谷歌为当前的研究文献提供了“突出的优势”,但不要期望在研究论文中出现实现或漂亮的伪代码

    关于后期处理:考虑到他们在SIGGRAPH的演讲,Adobe的人非常喜欢双边过滤(请谷歌,我不能再链接了),这是一种保留重要边缘的平滑技术。我认为,如果你应用双边过滤和事后消毒,你应该更接近你想要的外观。不幸的是,有效地实现双边滤波器并非易事

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


    我上面提到的双边过滤器,至少在计算机视觉领域,正逐渐被引导过滤器所取代(制图人员似乎还没有意识到引导过滤器)。引导滤波器实现了类似的结果,但更容易有效地实现。引导过滤器的精确算法是高效的,而高效的双边过滤需要近似值或极其复杂的算法。

    您可能走对了方向,这与我正在做的非常接近,但我正在寻找能准确告诉我该做什么的东西。我已经用不同的组合做了很多尝试和错误,但仍然没有产生预期的结果。如果不看源代码,就无法提出精确的解决方案。你能分享一下吗?我可以,但是因为代码没有做到这一点(结果是错误的,因为99%的可能性是效果序列是不正确的和缺乏的),我看不到它的价值。在这个例子中,我看到的是一个答案,上面写着“结果可以通过X,Y和Z实现”。这个案例的答案是包含“可疑”、“或者”等词。。。在那里输入键操作。。。缩短我的评论。总而言之:问题不在于现有的源头,问题在于我不知道如何达到效果。您所描述的与另一个anser类似,但实际的解决方案似乎在于缺少的细节,而不是现有过滤器的实际参数。Photoshop做了一些在这里没有指出的事情,我还没有弄明白。我得到了这个:左边是Photoshop版本,右边是编程创建的。这是我在Photoshop中通过同样的过程得到的。。。我不知道我是否做错了什么。你能用这个试试吗?不如我必须承认的第一个:你是在试图复制“黑暗扫描仪”/“清醒生活”效应吗?谢谢你的指点。实际上,我尝试了canny边缘检测,但测试图像的结果实际上比Sobel的结果弱一点(看起来canny产生了较弱的边缘,虽然更准确一点,我正在寻找更强的边缘,但不一定要那么准确)。谷歌双边过滤的结果,我认为你可能是对的。不幸的是,从算法上看,它似乎也非常不平凡。我得把那些旧的大学数学书翻出来……精巧的边缘实际上是“脆弱”的,因为它们只有1像素宽。精明的边缘仅仅表明那里有一条边缘。我会先检测出“好”的边缘,然后用放大等方法“生长”它们,可能与它们的长度成比例。经过几次测试,我现在得到的结果开始像PS的海报边缘。仍然没有,但现在我认为更多的是调整参数的问题。非常感谢你的帮助。现在,只需在合理的时间内运行筛选:P@T