使用DjVu工具进行背景/前景分离?

时间:2010-12-23 08:10:55

标签: image image-processing automation background document

我最初正在开发自己的background removal algorithm,但如果我只能理解如何使用它,那么流行的文档格式DjVu似乎有自己的前景/背景分离功能。

引用DjVu文档:

  

DjVu有3种基本的“模式”:

     
      
  1. DjVuText - 黑白(双色)文档
  2.   
  3. DjVuPhoto - 连续色调图像,如照片,扫描图形艺术等。
  4.   
  5. DjVuLayered - 彩色文档,如杂志,目录,历史文档等。
  6.         

    使用 DjVuLayered 模式压缩到DjVu将生成30KB到100KB之间的文件,其中5到40KB将用于前景层,其余用于背景和图片。

对于软件集成:

  

DjVuLibre包括一个独立的查看器,一个浏览器插件(适用于Mozilla,Firefox,Konqueror,Netscape,Galeon和Opera),以及命令行工具(解码器,编码器,实用程序)。 / p>

我是如何使用DjVu工具分离给定扫描文档的背景和前景的?

1 个答案:

答案 0 :(得分:6)

如果从扫描仪扫描文档,则图像只是像图像一样的平面位图。没有这样的层或对象。只是像素和更多像素。要使DjVu成为分层文档,必须将其生成为分层文档。


编辑答案:

抱歉,我不知道。我做了一些研究,你是对的。但是,需要在DjVu编码设置中打开分层选项。告诉编码使用特殊的图像处理算法来搜索前景和背景对象,并将它们保存到单独的图层中。

http://djvu.sourceforge.net - DjViLibre是一个C ++库,可以满足您的需求。

WinDjView - http://windjview.sourceforge.net/是一个基于DjVuLibre的不错的DjVu文件查看器。它有一个选项可以查看Foreground或Background对象。因此,在挖掘c ++代码之前,这将是测试算法有多好的好方法。

我建议将一些扫描的TIFF / JPEG文件上传到http://any2djvu.djvuzone.org/,然后使用WinDjView查看前/后分离的结果。我上传了1色JPEG文档,结果给人留下了深刻的印象。

WinDjView的源代码可在http://windjview.cvs.sourceforge.net/viewvc/windjview/windjview/获得 - RenderThread.cpp - 函数CRenderThread :: Render()是WinDjView中前景/背景查看功能的图层分割/查看代码。

还有一份PDF文档解释了该算法的工作原理 - “DJVU文档压缩的一般分段方案......” - 如果您使用“vincent djvu分段”执行Google搜索,然后单击“快速查看”链接第一个结果然后你可以阅读PDF。原始PDF已不再可用。

我将不得不自己做一些测试。我想知道商业应用的许可费是多少?

我希望这能比我的第一次尝试更好地回答你的问题。我第一次出现时看了一下DjVu,出于某种原因忽略了这个功能。


其他信息

我上传了大约10份文件并得出以下结论。 DjVu无法将300dpi黑白图像处理为前/后层。黑白转换图像的整个页面仅包含在前景中。当您上传到any2djvu时,它首先会询问您是否是黑白或彩色文档。当您选择B / W时,您将失去支持我的理论的后台处理选项,自动背景分离不支持B / W.前/后分离适用于灰度和彩色图像。我没有足够的扫描图像来测试它的表现如何。

不支持B / W分离的事实可能表明DjVu多年前在文档管理行业没有起步的部分原因。当它第一次出现时,大多数计算机都有足够的时间处理,校正和去除黑白图像。因此,执行灰度或彩色图像处理是不可行的,并且出于速度原因,大多数解决方案都是B / W.如果我们当时正在使用彩色图像,那么DjVu将是一个非常好的解决方案。 DjVu在发布时,在扫描OCR的应用程序时没有多大用处。尽管如此,这是一项伟大的技术。