Numpy и 16-битный PGM

Что такое эффективный и понятный способ чтения 16-битных изображений PGM в Python с помощью numpy?

Я не могу использовать PIL для загрузки 16-битных изображений PGMиз-за ошибки PIL, Я могу прочитать в шапке со следующим кодом:

dt = np.dtype([('type', 'a2'),
               ('space_0', 'a1', ),
               ('x', 'a3', ),
               ('space_1', 'a1', ),
               ('y', 'a3', ),
               ('space_2', 'a1', ),
               ('maxval', 'a5')])
header = np.fromfile( 'img.pgm', dtype=dt )
print header

Это печатает правильные данные:('P5', ' ', '640', ' ', '480', ' ', '65535') Но у меня такое ощущение, что это не совсем лучший способ. И кроме того, у меня возникли проблемы, как выяснить, как читать в следующих данных x на y (в данном случае 640x480) на 16-битной со смещениемsize(header).

РЕДАКТИРОВАТЬ: ИЗОБРАЖЕНИЕ ДОБАВЛЕНО

MATLAB код для чтения и отображения изображения:

I = imread('foo.pgm'); 
imagesc(I);

И выглядит так:

Ответы на вопрос(5)

Ваш ответ на вопрос