一般传真机采用的抖动表数据是8×8的Bayes矩阵,在实验中采用该方法处理得到的效果并不理想,图像对比度不是很强烈,整体效果较暗。因此作者根据FPGA硬件处理的特性,采用16×16的抖动矩阵对传真图像进行处理。采用该方法适应了FPGA 芯片拥有丰富寄存器资源的特点,用来存储改进抖动表,在不影响处理速度的情况下,明显改进图像的处理效果,提高图像对比度,图像效果比较接近原图。从得出的效果图可以明显看出,改进方案比原有Bayer抖动表做抖动的图像对比度要好得多,代价为增加了一千多位寄存器。从而较好地解决了对图像二值化处理中对比度不强的问题。
(3)编码模块
将二值化后的图像数据经一维MH编码后交付通信模块使用。MH编码是一维改进的Huffman编码,是ITU-T T.4[4]标准中的一部分,ITU-T T.4标准的全称是三类传真机终端文档传输标准。MH编码具有效率高、容易扩展等特点。三类传真机一般都实现了一维MH编码和译码,有的也实现了二维MR编码,本文用硬件电路实现一维MH编码。对于二值信源来说,一幅传真图像是由扫描线上的像素组成的。而每一扫描线又总是由一些黑像素和白像素组成。将连续发生的黑像素为连‘1’,白像素为连‘0’,也称为黑游程和白游程。连‘1’的个数称为黑游程的长度,连‘0’的个数称为白游程的长度。黑白游程交替出现。针对游程编码,哈夫曼MH码元很好地解决了传真信源的压缩问题,是T.30协议中规定的编码方式之一。实现时通过读取像素信息存储FIFO判断是黑游程还是白游程。当发生了黑白游程切换时,根据黑白游程计数形成码表访问地址,根据地址查找码表得到对应的编码码元。MHC编码硬件模块图如图3所示。
该编码数据将封装在T30协议中进行传输,T30协议规定的每样张的数据传输格式如图4所示。其中EOL为End Of Line,即行同步码,格式为000000000001。同步码是紧跟在每一行扫描线之后的特殊码字,它在有效数据中不可能出现,因而在突发错误之后能重新建立同步。特殊地,每页文件的第一个数据之前也设置一个EOL。
填充码fill的作用是保证每扫描线,即每一行的数据传输时间不小于某一规定时间T,T为发送一行编码数据所用的最小时间,ITU-T T.4标准建议中规定T=20 ms,不足20 ms时间应加入填充码,其格式为长度不一的全“0”串。RTC为返回控制码,其格式为6个连发的EOL码,表示一页文件码的传输结束。