morphology(凸包)

from skimage importmorphology

covex_hull_image

convex_hull_image将图片中所有目标看作一个整体,计算一个最小凸多边形,如果图中有多个目标物体,每一个物体需要计算一个最小凸多边形,则需要使用convex_hull_object函数。

from skimage import morphology
morphology.convex_hull_image(image)
#凸包是指一个凸多边形,凸多边形将图片中所有的白色像素点都包含在内
#输入:二值图像
#输出:逻辑二值图像,在凸包内的点为True,否则为False

convex_hull_object

from skimage import morphology
morphology.convex_hull_object(image, neighbors=8)
#输入:image是一个二值图像
#输入:neighbors表示采用4连通还是8连通,默认为8连通。
#输出:逻辑二值图像,在凸包内的点为True,否则为False

remove_small_objects

from skimage import morphology
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如果为True,表示直接在输入图像中删除小块区域,否则进行复制后再删除。默认为False。
#输出:删除小块区域的二值图像

measure(连通标记+边缘轮廓)

在二值图像中,如果两个像素相邻且值相同(同为0或同为1),那么就认为这两个像素点在一个相互连通的区域内。而同一个连通区域的所有像素点,都用同一个数值来进行标记,这个过程叫连通区域标记。在判断两个像素是否相邻时,通常采用4连通或8连通判断。在图像中,最小的单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有2种:4邻接与8邻接。4邻接一共4个点,即上下左右,8邻接的点一共有8个,包括对角线位置的点。

在skimage包中,用measure子模块下的label()函数来实现连通区域标记。

from skimage import measure

label

from skimage import measure
measure.label(image, connectivity=None)
#输入:image表示需要处理的二值图像
#输入:connectivity表示连接的模式,1代表4邻接,2代表8邻接
#输出:标记数组(labels),从0开始标记。

regionprops

如果想分别对每一个连通区域进行操作,比如计算面积、外接矩形、凸包面积等,则需要调用measure子模块的regionprops()函数。

from skimage import measure
measure.regionprops(label_image)
#输入:label_image标记数组
#输出:area 区域内像素点总数
#输出:bbox 边界外接框
#输出:centroid 质心坐标
#输出:convex_area 凸包内像素点总数
#输出:convex_image 和边界外接框同大小的凸包
#输出:coords区域内像素点坐标
#输出:eccentricity 离心率
#输出:equivalent_diamenter和区域面积相同的圆的直径
#输出:euler_number区域欧拉数
#输出:extent区域面积和边界外接框面积的比率
#输出:filled_area区域和外接框之间填充的像素点总数
#输出:perimeter区域周长
#输出:label区域标记
label_img = measure.label(mask_erode, connectivity=2)
props = measure.regionprops(label_img)
if props:areas = [r.area for r in props]areas.sort(reverse=True)img_result = morphology.remove_small_objects(label_img, areas[0], connectivity=8, in_place=True)# props_sort = sorted(props, key=lambda p: p.area, reverse=True)# img_result = morphology.remove_small_objects(label_img, props_sort[0].area, connectivity=8, in_place=True)# img_result = morphology.convex_hull_image(img_result)img_result = np.where(img_result > 0, 255, 0)

find_contours

from skimage import measure
measure.find_contours(array, level)
#功能:检测二值图像的边缘轮廓
#输入:array一个二值数组图像
#输入:level在图像中查找轮廓的级别值
#输出:轮廓列表集合,可用for循环取出每一条轮廓。

subdivide_polygon

采用B样条(B-Splines)来细分多边形的曲线,该曲线通常在凸包线的内部。

from skimage import measure
measure.subdivide_polygon(coords, degree=2, preserve_ends=False)
#功能:逼近多边形曲线
#输入:coords坐标点序列
#输入:degreeB样条的度数,默认为2
#输入:perserve_ends如果曲线Wie非闭合曲线,是否保存开始和结束点坐标,默认为False。
#输出:细分多边形的曲线的坐标点序列。

approximate_polygon

基于Douglas-Peucker算法的一种近似曲线模拟。它根据指定的容忍值来近似一条多边形曲线链,该曲线也在凸包线的内部。

from skimage import measure
measure.approximate_polygon(coords, tolerance)
#功能:逼近多边形曲线
#输入:coords坐标点序列
#输入:tolerance容忍值
#输出:近似的多边形曲线坐标序列

参考资料

1.python数字图像处理(18):高级形态学处理
2.python数字图像处理(19):骨架提取与分水岭算法
3.python数字图像处理(17):边缘与轮廓
4.opencv+python机读卡识别(二)边缘检测及分割

skimage函数学习相关推荐

  1. C++:Lambda函数学习

    C++:Lambda函数学习 该文章转载自caimagic的博客:https://www.cnblogs.com/langzou/p/5962033.html 或许,Lambda 表达式算得上是 C+ ...

  2. excel高级函数_PowerQuery 进阶之 M 函数学习

    草色新雨中, 松声晚窗里. 之前我们学习 Power Query 都是用鼠标就完成了很多复杂的操作.虽然 PowerQuery 已经将大部分常用功能内置成到功能区.基本能完成我们大部分的报表自动化功能 ...

  3. python学习笔记三一 函数学习

    函数学习 range函数 •生成有序的序列 •生成数字队列可以定制 # range函数案例1 # 生成一个从1到10的数字序列 # range的生成序列的两个面数字是左包括,右不包括(如下所示只包括1 ...

  4. python小老鼠编程_成都python函数学习教程,Python编写课程

    1.urllib2/urllib实现urllib2和urllib是Python中的两个内置模块,要实现HTTP功能,实现方式是以urllib2为主,urllib为辅.1.1首先实现一个完整的请求与响应 ...

  5. python e_pythone函数基础(8)内置函数学习

    内置函数学习 # sorted # map # filter # max # sum # round # chr # ord # dir # bool # eval # exec # zip impo ...

  6. Javascript 随机数函数 学习之一:产生服从均匀分布随机数

    大家都知道Math.random是 javascript 中返回伪随机数的函数,但查看 MDN, The Math.random() function returns a floating-point ...

  7. C#函数学习及常用的类

    C#函数学习及常用的类 函数:能够独立完成某个功能的模块. 好处:1.结构更清析(编写.维护方便 ).2.代码重用.3.分工开发. 四要素:名称,输入(参数),输出(返回的类型),加工(函数体) 语法 ...

  8. sql自定义函数学习思路_学习SQL:用户定义的函数

    sql自定义函数学习思路 You can create several user-defined objects in a database. One of these is definitely u ...

  9. SKlearn中的函数学习总结(持续更新)

    关于SKlearn中的函数学习及关键代码部分,会持续更新 (参考sklearn官方文档) 一:分类.回归 二:降维 三:模型评估与选择 四:数据预处理 五:模型保存 大类 小类 适用问题 实现文档 说 ...

最新文章

  1. MobileNet Unet
  2. 查看mysql数据库大小、表大小和最后修改时间
  3. Tensorflow MNIST浅层神经网络的解释和答复
  4. 电脑能上网,手机连上wifi不能上网
  5. linux查看和修改PATH环境变量的方法
  6. 数据库原理与应用(SQL Server)笔记 第三章 连接查询
  7. mysql数据库常用操作
  8. c语言运行后没生成exe,这个程序怎么运行?为什么显示没有exe??
  9. 一文读懂HBase(安装,架构原理,优化,API,es二级索引,phoenix)
  10. 安装libgl1-mesa-dri:i386重启后黑屏问题解决
  11. 基于Python的南京二手房数据采集及可视化分析设计
  12. MTK logo.bin手动制作(个人博客:浏览器直接输入wugn.tech)
  13. Linux下服务的管理
  14. Python Selenium破解滑块验证码最新版!
  15. 论文笔记:Reasoning about Entailment with Neural Attention
  16. 初学量子力学,读读这本《见微知著》,会豁然开朗
  17. Java的JDK和JRE
  18. mysqldump命令备份数据 mysql备份数据
  19. 《那些年入上百万的人是如何做到的》读后感
  20. 已经两点求直线方程(多维空间)

热门文章

  1. runtime——Class——create
  2. 积分兑换商城系统怎么提高用户活跃度
  3. 使用筋斗云网络仿真平台进行灵活性区域配置仿真
  4. FPGA矩阵键盘的驱动设计与验证
  5. 【网络】统一资源定位符 URL (Uniform Resource Locator)
  6. 彻底理解CALayer的position与anchorPoint
  7. KDD2018《Adversarial Attacks on Neural Networks for Graph Data》 论文详解
  8. Convolutional Neural Network Pruning with Structural Redundancy Reduction 公式解读
  9. 服务器性能测试工具 Nmon的安装及使用
  10. 部署LAMP站点-edusoho