【实用工具】【图像处理,超大图片识别,方案篇:化繁为简】

前言

最近有个项目需要对超大图片(分辨率大于90000 x 60000)内容进行识别,且图片上限不确定(客户使用专业制图工具生成);其中,样本选取TIF,JPG两种格式样本如下。
在这里插入图片描述
如图1所示,x3000.TIF分辨率为92127x63492,静态图片大小为650M
图2 JPG超大图片截图如图2所示,x2000.jpg分辨率为61418x42328静态图片大小为69.7M
那么windows自带看图软件打开以上图片表现如何,我在项目中如何解决此类问题呢?

1. 主流看图软件识大图

1.1 windows自带软件

(1)windows画图软件(mspaint.exe)。
加载x2000.jpg(69.7MB, 分辨率61418x42328)图片,打开失败。 图3 画图打开文件失败
(2)windows照片查看器
加载x2000.jpg(69.7MB, 分辨率61418x42328)图片,提示“内存不足”;如下图所示。
图3 照片查看器内存消耗大于3G
通过图3可知,打开x2000.jpg之前内存占用为4.19G,打开图片后峰值内存达到7.45G;且报出“内存可能不足”。则可知windows照片查看器占用内存 大于 3.26G(7.45-4.19),如此大的信息量加载,时间消耗也是巨大的。

1.2 photoshop

选取经典的photoshop软件为例,当打开x2000.jpg;photoshop峰值内存达到2G左右,图片原始大小7.26G, 如下图所示。
图4 photoshop识别大图

1.3. ACDSee

ACDSee整体表现较为优异,峰值内存约为300M左右;不随图片变大而上升。显示方式上,类似于逐行扫描的那种,一块一块向下逐渐显示;最后完成整图的显示。
ACDSee的解决方案,即是逐块进行加载;这也是在章节3中提到的重采样工具的设计思路。
ACDSee识别大图

2. 直接识别

2.1. 存在的问题

原始的图片太大;一般应用程序无法提供如此大的内存来加载原始图片(如x2000.jpg,原始图片大小7.26G, 压缩为jpg后大小为69.7M).目前,ocr直接识别会导致以下问题。
(1)ocr是基于区域识别的,如果分辨率过高导致识别窗口始终只能覆盖汉字的局部,如下图所示,假设屏幕为识别窗口,能捕获的文字如下图所示。
图6 ocr识别大图示意图
图6中,因对于9W*6W分辨率的打不开,实际图分辨率为22749x16722;将其放大5倍(500%),得到9W x 6W图的示意效果。
(2)对于市面上主流的图片识别或处理软件,大多是完全载入;当遇到分辨率过高时(如x2000.jpg;图片原始大小7.26G),如无优化会导致软件内存不足无法载入。测试过程中,windows的画图(mspaint.exe),自带识图(调用dlhost.exe)等都会导致弹出“无法载入”,卡死现象。

2.1. 改进思路

针对白底黑字的识别区域,如进行等比例缩放,选取有效区域进行针对性识别;是否会提升识别率呢,经过试验不影响识别效果; 以下是某“检查软件”识别效果。
图7 缩放识别后效果

3. 改进后识别

对于白底黑字的文字识别场景,分别实验“重采样”、“图片裁剪”因素对于识别率的影响。从实验结果看,对于白底黑字类样本,ocr识别率可迅速提升。

3.1 重采样

重采样通俗一点就是,将图片栅格化,每个栅格包含N个像素点,使用重采样算法输出所有栅格的输出值;输出图像采样率降为原有的1/N。常用的重采样算法如下(详细会在下一篇进行详细介绍)。

  1. 最邻近法。
  2. 双线性内插法。
  3. 三次卷积内插法。
    使用重采样工具(自研),对图片进行处理后,使用OCR识别图7所示。

3.2. 裁减图片

将图片识别区域变小,即对图片进行裁减后;经实验对于高分辨率的图片,提升识别率影响不大。但降低分辨率后,使用裁剪可提升识别效果。

4.结语

以上场景对于白底黑字图片,效果尤为明显;其中,图片转换工具为自研,可供大家交流学习。因该模块应用于正式项目,需提供MAC地址限制授权;大家可邮件联系:ausable@163.com,小波,或在评论区留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值