分水岭算法--语义分割
分水岭算法–语义分割
一、分水岭算法:把图像中的低密度的区域(变化小)看成山谷,高密度的区域(变化大)看成山峰。开始向山谷中注入水知道不同的山谷中的水开始汇聚。为了阻止不同山谷中的水汇聚,可以设置一些栅栏,最后得到的栅栏就是语义分割。
二、前提准备:罗勒叶子
三、代码分析:
1.导入相关库,并加载罗勒叶子的图像
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('luole.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
2.灰度转换,设置阈值,分为黑色部分和白色部分
ret,thresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
3.使用morphlogyEx()变换来去除噪声数据,即对图像进行膨胀之后再进行腐蚀,从而进行特征提取
kernel = np.ones((3,3),np.uint8)
opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel,iterations=2)
4.膨胀操作,可以得到都是背景的区域
sure_bg = cv2.dilate(opening,kernel,iterations=3)
5.通过distanceTransform来获取确定的前景区域
dist_transfrom = cv2.distanceTransform(opening,cv2.DIST_L2,5)
ret, sure_fg = cv2.threshold(dist_transfrom,0.7*dist_transfrom.max(),255,0)
6.处理重合部分,从sure_fg与sure_fg的集合相减得到
sure_fg = np.uint8(sure_fg)
unknown = cv2.subtract(sure_bg,sure_fg)
7.设置栅栏
ret,markers = cv2.connectedComponents(sure_fg)
8.在背景区域上加1,这会将unknown区域设为0
markers = markers + 1
markers[unknown==255] = 0
9.打开门,让水漫起来并把栅栏绘成红色
markers = cv2.watershed(img,markers)
img[markers == -1] = [255,0,0]
plt.imshow(img)
plt.show()
四、效果展示
五、完整代码
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('luole.jpg')
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_bg = cv2.dilate(opening,kernel,iterations=3)dist_transfrom = cv2.distanceTransform(opening,cv2.DIST_L2,5)
ret, sure_fg = cv2.threshold(dist_transfrom,0.7*dist_transfrom.max(),255,0)sure_fg = np.uint8(sure_fg)
unknown = cv2.subtract(sure_bg,sure_fg)ret,markers = cv2.connectedComponents(sure_fg)markers = markers + 1
markers[unknown==255] = 0markers = cv2.watershed(img,markers)
img[markers == -1] = [255,0,0]
plt.imshow(img)
plt.show()
六、总结
使用分水岭算法可以对图像进行图像分割,本人做出的效果不是很明显,根据需要对叶子进行选择,也许效果更优
分水岭算法--语义分割相关推荐
- 计算机视觉算法——语义分割网络总结
计算机视觉算法--语义分割网络总结 计算机视觉算法--语义分割网络总结 1. FCN 1.1 关键知识点--网络结构及特点 1.2 关键知识点--转置卷积 1.3 关键知识点--语义分割评价指标 2. ...
- OpenCV3学习(7.2)——图像分割之二(分水岭算法watershed)
分水岭算法原理 分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭 ...
- 【python】【openCV】分水岭算法
脑血管医学图像颅内分割尝试--分水岭算法 code 1.2 不分割颅内直接分割 code 2.0 实验版 code 3.0 批量处理版 code 3.1 加入孔洞填充 总结 本篇博客原目的同https ...
- 分水岭算法 c语言实现,分水岭算法的应用
上海交通大学 医学图像处理 数学形态学一个应用是分水岭算法,为了便于理解,可以将图像的灰度空间与地球表面的地形高度相类比,据此,发明了应用于图像领域的分水岭算法. 测地线距离 假设,如下图所示的一个岛 ...
- 【学习OpenCV4】分水岭算法详解
本文分享内容来自图书<学习OpenCV 4:基于Python的算法实战>,该书内容如下: 第1章 OpenCV快速入门: 第2章 图像读写模块imgcodecs: 第3章 核心库模块cor ...
- 分水岭算法和距离变换函数
分水岭算法和距离变换函数 分水岭算法原理 算法流程 距离变换函数 区域标记 结果 分割示例 代码 分水岭分割 距离函数 分水岭算法原理 在地理学中,分水岭是一个山脊,该山脊通过不同的水系来区分排水区域 ...
- OpenCV库中watershed函数(分水岭算法)的详细使用例程
# 声明:如果有写的不对的地方欢迎指正! 一.分水岭算法 关于分水岭算法的具体原理我就不说了,网上搜一下很多.OpenCV中的watershed函数实现的分水岭算法是基于"标记"的 ...
- 图像分割 - 分水岭算法
目录 1. 介绍 2. 分水岭算法的实现 距离变换 连接连通分量 3. 代码 1. 介绍 图像是由x,y表示的,如果将灰度值也考虑进去的话,那么一幅图像需要一个三维的空间去表示. 这样就可以把x,y ...
- FCN与U-Net语义分割算法
FCN与U-Net语义分割算法 图像语义分割(Semantic Segmentation)是图像处理和是机器视觉技术中关于图像理解的重要一环,也是 AI 领域中一个重要的分支.语义分割即是对图像中每一 ...
最新文章
- jQuery 是为事件处理特别设计的。
- 三阶矩阵的lu分解详细步骤_数学 - 线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件...
- Hbase快照Snapshot 数据备份、恢复与迁移
- 8软件遇到的问题及解决方法_Excel工作表中的8个常见问题,你一定遇到过,附解决方法...
- Vins中的FeatureTracker::readImage(const cv::Mat _img, double _cur_time)函数
- 卸载SD卡对MediaServer的处理
- idea添加scala环境_Scala(一)——scala+Idea环境配置
- Javascript面向对象之私有静态变量
- java matcher方法_Java正则表达式入坑指南:正则表达式使用的类有哪些吗?
- android textwatcher 延时,Android TextWatcher监控EditText中的输入内容并限制其个数
- javaweb JAVA JSP员工绩效考核管理系统(员工考核管理系统)员工考勤管理系统人事考勤
- matlab app designer:夫琅禾费圆孔衍射仿真
- 2.16 自定义快速访问工具栏以提升工作效率 [原创Excel教程]
- 谷歌浏览器无法调用java_怎么才能正常使用谷歌浏览器
- 国五条催生末班车效应 郑州二手房交易量激增
- vue开发钉钉微应用鉴权失败
- 中国紧急警报系统(EAS)行业发展现状与前景动态预测报告2022-2027
- 期货开户需要具备⼀定的条件
- 人工智能安全的核心观点:何时、为何、何事以及如何
- 轩辕实验室 | 车载网络入侵检测DCNN算法设计
热门文章
- 计算机函数公式大全ppt,三角函数公式大全分解.ppt
- pcb 受潮_硬盘SATA接口断裂及PCB板受潮_希捷 Barracuda 3TB 7200转 64MB_固态硬盘评测-中关村在线...
- 集赞活动朋友圈案例 餐饮店集赞活动方案 什么叫做集赞拓客?
- IEEE ICIP 2019 | 更快更好的联邦学习:一种特征融合方法
- 小米9/9 SE于3月19日开放购买!雷军:螺丝刀已备好,百万出货
- MATLAB作图时值为0的点不画出来
- NX二次开发-UFUN获取工程图所有视图tag UF_DRAW_ask_views
- 通过一张照片,获取照片的地址信息
- STM32驱动WS2812B-2020 RGB彩灯(一)
- 畜牧业中资金问题的解决——活体贷技术和实现原理