影像分割:cv::grabCut

OpenCV提供另一個grabCut影像分割演算法,計算方式較watershed更複雜,
但結果比較精確,如果想要從靜態影像提取前景物體,像是將一幅影像中的物體剪貼到另一幅圖中,
這是最佳算法。
 
void grabCut(InputArray img, InputOutputArray mask, Rect rect, InputOutputArray bgdModel, InputOutputArray fgdModel, int iterCount, int mode=GC_EVAL)
                                
#img:  輸入圖,8位元3通道。
#mask:  輸出圖,8位元單通道圖。
#           輸出圖mask每個像素為以下四個標誌之一:
#           1. GC_BGD: 確定為後景
#           2. GC_FGD: 確定為前景
#           3. GC_PR_BGD: 可能為後景
#           4. GC_PR_FGD: 可能為前景
#rect:  輸入矩形,在這之外的像素全都是背景,只有mode參數是GC_INIT_WITH_RECT時才有效。
#bgdmodel:  背景模型,供演算法內部使用。(提供演算法後景資訊)
#fgdmodel:  前景模型,供演算法內部使用。(提供演算法前景資訊)
#interCount:  迭代次數。
#mode:  處理模式。
#           模式有三種選擇:
#           1. GC_INIT_WITH_RECT: 提供矩形範圍的初始條件
#           2. GC_INIT_WITH_MASK: 提供遮罩,可和GC_INIT_WITH_RECT共同使用,在這ROI之外的為背景
#           3. GC_EVAL: 預設模式
 
 
 
原理閱讀:
(三個Channel綜合考慮,建立前景與後景各自的GMM模型,迭代對每個像素進行前景後景分類運算。)
 

留言

這個網誌中的熱門文章

Caffe 環境建置(問題集)

將OpenTLD(已先行下載)導入Visual Stdio 2012