2021-07-26

山东大学暑期实训(十二)

分水岭算法

参考https://www.cnblogs.com/ssyfj/p/9278815.html

在这里插入图片描述
(一)获取灰度图像,二值化图像,进行形态学操作,消除噪点
def watershed_demo(image):
blur = cv.pyrMeanShiftFiltering(image,10,100)
gray = cv.cvtColor(blur,cv.COLOR_BGR2GRAY)  #获取灰度图像
ret,binary = cv.threshold(gray,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)  #将图像转为黑色和白色部分
cv.imshow(“binary”,binary)  #获取二值化图像
#形态学操作,进一步消除图像中噪点
kernel = cv.getStructuringElement(cv.MORPH_RECT,(3,3))
mb = cv.morphologyEx(binary,cv.MORPH_OPEN,kernel,iterations=2) #iterations连续两次开操作,消除图像的噪点

(二)在距离变换前加上一步操作:通过对上面形态学去噪点后的图像,进行膨胀操作,可以得到大部分都是背景的区域(原黑色不是我们需要的部分是背景)
sure_bg = cv.dilate(mb,kernel,iterations=3) #3次膨胀,可以获取到大部分都是背景的区域

(三)使用距离变换distanceTransform获取确定的前景色
根据distanceTransform获取距离背景最小距离的结果(详细看下面相关知识补充)
根据distanceTransform操作的结果,设置一个阈值,使用threshold决定哪些区域是前景,这样得到正确结果的概率很高
dist = cv.distanceTransform(mb,cv.DIST_L2,5)  #获取距离数据结果
ret, sure_fg = cv.threshold(dist,dist.max()*0.6,255,cv.THRESH_BINARY)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值