版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
圖像分割使用分水嶺算法對圖像進行分割目錄CONTENTS分水嶺算法的核心思想分水嶺算法對應(yīng)的函數(shù)使用分水嶺算法實現(xiàn)圖像分割01分水嶺算法的核心思想分水嶺算法的核心思想(1)分水嶺把圖像中每一點像素的灰度值理解為該點的海拔高度,每一個局部極小值及其影響區(qū)域稱為集水盆,而集水盆的邊界則形成分水嶺。分水嶺的概念和形成可以通過模擬浸入過程來說明。在每一個局部極小值位置,刺穿一個小孔,然后把整個模型慢慢浸入水中,隨著浸入的加深,每一個局部極小值的影響域慢慢向外擴展,在兩個集水盆匯合處構(gòu)筑大壩,即形成分水嶺。分水嶺算法的核心思想(2)分水嶺計算過程分水嶺計算分兩個過程:先排序,然后淹沒。首先對每個像素的灰度級進行從低到高排序,然后在從低到高實現(xiàn)淹沒過程,在該過程中,對每一個局部極小值在h階高度的影響域采用先進先出(FIFO)結(jié)構(gòu)進行判斷及標注。02分水嶺算法對應(yīng)的函數(shù)分水嶺算法對應(yīng)的函數(shù)函數(shù)markerswatershed(img,markers)其中img是需要分割的圖像,必須是一個8位的3通道彩色圖像,第二個參數(shù)是markers,markers是對圖相中區(qū)域的標記,圖像中可能包含不同的區(qū)域,每個區(qū)域有一個自己唯一的編號,區(qū)域的定位可以通過findContours方法實現(xiàn),在使用分水嶺算法之前需要初始化這個markers。分水嶺算法對應(yīng)的函數(shù)函數(shù)功能算法會根據(jù)markers傳入的區(qū)域作為種子(也就是所謂的注水點),對圖像上其它的像素點根據(jù)分水嶺算法規(guī)則進行判斷,并對每個像素點的區(qū)域歸屬進行劃定,直到處理完所有的像素點。而區(qū)域和區(qū)域之間的分界處的值被置為-1,以做區(qū)分。參數(shù)中的markers必須包含種子點信息,可以通過手工方式標記。分水嶺算法執(zhí)行之后,會返回markers,這里包含了使用-1表示的分界信息。之后可以根據(jù)該信息對圖像進行分割。03使用分水嶺算法實現(xiàn)圖像分割使用分水嶺算法實現(xiàn)圖像分割(1)引入相關(guān)包importcv2importnumpyasnp使用分水嶺算法實現(xiàn)圖像分割(2)加載圖片如果圖片位置與當前程序在相同的位置,則可以使用下面的相對路徑,如果圖片不在當前位置,則需要寫出來圖片的絕對地址。img=cv2.imread('images/mourse.jpg')加載圖像之后需要轉(zhuǎn)換為灰度圖像:gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)使用分水嶺算法實現(xiàn)圖像分割(3)轉(zhuǎn)換為二值圖像ret,thresh=cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)參數(shù)THRESH_BINARY_INV表示大于閾值的像素的值被設(shè)置為0,小于閾值的像素的值被設(shè)置為255,也就是把亮的部分變成黑的,把暗的部分變成白的,所以適合的場景是目標接近黑色、背景接近白色的場景。THRESH_OTSU表示根據(jù)圖像的直方圖自動計算二值化的閾值,這時候threshold方法中第二個參數(shù)使用0。如果自己明確知道使用什么閾值合適,也可以直接指定閾值。使用分水嶺算法實現(xiàn)圖像分割(4)對圖像進行開運算對圖像進行開運算,先腐蝕再膨脹,能夠去除圖像中的部分噪音數(shù)據(jù),卷積核kernel的大小和迭代次數(shù)iterations都會影響去噪的效果。下面的代碼完成了對圖像的開運算操作:kernel=np.ones((3,3),np.uint8)opening=cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel,iterations=2)上面的開運算使用的核是3*3大小,值都被初始化為1,迭代次數(shù)是2,可以根據(jù)圖像本身的情況調(diào)整這些參數(shù)來得到更好的效果。二值化圖像中右上角的白色區(qū)域經(jīng)過開運算已經(jīng)不存在了。使用分水嶺算法實現(xiàn)圖像分割(5)對圖像進行閉運算對圖像進行閉運算,先膨脹再腐蝕,能夠去除圖像中的目標中包含的部分噪音數(shù)據(jù),卷積核kernel的大小和迭代次數(shù)iterations都會影響去噪的效果。closing=cv2.morphologyEx(opening,cv2.MORPH_CLOSE,kernel,iterations=20)開運算使用的核是3*3大小,值都被初始化為1,迭代次數(shù)是20,因為前景中包含的黑色區(qū)域比較大??梢愿鶕?jù)圖像本身的情況調(diào)整這些參數(shù)來得到更好的效果。圖是進行閉運算之后的效果。從圖中可以看出經(jīng)過開運算之后目標內(nèi)部的黑色區(qū)域已經(jīng)不存在了。使用分水嶺算法實現(xiàn)圖像分割(6)得到背景區(qū)域?qū)﹂]運算的結(jié)果進行膨脹,這樣就增加了前景(白色)占用的空間,剩下的黑色部分大部分就應(yīng)該是背景了。sure_bg=cv2.dilate(opening,kernel,iterations=3)這里使用的核還是前面進行開運算的核,迭代次數(shù)為3。運行的效果,黑色區(qū)域就是背景部分了。使用分水嶺算法實現(xiàn)圖像分割(7)獲取前景區(qū)域通過distanceTransform獲取前景區(qū)域,先介紹一下該函數(shù)的用法。函數(shù)distanceTransform()用于計算圖像中每一個非零點像素與其最近的零點像素之間的距離,輸出的是保存每一個非零點與最近零點的距離信息。這樣,越靠近背景的區(qū)域值越小,距離背景越遠的區(qū)域值越大,結(jié)果圖像上越亮的點,代表了離零點的距離越遠。它的主要用途:可以根據(jù)距離變換的這個性質(zhì),經(jīng)過簡單的運算,用于細化字符的輪廓和查找物體質(zhì)心(中心)。使用分水嶺算法實現(xiàn)圖像分割(7)獲取前景區(qū)域函數(shù)的定義如下:dist_transform=cv2.distanceTransform(src,distanceType,maskSize)src是要進行距離轉(zhuǎn)換的原始圖像distanceType表示距離的計算方式參數(shù)maskSize表示距離變換掩膜大小,取值3或者5。使用分水嶺算法實現(xiàn)圖像分割distanceType的值cv2.DIST_L1,相當于1,距離的計算公式:|x1-x2|+|y1-y2|,曼哈頓距離cv2.DIST_L2,相當于2,簡單的歐式距離;cv2.DIST_C,相當于3,距離的計算公式:max(|x1-x2|,|y1-y2|);DIST_L12,相當于4,距離的計算公式:2(sqrt(1+x*x/2)-1));cv2.DIST_FAIR,相當于5,距離的計算公式:c^2(|x|/c-log(1+|x|/c)),c=1.3998;cv2.DIST_WELSCH,相當于6,距離的計算公式:c^2/2(1-exp(-(x/c)^2)),c=2.9846;cv2.DIST_HUBER,相當于7,距離的計算公式:|x|<c?x^2/2:c(|x|-c/2),c=1.345;使用分水嶺算法實現(xiàn)圖像分割(7)獲取前景區(qū)域通過distanceTransform得到了閉操作的結(jié)果對應(yīng)的距離變換圖形dist_transform=cv2.distanceTransform(closing,cv2.DIST_L2,5)cv2.DIST_L2表示距離的計算采用的是歐氏距離,maskSize的大小是5。dist_transform中值越大越可能是前景,下面的代碼通過二值化操作獲取前景區(qū)域:ret,sure_fg=cv2.threshold(dist_transform,0.3*dist_transform.max(),255,0)代碼中使用0.3*dist_transform.max()得到區(qū)域相對比較大,如果希望得到的區(qū)域比較小,可以把0.3替換成更大的值,如果希望得到較大的區(qū)域,可以把0.3替換成較小的值。效果圖展示的是0.3對應(yīng)的前景的大小。使用分水嶺算法實現(xiàn)圖像分割(8)得到重合區(qū)域使用sure_bg與sure_fg相減,得到既有前景又有背景的重合區(qū)域:sure_fg=np.uint8(sure_fg)unknow=cv2.subtract(sure_bg,sure_fg)此時顯示的白色部分既可能是前景(目標區(qū)域)也可能是背景。圖中顯示了運行結(jié)果,中間的白色圓環(huán)就是重合區(qū)域,實際上就是目標和背景之間的連接部分。使用分水嶺算法實現(xiàn)圖像分割(9)創(chuàng)建標簽為前景創(chuàng)建標簽,標簽與原圖像大小相同,數(shù)據(jù)類型為int32的數(shù)組。對于已經(jīng)確定分類的區(qū)域,也就是背景和前景,使用整數(shù)標記,不確定的區(qū)域用0標記??梢允褂胏onnectedComponents函數(shù)完成該功能使用分水嶺算法實現(xiàn)圖像分割(9)創(chuàng)建標簽ret,markers=cv2.connectedComponents(sure_fg)該方法將背景標記為0,把其他標記為從1開始的正整數(shù)。但是如果背景標記為0,那么分水嶺算法會將其當成位置區(qū)域,所以使用1來表示背景,對于不確定的區(qū)域標記為0,下面的代碼完成了該設(shè)置:markers=markers+1markers[unknow==255]=0使用分水嶺算法實現(xiàn)圖像分割(10)調(diào)用分水嶺算法markers=cv2.watershed(img,markers)使用綠色標記分水嶺:img[markers==-1]=[0,255,0]使用分水嶺算法實現(xiàn)圖像分割#導(dǎo)入庫importnumpyasnpimportcv2#讀取圖像img=cv2.imread('images/mouse.jpg',1)cv2.imshow('ori',img)#轉(zhuǎn)換為灰度圖gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#二值化ret,thresh=cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)cv2.imshow('thresh',thresh)#開運算(去除外部噪聲數(shù)據(jù))kernel=np.ones((3,3),np.uint8)opening=cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel,iterations=2)cv2.imshow('opening',opening)使用分水嶺算法實現(xiàn)圖像分割#閉運算(去除內(nèi)部噪聲數(shù)據(jù))closing=cv2.morphologyEx(opening,cv2.MORPH_CLOSE,kernel,iterations=20)cv2.imshow('closing',closing)#膨脹后確定的背景區(qū)域sure_bg=cv2.dilate(closing,kernel,iterations=3)cv2.imshow('sure_bg',sure_bg)#通過距離變換換數(shù)得到前景區(qū)域dist_transform=cv2.distanceTransform(closing,1,5)ret,sure_fg=cv2.threshold(dist_transform,0.3*dist_transform.max(),255,0)cv2.imshow('sure_fg',sure_fg)#找到連接區(qū)域(不確定區(qū)域)sure_fg=np.uint8(sure_fg)unknown=cv2.subtract(sure_bg,sure_fg)cv2.imshow('unknown',unknown)使用分水嶺算法實現(xiàn)圖像分割#標記標簽ret,markers1=cv2.connectedComponents(sure_fg)#為所有標簽加上1,這樣背景就是1了不是0了markers=markers1+1#把位置區(qū)域標記為0markers[unknown==255]=0#調(diào)用分水嶺算法進行計算markers3=cv2.watershed(img,markers)#使用綠色來標記分割線img[markers3==-1]=[0,255,0]cv2.imshow("img",img)#關(guān)閉窗
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國割尾機市場調(diào)查研究報告
- 2025至2031年中國地毯裁邊刀行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年中國盒裝花生牛軋?zhí)菙?shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國女裝牛仔衫數(shù)據(jù)監(jiān)測研究報告
- 二零二五年版?zhèn)€人二手房交易合同范本下載3篇
- 2025版校企合作創(chuàng)新創(chuàng)業(yè)孵化基地項目合同書2篇
- 二零二五年度公關(guān)危機處理合作協(xié)議范本2篇
- 二零二五年度高鐵站柴油發(fā)電機組供應(yīng)與應(yīng)急處理合同3篇
- 2025版行政人事部勞動合同在職期間員工加班補貼及加班費計算標準3篇
- 2025版現(xiàn)代學徒制校企合作人才培養(yǎng)與評估協(xié)議3篇
- 2025年上半年長沙市公安局招考警務(wù)輔助人員(500名)易考易錯模擬試題(共500題)試卷后附參考答案
- 2025河北邯鄲世紀建設(shè)投資集團招聘專業(yè)技術(shù)人才30人高頻重點提升(共500題)附帶答案詳解
- 慈溪高一期末數(shù)學試卷
- 天津市武清區(qū)2024-2025學年八年級(上)期末物理試卷(含解析)
- 《徐霞客傳正版》課件
- 重大事故隱患判定標準與相關(guān)事故案例培訓(xùn)課件
- 2024年度節(jié)后復(fù)工建筑施工安全培訓(xùn)交底
- 貴州省2023年中考英語真題
- 個人借條電子版模板
- 中國思想史 馬工程329P
- 數(shù)字信號處理(第3版)ch8-4小波變換分解與重構(gòu)算法
評論
0/150
提交評論