JPEG2000 集成开发 之三

  • 应用背景

需要使用ADF高速扫描仪,扫描卡片并OCR部分内容、条码,校对后上传至后台应用。卡片为A3尺寸,白纸印表格+贴条码标识+印章戳记,24位真彩色,需要双面扫描,能接受的最低标准为扫描 200 dpi,每天数据量约600-800张。应用是用delphi写的,上传使用ftp。

这样的话,裸bmp文件将达到20MB+,即使用jpeg也将达到 600KB+ 。 最初系统使用jpeg存储,为了降低后台存储数据量,拟打算使用jpeg2000格式。经过初步测试: 一张典型的卡片: 原始651KB的jpeg文件(bmp转换而来,75%质量),  转换成jp2格式后,文件尺寸减小为 235KB,同时图像质量降低不多(肉眼观察图像,感觉细节质量损失不超过两成), 效果还是很明显的。

最好的目标:从twain 抓数据后,直接encode 成 jp2文件,且应用的界面原生支持jp2图片的浏览、缩放、旋转...
次一级目标:twain、界面处理过程不变, 仅仅在upload到后台前 转换为jp2; 这样的方案技术难度要简单很多,风险也会小很多,也是实际选择的方向。

  • 核心SDK选择


j2kcodec- demo详细、有文档,支持delphi、.net C++ 等多种开发。网上搜索它的广告、链接也是最多的,但是试用了一把,发现仅仅支持jpeg2000的解码,没有编码入口, 没有真亏了还叫 "codec"

jasper- 开源方案,C++ 编写,支持win32形式的dll调用。 实现了完整的 JPEG-2000 Part-1 standard 。经过搜索,发现在开源方案中很流行的, K-Desktop、Ghostscript、 Xnview等 软件都是用的它的方案。

kakadu- 收费方案,澳大利亚某大学出品,非商业用途个人使用免费。demo完整,有现成的command 命令行可供使用(供演示用的)。 如果要深度集成,必须付费购买lib obj dcu 等。

  • KDU 集成

使用 kdu_compress kdu_expand 两个exe 。 简要用法:

//Codec
kdu_compress -i 002.bmp -o 002-[rate0.25].jp2 -rate 0.25

-i 源图片文件,支持的后缀有TIFF, RAW (big-endian), RAWL (little-endian), BMP, PBM, PGM and PPM
-o jpeg2000格式的目标文件,后缀用 jp2
-rate 表示重采样率 ( expressed in terms of the ratio between the total number of compressed bits (including headers) and the product of the largest horizontal and  vertical image component dimensions), 经验值是 0.25 刚刚好

//Decode
kdu_expand -i 002-[rate0.25].jp2 -o 002.bmp
-i 源jp2 图片
-o 目标解压好的bmp图片

猜你喜欢

转载自explorer.iteye.com/blog/1447985