本專案為「單張影像雨痕偵測」演算法實作,整合兩篇相關論文方法,透過梯度特徵、橢圓矩陣分析與形態學技術,發展出一套可視化的雨痕偵測流程。
雨痕會嚴重干擾許多戶外影像處理任務(如人臉辨識、自駕感知、監控分析等),因此針對影像中的雨痕進行準確的「遮罩推估」是關鍵的一環。
本專案實作結合兩篇雨痕去除相關文獻中提到的概念與技巧,設計一個以梯度方向為核心的雨痕偵測流程。
- 局部梯度計算:以灰階影像為輸入,對每個像素區域計算其結構張量(C 矩陣)。
- 橢圓擬合與特徵分析:對每個區域的 C 矩陣做 SVD 分解,取主軸方向與軸長比例,推估是否為雨痕。
- 角度直方圖分析:統計整體雨痕方向,進行旋轉對齊。
- 形態學強化:採用 Opening by Reconstruction 增強線性結構,提升遮罩精度。
- 自動閾值控制:根據統計特性設計適應性閾值,動態調整判斷標準。
- 多核心加速:整體流程支援 joblib 並行處理,大幅提升處理效率。
演算法基於 Python 實作,使用 OpenCV、NumPy、matplotlib 等函式庫,程式具備結果可視化、遮罩儲存與旋轉校正功能。
| 左側 | 中央 | 右側 |
|---|---|---|
| 輸入影像 | 雨痕遮罩 | 去雨圖(去除遮罩區域) |
遮罩圖中白色區域為被判斷為雨痕的像素區,去雨圖為遮罩反白後的結果,可視為演算法推論遮罩的可視化驗證。
conda create -n rain_detect python=3.10.12 -y
conda activate rain_detect
pip install -r requirements.txtpython3 Detection_of_Rain_Streaks.py 程式將輸出偵測結果遮罩與可視化圖至指定資料夾。
.
├── Detection_of_Rain_Streaks.py # 主程式
└── test_imgs/ # 放入需處理圖片
- Rain2Avoid: Self-Supervised Single Image Deraining — Yan-Tsung Peng, Wei-Hua Li
- Single-image deraining using an adaptive nonlocal means filter — Jin-Hwan Kim, Chul Lee, Jae-Young Sim, Chang-Su Kim
