圖像分割

在電腦視覺領域，圖像分割（segmentation）指的是將數字圖像細分為多個圖像子區域（像素的集合）（也被稱作超像素）的過程。圖像分割的目的是簡化或改變圖像的表示形式，使得圖像更容易理解和分析。圖像分割通常用於定位圖像中的物體和邊界（線，曲線等）。更精確的，圖像分割是對圖像中的每個像素加標籤的一個過程，這一過程使得具有相同標籤的像素具有某種共同視覺特性。

圖像分割的結果是圖像上子區域的集合（這些子區域的全體覆蓋了整個圖像），或是從圖像中提取的輪廓線的集合（例如邊緣檢測）。一個子區域中的每個像素在某種特性的度量下或是由計算得出的特性都是相似的，例如顏色、亮度、紋理。鄰接區域在某種特性的度量下有很大的不同。

分割操作也可以利用像素的全局和局部特性來完成。全局特性是通過多個像素的均值和物體的連續邊緣來計算，而局部特性則由連續像素和圖像邊界的相互作用來表徵。通過改進的加權函數來適應局部項和全局項之間的權重，可以顯著提高分割速度。

## 圖像分割的應用

圖像分割在實際中的應用包括：

- 醫學影像，包括:
- 腫瘤和其他病理的定位
- 組織體積的測量
- 電腦引導的手術
- 診斷
- 治療方案的定製
- 解剖學結構的研究
- 在衛星圖像中定位物體（道路、森林等）
- 人臉識別
- 指紋識別
- 交通控制系統
- Brake light detection
- 機器視覺

現已有許多各種用途的圖像分割演算法。對於圖像分割問題沒有統一的解決方法，這一技術通常要與相關領域的知識結合起來，這樣才能更有效的解決該領域中的圖像分割問題。

## 二值化

二值化（thresholding）是最簡單的圖像分割方法，會根據特定的限幅值（clip-value）將灰度圖轉換為黑白圖，該值也稱閾值（threshold）。

該方法的關鍵在於如何選取閾值。工業上所採用的方法有很多，如大津算法和K-平均演算法。

基於像素強度，此方法將圖像劃分為兩部分，即像素值低於閾值和像素值高於閾值。在許多應用中，彩色圖像分割需要多階段閾值法。為了分割紅、綠和藍色分量，可能需要多個最佳閾值。未來可能需要更多的閾值，但更多的閾值會降低分割過程的性能。多級閾值分割的主要缺點是執行時間過長。在處理低質量圖像時，可能會導致閾值錯誤預測。改進的Salp Swarm演算法可以最小化閾值數量，以確保有效的分割過程。改進的Grasshopper Optimization演算法、Metaheuristic演算法、Firefly演算法和新型基於群體的Bee Foraging演算法也被用於優化閾值。

## 聚類法

源圖像。

K-均值演算法是一種將圖像分割成K個聚類的迭代技術。基本演算法如下：

- 首先從n個數據對象任意選擇 k 個對象作為初始聚類中心。
- 對於所剩下其它對象，則根據它們與這些聚類中心的相似度（距離），分別將它們分配給與其最相似的（聚類中心所代表的）聚類。
- 然後再計算每個所獲新聚類的聚類中心（該聚類中所有對象的均值）。
- 重複第2和3步驟，直至收斂（聚類不再發生變化）。

這裡，距離指像素與聚類中心之間絕對偏差或偏差的平方。偏差通常用像素顏色、亮度、紋理、位置，或它們的加權組合。K值可以手動選取、隨機選取、或其它方式得到。此算法保證收斂，但它可能不會返回最佳的解決方案。該解決方案的質量取決於最初的一組集群和K值。

## 直方圖法

相對於其他的圖像分割演算法來說，基於直方圖的方法是一種效率非常高的方法，因為通常來說，該方法只需要對整幅圖片掃描一遍即可。該方法對於整幅圖像建立一張直方圖，並通過圖中的峰和谷來進行分類。顏色與灰度是通常進行直方圖統計的特徵。

## 邊緣檢測

邊緣檢測主要是圖像的灰度變化的度量、監測和定位，其實質就是提取圖像中不連續部分的特徵。邊緣檢測在圖像處理中比較重要，邊緣檢測的結果是圖像分割技術所依賴的重要特徵，因此邊緣檢測是圖像分割領域的一部分。邊緣檢測常用於電腦視覺、武器跟蹤控制及自控制式的車船運動研究等領域。

首先介紹圖像邊緣檢測，具體就梯度算子、kirsch算子、laplacian-gauss算子、canny算子、log濾波算子、sobel算子、Robert算子、prewitt算子邊緣檢測方法介紹檢測原理並通過編程實現，比較各種方法的處理結果。

## 區域生長

區域生長的基本思想是將具有相似性質的像素集合起來構成區域。具體先對每個需要分割的區域找一個種子像素作為生長的起點，然後將種子像素周圍鄰域中與種子像素具有相同或相似性質的像素（根據某種事先確定的生長或相似準則來判定）合併到種子像素所在的區域中。將這些新像素當做新的種子像素繼續進行上面的過程，直到再沒有滿足條件的像素可被包括進來，這樣，一個區域就長成了。

## 水平集方法

水平集方法最初由Osher和Sethian提出，目的是用於界面追蹤。在90年代末期被廣泛應用在各種圖像領域。這一方法能夠在隱式有效的應對曲線/曲面演化問題。基本思想是用一個符號函數表示演化中的輪廓（曲線或曲面），其中符號函數的零水平面對應於實際的輪廓。這樣對應於輪廓運動方程，可以容易的導出隱式曲線/曲面的相似曲線流，當應用在零水平面上將會反映輪廓自身的演化。水平集方法具有許多優點：它是隱式的，參數自由的，提供了一種估計演化中的幾何性質的直接方法，能夠改變拓撲結構並且是本質的。

## 小波變換方法

小波變換常被用來抽取影像的特徵，並能應用在去除雜訊、邊界偵測、辨識等問題，因此也能用來處理圖像分割的問題。Andrea Gavlasova在2006年被提出的Wavelet Based Image Segmentation，示範了小波變換用來處理圖像分割的流程，整個演演算法的流程如下：

- 令原影像的大小為NxN，對影像中每4x4的區域做使用哈爾變換的離散小波轉換，以抽取出影像的特徵。
- 計算抽取出的特徵的energy以及contrast，作為新的特徵，計算公式如下:
- $$Energy=\sum_{i,j=1}^N C_{i,j}^2$$
- $$Contrast=\sum_{i,j=1}^N (i-j)^2C_{i,j}$$
- 對上一步所算出的特徵矩陣，計算縱軸和橫軸像素兩兩之間的差，藉此找出影像中的物體邊界，作為初步的分割結果。
- 在初步的分割結果會有瑕疵和雜點，這是因為上一步相減兩兩像素的結果。為了讓結果更平滑，就使用circular averaging filter來過濾分割的結果。
- 將輸出取閾值，變成能夠代表物體邊界的黑白影像，像素值為一的部份即代表物體邊界。
- 將黑白的分隔影像骨架化(skeletonize)，讓輸出能以白色細線來表示要分割的物體邊界，完成影像分割。

## 請參閱

- 電腦視覺
- 數據聚類
- 圖論
- 直方圖
- 基於圖像的網格
- K-均值演算法
- Pulse-coupled networks
- Range image segmentation
- 區域生長
- 大津算法
- GrabCut

## 外部連結

- Some sample code that performs basic segmentation, by Syed Zainudeen. University Technology of Malaysia.
- Generalized Fast Marching method by Forcadel et al. 2008 for applications in image segmentation.
- Image Processing Research Group An Online Open Image Processing Research Community.
- Segmentation methods in image processing and analysis and Minimizing energy to segment images by Mathworks
- More image segmentation methods with detailed algorithms by Yu-Hsiang Wang (王昱翔), National Taiwan University, Taipei, Taiwan, ROC
- Online demonstration of piecewise linear image segmentation by IPOL Journal