婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > OpenCV-Python使用分水嶺算法實現圖像的分割與提取

OpenCV-Python使用分水嶺算法實現圖像的分割與提取

熱門標簽:南陽打電話機器人 騰訊地圖標注沒法顯示 海外網吧地圖標注注冊 孝感營銷電話機器人效果怎么樣 打電話機器人營銷 ai電銷機器人的優勢 聊城語音外呼系統 地圖標注自己和別人標注區別 商家地圖標注海報

隨著當今世界的發展,計算機視覺技術的應用越來越廣泛。伴隨著硬件設備的不斷升級,構造復雜的計算機視覺應用變得越來越容易了。OpenCV像是一個黑盒,讓我們專注于視覺應用的開發,而不必過多的關注基礎圖象處理的具體細節。

圖像分割

了解分水嶺算法之前,我們需要了解什么是圖像的分割。

在圖像的處理過程中,經常需要從圖像中將前景對象作為目標圖像分割或者提取出來。例如,在視頻監控中,觀測到的是固定背景下的視頻內容,而我們對背景本身并無興趣,感興趣的是背景中出現的車輛,行人或者其他對象。我們希望將這些對象從視頻中提取出來,而忽略那些沒有對象進入背景的視頻內容。

分水嶺算法

圖像分割是圖像處理過程中一種非常重要的操作。分水嶺算法將圖像形象地比喻為地理學上的地形表面,實現圖像分割,該算法非常有用。

下面,博主對分水嶺算法的相關內容做簡單的介紹。(詳細可以參考岡薩雷斯的《數字圖像處理》一書)

任何一副灰度圖像,都可以被看作是地理學上的地形表面,灰度值越高的區域可以被看成是山峰,灰度值越低的區域可以被看成是山谷。

如果我們向每個山谷中灌注不同顏色的水。那么隨著水位的不斷升高,不同山谷的水就匯聚到一起。在這個過程中,為了防止不同山谷的水交匯,我們需要在水流可能匯合的地方構建堤壩。該過程將圖像分為兩個不同的集合:集水盆地和分水嶺線。我們構建的堤壩就是分水嶺線,也即對原始圖像的分割。這就是分水嶺算法的原理。

不過,一般的圖像都存在著噪聲,采用分水嶺算法時,會經常得到過度分割的結果。為了改善圖像分割的效果,人們提出了基于掩摸的改進的分水嶺算法。改進的分水嶺算法允許用戶將它認為是同一個分割區域的部分標注出來。這樣,分水嶺算法在處理時,就會將標注的部分處理為同一個分割區域。

如果對于該理論不怎么了解,可以使用軟件PowerPoint中的“刪除背景”功能進行觀察配合理解。

waterShed函數

在OpenCV中,可以使用函數cv2.watershed()函數實現分水嶺算法。不過,具體實現的過程,還需要借助形態學函數,距離變換函數cv2.distanceTransform(),cv2.connectedComponents()來完成圖像分割。

形態學分割

在使用分水嶺算法之前,我們需要對圖像進行簡單的形態學處理。一般情況下,我們都是使用形態學中的開運算,因為開運算是先腐蝕后膨脹的操作,能夠去除圖像內的噪聲。

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("36.jpg")
k=np.ones((5,5),dtype=np.uint8)
e=cv2.erode(img,k)
result=cv2.subtract(img,e)

plt.subplot(131)
plt.imshow(img, cmap="gray")
plt.axis('off')

plt.subplot(132)
plt.imshow(e, cmap="gray")
plt.axis('off')

plt.subplot(133)
plt.imshow(result, cmap="gray")
plt.axis('off')
plt.show()

回顧一下,我們前面的開運算函數為cv2.erode(),這里我們首先經過開運算去除噪聲。然后減法運算cv2.subtract()獲取圖像邊界。運行之后,效果如下:

distanceTransform函數

當圖像內的各個子圖沒有連接時,可以直接使用形態學的腐蝕操作確定前景對象,但是如果圖像內的子圖連接在一起時,就很難確定前景對象了。這個時候,就需要借助變換函數cv2.distanceTransform()方便地將前景對象提取出來。

cv2.distanceTransform()反應了各個像素點與背景(值為0的像素點)的距離關系。通常情況下:

  • 如果前景對象的中心距離值為0的像素點距離較遠,會得到一個較大的值。
  • 如果前景對象的邊緣距離值為0的像素點較近,會得到一個較小的值。

下面,我們來使用該函數確定一副圖像的前景,并觀察效果。

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("36.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
k = np.ones((5, 5), dtype=np.uint8)
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, k, iterations=2)
distTransform = cv2.distanceTransform(opening, cv2.DIST_L2, 5)
ret, fore = cv2.threshold(distTransform, 0.7 * distTransform.max(), 255, 0)

plt.subplot(131)
plt.imshow(img, cmap="gray")
plt.axis('off')

plt.subplot(132)
plt.imshow(distTransform, cmap="gray")
plt.axis('off')

plt.subplot(133)
plt.imshow(fore, cmap="gray")
plt.axis('off')
plt.show()

這里,我們使用cv2.morphologyEx函數進行開運算,同時使用cv2.distanceTransform得到距離圖像,最后在通過cv2.threshold對距離圖像進行閾值處理,確定前景。運行之后,效果如下:

確定未知區域

通過距離函數,我們獲取到了圖像的“中心”,也就是“確定前景”。為了方便后續的講解,我們將確定前景稱為F。

圖像中有了確定前景F和確定背景B,剩下的區域就是未知區域UN了。這部分區域正是分水嶺算法要進一步明確的區域。

針對一副圖像0,通過以下關系能夠得到未知區域UN:

未知區域UN=圖像0-確定背景B-確定前景F

由上述公式變換得到:

未知區域UN=(圖像0-確定背景B)-確定前景F

其中(圖像0-確定背景B)就是我們開始的減法操作,通過形態學膨脹得到。也只需要將上面的代碼添加4行并更改顯示的代碼內容:

bg=cv2.dilate(opening,k,iterations=3)
fore=np.uint8(fore)
un=cv2.subtract(bg,fore)

plt.subplot(221)
plt.imshow(img, cmap="gray")
plt.axis('off')

plt.subplot(222)
plt.imshow(bg, cmap="gray")
plt.axis('off')

plt.subplot(223)
plt.imshow(fore, cmap="gray")
plt.axis('off')

plt.subplot(224)
plt.imshow(un, cmap="gray")
plt.axis('off')
plt.show()

運行之后,效果如下:

左上為原圖

右上為原圖膨脹后得到的圖像bg,其背景圖像是確定背景B。前景圖像是“原始圖像0-確定背景B”

左下為確定前景圖像fore

右下為未知區域圖像UN

ConnectedComponents函數

明確了確定前景后,就可以對確定前景進行標注了。在OpenCV中,它提供了cv2.ConnectedComponents()函數進行標注。

該函數會將背景標注為0,將其他的對象使用從1開始的正整數標注。它只有一個參數8位單通道的待標注圖像。

返回值有兩個:retval為返回的標注數量,labels為標注的結果圖像。

下面,我們來使用該函數進行標注。代碼如下(同樣更改上面bg下面代碼就行):

bg = cv2.dilate(opening, k, iterations=3)
fore = np.uint8(fore)
ret, markets = cv2.connectedComponents(fore)
unknown=cv2.subtract(bg,fore)
markets=markets+1
markets[unknown==255]=0

plt.subplot(131)
plt.imshow(img, cmap="gray")
plt.axis('off')

plt.subplot(132)
plt.imshow(fore, cmap="gray")
plt.axis('off')

plt.subplot(133)
plt.imshow(markets, cmap="gray")
plt.axis('off')
plt.show()

修改上面fore = np.uint8(fore)的代碼,并修改輸出內容。運行之后,我們會得到原圖,前景圖像的中心點圖像fore以及標注后的結果圖像markets。效果如下:

實戰分水嶺算法

經過前文的介紹,我們了解了使用分水嶺算法進行圖像分割的基本步驟:

  • 通過形態學開運算對原始圖像0進行去噪
  • 通過腐蝕操作獲取“確定背景B”。需要注意,這里得到“原始圖像-確定背景”即可
  • 利用距離變換函數對原始圖像進行運算,并對其進行閾值處理,得到“確定前景F”
  • 計算未知區域UN(UN=0-B-F)
  • 利用函數cv2.connectedComponents()對原始圖像0進行標注
  • 對函數cv2.connectedComponents()的標注結果進行修正
  • 使用分水嶺函數完成圖像分割

完整代碼如下:

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread("36.jpg")
plt.subplot(121)
plt.imshow(img, cmap="gray")
plt.axis('off')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
k = np.ones((5, 5), dtype=np.uint8)
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, k, iterations=2)
distTransform = cv2.distanceTransform(opening, cv2.DIST_L2, 5)
ret, fore = cv2.threshold(distTransform, 0.2 * distTransform.max(), 255, 0)
bg = cv2.dilate(opening, k, iterations=3)
fore = np.uint8(fore)
ret, markets = cv2.connectedComponents(fore)
unknown = cv2.subtract(bg, fore)
markets = markets + 1
markets[unknown == 255] = 0
markets = cv2.watershed(img, markets)
img[markets == -1] = [255, 0, 0]

plt.subplot(122)
plt.imshow(img, cmap="gray")
plt.axis('off')
plt.show()

運行之后,我們就可以得到分割的圖像:

當然,參數可以調整,可以看到大致的硬幣被完整的分割出來了。

到此這篇關于OpenCV-Python使用分水嶺算法實現圖像的分割與提取的文章就介紹到這了,更多相關OpenCV圖像分割與提取內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python數字圖像處理之骨架提取與分水嶺算法
  • python opencv之分水嶺算法示例
  • Python基于分水嶺算法解決走迷宮游戲示例
  • OpenCV半小時掌握基本操作之分水嶺算法

標簽:撫州 迪慶 六盤水 南寧 聊城 揚州 楊凌 牡丹江

巨人網絡通訊聲明:本文標題《OpenCV-Python使用分水嶺算法實現圖像的分割與提取》,本文關鍵詞  OpenCV-Python,使用,分水嶺,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《OpenCV-Python使用分水嶺算法實現圖像的分割與提取》相關的同類信息!
  • 本頁收集關于OpenCV-Python使用分水嶺算法實現圖像的分割與提取的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91精品国产综合久久香蕉麻豆| 日韩免费观看高清完整版| 亚洲图片欧美视频| 久久综合成人精品亚洲另类欧美 | 99视频有精品| 美国一区二区三区在线播放| 五月天中文字幕一区二区| 亚洲欧美国产高清| 亚洲日本韩国一区| 亚洲伊人色欲综合网| 亚洲精品成人精品456| 国产精品污www在线观看| 国产精品视频线看| 欧美一区二区大片| 视频一区国产视频| 亚洲精品国产精华液| 亚洲欧美国产高清| 无码av免费一区二区三区试看| 日韩理论片网站| 亚洲国产一区二区在线播放| 日韩高清不卡一区| 国产一区二区视频在线| 国产性色一区二区| 国产精品青草综合久久久久99| 国产精品九色蝌蚪自拍| 亚洲日本va在线观看| 欧美激情一区二区三区四区| 国产精品久久久久久久午夜片| 亚洲另类春色国产| 石原莉奈在线亚洲二区| 国产福利精品一区二区| 91日韩精品一区| 日韩电影免费在线观看网站| 国产精品1区二区.| 欧美三区在线观看| 欧美一区二区女人| 国产精品久久毛片| 美女一区二区久久| 91美女蜜桃在线| 国产午夜亚洲精品理论片色戒| 亚洲小少妇裸体bbw| 国产91精品一区二区麻豆亚洲| 7777精品伊人久久久大香线蕉的| 国产精品每日更新| 国产一区二区三区免费观看| 欧美综合亚洲图片综合区| 国产午夜精品在线观看| 日本不卡一二三| 欧美日精品一区视频| 中文字幕综合网| 国产精品一区二区你懂的| 日韩亚洲欧美在线| 视频一区二区三区入口| 欧美体内she精高潮| 亚洲欧洲www| www.欧美亚洲| 色婷婷综合久久久久中文| 久久―日本道色综合久久| 麻豆91小视频| 亚洲精品在线网站| 激情图片小说一区| 欧美一级夜夜爽| 精品亚洲免费视频| 久久精品人人做人人爽人人| 国产美女视频91| 久久精品人人做人人综合| 国产91精品免费| 日韩理论片一区二区| 日本电影欧美片| 亚洲国产欧美一区二区三区丁香婷| 91福利在线免费观看| 亚洲伊人伊色伊影伊综合网| 欧美电影影音先锋| 激情六月婷婷久久| 亚洲国产精品二十页| 91蝌蚪porny成人天涯| 亚洲国产视频网站| 日韩精品影音先锋| 成人精品小蝌蚪| 亚洲mv在线观看| 精品久久久网站| av一区二区三区在线| 亚洲午夜精品17c| 精品国产亚洲在线| 色综合天天综合网天天狠天天| 亚洲mv在线观看| 国产女人aaa级久久久级 | 日韩女优毛片在线| 不卡的av网站| 欧美日韩一区二区三区四区五区 | 国产精品福利电影一区二区三区四区 | 99国产精品久| 精品亚洲免费视频| 1区2区3区欧美| 日韩欧美久久久| 成人激情动漫在线观看| 久久综合综合久久综合| 一区二区三区四区蜜桃| 国产精品美女久久久久久2018| 在线播放一区二区三区| av不卡一区二区三区| 久久精品国产亚洲aⅴ| 亚洲国产一区二区三区| 国产精品久久久久一区二区三区| 欧美一二三四在线| 亚洲欧美综合在线精品| 欧美电视剧在线观看完整版| 99国产精品一区| 成人一区二区三区视频| 国产福利精品一区| 国产高清在线精品| 久久成人麻豆午夜电影| 日韩影院免费视频| 石原莉奈一区二区三区在线观看| 一区二区三区四区在线| 亚洲欧美国产毛片在线| 亚洲精品美国一| 亚洲精品成人精品456| 亚洲欧美欧美一区二区三区| 亚洲免费观看在线视频| 亚洲精品国产无天堂网2021| 亚洲欧洲成人精品av97| 国产精品成人免费精品自在线观看| 国产欧美日韩另类一区| 中文字幕精品综合| 国产精品国产精品国产专区不片| 亚洲国产精品99久久久久久久久 | 91福利视频网站| 国产成人a级片| 91在线精品一区二区三区| 欧美亚洲一区二区三区四区| 欧美三级日韩三级国产三级| 制服丝袜国产精品| 久久久久久亚洲综合影院红桃| 中文字幕免费在线观看视频一区| 国产精品美女一区二区在线观看| 成人欧美一区二区三区1314| 亚洲黄色免费网站| 麻豆精品国产91久久久久久| 国产91在线看| 欧美精品日韩精品| 国产片一区二区| 天天爽夜夜爽夜夜爽精品视频| 热久久久久久久| 91麻豆免费看片| 欧美一二三四在线| 亚洲女与黑人做爰| 国产麻豆视频一区| 欧美日韩精品系列| 国产精品白丝在线| 狠狠色2019综合网| 欧美高清你懂得| 成人免费一区二区三区在线观看| 免费成人av在线| 一本色道久久综合亚洲aⅴ蜜桃| 久久久影视传媒| 亚洲1区2区3区视频| 国产成人av电影在线| 欧美美女网站色| 国产精品免费人成网站| 麻豆视频一区二区| 欧美一级黄色大片| 亚洲成va人在线观看| 一本色道久久综合狠狠躁的推荐| www激情久久| 久久国产精品99精品国产| 欧美三电影在线| 亚洲bdsm女犯bdsm网站| 欧美麻豆精品久久久久久| 亚洲国产中文字幕| 亚洲精品国久久99热| 成人一区在线观看| 中文字幕一区二区视频| 波多野结衣在线一区| 国产精品理伦片| av电影在线观看一区| 亚洲欧美日韩在线| 欧美探花视频资源| 爽好久久久欧美精品| 欧美tk丨vk视频| 国产一区久久久| 国产精品国产精品国产专区不蜜 | 在线观看亚洲精品视频| 午夜久久福利影院| 欧美一区二区三区成人| 精品在线视频一区| 国产精品视频观看| 欧洲视频一区二区| 日韩激情一区二区| 国产亚洲婷婷免费| 99精品桃花视频在线观看| 亚洲综合一区在线| 日韩精品专区在线影院重磅| 国产精品12区| 亚洲欧美精品午睡沙发| 91.com视频| 成人综合婷婷国产精品久久| 亚洲一区二区三区精品在线| 欧美一区二区在线不卡| 福利一区二区在线|