如何在Python中读取16Uint图像

2024-09-28 22:02:58 发布

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

我有一个医学16无符号jpeg图像,我需要在python中阅读它。 这些图像只能用mathlab读取,对于我的项目,我需要读取它的实际像素值,并需要在这些值中进行一些数学运算。 您可以在下面的链接中找到该图像

https://drive.google.com/file/d/0B4l5GiM7kBXraDEyMXdseENfUlE/edit?usp=sharing

当我被要求在mathlab中获取图像信息时,下面的描述就来了。在

i = imfinfo('di.jpg')

i = 

       Filename: [1x56 char]
    FileModDate: '14-Jul-2014 15:22:13'
       FileSize: 1044064
         Format: 'jpg'
  FormatVersion: ''
          Width: 1024
         Height: 1024
       BitDepth: 16
      ColorType: 'grayscale'
FormatSignature: ''
NumberOfSamples: 1
   CodingMethod: 'Huffman'
  CodingProcess: 'Lossless'
        Comment: {'Created by AccuSoft Corp.'}

我已经使用matplotlib、opencv、scikitImage、scipy、medpy、PIL库来阅读python中的图像。 我看不懂这些类型的图像。在

当我在python中使用时,出现以下错误 代码: 导入图像 图像=图像.打开('日本邮政') 打印(图像)

^{pr2}$

请帮忙解决我的问题


Tags: 项目https图像com链接google符号数学
1条回答
网友
1楼 · 发布于 2024-09-28 22:02:58

这似乎是How we can read 16 un signed integer(16 uint) jpeg files in python的副本

我在https://drive.google.com/file/d/0B4l5GiM7kBXraDEyMXdseENfUlE/edit?usp=sharing上看过你的照片。很明显,这是一个16位灰度无损的JPEG图像,采用哈夫曼编码。然而,对于无损编码,至少有:

  • JPEG无损(稀有、古老)
  • JPEG-LS(相当罕见,不是很老)
  • JPEG2000(更新)

有关这些的详细信息,请参见:http://en.wikipedia.org/wiki/Lossless_JPEG

cel在其注释中提到的GDCM库使用CharLS库来读取JPEG-LS。这个库确实有Python绑定,但不幸的是拒绝加载图像,因为它不是JPEG-LS文件。(但是,YMMV,见下面malat的评论。)

我还试图查询ImageMagickidentify,它提供了更多信息:

identify.im6: Unsupported JPEG process: SOF type 0xc3 `/tmp/di.jpg' @ error/jpeg.c/JPEGErrorHandler/316.

现在SOF类型在JPEG中很重要。错误消息表明,有问题的文件是一个“JPEG无损”文件。(这可能是因为它采用了哈夫曼编码)令人讨厌的是,在这种类型的文件中使用的编码方案与标准JPEG完全不同,而且标准JPEG库不支持它。在

似乎至少有两个开源库支持该文件格式:

我尝试了后者,它的命令行工具确实识别了该文件并将其解码为更有用的文件(灰度PPM文件)。在

所以,这至少提供了一条路线。您必须编译并安装库,然后为其创建必要的Python绑定。或者,您可以将命令行工具用作外部转换工具,并使用subprocess来运行它们。最好的方法取决于你的平台。在

相关问题 更多 >