我最初是在考虑开发自己的background removal algorithm,但似乎流行的文档格式DjVu如果仅能理解如何使用它,则具有自己的前景/背景分离功能。
引用DjVu文档:
对于软件集成:
有什么想法可以与DjVu工具一起使用来分离给定扫描文档的背景和前景吗?
最佳答案
如果从扫描仪扫描文档,则图像只是像图像一样的平面位图。没有这样的图层或对象。仅像素和更多像素。为了使DjVu成为分层文档,必须将其生成为分层文档。
编辑答案:
抱歉,我不知道。我做了一些研究,你是对的。不过,需要在DjVu编码设置中打开分层选项。告诉编码器使用特殊的图像处理算法搜索前景和背景对象,并将其保存到单独的图层中。
http://djvu.sourceforge.net-DjViLibre是一个C++库,可以满足您的需求。
WinDjView-http://windjview.sourceforge.net/是一个基于DjVuLibre的不错的DjVu文件查看器。它具有查看前景或背景对象的选项。因此,这是在深入研究c++代码之前测试算法性能的好方法。
我建议将一些扫描的TIFF/JPEG文件上传到http://any2djvu.djvuzone.org/,然后使用WinDjView查看前后分离的结果。我上传了1色JPEG文档,结果令人印象深刻。
可以在http://windjview.cvs.sourceforge.net/viewvc/windjview/windjview/上获得WinDjView的源代码-RenderThread.cpp-函数CRenderThread::Render()是WinDjView中前景/背景查看功能的图层拆分/查看代码。
还有一个PDF文档,解释了该算法的工作原理-“DJVU文档压缩的一般分段方案...”-如果您使用“vincent djvu segmentation”执行Google搜索,然后单击1st的“Quick View”链接结果,您可以阅读PDF。原始的PDF不再可用。
我将不得不自己做一些测试。我想知道商业应用程序的许可费用是多少?
我希望这能比我的第一次尝试更好地回答您的问题。我第一次看DjVu时就发现了它,出于某种原因忽略了此功能。
附加信息
我又上传了约10份文档,并得出以下结论。 DjVu无法将300dpi黑白图像处理为前/后层。黑白转换图像的整个页面仅包含在前景中。当您上载到any2djvu时,它首先询问您是黑白文档还是彩色文档。当您选择“黑白”时,您将失去支持我的理论的后台处理选项,而自动背景分离不支持黑白。前后分离适用于灰度和彩色图像。我没有足够的扫描图像来测试其性能如何。
不支持B/W分隔的事实可能表明DjVu多年前未在文档管理行业中获得成功的部分原因。刚问世时,大多数计算机的处理时间,黑白图像的去歪斜和去斑都很困难。因此,执行灰度或彩色图像处理是不可行的,并且出于速度原因,大多数解决方案都是黑白方式。如果我们当时使用彩色图像,那么DjVu将是一个很好的解决方案。 DjVu发行时,在OCR扫描应用程序中使用不多。即使在今天,这也是一项伟大的技术。
关于image - 使用DjVu工具进行背景/前景分离?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4516901/