ImagePy——UI界面支持开放插件的Python开源图像处理框架

雷锋网
优质科技领域创作者  来自广东
原标题:ImagePy——UI界面支持开放插件的Python开源图像处理框架 雷锋网 AI 科技评论

原标题:ImagePy——UI界面支持开放插件的Python开源图像处理框架

雷锋网 AI 科技评论按,ImagePy 是一款 python 开源图像处理框架,其 UI 界面支持开放插件。在 github:https://github.com/Image-Py/imagepy 上,不仅有关于这款图像处理软件的详细介绍,还有一些使用示例,雷锋网 AI 科技评论接下来将详细介绍这一开源图像处理框架。

ImagePy 是一款基于 imagej 等插件的图像处理框架,它可以与 scipy.ndimage、scikit-image、opencv、simpleitk、mayavi 以及任何基于 numpy 的库进行组合使用,其地址为 http://imagepy.org。

简介

ImagePy 是用 python 编写的开源图像处理框架。它的 UI 接口、图像数据结构和表数据结构分别是基于 wxpython、numpy 和 pandas 的。此外,它支持任何基于 numpy 和 pandas 的插件,这些插件可以轻松地在 scipy.ndimage、scikit-image、simpleitk、opencv 和其他图像处理库之间进行通信。

概览,鼠标测量,几何变换,过滤,分割,计数等

如果你更喜欢 IJ 样式,请尝试使用「 Windows -> Windows Style 」来切换

ImagePy:

  • 具有用户友好的界面;

    可以读取/保存各种格式的图像数据;

    支持 ROI 设置、绘图、测量和其他鼠标操作;

    可以执行图像滤波、形态学操作和其他常规操作;

    可以进行图像分割、区域计数、几何测量和密度分析;

    能够对从图像中提取的参数进行相关的数据分析、滤波、统计分析等。

    这个项目的长期目标是成为 ImageJ 和 SPSS 的联合体。

    地址:

    https://academic.oup.com/bioinformatics/article-abstract/34/18/3238/4989871?redirectedFrom=fulltext

    安装:

    支持的系统:带有 python2.7 和 python3 及以上版本的 windows、linux、mac 系统。

    ImagePy 是一个基于 wxpython 的 ui 框架,它不能在 linux 上用 pip 进行安装。你需要下载和你的 linux 系统相匹配的 whl文件。

    因为 ImagePy 会编写一些配置信息,因此,在 linux 和 mac 系统上,可能会存在权限问题,所以请从 sudo 命令开始。如果使用 pip 安装,请按照下面的方法来添加用户参数:pipsinstall--user imagepy。

    如果在 anaconda 虚拟环境中安装 ImagePy,那么你可能会遇到这样的错误:这个程序需要屏幕访问权限。请使用 python 构建的框架来运行,并且只有在你已经登录到主显示器上时才这样做,如果遇到这个问题,请从 pythonw-m 镜像开始。

    基本操作:

    ImagePy 有一组非常丰富的特性,在这里,我们使用一个具体的示例向你展示 ImagePy 的这些特性。我们选择官方使用 scikit-image 来分割硬币的例子,因为这个例子简单而全面。

    打开图像

    菜单打开:file -> local samples -> coins,来打开 ImagePy 中的示例图像。ps:ImagePy 支持 bmp、jpg、png、gif、tif 和其他常用的文件格式。通过安装 ITK 插件,还可以读取/保存 dicom、nii 和其他格式的医学图像。如果安装了 opencv,还可以读/写 wmv、avi 和其他格式的视频。

    硬币

    过滤与分割

    选择一个复合滤波器对图像进行 sobel 梯度提取,然后使用上下阈值作为标记,最后在梯度图上进行 watersheds 分割。滤波和分割是图像处理工具包中的关键技术,也是最终测量成败的关键。还支持诸如自适应阈值、watersheds 等分割方法。

    Up And Down Watershed 分割

    掩模

    二值化

    菜单打开:process -> binary -> binary fill holes

    分割后得到的掩模图像比较干净,但仍存在一些空洞和杂质,干扰了计数和测量。ImagePy 支持二进制操作,如腐蚀、膨胀、开环和闭环,以及轮廓提取、中心轴提取和距离转换。

    填洞

    几何滤波

    菜单打开:analysis -> region analysis -> geometry filter

    ImagePy 可以根据面积、周长、拓扑、稳定性和离心率等参数进行几何滤波。还可以使用多个条件进行筛选。每个数字可以是正的(或者负的),这表示所保存的对象的相应参数分别大于(或者小于)相对值。保存的对象将被设置为前色,拒绝的对象将被设置为背景色。在这个演示中,背景颜色设置为 100,以便查看有哪些对象被过滤掉了。一旦对结果满意,就将背景色设置为 0。此外,ImagePy 还支持灰度密度滤波、颜色滤波、颜色聚类等功能。

    几何滤波

    几何分析

    菜单打开:process -> region analysis -> geometry analysis count,计算面积并分析参数。通过选择 cov 选项,ImagePy 使用通过协方差计算的椭圆拟合每个区域。这里计算前面步骤中所示的参数,如面积、周长、离心率和稳定性。事实上,前一步的滤波正是对这一步的准备。

    几何分析

    生成结果表(背景是黑色,以强调椭圆)

    按区域对表进行排序

    菜单打开:table -> statistic -> table sort by key

    选择主键作为区域,并选择 descend,表将按面积的降序排序。表是除了图像之外的另一项重要数据。从某种意义上来说,很多时候我们需要获得图像的相关信息,然后以表的形式对数据进行后续处理。ImagePy 支持表 I/O(xls、xlsx、csv)、过滤、切片、统计分析、排序等等(右键单击列标题来设置文本颜色、小数精度、行样式等)。

    图表

    菜单打开:table -> chart -> hist chart

    我们经常需要利用表格数据来绘制一个图表。这里,我们绘制了某个区域和其周边列的直方图。ImagePy 的表可以用于绘制常见的图表,如柱状图、饼图、直方图和散点图(基于 matplotlib)。该图表带有缩放、移动和其他功能,并可以保存为图像。

    直方图

    3D 表格

    菜单打开:kit3d -> viewer 3d -> 2d surface

    图像的表面重建。这幅图像显示了三种方式的重建结果,包括:sobel 梯度图、高阈值和低阈值。它显示了 Up And Down Watershed 是如何工作的:

    • 计算梯度;

      通过高低阈值标记硬币和背景;

      在 dem 图表上模拟上升 water 来形成分割线。

      ImagePy 可以完成图像的 3d 滤波、3d 轮廓构建、3d 拓扑分析、2d 表面重建和 3d 表面可视化。3d 视图可以被自由拖动、旋转,其结果可以保存为.stl 文件。

      3d 可视化

      宏记录和执行

      菜单打开:window -> develop tool suite

      宏记录器显示在开发工具面板中。我们已经手动完成了一个图像的分割。然而,用这种方式一下子处理超过 10 幅图像是非常乏味的。因此,假设在处理这些问题的时候,这些步骤具有高度的可重复性和健壮性,我们可以记录一个宏,以便将几个处理过程组合成一个单击程序。宏记录器与无线电记录器相似。打开后,它将记录操作的每个步骤。我们可以点击暂停按钮停止录制,也可以点击播放按钮开始录制。当宏运行时,所记录的命令将按照顺序执行,因此它具有简单性和可再现性。

      宏被保存到 .mc 文件中。将文件拖放到 ImagePy 底部的状态栏中,宏将自动执行。我们还可以将 .mc 文件复制到 ImagePy 文件目录下的菜单的子菜单中。当启动 ImagePy 时,宏文件将被解析为相应位置的菜单项。通过单击菜单,宏将被执行。

      宏记录

      Workflow

      宏是一系列预定义的命令。通过将一系列固定操作记录到宏中,可以提高工作效率。然而,宏缺乏灵活性。例如,有时主要步骤是固定的,但是参数调优需要人工参与。在这种情况下,workflow 就可以解决这个问题。ImagePy 中的 workflow 是可视化的流程图,分为两个层次:章节和部分。本章对应于 workflow 中的矩形区域,并且该部分是矩形区域中的按钮,也是命令,并附有图形说明。右边的消息窗口将显示相应的功能描述,同时鼠标悬停在上面。单击右上角的“详细文档”,查看整个过程的说明文档。

      workflow 实际上是用 MarkDown(一种标记语言)编写的,但是在编写时你需要遵守以下规范:

      Title
      =====

      ## Chapter1

      1.Section1
      some coment for section1 ...

      2....

      ## Chapter 2
      ...


      workflow

      滤波器插件

      在最后一节中,我们介绍了宏和 workflow,使用宏和 workflow 连接现有功能很方便。但有时我们需要创建新的特性。在本节中,我们将尝试向 ImagePy 添加一个新特性。ImagePy 可以轻松访问任何基于 numpy 的函数。让我们以 scikit-image 的 canny 操作符为例。

      示例代码如下:

      fromskimageimportfeature

      fromimagepy.core.engineimportFilter


      classPlugin( Filter ):

      title='Canny'
      note=[ 'all' , 'auto_msk' , 'auto_snap' , 'preview' ]
      para={ 'sigma' : 1.0 , 'low_threshold' : 10 , 'high_threshold' : 20 }

      view=[ ( float , 'sigma' , ( 0 , 10 ) , 1 , 'sigma' , 'pix' ) ,
      ( 'slide' , 'low_threshold' , ( 0, 50 ) , 4 , 'low_threshold' ) ,
      ('slide' , 'high_threshold' , ( 0 , 50 ) , 4 , 'high_threshold' ) ]


      defrun ( self , ips , snap , img , para=None ) :

      returnfeature.canny (snap , para[ 'sigma' ] , para[ 'low_threshold' ] ,
      para[ 'high_threshold' ] ,mask =ips.get_msk () )*255

      Canny 滤波器示例

      创建自己的滤波器的步骤:

      导入对应的库,通常是第三方库。

      继承 filter 类。

      标题将用作菜单的名称和参数对话框的标题,也用作宏记录的命令。

      在 note 中告诉框架它需要为你做什么,是否进行类型检查、是否支持选择、是否支持 UNDO 等等。

      para 是一个参数字典,包含函数所需的参数。

      为视图中的每个参数定义交互方法,框架将通过读取这些信息自动生成用于参数调优的对话框。

      编写主函数 run。img 是当前图像,para 是用户的输入参数。如果在 note 中设置了 auto_snap,snap 将是 img 的一个副本。我们可以处理这个副本,将结果存储在 img 中。如果函数不支持指定的输出,我们还可以返回结果,框架将帮助我们将结果复制到 img 并显示它。

      将文件保存为 xxx_plg.py,然后复制到菜单文件夹,重新启动 ImagePy。它将被作为菜单项加载。

      这个框架为我们做了什么?

      该框架以正式的方式把复杂的任务融合在一起,并帮助我们执行了:

      • 类型检查。如果当前图像类型不满足注释中的要求,则终止分析;

        根据参数,自动生成对话框以并检测输入的合法性;

        实时预览;

        自动 ROI 支持;

        撤消支持;

        并行化支持;

        图像堆栈支持;

        其它。

        如前所述,表是除了图像之外的另一种非常重要的数据类型。类似地,ImagePy 也支持表的扩展。这里我们给出在前面描述中使用的按键排序的示例。

        代码为:

        fromimagepy.core.engineimportTable

        importpandasaspd


        classPlugin( Table ) :
        title='Table Sort By Key'
        para={ 'major':None , 'minor' : None , 'descend' : False }

        view=[ ( 'field' , 'major' , 'major' , 'key' ) ,
        ( 'field' , 'minor' , 'minor' , 'key' ) ,
        ( bool , 'descend' , 'descend' ) ]


        defrun( self , tps , data , snap , para=None ) :
        by=[ para[ 'major' ] , para[ 'minor' ] ]
        data.sort_values(by =[ i for i in by if i ! = 'None' ],

        axis =0 ,ascending = notpara[ 'descend' ] ,inplace =True )

        表排序示例

        表是如何工作的

        与滤波器相同,表中还有标题(title)、注释(note)、参数(para)、视图(view)等参数。当插件运行时,框架将根据和视图生成一个对话框。在选择 para 之后,将它们与当前表一起传递给 run 函数处理。表数据是当前表中的一个 pandas.DataFrame 对象,存储在 tps 中。还可以从 tps 检索其他信息,例如 tps.rowmsk、tps.colmsk,以获得当前选定表的行和列掩码。

        其他类型的插件

        上述的滤波器和表是两个最重要的插件,但是 ImagePy 也支持一些其他类型的插件扩展。目前它支持的插件有九个,它们是:

        滤波器:主要用于图像处理;

        simple:类似于滤波器,但关注图像的整体特性,如 ROI 的操作、假彩色的操作、面积的测量、或整个图像的三维分析、可视化等;

        free:独立于图像的操作。用于打开图像、关闭软件等;

        tool:使用鼠标在图表上进行交互,并在工具栏上显示小图标,如画笔;

        table:对表进行操作,如统计分析、排序、绘图等;

        widget:显示在面板中的小部件,如右侧的导航栏、宏记录器等;

        markdown:标记语言,单击时,将弹出一个单独的窗口来显示文档;

        macros:用于串行固定操作过程的命令序列文件;

        workflow:结合宏和 markdown 创建交互式指导过程。

        动机与目标

        python 是一种简单、优雅、强大的语言,并且具有非常丰富的科学计算相关的第三方库。一方面,基于通用矩阵结构和相应的规则,基于 numpy 的 scipy、scikit-image、scikit-learning 等科学计算库给科学研究带来了极大的便利。另一方面,通过科学计算、图像处理,可以高效准确地解决生物学、材料科学等科学研究中越来越多的问题。

        然而,仍然有许多研究人员缺乏编程技巧。因此,让更多的研究人员能够使用基于 numpy 的科学计算库是至关重要的。ImagePy 使不是程序员研究人员也能使用计算机进行科学计算,因此他们不需要关注 UI 和交互设计,只需要关注算法本身,最终加速开源工具构建甚至商业产品的孵化。同时,这些工具可以让更多不善于编程的人获取、推广和普及图像处理、统计学等科学知识。

        来源:https://github.com/Image-Py/imagepy

        雷锋网

打开APP阅读更多精彩内容

天下网标王优化目录提交网站收录吗永州网站优化报价表政府网站优化山东省网站推广优化网站优化怎么这么难南通网站关键优化悦诗风吟网站有什么需要优化济宁网站seo优化推广新乡新站网站优化公司公司网站优化公司有哪些如何优化网站关键字企业网站关键词优化工具网站标题优化用什么符号好电子商务网站优化方案信丰网站百度优化南皮网站优化价格苏州优化网站数据中山整站网站优化无锡云林网站优化民权个性化网站优化推广多少钱长沙整站网站推广优化优化网站的方案书籍网站优化关键词排名公司镇江市网站关键词优化哪家好湖北省网站关键词优化服务宝山区网站优化网站优化排名易下拉测试闸北网站优化黄冈品牌网站优化公司如何进行网站内部优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化