- Часть на Python (Predict.py), которая ищет на фото координаты уголка в пикселях, без привязки к центру фото, к шагу контроллера, и вот этому всему. Predict.py можно будет запускать на Colabe, предварительно загрузив на Google Диск требуемые файлы;
- Часть на Delphi Edge.exe, которая:
- позволяет вручную указывать на фото координаты уголка;
- позволяет подгружать информацию по распознанным Predict.py координатам уголка;
- позволяет выгружать информацию по уголкам с фото в csv файл требуемого формата с учетом шага контроллера и центра фото.
1. Часть на Python - Predict.py
- будет представлять из себя модуль-исходный код на Python "Predict.ru". Для работы модуля нужен будет установленный на компьютере Python с библиотеками. ВАЖНО!!! Версия python и библиотек должны быть лишь указанные в инструкции!
- помимо модуля на Python, будет файл нейронной сети *.h5 - его использование нужно будет прописать явно в исходниках модуля;
- модуль всегда анализирует фото с текущего каталога. При этом сам модуль Predict.py может располагаться в любом каталоге;
- модуль анализирует все файлы с расширением *.jpg в текущем каталоге, у которых в имени присутствует название ячейки в формате NNNXSSS, где SSS - номер секции, X - литера "N" или "U", NNN - номер ячейки в секции;
- для поиска координат уголка используется настроечный файл в формате XML, например, 1n.ask. Если в каталоге есть более одного такого файла, то программа попросит выбрать нужный файл. Если не будет ни одного, то программа выйдет с ошибкой.
- настроечный файл имеет определенный формат, который будет указан в инструкции. В этом файле нужно будет прописать высоту уголка в пикселях, угол поворота от вертикали, необходимо ли зеркальное отображение фото, название серии фото и т.д.;
- после запуска predict.py проверяет корректность настроечного XML файла, и если его нет или он некорректен, то программа завершается с ошибкой;
- после успешного распознавания формируется выходной файл в формате xml (с другим именем и другой структуры, чем настроечный), в котором содержатся информация по найденным координатам. Далее этот файл необходимо будет передать в Edge.exe, которая использует данные распознавания для дальнейшей работы.
2. Часть на Delphi - Edge.exe
- будет представлять из себя исполняемый файл "Edge.exe", который не будет требовать никакой установки, и запускаться будет на любом компьютере с windows с любого каталога;
- модуль анализирует фото с текущего каталога. При этом сам модуль Edge.exe может располагаться в любом каталоге. Модуль анализирует все файлы с расширением *.jpg в текущем каталоге, у которых в имени присутствует название ячейки в формате NNNXSSS, где SSS - номер секции, X - литера "N" или "U", NNN - номер ячейки в секции. Если в текущем каталоге таких файлов нет, то программа предлагает выбрать каталог, в котором такие фото есть;
- после выбора каталога с фото ячеек, программа проверяет, есть ли в этом каталоге настроечный файл XML:
- если нет, то программа предлагает ввести название новой серии, и создает новый настроечный файл с этим именем
- если есть, то программа его открывает и переходит в главное меню
- если есть несколько, то программа предлагает выбрать верный единственный настроечный файл для работы. При этом другие настроченые файлы будет предложено удалить.
- данные по серии фото хранятся в специальном настроечном XML файле - в том же, в котором хранится настроечная информация для Predict.py;
- Информация по координатам найденным фото хранится в отдельном DAT файле. Он не подлежит ручной правки. И такой файл в каталоге должен быть лишь один. Имя dat файла должно совпадать с именем настроечного файла.
- При открытии программы, если в каталоге нет соотв. DAT файла, то он создается автоматически, и в него копируется информация по всем фото из серии для дальнейшей работы;
- Если в каталоге уже есть DAT файл, то его данные синхронизируются с фото в каталоге:
- новые файлы добавляются
- старые , удаленные файлы, удаляются
- После прохождения проверок открывается главное меню программы Edge.exe со следующими элементами управления:
- панелью управления с кнопками:
- "Корректировать" - перейти к ручной корректировке координат края уголка
- "Задать угол поворота и пр. для серии" открыть в paint.net текущее фото для определения угла наклона и координат уголка. Пока предполагается ручное занесение 4-х параметров (как определять - см. здесь). Если будет возможность (не возникнет иных подводных камней при реализации всей задачи), то задание этих 4-х параметров будет происходить в самой программе.
- гридом-табличкой <Список фото> в верхней части экрана. Сортировка будет вначале по №№ секции, потом - по №№ ячеек, потом - по дате-времени создания фото. Высота таблички будет на 7 строчек. Буду столбцы:
- № секции - только на чтение
- № ячейки - только на чтение
- название ячейки - только на чтение
- имя файла в базе - только на чтение
- тип фото: выбор из списка [фиктивная ячейка (уголка нет), идеальное фото, фото со смещением, обычное фото с уголком] - это поле можно будет редактировать явно
- дата-время фото - только на чтение
- выставленные вручную угол поворота и координаты уголка (если именно для этой ячейки выставлялись) - нужны для настройки серии для 2-3 фото из серии - только на чтение (проставляться будет само при совершении действий)
- координаты края уголка, распознанные автоматом (если распознались, если при распознании не нашлись, то равные -1, -1) - только на чтение
- скорректированные вручную координаты края уголка (если корректировались) - только на чтение (проставляться будет само при совершении действий)
- текущим фото (картинка), отображаемая в нижней части экрана
- главным меню:
- <Настройки серии> - в отдельном окне откроется окошко для задания параметров серии снимков - название серии, шаг контроллера, центр, и т.д.. При этом такие параметры для распознавания как "угол поворота", "размер уголка" будут рассчитываться как среднеарифметические по одному или несколько явно указанным в списке, и отображаться в настройках серии только на чтение;
- <Посмотреть/Указать координаты> - переход в просмотру-указанию координат, как в старой версии Corrector.exe
- <Загрузить XML с координатами> - загружается файл с распознанными фото от модуля Predict.py. Нужно будет выбрать файл для загрузки.
- <Выгрузить csv> - выгружает результирующий CSV файл для контроллера
- панелью управления с кнопками:
- оператор запускает Edge.exe, выбирает каталог с новой серией
- программа запрашивает имя серии, он, вводит, например, gamma12
- программа создает настроечный файл gamma12.ask
- в указанном каталоге программа ищет файлы, которые есть фото одной и той же ячейки. Если таких файлов 2 на одну ячейку, то более раннему присваивается тип "Идеальное", а более позднему - "со смещением". Если таких пар более 2-х, то каждой паре присваивается особый тип "Идеальное" и "со смещением". Присвоение типа ничего не значит, а лишь помогает оператору ориентироваться. Он может вручную указать, какие ячейки есть пара "Идеальное" и "со смещением". Причем можно указать несколько таких пар.
- сразу открывается список всех файлов фото с параметрами (п. меню "Фото-Список фото")
- если есть идеальное фото без указания вручную координат, то программа перемещается к этому фото
- оператор нажимает кнопку "Корректировать", и указывает мышкой координаты уголка
- программа перескакивает на "Фото со смещением", и оператор указывает мышкой новые координаты уголка
- после этого случайно выбирает 2-3 фото в списке (например, в начале и конце), и для них делает "Задать угол поворота и пр. для серии". Но - можно все это проделать и на идеальном фото или на идеальном фото со смещением. Можно сделать эту процедуру и на одном фото серии. Но лучше - на 2-3-х для более эффективного распознавания.
- нажимает кнопку "Сохранить"
- далее серия с настроечным файлом передается на распознавание
- файл результат распознавания загружается через п. меню <Загрузить XML с координатами>
- файл результат работы программы выгружается через п. меню <Выгрузить csv>