Shear of an Image

簡短描述

檔案: \examples\Processing\Geometry\ShearLine\LineShear_V02.va

預設平台: mE5-MA-VCL

簡短說明

具有線性插值的線剪切範例。

在此範例(位於 \examples\Processing\Geometry\ShearLine\LineShear_V02.va)中,實作了針對線掃描相機的線剪切。 如果相機未沿著物件預期的掃描方向安裝,此設計可以補償掃描物件中產生的位移 (請參閱圖 328)。此處以整個影像寬度(在此為 1024 像素)中的 y 方向 10 像素線位移為例。

因相機未對準而導致的掃描物件歪斜

圖 328. 因相機未對準而導致的掃描物件歪斜


在圖 329 中,您可以看到基本設計結構: 來自相機運算子的 1D 影像之每個像素都會根據其在 HierarchicalBox LineShear 中的 x 座標在 y 方向進行剪切。單行會使用運算子 SplitImage:2DImage 組合成 2D 影像。校正後的影像 會透過運算子 DmaToPC 傳送至 PC。

基本設計結構

圖 329. 基本設計結構


在圖 330 中,您可以看到 HierarchicalBox LineShear 的內容。 此處會將每個像素的前面 N-1 個線鄰居(此處為 31)寫入 Nx1 核心中。

HierarchicalBox LineShear 的內容

圖 330. HierarchicalBox LineShear 的內容


此欄的每個 8 位元像素會與其前一個鄰居(透過運算子 KernelRemap:ShiftedKernel 找到)合併 為一個 16 位元像素。因此,請參閱圖 331 中的 HierarchicalBox ExtractInteger 內容。在 HierarchicalBox Select 中(請參閱圖 332),每個像素的新像素值會 透過運算子 CASE 根據平移(校正)後的整數 y 位置來選取。

HierarchicalBox ExtractInteger 的內容

圖 331. HierarchicalBox ExtractInteger 的內容


HierarchicalBox Select 的內容

圖 332. HierarchicalBox Select 的內容


每個像素的校正 y 位置是在 HierarchicalBox TransformedYCoordinate 中計算(請參閱圖 329)。此方塊的內容顯示於圖 333 中。

HierarchicalBox TransformedYCoordinate 的內容

圖 333. HierarchicalBox TransformedYCoordinate 的內容


透過運算子 Coordinate_X 可取得每個像素的 x 位置。對於負歪斜斜率,「反轉」x 位置的功能 存在(透過運算子 Const: NegativeSlope 與 IF 選取)。透過運算子 CONST: DeltaX 可定義相機的對準偏差:此常數決定在多少個像素之後執行 y 方向的一個像素平移。透過運算子 SelectBitField: Integer 與 SelectBitField: Fractional,可以分離每個像素之校正 y 座標的整數和小數部分。在此範例中,決定了 6 個小數 位元(請參閱運算子 ShiftLeft:Mult64)。每個 y 座標的小數部分對於在包含於方塊 ExtractFractional 中的 HierarchicalBox Interpolation(請參閱圖 330)中執行的線性插值是必要的。 您可以在範例中 HierarchicalBox Interpolation 的註解中找到關於插值演算法的詳細資訊。 在圖 334 中,您可以看到上述操作結果所產生的校正後影像。

平移校正後的影像

圖 334. 偏移校正影像