ImagePy

ImagePy 开源图像处理框架
YXDragon 由 YXDragon 发表 @

ImagePy 是基于Python的图像处理框架

Github:https://github.com/Image-Py/imagepy

ImagePy 基于Python开发,可以在Windows,Mac,Linux上运行,用户需要先安装Python,然后安装必要的扩展模块(Numpy, Scipy, PIL, Numba, shapely, wxpython-phoenix) 以及一些非必需,但推荐安装的 scikit-image, matplotlib 等。这些库在Mac和Linux下多可以用pip安装,而在有些库需要下载编译好的whl进行安装。

安装

如果您是程序员,那么根据以上提示应该能够自己搭建环境并运行,如果您不是程序员,也不用担心,我们为你准备好了一键安装包,这里主要照顾windows用户。

1. 安装包下载

ImagePy 是基于 Python 的,我们首先要安装Python及相关模块。
32位Python+相关扩展模块下载
64位Python+相关扩展模块下载

2. 安装python

运行Python3.6,注意要勾上最下方的 “Add Python 3.6 to PATH”
其他一切默认,直到最后,Python安装完成。

3 安装扩展模块

运行 setup.bat,安装需要的扩展模块,等待自动安装,当看到Everythin is OK!则环境安装成功。

4 下载ImagePy

点击下载ImagePy,(注意会定期更新)解压后双击ImagePy.bat,运行即可.

Luzef 由 Luzef 发表 @
由于学python不是很久,所以是靠自己搜索安装好的,可能还是会有一点问题吧

一.配置环境
打开http://www.imagepy.org/downloads/,然后可以看到mac的安装
但是由于mac系统自带的python是2.7的,所以pip不能直接使用,而且系统自带的python最好不要去用,所以我安装了Anaconda,百度一下应该直接在终端安装python3,而且python3是自带pip的,不过我没有去试
然后就按照官网的步骤,打开终端
输入
pip install numpy
pip install scipy
pip install shapely
pip install wxpython
不要直接复制$python -m...,分四次输入,这样会有错误,这样就配置好环境了。

二.下载imagepy
也是同样的网站,拉到最底下下载,下载完成后,cd到imagepy文件夹中
具体操作就是
1.打开终端输入cd +imagepy的路径
或者
2.在下载的文件夹中找到imagepy,然后输入cd ,把imagepy这个文件夹拖到cd后面
然后在终端中输入python __main__.py就可以了

三.小问题
1.UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 24: invalid start byte
这个问题是因为imagepy中语言包造成的,只要把imagepy-master/imagepy/data/language中的文件删掉在打开就可以
2.This program needs access to the screen. Please run with a Framework build of python, and only when you are logged in on the main display of your Mac.
   因为我用的是Anaconda好像python用不了,然后咨询后发现需要用pythonw __main__.py就可以了
YXDragon 由 YXDragon 发表 @ 基础教程
这里我们介绍一些扩展应用,即对ImagePy做一定程度上的功能扩充。

查看目录树

ImagePy是一个插件系统,所有的功能都是以插件方式进行组织的,我们可以通过几个工具来查看组织结构。这些功能在 Plugins > Manager 下,点击插件,右边的窗口可以展示插件具体信息,双击可以直接执行,右侧sourcecode蓝色按钮,点击可以查看源代码,而在列表视图中,输入可以查找需要的功能。



添加快捷键

对ImagePy做功能改变,最简单的一种改变就是为已有功能设置快捷键,快捷键按设置功能在 Plugins > Manager > Shotcut Manager 中,设置方法很简单,找到你需要的功能,然后按下你希望的快捷键就好了。



录制宏

宏是按照顺序执行的一个命令序列,每条命令记录了使用的插件,以及插件运行的参数。这样的命令序列存储成一个mc为后缀的文件,就是宏。我们可以打开ImagePy > Plugins > Macros > Recorder 进行宏录制。



宏里面如果有参数,执行期间将不会弹出对话框,直接使用宏里面指定的参数,而如果参数写None,则表示在宏运行期间仍会弹出对话框,交互确定参数。把宏文件拷贝到imagepy的menus任意子菜单下,重启时,会自动被映射成一个菜单项(其实在ImagePy中宏也是一类插件)。

那么有时候我们不仅希望放到菜单里,常用功能如果能放在工具栏中就更好了,下面我们就来实现,并且也很简单。我们要做的是把mc文件拷贝到tools文件夹,并且配一个同名的16 x 16 的gif图标,重启,我们观察HS被加载到了工具栏。



如果我们想给某个已有功能添加到工具栏,那么就要做一个单条命令的宏,参数给None,然后准备一个图标,拷贝到tools的子文件夹下。

添加插件

通过上面的一些内容,我们应该可以体会到插件系统的本质,那么增加功能,最直接的方式就是增加插件。其实我们要做的很简单,就是找到合适的插件,把插件拷贝到menus或 tools文件夹下。我们以 https://github.com/Image-Py/opencv-plgs 项目为例,安装OpenCV插件。



对于ImageJ,已经建立了一个很强的生态系统,第三方插件的数量非常多,而ImagePy暂时还没有太多的插件,刚才的OpenCV插件其实只是我们写的演示项目,但是ImagePy背靠诸多强大的开源库,因而插件开发的门槛比ImageJ低很多,效率高很多,相信以后会渐渐形成自己的生态系统。

编写插件

以上介绍的方法都可以一定程度上增加ImagePy的功能,而这里介绍的编写插件给我们最大的自由来自己编写一个定制功能。与之前的方法都不同的是你需要编程,也就是懂得python。这里介绍一个最简单的例子,更多内容会在开发者专区中讨论。

# -*- coding: utf-8 -*
from skimage import feature
from core.engines import Filter
class Plugin(Filter):
    title = 'Canny'
    note = ['all', 'auto_msk', 'auto_snap', 'preview']
   
    para = {'sigma':1.0, 'low_threshold':10, 'high_threshold':20}
   
    #parameter
    view = [(float, (0,10), 1,  'sigma', 'sigma', 'pix'),
            ('slide',(0,30), 'low_threshold', 'low_threshold',''),
            ('slide',(0,30), 'high_threshold', 'high_threshold','')]
    #process
    def run(self, ips, snap, img, para = None):
        return feature.canny(snap, sigma=para['sigma'], low_threshold=para[
            'low_threshold'], high_threshold=para['high_threshold'], mask=ips.get_msk())*255




简单介绍:
1.集成Filter
2.Title = ‘Canny’
3.Note:配置行为,例如支持那些类型,是否支持撤销,是否支持选区等。
4.Para:插件需要的参数
5.View:指定每个参数的交互方式
6.Run:调用方法,处理图像

短短12行代码就完成了边缘插件,是不是很令人兴奋?
YXDragon 由 YXDragon 发表 @ 基础教程

打开,保存图像

ImagePy 支持BMP, JPG, PNG, TIF, GIF五种常规格式,以及Raw原始数据格式,另外可以方便地扩展出dicom等行业内专用格式。
 


可以 File > Open 对话框选择图像,可以在Open Url对话框内输入连接,也可以直接拖动本地图像或网络图像到状态栏上释放。

File > Save 可以保存为ImagePy所支持的格式
注意:JPG是Photoshop常用的数据格式,但是图像分析往往要求精度,而JPG压缩算法会改变图像内容,因而如果是需要后续分析的数据尽可能保存为PNG。

像素操作

ImagePy可以进行亮度,对比度的调整,针对彩色图像可以调整色彩平衡,能够进行图像的加减乘除等常规运算,可以做Garmma矫正。
ImagePy的像素运算主要位于Image > Adjust菜单以及Process > Math 菜单。



假彩色

也称为伪彩,是说给原本灰度信息映射成一组彩色rgb值,类似彩虹的色谱,假彩色并不增加图像的信息量,却可以增强视觉效果。
ImagePy 的假彩色在Image > Lookup Table下,配有常用的红色系,青色系,彩虹系等索引。



滤波器

像素运算是单个像素的映射,而滤波器是临近像素之间的运算,ImagePy支持高斯,均值,拉普拉斯等常见的高通,低通滤波器,可以进行梯度滤波,USM锐化,差分高斯滤波等,也有大量的组合特征算子,如边缘算子,角点算子。

ImagePy中的滤波器分布很分散,经典滤波器集中在 Process > Filters 下,而 Process > Features 下主要是边缘,角点算子 Process > Hydrology 下有等高线,分水岭等基于高程的算法。



选区

选区,也叫ROI,感兴趣区域,主要作用是用来指明要分析,或者进行滤波的区域,滤波器会只作用在roi内部。
 


选区的绘制 选区由工具栏上的一组选区工具创建,以下是ImagePy支持的选区类型展示。



点:单击左键创建,如果要创建多个点,需要按住Shift键。
线段:左键单击创建一个节点,可以连续创建多个,右键结束一条多段线。如果要创建多个,需要按住Shift键。
自由曲线:按住左键绘制,释放结束绘制,如需创建多条,需按住Shift键;
矩形工具:点击,拖动,释放,创建一个矩形区域。
椭圆工具:点击,拖动,释放,创建一个椭圆区域。
多边形工具:类似与线段工具,只是右键结束时自动与起点构成了一个多边形。
自由多边形:点击,拖动,释放,轨迹,自动形成一个多边形。

注:所有点,线工具可以按住Shift来进行叠加,而对于面,可以通过Shift叠加,同时也可以按住ctrl键进行扣除。

选区的运算: 除此之外,选区是可以进行运算的,比如扩张,收缩,凸包等,这些功能集中在Analysis菜单。
 

 
选区管理器 可以用于将选区存入管理器,在合适的时候重新加载,管理器可以实现选区的重复利用,以及在不同图像之间的共享。并且可以实现以与当前选区交集,并集,补集的方式载入。



图像栈

图像栈即具有相同尺寸的一组图像,ImagePy支持序列导入,同时各种处理过程也会自动批量完成。

图像栈导入, File > Import > Image Sequence



图像栈可以以三视图展示,可以添加,删除序列,当完成一个滤波操作,ImagePy会提示你是否将相同的滤波器作用于图像栈的每一层。

注:图像栈分为两种,连续序列和离散序列,他们各有优势,离散序列可以动态随时添加,删除片,而连续序列可以做三视图展示,可以做一些三维分析。

图像栈的保存:Image > Export > Image Sequence

区域分析

区域分析是一个简单但非常有用的功能,利用区域分析,细胞计数,粒径分析等都是基于区域分析的,ImagePy中的区域分析在 Analysis > Region Analysis > Geometry Analysis 中,此目录下还有灰度分析,统计,以及根据指标过滤的功能。



测量与比例尺

其实以上的区域分析的例子,就属于测量功能,此外还有一些图上的交互测量工具,而测量中一个重要的概念就是比例尺,下面分别介绍。

测量工具 ImagePy可以测量点,线,面,角度,具体操作与选区工具类似,左键创建,右键结束,Shift叠加。



值得一提的是,我们现在测量的单位是像素,而怎样才能得到图上实际距离呢?这就需要比例尺的概念,比例尺的计算,需要借助标尺进行,也就是图上标记的已知距离。

设定比例尺 抑制距离图上标记200um,我们用工具测量有36。33个像素,计算合5.95um每像素,然后用Image > Scale And Unit 工具进行比例尺设定。设定好图像下方会出现比例尺信息。
 


比例尺信息设定之后,所有的区域测量,工具测量都会换算成实际距离。

覆盖物与背景

之前我们讨论的内容,没有区分覆盖物,图像,背景,这里补充一下,ImagePy中图像是主体信息,而覆盖物是遮罩在图像上的标记层,用于展示分析结果等信息。而背景类似图层的概念,衬托在图像后面,而任何操作(除了剪切图像)不会影响覆盖物。

此前处理的区域id,测角,测距,其实都是覆盖物,这些覆盖物仅仅用于标记图像信息,并不改变图像,也不影响图像处理结果(ROI不是覆盖物,因为会影响图像处理结果)



背景 一些专业绘图软件都有图层的概念,而ImagePy重点不在于绘图,并不支持多图层,但提供了一个类似的功能,可以设置背景,并且可以选择背景与前景的展示方式。



我们设置纸张为背景,在前景上任意涂抹,之后重新擦掉,就有可以看见前景了,并且可以根据需要设置前景背景的混合方式,也可使适当设置假彩色以达到需要的展示效果。这对于一些不得不手工标记的情况,是非常有效的,ipp,imagej等软件解决手工标记,必须要用roi进行勾绘,结果很难保存,并且出错很难修正。
另外,对于一些分割问题,背景可以让我们直观感受分割结果,同时不改变图像内容。

我们设置纸张为背景,在前景上任意涂抹,之后重新擦掉,就有可以看见前景了,并且可以根据需要设置前景背景的混合方式,也可使适当设置假彩色以达到需要的展示效果。这对于一些不得不手工标记的情况,是非常有效的,ipp,imagej等软件解决手工标记,必须要用roi进行勾绘,结果很难保存,并且出错很难修正。
另外,对于一些分割问题,背景可以让我们直观感受分割结果,同时不改变图像内容。

以上是ImagePy的一个基础操作介绍,希望这篇文档会对读者有一定的帮助,使用过程中遇到的任何疑问,困难欢迎到问答区提问。
YXDragon 由 YXDragon 发表 @ 基础教程

界面构成


ImagePy主界面,分为标题栏,菜单栏,工具栏,状态栏几部分

菜单栏:

File 打开,保存图像,批量导入,保存图像栈
Edite 剪切,复制,裁剪,描边,填充
Image 类型转换,亮度,对比度,色彩转换,索引颜色,几何变换,图像栈操作,画布大小
Process 数学运算,滤波器,形态学,两附图之间的数学运算
Selection 选区的操作,矢量交,并,补运算,缓冲区生成,选区管理
Analysis 区域标记,像素统计,骨架分析等
Kit3D 三维工具箱,三维重建,体积,表面积测量
Plugins 宏录制,插件浏览,插件模糊查询,扩展插件
Window 窗口管理
Help 主题帮助

工具栏:

需要通过用户交互,比如选区,绘图等

状态栏:

展示一些与当前操作相关的信息,当进行一些耗时工作时,会启用进度条

功能概览

ImagePy是一个通用,可扩展图像处理框架,可以对图像进行数学运算,直方图调整,像素统计,可以进行滤波器运算,形态学运算,可以做区域分析,可以做三维体积,表面积计算,三维可视化等工作,支持8位,16位,RGB彩色,以及浮点图像,支持批处理,可以设置伪彩,支持多图层(两个)。

新帖子
feeds