用FPGA來加速采用OpenCL的多功能打印機圖像處理
圖字:
本文引用地址:http://www.ex-cimer.com/article/271266.htmM每頁掃描線
N每掃描線像素
像素;減少的濾波矩陣;有相同顏色的條目分享共同系數(shù)
工作矩陣對稱濾波器計算的高度概括,針對左到右滑動進行了優(yōu)化,包括:
1.針對每一個加載的新的像素欄3種加法A
2.針對屬于圖4所示4×7矩陣中相同濾波器系數(shù)像素的18種加法
3.針對每個系數(shù)一個C0至C9的10種乘法M
4.計算系數(shù)乘法最終結(jié)果的9種加法
那么,計算的總數(shù)是10M + 3A + 18A + 9A = 10M + 30A.圖5示出了計算樹。
圖5:濾波算法的圖形表示
隨著濾波器在圖像上從左至右的滑動,僅需要加載最右側(cè)像素列,即7個像素。邏輯上,這涉及將內(nèi)部像素列移到左邊,并在右側(cè)加上新的像素列。
B.縮放
縮放模塊使用雙線性插值來減小和/或放大一幅圖像。雙線性插值是一個眾所周知的算法,在所需的新輸出像素周圍使用了4個輸入像素。圖6示出了要測試像素的雙線性插值輸入和輸出網(wǎng)格。
圖6:雙線性插值
圖字:輸入網(wǎng)格;輸出網(wǎng)格;輸入像素;輸出像素
輸出像素OP1,1可以用下面的公式來計算:
C.色彩空間轉(zhuǎn)換
CCP采用設(shè)備無關(guān)的色彩空間數(shù)據(jù),通常是LAB格式,并將其轉(zhuǎn)換為設(shè)備相關(guān)的CMYK色彩空間。不幸的是,沒有公式化的方法來直接轉(zhuǎn)換L*a*b*至CMYK.每臺打印機的著色劑以非線性方式進行交互。打印行業(yè)的公認(rèn)方法是打印測試斑點,測量所得色,并創(chuàng)建一組C、M、Y和K查找表,即LUT.關(guān)鍵是要盡量減少LUT的大小,同時提供最高的色彩保真度。為了計算這些存儲在LUT之間的值,我們必須使用一個插值方案。有許多方法來執(zhí)行插值,但四面體插值法被廣泛認(rèn)為是最準(zhǔn)確的。
顧名思義,四面體插值法使用4個已知點來計算一個中間點。在我們的L*a*b*情況下,這些已知點的每一個都具有對應(yīng)于輸入色彩空間的三個維度。三個輸入維度L、a、b形成一個我們可以用來確定輸出像素的立方體。圖7示出了色彩空間和LUT概念。注意每個輸出彩色平面都有獨立的LUT.
圖7:CMYK LUT和單位正方體
圖字:
第一張圖:
L*a*b*色彩空間
下方注解:
對于每24位輸入L*a*b*像素,可能有224個32位CMYK輸出像素。這相當(dāng)于64MB LUT!
第二張圖:
青色點陣
單位立方體
格點——憑經(jīng)驗測量
感興趣的像
要使LUT大小降低到一個合理水平,我們可執(zhí)行以下操作:
每彩色平面有各自的LUT
每個LUT有代表點陣點的4096個條目
算法首先發(fā)現(xiàn)期望像素點駐留的單位立方體
一旦算法確定了哪一個單位立方體包含要測試的輸出像素,我們必須從一組8個已知像素中計算出輸出像素。這是三線性插值的實際情形。四面體插值法利用一個單位立方體可以被劃分成一組6個非重疊四面體的方法,其每個終點都位于單位立方體的頂點。使用一個四面體(有4個點)內(nèi)插來削減一半像素數(shù)時,我們必須使用插值結(jié)果。圖8以圖形示出了六個四面體。
圖8:CST四面體
CST算法首先確定了輸出像素(P)駐留在哪個四面體中,并使用了4個已知輸出像素插入最終結(jié)果——見圖7.圖9示出了四面體5中的像素P.該算法計算了每個單位立方體軸端點和像素dx、dy、dz之間的距離,并使用了已知點之間的線性插值距離。
圖9:CST四面體5分解圖
fpga相關(guān)文章:fpga是什么
三維掃描儀相關(guān)文章:三維掃描儀原理
評論