用FPGA来加速采用OpenCL的多功能打印机图像处理
图字:
本文引用地址:http://www.amcfsurvey.com/article/271266.htmM每页扫描线
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是什么
三维扫描仪相关文章:三维扫描仪原理
评论