# 中興500影像處理筆記 # 重點區域 ### 1. **直方圖處理 (Histogram Processing)** : :::spoiler 計算題重點 *必考 * 下面以圖中 3-bit(8 級灰階)影像為例,說明直方圖等化的簡易計算步驟: **簡易重點:** * 先計算每個亮度值的機率,EX:亮度1出現機率為0.15、亮度2為0.04....加總為1 * 計算累積機率分布CDF * 將CDF的機率乘上L-1(灰階數量)後四捨五入或取天花板函數,將原本的灰階印射到新的值 1. **計算輸入機率 $p_r(r_k)$** 從表格中取出每個灰階 $r_k$ 的像素數 $n_k$,總像素數 $MN$ 假設為 4096(例如 64×64): $$ p_r(r_k)=\frac{n_k}{MN} $$ * 以下為原始影像強度分佈的表格(假設影像大小為 $64\times64=4096$ 像素),數值取自範例:&#x20; | 灰階值 $r_k$ | 像素數 $n_k$ | 機率 $p_r(r_k)=n_k/4096$ | | :-------: | :-------: | :--------------------: | | 0 | 790 | 0.19 | | 1 | 1023 | 0.25 | | 2 | 850 | 0.21 | | 3 | 656 | 0.16 | | 4 | 329 | 0.08 | | 5 | 245 | 0.06 | | 6 | 122 | 0.03 | | 7 | 81 | 0.02 | 例如: * $r_0$ 的頻次 790 → $p_r(r_0)=790/4096\approx0.19$ * $r_1$ 的頻次 1 023 → $p_r(r_1)\approx0.25$ 其餘以此類推。 2. **計算累積分佈函數 (CDF)** $$ \mathrm{CDF}(r_k)=\sum_{j=0}^{k}p_r(r_j) $$ 把各級的機率依序加總: | $r_k$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | :---: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | | $p_r$ | 0.19 | 0.25 | 0.21 | 0.16 | 0.08 | 0.06 | 0.03 | 0.02 | | CDF | 0.19 | 0.44 | 0.65 | 0.81 | 0.89 | 0.95 | 0.98 | 1.00 | 3. **離散映射到新灰階 $s_k$** 令 $L=8$,採用四捨五入的方式將 CDF 映射到 $[0,7]$: $$ s_k = \mathrm{round}\bigl[(L-1)\,\mathrm{CDF}(r_k)\bigr] $$ 計算結果: | $r_k$ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | :-----------------------: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | | CDF | 0.19 | 0.44 | 0.65 | 0.81 | 0.89 | 0.95 | 0.98 | 1.00 | | $(L-1)\times\mathrm{CDF}$ | 1.33 | 3.08 | 4.55 | 5.67 | 6.23 | 6.65 | 6.86 | 7.00 | | $s_k$ | 1 | 3 | 5 | 6 | 6 | 7 | 7 | 7 | 4. **重建等化後的直方圖** 把原來落在 $r_k$ 的所有像素,全數搬到對應的新灰階 $s_k$,再統計各灰階的次數,就得到等化後的直方圖。 * 例如:原來 $n_0=790$ 個像素都會變成灰階 1; * $n_3=656$ 個像素都會變成灰階 6; * 依此累加,最終各灰階的像素數分佈會更接近均勻。 --- 透過上述四個步驟──**計算 $p_r$ → 求 CDF → 映射 $s_k$ → 重建直方圖**──就完成了一次簡易的直方圖等化,能將原本集中在某些灰階範圍的影像,轉換成灰階更均勻分佈的效果。 ::: 1. **像素強度的機率分佈函數 (PDF)** $$ p_r(r_k) = \frac{n_k}{MN} $$ 其中 $n_k$ 為灰階值 $r_k$ 在影像中出現的次數,$M$ 與 $N$ 分別為影像的寬與高 。 2. **累積分佈函數 (CDF)** $$ \mathrm{CDF}(r_k) = \sum_{j=0}^{k} p_r(r_j) $$ 它表示小於或等於 $r_k$ 的灰階機率總和 。 3. **直方圖均衡化映射 (Histogram Equalization)** $$ s_k = T(r_k) = (L-1)\,\mathrm{CDF}(r_k) $$ 將輸入灰階 $r_k$ 映射到輸出灰階 $s_k$,其中 $L$ 為灰階級數(例如 256) 。 4. **直方圖規格化/匹配 (Histogram Specification/Matching)** * 先對輸入影像計算其 CDF:$s = T(r)$。 * 對參考直方圖計算反 CDF:$r' = T_{\mathrm{ref}}^{-1}(s)$。 * 最終映射為: $$ r \;\xrightarrow{T}\; s \;\xrightarrow{T_{\mathrm{ref}}^{-1}}\; r' $$ 使得輸出影像的灰階分佈接近目標直方圖 。 以上公式構成了影像增強中利用直方圖統計特性調整亮度與對比的核心步驟。 --- ### 2. Unsharp Mask :::spoiler ![image](https://hackmd.io/_uploads/r1CbuUjbge.png) ::: **Unsharp Masking(反銳化遮罩)** * **定義** 一種常見的影像銳化技術,透過先去除低頻(平滑)後,再將“高頻”(細節、邊緣)成分加回原圖,增強影像的細節與對比。 * **基本原理** 1. **平滑(低通)**:對原圖 $f(x,y)$ 應用低通濾波器(如 Gaussian),得到模糊圖 $\bar f(x,y)$。 2. **高頻提取**:計算高頻圖(銳化成分) $$ f_s(x,y) = f(x,y) - \bar f(x,y) $$ 3. **合成銳化圖**:將高頻圖放大後加回原圖 $$ g(x,y) = f(x,y) + k\,f_s(x,y) = (1 + k)\,f(x,y) - k\,\bar f(x,y) $$ 其中 $k$(增強因子)控制細節增強程度,典型範圍 0.5–2。 * **核(Mask)實例** 若以 3×3 均值核實作: ```text 平滑核 H_lp = 1/9 ⋅ [ 1 1 1 1 1 1 1 1 1 ] ``` 則對應的 Unsharp Masking 核(高頻+原圖權重)約為: ```text [ -1 -1 -1 -1 8+k -1 -1 -1 -1 ] /9 + k·δ ``` 或直接使用 **High-Boost** 形式(以 Laplacian): ```text [ 0 -1 0 -1 5+k -1 0 -1 0 ] ``` * **特性與優點** * **局部邊緣突顯**:細節更「跳出來」,對紋理、輪廓增強效果顯著。 * **易調參**:只需平滑核大小與 $k$ 兩組參數即可控制效果,操作直觀。 * **相容性高**:可與各種低通濾波(Gaussian、中值、Bilateral)結合。 * **常見應用** * **攝影後製**:強化風景、建築、商品照細節。 * **醫學影像**:提高 X 光、超音波影像中微小結構可見度。 * **印刷業**:在輸出前提升線稿或照片的清晰度。 * **實作要點** 1. **先降噪**:對含顆粒雜訊的原圖,建議先用中值或雙邊濾波去噪,避免噪聲同時被放大。 2. **核大小**:平滑核太大會導致邊緣位置偏移,太小則銳化範圍過窄。 3. **增強因子 $k$**:由小到大微調,避免「過度銳化」出現明顯光暈或鋸齒。 --- 透過 Unsharp Masking,你可以在保持影像整體亮度與色彩的同時,精準地增強細節與輪廓,使畫面更具立體感與銳利度。 ### 3. **Inverse Filtering(反向濾波)** 是一種影像復原(restoration)技術,其核心概念如下: 1. **觀測模型** 假設退化後的影像 $g(x,y)$ 由原始影像 $f(x,y)$ 經點擴散函數(PSF) $h(x,y)$ 模糊,再加上雜訊 $n(x,y)$: $$ g(x,y) = f(x,y) * h(x,y) + n(x,y) $$ 在頻域表示為: $$ G(u,v) = F(u,v)\,H(u,v) + N(u,v) $$ 2. **反向濾波公式** 若已知模糊函數 $H(u,v)$,且暫不考慮雜訊,則可估計原始影像頻譜: $$ \hat F(u,v) = \frac{G(u,v)}{H(u,v)} \quad\Longrightarrow\quad \hat f(x,y) = \mathcal{F}^{-1}\Bigl\{\frac{G(u,v)}{H(u,v)}\Bigr\} $$ 其中,$\mathcal{F}^{-1}\{\cdot\}$ 為反傅立葉變換。 3. **意義** * **直接對抗模糊**:在頻域中「除以」模糊函數,即可理論上還原原始細節。 * **參考基礎**:體現最簡單的去模糊思路,常作為更複雜方法(如 Wiener 濾波)的基礎。 4. **主要問題與限制** * **雜訊放大**:若 $H(u,v)$ 在某些頻率接近 0,則 $\tfrac{1}{H(u,v)}$ 變得非常大,容易將少量雜訊放大成明顯假影。 * **零點問題**:真實的 PSF 頻譜 $H(u,v)$ 可能含有零點,反向濾波將導致除以零的數值不穩定,甚至發散。 * **對 PSF 準確度敏感**:若對 $H(u,v)$ 的估計有誤,復原效果會大幅下降並產生伪影。 5. **實務改進** * **閾值截斷**:為避免除零,可對 $\lvert H(u,v)\rvert$ 設置下限,小於閾值時直接不做反向處理。 * **結合雜訊模型**:如 Wiener 濾波,引入信雜比(SNR)權衡還原與抑噪。 * **正則化**:在反向運算中加入平滑約束,避免過度增強高頻抖動。 --- > **小結**: > 反向濾波以「頻域直接除以模糊函數」的方式理論上可還原原始影像,但對雜訊與 PSF 零點極度敏感,實務上常透過截斷、正則化或 Wiener 濾波等改進方法,才得以獲得穩定且實用的復原效果。 --- ### 4. Wiener Filtering(維納濾波/最小均方誤差濾波) --- #### 🟡 定義與核心公式 基於**信號與雜訊隨機模型**,在頻域中最小化 **均方誤差 (MSE)**,得到: $$ \hat F(u,v) = \frac{H^*(u,v)}{\lvert H(u,v)\rvert^2 + \frac{S_N(u,v)}{S_F(u,v)}}\,G(u,v) $$ * $S_F(u,v)$:原圖功率譜 * $S_N(u,v)$:噪聲功率譜 * 當 $S_N/S_F=K$ 常數時,即經典形式。 --- #### 🔍 為什麼要這樣做? * **平衡信號 vs. 噪聲**:反濾波一刀切易放大量噪聲,Wiener 依據功率比自動調節。 * **理論最優**:在 MSE 意義下,Wiener 濾波是所有線性濾波器中復原誤差最小的。 --- #### 🎯 意義與價值 * **抗零點衰減**:在 $H\approx0$ 區域,自動降低濾波增益,避免噪聲爆炸。 * **去噪 + 去模糊**:同一公式同時執行反模糊與抑制噪聲,效果更均衡。 * **廣泛應用**:影像、聲音、通信中常見去噪與復原標準。 --- #### ⚠️ 問題與侷限 1. **功率譜估計** * 實務中難以精確獲得 $S_F$(真實圖像分布)與 $S_N$。 2. **過度平滑** * 若高估噪聲強度,濾波器過度衰減頻率,導致細節模糊。 3. **參數調整** * 白噪模型下 $K$ 需反覆試驗,否則效果不穩定。 4. **計算量** * 需要多次 FFT / IFFT,以及功率譜預處理,成本中等。 --- #### 💡 小結 維納濾波就像「智慧型刀具」——切模糊時能避開雜訊尖峰,但也得先知道材料(功率譜)組成,否則刀刃也會打滑。 --- ### 5. Constrained Least Squares Filtering(約束最小二乘濾波) --- #### 🟡 定義與核心公式 在還原誤差與圖像平滑度間加約束,利用**Laplacian**(二階導數)度量平滑性: $$ \min \sum_{x,y}\bigl\lvert\nabla^2\hat f(x,y)\bigr\rvert^2 \quad \text{s.t.} \quad \lVert g - H\hat f\rVert^2 = \lVert \eta\rVert^2 $$ 頻域解: $$ \hat F(u,v) = \frac{H^*(u,v)}{\lvert H(u,v)\rvert^2 + \gamma\,\lvert P(u,v)\rvert^2}\;G(u,v) $$ * $P(u,v)$:Laplacian 核的傅立葉表示 * $\gamma$:平滑權重參數 --- #### 🔍 為什麼要這樣做? * **兼顧復原與平滑**:在復原圖像之餘,不讓高頻噪聲重現,並可刻意保護邊緣。 * **二階導數約束**:Laplacian 能精確量化「曲率」,高曲率(雜訊)會被壓低。 --- #### 🎯 意義與價值 * **視覺友好**:調整 $\gamma$ 即可微調去噪 vs. 細節保留,像是在幫影像套上「絲絨濾鏡」。 * **理論嚴謹**:清晰定義優化目標與約束,適合對結果品質有高要求場合。 * **可手動微調**:使用者可交互式選擇 $\gamma$ 以達到最佳視覺效果。 --- #### ⚠️ 問題與侷限 1. **參數尋優** * $\gamma$ 需透過經驗或迭代計算(如二分搜尋)才能最優。 2. **計算量大** * 每次選 $\gamma$ 都要 FFT / IFFT,迭代過程成本高。 3. **暈影 artefact** * $\gamma$ 設太大時,邊緣周圍可能產生不自然的光暈。 --- ## 🔍 綜合比較 | 方法 | 去噪↔去模糊平衡 | 噪聲爆炸風險 | 參數需求 | 視覺靈活度 | 運算量 | | ---------------------------- | -------- | ------ | ------------------ | ----- | --- | | **Inverse Filtering** | 極端↔極端 | 高 | PSF 精度 | 低 | 低 | | **Wiener Filtering** | 中等↔中等 | 中 | 功率譜估計 | 中 | 中 | | **Constrained LS Filtering** | 可調↔可調 | 低 | $\gamma$、Laplacian | 高 | 高 | *— 挑選濾波器就像調配香水:要精準拿捏「主香」「中調」「後韻」,才能讓影像展現最佳層次與質感。* ## 🔍 對比一覽 | 方法 | 噪聲敏感度 | 參數需求 | 邊緣保留 | 計算複雜度 | 適用場景 | | --------------------- | ----- | ---------------------- | ----- | ----- | ---------------- | | **Inverse Filtering** | 極高 | 只需 PSF | 差(振鈴) | ★☆☆ | PSF 精準、噪聲極微 | | **Wiener Filtering** | 中等 | 需功率譜估計 | 好 | ★★☆ | SNR 中高、可近似功率譜時 | | **Constrained LS** | 低–中 | 需調整 $\gamma$、Laplacian | 可調 | ★★★ | 需平衡去噪與細節、視覺效果可調時 | --- *— 小貼士:選擇濾波器時,就像挑口味——「要辣要甜要清爽」,得先搞清楚影像本身的「噪聲口味」與「細節偏好」。* ## 🔍 1.Image Interpolation(影像插值技術整理) https://hackmd.io/BrtGCVMdST-bqj4OWYs0vQ?both#%F0%9F%94%8D-Image-Interpolation%EF%BC%88%E5%BD%B1%E5%83%8F%E6%8F%92%E5%80%BC%E6%8A%80%E8%A1%93%E6%95%B4%E7%90%86%EF%BC%89 ## 🔷 2. 常見影像濾波器概覽 https://hackmd.io/BrtGCVMdST-bqj4OWYs0vQ?both#%F0%9F%94%B7-7-%E5%B8%B8%E8%A6%8B%E5%BD%B1%E5%83%8F%E6%BF%BE%E6%B3%A2%E5%99%A8%E6%A6%82%E8%A6%BD173 ## 🔷 3.雜訊類型介紹 https://hackmd.io/BrtGCVMdST-bqj4OWYs0vQ?both#%F0%9F%94%B7-%E9%9B%9C%E8%A8%8A%E9%A1%9E%E5%9E%8B%E4%BB%8B%E7%B4%B9193 ## 🔶 4.常見降噪濾波器 https://hackmd.io/BrtGCVMdST-bqj4OWYs0vQ?both#%F0%9F%94%B6-%E5%B8%B8%E8%A6%8B%E9%99%8D%E5%99%AA%E6%BF%BE%E6%B3%A2%E5%99%A8201 以下將各節依序重新標號,從 **5.** 開始: --- ### 5. Sampling(取樣) #### 📌 定義 將連續影像(空間或時間)座標轉換為離散網格。 * **例**:把一張照片分成像素網格(解析度) * 決定了影像的「空間解析度」 #### 💡 太少會怎樣? * 出現 aliasing(混疊)現象 * 錯失細節,影像變糊 --- ### 6. Quantization(量化) #### 📌 定義 把每個像素的**灰階強度值**從連續值「映射」成有限階級(如 256 階)。 * 控制了影像的**灰階層次數量** #### 💡 現象說明 * 階數太少會出現「色帶」現象,導致平滑漸層變成突兀分層。 --- ### 7. Noise(雜訊) #### 📌 定義 > 來自感測器、環境或電路的**隨機強度干擾**,非真實影像內容。 * 表現為影像中不規則的「斑點」、「雜點」或閃爍 #### 🔍 常見來源 * 感測器熱雜訊 * 光子統計波動(量子噪聲) * 放大器與傳輸雜訊 * 量化誤差 #### 🧮 評估指標 * 信噪比(SNR)越高,影像品質越好 * 噪訊指數(Noise Figure)亦常用於裝置評估 --- ### 8. Dynamic Range(動態範圍) #### 📌 定義 影像中最亮與最暗點**亮度值的比值**,反映「亮部與暗部能容納的資訊量」。 * 對相機而言,指從最低可辨亮度(高於雜訊)到最大可捕捉亮度(未飽和)之間的範圍 #### 🧮 量化方式 * 灰階級數跨度 或 **dB(對數刻度)** * 例如:12-bit 影像動態範圍為 $2^{12}=4096$ 階 #### 🎯 意義 * 高動態範圍 → 同時保有明暗細節 * 低動態範圍 → 易過曝或陰影死黑 --- ### 9. Aliasing(混疊) #### 📌 定義 對連續信號取樣,若取樣頻率低於最高頻率兩倍(未滿足奈奎斯特準則),就會發生頻率重疊。 * 高頻訊號錯誤被誤判為低頻,造成重建失真 #### 🔍 影像中常見現象 1. **鋸齒狀邊緣(jaggies)**:斜線或曲線邊緣不平滑 2. **莫爾紋(moiré)**:細節圖案與像素格干涉,出現波紋假象 #### ✅ 解決方法 1. **低通濾波(Anti-Aliasing Filter)**:預先消除高頻 2. **超取樣/多重取樣(Supersampling / MSAA)**:多點平均 3. **後處理去混疊**:抖動(Dithering)、平滑演算法 --- ### 10. Moiré Pattern(干涉條紋) #### 📌 定義 當兩個規則圖案(如格線、點陣)疊加並產生微小頻率或角度差時,出現低頻波浪狀假象。 #### 🎯 出現情境 * 拍攝印刷品、細網格布料、螢幕等重複圖樣 * 感測器像素格與細節產生頻率干涉 * 印刷四色套印角度不當 #### ✅ 解決方法 * 改變拍攝角度或縮放比例 * 使用光學或數位低通濾波 * 後製去 Moiré 濾鏡 --- ### 11.Demosaicing(去馬賽克/色彩重建)是什麼 #### 📌 定義 大多數數位相機感測器在每個像素位置只捕捉一種顏色(紅、綠或藍),常見的排布方式是拜耳濾色陣列(Bayer CFA)。**Demosaicing** 就是透過演算法,根據鄰近像素的單色數值,**為每個像素「補完」另一或兩種顏色**,最終生成每點完整的 RGB 資訊,還原出全彩影像。 --- #### 🔍 原理步驟 1. **感測器輸出**:每個原始像素只包含 R、G 或 B 之一。 2. **插值估算**:利用周圍相鄰位置已有的色彩值,對缺失的兩個通道進行空間插值。 3. **合成 RGB**:將原有通道與插值得到的通道組成完整的 RGB 像素值。 4. **後處理**(可選):去除假色(false colors)與鋸齒(zipper artifacts),優化邊緣與細節。 --- #### ✅ 常見演算法 * **Nearest-Neighbor(最鄰近插值)** 取距離最近的同色通道值,速度最快,但邊緣馬賽克感最重。 * **Bilinear(雙線性插值)** 以四鄰域加權平均估算,平滑度較好,但細節稍微模糊。 * **Edge-Directed(邊緣導向插值)** 根據局部邊緣方向做加權,可保留更多細節並減少假色。 * **Adaptive Homogeneity-Directed** 自適應選擇濾波方向和權重,進一步優化邊緣細節。 * **深度學習方法(CNN-Based)** 使用訓練好的神經網路,以資料驅動方式預測補色,效果上乘但運算量大。 --- #### ⚠️ 常見問題 * **假色(False Color Artifacts)**:細節區出現與實際色彩不符的小條紋。 * **鋸齒/鋸紋(Zipper Artifacts)**:邊緣處插值不當,形成不連續條紋。 * **解析度損失**:過度平滑插值會模糊高頻細節。 --- #### 🎯 為何重要 * **真實色彩還原**:維持被攝物色彩準確度。 * **細節保留**:對線條、花紋等高頻信息的完整重建。 * **後製彈性**:提供全彩資料,方便後續調色與影像處理。 --- > **小結**:Demosaicing 是數位攝影中從單色感測到全彩影像的核心步驟,不同演算法在速度、精度與細節保留間各有取捨,實務上常結合多種策略以達到最佳效果。 ### 12. Shading Correction(平場校正) #### 📌 定義 修正因光源不均、鏡頭暗角或感測器不均勻所致的亮度/色度漸變,使影像恢復均勻照明。 #### 🔧 校正流程 1. 拍攝「均勻白板」(Flat Field) 2. 原始影像與白板像素級校正(除法/減法) 3. 用平滑曲面或低通濾波估算背景光場 #### ✅ 效益 * 提升影像分析準確性 * 消除亮度偏差,增強分類穩定性 --- ### 13. Affine Transform(仿射變換) #### 📌 定義 結合**線性變換(旋轉、縮放、剪切)**與**平移**的幾何轉換,保持直線和平行性。 $$ \begin{pmatrix}x'\\y'\\1\end{pmatrix} = \begin{pmatrix} a & b & t_x\\ c & d & t_y\\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix}x\\y\\1\end{pmatrix} $$ #### 🛠️ 應用 * 影像旋轉、平移、縮放 * 多視角配準、物件追蹤 * 透視校正 --- ### 14. Bit-Plane Slicing(位元平面切片) #### 📌 定義 * **Piecewise Linear Transformation**,又稱**分段線性對應**,是一種常見的灰階(或色彩)強度映射方法,將原始影像的像素值 $r$ 根據預先定義的折點,分成多段區間,並在每一段上使用**線性函式**將其映射到輸出值 $s$。相比於單一全域線性或非線性函式,分段線性可更靈活地強調或壓制特定亮度範圍的對比度。 📌 定義 將每個像素的 8-bit 灰階值分成 **8 個二值影像**,每張代表該位元的 0/1 分布。 #### ⚙️ 步驟 1. 將像素值拆成 $b_7b_6…b_0$ 2. 第 $i$ 位抽出形成第 $i$ 張平面 3. 平面圖只含 0/1,可視化時乘以 255 4. 可組合高位重建或壓縮 #### 📌 應用 * **壓縮**:只保留高位 * **去噪**:忽略低位 * **特徵提取**/**隱寫** --- ### 15. Tone Mapping(色調對映) #### 📌 定義 將 HDR 影像中超出顯示範圍的亮度值,壓縮並映射到 SDR 設備上,同時保留細節。 #### 🎯 目的 * 壓縮高光與陰影 * 保留細節與對比 * 模擬人眼視覺自適應 #### 🔧 方法 1. **全域算子**(Reinhard、Drago、Gamma) 2. **區域算子**(Fattal、Durand–Dorsey、Mantiuk) #### 🧮 映射函數 * Reinhard:\$L\_{\rm out}=\frac{L\_{\rm in}}{1+L\_{\rm in}}\$ * Drago:\$L\_{\rm out}=\frac{\log(1+\alpha L\_{\rm in})}{\log(1+\alpha)}\$ --- # 名詞介紹 ## CH2 ## 📊 基本影像感知與影像處理概念整理 ### 🟡 一、Weber Ratio(韋伯比) #### 📌 定義 > 表示人眼在某個亮度下,能感受到的**最小相對亮度變化比例**。 $$ \text{Weber Ratio} = \frac{\Delta I}{I} $$ * $\Delta I$:剛好能被察覺的亮度差 * $I$:背景亮度 #### 🎯 解釋 * **亮越強,感知差異門檻越高。** * 是人類視覺對亮度變化「**對比性**而非絕對值」的感知依據。 #### 💡 舉例 * 在暗房中,一點小燈就會讓你驚覺很亮;但在戶外陽光下,你需要極大的亮度差才能看出不同。 --- ### ⚪ 二、Gray Level(灰階/灰度) #### 📌 定義 單純表示影像中每個像素的**光強(intensity)值**,不包含顏色資訊。 #### 💡 特性 * 又稱**灰度值**,數位影像常用 8-bit 表示(0–255)。 * 值越高,畫面越亮;值越低,畫面越暗。 --- ### 🔴 三、Radiance(輻射度) #### 📌 定義 > 單位立體角與單位投影面積上所發出的光能量強度。 * 是物理世界中**光源實際發出的能量密度**。 #### 🧮 單位 * 通常以瓦特(W/sr·m²)表示。 --- ### 🟡 四、Luminance(亮度) #### 📌 定義 > 表示人眼**感知到的亮度強度**,基於輻射度但經過人眼的波長加權。 * 衡量的是「**人看到的亮**」而不是物理光能本身。 #### 🧮 單位 * 常用坎德拉每平方公尺(cd/m²)。 --- ### 🟠 五、Brightness(明亮度) #### 📌 定義 > 一種主觀感受,描述觀察者對影像亮度的**心理判斷**。 * 與 luminance 有關,但也受到背景、對比與人本身狀態影響。 * **非線性感知**,無法用單一物理量精確量化。 --- ### 🧠 小結 | 名稱 | 屬性 | 是否主觀 | 常用單位 | | ----------- | ------- | ---- | --------- | | Radiance | 實際能量 | ❌ | W / sr·m² | | Luminance | 感知亮度 | ❌ | cd / m² | | Brightness | 主觀感受 | ✅ | 無統一標準單位 | | Gray Level | 數位強度值 | ❌ | 0–255(常見) | | Weber Ratio | 最小感知變化比 | ✅ | 無單位(比例) | --- ### 🟢 六、Sampling(取樣) #### 📌 定義 將連續影像(空間或時間)座標轉換為離散網格。 * **例**:把一張照片分成像素網格(解析度) * 決定了影像的「空間解析度」 #### 💡 太少會怎樣? * 出現 aliasing(混疊)現象 * 錯失細節,影像變糊 --- ### 🔵 七、Quantization(量化) #### 📌 定義 把每個像素的**灰階強度值**從連續值「映射」成有限階級(如 256 階)。 * 控制了影像的**灰階層次數量** #### 💡 現象說明 * 階數太少會出現「色帶」現象,導致平滑漸層變成突兀分層。 --- ### 🔴 八、Saturation(飽和) #### 📌 定義 > 像素亮度超出顯示或儲存裝置最大/最小值,**被截斷到邊界值**的現象。 * 灰階值超過 255(或低於 0)時會被「夾」住 #### 💡 會造成什麼? * 極亮處一片白(detail lost) * 像素值失真,畫面出現剪裁感或過曝區 --- ### ⚫ 九、Noise(雜訊) #### 📌 定義 > 來自感測器、環境或電路的**隨機強度干擾**,非真實影像內容。 * 表現為影像中不規則的「斑點」、「雜點」或閃爍 #### 🔍 常見來源 * 感測器熱雜訊 * 光子統計波動(量子噪聲) * 放大器與傳輸雜訊 * 量化誤差 #### 🧮 評估指標 * 信噪比(SNR)越高,影像品質越好 * 噪訊指數(Noise Figure)亦常用於裝置評估 --- ### 🟣 十、Computerized Axial Tomography(CAT,電腦斷層掃描) #### 🧬 原理 X 光源與感測器圍繞物體多角度旋轉,取得各方向投影。 #### 🏗️ 重建方式 * **Filtered Back-Projection**(濾波反投影) * 或 **迭代演算法** #### 📌 應用 * 醫學診斷(頭部、腹部) * 工業無損檢測 * 技術延伸:MRI、PET 等也使用類似重建原理 --- ### 🔶 11. Dynamic Range(動態範圍) #### 📌 定義 影像中最亮與最暗點**亮度值的比值**,可反映影像的「**亮部與暗部能容納的資訊量**」。 * 在數位相機中,通常指: **感光元件能從最低可辨亮度(高於雜訊)到最大可捕捉亮度(未飽和)之間的範圍** #### 🧮 量化方式 * 常以**灰階級數跨度**或以\*\*dB(對數刻度)\*\*表示 * 例如:12-bit 影像動態範圍為 $2^{12} = 4096$ 階 #### 🎯 意義 * 動態範圍高 → 同時保有明亮區與暗部細節 * 動態範圍低 → 高光過曝、陰影死黑 --- ### ⚫ 12. High Contrast Image(高對比度影像) #### 📌 定義 若影像中有「**大量像素**」實際使用了**從最暗到最亮的灰階級數範圍**,且呈現出清晰明暗層次,即為高對比度影像。 #### ✅ 判斷條件 1. **寬廣動態範圍**(灰階使用範圍夠大) 2. **實際像素分佈**遍佈整個灰階區(不只是少數點佔據極端灰階) #### 💡 視覺特性 * 層次分明、明暗差大、物體邊界清晰 * 適合表現立體感與紋理 --- ### 🔵 13. Spatial Resolution(空間解析度) #### 📌 定義 代表影像中可辨識的最小細節尺度,是對**空間細節表現能力**的衡量。 #### 🧮 量化方式 * 每單位距離的線對數(lp/mm)或點數(dpi, pixels per inch) * 例:1080P = 1920×1080 畫素 * **取樣頻率愈高,空間解析度愈佳** #### 📷 舉例 * 印刷用圖像常用 300 dpi * 電視/監視器:720p、1080p、4K 等指的是解析度等級 --- ### ⚪ 14. Intensity Resolution(強度/亮度解析度) #### 📌 定義 又稱**灰階解析度**,描述系統能分辨的**最小亮度變化**,亦即灰階級數的細緻程度。 #### 🧮 表示方式 * 通常以 bit 數表示: 8-bit = 256 階、10-bit = 1024 階、12-bit = 4096 階… #### 💡 實務意義 * 位元數越高 → 色階更細緻,色帶與假象越少 * 與 false contour 密切相關 --- ### 🔴 15. False Contour(偽等高線) #### 📌 定義 原本應該是**平滑漸層**的區域,卻因灰階或色彩階數不足而出現**離散的階梯狀條紋**,形成類似等高線的視覺假象。 #### 📉 成因 * 低 bit depth(如 4-bit)導致階數太少 * 壓縮重建(如 JPEG)導致色階資訊丟失 * 人眼對明暗變化**極敏感但非線性**,加劇視覺效果 #### 🎯 解法 * 使用更高的 bit-depth(如 10-bit 顯示器) * 搭配抖動(dithering)技術打散邊界 * 透過 Gamma 校正或 tone mapping 平滑亮度變化 --- ### 🔴 16. Aliasing(混疊) #### 📌 定義 當對**連續信號**(如影像或聲音)取樣時,若取樣頻率低於訊號中最高頻率的兩倍(即未滿足**奈奎斯特準則**),就會發生**頻率重疊混淆**現象。 * 高頻訊號錯誤地被誤判為低頻,導致影像或聲音重建失真。 #### 🔍 混疊現象類型(影像中) 1. **鋸齒狀邊緣(jaggies)**:斜線或曲線邊緣不平滑 2. **莫爾紋(moiré pattern)**:細節圖案與像素格干涉,出現波紋假象 #### 📷 圖像示意 \:::spoiler Aliasing 圖片範例 ![Aliasing](https://hackmd.io/_uploads/S1AN5UdWxg.png) \::: #### ❗ 常見成因 * 感測器或顯示器像素密度不足 * 縮放或下採樣前未先進行低通濾波 #### ✅ 解決方法 1. **低通濾波(Anti-Aliasing Filter)**:預先消除高頻訊號 2. **超取樣/多重取樣(Supersampling / MSAA)**:在每個像素區域做多點平均 3. **後處理去混疊**:使用抖動(Dithering)或平滑演算法補償錯誤邊緣 --- ### 🟠 17. Moiré Pattern(干涉條紋) #### 📌 定義 當兩個細小、規則的圖案(如格線、點陣)彼此疊加並產生**微小頻率或角度差**時,會出現低頻、波浪狀的干涉假象,即「莫爾紋」。 #### 🎯 出現情境 * 拍攝印刷品、細網格布料、螢幕等重複圖樣時 * 感測器像素格與主體細節發生頻率干涉 * 印刷四色套印角度設定不當 #### ✅ 解決方法 * 改變拍攝角度或縮放比例 * 使用低通濾波(光學或數位) * 後製修正(去 Moiré 濾鏡) :::spoiler Moiré Pattern 圖片範例 ![Moiré](https://hackmd.io/_uploads/HybZKIdWgx.png) ::: --- ### 🟢 18. Demosaicing(去馬賽克/色彩重建) #### 📌 定義 感測器表面多使用**拜耳濾色陣列(Bayer CFA)**,每個像素僅接收單色(R/G/B),需透過演算法為每像素補完 RGB 值,形成**全彩影像**。 #### 🎯 處理目標 * 還原顏色真實性 * 避免假色(false color)、鋸齒與細節損失 #### ✅ 常見方法 * 線性插值(bilinear) * 邊緣導向插值(edge-aware) * 深度學習式補色(CNN, demosaicing networks) --- ### 🔵 19. Gaussian Pyramid(金字塔) #### 📌 定義 將影像透過**高斯平滑與下採樣**反覆處理,形成**多層次解析度版本**的影像序列,用於多尺度處理。 #### 🔧 建立流程 1. 對當前影像套用高斯模糊(平滑) 2. 對模糊後影像做 2:1 下採樣(抽取每隔一行/列像素) 3. 重複上述流程直至解析度達下限 #### 🎯 特性 * 每層皆為更模糊的低通版本 * 可用於「多尺度分析」或「影像融合」等任務 #### 🔍 應用場景 * SIFT 特徵偵測 * Image blending(圖像無縫接合) * 多解析度壓縮與分析 --- ### ⚪ 20. Shading Correction(平場校正) #### 📌 定義 修正因光源不均、鏡頭暗角或感測器不均勻所導致的亮度/色度漸變問題,使影像回復為**均勻照明狀態**。 #### 🔧 校正流程 1. 拍攝「均勻白板」作為參考(Flat Field) 2. 原始影像與白板圖像進行像素級校正(除法/減法) 3. 可用平滑曲面或低通濾波器估算背景光場 #### ✅ 效益 * 提高影像分析準確性 * 消除亮度偏差、增強比對與分類穩定性 --- :::spoiler 圖片範例 ![image](https://hackmd.io/_uploads/S1nkme5-gg.png) ::: --- ### 🔷 21. Affine Transform(仿射變換) #### 📌 定義 仿射變換是一種結合**線性變換(旋轉、縮放、剪切)**與**平移**的幾何轉換,能保持**直線性與平行性**。 $$ \begin{pmatrix}x'\\y'\\1\end{pmatrix} = \begin{pmatrix} a & b & t_x\\ c & d & t_y\\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix}x\\y\\1\end{pmatrix} $$ * $a, b, c, d$:控制影像的旋轉、縮放與剪切 * $t_x, t_y$:控制平移位移 #### 🧩 幾何特性 * ✅ 保持直線為直線 * ✅ 保持平行線為平行線 * ❌ 不保證角度與長度保持不變(非剛性變換) #### 🛠️ 應用場景 * 影像旋轉、平移與縮放 * 圖像校正與視角調整 * 多視角配準(registration)、物件追蹤 * 影像校準與透視場景轉換(如平面影像投影校正) :::spoiler 仿射變換範例圖 ![affine](https://hackmd.io/_uploads/H1Q5Nl9Wxl.png) ::: --- ### 🔶 22. Tie Point(連結點) #### 📌 定義 連結點是在**不同影像或影像與地面控制點(GCP)**之間,標記出對應**同一物理位置**的特徵點。 #### 🎯 核心用途 * **影像配準**:拼接多張影像成全景或對齊同一場景 * **3D 重建**:多視角三角定位,重建立體結構 * **遙測幾何校正**:將航拍影像校正到地理座標系統 #### 🧮 取得流程 1. **特徵偵測**:如 SIFT、ORB、Harris 角點等 2. **特徵匹配**:暴力比對、FLANN、自訂相似度 3. **錯配剔除**:如 RANSAC 去除離群點,提升準確率 #### 🧠 特性與原則 * 點位應具備獨特紋理與穩定特徵(避免重複或模糊) * 分佈應**均勻覆蓋整張影像**,以避免幾何變形偏差 --- ### ⚪ 23. Gray-Level Interpolation(灰階插值) #### 📌 定義 在影像變換(如旋轉、縮放、仿射)後,像素不再對齊網格,需藉由插值**估算新像素的灰階值**,保持影像平滑與細節連續。 #### 🔧 常見方法比較 | 方法 | 特性 | 運算效率 | 視覺品質 | | ------------ | ----------- | ----- | --------- | | 最近鄰 Nearest | 選最近像素,無運算成本 | ★★★★☆ | 粗糙,可能出現鋸齒 | | 雙線性 Bilinear | 四個點加權平均 | ★★★☆☆ | 平滑但略模糊 | | 雙三次 Bicubic | 16 點加權多項式 | ★★☆☆☆ | 細節佳、邊緣柔順 | #### 🔁 流程概要 1. 計算變換後像素對應的原座標(浮點) 2. 根據插值法選取鄰近像素與其權重 3. 加權求和 → 得到新像素灰階值 #### 🛠️ 應用場景 * 影像縮放與旋轉 * 幾何校正與變形後重採樣 * 醫學影像、精密工業檢測之補點與平滑 --- 24. CCD/CMOS 以下是基於講義中「CCD vs. CMOS」兩大面向的比較: **1. 架構與功能特性** | 特性 | CCD 感測器 | CMOS 感測器 | | ------------------- | ----------------------------------------------------- | ------------------------- | | 讀出方式 | 每個像素的電荷必須經過整片晶片依序轉移到輸出放大器 | 每個像素內建放大與 ADC,能在像素層級直接輸出數位或類比訊號 | | 輸出類型 | 類比(需外接放大器與 ADC) | 類比或數位(Depending on 設計,可整合 ADC) | | 像素填充因子(Fill-Factor) | 較高(因為像素內部電路少) | 較低(每個像素內含額外電路元件) | | 元件複雜度 | 晶片內只做感光和電荷轉移,製程相對單純 | 每個像素須內建放大器、選址開關、ADC 等,製程複雜 | | 支援功能 | 只能單純擷取影像 | 可在像素層做遮罩 (masking)、ROI 選取、早期影像處理 | --- **2. 效能與應用差異** | 效能指標 | CCD | CMOS | | --------- | ------------------- | ----------------------------- | | 雜訊(Noise) | 電子雜訊低、影像品質好 | 雜訊較高,但隨製程改善已大幅降低 | | 解析度動態範圍 | 寬(Dynamic Range 高) | 較窄,但高階設計可改善 | | 效率與速率 | 讀出速度中等,難以達到非常高的逐行速率 | 可實現高速連拍(High-speed)、區域擷取;功耗低 | | 功耗 | 高(整片晶片須將電荷轉移到單一輸出) | 低(像素內放大、ADC 多執行單位並行) | | 製造成本 | 較高(特殊高電荷轉移製程) | 較低(標準 CMOS 製程即可) | | 可靠性與整合度 | 需要額外外部電路 | 容易與其他影像處理電路整合在同一晶片上 | --- ### 小結 * **CCD** 在畫質、低雜訊與高動態範圍上略勝一籌,但功耗、成本與整合度較差。 * **CMOS** 以低功耗、高速、低成本與高度整合為優勢,近年透過製程優化在畫質與動態範圍上已大幅縮小與 CCD 的差距。 --- ## 🔍 Image Interpolation(影像插值技術整理) --- ### 🟢 1. 最近鄰插值(Nearest-Neighbor Interpolation) #### 📌 原理 直接取最接近的新座標對應至原圖的整數像素點,**不做加權或平滑處理**。 #### 🧮 運算步驟 1. 計算新像素 $(x', y')$ 對應回原圖座標 $(x, y)$ 2. 進行四捨五入: $$ (x_{\text{nn}}, y_{\text{nn}}) = (\lfloor x + 0.5 \rfloor, \lfloor y + 0.5 \rfloor) $$ 3. 取該位置原圖像素值作為輸出 #### ✅ 優點 * 實作最簡單、速度最快 * 適合即時影像預覽或低階硬體設備 #### ❌ 缺點 * 容易產生鋸齒、邊緣不連續 * 影像觀感粗糙、不適合精緻視覺應用 :::spoiler 圖片範例 ![Nearest Neighbor](https://hackmd.io/_uploads/By3wIvuZge.png) ::: --- ### 🔵 2. 雙線性插值(Bilinear Interpolation) #### 📌 原理 利用影像中 2×2 的像素區塊,先在水平、再在垂直方向上分別做線性加權插值。 #### 🧮 運算步驟 1. 找出 $(x,y)$ 四鄰近像素: $(i,j), (i+1,j), (i,j+1), (i+1,j+1)$ 2. 水平插值: $$ f(x, j) = (i+1 - x)f(i,j) + (x - i)f(i+1,j) $$ $$ f(x, j+1) = (i+1 - x)f(i,j+1) + (x - i)f(i+1,j+1) $$ 3. 垂直插值: $$ f(x, y) = (j+1 - y)f(x,j) + (y - j)f(x,j+1) $$ #### ✅ 優點 * 邊緣平滑,過渡自然 * 計算量小,適合一般應用 #### ❌ 缺點 * 細節模糊,無法保留銳利邊緣 * 若過度縮放可能產生失真 :::spoiler 圖片範例 ![Bilinear](https://hackmd.io/_uploads/SysKIPOWle.png) ::: --- ### 🔴 3. 三次卷積插值(Bicubic Interpolation) #### 📌 原理 使用 4×4 區域像素,以三次多項式對像素值與座標距離做加權平均,效果細緻平滑。 #### 🧮 運算步驟 1. 尋找 16 個鄰近像素(範圍 $x-1$ 到 $x+2$,$y-1$ 到 $y+2$) 2. 對每一行做 cubic 插值,得到 4 個中間值 3. 對這 4 個值再做一次垂直方向插值,得最終值 4. 常見核函數如 **Catmull–Rom**: $$ w(t)= \begin{cases} \frac{1}{2}(2|t|^3 - 5|t|^2 + 4), & |t|\le1 \\ \frac{1}{2}(-|t|^3 + 5|t|^2 - 8|t| + 4), & 1<|t|<2 \\ 0, & \text{otherwise} \end{cases} $$ #### ✅ 優點 * 優於雙線性,平滑且細節保留佳 * 邊緣柔順、不易產生鋸齒 #### ❌ 缺點 * 運算量大(約雙線性的 4 倍) * 可能放大雜訊或假邊緣(ringing) --- ### 📊 三種插值法比較表 | 方法 | 鄰域大小 | 平滑度 | 細節保留 | 運算速度 | | -------------- | ---- | --------- | ---- | ----- | | 最近鄰 (NN) | 1×1 | 最差(明顯鋸齒) | 最差 | ★★★★★ | | 雙線性 (Bilinear) | 2×2 | 中等(稍模糊) | 一般 | ★★★★☆ | | 三次卷積 (Bicubic) | 4×4 | 最佳(平滑且細緻) | 最佳 | ★★☆☆☆ | --- ### 🛠️ 應用選擇建議 | 應用情境 | 建議方法 | | --------- | ---------- | | 即時影像預覽 | 最近鄰插值 (NN) | | 影片畫質中庸處理 | 雙線性插值 | | 影像品質最優先處理 | 三次卷積插值 | --- # 📘 CH3 影像基本處理與灰階操作方法整理 ### 1. Spatial Domain(空間域) #### 📌 定義 直接在影像的**像素空間**上進行運算,利用每一個像素及其**鄰域像素**的數值關係來進行強化或抑制。 #### 🔧 主要操作 * **點運算(Point Processing)**:僅依賴單一像素值 * 例如對比度拉伸、灰階轉換、Gamma 校正 * **鄰域運算(Local Processing)**:結合遮罩(mask)或核(kernel)與鄰域像素,進行加權平均、排序等運算 * 如平滑與銳化濾波器 #### 🧰 常見濾波器 * **平滑類(低通濾波器)** * 平均濾波器、Gaussian 濾波器、中值濾波器 * **銳化類(高通濾波器)** * Laplacian、Sobel、Prewitt、Unsharp Mask #### ⚙️ 運算機制 * **卷積(Convolution)**:遮罩翻轉後與區域像素逐點相乘加總 * **相關(Correlation)**:與卷積類似,但遮罩不翻轉 #### 📌 特點 * 實作直觀、效率中等 * 計算量與遮罩大小成正比 * 邊界處需進行適當填充(如 0-padding、mirror-padding) --- ### 2. Frequency Domain(頻率域) #### 📌 定義 將影像視為**不同頻率成分的組合**,透過\*\*傅立葉轉換(Fourier Transform)\*\*進入頻域空間,進行處理後再轉回空間域。 #### 🔄 操作流程 1. **傅立葉轉換(DFT / FFT)**:將影像轉為頻譜形式 2. **頻域濾波(Multiplicative Filtering)**:使用濾波器調整頻率成分 3. **逆傅立葉轉換(IDFT / IFFT)**:還原處理後影像 #### 🧰 常見濾波器 * **理想濾波器(Ideal)**:Ideal LPF / HPF * **平滑濾波器**:Butterworth、Gaussian #### 📌 特點 * 可設計具體頻率響應、實作窄頻或寬頻抑制 * 全域運算方式需消耗大量資源(尤其大影像) --- ### 3. Gamma Correction(Gamma 校正) #### 📌 定義 透過指數函數對像素亮度進行非線性映射,**模擬人眼對亮度的感知特性**,或**補償攝影與顯示器的非線性輸出**。 #### 🧮 公式 $$ O = I^{1/\gamma} $$ * $I$:正規化後輸入像素(0–1) * $\gamma$:Gamma 參數(一般顯示器 ≈ 2.2) * $O$:校正後輸出值 #### 🎯 功能與效益 * **亮度補償**:使亮度輸出更自然不過曝 * **暗部細節提升**:提高低亮區的可視性 * **貼近人眼感知**:符合視覺系統的非線性感受 #### 🧰 實作步驟 1. 將輸入影像正規化(除以 255) 2. 選定 $\gamma$ 值(如 2.2) 3. 計算 $O = I^{1/\gamma}$ 4. 將結果乘回 255 並轉回整數 #### 📌 應用範圍 * 攝影與 RAW 轉檔處理 * 顯示器渲染前處理(Gamma encoding) * 模型訓練資料前處理(增強學習穩定性) #### ⚠️ 注意事項 * 若輸入資料已含 Gamma 曲線(如 sRGB),**不應重複校正** * 錯誤設置 $\gamma$ 值會造成過度對比或細節流失 --- ### 4. Piecewise-linear Transformation(分段線性灰階變換) #### 📌 定義 將輸入像素 $r$ 按照灰階範圍**分段定義**不同線性變換函數映射至輸出 $s$。 $$ s = \begin{cases} a_1 r + b_1, & r_0 \le r < r_1, \\ a_2 r + b_2, & r_1 \le r < r_2, \\ \;\vdots \\ a_n r + b_n, & r_{n-1} \le r \le r_n \end{cases} $$ #### 📈 常見應用模式 1. **對比伸展(Contrast Stretching)** * 將有限灰階範圍擴展至整個動態區間,增加對比度 2. **灰階切片(Gray-level Slicing)** * 強調特定亮度區間,常用於醫學影像 3. **閾值化(Thresholding)** * 將影像轉為黑白二值(如 >128 則變白) #### ✅ 優點 * 結構簡單、可控性強 * 可自由調整不同區間的強化強度 #### 📌 應用情境 * 醫學影像強化(如 MRI 強調病灶) * 工業檢測中突出缺陷區域 * 預處理以提升後續分類、辨識效果 :::spoiler 圖片示意 ![image](https://hackmd.io/_uploads/SJD_I-obel.png) ::: --- ### 5. Bit-Plane Slicing(位元平面切片) #### 📌 定義 將影像每個像素的 8-bit 灰階值分成 **8 個二值影像**,每張代表該位元的 0 或 1 分布。 #### ⚙️ 原理步驟 1. 對每個像素 $I$ 拆解為 $b_7b_6...b_0$ 二進位表示 2. 將所有像素的第 $i$ 位抽出形成第 $i$ 張平面圖 3. 每個平面僅包含 0 或 1,可視化時乘以 255 4. 可任意組合高位平面重建或壓縮 #### 🧠 特性分析 * 高位(如 $b_7, b_6$):決定影像輪廓與結構 * 低位(如 $b_1, b_0$):含有細節與雜訊,影響較小 * **簡單位運算即可實作,計算效率高** #### 📌 實務應用 * **壓縮**:只保留高位元,降低影像大小 * **去雜訊**:忽略低位,減少細微噪聲 * **特徵提取**:選取特定位元觀察細節分布 * **資訊隱寫**:於低位元中嵌入加密訊息 :::spoiler 位元平面示意圖 ![bitplane](https://hackmd.io/_uploads/S1UQPboWlg.png) ::: --- --- ### 🔶 6. Tone Mapping(色調對映) #### 📌 定義 將高動態範圍(HDR)影像中**超出顯示器可呈現範圍**的亮度值,壓縮並映射到標準動態範圍(SDR)顯示設備(如 8-bit 顯示器)上,同時盡可能保留細節與對比度。 #### 🎯 目的 * **壓縮亮度**:將過曝高光與深暗陰影映射到可顯示區間 * **保留細節**:維持陰影與高光區的可辨識細節 * **視覺一致性**:模擬人眼對不同亮度的自動適應,呈現自然層次感 #### 🔧 主要方法 1. **全域算子 (Global Operators)** * 使用單一映射函數套用全圖 * **代表演算法**:Reinhard、Drago、Gamma 壓縮 * **優點**:計算簡單、速度快 * **缺點**:無法微調局部對比,易造成局部過亮或過暗 2. **區域算子 (Local/Adaptive Operators)** * 根據每個區域的亮度統計,自適應調整映射曲線 * **代表演算法**:Fattal、Durand–Dorsey、Mantiuk * **優點**:強化局部對比,細節豐富 * **缺點**:計算量大,易產生暈影(halo) #### 🧮 典型映射函數 * **Reinhard 演算法** $$ L_{\text{out}} = \frac{L_{\text{in}}}{1 + L_{\text{in}}} $$ * **Drago 演算法**(基於人眼感知) $$ L_{\text{out}} = \frac{\log(1 + \alpha\,L_{\text{in}})}{\log(1 + \alpha)} $$ $\alpha$ 控制壓縮強度 #### 📌 應用場景 * HDR 照片後製與顯示 * 電影特效與即時遊戲渲染 * 科學/醫學可視化(天文影像、X 光) #### ⚠️ 注意事項 * 參數(如中間調、對比增益)需根據內容微調 * 區域算子易產生暈影 artefact * 避免重複映射(例如工作流程中已有內建 tone mapping) --- ## 🔷 7. 常見影像濾波器概覽 依序介紹六大類濾波器:**Mean(平均)**、**Low-Pass(低通)**、**Median(中值)**、**Sobel**、**Bilateral** 及 **Edge-Preserving(邊緣保護)**。 --- ### 7.1 平均(Mean)濾波器 **📌 定義** 簡單的空間低通濾波器,利用鄰域算術平均平滑影像。 **🔧 原理** 對每個像素及其鄰域(如 3×3、5×5)所有值取平均,再賦值給中心像素。 **🧮 遮罩範例(3×3)** $$ \frac{1}{9} \begin{bmatrix} 1 & 1 & 1\\ 1 & 1 & 1\\ 1 & 1 & 1 \end{bmatrix} $$ **✨ 特性** * 有效平滑均勻雜訊 * 邊緣與細節易被模糊 * 對椒鹽噪聲效果有限 **🎯 應用** * 低雜訊影像的輕度平滑 * 預處理降低高頻細節 --- ### 7.2 通用低通(Low-Pass)濾波器 **📌 定義** 抑制高頻(細節、噪聲),保留低頻(大範圍亮度),在空域或頻域均可實現。 **🔧 原理與實現** * **空域**:平均濾波、高斯濾波 * **頻域**:Ideal LPF、Butterworth LPF、Gaussian LPF **✨ 特性** * 空域簡單但模糊邊緣 * 頻域精確但需要 FFT 計算 * 可全域或局部操作 **🎯 應用** * 去除高頻噪聲 * 平滑影像 * 金字塔分解的前置 --- ### 7.3 中值(Median)濾波器 **📌 定義** 非線性空域濾波器,利用鄰域排序後的中位數替代中心值。 **🔧 原理** 對每個 3×3(或更大)鄰域的像素值排序,取第 ⌈N/2⌉ 值作為中心像素。 **✨ 特性** * 對椒鹽噪聲(salt-and-pepper)極為有效 * 能保留邊緣、細節不易模糊 * 計算量高於平均濾波 **🎯 應用** * 去除散點雜訊 * 文字/醫學影像預處理 --- ### 7.4 Sobel 濾波器 **📌 定義** 一階微分邊緣檢測算子,結合微分與簡單平滑,檢測梯度強度。 **🔧 遮罩** * 水平 $G_x$:$\small\begin{bmatrix}-1&0&1\\-2&0&2\\-1&0&1\end{bmatrix}$ * 垂直 $G_y$:$\small\begin{bmatrix}-1&-2&-1\\0&0&0\\1&2&1\end{bmatrix}$ **✨ 特性** * 抗輕微噪聲優於 Roberts * 偵測邊緣較寬 * 常用於 Canny 邊緣檢測前處理 **🎯 應用** * 物體輪廓提取 * 邊緣增強 * 特徵點檢測 --- ### 7.5 Bilateral 濾波器 **📌 定義** 同時考慮空間與灰階相似度的非線性平滑濾波,能抑制噪聲並保留邊緣。 **🧮 公式** $$ I_{\text{out}}(p) = \frac{1}{W_p} \sum_{q\in\mathcal{N}(p)} \exp\Bigl(-\tfrac{\|p-q\|^2}{2\sigma_s^2}\Bigr) \exp\Bigl(-\tfrac{|I(p)-I(q)|^2}{2\sigma_r^2}\Bigr) I(q) $$ **✨ 特性** * 顯著抑噪同時保留銳利邊緣 * 計算量大,不宜用於極大核或實時 **🎯 應用** * 人像磨皮 * 醫學影像降噪 * 結構保留預處理 --- ### 7.6 Edge-Preserving 濾波器 **📌 定義** 一大類在**平滑區域雜訊**的同時,**不模糊或減少對比**的濾波技術。 **🧰 常見演算法** 1. **Bilateral(雙邊濾波)**:結合空間距離與灰階相似度權重 2. **Guided Filter(導向濾波)**:基於引導影像的局部線性模型 3. **Joint Bilateral(引導雙邊濾波)**:兩張影像互相作為引導 4. **Non-Local Means**:大範圍塊匹配與加權平均 **✨ 特性** * 同時**抑制均勻噪聲**與**保留邊緣** * 計算複雜度高,需優化或硬體加速 **🎯 應用** * 高階降噪(人像磨皮、醫學影像) * HDR 前處理、圖像分割前化繁為簡 --- ### 7.7 Gaussian 濾波器 **📌 定義** 空間域低通濾波器,以**二維高斯函數**做權重遮罩,實現自然模糊。 **🧮 遮罩範例(σ≈1, 3×3)** $$ \frac{1}{16} \begin{bmatrix} 1 & 2 & 1\\ 2 & 4 & 2\\ 1 & 2 & 1 \end{bmatrix} $$ **✨ 特性** * 有效抑制高頻噪聲,同時**保持邊緣細節**優於簡單平均 * 權重隨距離呈高斯分佈,更接近成像模糊 * σ 與遮罩大小共同決定平滑強度 **🎯 應用** * 影像去噪、金字塔多解析度分解 * 下採樣前防止 aliasing * 邊緣檢測(如 Sobel)前的預平滑 --- ## 🔵 8. Sharpening Spatial Filters(銳化空間濾波器) ### 8.1 空間微分(Spatial Differentiation) **📌 目的** 強化像素灰度急變處(邊緣)、檢測光度斜率與其變化。 #### 一階導數(First‐order) * **公式近似**: $$ f'(x)\approx f(x+1)-f(x) \quad,\quad f'(x)\approx \frac{f(x+1)-f(x-1)}{2} $$ * **常用遮罩**: * 水平差分 $\begin{bmatrix}-1 & 1\end{bmatrix}$ * 垂直差分 $\begin{bmatrix}-1\\1\end{bmatrix}$ * **✨ 特性** * 邊緣較寬,抗噪性能低 * 適合快速增強斜率明顯的邊緣 #### 二階導數/Laplacian * **連續形式**: $\nabla^2 f = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2}$ * **離散遮罩**: * 4-鄰域 $\begin{bmatrix} 0 & 1 & 0\\ 1 & -4 & 1\\ 0 & 1 & 0 \end{bmatrix}$ * 8-鄰域 $\begin{bmatrix} 1 & 1 & 1\\ 1 & -8 & 1\\ 1 & 1 & 1 \end{bmatrix}$ * **✨ 特性** * 對細線與孤立點反應敏感 * 邊緣零交叉點(zero-crossing)可用於精確定位 --- 以上依照統一筆記風格,補足了 **Edge-Preserving**、**Gaussian** 及 **銳化 (Spatial Differentiation)** 三大主題。若還需 **Unsharp Mask**、**Highboost Filter** 或其他銳化算子延伸,請隨時告知! --- # 🔶 CH5 影像退化與復原概念整理 ### 1. Degradation(退化)簡介 #### 📌 定義 影像在拍攝、傳輸或儲存過程中,因光學、電子或壓縮等干擾,導致品質下降、細節模糊或產生失真。 #### 🧮 數學模型 $$ g(x,y) = f(x,y) * h(x,y) + \eta(x,y) $$ * $f(x,y)$:原始影像 * $h(x,y)$:系統點擴散函數(PSF) * $\eta(x,y)$:加性雜訊 * $*$:卷積 #### ⚙️ 常見成因 1. **光學模糊**:鏡頭失焦、運動模糊 2. **電子雜訊**:感測器熱雜訊、量化誤差 3. **傳輸誤差**:壓縮區塊效應、位元錯誤 4. **掃描/重建失真**:幾何畸變、取樣不足 #### 🎯 影響效果 * 邊緣銳度下降、細節喪失 * 對比度與動態範圍縮減 * 雜訊顆粒感增加 #### 🛠️ 復原方法 * **去模糊**:反卷積、維納濾波 * **去噪**:中值濾波、雙邊濾波、非局部平均 * **幾何校正**:仿射/透視變換 --- ## 🔷 雜訊類型介紹 ### 2. Gaussian Noise(高斯雜訊) * **分佈**:連續、鐘型 * **參數**:平均 $\mu$、標準差 $\sigma$ * **PDF**: $$ f(x) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\bigl(-\tfrac{(x-\mu)^2}{2\sigma^2}\bigr) $$ ![Gaussian Noise](https://hackmd.io/_uploads/rJsneHkfgg.png) --- ### 3. Rayleigh Noise(瑞利雜訊) * **適用**:幅度為隨機向量長度場景(如雷達回波) * **參數**:尺度 $\sigma$ * **PDF**: $$ f(x) = \frac{x}{\sigma^2} \exp\bigl(-\tfrac{x^2}{2\sigma^2}\bigr),\;x\ge0 $$ ![Rayleigh Noise](https://hackmd.io/_uploads/BJDalS1Ggg.png) --- ### 4. Erlang (Gamma) Noise(Erlang/Gamma 雜訊) * **特性**:Gamma 分佈的整數階特例 * **參數**:形狀 $k$(正整數)、尺度 $\theta$ * **PDF**: $$ f(x) = \frac{x^{k-1}e^{-x/\theta}} {\Gamma(k)\,\theta^k},\;x\ge0 $$ ![Erlang Noise](https://hackmd.io/_uploads/H1CagBJzlg.png) --- ### 5. Exponential Noise(指數雜訊) * **特例**:Gamma 分佈在 $k=1$ * **參數**:率 $\lambda$ * **PDF**: $$ f(x) = \lambda e^{-\lambda x},\;x\ge0 $$ ![Exponential Noise](https://hackmd.io/_uploads/rJf0lBJMel.png) --- ### 6. Uniform Noise(均勻雜訊) * **分佈**:區間 $[a,b]$ 等機率 * **PDF**: $$ f(x) = \frac{1}{b-a},\;a\le x\le b $$ ![Uniform Noise](https://hackmd.io/_uploads/HJH0lH1Ggg.png) --- ### 7. Impulse Noise(脈衝/鹽與胡椒雜訊) * **特性**:離散,僅於最小 $L_{\min}$ 與最大 $L_{\max}$ 出現 * **PMF**: $$ P(g(x,y)=L_{\min})=p_1,\quad P(g(x,y)=L_{\max})=p_2 $$ 其餘值機率為 0 ![Impulse Noise](https://hackmd.io/_uploads/S1jRlB1Mgg.png) --- ## 🔶 常見降噪濾波器 --- ### 8. Mean Filters(平均濾波器) **📌 原理** 取每個像素鄰域的算術平均,平滑高頻雜訊。 $$ g(x,y) = \frac{1}{mn} \sum_{i=-a}^{a}\sum_{j=-b}^{b} f(x+i,y+j) $$ * $m\times n$:窗口大小 * $a=(m-1)/2$, $b=(n-1)/2$ **✨ 特性** * 簡單快速 * 平滑高斯雜訊效果佳 * 邊緣易模糊、細節流失 --- ### 9. Order-Statistics Filters(統計排序濾波器) **📌 原理** 對鄰域像素排序,取第 $k$ 大元素作為輸出。 * **Median Filter**:$k$ 為中位數位置,去除鹽與胡椒雜訊 * **Max/Min Filter**:取最大值增強邊緣,取最小值平滑陰影 **✨ 特性** * 中值濾波去 impulsive noise 極佳 * 保邊緣優於平均濾波 * 排序運算成本高 --- ### 10. Adaptive Filters(自適應濾波器) **📌 原理** 根據影像局部統計特性(如方差)動態調整濾波係數。 * **Adaptive Median**:依雜訊程度調整窗口 * **Wiener Filter**:估計局部信號與雜訊最小化 MSE * **Adaptive Bilateral**:可變 $\sigma_s$、$\sigma_r$ 適應局部特性 **✨ 特性** * 保留細節與邊緣的同時,高效抑噪 * 計算量大於固定濾波器 * 適用於非平穩雜訊場景 --- --- ### 11. Alpha‐trimmed Mean Filter(α‐修剪均值濾波器) #### 📌 基本概念 在 $m\times n$ 鄰域內,將所有像素值排序,**去除最小的 $d/2$** 與 **最大的 $d/2$** 個值,再對剩餘像素取平均,兼顧平滑與抗脈衝雜訊能力。 #### 🧮 數學公式 $$ \hat f(x,y) = \frac{1}{mn - d} \sum_{(s,t)\in S_{xy}} g_r(s,t) $$ * $mn$:鄰域像素總數 * $d$:總修剪數(偶數) * $g_r(s,t)$:排序後去除前後 $d/2$ 的剩餘像素值 #### 🔄 特例 * $d=0$:退化為**算術平均濾波器** * $d=mn-1$:退化為**中值濾波器** #### 🎯 適用情境 * **混合雜訊**:同時含高斯與鹽/椒噪聲 * **平滑 vs. 邊緣保留**:透過 $d$ 微調平衡 #### ⚙️ 操作流程 1. 取中心像素的 $m\times n$ 鄰域並排序 2. 去除最小與最大各 $d/2$ 3. 對剩餘 $mn-d$ 點取平均 4. 以該平均值替換中心像素 #### ✨ 優缺點 * **優點**: * 較抗突發噪聲 * 保留較多紋理 * **缺點**: * 排序成本高 * 需經驗或實驗調整 $d$ --- ### 12. Adaptive (Local) Noise Reduction Filter(自適應局部降噪濾波器) #### 📌 目的 針對加性高斯噪聲影像,在**保留細節**的同時,根據區域統計特性動態抑制噪聲。 #### 🧮 核心原理 利用鄰域平均 $\mu_L$ 與方差 $\sigma_L^2$,結合已知噪聲方差 $\sigma_\eta^2$: $$ \hat f(x,y) = g(x,y) - \frac{\sigma_\eta^2}{\sigma_L^2}\bigl[g(x,y)-\mu_L\bigr] $$ * 若 $\sigma_L^2\approx\sigma_\eta^2$:以 $\mu_L$ 替代(平坦區) * 若 $\sigma_L^2\gg\sigma_\eta^2$:保留原值(細節區) #### ⚙️ 操作步驟 1. 選取鄰域 $m\times n$ 2. 計算 $\mu_L,\sigma_L^2$ 3. 判斷區域:平坦 → 執行平均濾波;邊緣 → 保留原值 4. 套用自適應公式更新中心像素 #### ✨ 特性與優勢 * 根據雜訊強度調節抑噪 * 平坦區強平滑,細節區弱抑噪 * 保邊緣同時有效去噪 --- ### 13. Adaptive Median Filter(自適應中值濾波器) #### 📌 目的 動態調整窗口大小,**可靠去除鹽/椒脈衝噪聲**,同時保留邊緣細節。 #### 🔄 流程概述 對每個中心像素進行兩階段檢測: 1. **階段 A:判斷雜訊環境** * 計算窗內 $Z_{\min},Z_{\max},Z_{med}$ * 若 $Z_{\min}<Z_{med}<Z_{\max}$:進入 B;否則擴大窗口重試 * 若 $Z_{\min}=Z_{med}=Z_{\max}$:全為同一值,繼續擴大窗口 2. **階段 B:判斷中心像素** * 若 $Z_{\min}<g(x,y)<Z_{\max}$:保留 $g(x,y)$ * 否則:以 $Z_{med}$ 替換中心像素 #### ✨ 關鍵特點 * **自適應窗口**:雜訊多時自動放大 * **保留細節**:無雜訊區不做多餘平滑 * **高密度噪聲**:亦能有效去除 #### 🎯 適用情境 * 脈衝噪聲(salt-and-pepper)為主 * 雜訊比例高於 20% * 雜訊密度不均,需動態調整 --- ## 🎯 頻率域濾波器(Frequency-Domain Filters)比較與整理 ### 🟢 一、低通濾波器(Lowpass Filter) --- 🟡 一、定義與概念 低通濾波器允許**低頻成分**通過,**阻擋高頻成分**,主要用於影像平滑、雜訊抑制、去除細節。 * ✅ **保留**:緩慢變化(如影像輪廓、大範圍明暗變化) * ❌ **移除**:快速變化(如邊緣、雜訊、細節紋理) --- #### 🧮 二、常見形式 | 類型 | 濾波器函數 $H(u,v)$ | 特性 | | ----------- | ---------------------------------------------------------- | ------------ | | Ideal | $H = 1$ if $D(u,v) \le D_0$ <br> $H = 0$ if $D(u,v) > D_0$ | 截止銳利,振鈴明顯 | | Butterworth | $H = \frac{1}{1 + (D/D_0)^{2n}}$ | 可調階數,平滑但非零截止 | | Gaussian | $H = e^{-D^2 / (2D_0^2)}$ | 無振鈴,邊界最平滑 | --- #### 📈 頻率響應圖(概念示意) ``` 幅度 ↑ | 1 |─────────────── | \ | \ 0 +------------------→ 頻率 ↓低通區 ``` --- #### 🛠️ 三、應用場景 * 去除影像高頻雜訊 * 模糊影像作為前處理(如邊緣偵測前) * 壓縮影像資訊、降低解析度 --- ### 🔴 二、高通濾波器(Highpass Filter) --- #### 🟡 一、定義與概念 高通濾波器允許**高頻成分**通過,**阻擋低頻成分**,可強調影像邊緣與快速變化區域。 * ✅ **保留**:邊緣、紋理、細節 * ❌ **移除**:影像中平坦或緩慢變化區域(背景) --- #### 🧮 二、常見形式 | 類型 | 濾波器函數 $H(u,v)$ | 特性 | | ----------- | ---------------------------------------------------------- | --------- | | Ideal | $H = 0$ if $D(u,v) \le D_0$ <br> $H = 1$ if $D(u,v) > D_0$ | 反應銳利但振鈴明顯 | | Butterworth | $H = \frac{1}{1 + (D_0/D)^{2n}}$ | 可控制階數 | | Gaussian | $H = 1 - e^{-D^2 / (2D_0^2)}$ | 無振鈴,反應平滑 | --- #### 📈 頻率響應圖(概念示意) ``` 幅度 ↑ | /‾‾‾‾‾‾‾‾‾ | / | / 0 +──────────────→ 頻率 ↓截止區 ``` --- #### 🛠️ 三、應用場景 * 邊緣偵測(如 Laplacian、Sobel 前處理) * 紋理增強 * 反銳化(unsharp masking) --- ### 🟡 三、帶通濾波器(Bandpass Filter) --- #### 🟡 一、定義與概念 帶通濾波器允許一段「特定頻率區間」通過,抑制高於或低於此區間的頻率。 * ✅ **保留**:中頻資訊,如紋理、局部細節 * ❌ **移除**:背景漸變與雜訊(低頻+高頻) --- #### 🧮 二、常見形式 | 類型 | 濾波器函數 $H(u,v)$ | 特性 | | ----------- | ------------------------------------------------------------------ | -------- | | Ideal | $H = 1$ if $D_0 - W/2 < D < D_0 + W/2$ <br> $H = 0$ otherwise | 清晰範圍、振鈴 | | Butterworth | $H = 1 - \frac{1}{1 + \left(\frac{D\,W}{D^2 - D_0^2}\right)^{2n}}$ | 可平衡平滑與清晰 | | Gaussian | $H = 1 - e^{-[(D^2 - D_0^2)^2]/(D^2 W^2)}$ | 無振鈴,邊界平滑 | --- #### 📈 頻率響應圖(概念示意) ``` 幅度 ↑ | ________ | / \ |_______/ \_______ | +----------------------------→ 頻率 ↓通過區間 (bandpass) ``` --- #### 🛠️ 三、應用場景 * 擷取具有特定空間頻率的紋理(如指紋、織物) * 強調局部結構但抑制背景與高頻雜訊 * 結合 Gabor 濾波器進行影像分群、識別 --- ### 🔵 四、帶阻濾波器(Bandreject Filter) --- #### 🟡 一、定義與概念 帶阻濾波器會**抑制某一特定頻率區間**,保留其餘頻率成分,是**帶通濾波器的互補形式**,常用於消除週期性干擾或特定頻率的雜訊(如電力雜訊、條紋干擾)。 * ✅ **保留**:低頻與高頻(非干擾區) * ❌ **移除**:某段中頻干擾範圍 --- #### 🧮 二、常見形式 | 類型 | 濾波器函數 $H(u,v)$ | 特性 | | ----------- | ----------------------------------------------------------------------------------- | --------- | | Ideal | $H = 0$ if $D_0 - \tfrac{W}{2} \le D \le D_0 + \tfrac{W}{2}$ <br> $H = 1$ otherwise | 邊界銳利,易振鈴 | | Butterworth | $H = \frac{1}{1 + \left(\frac{D\,W}{D^2 - D_0^2}\right)^{2n}}$ | 平滑可調,應用最廣 | | Gaussian | $H = 1 - e^{-[(D^2 - D_0^2)^2]/(D^2 W^2)}$ | 平滑、無振鈴 | --- #### 📈 頻率響應圖(概念示意) ``` 幅度 ↑ |──────────╲ ╱────────── | ╲____╱ | +----------------------------→ 頻率 ↓阻擋區間 (bandreject) ``` --- #### 🛠️ 三、應用場景 * 移除週期性噪聲(如電源干擾 50/60Hz) * 消除掃描條紋、背景條紋、雷達回波等規律雜訊 * 搭配影像頻譜圖(Fourier Spectrum)進行手動選頻抑制(Notch Filtering) --- 以下是依照你指定風格,對 **Notch Filter(陷波濾波器)** 的完整介紹,延續之前四種濾波器的架構: --- ### 🟣 五、陷波濾波器(Notch Filter) --- #### 🟡 一、定義與概念 **Notch Filter(陷波濾波器)** 是一種**局部定點帶阻濾波器**,專門用來**抑制特定頻率點(或一對點)**造成的干擾,尤其適用於**週期性雜訊**或**條紋干擾**,其頻率分布往往呈現為傅立葉頻譜上的對稱亮點。 * ✅ **保留**:除特定干擾頻率外的所有頻率 * ❌ **移除**:目標干擾頻率位置附近的能量 --- #### 🧮 二、常見形式 ##### ◎ 理想陷波濾波器(Ideal Notch Filter) 在頻譜中設計一個半徑 $R$ 的「黑圈」遮罩於干擾頻點 $(u_0,v_0)$ 及其對稱點 $(-u_0,-v_0)$: $$ H(u,v) = \begin{cases} 0, & \sqrt{(u-u_0)^2 + (v-v_0)^2} \le R \quad \text{或對稱點} \\ 1, & \text{其他} \end{cases} $$ ##### ◎ Butterworth Notch Reject Filter $$ H(u,v) = \prod_{k=1}^{K} \left[ \frac{1}{1 + \left(\frac{D_k \cdot D_k'}{D_0^2}\right)^{2n}} \right] $$ * $D_k = \sqrt{(u-u_k)^2 + (v-v_k)^2}$:距離第 $k$ 個干擾點 * $D_k' = \sqrt{(u+u_k)^2 + (v+v_k)^2}$:距離其對稱點 * $D_0$:截止距離,$n$:濾波器階數 * 可設多組陷波點(多重干擾頻率) ##### ◎ Optimum Notch Filter(最佳陷波濾波) 結合 Wiener 原則與陷波設計,根據信號與雜訊功率譜密度最佳化抑制干擾而保留其他頻段。典型形式: $$ H_{\text{opt}}(u,v) = \frac{|F(u,v)|^2}{|F(u,v)|^2 + |N(u,v)|^2} $$ * $|F(u,v)|^2$:所關心信號的功率譜 * $|N(u,v)|^2$:干擾雜訊的功率譜 * 在干擾頻點處 $N$ 大,$H_{\text{opt}}$ 接近 0;其他頻段則接近 1 * 可實現自適應抑噪而不完全「挖洞」,減少反變換後的振鈴現象 --- #### 📈 頻率響應圖(概念示意) ``` 振幅 ↑ |───────────────────┬─────┬────────── | │ │ | ▼ ▼ +------------------------------→ 頻率 (u,v) ↓陷波點 (Notch Centers) ``` (頻譜圖上通常呈現為左右對稱的亮點被遮罩) --- #### 🛠️ 三、應用場景 * 🔧 **週期性條紋噪聲**去除(掃描干擾、雷達雜訊、光柵干擾) * 📡 \*\*固定頻率干擾(如 60Hz)\*\*抑制 * 📷 用於傅立葉頻譜可視化後之**手動或自動濾除特定頻率點** --- #### 🧪 四、實作流程 1. **頻域轉換**:對影像進行傅立葉轉換(2D FFT),將頻譜中心化 2. **辨識干擾頻點**:觀察頻譜亮點,確認干擾頻率的位置(通常呈對稱) 3. **建立陷波遮罩**:選擇 Ideal、Butterworth 或 Optimum Notch Mask 4. **濾波與反變換**:將頻譜與遮罩相乘後做反傅立葉變換,得到清除後影像 --- ## ✅ 與其他濾波器對照 | 類型 | 抑制範圍 | 精準定位 | 使用難度 | 常見用途 | | ---------- | -------- | ---- | ---- | --------- | | Bandreject | 一段頻率環狀帶區 | ❌ | 中等 | 去除模糊週期干擾 | | Notch | 干擾點附近小範圍 | ✅ | 高 | 去除條紋、電磁雜訊 | | Bandpass | 通過特定頻帶 | ❌ | 中 | 紋理強化 | | Highpass | 通過高頻 | ❌ | 低 | 邊緣偵測 | --- ## ✅ 全部濾波器整體對照總覽 | 濾波器類型 | 通過頻率區段 | 移除頻率區段 | 主要應用 | | ---------- | -------- | ------- | -------------- | | 低通 (LPF) | 低頻 | 高頻 | 平滑影像、去除細節雜訊 | | 高通 (HPF) | 高頻 | 低頻 | 邊緣增強、細節抽取 | | 帶通 (BPF) | 特定中頻區段 | 低頻+高頻 | 抽取紋理、局部空間變化 | | 帶阻 (BRF) | 除特定中頻外全部 | 中頻 | 去除週期性雜訊 | | 陷波 (Notch) | 除特定頻點 | 特定干擾頻率點 | 去除已知干擾(對應頻譜亮點) | --- 以上新增 **Optimum Notch Filtering**,兼顧最佳化抑噪與邊緣保留。若需範例程式或參數選取建議,可進一步提供實作細節! # CH9 #### 🟣 六、形態學影像處理(Morphological Image Processing) --- ##### 🟡 一、定義與目的 * **數學形態學**:基於集合論的工具,專門用於擷取影像中物件形狀與結構特徵。 * **核心思想**:利用**結構元素**(Structuring Element, SE)對影像做集合運算,以**強化**或**抑制**特定形狀。 ##### 🟡 二、結構元素(Structuring Element) * **形狀**:常見有方形、圓形、菱形等;依應用決定方向性與對稱性。 * **尺寸**:影響運算範圍,尺寸愈大,形態變化愈明顯。 * **錨點**:SE 上指定的參考點,用以對齊影像中待處理像素。 ##### 🟡 三、基本運算 --- ##### 🟡 一、膨脹(Dilation) * **定義(集合論)**:對二值影像集合 $A$ 及結構元素 $B$,膨脹運算定義為 $$ A \oplus B = \{\,z \mid (\hat B)_z \cap A \neq \varnothing\} $$ 其中 $\hat B$ 為 $B$ 的翻轉(reflection),$(\hat B)_z$ 表示其平移至位置 $z$。【】 * **直覺說明**:將結構元素在影像上滑動,只要探針(翻轉後的 SE)與任何前景(像素值=1)重疊,對應錨點位置即設為前景。 * **效果**: * 擴張物件邊界,使物體「變粗」 * 填補細小孔洞或連接相近的物體區塊 * **灰階影像對應**:以當前像素與結構元素重疊區域的最大值為輸出,達到局部「灰階亮度擴散」效果。 ![The-dilation-of-an-object-by-a-structuring-element](https://hackmd.io/_uploads/BJQWloWfxe.png) --- ##### 🟡 二、侵蝕(Erosion) * **定義(集合論)**:對集合 $A$ 與結構元素 $B$,侵蝕運算定義為 $$ A \ominus B = \{\,z \mid B_z \subseteq A\} $$ 即當 $B$ 完全落在 $A$ 內部時,才保留該錨點位置為前景。【】 * **直覺說明**:將結構元素在影像上滑動,僅當整個探針都「Fit」入前景區域時,該位置才維持為前景;否則設為背景。 * **效果**: * 使物件邊界向內收縮,削薄物體輪廓 * 去除孤立雜訊、小突起或狹細連接 * **灰階影像對應**:以當前像素與結構元素重疊區域的最小值為輸出,可用於「局部暗部擴張」或去雜訊。 ![The-erosion-of-an-object-by-a-structuring-element](https://hackmd.io/_uploads/B107xsZfee.png) --- > **使用建議**:膨脹與侵蝕往往配合開/閉運算使用,以在去雜訊與保留形狀間取得平衡;結構元素的形狀與大小需依據影像特徵調整。 --- ##### 🟡 三、開運算(Opening) * **定義**:先對影像執行侵蝕(Erosion),再執行膨脹(Dilation)。公式: $$ A \circ B = (A \ominus B)\oplus B $$ * **直觀效果**: 1. **移除小的前景突起**:任何比結構元素 $B$ 還小的「亮點」或狹細連結都會在侵蝕階段被剔除。 2. **保留主要物件形狀**:後續的膨脹只回復被侵蝕掉區域的大體輪廓,不重建那些小細節。 * **應用**:消除二值影像中的孤立雜點或細小噪聲,同時保留背景中重要物件的整體形狀。 --- ##### 🟡 四、閉運算(Closing) * **定義**:先對影像執行膨脹(Dilation),再執行侵蝕(Erosion)。公式: $$ A \bullet B = (A \oplus B)\ominus B $$ * **直觀效果**: 1. **填補小的暗洞或裂縫**:在膨脹階段,小於結構元素 $B$ 的凹洞會被填平。 2. **平滑物件邊界**:後續的侵蝕去除多餘的擴張部分,留下更平滑、圓潤的輪廓。 * **應用**:修補二值影像中由閾值化或雜訊造成的小孔、細縫,並消除凹凸不平的邊緣。 ![Morphological+Image+Processing](https://hackmd.io/_uploads/SJkIHjbfxl.jpg) ![image](https://hackmd.io/_uploads/r1PhSo-fxl.png) >圖片中,綠色箭頭示「膨脹」方向,紅色箭頭示「侵蝕」方向。左側展示了閉運算如何先填補凹洞,右側展示了開運算如何先去除突出部後再恢復主要形狀。 --- ##### 🟣 五、Hit-or-Miss 轉換(Hit-or-Miss Transformation) --- ###### 🟡 定義 * **目的**:給一張影像,從中找出目標形狀的位置並標出來。 * **運算式**:令 $A$ 為二值前景集合,$\bar A$ 為其背景(補集);利用**複合結構元素**$(B,\,C)$,其中 $B$ 用於前景匹配,$C$ 用於背景匹配,定義 $$ A \otimes (B,C) \;=\;(A \ominus B)\;\cap\;(\bar A \ominus C)\,, $$ 只有同時滿足「前景能被 $B$ 完全侵蝕」且「背景能被 $C$ 完全侵蝕」的錨點 $z$ 才被保留為命中位置。 ###### 🟡 白話定義 * **A(影像本身)** 就是你手上那張二值圖──白色是你想關注的「東西」(前景),黑色就是背景。 * **B(前景模板)** 想像一塊小橡皮章,上面刻著你要找的圖形輪廓。只有當這塊橡皮章放到圖上,下面的白色完全填滿它時,才算「找到了」這塊對應的形狀。 * **C(背景模板)** 另一塊橡皮章,用來確定找出的那個「東西」周圍得是黑色(沒有其他白點干擾)。就是確保你找到的形狀四周是乾淨的背景,而不是湊巧一堆白點拼在一起。 **整個流程就是:** 1. 用 B 去「試蓋」影像,找出哪些位置白色能完全填滿橡皮章。 2. 再用 C 去「試蓋」背景,找出哪些位置黑色能完全填滿另一個橡皮章。 3. 最後,只保留同時通過「白章」和「黑章」測試的位置,那就是最終的「命中」位置。 ###### 🟡 處理流程 1. **前景侵蝕**:將結構元素 $B$ 對影像 $A$ 做侵蝕,得到 $E_1 = A \ominus B$。 2. **背景侵蝕**:將結構元素 $C$ 對影像補集 $\bar A$ 做侵蝕,得到 $E_2 = \bar A \ominus C$。 3. **交集**:計算 $E_1 \cap E_2$,結果只保留同時符合前兩步驟的像素位置。 ###### 🟡 效果與應用 * **精確形狀偵測**:可在雜亂或雜訊豐富的二值圖中,找出完全吻合的目標圖案(如圖形、符號、小標記)並標出位置; * **骨架化**:常用於細化演算法中的特徵點檢測; * **拓樸分析**:可識別圖形結構中的特定連通或斷裂模式。 > **小提醒**:$(B,C)$ 的設計必須同時刻畫出「欲尋找形狀」及其周圍「空白邊界」,才能保證不產生假陽性。 ![hit-or-miss-transform-l](https://hackmd.io/_uploads/B1d3iobfgl.jpg) ![Morphological+Image+processing](https://hackmd.io/_uploads/rkC3jjWGgx.jpg) #### 🟣 七、邊界提取(Boundary Extraction) --- ##### 🟡 定義 * 對二值影像集合 $A$ 及結構元素 $B$,邊界提取定義為 $$ \beta(A) \;=\; A \;-\; (A \ominus B) $$ 也就是用原影像減去其**侵蝕**後的結果〔$A$ 中所有內縮後仍存在的像素〕,剩下的剛好是物件最外層的一圈像素。 ##### 🟡 直覺說明 1. **侵蝕**:把物件往內「縮一圈」,去掉最外層像素。 2. **相減**:原圖減去縮圈後的圖,正好留下那層最外圍的像素──也就是邊界。 ##### 🟡 效果 * 產生一個寬度等於結構元素大小的**輪廓帶**,完美包覆原物件外框。 * 不會填補孔洞,只標示物件的「皮」──非常適合後續的輪廓分析或特徵比對。 ##### 🟡 應用 * **物件輪廓檢測**:自動抓取影像中所有物體的邊界線。 * **分割後處理**:將分割結果的邊緣突出,用於形狀匹配或測量。 * **顯示效果**:在醫學影像、工業檢測、OCR 字元識別等場景中,用不同顏色標示物件邊緣。 ##### 🟢 白話解釋 想像你用指尖在蛋糕邊緣輕輕撥開一圈奶油,然後把整塊蛋糕放到空盤上,奶油就只剩下那條細細的邊緣。**邊界提取**也是這個概念:先把影像裡的物件「往內縮一圈」,再用原影像減去縮圈後的圖,剩下的正是那條「奶油邊」──也就是物件的邊界。 --- ![image](https://hackmd.io/_uploads/HJhani-fxe.png) ![image](https://hackmd.io/_uploads/Bysq2j-zgl.png) ![image](https://hackmd.io/_uploads/r1Qo2sZMxl.png) #### 🟣 八、區域填補(Region Filling) --- ##### 🟡 定義 * **目 的**:自動將二值影像中被前景環繞的「孔洞」填滿,使物件區域變成連續的實心塊。 * **原理基礎**:運用形態學重建(morphological reconstruction),從孔洞內部種子點開始,受原圖前景掩膜限制地膨脹,直到完全填補。 ##### 🟡 處理流程 1. **初始化**: * 設定 $J_0$ 為孔洞中任一黑色像素集合,代表「已填補區域」的起點。 2. **每一次膨脹**: * 對上一輪結果 $J_{k-1}$ 做膨脹,也就是把集合中每個像素向外「長」一圈: $$ \text{膨脹後} = J_{k-1} \oplus B $$ * 這一步驟會將 $J_{k-1}$ 的所有鄰近像素(由結構元素 $B$ 定義)都標記為候選填補點。 3. **交集限制**: * 把「膨脹後」的所有候選點與**原前景的補集** $A^c$ 做交集: $$ J_k = (J_{k-1} \oplus B) \;\cap\; A^c $$ * 這樣可以確保,只留下那些仍在原始物件孔洞內的點,不會跑到物件外部。 4. **重複直到不再變化**: * 每一輪,$J_k$ 都比 $J_{k-1}$ 多了一圈合法填補點。 * 當 $J_k$ 和 $J_{k-1}$ 一模一樣(沒有新增像素)時,就代表所有孔洞都已經填滿,演算法結束。 > **重點**:這個過程就像「逐層往外長高」——先種下一小撮點,再從這些點往外不斷擴張,但每次都檢查:「這個新點還在原本的物件裡嗎?」只有符合才留下,最終就把整個洞口填實了。 。 ##### 🟡 效果 * **完整填洞**:所有被前景包圍的空洞都會被白色像素填滿。 * **形狀保留**:由於膨脹受到前景掩膜限制,填補不會越過原始邊界。 ##### 🟡 應用 * **預處理**:在物件分割後,填補因雜訊或閾值化誤刪造成的小孔洞。 * **醫學影像**:修復細胞核、病灶區等結構中的斷裂假影。 * **工業檢測**:填平金屬或材質表面微小裂隙,以利精準量測。 ![Figure-33-Representation-of-the-region-filling-algorithm](https://hackmd.io/_uploads/r1jJb3bGeg.png) #### 🟣 九、凸包(Convex Hull) --- ##### 🟡 定義 * **凸包**:對二值影像而言,指最小的凸多邊形區域 $H$,使得原物件 $A$ 完全包含於 $H$ 內。 * 形式化地,若將 $A$ 看成點集,其凸包為所有 $A$ 中點的凸組合集合。 ##### 🟡 演算法(形態學方法) 1. **選擇結構元素方向** * 通常以水平、垂直、對角線等多個方向的結構元素 $B_i$(例如長條型)來逐步處理。 2. **迭代膨脹與交集** * 對每個方向 $i$: $$ H_i = \bigcup_{k=1}^\infty \bigl((A \oplus B_i) \ominus B_i\bigr) $$ * 各方向結果取聯集: $$ H = \bigcup_i H_i $$ * 直到聯集前後不再改變,便得到最終凸包。 3. **收斂準則** * 每一輪對所有方向執行膨脹→腐蝕後取聯集;若新 $H$ 與舊 $H$ 相同,演算法結束。 ##### 🟡 直覺說明 * 想像用多把不同方向的「尺」去「撐開」物件凹陷處,每次都把尺貼平凹槽,然後取所有結果的聯集;不斷重複,直到物件再也沒有凹陷——剩下的就是凸包。 ##### 🟡 效果 * **填平凹陷**:原物件中所有向內的凹陷都被「撐開」成平直邊,最後形狀變得完全凸。 * **保留外框**:外側邊界只會向外延伸,不會縮進去。 ##### 🟡 應用 * **形狀表示**:用凸包簡化複雜物件的幾何表示,便於進行後續的面積、周長計算。 * **物件過濾**:剔除具顯著凹陷的噪聲小物件,或者用凸包面積與原物件面積比判斷凸度指標。 * **運動分析**:在物體追蹤、碰撞偵測中,凸包常用於快速判定邊界範圍。 > **小提醒** :凸包運算通常比單純形態學更費時,應依需求取捨方向數量與結構元素大小,以平衡精度與效能。 ![slide29-l](https://hackmd.io/_uploads/Hk7Jr2fzxx.jpg) #### 🟣 十、細化(Thinning) --- ##### 🟡 定義 * **目的**:將二值影像中的物件邊界逐步剝薄,最終保留原形狀的中軸(skeleton)線,像素寬度盡可能為一。 * **運算原理**:採用多組**Hit-or-Miss 結構元素** $B_i$,對影像 $A$ 反覆執行「命中-剔除」: $$ A_{k} \;=\; A_{k-1} \;-\; \bigcup_i \bigl(A_{k-1}\;\otimes\;B_i\bigr) \quad,\quad A_0 = A $$ − 其中 $A\otimes B_i$ 為 Hit-or-Miss 運算,找出可移除的邊界像素。 * **停止條件**:當一次迭代中再也沒有像素被剔除($A_k = A_{k-1}$)時,結果即為細化後的骨架。 ##### 🟡 直覺說明 1. 檢查影像中所有「可安全去除的邊界像素」(符合某一方向模板的像素)。 2. 一次移除一小批這些像素,保持物件的連通性不被破壞。 3. 重覆多個方向的模板,直到無可再移除為止。 ##### 🟡 效果 * **骨架化**:物件收縮為最細的一條線,完美保留連通結構及拓撲特徵。 * **無斷裂**:剔除過程受限於模板設計,確保中軸不會斷裂。 ##### 🟡 應用 * **形狀分析**:用骨架做特徵匹配、筆劃分割(OCR)、血管/神經線路追蹤等。 * **拓撲檢測**:判斷物件是否連通、有無分叉或迴路。 * **資料壓縮**:用最少的像素表示物件主要結構。 ![image](https://hackmd.io/_uploads/Bkrwr2GGxe.png) --- #### 🟣 十一、增厚(Thickening) --- ##### 🟡 定義 * **目的**:將二值影像中的物件逐步“長”厚枝條,填補細小斷裂或連接鄰近結構,與細化互為對偶。 * **運算原理**:同樣使用多組**Hit-or-Miss 結構元素** $B_i$,對影像 $A$ 反覆執行「命中-新增」: $$ A_{k} \;=\; A_{k-1} \;\cup\; \bigcup_i \bigl(A_{k-1}\;\otimes\;B_i\bigr) \quad,\quad A_0 = A $$ − 每次將符合模板的背景像素「填」入,使物件外擴並連通近鄰。 * **停止條件**:當一次迭代中已無新像素被加入($A_k = A_{k-1}$)時,完成增厚。 ##### 🟡 直覺說明 1. 找出所有與背景相鄰且符合某一方向模板的黑色像素(空洞位置)。 2. 一次將它們變成前景,逐步填平裂隙或連接細線。 3. 重覆多方向,直到無更多可填補的點。 ##### 🟡 效果 * **填補裂隙**:消除物件細微斷裂或孔洞,增強結構連通性。 * **強化細枝**:將骨架或細線段增厚,令後續分析更穩定。 ##### 🟡 應用 * **預處理**:在分割或骨架化前,先補全斷裂邊界;或在後處理中填平小孔。 * **形態重建**:結合細化與增厚,可重建原始形狀或調整線寬。 * **工業瑕疵檢測**:修補微裂痕,再檢測更大尺度的缺陷。 ![image](https://hackmd.io/_uploads/rJllU3zfgl.png) ![image](https://hackmd.io/_uploads/S1i0UhGzgl.png) --- > **小提醒**:細化與增厚常成對使用——先增強連通性,再細化獲得骨架,或先細化後增厚以修正骨架斷裂。 #### 🟣 十二、骨架(Skeletons) --- ##### 🟡 定義 * **骨架**:將二值物件 $A$ 縮減為一組連通的中軸線條,同時保留物件的拓撲結構與主要形狀特徵。 ##### 🟡 形態學骨架化演算法 1. **公式定義** $$ S(A) \;=\; \bigcup_{k=0}^{K} \Bigl[(A\ominus kB)\;-\;(A\ominus kB)\circ B\Bigr] $$ * 其中 * $A\ominus kB$ 表示對 $A$ 連續侵蝕 $k$ 次, * $\circ$ 為開運算, * $K$ 是當 $A\ominus K B$ 首次變為空集前的最大 $k$。 2. **逐層侵蝕與差分** * 每一步先將物件往內侵蝕一層,得到 $A_k=A\ominus kB$; * 再對 $A_k$ 做開運算,去除「還能再膨脹回來」的部分; * 將「侵蝕後剩下但膨脹不回來」的點集累加,就是骨架的一部分。 3. **終止條件** * 當 $A\ominus kB=\varnothing$(全被侵蝕光)時,停止,所有累積的差分即為完整骨架。 ##### 🟡 直覺說明 * 想像把物件一層層往內「剝皮」,每次剝掉一圈後,標記那些「只屬於這一圈」的像素;把所有圈的標記集合起來,就構成了中心的「骨幹」。 ##### 🟡 效果 * **中軸保留**:骨架像素一條條穿過物件內部,指引物件最細的連通路徑。 * **拓撲不變**:即使原物件有複雜分岔或洞穴,骨架仍反映出相同的連通與分支結構。 ##### 🟡 應用 * **形狀描述**:以骨架長度、分支點數目等特徵進行物件比對或分類。 * **路徑規劃**:在機器人導航或纖維追蹤中,用骨架作為最短路線基礎。 * **壓縮表示**:用最少像素保存形狀結構,減少後續處理成本。 --- ##### 🟢 白話解釋 1. **一層層「削薄」**:先在物件邊界削掉一圈,留下縮小後的版本; 2. **找出專屬這一圈的像素**:哪些點在下一次可以被「長回去」?不要它們,只保留無法恢復的部分; 3. **重複直到物件消失**:把每層留下的那部分都記錄下來,就構成了物件的「細骨架」,像是雕塑家在物件裡挖出的一條條細線。 這樣產生的骨架完全反映了物件的形狀走向與分支結構,可做進一步的分析或應用。 ![image](https://hackmd.io/_uploads/HkydPhffeg.png) ![image](https://hackmd.io/_uploads/HkvnDhzflg.png) #### 🟣 十三、修剪(Pruning) --- ##### 🟡 定義 * **修剪**:在生成骨架(Skeleton)後,移除那些「不重要」或「過短」的枝狀假影,保留主要結構。 * **目的**:消除骨架上的雜散小分支,使骨架更簡潔且代表真實形狀特律。 ##### 🟡 處理流程 1. **設定長度閾值** * 根據應用需求,決定最短保留分支長度 $L_{\min}$。 2. **識別終端點** * 在骨架上找出所有**端點**(degree=1 的像素點)。 3. **追蹤分支** * 從每個端點開始,沿著骨架往內追蹤,直到遇到分叉點或追蹤長度達到 $L_{\min}$。 4. **條件移除** * 若追蹤長度 $<L_{\min}$,將該分支上的所有像素設為背景(0);否則保留不變。 5. **更新骨架** * 移除所有過短分支後,重新計算端點與分叉結構,直到所有枝條都符合長度要求。 ##### 🟡 直覺說明 * 想像修剪樹枝:把樹幹周圍那些細小、長度不足的枝條都剪掉,只留下有助於樹型輪廓的主要枝幹。 ##### 🟡 效果 * **去除雜散**:清除由雜訊或細化過程產生的假分支。 * **保持主體**:骨架的主幹與重要分枝不受影響。 * **增強可讀性**:使後續分析(如路徑提取、量測)更加可靠。 ##### 🟡 應用 * **醫學影像**:在血管或神經網絡追蹤中,去除因噪聲導致的假小分支,聚焦主要通路。 * **字符識別**:文字筆劃骨架化後,去除筆觸末端的瑣碎筆跡。 * **形狀比對**:減少骨架複雜度,提高匹配準確度與效率。 --- > **小提醒**:選擇合適的長度閾值 $L_{\min}$ 是關鍵,過大可能誤剪掉真正的次要分支,過小則無法去除足夠雜散。 ![4-Figure2-1](https://hackmd.io/_uploads/Hkxdd2Gzgl.png) ### 🟣 二值影像的形態學運算總結(術語中英對照) | 類別 | 運算 | 記號/公式 --->還有用途 | 主要用途 | | ----------- | ------------------------------ | ------------------------------------------------------------ | ---------------------- | | **集合變換** | complement(補集) | $A^c = \{w\mid w\notin A\}$ | 取反,標示所有背景點 | | | difference(差集) | $A - B = A \cap B^c$ | 從 $A$ 中去除同時屬於 $B$ 的部分 | | **基礎形態學** | dilation(膨脹) | $A \oplus B = \{z\mid (\hat B)_z \cap A \neq \varnothing\}$ | 增大物件、填補細孔、連接鄰近區塊 | | | erosion(侵蝕) | $A \ominus B = \{z\mid B_z \subseteq A\}$ | 縮小物件、去除小雜訊、削薄邊界 | | | opening(開運算) | $A\circ B = (A\ominus B)\oplus B$ | 刪除小而亮的突出,平滑輪廓 | | | closing(閉運算) | $A\bullet B = (A\oplus B)\ominus B$ | 填補小而暗的凹洞,平滑輪廓 | | **邊緣/特徵提取** | morphological gradient(形態學梯度) | $\nabla(A)= (A\oplus B) - (A\ominus B)$ | 強化邊緣輪廓,類似邊緣檢測 | | | boundary extraction(邊界提取) | $\beta(A)=A - (A\ominus B)$ | 擷取物件最外層一圈像素 | | | hit-or-miss transform(擊中或錯過轉換) | $A\otimes(B,C)=(A\ominus B)\cap(A^c\ominus C)$ | 精確定位匹配形狀的像素 | | **區域操作** | region filling(區域填補) | $X_k=(X_{k-1}\oplus B)\cap A^c,\;X_0=\{p\}$ | 將前景包圍的孔洞逐步填滿 | | | connected components(連通元件標記) | 同上式,改為 $\cap A$ | 找出與指定種子同連通區域 | | **凸包與骨架化** | convex hull(凸包) | $X^i_k=(X^i_{k-1}\oplus B^i)\cup A,\;D^i=X^i_{\text{conv}}$ | 求取物件的最小凸包 | | | skeleton(骨架) | $S(A)=\bigcup_{k=0}^K[(A\ominus kB)-((A\ominus kB)\circ B)]$ | 將物件縮減為連通中軸,保留拓撲結構 | | **骨架後處理** | thinning(細化) | $A\otimes\{B_i\}=A-\bigcup_i(A\otimes B_i)$ | 逐步剔除邊界像素,獲得像素寬度為 1 的骨架 | | | thickening(增厚) | $A\odot\{B_i\}=A\cup\bigcup_i(A\otimes B_i)$ | 逐步填補骨架裂隙,增強連通性 | | | pruning(修剪) | 依端點長度刪除短枝 | 移除骨架上不重要或過短的分支,保留主要結構 | > **重點回顧**: > > * **dilation(膨脹)/erosion(侵蝕)** 為所有形態學運算基礎; > * **opening(開運算)/closing(閉運算)** 能去除小亮點、填補小凹穴; > * **morphological gradient(形態學梯度)/boundary extraction(邊界提取)** 用於邊緣強化; > * **hit-or-miss transform(擊中或錯過轉換)** 精準定位特定形狀; > * **region filling(區域填補)/connected components(連通元件標記)** 處理洞穴與標記物件; > * **convex hull(凸包)/skeleton(骨架)** 以及 **thinning(細化)/thickening(增厚)/pruning(修剪)** 等後處理,常用於形狀簡化與特徵提取。 ##### 🟡 四、應用與注意事項 * **應用**:雜訊去除、邊緣增強、形狀檢測、物件分割(OCR、細胞影像、工業檢測等)。 * **挑戰**:SE 的形狀與大小需根據影像內容調整;過度運算可能破壞細節。 --- 當我們將 **形態學運算(Morphological Operations)** 從**二值影像**擴展到**灰階影像(Grayscale Images)**時,其核心邏輯仍是「套用結構元素(SE)掃描影像」,但**操作方式**會從「邏輯比較」變成「最大值/最小值運算」。 --- ## 🔶 一、灰階 Dilation(膨脹) ### 📘 定義: 對於灰階影像 $f(x, y)$ 和結構元素 $B(s, t)$,膨脹定義為: $$ (f \oplus B)(x, y) = \max_{(s, t) \in B} \left[ f(x - s, y - t) + B(s, t) \right] $$ ### 💡 直觀解釋: * 對於影像中每個像素 $(x, y)$,將結構元素 $B$ 套在周圍區域。 * 取結構元素覆蓋區域的每個像素值加上 SE 的值後,取**最大值**作為膨脹結果。 --- ### 🎯 效果: * 亮區擴大,暗區被填補。 * 對灰階邊界產生「向外膨脹」效果,模糊化暗邊界。 --- ## 🔷 二、灰階 Erosion(侵蝕) ### 📘 定義: $$ (f \ominus B)(x, y) = \min_{(s, t) \in B} \left[ f(x + s, y + t) - B(s, t) \right] $$ ### 💡 直觀解釋: * 用結構元素掃過影像每個區域,對應位置的像素值減去結構元素後,取**最小值**作為輸出。 --- ### 🎯 效果: * 暗區擴大,亮區縮小。 * 可抑制亮點雜訊,讓邊緣內縮。 --- ## 🧪 與二值運算的比較 | 特性 | 二值影像 | 灰階影像 | | -------- | ---------------------- | ------------------ | | Dilation | 若結構元素有任一與 A 的交集 → 設為 1 | 取鄰域內像素與 SE 相加後的最大值 | | Erosion | 若結構元素完全在 A 中 → 設為 1 | 取鄰域內像素減去 SE 後的最小值 | | 結果 | 邊界膨脹或收縮 | 邊界平滑、強度變化,有連續灰階 | ## ✅ 應用實例: | 運算 | 應用範例 | | -------- | ---------------- | | Dilation | 強化亮邊界、消除暗小洞、光暈效果 | | Erosion | 去除亮雜訊、縮小亮區、邊緣細化 | --- 非常好,接續灰階形態學的介紹,現在來說明: --- # 🌕 灰階 Opening & Closing 灰階影像的 **Opening(開運算)** 和 **Closing(閉運算)** 是將「侵蝕」與「膨脹」結合而成的**複合操作**,目的在於**平滑影像、去雜訊、保持結構特徵**。 --- ## 🔸 1. **Grayscale Opening(開運算)** ### 📘 定義: $$ f \circ B = (f \ominus B) \oplus B $$ 也就是:**先侵蝕、再膨脹** --- ### 💡 直觀解釋: * 開運算會「削掉」比結構元素小的突起或亮點雜訊,但保留較大結構。 * 適合**去除小亮點**、**平滑邊界**、**斷開細小連結**。 --- ### 🖼️ 視覺效果: | Before | After Opening | | ------ | ------------- | | 有亮點雜訊 | 小亮點消失,主要亮區保留 | | 邊界鋸齒多 | 邊緣變得平滑、噪聲減少 | --- ## 🔹 2. **Grayscale Closing(閉運算)** ### 📘 定義: $$ f \bullet B = (f \oplus B) \ominus B $$ 也就是:**先膨脹、再侵蝕** --- ### 💡 直觀解釋: * 閉運算會「填補」比 SE 小的暗洞或黑點雜訊,連接鄰近區塊。 * 適合**去除暗點雜訊**、**填補細縫與孔洞**。 --- ### 🖼️ 視覺效果: | Before | After Closing | | ------ | ------------- | | 有暗點雜訊 | 小黑洞消失,主體亮區完整 | | 邊界缺口多 | 邊緣填補、區域連續性增加 | --- ## 📊 比較總表: | 操作 | 組成 | 主要效果 | 應用 | | ------- | ------- | --------- | --------- | | Opening | 侵蝕 → 膨脹 | 去除亮點、細節清除 | 去毛邊、移除亮雜訊 | | Closing | 膨脹 → 侵蝕 | 填補黑洞、連結區塊 | 去黑點、連接物件 | ## 🧠 小結: | 屬性 | 開運算(Opening) | 閉運算(Closing) | | ----- | ------------ | ------------ | | 去除什麼 | 小亮點、突起物 | 小黑點、凹洞 | | 影響結構 | 可能消去小結構 | 可能模糊小孔洞 | | 結構元素大 | 更容易消去細節 | 更容易填補小洞 | --- 當我們談到 **Morphological Smoothing(形態學平滑)**,其實就是將形態學運算應用於影像平滑處理的技巧。 它是一種非線性的邊緣保留式影像平滑方法,廣泛應用於**去雜訊、邊界修整、形狀優化**等用途。 --- ## 🔶 一、定義與核心觀念 ### 📘 Morphological Smoothing 是什麼? > **Morphological Smoothing** 是指透過形態學的 **開運算(Opening)與閉運算(Closing)**,對影像進行結構性地平滑, > 同時**消除雜訊**、**平滑邊界**、又不會像線性濾波那樣模糊整體內容。 --- ## 🔷 二、主要兩種形式 | 形式 | 定義 | 說明 | 適用情況 | | ------------------------------- | ----------------------- | -------------- | ---------------------- | | **Closing followed by Opening** | $(f \bullet B) \circ B$ | 先填洞、再削邊,保留大亮區 | 適合去除黑點雜訊(暗區)後再去除亮點(突起) | | **Opening followed by Closing** | $(f \circ B) \bullet B$ | 先削邊、再補洞,平滑整體區塊 | 適合先去除亮點,再修補邊界缺口 | --- ## 🔧 三、灰階實作流程 假設有灰階影像 $f(x, y)$,結構元素 $B$: ### 1️⃣ Opening then Closing: $$ f_{smoothed} = ((f \ominus B) \oplus B) \bullet B $$ ### 2️⃣ Closing then Opening: $$ f_{smoothed} = ((f \oplus B) \ominus B) \circ B $$ --- ## 🖼️ 四、視覺效果比較 | 原圖 | 開-閉平滑 | 閉-開平滑 | | -------- | ----------- | ------------- | | 有亮點 + 暗洞 | 去除亮點,補洞效果一般 | 補洞效果強,亮點處理較保守 | | 邊緣鋸齒 | 邊緣變圓滑,細節變柔 | 邊緣變穩定,雜訊去除更溫和 | --- ## 🔬 五、應用情境 | 應用場景 | 說明 | | ------- | ---------------- | | 雜訊抑制 | 對亮點雜訊與黑洞雜訊同時處理 | | 形狀修整 | 消除碎片、補足斷裂,讓邊緣更滑順 | | 醫學影像處理 | 平滑輪廓同時保留腫瘤或器官邊界 | | OCR 預處理 | 去除背景髒點、黏字、破洞 | --- ## ✅ 結論 > **Morphological Smoothing = 開運算 + 閉運算的組合**,是一種高效、非線性的影像平滑策略, > 在去除亮點與暗洞雜訊的同時,保留主要形狀與邊界,是傳統濾波無法兼顧的效果。 --- 當然可以!**Morphological Gradient(形態學梯度)** 是一種基於形態學的邊緣偵測方法,用於強調影像中物體的**邊界輪廓**,是灰階形態學中非常實用的技術。 --- ## 🔶 一、什麼是 Morphological Gradient? > Morphological Gradient 是指影像的「膨脹」與「侵蝕」之間的差異, > 它能凸顯物件邊緣,類似於傳統梯度運算(如 Sobel 或 Roberts),但**對雜訊更具魯棒性**。 --- ## 📘 數學定義: 設影像為 $f(x, y)$,結構元素為 $B$,則: $$ \text{Morphological Gradient} = (f \oplus B) - (f \ominus B) $$ 也可以分為兩種形式: | 類型 | 定義 | 描述 | | -------- | ----------------------------------------- | ------------ | | **完整梯度** | $\nabla f = (f \oplus B) - (f \ominus B)$ | 整體邊緣強度(上下皆含) | | **內部梯度** | $\nabla_{in} f = f - (f \ominus B)$ | 內部邊界(像素向外擴張) | | **外部梯度** | $\nabla_{out} f = (f \oplus B) - f$ | 外部邊界(像素向內縮小) | --- ## 🔍 解釋與流程 1. **膨脹:** 將影像中較亮的區域向外擴張,填補邊緣。 2. **侵蝕:** 將影像中較暗的區域向內收縮,削去邊緣。 3. **梯度 = 差值:** 膨脹與侵蝕之間的差異即為邊界區域的強度。 --- ## 🖼️ 視覺效果 原始影像中的平坦區(沒有變化)經過膨脹與侵蝕後會相互抵銷, **只有邊界區域會產生強烈變化 → 梯度大 → 邊緣被凸顯出來。** --- ## 📊 應用場景 | 應用場景 | 說明 | | ------- | ---------------- | | 邊緣檢測 | 提取物體輪廓、區域邊界 | | 細胞分析 | 強調細胞膜邊界,利於分割 | | 工業檢測 | 強化零件輪廓,利於瑕疵定位 | | 物件追蹤前處理 | 畫出移動物件輪廓,便於定位與標記 | --- ## ✅ 總結比較 | 類型 | 操作 | 用途 | | ---- | ----------------------- | ------------- | | 完整梯度 | $\text{膨脹} - \text{侵蝕}$ | 偵測完整邊界 | | 內部梯度 | $\text{原圖} - \text{侵蝕}$ | 偵測內邊界(貼近物體內側) | | 外部梯度 | $\text{膨脹} - \text{原圖}$ | 偵測外邊界(貼近背景) | --- 如果你想看圖解說明或希望我用你提供的影像跑一次 `morphological gradient`、`internal gradient` 和 `external gradient` 結果,我可以立即幫你處理。要試試看嗎? 當然可以!**Top-hat Transformation(頂帽轉換)** 是一種形態學影像處理技術,常用於**強化影像中特定結構細節**,特別適合用來**提取亮區、去除背景、強化局部特徵**。 --- ## 🔶 一、什麼是 Top-hat 轉換? Top-hat 是一種針對影像「細小亮區」的提取方法,分為兩種形式: | 類型 | 定義公式 | 用途 | | ---------------------- | ------------------------------- | ---------------- | | **White Top-hat**(白頂帽) | $T_{white} = f - (f \circ B)$ | 擷取比周圍亮的細節,如亮點、條紋 | | **Black Top-hat**(黑頂帽) | $T_{black} = (f \bullet B) - f$ | 擷取比周圍暗的細節,如暗洞、裂縫 | --- ## 🔷 二、運作原理(以灰階影像為例) ### 📘 White Top-hat(白頂帽) * 意思是「**原圖減去開運算結果**」 * 把那些在開運算中被「削掉」的亮小區域還原出來 * 📌 可強調:**小亮點、細小明亮紋理** ### 📘 Black Top-hat(黑頂帽) * 意思是「**閉運算結果減去原圖**」 * 把那些在閉運算中被「填補」的暗洞、細縫還原出來 * 📌 可強調:**小黑洞、暗邊界、細小陰影** --- ## 🧠 三、數學公式 * 開運算(Opening):$f \circ B = (f \ominus B) \oplus B$ * 閉運算(Closing):$f \bullet B = (f \oplus B) \ominus B$ 所以: $$ \begin{aligned} \text{White Top-hat} &= f - (f \circ B) \\ \text{Black Top-hat} &= (f \bullet B) - f \end{aligned} $$ --- ## 📊 四、比較表格 | 項目 | White Top-hat | Black Top-hat | | ---- | -------------- | -------------- | | 操作方式 | 原圖 − 開運算 | 閉運算 − 原圖 | | 強調對象 | 小亮區 | 小暗區 | | 應用場景 | 文字提取、亮線檢出、瑕疵檢測 | 裂痕偵測、孔洞找出、暗區補償 | --- ## 🖼️ 六、應用實例 | 應用類型 | 使用的 Top-hat | 解釋 | | ------- | ------------- | --------------- | | OCR 前處理 | White Top-hat | 強化文字(亮)對比,抑制背景 | | 瑕疵檢測 | White Top-hat | 找出金屬或玻璃上小亮點 | | 微裂紋分析 | Black Top-hat | 把黑色裂縫從明亮背景中凸顯出來 | | 生醫影像增強 | 雙 Top-hat | 結合使用,增強細胞亮/暗邊界 | --- ## ✅ 結論 > **Top-hat transformation = 小亮區 or 小暗區 的「凸顯工具」**,是形態學中非常常用的前處理與特徵強化技術。 > 選擇 White 或 Black 視你要提取的是「比背景亮」還是「比背景暗」的區域。 --- 當然可以!**Granulometry(粒徑分析)** 是形態學中的一個重要應用,主要用於分析影像中物件(通常是亮區)的**大小分佈**。它是一種**基於形態學開運算的多尺度分析方法**,可用來統計影像中「物體大小」與「形狀變化」。 --- ## 🔶 一、什麼是 Granulometry? > Granulometry 是一種\*\*根據形態學開運算(Opening)或閉運算(Closing)\*\*來估計影像中物體大小的方法。 > 就像用一組不同大小的「篩子」來篩選影像中的物件,看有多少「東西」被篩掉,以推估物件的粒徑大小分佈。 --- ## 🔷 二、核心概念與流程 1. **選定結構元素(SE)** * 通常是圓形、方形等對稱 SE * 並根據尺寸進行一系列放大:$B_1, B_2, ..., B_n$ 2. **對影像進行開運算(或閉運算)** * 用不同尺寸的 SE 依序對影像 $f$ 執行: $$ f \circ B_1, \quad f \circ B_2, \quad ..., \quad f \circ B_n $$ 3. **計算每一次開運算後消失的像素量(或灰階總量)** * 每次開運算會「去除比 SE 小的物件」 * 差值即代表「該尺寸被篩選掉的顆粒量」 4. **產生粒徑直方圖(granulometric curve)** * x 軸為 SE 大小(對應粒徑) * y 軸為被開運算移除的資訊量 --- ## 📘 數學表示 設原始影像為 $f$,結構元素 $B_r$ 的半徑為 $r$,則: $$ G(r) = \int \left[ (f \circ B_{r}) - (f \circ B_{r+1}) \right] dxdy $$ 或也常用: $$ G(r) = \int f(x, y)\, dxdy - \int (f \circ B_r)(x, y)\, dxdy $$ → 表示當 SE 大小為 $r$ 時,有多少區域被「移除」,也就是「粒子大小為 $r$ 的總量估計」。 --- ## 🧠 舉例: 假設你有一張黑白影像,裡面有許多不同大小的亮圓點: * 用半徑 1 的圓形 SE 開運算 → 小亮點會消失,大亮點保留 * 記錄亮點損失量 → 記為「1 像素大小的粒徑數量」 * 接著用半徑 2、3、4 的 SE 重複此操作 * 最後得到一張「粒徑 vs 消失量」的曲線圖 --- ## 📊 Granulometry 應用成效 | 對象 | 可分析的內容 | | --------- | ------------------- | | 材料影像(SEM) | 粒子分佈、粉末大小 | | 細胞影像 | 細胞大小分佈、腫瘤結節檢測 | | 影像前處理 | 特定尺寸物件篩選,去除過小雜訊 | | 遙測影像分析 | 土地斑塊大小分佈(例如農田、森林單元) | --- ## 📈 輸出解釋(Granulometric Curve) | 半徑(r) | 消失像素量(volume) | 解釋 | | ----- | ------------- | -------------- | | 1 | 2500 | 有很多 1 像素大小的小亮點 | | 2 | 1200 | 較少中等大小亮點 | | 3 | 200 | 只有少量較大的亮點 | 這樣你就能大致知道:影像中的物件大多是什麼大小的,且可以「定量化」評估。 --- ## ✅ 結論 > **Granulometry 是一種「多尺度形態學分析」工具,** > 它可以告訴你:**影像中不同「尺寸」的物件分佈有多少**, > 對於生醫、材料、品質檢測、圖像分割等都非常有用。 --- ## 🔶 一、什麼是 Morphological Textural Segmentation? > 它是利用**形態學運算(如 Opening、Closing)在不同尺度與結構元素下對影像進行處理, > 分析各區域的結構響應差異,以此達成分割紋理不同的區域**。 這種方法不單依賴像素強度,而是依賴區域對形態操作的「**形狀響應行為(shape response)**」,例如: * 有的區域在開運算後會大幅變化(代表粗顆粒紋理) * 有的區域變化小(代表細緻或均勻紋理) --- ## 🔷 二、核心概念:形態學的「尺度響應」 ### 📘 關鍵操作: * 對影像套用不同半徑的 SE,做 **Opening 或 Closing** * 每次操作後,觀察原圖與處理後影像的**差值(residue)** * 這個差值就代表該區域對該尺度的紋理回應程度 ### ➤ 範例: $$ R_r(x, y) = f(x, y) - (f \circ B_r)(x, y) $$ 這代表用半徑 $r$ 的結構元素開運算後留下的紋理成分 這種差值就稱作 **Residual Image**,是紋理的重要特徵 --- ## 🧠 三、形態紋理分割流程 1. **選定一組尺度(結構元素大小)**:如 $r = 3, 5, 7, 9$ 2. **開運算 or 閉運算**:對每個尺度 $B_r$ 執行開運算 3. **計算 Residual Maps**:每個點都可獲得一個向量 $[R_3, R_5, R_7, R_9]$ 4. **特徵分群(Clustering)**:用 K-means、SVM、CNN 等將這些紋理向量分類 5. **生成分割圖**:每一類對應一種紋理區域 --- ## 📊 四、與 Granulometry 的關係 Morphological Textural Segmentation 常搭配 **Granulometry**, 因為 granulometry 正是分析各區域在不同尺度開運算下「訊號損失程度」的工具, 也就是每個區塊的「形態紋理特徵向量」。 --- ## 📘 優勢與應用 | 優點 | 說明 | | --------- | ------------------------ | | 非線性、結構導向 | 不受灰階變化影響,聚焦於紋理結構 | | 可應用於無監督分割 | 搭配 clustering 技術即可產生分割結果 | | 細節保留且邊界清晰 | 避免模糊,適用於具有形狀差異的紋理區域 | --- ## ✅ 應用範例 | 應用場景 | 說明 | | ------ | ------------------ | | 工業瑕疵偵測 | 分離正常紋理區 vs 異常粗糙區域 | | 醫學組織分割 | 分出組織結構 vs 癌化紋理 | | 材料分析 | 不同顆粒大小區域、噴砂或鍍膜不均區域 | | 衛星遙測分類 | 紋理分出森林、建築、農地等結構 | --- ## 🔚 小結 > **形態學紋理分割 = 利用形態運算(開/閉)在不同尺度下,量化區域的結構響應差異,進而進行分類分割。** 這種方法**結合 Granulometry 的概念**,又具有形態學對紋理的高靈敏度,是影像分割中非常精細的一種技術。 — 如有需要,我可以用你的圖實作一個形態學紋理分割流程給你看,並可比較與傳統分割的差異。是否要我展示一張範例圖? #### 🟣 七、集合論基礎(Set Theory) --- ##### 🟡 一、基本定義 * **元素(Element)**:若 $a$ 屬於集合 $A$,記作 $a \in A$;否則記作 $a \notin A$。 * **空集(Null/Empty Set)**:不含任何元素的集合,記作 $\varnothing$。 ##### 🟡 二、集合關係 * **子集(Subset)**:若所有 $A$ 中元素也屬於 $B$,則 $A\subseteq B$。 * **真子集**:若 $A\subseteq B$ 且 $A\neq B$,則 $A\subset B$。 * **互斥/不相交(Disjoint)**:若 $A$ 與 $B$ 沒有共同元素,則稱雙方互斥。 ##### 🟡 三、運算 1. **聯集(Union)** * 定義:$A\cup B=\{x\mid x\in A \lor x\in B\}$。 2. **交集(Intersection)** * 定義:$A\cap B=\{x\mid x\in A \land x\in B\}$。 3. **差集(Difference)** * 定義:$A - B=\{x\mid x\in A \land x\notin B\}$。 4. **補集(Complement)** * 定義:相對於全集 $U$,$\overline{A}=U - A$,包含所有不屬於 $A$ 的元素。 ##### 🟡 四、幾何變換(Set Transformations) * **反射(Reflection)**:將集合中每一點 $x$ 映射到其對稱位置。 * **平移(Translation)**:將集合中每一點 $x$ 按向量 $t$ 移動,得 $A_t=\{x+t\mid x\in A\}$。 --- > **小提醒**:集合論是形態學運算的理論基礎,理解集合關係與運算有助於深入掌握影像中的形狀處理。