新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用FPGA来加速采用OpenCL的多功能打印机图像处理

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

作者:时间:2015-04-08来源:网络收藏

  图字:

本文引用地址:http://www.eepw.com.cn/article/272203.htm

  M每页扫描线

  N每扫描线像素

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

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

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

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

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

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

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

  

 

  图5:滤波算法的图形表示

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

  B.缩放

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

  

 

  图6:双线性插值

  图字:输入网格;输出网格;输入像素;输出像素

  输出像素OP1,1可以用下面的公式来计算:

  

 

  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.

  

 

  图7:CMYK LUT和单位正方体

  图字:

  第一张图:

  L*a*b*色彩空间

  下方注解:

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

  第二张图:

  青色点阵

  单位立方体

  格点——凭经验测量

  感兴趣的像

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

  每彩色平面有各自的LUT

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

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

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

  

 

  图8:CST四面体

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

  

 

  图9:CST四面体5分解图

滤波器相关文章:滤波器原理


fpga相关文章:fpga是什么


c语言相关文章:c语言教程


滤波器相关文章:滤波器原理


三维扫描仪相关文章:三维扫描仪原理


关键词: FPGA OpenCL

评论


相关推荐

技术专区

关闭