Skip to content

Latest commit

 

History

History
80 lines (47 loc) · 2.5 KB

File metadata and controls

80 lines (47 loc) · 2.5 KB

Rain Streak Detection from a Single Image

本專案為「單張影像雨痕偵測」演算法實作,整合兩篇相關論文方法,透過梯度特徵、橢圓矩陣分析與形態學技術,發展出一套可視化的雨痕偵測流程。


專案背景與實作說明

雨痕會嚴重干擾許多戶外影像處理任務(如人臉辨識、自駕感知、監控分析等),因此針對影像中的雨痕進行準確的「遮罩推估」是關鍵的一環。

本專案實作結合兩篇雨痕去除相關文獻中提到的概念與技巧,設計一個以梯度方向為核心的雨痕偵測流程。


偵測流程與技術重點

  1. 局部梯度計算:以灰階影像為輸入,對每個像素區域計算其結構張量(C 矩陣)。
  2. 橢圓擬合與特徵分析:對每個區域的 C 矩陣做 SVD 分解,取主軸方向與軸長比例,推估是否為雨痕。
  3. 角度直方圖分析:統計整體雨痕方向,進行旋轉對齊。
  4. 形態學強化:採用 Opening by Reconstruction 增強線性結構,提升遮罩精度。
  5. 自動閾值控制:根據統計特性設計適應性閾值,動態調整判斷標準。
  6. 多核心加速:整體流程支援 joblib 並行處理,大幅提升處理效率。

演算法基於 Python 實作,使用 OpenCV、NumPy、matplotlib 等函式庫,程式具備結果可視化、遮罩儲存與旋轉校正功能。


成果展示與觀察

左側 中央 右側
輸入影像 雨痕遮罩 去雨圖(去除遮罩區域)

遮罩圖中白色區域為被判斷為雨痕的像素區,去雨圖為遮罩反白後的結果,可視為演算法推論遮罩的可視化驗證。

Comparison result


快速開始

1. 安裝依賴

conda create -n rain_detect python=3.10.12 -y
conda activate rain_detect

pip install -r requirements.txt

2. 執行雨痕偵測程式

python3 Detection_of_Rain_Streaks.py 

程式將輸出偵測結果遮罩與可視化圖至指定資料夾。


目錄結構

.
├── Detection_of_Rain_Streaks.py  # 主程式
└── test_imgs/                    # 放入需處理圖片


引用參考文獻

  1. Rain2Avoid: Self-Supervised Single Image Deraining — Yan-Tsung Peng, Wei-Hua Li
  2. Single-image deraining using an adaptive nonlocal means filter — Jin-Hwan Kim, Chul Lee, Jae-Young Sim, Chang-Su Kim