国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python opencv之分水嶺算法示例

2020-02-22 23:18:54
字體:
來源:轉載
供稿:網友

本文介紹了python opencv之分水嶺算法示例,分享給大家,具體如下:

目標

    使用分水嶺算法對基于標記的圖像進行分割 使用函數cv2.watershed()

原理:

灰度圖像可以被看成拓撲平面,灰度值高的區域可以看出山峰,灰度值低的區域可以看成是山谷。向每一個山谷當中灌不同顏色的水。水位升高,不同山谷的水會匯合,為防止不同山谷的水匯合,小在匯合處建立起堤壩。然后繼續灌水,然后再建立堤壩,直到山峰都掩模。構建好的堤壩就是圖像的分割。

此方法通常會得到過渡分割的結果,因為圖像中的噪聲以及其他因素。為了減少此影響,opencv使用基于標記的分水嶺算法,此算法要設置哪些山谷中的匯合點,哪些不是。這是一種交互式的圖像分割算法那。我們要給已知對象打上不同表情。如果某個區域肯定是前景或對象,就使用某個顏色或灰度值標簽標記它。如果是背景那么使用其他顏色進行標記,其余不能確定的部分用0標記。然后使用分水嶺算法,每次灌水,標簽會被更新,當兩個不同顏色的標簽相遇就會構建堤壩,知道所有山峰掩模,最后得到的邊界對象值是-1。

代碼:

對挨在一起的對象進行分割。

這里寫圖片描述

使用Otsu's 二值化后的結果為

這里寫圖片描述

要出去圖像中的白噪聲??梢允褂眯螒B學運算,使用閉運算去除對象中的空洞。

靠近對象中心的區域是前景,離對象遠的區域是背景,不確定的區域是邊界。

首先提取硬幣區域,使用腐蝕操作去掉邊緣,剩下的就是硬幣。但硬幣沒有接觸時,此方法有效,但是由于硬幣相互接觸,就要使用另外一種有效的方法:距離變換加上合適的閾值。

之后,要尋找不確定是否是硬幣的區域。這里需要膨脹操作。膨脹操作會將對象邊界延伸到背景當中。由于邊界區域被去除,現在就能知道哪些區域是前景,哪些是背景。

余下的區域不知道如何區分,那么使用分水嶺算法。這些區域通常是前景與背景的交界處。從能否確認是否是背景的區域中減去確定是前景的區域就得到了邊界。

(前景和背景)

這里寫圖片描述

(上面的圖是直接使用作者的代碼后生產的結果,提取到了前景,為了演示一下不確定的區域,調了一下計算前景的距離變換的參數,使得中間出現不確定的區域)

這里寫圖片描述

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 延津县| 古蔺县| 明溪县| 宝鸡市| 图们市| 霍林郭勒市| 遂昌县| 循化| 竹山县| 宜君县| 通山县| 天津市| 九龙坡区| 兰坪| 绥棱县| 渭源县| 浦江县| 正定县| 酒泉市| 莱阳市| 兴安盟| 营山县| 阳泉市| 炉霍县| 巴林右旗| 都匀市| 波密县| 公主岭市| 海盐县| 阳西县| 麻栗坡县| 岢岚县| 五寨县| 宝坻区| 惠来县| 七台河市| 罗江县| 乐昌市| 石家庄市| 马鞍山市| 剑阁县|