python数字图像处理教程,python数字图像处理之高级形态学处理
形态学处理,除了最基本的膨胀、腐蚀、开/闭运算、黑/白帽处理外,还有一些更高级的运用,如凸包,连通区域标记,删除小块区域等。
1、凸包
凸包是指一个凸多边形,这个凸多边形将图片中所有的白色像素点都包含在内。
函数为:
python" id="highlighter_325579">
?
输入为二值图像,输出一个逻辑二值图像。在凸包内的点为true, 否则为false
例:
?
convex_hull_image()是将图片中的所有目标看作一个整体,因此计算出来只有一个最小凸多边形。如果图中有多个目标物体,每一个物体需要计算一个最小凸多边形,则需要使用convex_hull_object()函数。
函数格式:skimage.morphology.convex_hull_object(image,neighbors=8)
输入参数image是一个二值图像,neighbors表示是采用4连通还是8连通,默认为8连通。
例:
?
2、连通区域标记
在二值图像中,如果两个像素点相邻且值相同(同为0或同为1),那么就认为这两个像素点在一个相互连通的区域内。而同一个连通区域的所有像素点,都用同一个数值来进行标记,这个过程就叫连通区域标记。在判断两个像素是否相邻时,我们通常采用4连通或8连通判断。在图像中,最小的单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有2种:4邻接与8邻接。4邻接一共4个点,即上下左右,如下左图所示。8邻接的点一共有8个,包括了对角线位置的点,如下右图所示。
在skimage包中,我们采用measure子模块下的label()函数来实现连通区域标记。
函数格式:
?
参数中的image表示需要处理的二值图像,connectivity表示连接的模式,1代表4邻接,2代表8邻接。
输出一个标记数组(labels), 从0开始标记。
?
在代码中,有些地方乘以1,则可以将bool数组快速地转换为int数组。
结果如图:有10个连通的区域,标记为0-9
如果想分别对每一个连通区域进行操作,比如计算面积、外接矩形、凸包面积等,则需要调用measure子模块的regionprops()函数。该函数格式为:
?
返回所有连通区块的属性列表,常用的属性列表如下表:
属性名称
类型
描述
area
int
区域内像素点总数
bbox
tuple
边界外接框(min_row, min_col, max_row, max_col)
centroid
array
质心坐标
convex_area
int
凸包内像素点总数
convex_image
ndarray
和边界外接框同大小的凸包
coords
ndarray
区域内像素点坐标
eccentricity
float
离心率
equivalent_diameter
float
和区域面积相同的圆的直径
euler_number
int
区域欧拉数
extent
float
区域面积和边界外接框面积的比率
filled_area
int
区域和外接框之间填充的像素点总数
perimeter
float
区域周长
label
int
区域标记
3、删除小块区域
有些时候,我们只需要一些大块区域,那些零散的、小块的区域,我们就需要删除掉,则可以使用morphology子模块的remove_small_objects()函数。
函数格式:skimage.morphology.remove_small_objects(ar,min_size=64,connectivity=1,in_place=false)
参数:
ar: 待操作的bool型数组。
min_size: 最小连通区域尺寸,小于该尺寸的都将被删除。默认为64.
connectivity: 邻接模式,1表示4邻接,2表示8邻接
in_place: bool型值,如果为true,表示直接在输入图像中删除小块区域,否则进行复制后再删除。默认为false.
返回删除了小块区域的二值图像。
?
在此例中,我们将面积小于300的小块区域删除(由1变为0),结果如下图:
4、综合示例:阈值分割+闭运算+连通区域标记+删除小区块+分色显示
?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/denny402/p/5166258.html
python数字图像处理教程,python数字图像处理之高级形态学处理相关推荐
- 视频教程-Python开发全教程-Python
Python开发全教程 目前就职于中国唯品会做iOS开发工程师,在良师益友网,麦子学院任职iOS讲师,出版iOS编程学习书籍<7天玩转iOS界面开发>,<初级到AppStore上架& ...
- python完全新手教程-Python完全新手教程
Python完全新手教程 更新时间:2007年02月08日 00:00:00 作者: Python入门教程FROM:http://www.cnblogs.com/taowen/articles/112 ...
- python自学入门教程-Python学习教程(一)自学资源分享
在我看来,基本上可以不负责任地认为,Python 可以做任何事情.无论是从入门级选手到专业级选手都在做的爬虫,还是Web 程序开发.桌面程序开发还是科学计算.图像处理,Python都可以胜任. 或许是 ...
- python免费入门教程-python入门免费教程看这些就够了
原标题:python入门免费教程看这些就够了 python入门免费教程看这些就够了 自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python已经成为 ...
- python全免费教程-python教程免费
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 使用步骤在 cvm 上部署好 python 环境及 python-mem ...
- python爬虫菜鸟教程-Python 应该怎么学?
不多BB,直接上干货! 现在很多学校都已经将Python作为入门的编程语言了,在目前特别火的机器学习.人工智能领域,Python可以说是标配的编程语言. 所以我由浅入深的整理了一些Python的资源和 ...
- python免费全套教程-python入门免费教程看这些就够了
原标题:python入门免费教程看这些就够了 python入门免费教程看这些就够了 自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程.Python已经成为 ...
- python快速入门教程-Python快速入门
Python语言本身就是一门简单的语言,入门非常容易. 机器学习中用到的Python(语法)相对就更简单了. 本文从机器学习的视角来看需要具备的Python基础. 我们的目标是-- 没有蛀牙... 针 ...
- python基础系列教程——python基础语法全解
点击此处 python教程全解 了解python 1. 了解Python Python是一种解释型(这意味着开发过程中没有了编译这个环节).面向对象(支持面向对象的风格或代码封装在对象 ...
- python自学入门教程-Python基础教程,Python入门教程(非常详细)
Python 英文本意为"蟒蛇",直到 1989 年荷兰人 Guido van Rossum (简称 Guido)发明了一种面向对象的解释型编程语言(后续会介绍),并将其命名为 P ...
最新文章
- 重磅!国内首个缺陷检测教程:理论、源码与实战
- 软件工程到底是干嘛的....
- 练习二十一:关于猴子吃桃的问题
- Java NIO之缓冲区
- QT如何让窗口放置在屏幕正中间
- PAT 1014 Waiting in Line
- python 字典写入excel_Python向excel中写入数据的方法
- css标签选择器、类名选择器、多类名选择器
- SPSS常用的几种统计分析
- mysql怎么卸载干净?
- mysql修改字段默认值_Mysql 修改字段默认值
- 缓存和数据库同步问题解决方案
- 简单的学生成绩数据分析案例
- w ndows7打印机添加,Windows7操作系统下添加打印机教程
- Windows安全加固-账户管理和认证授权
- 武神主宰中的科幻理论体系设定
- CSV格式文件向安卓小米手机中导入通讯录
- OGG同步字符集从US7ASCII to ZHS16GBK故障解决
- Office的克星来了,用友、金蝶行动迅速,软件之争,谁是冠军
- Unity动画系统学习