使用此图片作为参考:
如何使用PHP并给出原始图像,输出大纲版本,如下所示?我可能会使用GD。
我能满足自己要求的最佳形象是下面的Christopher Walken。第1列,第3列。
答案 0 :(得分:1)
Blender的评论很重要:根据您想要的“卡通”图像的类型,需要不同类型的处理。自动确定需要什么类型的图像处理可能是不可行的。
通过实施3种或4种不同的图像处理技术,在每张图像上运行所有技术,然后允许用户选择看起来最佳的处理图像,您可以省去很多麻烦。
一些处理技术包括以下内容:
如果您的图像看起来与Christopher Walken样本最相似,那么某种形式的二值化应该可行。要修补此问题,请使用Photoshop或GIMP中的“Posterize”过滤器。二值化是海报化的一个极端情况,所有颜色(或“灰度”图像,所有亮度)都压缩到两个:纯黑色和纯白色。自动选择正确的阈值可能会非常棘手,因此可以为用户提供调整阈值的方法。
你可能会发现简单的二值化不会像你想的那样工作,但我建议先让代码工作,找出它的弱点,然后再进一步修补。
要了解有关阈值处理,二值化,区域标记等的更多信息,请查看最常用的图像处理教科书之一:
Gonzalez and Woods(第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
要使用Sobel查找垂直线,3x3内核将如下所示:
|-1 0 1|
|-2 0 2|
|-1 0 1|
将内核旋转90度,你有一个内核来查找水平线。您可以在维基百科上阅读有关Sobel内核的更多信息:
答案 1 :(得分:1)
Jaguar图书馆支持超过30种边缘检测类型,包括 Sobel
您可以轻松地查看Edge Detection