Python:在PIL和/或pygame中操作16位的tiff图像:以某种方式转换为8位?

2024-06-08 17:11:49 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here大家好

我正在研究一个程序,它可以从照片中确定酵母的平均菌落大小,并且它可以很好地处理我测试过的.bmp图像。程序使用pygame,以后可能会使用PIL。

然而,我们实验室使用的相机/软件组合只能保存16位灰度tiff,而pygame似乎无法识别16位tiff,只有8位。在过去的几个小时里,我一直在阅读一些简单的方法来解决这个问题,但是即使是Python图像库似乎也不能处理16位的文件。

import Image

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

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

有人知道使用免费软件或纯python解决这个问题的简单方法吗?我对图像了解不多:位深度操作超出了我的范围。但我很确定我不需要全部16位,而且可能只有8位左右有真正的数据。事实上,我曾经使用ImageMagick尝试转换它们,结果得到了一个全白色的图像:我后来读到应该使用命令“-auto levels”,因为数据实际上并不包含16位范围。

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

p.S.:有人对如何使我的Python程序易于非程序员安装有什么建议吗?例如,有没有办法将它与Python和pygame捆绑在一起,这样它就只需要安装一次呢?Windows和Mac都能做到吗?谢谢您。

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

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

这是什么意思?我该怎么做?


Tags: 数据方法图像image程序pil软件酵母
3条回答

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

1)Python的16位图像数据管理-我通常使用GDAL+Numpy。这对于您的需求来说可能有点太多了,您可以使用PIL+Numpy代替。

2)发布工程Python应用程序会变得混乱。取决于你的应用程序有多复杂,你可以摆脱py2debpy2apppy2exe。学习distutils也会有帮助。

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

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

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

关于16位tiff问题:

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

现在对于未指定部分的问题:在进行图像分析时,您希望在图像操作中尽可能长时间地保持最高的动态范围-这样会丢失较少的信息。正如您可能知道或可能不知道的那样,PIL为您提供了许多过滤器/变换,这些过滤器/变换将允许您增强图像的对比度,甚至消除亮度,或执行边缘检测。您可能要考虑的一个未来方向是将原始图像(当然可以缩放到8位)显示在经过边缘检测处理的缩放图像的一侧。

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

相关问题 更多 >