2010-09-13 3 views
3

У меня есть сотни 128 x 128 .pgm файлов с некоторыми формами на них, и я думаю, что их цветовая гамма составляет 255 (не уверенный в этом, хотя было бы неплохо, если бы решение могло также принять это во внимание), и мне нужно извлечь эти цвета для обработки изображений. Таким образом, я хотел бы получить матрицу размером 128 x 128 с каждым элементом, имеющим значение от 0 до 255, при условии 256 цветов.Самый быстрый способ извлечь биты цветов в изображении .pgm?

Что касается языка, то что-либо в Python/Java/C# будет делать, желательно в этом порядке. Я могу использовать либо Windows, либо Linux, поэтому эксклюзивные библиотеки не являются проблемой.

ответ

1

Что касается решения python, я считаю, что PIL поддерживает файлы .pgm. В этом случае (используя numpy в качестве контейнера массива, но эта часть является необязательной):

(Изменить: перечитайте свой вопрос и поняли, что вам особенно нужны оттенки серого, а не RGB ... Который я должен был реализовать из .pgm формат, в любом случае ...)

import Image 
import numpy as np 

im = Image.open('test.pgm') 

# Convert to grayscale (single 8-bit band), if it's not already... 
im = im.convert('L') 

# "data" is a uint8 (0-255) numpy array... 
data = np.asarray(im) 
0

P ortable G ray M ap формат настолько тривиально, что я хотел бы рассмотреть дело чести, чтобы написать парсер для файлов самостоятельно МПГ в любом языке, что вам нужно. Каждое значение, считанное из файла PGM, будет соответствовать байту RGB

255*Value/Max_Value
.

удачи.