как найти и извлечь координаты / данные / подкомпоненты диаграмм / данных изображения карты? - PullRequest
1 голос
/ 16 июня 2020

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

У меня есть два набора задач, и я был бы очень признателен за любую помощь или даже образец кода о том, как сделать это автоматически. Я не новичок в записных книжках python / jupyter, но у меня ноль опыт работы с этим типом науки о данных, чтобы выполнять анализ / обработку изображений с использованием таких вещей, как opencv / машинное обучение (или если есть лучшая библиотека инструментов, которую я Я даже не знаю об этом).

У меня есть несколько образцов изображений (оригиналы в формате PNG, но слишком большие для загрузки, поэтому я закодировал их в высококачественные JPEG, чтобы следовать / предоставить образец data) .. вот что я пытаюсь сделать:

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

    • на некоторых изображениях либо будут отсутствовать данные плитки, как во втором примере image, это ВСЕГДА фрагменты данных изображения 256x256, поэтому должно быть несложно идентифицировать черные ящики именно такого размера ..
    • некоторые изображения будут есть поврежденные / неуместные плитки, как на 3-м изображении (обратите внимание, что в центре / верхней половине изображения большой цветной полукруг / дуги, он немного дублируется внизу, и если вы посмотрите горизонтально, вы увидите, что данные изображения смещены и поэтому эти плитки были каким-то образом повреждены
  • извлечение информации, в конечном итоге, как только все данные изображения проверены на достоверность (указанные выше шаги гарантированы), есть несколько бит данных, которые мне действительно нужно извлечь из изображения, наиболее важным из которых является

    • 4 координаты (верхний левый, верхний правый, нижний левый, нижний правый) внутренней рамки диаграммы в На первом изображении они выделены маленьким розовым квадратом в каждом углу (на других изображениях их нет, но они расположены аналогично) - ПРИМЕЧАНИЕ, поскольку это географические c координаты и включают проекции, они НЕ всегда 100% по горизонтали / вертикали друг от друга.
    • критический бит заключается в том, что НЕКОТОРЫЕ изображения содержат больше, чем одна «диаграмма», мне действительно нужно получить вышеуказанные 4 координаты для КАЖДОЙ диаграммы (некоторые диаграммы не имеют диаграмм, некоторые из двух или несколько, и они не всегда являются простыми прямоугольными angular фигурами), я могу сгенерировать для ввода количества диаграмм, если это помогает ..
    • если возможно, то также может помочь извлечение каждой диаграммы как отдельного изображения (каждая из них имеет одну заглавную букву, A, B, C в круг, который был бы хорошо, если бы он появился в имени файла)
  • в качестве бонуса, если бы существовал способ также извлечь разделы, выбранные в первом образце изображения (в в нижнем левом углу), это, вероятно, будет связано с распознаванием того, где / если на изображении это появляется (вероятно, только один раз для каждого файла, но не обязательно), а затем извлечением на основе его координат?

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

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

...