给定像CakePHP徽标这样的图像,如何将这个图像转换回带有图层的PSD。作为一个人,我可以很容易地找出如何将其转换回带有图层的PSD。我可以看出背景是一个带有星形边缘的圆形。因此,圆形星形部分位于背面,蛋糕图像位于此顶部,CakePHP字样覆盖所有这两个图像。
我可以使用Photoshop / Gimp工具将这些图像分成三个图像并填充其间的区域。然后我有三层。
作为人类,很容易计算出大多数徽标和图像的分层,而且许多图像都有多层,CakePHP徽标就是一个例子。现实世界中的图像也具有分层,在草的背景上可能存在树层。我需要一种通用的方法将图像转换回分层表示,理想情况下是软件解决方案。
如果没有程序化的解决方案,是否有任何论文或研究可以解决这个问题或与此问题有关?我最感兴趣的是将人体构建的图像(如徽标或网站标题)转换为分层表示。
我想指出这样做的一些好处,如果您可以自动将此图像转换为分层表示,那么修改图像会更容易。例如,也许你想让蛋糕变小,如果计算机已经将蛋糕分层放在红色背景上,你可以缩放蛋糕层。这允许在没有图层信息的网站上对图像进行图层调整。
答案 0 :(得分:4)
当您从图层表示转换为图像时,您将丢失信息。例如,您不知道蛋糕后面的背景图层的像素值。此外,您无法确定图像的哪个部分属于哪个图层。
但是,在某些情况下,有可能至少部分地恢复或估计这些信息。例如,您可以尝试将图像分成"层"使用segmentation算法。例如,基于颜色的简单分割可能会起作用。
至于在背景中恢复丢失的像素值,有一种所谓的inpainting技术,它试图根据其周长来估计图像中的缺失区域。
最后,要恢复图像中文本的位置和内容,您可以依赖Optical Character Recognition(OCR)方法。
请记住,没有简单的算法可以解决您的问题,这个算法比看起来更复杂。但是,使用上述信息,您可以尝试至少部分地自动化您的问题。
答案 1 :(得分:4)
如前所述,这是一项非常重要的任务。最终,它可以是最多的 简单地表达为:给出由图像组成的图像(或者如果是真实照片的场景) 像素 N ,如何将它们分配到 M 层?
对于细分,所有关于之前的知识都可以带来 这是关于像素和像素组的属性给出“提示”(和 我建议使用这个词!)关于它们所属的层。
考虑使用图像中的颜色的最简单的情况。我可以 生成这5个“层”(对于色调值0,24,90,117和118):
使用此代码(在python / opencv中)
import cv
# get orginal image
orig = cv.LoadImage('cakephp.png')
# show original
cv.ShowImage("orig", orig)
# convert to hsv and get just hue
hsv = cv.CreateImage(cv.GetSize(orig), 8, 3)
hue = cv.CreateImage(cv.GetSize(orig), 8, 1)
sat = cv.CreateImage(cv.GetSize(orig), 8, 1)
val = cv.CreateImage(cv.GetSize(orig), 8, 1)
cv.CvtColor(orig, hsv, cv.CV_RGB2HSV)
cv.Split(hsv,hue,sat,val,None)
#cv.ShowImage("hue", hue)
# loop to find how many different hues are present...
query = cv.CreateImage(cv.GetSize(orig), 8, 1)
result = cv.CreateImage(cv.GetSize(orig), 8, 1)
for i in range(0,255):
cv.Set(query,i)
cv.Cmp(query,hue,result,cv.CV_CMP_EQ)
# if a number of pixels are equal - show where they are
if (cv.CountNonZero(result)>1000): # <-what is signficant?
cv.ShowImage(str(i),result)
cv.SaveImage(str(i)+".png",result)
cv.WaitKey(-1)
但是,即使在这里,我们也必须描述什么是“重要的” 属于掩码的像素数(在某种程度上我们可以错过一些 颜色)。我们可以开始聚类相似的颜色 - 但是在什么时候 密度是一个集群变得重要?如果它不仅仅是纯色, 但纹理相反,我们怎么形容呢?或者,推断那是什么 一层是另一层的一部分,还是在它的前面?或者,最终,有些 这些层似乎是我们人类所说的“字母”,所以应该是 所有相关......
很多关于计算机视觉分析的研究一般都试图采用 这个问题,并在一个可以编码和应用它的框架内进行改进 有效的先验知识...