處理影像遇到鋸齒。掃描圖檔常有雜點。這影響辨識準確。程式碼提供修復方案。利用骨架提取重建邊緣。搭配像素樣式比對清除雜訊。適合處理黑白文件或數位掃描圖。
Max腳本檔案下載:
https://github.com/max32002/MaxFontScripts/blob/master/smooth_sharp.py
這個版本與「套用多重濾鏡,精確修復各種特定的筆畫瑕疵」這篇文章的差異在線條較圓滑,優點是產生的字型檔案會較小,缺點是,風格也消失的很嚴重,例如:預期的勾筆,會變成一個轉角的彎。
由於是使用scikit會造成交叉處可能被凸出或凹陷。這部份,等有空再來解,目前算是開發(除錯)中的版本。
環境準備與安裝
使用前需要準備開發環境。確保安裝 opencv-python 套件。還有 numpy 與 scikit-image。這些工具提供影像處理核心運算。
pip install opencv-python numpy scikit-image
核心功能邏輯
核心功能分為兩個階段。第一階段是 smooth_sharp_edges 函式。它提取影像骨架。計算每個點到邊緣的距離值。利用超取樣重新繪製平滑圓點。最後縮放回原始尺寸。這種做法能有效去除毛邊。
第二階段是 apply_pattern_cleaning_fast。這部分針對微小像素樣式進行清理。程式自動比對特定區塊。若符合定義的雜點特徵。就替換為正確像素。
使用範例與指令
程式支援單一檔案。也支援資料夾批次處理。透過命令列執行。參數 input 指定來源。參數 output 指定存放位置。
範例指令:
python smooth_sharp.py --input ./raw_images --output ./cleaned_results
如果沒有指定輸出路徑。程式會自動在輸入目錄旁建立新資料夾。處理完成的圖片會轉為白底黑字存檔。
自定義清理樣式
可以在 get_patterns 函式內擴充。定義 p 陣列為瑕疵樣式。定義 r 陣列為修正後的結果。程式會自動執行四個方向旋轉比對。不需要手動撰寫旋轉邏輯。這對處理特定硬體產生的掃描雜訊非常有效。
這是實用的影像預處理工具。適合處理黑白文字。或是改善手繪線條品質。