2015-10-05 68 views
3

我有一個沒有頭文件的X光照片.img文件。然而,誰發佈的文件,研究人員給它閱讀.img沒有標題的醫學圖像在Python中

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

你知道確切的格式?我知道matplotlib與png文件很好。 檢查出http://matplotlib.org/users/image_tutorial.html – zsoobhan

+0

這個問題是類似於你的:[閱讀img醫學圖像沒有標題在Matlab](http://stackoverflow.com/questions/23141204/read-img - 醫療圖像,而無需頭合MATLAB)。它只是在Python中進行翻譯。你能給我一個你想閱讀的圖像的超鏈接嗎?我會用一個可以完成這個工作的Python代碼發佈一個答案。謝謝。 – Flabetvibes

+0

@Baptiste請在下面找到以下文件的鏈接: https://www.dropbox.com/s/qcs4u0o6psmdhhb/JPCLN146.IMG?dl=0 – Rahul

回答

5

我通過下載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它看起來像這樣:

First image of the JSRT database

我希望我已經回答了你的問題。 快樂編碼!

1

爲防萬一別人看着這些圖像,想要批量轉換或不需要任何編程知識...您可以在終端的命令行中很容易地將它們轉換爲ImageMagick(這是安裝在大多數Linux發行版,無論如何,和可用於OS X和Windows)是這樣的:

convert -size 2048x2048 -depth 16 -endian MSB -normalize gray:JPCLN130.IMG -compress lzw result.tif 

這使得它們成爲可以在任何應用程序中查看壓縮的16位TIF文件。因爲我指定了LZW壓縮,所以它們也佔用了磁盤空間的一半而沒有質量損失。

同樣,如果你想16位PNG文件,你可以使用:

convert -size 2048x2048 -depth 16 -endian MSB -normalize gray:JPCLN130.IMG result.png 

enter image description here