skimage包的小优化(2):模仿remove_small_objects()函数保留图片中连通域最大的区域

本文主要是介绍skimage包的小优化(2):模仿remove_small_objects()函数保留图片中连通域最大的区域,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

python模仿remove_small_objects()函数保留图片中连通域最大的区域

skimage包的morphology子模块中,提供了一个remove_small_objects()函数,可以通过自己设定的连通域面积阈值有效去掉图片中的噪点,但是在具体使用过程中会发现:这个函数使用起来还有诸多的不便,好在这个函数的源代码并不长,在在skimage包的小优化(1):模仿remove_small_objects()函数去除图片边缘不感兴趣区域
中,我就是通过模仿remove_small_objects()的源代码,实现了判断连通域与中心坐标的位置远近来去除图片边缘大面积噪声。很好地解决了去掉图片边缘不感兴趣区域的问题。

但是最近在使用过程中,我有发现了另外一个问题:在使用remove_small_objects()函数的时候,必须要指定一个连通域的面积阈值(这个函数的具体使用方法见:scikit-image(skimage)包的用法详解),而很多时候我们根本不知道这个阈值到底要设为多少。而有时候,我们如果已经知道图片中只有那块连通域面积最大的区域是我们想要的,那么,只需要保留这块区域,其他的都当作噪点删掉即可,没必要非要确定一个面积阈值。

具体实现如下:

##输入:一张二值图像,无须指定面积阈值,
##输出:会返回保留了面积最大的连通域的图像
def save_max_objects(img):labels = measure.label(img)  # 返回打上标签的img数组jj = measure.regionprops(labels)  # 找出连通域的各种属性。  注意,这里jj找出的连通域不包括背景连通域# is_del = Falseif len(jj) == 1:out = img# is_del = Falseelse:# 通过与质心之间的距离进行判断num = labels.max()  #连通域的个数del_array = np.array([0] * (num + 1))#生成一个与连通域个数相同的空数组来记录需要删除的区域(从0开始,所以个数要加1)for k in range(num):#TODO:这里如果遇到全黑的图像的话会报错if k == 0:initial_area = jj[0].areasave_index = 1  # 初始保留第一个连通域else:k_area = jj[k].area  # 将元组转换成arrayif initial_area < k_area:initial_area = k_areasave_index = k + 1del_array[save_index] = 1del_mask = del_array[labels]out = img * del_mask# is_del = Truereturn out

这篇关于skimage包的小优化(2):模仿remove_small_objects()函数保留图片中连通域最大的区域的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1108850

相关文章

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H