OpenCV | 分水岭算法进行图像分割
分水岭算法进行图像分割
分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素的灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆的边界则形成分水岭。分水岭的概念和形成可以通过模拟浸入过程来说明。在每一个局部极小值表面,刺穿一个小孔,然后把整个模型慢慢浸入水中,随着浸入的加深,每一个局部极小值的影响域慢慢向外扩展,在两个集水盆汇合处构筑大坝,即形成分水岭。
import numpy as np
import cv2
from matplotlib import pyplot as pltimg = cv2.imread('molecule.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2)# sure background area
sure_bg = cv2.dilate(opening,kernel,iterations=3)# Finding sure foreground area
dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)
ret, sure_fg = cv2.threshold(dist_transform,0.7*dist_transform.max(),255,0)# Finding unknown region
sure_fg = np.uint8(sure_fg)
unknown = cv2.subtract(sure_bg,sure_fg)# Marker labelling
ret, markers = cv2.connectedComponents(sure_fg)# Add one to all labels so that sure background is not 0, but 1
markers = markers+1markers[unknown==255] = 0
markers = cv2.watershed(img,markers)
img[markers == -1] = [255,0,0]plt.imshow(img)
plt.show()
原图
输出图
OpenCV | 分水岭算法进行图像分割相关推荐
- Python+OpenCV:基于分水岭算法的图像分割(Image Segmentation with Watershed Algorithm)
Python+OpenCV:基于分水岭算法的图像分割(Image Segmentation with Watershed Algorithm) ############################ ...
- Opencv 分水岭算法 watershed的图像分割
分水岭算法 参考博客: (1)迈克老狼2012 https://www.cnblogs.com/mikewolf2002/p/3304118.html (2)-牧野- h ...
- Opencv分水岭算法——watershed自动图像分割用法
分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特 ...
- opencv 分水岭算法详细理论+实践
分水岭算法看了两天了,基本原理看着挺简单,但是opencv中具体的实现方式看着还挺困难的.今天就说说我理解的地方,有很多不太理解的还得以后深入学习时候再补充. 基本原理:分水岭实则为两个盆地的交界处, ...
- 关于Opencv 分水岭算法种子点(注水口)的选取问题
Opencv 分水岭算法 void watershed( InputArray image, InputOutputArray markers ); 官方文档中这样表述分水岭算法种子的选取 /* Be ...
- 图像处理:分水岭算法(图像分割)
图像处理:分水岭算法(图像分割) 分水岭算法 分水岭算法是一种图像区域分割法,分割的过程中将图片转化为灰度图,然后我会将灰度值看作是海拔,然后向较低点注水,这种基于地形学的解释,我们着重考虑三种点: ...
- OpenCV分水岭算法详解
原理分析 分水岭算法主要用于图像分段,通常是把一副彩色图像灰度化,然后再求梯度图,最后在梯度图的基础上进行分水岭算法,求得分段图像的边缘线. 下面左边的灰度图,可以描述为右边的地形图,地形的高度是由灰 ...
- opencv进阶学习笔记14:分水岭算法 实现图像分割
基础版学习笔记目录: python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录链接: python+opencv进阶版学习笔记目录(适合有一定基础) 分水岭算法原理 分水岭算法 ...
- opencv python 基于分水岭算法的图像分割
Image Segmentation with Watershed Algorithm 理论 任何灰度图像都可以看作是地形表面,其中高强度表示山峰和丘陵,而低强度表示山谷.用不同颜色的水(标签)填充每 ...
最新文章
- php模拟post上传图片,php模拟post上传图片解决方法
- 喜讯不断,BCH又迎来两个代币发行方案
- topcoder srm 360 div1
- python3 http服务端响应源码
- 苏区振兴下的赣州发展状况分析
- 使用AutoMapper 处理DTO数据对象的转换
- linux 创建精灵进程,linux 进程通信之 守护进程
- gtx1660是什么级别的_GTX1660Ti到底属于什么系列?Nvidia一句话定性了
- 多线程:生产者消费者问题
- EasyUI Numberbox 数字框(限制仅输入数字)
- centos7最小化安装后mysql_CentOS 7 最小化安装之后安装Mysql
- 【Android游戏开发二十】物理游戏之重力系统开发,让你的游戏变得有质有量!...
- Weld(CDI)教程
- C语言推荐书籍从入门到进阶带你走上大牛之路
- 最好用的U盘数据恢复软件是哪个,迅龙U盘数据恢复软件
- 【20211228】【信号处理】从 Matlab 仿真角度理解频谱泄露
- 计算机组成原理中的直接映像,计算机组成原理--cache存储器的直接映像与变换...
- 2021-11-12 Android 11 长按按键进入恢复出厂设置的实现方法-PhoneWindowManager里面用发广播的模式
- [导入]梦幻快车(DreamMail) v4.0 正式版 ?
- mysql 等距_Python气象绘图教程(十一)