Image 如何从图像(jpg、png等)中提取图层

Image 如何从图像(jpg、png等)中提取图层,image,image-processing,artificial-intelligence,computer-vision,layer,Image,Image Processing,Artificial Intelligence,Computer Vision,Layer,给定像CakePHP徽标这样的图像,如何将该图像转换回具有层的PSD。作为一个人,我可以很容易地解决如何将其转换回具有层的PSD。我可以看出背景是一个带有星形边缘的圆形。圆形的星形部分在后面,蛋糕图片在上面,单词CakePHP覆盖在这两张图片上 我可以使用Photoshop/Gimp工具将这些图像分为三个图像,并填充其间的区域。然后我有三层 作为一个人,很容易计算出大多数徽标和图像的分层,许多图像具有多层,CakePHP徽标只是一个例子。现实世界中的图像也有分层,在草的背景上可能有一个树层。我

给定像CakePHP徽标这样的图像,如何将该图像转换回具有层的PSD。作为一个人,我可以很容易地解决如何将其转换回具有层的PSD。我可以看出背景是一个带有星形边缘的圆形。圆形的星形部分在后面,蛋糕图片在上面,单词CakePHP覆盖在这两张图片上

我可以使用Photoshop/Gimp工具将这些图像分为三个图像,并填充其间的区域。然后我有三层

作为一个人,很容易计算出大多数徽标和图像的分层,许多图像具有多层,CakePHP徽标只是一个例子。现实世界中的图像也有分层,在草的背景上可能有一个树层。我需要一种从图像转换回分层表示的通用方法,理想情况下是一种软件解决方案

在没有程序化解决方案的情况下,是否有解决此问题或与此问题相关的论文或研究?我最感兴趣的是将人类构建的图像(如徽标或网站标题)转换回分层表示



我想指出这样做的一些好处,如果您可以自动将此图像转换为分层表示,那么修改图像就更容易了。例如,也许你想把蛋糕做得更小,如果计算机已经在红色背景上分层了蛋糕,你可以只缩放蛋糕层。这允许在没有图层信息的网站上对图像进行图层调整。

当您从图层表示转换为图像时,您正在丢失信息。例如,您不知道蛋糕后面背景层的像素值。此外,您无法确定图像的哪个部分属于哪个层

然而,在某些情况下,可能至少部分地恢复或估计该信息。例如,您可以尝试使用算法将图像分割为“层”。在您的示例中,基于颜色的简单分割可能会起作用

对于恢复背景中丢失的像素值,有一种所谓的技术,它试图根据图像的周围情况来估计图像中丢失的区域

最后,要恢复图像中文本的位置和内容,可以使用(OCR)方法


请记住,没有简单的算法可以解决比看起来更复杂的问题。但是,使用上述信息,您可以尝试至少部分地自动化您的问题。

如前所述,这是一项非常重要的任务。归根结底,这可能是最重要的 简单的表述为:给定一幅由 像素N,如何将其分配给M层

对于细分,这都是关于你能带来的先验知识 这是关于像素和像素组的哪些属性给出的“提示”(以及 我使用这个词是经过深思熟虑的!)至于它们属于哪一层

考虑哪怕是最简单的情况,只使用图像中的颜色。我可以 生成这5个“层”(对于色调值0、24、90、117和118):

使用此代码(在python/opencv中)

导入cv
#获得原始图像
orig=cv.LoadImage('cakephp.png')
#原版
简历ShowImage(“原版”,原版)
#转换为hsv,只获得色调
hsv=cv.CreateImage(cv.GetSize(orig),8,3)
色调=cv.CreateImage(cv.GetSize(原始),8,1)
sat=cv.CreateImage(cv.GetSize(原始),8,1)
val=cv.CreateImage(cv.GetSize(orig),8,1)
cv.CVT颜色(原始、hsv、cv.cv\U RGB2HSV)
cv.分割(hsv、色调、sat、val、无)
#简历ShowImage(“色调”,色调)
#循环查找有多少种不同的色调。。。
query=cv.CreateImage(cv.GetSize(orig),8,1)
结果=cv.CreateImage(cv.GetSize(原始),8,1)
对于范围(0255)内的i:
简历集(查询,i)
cv.Cmp(查询、色调、结果、cv.cv\u Cmp\u EQ)
#如果像素数相等-显示它们的位置

如果(cv.CountNonZero(结果)>1000):#嗯。。。有趣的问题。我只想指出,蛋糕中的“k”非常清楚地表示z顺序。OTOH,如何提取用于“蛋糕”的文本层使用红色笔划(特别是从“C”中明显可见,但在“e”中几乎完全不明显)?我认为,判断“PHP”是在“蛋糕”之上还是之下是没有依据的。嗨,蒂姆,这是什么脚本?我的意思是,什么语言,什么工具,什么库?我猜它的Python使用OpenCV。