日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV与图像处理学习十一——分水岭算法(含代码)

發布時間:2024/7/23 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV与图像处理学习十一——分水岭算法(含代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV與圖像處理學習十一——分水嶺算法(含代碼)

  • 一、分水嶺算法概要
  • 二、分水嶺算法步驟
  • 三、代碼應用

一、分水嶺算法概要

任意的灰度圖像可以被看做是地質學表面,高亮度的地方是山峰,低亮度的地方是山谷。

給每個孤立的山谷(局部最小值)不同顏色的水(標簽),當水漲起來,根據周圍的山峰(梯度),不同的山谷也就是不同的顏色會開始合并,要避免山谷合并,需要在水要合并的地方建立分水嶺,直到所有山峰都被淹沒,所創建的分水嶺就是分割邊界線,這個就是分水嶺的原理。

二、分水嶺算法步驟

  • 將白色背景變成黑色背景——目的是為了后面的變換做準備
  • 使用filter2D與拉普拉斯算子實現圖像對比度的提高
  • 轉為二值圖像
  • 距離變換
  • 對距離變換結果進行歸一化[0-1]之間
  • 使用閾值,在此二值化,得到標記
  • 腐蝕每個peak erode
  • 發現輪廓 findContours
  • 繪制輪廓 drawContours
  • 分水嶺變換 watershed
  • 對每個分割區域著色輸出結果
  • 三、代碼應用

    """ 完成分水嶺算法步驟: 1、加載原始圖像 2、閾值分割,將圖像分割為黑白兩個部分 3、對圖像進行開運算,即先腐蝕在膨脹 4、對開運算的結果再進行 膨脹,得到大部分是背景的區域 5、通過距離變換 Distance Transform 獲取前景區域 6、背景區域sure_bg 和前景區域sure_fg相減,得到即有前景又有背景的重合區域 7、連通區域處理 8、最后使用分水嶺算法 """import cv2 import numpy as np# Step1. 加載圖像 img = cv2.imread('image/yezi.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Step2.閾值分割,將圖像分為黑白兩部分 ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) cv2.imshow("thresh", thresh)# Step3. 對圖像進行“開運算”,先腐蝕再膨脹 kernel = np.ones((3, 3), np.uint8) opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2) cv2.imshow("opening", opening)# Step4. 對“開運算”的結果進行膨脹,得到大部分都是背景的區域 sure_bg = cv2.dilate(opening, kernel, iterations=3) cv2.imshow("sure_bg", sure_bg)# Step5.通過distanceTransform獲取前景區域 dist_transform = cv2.distanceTransform(opening, cv2.DIST_L2, 5) # DIST_L1 DIST_C只能 對應掩膜為3 DIST_L2 可以為3或者5 ret, sure_fg = cv2.threshold(dist_transform, 0.1 * dist_transform.max(), 255, 0)cv2.imshow("sure_fg", sure_fg)# Step6. sure_bg與sure_fg相減,得到既有前景又有背景的重合區域 #此區域和輪廓區域的關系未知 sure_fg = np.uint8(sure_fg) unknow = cv2.subtract(sure_bg, sure_fg) cv2.imshow("unknow", unknow)# Step7. 連通區域處理 ret, markers = cv2.connectedComponents(sure_fg, connectivity=8) # 對連通區域進行標號 序號為 0 - N-1 markers = markers + 1 # OpenCV 分水嶺算法對物體做的標注必須都 大于1 ,背景為標號 為0 因此對所有markers 加1 變成了 1 - N # 去掉屬于背景區域的部分(即讓其變為0,成為背景) # 此語句的Python語法 類似于if ,“unknow==255” 返回的是圖像矩陣的真值表。 markers[unknow==255] = 0# Step8.分水嶺算法 markers = cv2.watershed(img, markers) # 分水嶺算法后,所有輪廓的像素點被標注為 -1 print(markers)img[markers == -1] = [0, 0, 255] # 標注為-1 的像素點標 紅 cv2.imshow("dst", img) cv2.waitKey(0) cv2.destroyAllWindows()

    原圖為:

    使用大津閾值法二值化后的結果:

    開運算消除一些噪聲(本例不明顯):

    做膨脹操作,那么得到的背景區域一定是背景區域:

    做距離變換操作(或腐蝕),那么得到的前景一定為真正的前景:

    中間是既有前景又有背景的重合區域,此區域和輪廓區域的關系未知:

    分水嶺算法之后的效果為:

    總結

    以上是生活随笔為你收集整理的OpenCV与图像处理学习十一——分水岭算法(含代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品在线视频一区 | 男女爽爽视频 | 国产成人啪免费观看软件 | 丝袜美女av | 91视频免费视频 | 美女av网站 | 91免费看国产 | 国产97av| 天天躁日日躁狠狠躁免费麻豆 | 麻豆视频在线观看免费 | 国产精品丝袜在线 | 99免费在线观看 | 西西人体做爰大胆gogo | 在线成人毛片 | 亚洲色婷婷久久精品av蜜桃 | 婷婷去俺也去 | 国产有码在线 | 实拍女处破www免费看 | 日本一区二区三区在线播放 | 黄网站在线免费 | 日韩手机在线观看 | 色偷偷av一区二区三区 | 天天操天天干天天爱 | 欧美视频在线观看免费 | 国产男女无套免费网站 | 91精品999 | 在线观看av资源 | 中文字幕国产综合 | 欧美精品一区在线观看 | 少妇黄色一级片 | 亚洲电影影音先锋 | 亚洲欧美在线视频观看 | 人人爱人人澡 | 二级毛片| 秋霞99| 欧美一区一区 | 日韩美女黄色 | 欧美高清性xxxxhd | 日韩av在线免费播放 | av手机在线免费观看 | 综合色久 | 在线播放精品 | 九九视频在线免费观看 | 色噜噜一区二区三区 | xxxxwwww国产 | 女人特黄大aaaaaa大片 | 日韩欧美一二三区 | 国产精品777 | 一级片大片 | 91中文| 国产精品第13页 | 国产在线精品视频 | 亚洲视频小说 | 国产视频精品视频 | 久久少妇视频 | 风流僵尸艳片a级 | 奇米网7777 | 91精品国产综合久久久久 | 天天干夜夜草 | 尤物视频免费观看 | 亚洲天堂网站 | 精品无码av一区二区三区四区 | 永久免费看黄 | 国产婷婷色一区二区在线观看 | 日本在线中文字幕专区 | 日本久久久久久 | 久久人人爽人人爽人人片亚洲 | 亚洲日本香蕉 | 国产国语亲子伦亲子 | 亚洲插插 | 日本三级韩国三级美三级91 | 久草综合网 | 色妺妺视频网 | 欧美午夜理伦三级在线观看 | 一级片视频免费观看 | 中文字幕在线天堂 | 春色伊人| 少妇激情四射 | 国产精品久久久久毛片大屁完整版 | 日韩一区二区三区在线 | 调教驯服丰满美艳麻麻在线视频 | av美女在线观看 | 国产3区| av免费黄色| 91久久精品国产91性色69 | 日本妇女毛茸茸 | 色婷婷基地| www婷婷av久久久影片 | 国产一区二区女内射 | 亚洲大片免费 | 成人国产三级 | 大陆av片 | 国产秋霞 | 一级片免费网站 | 欧美日本色 | 少妇高潮一区二区三区 | 污视频软件在线观看 | 美乳在线播放 | 97爱爱视频 |