1

Я хочу взять файл изображения (например, TIFF) и преобразовать его в электронную таблицу (CSV, или что-то еще), так что каждый пиксель становится ячейкой с числовым значением для этого пикселя.

Я гуглил это, и все пытаются продать мне программное обеспечение для распознавания текста, это, конечно, не то, что я хочу.

Я заранее отредактирую изображение, поэтому могу преобразовать его в любой необходимый формат и обрезать до приемлемого размера.

Я заинтересован в основном в оттенках серого и могу сделать немного цвета, который мне понадобится, в виде 3 отдельных файлов (по одному на канал цвета).

Я буду делать статистический анализ на электронную таблицу позже. Я мог бы что-то собрать вместе в java, чтобы сделать это, особенно учитывая, что это является доказательством концепции для (намного) более позднего проекта программирования, но на самом деле это кажется слишком большой суматохой для простой задачи.

3 ответа3

1

Это не слишком сложно. Вот подход в Java. Вам просто нужно записать это в CSV .. просто записать в файл.

for (int x = 0; x < image.getWidth(); ++x)
  for (int y = 0; y < image.getHeight(); ++y) {
    int pixel = image.getRGB(x, y);
    int r = (pixel >> 16) & 0xff;
    int g = (pixel >> 8) & 0xff;
    int b = (pixel) & 0xff;
  }
}

где image является BufferedImage . Вы можете загрузить BufferedImage с ImageIO.read(File input); , Вы найдете это в javax.imageio.ImageIO .

0

У меня была похожая проблема. Я получаю много графических файлов с изображениями. Это моя любимая мозоль на самом деле. Люди не присылают мне фактические данные, а это то, что мне нужно для каких-либо расчетов или анализа, вместо этого они присылают мне красивую картинку, которая почти ничего не стоит. Если набор данных невелик, а график является выводом компьютерной распечатки (как и большинство современных), в отличие от рисованной графики, использование краски MS может быть довольно точным. Что вы делаете, это открываете файл и увеличиваете ось X. Увеличивайте масштаб, пока не сможете переместить курсор мыши на отдельные пиксели. В правом нижнем углу есть пара чисел, которые являются координатами пикселей x и y. Найдите x и y каждой пронумерованной отметки на оси x в повторяемой точке, например, там, где она пересекает горизонтальную линию или что-то подобное. Если это результат распечатки или изображения, сохраненного из компьютерной программы, все они должны иметь одинаковую координату y. Но если это нарисованный вручную график (как вы нашли в старых журнальных статьях, то вам нужно иметь координату y, потому что вам нужно будет исправить все вращаемое изображение или нарисовать его не совсем идеально). Повторите это с осью Y. Если метки имеют ширину в несколько пикселей, и вы не можете найти пиксель прямо посередине, вы можете оценить центр, например, если отметка имеет ширину 4 пикселя, начинается с номера 51 и заканчивается на пикселе 54, тогда центр 52,5. (это может быть излишним, если график не нарисован с такой точностью, которая обычна для источников, нарисованных от руки)

Затем перейдите к считыванию значений с графика таким же образом, увеличив и считывая координаты пикселей x и y. В зависимости от графика, вы можете увидеть точки данных в виде маленьких символов, или это может быть просто линия. Вы также можете упростить свой процесс и просто взять точки, где он пересекает линию или что-то подобное. Ничего не написано в камне.

Теперь, когда у вас есть данные, поместите их в Excel. В зависимости от того, что вы делаете и как строится график, могут помочь различные приемы. Например, если они использовали смехотворно толстые линии, иногда это может помочь подогнать окрестности вокруг интересующей точки, а затем выбрать линию, перпендикулярную к этой линии подгонки, и усреднить значения, которые падают вдоль этой точки. В других случаях лучше использовать простое среднее значение всех точек x, попадающих в конкретную точку y. Иногда вы можете просто взять все граничные точки, подогнать их к кривой и все готово.

Это может значительно облегчить работу, но я нашел ее вчера и еще не использовал. Предполагается взять все точки на изображении и превратить их в список значений пикселей, разделенных запятыми. Тогда вы можете, например, выбрать пиксели по цвету. Создайте форму, чтобы вы могли обрабатывать их в Excel, чтобы получить более или менее исходные данные. Если данные были получены из графа Excel, экспортированного, например, в изображение, оно должно быть достаточно точным.

https://itg.beckman.illinois.edu/technology_development/software_development/get_rgb/

0

Я бы попробовал использовать бесплатную SAGA GIS с открытым исходным кодом, загрузить ваше изображение с помощью Module/File/Grid/Import/Image - вы получите сетку SAGA, которую вы можете экспортировать как XYZ-файл, который на самом деле является текстовым файлом, содержащим значения X и Y и значение сетки Z каждого пикселя. Это должно быть то, что вам нужно. САГА бесплатна. :-)http://www.saga-gis.org/en/index.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .