4

在此处输入图像描述大家好,

我正在开发一个程序,该程序可以从照片中确定酵母的平均菌落大小,并且它与我测试过的 .bmp 图像配合得很好。该程序使用 pygame,以后可能会使用 PIL。

但是,我们在实验室中使用的相机/软件组合只能保存 16 位灰度 tiff,而 pygame 似乎无法识别 16 位 tiff,只能识别 8 位。在过去的几个小时里,我一直在阅读有关此问题的简单方法,但即使是 Python Imaging Library 似乎也无法使用 16 位 .tiff,我已经尝试过并且我得到“IOError:无法识别图像文件”。

import Image

img = Image.open("01 WT mm.tif")

我的最终目标是让这个程序对用户友好且易于安装,因此我试图避免添加额外的模块或要求人们安装 ImageMagick 或其他东西。

有谁知道使用免费软件或纯 python 解决此问题的简单方法?我对图像了解不多:位深度操作超出了我的范围。但我相当确定我不需要所有 16 位,而且可能只有大约 8 位实际上有真实数据。事实上,我曾经使用 ImageMagick 尝试转换它们,这导致了一个全白的图像:我已经读过我应该使用命令“-auto-levels”,因为数据实际上并不包含 16-位范围。

我非常感谢您的帮助,并为我缺乏知识而道歉。

PS:有没有人有关于如何使我的 Python 程序易于非程序员安装的任何提示?例如,有没有办法以某种方式将它与 Python 和 pygame 捆绑在一起,所以它只是一个安装?Windows 和 Mac 都可以这样做吗?谢谢你。

编辑:我试图在 GIMP 中打开它,并得到 3 个错误:

1) 字段“DateTime”的计数不正确(27,预期为 20);标记修剪 2) 抱歉,无法处理 12 位样本的图像 3) 不支持的布局,没有 RGBA 加载器

这是什么意思,我该如何适应?

4

3 回答 3

2

如果您在 Windows 系统上,py2exe 是打包应用程序的方法。

关于 16bit tiff 问题:

此示例http://ubuntuforums.org/showthread.php?t=1483265展示了如何使用 PIL 转换为显示。

现在对于未提出的部分问题:在进行图像分析时,您希望在图像处理中尽可能长时间地保持最高动态范围 - 这样您会丢失更少的信息。您可能知道也可能不知道,PIL 为您提供了许多过滤器/变换,它们可以让您增强图像的对比度、平衡光照水平或执行边缘检测。您可能要考虑的未来方向是在经过边缘检测处理的缩放图像旁边显示原始图像(当然缩放到 8 位)。

查看http://code.google.com/p/pyimp/wiki/screenshots以获取更多示例和示例代码。

于 2011-04-24T14:39:38.550 回答
2

我会看一下pylibtiff,它有一个纯 python tiff 阅读器。

对于捆绑,最好的选择可能是 py2exe 和 py2app。

于 2011-04-24T12:33:35.237 回答
1

这实际上是一个两部分的问题:

1) Python 的 16 位图像数据处理——我通常使用 GDAL + Numpy。这对于您的要求可能有点过多,您可以改用 PIL + Numpy。

2) 发布工程 Python 应用程序可能会变得混乱。根据您的应用程序的复杂程度,您可以使用py2debpy2apppy2exe。学习 distutils 也会有所帮助。

于 2011-04-24T12:40:53.513 回答