Member 13607450 Ответов: 1

Получение информации о пикселях в оттенках серого из файла png


Я построил нейронную сеть, которая распознает рукописные цифры в java. Эта нейронная сеть принимает массив значений оттенков серого для каждого пикселя изображения. Я уже тренировал сеть, используя базу данных mnist рукописных цифр. Я хотел бы запросить его на основе изображения, которое я сделал, которое сохраняется в виде файла png. Как получить информацию в оттенках серого для каждого пикселя, чтобы я мог правильно взаимодействовать с моей сетью? Каждое изображение имеет размер 28x28, поэтому каждый массив, считываемый в качестве входных данных, содержит 784 элемента.

Вот пример файла, который оценивается как 7:

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,185,159,151,60,36,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,254,254,254,254,241,198,198,198,198,198,198,198,198,170,52,0,0,0,0,0,0,0,0,0,0,0,0,67,114,72,114,163,227,254,225,254,254,254,250,229,254,254,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,66,14,67,67,67,59,21,236,254,106,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,253,209,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,233,255,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,254,238,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,249,254,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,187,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,205,248,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,254,182,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,251,240,57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,221,254,166,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,203,254,219,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,254,254,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,224,254,115,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,133,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,242,254,254,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,254,219,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,254,207,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0


Что я уже пробовал:

Исследование и публикация на stackoverflow.

Rick York

Мне трудно определить, чего ты на самом деле хочешь. У меня есть к вам несколько вопросов: есть ли в файле PNG значения RGB или только значения шкалы серого? Кажется, у него есть один байт, серая шкала. Следующий вопрос заключается в том, какими вы хотите видеть данные : однобайтовыми значениями или значениями RGB? Соотношение между ними заключается в том, что пиксель оттенков серого RGB имеет одинаковое значение для каждого из каналов R, G и B.
Вы хотите прочитать файл PNG и извлечь из него пиксели? Если это то, что вы хотите, то вам придется найти библиотеку, которая может прочитать файл и предоставить вам доступ к пикселям в виде массива байтов. Если бы это был проект на языке C++, то я бы указал вам на библиотеку CXImage, которую можно найти на этом сайте. Поскольку это не так, я не знаю ни одного, который будет работать с Java.

1 Ответов

Рейтинг:
1

E.F. Nijboer

Получение значения серой шкалы из rgb-пикселя-это просто получение среднего значения всех 3.
Например, пиксель с цветом:
Красный=25, Зеленый=45, Синий=50

Среднее значение равно (25+45+50) = 120, 120 / 3 = 40. Таким образом, оттенки серого пикселя равны 40 (в масштабе от 0 до 255). Повторите это для каждого пикселя.

Надеюсь, это вам поможет.

Удачи вам!