我有一个没有头文件的放射线照片.img文件。但是,已发布该文件的研究人员已经提供了相关信息
High resolution (2048 × 2048 matrix size, 0.175mm pixel size)
Wide density range (12-bit, 4096 gray scale)
Universal image format (no header, big-endian raw data)
我正在尝试使用Python打开文件,但无法执行此操作。有人可以建议任何方法来阅读这个图像文件吗?
答案 0 :(得分:6)
我通过下载JSRT database找到了一些与您相同的放射线图像。我在此数据库的第一张图片上测试了以下代码:JPCLN001.IMG。
import matplotlib.pyplot as plt
import numpy as np
# Parameters.
input_filename = "JPCLN001.IMG"
shape = (2048, 2048) # matrix size
dtype = np.dtype('>u2') # big-endian unsigned integer (16bit)
output_filename = "JPCLN001.PNG"
# Reading.
fid = open(input_filename, 'rb')
data = np.fromfile(fid, dtype)
image = data.reshape(shape)
# Display.
plt.imshow(image, cmap = "gray")
plt.savefig(output_filename)
plt.show()
它生成一个输出文件JPCLN001.PNG,如下所示:
我希望我已经回答了你的问题。 快乐的编码!
答案 1 :(得分:1)
以防万一其他人正在查看这些图片并想要批量转换它们,或者想要在Python之外转换它们而不需要任何编程知识......你可以在终端的命令行中轻松转换它们{{1 (无论如何,它安装在大多数Linux发行版上,可用于OS X和Windows),如下所示:
ImageMagick
使它们成为压缩的16位TIF文件,可以在任何应用程序中查看。然后,由于我指定了convert -size 2048x2048 -depth 16 -endian MSB -normalize gray:JPCLN130.IMG -compress lzw result.tif
压缩,它们还占用了磁盘空间的一半而没有质量损失。
同样,如果您需要16位LZW
文件,可以使用:
PNG