1、圖像分割原理
? 圖像分割(image segmentation)技術是計算機視覺領域的一個重要的研究方向,是圖像語義理解的重要一環。圖像分割是指將圖像分成若干具有相似性質的區域的過程,從數學角度來看,圖像分割是將圖像劃分成互不相交的區域的過程。近些年來隨著深度學習技術的逐步深入,圖像分割技術有了突飛猛進的發展,該技術相關的場景物體分割、人體前背景分割、人臉人體Parsing、三維重建等技術已經在無人駕駛、增強現實、安防監控等行業都得到廣泛的應用。
? GraphCut是基于圖論的分割方法,此類方法基于圖論的方法利用圖論領域的理論和方法,將圖像映射為帶權無向圖,把像素視作節點,將圖像分割問題看作是圖的頂點劃分問題,利用最小剪切準則得到圖像的最佳分割。
2、圖像分割應用
1、Graph Cuts
Wij是節點i到節點j的(i,j)的權重,并且是對割C所有的邊的權重進行求和。利用圖割方法進行圖像分割的思想是對圖進行劃分 以使割代價Ecut 最小。
2、Graph Cuts改進版
Ed是指源點和匯點到各個像素 之間的連線(前背景先驗代價總和),Es指像素點在分割之 間的連線(鄰域代價總和)
利用圖割方法進行圖像分割的 思想是對圖進行劃分以使割代 價E最小。
3、圖像分割實現
from pygraph.classes.digraph import digraph
from pygraph.algorithms.minmax import maximum_flow
gr = digraph()
gr.add_nodes([0,1,2,3])
gr.add_edge((0,1), wt=4)
gr.add_edge((1,2), wt=3)
gr.add_edge((2,3), wt=5)
gr.add_edge((0,2), wt=3)
gr.add_edge((1,3), wt=4)
flows,cuts = maximum_flow(gr, 0, 3)
print ('flow is:' , flows)
print ('cut is:' , cuts)
# -*- coding: utf-8 -*-
from scipy.misc import imresize
from PCV.tools import graphcut
from PIL import Image
from numpy import *
from pylab import *
im = array(Image.open("empire.jpg"))
im = imresize(im, 0.07)
size = im.shape[:2]
print ("OK!!")
# add two rectangular training regions
labels = zeros(size)
labels[3:18, 3:18] = -1
labels[-18:-3, -18:-3] = 1
print ("OK!!")
# create graph
g = graphcut.build_bayes_graph(im, labels, kappa=1)
# cut the graph
res = graphcut.cut_graph(g, size)
print ("OK!!")
figure()
graphcut.show_labeling(im, labels)
figure()
imshow(res)
gray()
axis('off')
show()
4、圖像分割結果
![]() |
![]() |
---|
參考文獻:圖像分割技術介紹
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
