2012-01-15 136 views
1

使用该图像作为参考的“卡通”概要:使用PHP创建图像

enter image description here

我如何使用PHP和给定的原始图像输出的轮廓版本如那些下面?我可能会使用GD。

,我可以如同我要求最好的图像低于克里斯托弗·沃肯的一个。第一列,第三下。

+1

你图像集不均匀。其中一半是轮廓,另一半是二值化图像。制作每种类型需要不同的算法。 – Blender 2012-01-15 20:08:20

+0

我认为如果您通过将图像描述为“侧影”来搜索答案,您可能会有更好的运气。 – esqew 2012-01-15 20:08:36

+0

[将照片变成卡通使用PHP]可能的重复(http://stackoverflow.com/questions/4062365/turning-photo-into-cartoon-using-php) – 2012-01-15 20:11:19

回答

1

Blender的评论是重要的:这取决于你想要的“卡通”形象的类型,不同类型的处理是必需的。自动确定需要什么类型的图像处理可能是不可行的。

你可以通过实现3项或4个不同的图像处理技术,为自己节省很多的麻烦,每幅图像上运行的所有的技术,然后让用户选择处理后的图像看起来最好的。

一些加工技术包括以下内容:

  1. Sobel边缘探测器。简单的概念,简单实施。 (请参阅“卷积”下方)
  2. 灰度图像二值化。将图像转换为灰度(8位黑白),找到的阈值,然后转换图像,使得高于所述阈值的所有像素是白色的,并且低于阈值的所有像素是黑色的。
  3. 二值化转换为黑白色&,然后区域标记找到图像中最大的对象,然后填写洪水填补在大对象中的任何“洞”。

如果您的图像看起来最像Christopher Walken样本,那么应该使用某种形式的二值化。为了弄明白这一点,使用Photoshop或GIMP中的“Posterize”过滤器。二值化是一个极端情况,所有颜色(或“灰度”图像,所有亮度)都被缩减为两个:纯黑色和纯白色。自动选择正确的阈值可能会非常棘手,因此它可以帮助为用户提供调整阈值的方法。

你可能会发现,一个简单的二值化将无法正常工作,以及你想,但我会建议得到这些代码第一个工作日,找出其弱点,然后再鼓捣。

要了解有关的阈值,二值化,区域标记等,检查出图像处理的最广泛使用的教科书中的一个:由Gonzalez和伍兹(第3版)

数字图像处理

http://www.amazon.com/Digital-Image-Processing-Rafael-Gonzalez/dp/013168728X

(零售价是很高的。检查addall.com找到更便宜的国际版,其成本可能低至$ 35)

只要您可以访问各个像素,编写单个像素,使用矩阵等,就可以实现图像处理。在GD你会想看看内置函数来执行卷积:

http://www.php.net/manual/en/function.imageconvolution.php

要使用索贝尔找到垂直线,3×3的内核是这样的:

|-1 0 1| 
|-2 0 2| 
|-1 0 1| 

将内核旋转90度,并且您有一个内核来查找水平线。您可以在维基百科阅读更多关于索贝尔内核:

http://en.wikipedia.org/wiki/Sobel_operator

1

Jaguar库支持30多种边缘检测类型,包括索贝尔

,你可以做你想做的很容易地看到Edge Detection

+1

Jaguar,tks很棒! – 2016-05-21 00:22:46