一、实验目的

用OpenCV编写一个基于分水岭算法的图像分割程序能对肺部医学图像进行分割,辅助医生进行病情诊断,强化和巩固学生对图像分割知识的掌握和灵活应用。

二、实验要求

1、用OpenCV编写一个基于分水岭算法的图像分割程序,能对获取的肺部医学图像进行分割;
2、认真撰写实验报告,要求说明实验原理,对实验过程叙述清楚,关键代码给出注释,对实验结果给出合理解释,实验分析部分则需要指出实验结果优劣的原因以及如何进一步提高实验性能的方法或手段。
3、利用python版的OpenCV编写代码。

三、实验过程

import cv2
import numpy as np
import matplotlib.pyplot as pltimg = cv2.imread('CV-Pictures/qizi.jpg')gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)            #转换为灰度图ret,imgthresh = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)     #Otsu阈值处理,转化为二值图kernel = np.ones((3,3),np.uint8)                       #定义形态变换卷积核imgopen = cv2.morphologyEx(imgthresh,cv2.MORPH_OPEN,kernel,iterations=2)                       #形态变换:开运算imgbg = cv2.dilate(imgopen,kernel,iterations=3)        #膨胀操作,确定背景imgdist = cv2.distanceTransform(imgopen,cv2.DIST_L2,0) #距离转换,用去确定前景ret,imgfg = cv2.threshold(imgdist,0.7*imgdist.max(),255,2)           #对距离转换结果进行阈值处理imgfg = np.uint8(imgfg)                                #转换为整数,获得前景ret,markers = cv2.connectedComponents(imgfg)           #标记阈值处理结果unknown = cv2.subtract(imgbg,imgfg)                    #确定位置未知区域markers = markers + 1                                  #加1使背景不为0markers[unknown == 255] = 0                            #将未知区域设置为0imgwater = cv2.watershed(img,markers)                  #执行分水岭算法分割图像plt.imshow(imgwater)                                  #以灰度图像格式显示匹配结果
plt.title('watershed')
plt.axis('off')
plt.show()
img[imgwater == -1] = [0,255,0]                        #将原图中被标记点设置为绿色cv2.imshow('watershed',img)                            #显示分割结果
cv2.waitKey(0)

四、实验结果

实验结果如下图所示:

五、实验分析

1.本实验采用分水岭算法。分水岭(Watershed)是基于地理形态的分析的图像分割算法,模仿地理结构(比如山川、沟壑,盆地)来实现对不同物体的分类。
2.在图像处理中,我们首先读取图片,将图片转化为灰度图,再根据OSTU阈值二值化图像。通过定义卷积核,以及图像的开运算去除图像的边缘干扰,一方面通过膨胀运算识别出背景,另一方面通过距离转换及阈值处理再转化为整数获得前景。标记前景阈值处理结果,根据前景背景确定未知区域,对背景和未知区域区分,执行分水岭算法分割图像。分别显示匹配结果和被标记点的图。

六、代码文件

小程序员将代码文件和相关素材整理到了百度网盘里,因为文件大小基本不大,大家也不用担心限速问题。后期小程序员有能力的话,将在gitee或者github上上传相关素材。
链接:https://pan.baidu.com/s/1Ce14ZQYEYWJxhpNEP1ERhg?pwd=7mvf
提取码:7mvf

机器视觉实验三: 基于分水岭算法的肺部图像分割实验(OpenCV-python代码)相关推荐

  1. 基于TextRank算法的文本摘要(附Python代码)

    基于TextRank算法的文本摘要(附Python代码): https://www.jiqizhixin.com/articles/2018-12-28-18

  2. 实验三 基于A*算法的迷宫游戏

    软件实习项目三 -- Java实现基于A*算法的迷宫游戏 一.实验任务 (1)该题要求随机生成一个迷宫,并求解迷宫: (2)要求游戏支持玩家走迷宫,和系统走迷宫路径两种模式.玩家走迷宫,通过键盘方向键 ...

  3. 独家 | 基于TextRank算法的文本摘要(附Python代码)

    作者:Prateek Joshi 翻译:王威力 校对:丁楠雅 本文约3300字,建议阅读10分钟. 本文介绍TextRank算法及其在多篇单领域文本数据中抽取句子组成摘要中的应用. TextRank ...

  4. 实验三 基于A*算法的迷宫游戏开发

    实验要求: 1.迷宫随机生成 2.玩家走迷宫,留下足迹: 3.系统用A*算法寻路,输出路径 解决问题: 1.如何显示迷宫的图形界面: 2.如何生成随机的迷宫: 3.怎样移动游戏中走迷宫的"玩 ...

  5. 基于SVD算法的电影推荐系统实验

    基于SVD算法的电影推荐系统实验 推荐系统发展简单思维导图 电影推荐系统最初思路 程序实现的功能 程序整体框架 基于关键字搜索推荐模块 搜索推荐模块代码 基于电影名称关键字的推荐模块 基于电影类型搜索 ...

  6. 20172328 蓝墨云实验——三种查找算法练习

    20172328 蓝墨云实验--三种查找算法练习 课程:<软件结构与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强老师 实验日期:2018年10月1 ...

  7. TIT 计算机图形学 实验三 使用重心坐标算法绘制颜色渐变的正六面体

    TIT 计算机图形学 实验三 使用重心坐标算法绘制颜色渐变的正六面体 前言 参考视频计算机图形学全套算法讲解和C++编码实现(共23讲配套源码),计算机图形学案例视频讲解以及主页相关算法.孔老师是我的 ...

  8. Python+OpenCV:基于分水岭算法的图像分割(Image Segmentation with Watershed Algorithm)

    Python+OpenCV:基于分水岭算法的图像分割(Image Segmentation with Watershed Algorithm) ############################ ...

  9. 河北工业大学数据挖掘实验三 应用 Apriori 算法挖掘频繁项集

    河北工业大学数据挖掘实验三 应用 Apriori 算法挖掘频繁项集 一.实验目的 二.实验原理 1.Apriori 算法 2.提高频繁项集逐层产生的效率 三.实验内容和步骤 1.实验内容 2.实验步骤 ...

最新文章

  1. Python OpenCV分水岭算法分割和提取重叠或有衔接的图像中的对象
  2. oracle产品追溯,如何追溯AR到Receipt再到GL
  3. Facets:评估机器学习数据集质量利器 (来自Google、可交互、可可视化)
  4. 征信逾期花钱就能修复?小心跳进骗子的坑里面去
  5. 第一个Django应用程序_part1
  6. 20道JS原理题助你面试一臂之力!
  7. linux7为nginx添加服务,CentOS7添加Nginx为系统服务
  8. dedeCMS 文件路径、全局替换(待续···)
  9. 电脑主板跳线_电脑主板跳线连接图
  10. Android学习之适配器SimpleCursorAdapter
  11. 线程池——JAVA并发编程指南
  12. mysql命令行操作语句_MySQL常用命令行操作语句
  13. ccf分区查询_CCF CSP和CCF CCSP简介
  14. vue图片裁剪:使用vue-cropper做图片裁剪
  15. 如何使用计算机自带的刻录软件,Win7系统自带光盘刻录功能如何使用?
  16. ubuntu18.04 eclipse +sdcc开发stm8l152 并且单步调试
  17. 微博数据:如何在西瓜微数平台使用「热门话题分析」功能?
  18. java web简单项目实例_简单粗暴,详细得不要不要的 JavaWeb快速入门实例(1)
  19. 教你去掉 U盘写保护
  20. 怎么测试计算机运算能力,处理器运算能力测试_CPU_CPUCPU评测-中关村在线

热门文章

  1. java实验一目的_Java第一次实验要求
  2. Ubuntu 15.04 安装 Nvidia Quadro系列显卡驱动
  3. CentOS安装nvidia显卡驱动
  4. 搜狗做AI:围绕语言,力出一孔
  5. python龙格库塔_龙格库塔积分法
  6. mysql安装麻烦_Mysql安装教程
  7. 铁电存储器常见问题解决方案
  8. 【Deformable DETR 论文+源码解读】Deformable Transformers for End-to-End Object Detection
  9. Jenkins+Jmeter+Ant 生成接口测试报告并发送邮件
  10. 决策树桩(Decision Stump)