图像数据的预处理,从'P','RGBA','RGB'多种mode的图像说起

‘P’,’RGBA’,’RGB’这是PIL Image读图可能出现的三种mode,每种mode的图片数据都有不同的组织形式,当训练/测试数据都是一堆图片时,尤其是那种没人帮你清洗的数据时,自己就要留神了,否则模型还没跑起来就给提前自己挖了个坑。

首先,先容许我吐槽一下OpenCV的两个抽风,我用的python接口的(估计没怎么维护吧,所以有bug),用cv2.imread读图:

对’RGBA’图的抽风

‘RGBA’的图像,按照文档所述:
这里写图片描述

我把flag置为-1,然而读出来的还是3通道的(alpha通道不见了),置成0,1倒是确实是RGB和Grayscale。

对’P’图的抽风

对于mode为’P’的图,制作本来就有点生僻。用cv2.imread去读的话,读不出来,怎么读都是NoneType。


然而,这两个OpenCV的抽风问题在PIL这里就不存在了,感觉还是PIL大法好,不管图像是什么mode,都能原汁原味地读出来。

而且,幸运的是,可以很简单的把’RGBA’和’P’ mode的图像转换成’RGB’图:

### 收据预处理的技术方法与工具 #### 一、图像边框调整 在进行OCR识别前,收据图像可能由于拍摄角度或其他原因存在不合适的边框尺寸。为了提高识别精度,可以通过调整边框大小优化输入数据的质量。例如,使用 **ImageMagick** 这样的开源工具能够有效地裁剪或缩放图像,从而减少因边框过大或过小带来的干扰[^3]。 #### 二、去除透明度(Alpha通道) 当收据图片包含透明背景或者复杂的叠加效果时,Tesseract OCR引擎可能会受到干扰。在这种情况下,可以利用leptonica库中的`pixRemoveAlpha()`函数移除alpha分量。该操作会将透明部分与白色背景融合,进而改善后续文字提取的效果[^4]。如果发现此过程对特定场景下的字符造成不良影响,则建议采用其他方式预先处理图像,比如颜色反相等手段。 #### 三、基于机器学习的高级预处理方案 对于更加复杂的情况,还可以引入机器学习技术来进行更精细的数据准备工作。这些技术涵盖了从基础的概念定义到具体算法的设计实施等多个方面[^2]。通过训练神经网络模型自动完成诸如去噪、纠偏之类的任务,不仅提高了效率而且增强了系统的鲁棒性。 #### 四、实际应用案例——合合信息的成功经验分享 值得一提的是,在最近举办的ICDAR竞赛上,某公司展示了其先进的图像篡改检测能力,并最终赢得冠军头衔[^5]。这项成就表明现代OCR解决方案已经不仅仅局限于简单的光学字符读取层面,而是向着智能化方向快速发展。这也为我们提供了很好的借鉴意义:即如何结合多种先进技术构建高效的票据扫描流程体系。 ```python from PIL import Image, ImageOps def preprocess_image(image_path): img = Image.open(image_path) # Remove alpha channel by converting to RGB mode if img.mode in ('RGBA', 'LA') or (img.mode == 'P' and 'transparency' in img.info): img = img.convert('RGB') # Invert colors as an alternative preprocessing step inverted_img = ImageOps.invert(img) return inverted_img ``` 上述代码片段展示了一个简单实用的例子,演示了如何去掉PNG文件里的透明层以及翻转整个画面色彩对比度的操作步骤。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值