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