| | |
| | | # 影像處理與轉換模組 (Image Processor) 深度分析 |
| | | |
| | | 在 `CB_IMGPSScanImp.pas` 中,「影像處理與轉換模組」負責在硬體掃描取得原始影像後,以及上傳/顯示之前,對影像進行一系列的強化、分析與格式轉換。這個模組是決定影像品質、檔案大小與後續 OMR 辨識準確率的關鍵。 |
| | | 在 `CB_IMGPSScanImp.pas.bk` 中,「影像處理與轉換模組」負責在硬體掃描取得原始影像後,以及上傳/顯示之前,對影像進行一系列的強化、分析與格式轉換。這個模組是決定影像品質、檔案大小與後續 OMR 辨識準確率的關鍵。 |
| | | |
| | | 若要將此模組進一步細拆,其內部組成可分為以下四大子分類: |
| | | |
| | |
| | | |
| | | --- |
| | | |
| | | |
| | | ## 影像相關關鍵字: |
| | | ```js |
| | | [ |
| | | 'TTiffGraphic', |
| | | 'TDibGraphic', |
| | | 'DeskewImg', |
| | | 'Rotate', |
| | | 'CropImg', |
| | | 'ImageReSize_FormID', |
| | | 'ImageReSize_tmp', |
| | | 'CheckNeedCrop', |
| | | 'ImageProcessor.transformer', |
| | | 'ConvertToBW', |
| | | 'ConvertToGray', |
| | | 'Image_Smooth', |
| | | 'NegativeImg', |
| | | 'CleanupBorder', |
| | | 'ImageProcessor.converter', |
| | | 'MpsGetBarcode', |
| | | 'Get_OMR', |
| | | 'ImageProcessor.barcodeRecognizer', |
| | | 'FindPoint', |
| | | 'CheckSize', |
| | | 'GetSiteOMR', |
| | | 'ImageProcessor.anchorAnalyzer', |
| | | 'TJpegGraphic', |
| | | 'DpiResize', |
| | | // 以下可省 |
| | | 'SaveQuality', |
| | | 'FJpgCompression', |
| | | 'ifTrueColor', |
| | | 'ifGray256', |
| | | 'ConvertToBW', |
| | | 'ConvertToGray', |
| | | 'Image_Smooth', |
| | | 'NegativeImg', |
| | | 'CleanupBorder', |
| | | 'ifBlackWhite', |
| | | 'tcGroup4', |
| | | 'tcPackBits', |
| | | 'tcJpeg', |
| | | 'ifColor25' |
| | | ] |
| | | ``` |
| | | |
| | | |
| | | ## 💡 未來重構與微服務化建議 |
| | | |
| | | 若要對此影像處理模組進行重構,建議方向如下: |
| | |
| | | 目前大量依賴畫面上隱藏的 `ISB_BW` (TImageScrollBox) 來進行二值化和條碼辨識。這違反了 MVC 原則且耗費額外的 GDI 資源。應改用純記憶體物件 (如獨立的 `TDibGraphic` 或 `TBitmap`) 在背景執行緒中進行這些運算,不要綁定可見的 UI 元件。 |
| | | 3. **引入更現代的影像引擎 (如 OpenCV)**: |
| | | 早期依賴的 Envision SDK 在尋找十字定位點 (FindPoint) 和去斜 (DeskewImg) 的演算法可能較為老舊。若未來轉型為微服務架構,可將這部分邏輯移植為 Python/C++ 並使用 OpenCV 來達成更精準的高速運算。 |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |