在 CB_IMGPSScanImp.pas.bk 與 iis_image_process.pas 中,「影像處理與轉換模組」負責在硬體掃描取得原始影像後,以及上傳/顯示之前,對影像進行一系列的強化、分析與格式轉換。這個模組是決定影像品質、檔案大小與後續 OMR 辨識準確率的關鍵。
根據源碼分析,其內部組成可細拆為以下六大子分類:
職責:專責處理影像的空間座標轉換、旋轉、去斜以及裁切,確保最終儲存的影像端正且符合業務規定的尺寸。
核心實作特性:
* 影像去斜與轉正 (Deskew & Rotate):
* DeskewImg:透過演算法自動偵測影像傾斜角度並將其校正。支援先以黑白影像偵測角度再套用於彩色影像的優化路徑。
* Rotate:執行 90、180、270 度的旋轉,可用於條碼方向校正或使用者手動轉向。
* 幾何校正規範 (Geometric Validation):
* GetPosAngle:計算三個定位點之間的夾角,用以判定影像是否嚴重形變。
* CheckSize:比對定位點距離與標準長寬,若有巨大落差則記錄並自動執行補償性縮放。
* 影像裁切與分割:
* CheckNeedCrop 與 CropImg:針對 A3 雙頁合併影像進行自動分割或特定區域裁切。
* 影像縮放 (Resize):
* ImageReSize_FormID / ImageResize:依據表單定義或目標解析度強制縮放影像,確保 OMR 座標對位精準。
職責:處理影像色彩深度轉換,套用最適合的壓縮演算法,並進行濾鏡強化以提升辨識率。
核心實作特性:
* 先進二值化 (Advanced Binarization):
* ConvertToBW:標準二值化處理。
* Gray2BW_RTS / Color2BW_RTS:整合 VRS (Virtual ReScan) 技術,透過特定參數精細化灰階轉黑白的過程,保留關鍵特徵。
* 影像增強濾鏡:
* Image_Smooth(平滑)、Emboss(浮雕)、BrightnessImg(亮度調整)。
* FilterColor:濾掉特定顏色(如紅字或背景色)僅保留黑白內容。
* CleanupBorder:自動清除影像邊緣的掃描黑邊。
職責:獨立負責解析影像上的一維或二維條碼,實現「文件自動歸類」。
核心實作特性:
* 條碼引擎調用:
* MpsGetBarcode:呼叫底層引擎解析二值化影像。
* PrintBarcode:反向操作,將文字轉換為 Code39 條碼並繪製於影像上。
* 邏輯綁定:根據條碼字串自動關聯 FormID 與 DocNo。
職責:為光學標記辨識服務,尋找基準點並計算像素分佈。
核心實作特性:
* 基準點偵測 (Anchor & Spot Detection):
* FindPoint:支援 ANCHOR (十字) 或 FRAME (框線) 定位模式。
* FindBlackPoint / GetBlackSpots:在指定邊界內搜尋特定比例的黑塊作為定位參考。
* 像素判定:
* Get_OMR:計算區域內黑色像素數量。
* GetPixBW:底層像素層級的黑白狀態讀取。
職責:在影像上疊加業務資訊,或自動生成業務用的單據影像。
核心實作特性:
* 動態浮水印 (Watermark):
* Watermark1_Hong:支援透明度、自定義文字與旋轉(如斜向 330 度)的水印疊加。
* 業務戳記與單據生成:
* CreateStamp:產生包含 UserID 與日期的電子圓戳記。
* CreateNote / CreateDraft:產生空白的便條或草稿圖層。
* CreateReportImg_JSON:根據 JSON 資料自動合成補件清單影像,整合背景、條碼與文字內容。
職責:處理視窗介面上的標記、框選,以及影像檔案內部的隱藏資訊。
核心實作特性:
* 互動標記:
* ShowKeyinRect / SetKeyinRect_New:在畫面上動態顯示黃色或透明遮罩,引導人員登打特定欄位。
* GetSelectRect2String:將人員在 UI 上拖曳的框選區域轉換為公分單位。
* 元數據處理:
* GetTag / SetTag:利用 Tiff 檔案的 ImageDescriptionTag 儲存自定義業務資訊。
* JpgReSize_Exif:在處理 JPG 影像時保留或讀取拍攝日期等 EXIF 資訊。
[
'BrightnessImg',
'CheckSize',
'CleanupBorder',
'Color2BW_RTS',
'ConvertToBW',
'ConvertToGray',
'CreateReportImg_JSON',
'CreateStamp',
'CropImg',
'DeskewImg',
'DpiResize',
'FilterColor',
'FindBlackPoint',
'FindPoint',
'GetBlackSpots',
'GetSelectRect2String',
'GetTag',
'Get_OMR',
'Gray2BW_RTS',
'ImageResize',
'Image_Smooth',
'JpgReSize_Exif',
'MpsGetBarcode',
'PrintBarcode',
'Rotate',
'SetTag',
'ShowKeyinRect',
'TDibGraphic',
'TJpegGraphic',
'TNBCleanupBorderTransform',
'TTiffGraphic',
'TWatermarkTransform',
'Watermark1_Hong',
]
Image -> PreProcess -> Recognize -> Synthesize -> Output。TImageScrollBox 等 UI 元件進行二值化運算。改用純記憶體物件處理,以利於在 Web Worker 中平行運算。