工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->综合电路图->综合电路图->用FPGA来加速采用OpenCL的多功能打印机图像处理

用FPGA来加速采用OpenCL的多功能打印机图像处理

作者:不爱吃窝瓜时间:2016-03-13

摘要:在高性能计算、娱乐和科学计算市场,OpenCL的采用在持续增长。OpenCL的灵活性和便携性使之成为了一个开发图像处理应用的优秀平台。然而,OpenCL尚未应用到硬拷贝打印机和多功能打印机(MFP)市场。传统上,打印机/MFP市场使用全定制系统级芯片(SoC或ASIC)、专用集成电路进行图像处理。在本文中,我们探讨了配合Altera SoC FPGA(现场可编程门阵列)的OpenCL在核心MFP图像处理流水线中的应用。核心图像处理流水线以每分钟大于90页信纸大小的全色RGB持续速率运行,图像分辨率为600DPI(每英寸点数),同时采用了成本有效的FPGA器件。相比运行在嵌入式CPU上的基于C语言的软件流水线,OpenCL流水线可实现至少40倍的性能提升,在高端台式CPU上的运行改善了5倍。

I. 引言

历史上,MFP和打印机厂商都是开发定制ASIC或SoC器件来执行图像处理操作。这些ASIC/SoC器件包括图像流水线,用以接受来自CCD或CIS传感器的RGB数据,执行滤波、缩小/放大、色彩空间转换、图像分割和半色调操作。然后,由此产生的经处理的图像使用减色着色剂进行打印:青色、品红、黄色和黑色。其目标是在打印副本上精确地再现原始文档,而不引入视觉假像。

在底层技术(如DDR内存和USB连接)变得过时之前,ASIC/SoC器件通常有三年的有限寿命。随着硅技术的不断萎缩,开发一个定制ASIC/SoC所需的投资在继续增加。一个采用双核处理器、必要的连接、DDR3内存控制器、图像处理、GPU、LCD控制器等的28纳米SoC的设计、开发和交付需要花费超过1000万美元的成本。

取决于许多因素,大型SoC/ASIC器件的开发周期要花18至30个月,包括新IP的数量和大小、利用以往设计的能力、设计团队经验和成熟的有针对性的硅技术。

打印机/MFP市场的产品周期是24到36个月的时间。打印机/MFP市场成长速度平缓,增加了以较低成本和较短开发周期提供更多功能的竞争压力[1]。

随着ASIC/SoC开发周期接近同一时间MFP产品的生命周期,MFP/打印机厂商需要一个新的平台来缩短开发和部署周期。基于SoC的OpenCL和FPGA的组合为解决这一难题提供了一个有趣的解决方案。

II. MFP图像处理流水线背景

一个重要的研究机构已经在文档图像处理领域积累了近20年的经验[2][3]。大部分早期工作都侧重于图像处理的基础知识,包括提供统一色彩的校准输入传感器数据、去除来自传感器噪声的滤波,实现图像尺寸缩小或放大的缩放算法,以及实现使用二进制像素打印连续色调图像数据的半色调。当前的文档图像处理研究和开发处于图像分析、内容提取和数据压缩技术领域。[4][5][6]

所有MFP文档图像处理产品都可执行一系列基本功能——复印、扫描和打印。图1用图形说明了一台个MFP设备的基本功能或流水线。复印和扫描的操作相类似,开始于从一个扫描设备到设备无关的彩色空间的原始RGB数据转换。复印操作进一步处理设备无关的色彩空间图像,并创建用于打印的CMYK图像。扫描操作在设备无关的色彩空间图像上执行一组不同的图像处理操作。这些操作可以包括:图像分析、用不同频率内容将图像分割为多个图像层、OCR、光学字符识别和数据压缩。然后,所产生的图像转被移到任一本地存储介质,如USB闪存驱动器或网络设备。

图字:

来自CCD或基于CIS扫描仪的RGB;分割

扫描仪接口;校准和调整;CST(RGB到Lab);滤波器;缩放R & E;CST(Lab到CMYK);调整;误差扩散;无损或有损压缩;解压缩调整和/或操作

来自网络的PS/PCL/其他PDL;解译;显示列表;渲染器;位图或字节图;调整;半色调;无损压缩;图像存储;无损解压缩;图像调整;引擎接口

有损解压缩;有损压缩;至引擎

出口处理;至网络

外部接口;微观图像处理操作;图像存储;通用CPU操作;宏观图像处理操作

打印功能接收一个采用PDL(页面描述语言)的编码,或图形显示接口格式的文件。在采用PDL文件的情况下,MFP设备必须首先解释文档语言,并创建一个原始对象列表。渲染器捕获这些对象,并将其转换成数字CMYK位图/位图图像。所产生的数字图像可被进一步处理和随意压缩。GDI打印机不需要解释过程,因为传送到打印机的图像是一个显示对象的列表。

一旦打印或复印流水线创建了CMYK位图/位图图像,图像即被发送到引擎在所需介质上打印。

本文的重点是一个OpenCL MFP核心复印流水线(CCP)的开发,如图2所示。

图字:

滤波器;缩放R & E;CST(Lab到CMYK);调整;误差扩散

图像存储

源图像5100x6600x24位LAB;目标图像5100x6600x32位CMYK

III. MFP核心复印流水线

CCP由5个内核组成:7×7滤波器;用pad/crop缩放或减小与放大;色彩空间转换;调整和误差扩散。我们将简要地回顾各个算法和相关的内存需求。

A. 7×7滤波器

7×7滤波器是一个2D对称滤波器,可降低图像噪声。它的每一行需要跨连续7行乘连续7个像素的49个像素的上下文(context)。MFP应用通常使用一组系数来实现一个平均或锐化滤波器。7×7滤波器的一般形式是:


由于系数值经常重复,滤波处理可以避免重复的乘法和加法。相反,乘以相同系数的像素可首先加入,然后与滤波器系数相乘一次。图4直观地显示了潜在的优化。这个数字仅为了清晰起见,并不代表OpenCL设计。

图字:

M每页扫描线

N每扫描线像素

像素;减少的滤波矩阵;有相同颜色的条目分享共同系数

工作矩阵对称滤波器计算的高度概括,针对左到右滑动进行了优化,包括:

1. 针对每一个加载的新的像素栏3种加法A

2. 针对属于图4所示4×7矩阵中相同滤波器系数像素的18种加法

3. 针对每个系数一个C0至C9的10种乘法M

4. 计算系数乘法最终结果的9种加法

那么,计算的总数是10M + 3A + 18A + 9A = 10M + 30A。图5示出了计算树。

随着滤波器在图像上从左至右的滑动,仅需要加载最右侧像素列,即7个像素。逻辑上,这涉及将内部像素列移到左边,并在右侧加上新的像素列。

B. 缩放

缩放模块使用双线性插值来减小和/或放大一幅图像。双线性插值是一个众所周知的算法,在所需的新输出像素周围使用了4个输入像素。图6示出了要测试像素的双线性插值输入和输出网格。

C. 色彩空间转换

CCP采用设备无关的色彩空间数据,通常是LAB格式,并将其转换为设备相关的CMYK色彩空间。不幸的是,没有公式化的方法来直接转换L*a*b*至CMYK。每台打印机的着色剂以非线性方式进行交互。打印行业的公认方法是打印测试斑点,测量所得色,并创建一组C、M、Y和K查找表,即LUT。关键是要尽量减少LUT的大小,同时提供最高的色彩保真度。为了计算这些存储在LUT之间的值,我们必须使用一个插值方案。有许多方法来执行插值,但四面体插值法被广泛认为是最准确的。

顾名思义,四面体插值法使用4个已知点来计算一个中间点。在我们的L*a*b*情况下,这些已知点的每一个都具有对应于输入色彩空间的三个维度。三个输入维度L、a、b形成一个我们可以用来确定输出像素的立方体。图7示出了色彩空间和LUT概念。注意每个输出彩色平面都有独立的LUT。

图字:

第一张图:

L*a*b* 色彩空间

下方注解:

对于每24位输入L*a*b*像素,可能有224个32位CMYK输出像素。这相当于64MB LUT!

第二张图:

青色点阵

单位立方体

格点——凭经验测量

感兴趣的像

要使LUT大小降低到一个合理水平,我们可执行以下操作:

每彩色平面有各自的LUT

每个LUT有代表点阵点的4096个条目

算法首先发现期望像素点驻留的单位立方体

一旦算法确定了哪一个单位立方体包含要测试的输出像素,我们必须从一组8个已知像素中计算出输出像素。这是三线性插值的实际情形。四面体插值法利用一个单位立方体可以被划分成一组6个非重叠四面体的方法,其每个终点都位于单位立方体的顶点。使用一个四面体(有4个点)内插来削减一半像素数时,我们必须使用插值结果。图8以图形示出了六个四面体。

CST算法首先确定了输出像素(P)驻留在哪个四面体中,并使用了4个已知输出像素插入最终结果——见图7。图9示出了四面体5中的像素P。该算法计算了每个单位立方体轴端点和像素dx、dy、dz之间的距离,并使用了已知点之间的线性插值距离。

D. TRC调整

TRC调整算法是一个简单的LUT。它允许C、M、Y、K值的进一步调整,以校正非线性色调再现。具体C、M、Y、K LUT条目凭经验来测量。

E. 误差扩散

最后阶段执行半色调功能。彩色激光MFP产品使用一个激光系统来消除感光介质上的电荷。无论电荷清除的是C、M、Y、K,墨粉都不能转移到感光体。激光束扫过移动的感光体,被调制来创建一个倒置的图像。调制的最小时间周期是一个像素。在反转图像被写入感光体后,它经过一个墨粉分配器附近。然后,带有相反电荷的墨粉被吸引到电荷存在的感光区。墨粉“粘”到感光体上。最后一个步骤是将感光体上的图像转印到纸张或其他介质上。单个像素或开或关,实现二进制的1过程。来自TRC内核的8位CMYK像素必须半色调或二进制化,以驱动打印机中的激光系统。有许多算法可以将连续色调数据转换为二进制数据。误差扩散是MFP/打印机中使用的一种通用算法。我们选择了实施众所周知的弗洛伊德-斯坦伯格(Floyd-Steinberg)误差扩散算法的一个变种,它有简单的算术修正系数[7]。



关键词: TRC调整 滤波器

评论

技术专区