2015-10-05 2 views
3

У меня есть файл рентгенограммы .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

На всякий случай кто-то еще смотрит на эти изображения и хочет их преобразовать в пакеты или за пределы Python и без каких-либо знаний о программировании ... вы можете легко их преобразовать в командной строке в Terminal с помощью 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

Смежные вопросы