常见问题解答

我怎么才能把Mahotas和水蟒一起装上呢?

如果您正在使用 conda ,您可以从以下位置安装mahotas conda-forge 使用以下命令:

conda config --add channels conda-forge
conda install mahotas

谁会用毛霍塔?

2016年6月,有 34 papers 引用了 mahotas paper

为什么你不简单地为 scipy.ndimagescikits.image

当我开始这个项目时(尽管它不叫mahotas,它更像是一个半有组织的例程的集合,而不是一个项目),没有 scikits.image

与此同时,所有这些项目的内部理念都截然不同。 ndimage 是老式的Scipy,用C语言写,带有宏。 scikits.image 广泛使用Cython,而 mahotas 使用C++和模板。我不想使用Cython,因为我发现它还没有建立好,而且当时不能用它来编写在多种类型上运行的函数(就像使用C++模板一样)。Scipy社区不想使用C++。

另一方面,我从ndimage获取代码,并将其移植到C++中用于mahotas。在这个过程中,我觉得它的代码要干净得多(因为您可以使用RAII、异常和模板),我希望保持这种方式。

无论如何,我们都使用相同的数据格式:NumPy数组。很容易(真的很简单)一起使用所有的包,并从每个包中获取您想要的任何功能。所有的包都使用基于函数的接口,这使得混合和匹配变得很容易。

我在计算16位图像上的Haralick特征时内存不足。它不受支持吗?

是的,它是受支持的,但您的计算机可能不够大,无法进行计算。为了计算Haralick特征,首先计算共生矩阵。这个矩阵的大小是 (ngrey, ngrey) 哪里 ngrey 是输入中最大的灰度值。因此,如果您的图像具有非常高的动态范围(即, ngrey 较大),则可能没有计算共生矩阵的资源。

这通常是一个好主意,对比拉伸你的图像。例如,使用以下代码将图像拉伸到0-255范围:

im_stretched = mh.stretch(im)
features = mh.features.haralic(im_stretched)

动态范围不太大的16位图像(例如,一些成像设备只能真正产生12位,因此 ngrey < 4096 )都不是问题。

本地二进制模式的参数是什么?

阅读上的文档 local binary patterns

我在一份科学出版物中使用了mahotas,有引用吗?

如果您在科学出版物中使用mahotas,请引用:

科埃略,L.P.,2013年。Mahotas:用于可编写脚本的计算机视觉的开源软件。《开放研究软件杂志》1(1),DOI:https://dx.doi.org/10.5334/jors.ac

BibTeX格式:

@article{coelho:mahotas,
    title = {Mahotas: Open source software for scriptable computer vision},
    author = {Luis Pedro Coelho},
    journal = {Journal of Open Research Software},
    year = {2013},
    volume = {1},
    doi = {10.5334/jors.ac},
    url = {https://dx.doi.org/10.5334/jors.ac}
}

可在Python中使用以下命令进行访问 mahotas.citation()

ImRead找不到FreeImage

Mahotas本身不具备读取图像的功能(请参阅 I/O section

功能,如 imread 只是两个后端之一的包装器:

  1. Mahotas-imad(即,https://pypi.python.org/pypi/imread)

  2. FreeImage

因此,您需要安装上面的一个包。Mahotas一度支持包装matplotlib,但他们的图像加载方法并不可靠,因为它本身使用了其他包。因此,根据您安装的内容,生成的映像可能会有所不同。

如果您在Windows上运行,您可能希望尝试 Christoph Gohlke's packages