1. 程式人生 > >筆記:影象分割演算法之 Graph Cut

筆記:影象分割演算法之 Graph Cut

Graph Cut 與Grab Cut 都是基於圖論得分割方法。另外OpenCV實現了Grab Cut。Graph cuts 是一種有用和流行的能量優化演算法,在計算機視覺領域應用於前背景分割,立體視覺,摳圖。此類問題與圖的最小割問題相關聯。
首先用一個無向圖 G 表示要分割的影象,V和E分別是頂點(vertex)和邊(edge)的集合。此處的Graph和普通的Graph稍有不同。Graph Cuts 圖在普通圖的基礎上多了兩個頂點,這兩個頂點分別用符號“S”與“T”表示,統稱為終端頂點。其他所有的頂點都必須和這兩個頂點相連形成邊集合中的一部分。所以Graph Cuts中有兩個頂點,也有兩種邊。
第一種頂點和邊:普通頂點對應於影象中的每個畫素。每兩個鄰域頂點(對應於影象中每兩個鄰域畫素)的連線就是一條邊。這種邊也叫n-links。 第二種頂點和邊是:除影象畫素外,還有另外兩個終端頂點,叫S(source:源點,取源頭之意)和T(sink:匯點,取聚合之意)。每個普通頂點和這兩個終端頂點之間都有連線,組成第二種邊。這種邊也叫t-links。
這裡寫圖片描述


上圖就是一個影象對應的s-t圖,每個畫素對應圖中的一個相應定點,另外還有s和t兩個頂點。上圖有兩種邊,實線表示每個鄰域普通頂點連線的邊n-links,虛線表示每個普通頂點與s和t連線的邊t-links。在前後景分割中,s一般表示前景目標,t一般表示背景。
圖中每條邊都有一個非負權值We,也可理解為cost(代價或者費用)。一個cut(割)就是圖中邊集合E的一個子集C,那這個割的cost(表示為|C|)就是邊子集C的所有邊的權值的總和。
Graph Cuts 中的Cuts是指這樣的一個邊集合,顯然這些邊集合包括了上邊2種邊,該集合中所有邊的斷開會導致殘留“S”和“T”圖的分開,所以就成為割。
當一個割使得它的邊所有權值之和最小,那麼就成為最小割,也就是圖割的結果。福特.富克森定理表明,網路的最大流max flow與最小割min cut相等。所以由Boykov和Komogorov發明的max-flow/min-cut演算法就可以用來獲得s-t圖的最小割。這個最小割把影象的前景畫素集和背景畫素集,那就相當於完成了影象分割。
也就是圖中邊的權值就決定了最後的分割結果,那麼這些邊的權值怎麼確定呢? 影象分割可以看成pixel labeling(畫素標記)問題,目標(s-node)的label設為1,背景(t-node)的label設為0,這個過程可以通過最小化圖割來最小化能量函式得到。那很明顯,發生在目標和北京的邊界處的cut就是我們想要的(相當於把影象中背景和目標連線的地方割開,那就相當於把其分割了)。同時,這時候能量也應該是最小的,假設整幅影象的標籤label(每個畫素的label)為L={l1,l2,l3..lp}其中l1i為0(背景)或者1(目標)那假設影象的分割為L時,影象的能量可以表示為: E(L)=aR(L)+B(L) 其中,R(L)為區域項,B(L)為邊界項,而a就是區域項和邊界項之間的重要因子,決定他們對能量的影響大小。如果a=0,則只考慮邊界因素不考慮區域因素。E(L)表示的是權值,即損失函式,也叫能量函式,圖割的目標就是優化能量函式使其值達到最小。
區域項:
這裡寫圖片描述

其中Rp(lp)表示為畫素p分配標籤lp的懲罰,Rp(lp)能量項的權值可以通過比較畫素p的灰度和給定的目標和前景的灰度直方圖來獲得,換句話說就是畫素p屬於標籤lp的概率,我希望畫素p分配為其概率最大的標籤lp,這時候我們希望能量最小,所以一般取概率的負對數值,故t-link的權值如下:
Rp(1) = -ln Pr(Ip|’obj’);
Rp(0) = -ln Pr(Ip|’bkg’)
由上面兩個公式可以看到,當畫素p的灰度值屬於目標的概率Pr(Ip|’obj’)大於背景Pr(Ip|’bkg’),那麼Rp(1)就小於Rp(0),也就是說當畫素p更有可能屬於目標時,將p歸類為目標就會使能量R(L)小。那麼,如果全部的畫素都被正確劃分為目標或者背景,那麼這時候能量就是最小的。
這裡寫圖片描述

其中,p和q為鄰域畫素,邊界平滑項主要體現分割L的邊界屬性,B可以解析為畫素p和q之間不連續的懲罰,一般來說如果p和q越相似(例如它們的灰度),那麼B越大,如果他們非常不同,那麼B就接近於0。換句話說,如果兩鄰域畫素差別很小,那麼它屬於同一個目標或者同一背景的可能性就很大,如果他們的差別很大,那說明這兩個畫素很有可能處於目標和背景的邊緣部分,則被分割開的可能性比較大,所以當兩鄰域畫素差別越大,B越小,即能量越小。 好了,現在我們來總結一下:我們目標是 將一幅影象分為目標和背景兩個不相交的部分,我們運用圖分割技術來實現。首先,圖由頂點和邊來組成,邊有權值。那我們需要構建一個圖,這個圖有兩類頂點,兩類邊和兩類權值。
普通頂點由影象每個畫素組成,然後每兩個鄰域畫素之間存在一條邊,它的權值由上面說的“邊界平滑能量項”來決定。還有兩個終端頂點s(目標)和t(背景),每個普通頂點和s都存在連線,也就是邊,邊的權值由“區域能量項”Rp(1)來決定,每個普通頂點和t連線的邊的權值由“區域能量項”Rp(0)來決定。這樣所有邊的權值就可以確定了,也就是圖就確定了。這時候,就可以通過min cut演算法來找到最小的割,這個min cut就是權值和最小的邊的集合,這些邊的斷開恰好可以使目標和背景被分割開,也就是min cut對應於能量的最小化。而min cut和圖的max flow是等效的,故可以通過max flow演算法來找到s-t圖的min cut。
目前的演算法主要有:
1)Goldberg-Tarjan
2)Ford-Fulkerson
3)上訴兩種方法的改進演算法
這裡寫圖片描述
這裡寫圖片描述

相關推薦

筆記影象分割演算法 Graph Cut

Graph Cut 與Grab Cut 都是基於圖論得分割方法。另外OpenCV實現了Grab Cut。Graph cuts 是一種有用和流行的能量優化演算法,在計算機視覺領域應用於前背景分割,立體視覺,摳圖。此類問題與圖的最小割問題相關聯。 首先

數字影象處理筆記(十二)影象分割演算法

1 - 引言 在影象識別中,如果可以將影象感興趣的物體或區別分割出來,無疑可以增加我們影象識別的準確率,傳統的數字影象處理中的分割方法多數基於灰度值的兩個基本性質 不連續性 以灰度突變為基礎分割一副影象,比如影象的邊緣 相似性 根據一組預定義的準則將一副影象分割為相似的

OpenCv學習筆記4--影象分割GrabCut演算法

說明: 本文章是opencv學習筆記系列的第四篇小結,可能前幾篇內容太多,排版也不甚合理,所以為了更好的觀看體驗,這次的內容會稍微少那麼一點點,再次重申  歡迎star,不定時更新... 所謂影象分割指的是根據灰度、顏色、紋理和形狀等特徵把影象劃分成若干互不交迭的區域

opencv學習筆記五十六分水嶺分割演算法

一、基於分水嶺的分割演算法是受自然界地貌啟發而來的對灰度圖的地形學解釋,我們考慮以下三點: 1. 區域性最小值點,該點對應一個盆地的最低點,當我們在盆地裡滴一滴水的時候,由於重力作用,水最終會匯聚到該點。注意:可能存在一個最小值面,該平面內的都是最小值點。 2. 盆地的其

opencv學習筆記六十五人臉識別演算法EigenFace

簡要: 特徵臉演算法是將影象每一個畫素當作一維特徵,然後用SVM或其它機器學習演算法進行訓練。但這樣維數太多,根本無法計算。我這裡用的是ORL人臉資料庫,英國劍橋實驗室拍攝的,有40位志願者的人臉,在不同表情不同光照下每位志願者拍攝10張,共有400張圖片,大小為112*9

影象演算法特徵提取演算法LBP

     【2016/9/29】今天重點學習了紋理特徵提取演算法LBP,這個演算法可以用於紋理特徵提取和人臉識別,應用比較廣泛。首先介紹LBP演算法的原理,然後是LBP特徵的提取步驟,最後使用OpenCV實現了這個演算法。        LBP(Local Binary

OPENCV的學習影象特徵檢測Harris角點演算法

    影象檢測是影象分割,影象識別的基礎,也是不可缺少的關鍵。在視覺計算理論框架中,抽取二維影象的邊緣、角點、紋理等基本特徵,是整個框架的第一步;本文章對Harris角點演算法做了比較詳細的理論介紹以及相關實現。 Part One:角點型別介紹 在現實世界中,角點

影象演算法特徵提取演算法LoG

1、產生:       Laplace運算元對通過影象進行操作實現邊緣檢測的時,對離散點和噪聲比較敏感。於是,首先對影象進行高斯暖卷積濾波進行降噪處理,再採用Laplace運算元進行邊緣檢測,就可

影象分割演算法基於梯度分水嶺的分割演算法

程式碼實現:import matplotlib.pyplot as plt from scipy import ndimage as ndi from skimage import morphology,color,data,filters import cv2 # ima

grabcut in one-cut 一種好用快速的影象分割演算法

      2013年iCCV上的這篇論文,提出了一種快速的基於簡單互動的分割演算法,本篇博文是對該論文的解讀。Tang M, Gorelick L, Veksler O, et al. GrabCut inOne Cut[C]// IEEE International Co

基於圖的影象分割方法(Graph-Based Image Segmentation)原始碼閱讀筆記

這個方法被應用於深度學習目標檢測的經典之作selective search方法中(Selective Search for Object Recognition),用於初始化分割區域。。論文題目:《Efficient Graph-Based Image Segm

南開大學提出最新邊緣檢測與影象分割演算法,精度重新整理記錄(附開源地址)

  作者 | 劉雲、程明明、胡曉偉、邊佳旺等 譯者 | 劉暢 整理 | Jane 出品 | AI科技大本營 近日,南開大學媒體計算實驗室提出的最新邊緣檢測和影象過分割(可用於生成超畫素)被 IEEE PAMI 錄用。研究的第一作者也發微博稱:“這是第一個

計算機視覺(八)影象分割

一、閾值處理 1. 基礎知識 2. 基本的全域性閾值處理 3. 用Otsu方法的全域性閾值處理 4. 用影象平滑改善全域性閾值處理 5. 利用邊

影象分割演算法

影象分割的主要演算法: 1.基於閾值的分割方法 2.基於邊緣的分割方法 3.基於區域的分割方法 4.基於聚類分析的影象分割方法 5.基於小波變換的分割方法 6.基於數學形態學的分割方法 7.基於人工神經網路的分割方法 8.基於遺傳學演算法的分割方法  

CS231n課程筆記影象分類筆記(下)

用於超引數調優的驗證集 k-NN分類器需要設定k值,那麼選擇哪個k值最合適的呢?我們可以選擇不同的距離函式,比如L1範數和L2範數等,那麼選哪個好?還有不少選擇我們甚至連考慮都沒有考慮到(比如:點積)。所有這些選擇,被稱為超引數(hyperparameter)。在基於資料進行學習的

區塊鏈核心技術拜占庭共識演算法PBFT全面理解

PBFT是Practical Byzantine Fault Tolerance的縮寫,意為實用拜占庭容錯演算法。該演算法是Miguel Castro (卡斯特羅)和Barbara Liskov(利斯科夫)在1999年提出來的,解決了原始拜占庭容錯演算法效率不高的問題,將演

論文筆記目標檢測演算法(R-CNN,Fast R-CNN,Faster R-CNN,YOLOv1-v3)

R-CNN(Region-based CNN) motivation:之前的視覺任務大多數考慮使用SIFT和HOG特徵,而近年來CNN和ImageNet的出現使得影象分類問題取得重大突破,那麼這方面的成功能否遷移到PASCAL VOC的目標檢測任務上呢?基於這個問題,論文提出了R-CNN。 基本步驟:如下圖

Python3《機器學習實戰》筆記K-近鄰演算法

2.1 實施KNN演算法 python3實現KNN演算法,本書採用的是python2,轉化為python3 import numpy as np #運算子模組 import operator def createDataSet(): group = np

ONE筆記DirectDlivery路由演算法(ONE模擬執行機制解析)

DirectDlivery路由要點 DirectDlivery(DD)演算法是基礎路由演算法,是基於flooding的一種極端情況,每個節點只將訊息直接傳遞給目的節點。通過該演算法模擬,旨在梳理ONE模擬執行機制。 特點:開銷低,效率低,節點跳數為1 工作機制:

影象處理演算法美顏

       和濾鏡一樣,美顏也是影象類app必不可少的功能之一,也有的app叫人像美容,主要包括美膚及美白等幾大功能。甚至有很多專門美顏的app,比如美顏相機什麼的,可見美顏功能需求量之大。很多女孩