python - 平滑非二进制图像的边缘

标签 python algorithm image-processing python-imaging-library edges

我正在使用 PIL (Python Imaging Library) 在 python 中制作一些照片编辑工具,我正在尝试制作一个将照片转换为“绘画”版本的程序。

我已经设法制作了一个程序,可以将照片转换成不同的颜色,但问题是我使用的算法是在每个像素上运行,这意味着生成的图像在颜色之间存在非常参差不齐的差异。

理想情况下,我想平滑这些边缘,但我不知道该怎么做!

我已经 checkout this site寻求一些帮助,但那里的方法产生的结果与我需要的完全不同。

我的起始图片: Starting Image

我的色彩鲜明的形象: Image with Distinct Colours

我想平滑上图中的边缘。

使用不太有效的方法的结果: Results of using he method which doesn't quite work

如您所见,使用该技术不会将边缘平滑成看起来自然的曲线;相反,它会产生锯齿状的边缘。

我知道我应该提供样本输出,但令人惊讶的是,我实际上并没有得到它,所以我会尽可能地描述它。简而言之,我想平滑不同颜色之间的边缘。

我见过一种叫做高斯模糊的东西,但我不太确定如何在这里应用它,因为我看到的答案总是提到某种阈值,而且通常与二值图像有关,所以我认为它不适用于此。

最佳答案

边缘增强与边缘平滑相反,因此这当然不是您应该使用的工具。

不幸的是,您几乎无能为力,因为边缘平滑确实可以平滑锯齿,但它也会破坏真实的边缘,从而导致图像模糊。保边平滑也是一个死胡同。

您应该看看提取图像“卡通部分”的方法。关于这个主题有很多文献,但通常都非常复杂。

关于python - 平滑非二进制图像的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51945233/

相关文章:

python - 如何在 Python 中使用线程?

objective-c - 如何从头开始在 iOS 上创建 JPEG 图像

java - Java中获取具有一定大小子集的集合的幂集

java - 这种循环的复杂性是什么?

.NET Graphics.drawstring

image-processing - 为什么这个 gif 似乎有 0ms 的持续时间?我怎样才能找到真正的持续时间?

python - 如何在 python 返回时强制调用类方法

python - 循环中的 plt.savefig 出错

python - Django 通过父 ID 查询,无需连接

java - 我们正在尝试开发井字游戏。我们应该使用什么算法?