edu.51cto.comedu.51cto.comOpenCV3.1.0–图像处理教程edu.51cto.com讲师:贾志刚E-Mail:bfnh1998@hotmail.com微博:流浪的鱼-GloomyFishedu.51cto.com基于距离变换与分水岭的图像分割什么是图像分割距离变换与分水岭介绍相关API代码演示edu.51cto.com什么是图像分割(ImageSegmentation)edu.51cto.com什么是图像分割图像分割(ImageSegmentation)是图像处理最重要的处理手段之一图像分割的目标是将图像中像素根据一定的规则分为若干(N)个cluster集合,每个集合包含一类像素。根据算法分为监督学习方法和无监督学习方法,图像分割的算法多数都是无监督学习方法-KMeansedu.51cto.com距离变换与分水岭介绍还记得上节课的内容,测试点多边形得到结果跟距离变换相似edu.51cto.com距离变换与分水岭介绍edu.51cto.com距离变换与分水岭介绍距离变换常见算法有两种-不断膨胀/腐蚀得到-基于倒角距离分水岭变换常见的算法-基于浸泡理论实现edu.51cto.com相关APIcv::distanceTransform(InputArraysrc,OutputArraydst,OutputArraylabels,intdistanceType,intmaskSize,intlabelType=DIST_LABEL_CCOMP)distanceType=DIST_L1/DIST_L2,maskSize=3x3,最新的支持5x5,推荐3x3、labels离散维诺图输出dst输出8位或者32位的浮点数,单一通道,大小与输入图像一致cv::watershed(InputArrayimage,InputOutputArraymarkers)edu.51cto.com处理流程1.将白色背景变成黑色-目的是为后面的变换做准备2.使用filter2D与拉普拉斯算子实现图像对比度提高,sharp3.转为二值图像通过threshold4.距离变换5.对距离变换结果进行归一化到[0~1]之间6.使用阈值,再次二值化,得到标记7.腐蚀得到每个Peak-erode8.发现轮廓–findContours9.绘制轮廓-drawContours10.分水岭变换watershed11.对每个分割区域着色输出结果edu.51cto.com演示代码-加载图像edu.51cto.com演示代码-去背景edu.51cto.com演示代码-Sharpedu.51cto.com演示代码-二值距离变换edu.51cto.com演示代码-二值腐蚀edu.51cto.com演示代码-标记edu.51cto.com演示代码-分水岭变换edu.51cto.com演示代码-着色效果edu.51cto.comThankYou!edu.51cto.com