Частное ТЗ на систему распознавания уголков

korvin
Администратор
Сообщения: 201
Зарегистрирован: 18 ноя 2017, 15:36

Частное ТЗ на систему распознавания уголков

Сообщение korvin » 19 окт 2018, 11:59

Система распознавания будет состоять из частей:
  1. Часть на Python (Predict.py), которая ищет на фото координаты уголка в пикселях, без привязки к центру фото, к шагу контроллера, и вот этому всему. Predict.py можно будет запускать на Colabe, предварительно загрузив на Google Диск требуемые файлы;
  2. Часть на 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 файл для контроллера
Итого, как будет выглядеть работа оператор (алгоритм):
  1. оператор запускает Edge.exe, выбирает каталог с новой серией
  2. программа запрашивает имя серии, он, вводит, например, gamma12
  3. программа создает настроечный файл gamma12.ask
  4. в указанном каталоге программа ищет файлы, которые есть фото одной и той же ячейки. Если таких файлов 2 на одну ячейку, то более раннему присваивается тип "Идеальное", а более позднему - "со смещением". Если таких пар более 2-х, то каждой паре присваивается особый тип "Идеальное" и "со смещением". Присвоение типа ничего не значит, а лишь помогает оператору ориентироваться. Он может вручную указать, какие ячейки есть пара "Идеальное" и "со смещением". Причем можно указать несколько таких пар.
  5. сразу открывается список всех файлов фото с параметрами (п. меню "Фото-Список фото")
  6. если есть идеальное фото без указания вручную координат, то программа перемещается к этому фото
  7. оператор нажимает кнопку "Корректировать", и указывает мышкой координаты уголка
  8. программа перескакивает на "Фото со смещением", и оператор указывает мышкой новые координаты уголка
  9. после этого случайно выбирает 2-3 фото в списке (например, в начале и конце), и для них делает "Задать угол поворота и пр. для серии". Но - можно все это проделать и на идеальном фото или на идеальном фото со смещением. Можно сделать эту процедуру и на одном фото серии. Но лучше - на 2-3-х для более эффективного распознавания.
  10. нажимает кнопку "Сохранить"
  11. далее серия с настроечным файлом передается на распознавание
  12. файл результат распознавания загружается через п. меню <Загрузить XML с координатами>
  13. файл результат работы программы выгружается через п. меню <Выгрузить csv>

Zhyzhiy
Сообщения: 8
Зарегистрирован: 06 апр 2018, 11:47

Re: Частное ТЗ на систему распознавания уголков

Сообщение Zhyzhiy » 19 окт 2018, 16:18

Часть на Python (Predict.py), которая ищет на фото координаты уголка в пикселях, без привязки к центру фото, к шагу контроллера, дисторсии и вот этому всему. Predict.py можно будет запускать на Colabe, предварительно загрузив на него требуемые файлы с Google Диск;

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

Zhyzhiy
Сообщения: 8
Зарегистрирован: 06 апр 2018, 11:47

Re: Частное ТЗ на систему распознавания уголков

Сообщение Zhyzhiy » 19 окт 2018, 16:23

1. Часть на Python - Predict.py

ТЗ не соответствует последней версии скриптов. В последней версии присутствует дерево каталогов в рабочей папке, где расположены исходники и результаты.

Zhyzhiy
Сообщения: 8
Зарегистрирован: 06 апр 2018, 11:47

Re: Частное ТЗ на систему распознавания уголков

Сообщение Zhyzhiy » 19 окт 2018, 16:26

модуль анализирует все файлы с расширением *.jpg в текущем каталоге, у которых в имени присутствует название ячейки в формате SSSXNNN, где SSS - номер секции, X - литера "N" или "U", NNN - номер ячейки в секции;

на самом деле наоборот SSS - номер ячейки в секции, NNN - номер секции

Zhyzhiy
Сообщения: 8
Зарегистрирован: 06 апр 2018, 11:47

Re: Частное ТЗ на систему распознавания уголков

Сообщение Zhyzhiy » 19 окт 2018, 16:49

В текущем каталоге должен быть лишь один настроечный файл xml. Если его нет, то он создается автоматически пустым после указания названии серии снимков. Если их несколько, то программа завершится с ошибкой.
Информация по координатам найденным фото хранится в отдельном DAT файле. Он не подлежит ручной правки. И такой файл в каталоге должен быть лишь один. Если будет два, то программа вылетит с ошибкой.

Вылетать с ошибкой не самый лучший вариант, более правильно дать возможность выбрать либо сообщить файл уже есть и будет перезаписан с выбором вариантов, да - перезаписать (обнулить) и продолжен, нет - завершить работу.

Zhyzhiy
Сообщения: 8
Зарегистрирован: 06 апр 2018, 11:47

Re: Частное ТЗ на систему распознавания уголков

Сообщение Zhyzhiy » 19 окт 2018, 16:58

<Настроить серию> - в отдельном окне откроется окошко для задания параметров серии снимков - название серии, угол поворота, ширина уголка, шаг контроллера, центр, и т.д.

Не самый лучший вариант как начальный для тестов - подойдет, но на финише должно быть так:
Задать название серии.
Выбрать фото ячейки с идеальными координатами. (идеальные координаты есть в названии)
Выбрать фото этой же ячейки со смещенными координатами. (смещенные координаты есть в названии)
Указать угол поворота позволив вращать картинку и меняя при этом угол автоматически с возможностью задать его руками и просмотреть результат - на фото надо наложить сетку правильного угла (т.е. с чем совместить уголок)
Позволить выбрать центр на идеальном фото.
Позволить выбрать центр на идеальном фото со смещением.
Рассчитать соответствие пикселей кодам(координатам) контроллера.
Иметь инструмент для замера размера (ширины?) уголка. Что-то вроде рисования ломанной линии и уже по ней рассчитать размер уголка.

korvin
Администратор
Сообщения: 201
Зарегистрирован: 18 ноя 2017, 15:36

Re: Частное ТЗ на систему распознавания уголков

Сообщение korvin » 19 окт 2018, 17:03

Zhyzhiy писал(а):
1. Часть на Python - Predict.py

ТЗ не соответствует последней версии скриптов. В последней версии присутствует дерево каталогов в рабочей папке, где расположены исходники и результаты.

Так это пока только ТЗ на 2-й этап. Пока еще не сделанное, ес-но.

korvin
Администратор
Сообщения: 201
Зарегистрирован: 18 ноя 2017, 15:36

Re: Частное ТЗ на систему распознавания уголков

Сообщение korvin » 19 окт 2018, 17:04

Zhyzhiy писал(а):
модуль анализирует все файлы с расширением *.jpg в текущем каталоге, у которых в имени присутствует название ячейки в формате SSSXNNN, где SSS - номер секции, X - литера "N" или "U", NNN - номер ячейки в секции;

на самом деле наоборот SSS - номер ячейки в секции, NNN - номер секции

Исправил первоначальное ТЗ выше.

korvin
Администратор
Сообщения: 201
Зарегистрирован: 18 ноя 2017, 15:36

Re: Частное ТЗ на систему распознавания уголков

Сообщение korvin » 19 окт 2018, 17:07

Zhyzhiy писал(а):
В текущем каталоге должен быть лишь один настроечный файл xml. Если его нет, то он создается автоматически пустым после указания названии серии снимков. Если их несколько, то программа завершится с ошибкой.
Информация по координатам найденным фото хранится в отдельном DAT файле. Он не подлежит ручной правки. И такой файл в каталоге должен быть лишь один. Если будет два, то программа вылетит с ошибкой.

Вылетать с ошибкой не самый лучший вариант, более правильно дать возможность выбрать либо сообщить файл уже есть и будет перезаписан с выбором вариантов, да - перезаписать (обнулить) и продолжен, нет - завершить работу.

Ес-но не будет вылетать черти как. Будет сообщение об ошибке.
Если файла нет, то его возможно будет создать.
А если их несколько, то это явно ошибочная ситуация. И пользователя надо заставить удалить не тот. Для избежания ошибки в дальнейшем.

korvin
Администратор
Сообщения: 201
Зарегистрирован: 18 ноя 2017, 15:36

Re: Частное ТЗ на систему распознавания уголков

Сообщение korvin » 19 окт 2018, 17:11

Zhyzhiy писал(а):
<Настроить серию> - в отдельном окне откроется окошко для задания параметров серии снимков - название серии, угол поворота, ширина уголка, шаг контроллера, центр, и т.д.

Не самый лучший вариант как начальный для тестов - подойдет, но на финише должно быть так:
Задать название серии.
Выбрать фото ячейки с идеальными координатами. (идеальные координаты есть в названии)
Выбрать фото этой же ячейки со смещенными координатами. (смещенные координаты есть в названии)
Указать угол поворота позволив вращать картинку и меняя при этом угол автоматически с возможностью задать его руками и просмотреть результат - на фото надо наложить сетку правильного угла (т.е. с чем совместить уголок)
Позволить выбрать центр на идеальном фото.
Позволить выбрать центр на идеальном фото со смещением.
Рассчитать соответствие пикселей кодам(координатам) контроллера.
Иметь инструмент для замера размера (ширины?) уголка. Что-то вроде рисования ломанной линии и уже по ней рассчитать размер уголка.


Тут не все так просто. В сроки и стоимость задачи я не включал работы по созданию графического редактора типа paint.net
Если Вы хотите, его можно сделать. Но тут стоимость и сроки будут сопоставимы со сроками и стоимостью всех трех этапов. Например, задача вращения на угол в Delphi не реализована. Она реализована в библиотечке OpenCV, но OpenCV нет в Delphi.

Zhyzhiy
Сообщения: 8
Зарегистрирован: 06 апр 2018, 11:47

Re: Частное ТЗ на систему распознавания уголков

Сообщение Zhyzhiy » 19 окт 2018, 17:18

korvin писал(а):
Zhyzhiy писал(а):
В текущем каталоге должен быть лишь один настроечный файл xml. Если его нет, то он создается автоматически пустым после указания названии серии снимков. Если их несколько, то программа завершится с ошибкой.
Информация по координатам найденным фото хранится в отдельном DAT файле. Он не подлежит ручной правки. И такой файл в каталоге должен быть лишь один. Если будет два, то программа вылетит с ошибкой.

Вылетать с ошибкой не самый лучший вариант, более правильно дать возможность выбрать либо сообщить файл уже есть и будет перезаписан с выбором вариантов, да - перезаписать (обнулить) и продолжен, нет - завершить работу.

Ес-но не будет вылетать черти как. Будет сообщение об ошибке.
Если файла нет, то его возможно будет создать.
А если их несколько, то это явно ошибочная ситуация. И пользователя надо заставить удалить не тот. Для избежания ошибки в дальнейшем.

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

Zhyzhiy
Сообщения: 8
Зарегистрирован: 06 апр 2018, 11:47

Re: Частное ТЗ на систему распознавания уголков

Сообщение Zhyzhiy » 19 окт 2018, 17:25

korvin писал(а):
Zhyzhiy писал(а):
<Настроить серию> - в отдельном окне откроется окошко для задания параметров серии снимков - название серии, угол поворота, ширина уголка, шаг контроллера, центр, и т.д.

Не самый лучший вариант как начальный для тестов - подойдет, но на финише должно быть так:
Задать название серии.
Выбрать фото ячейки с идеальными координатами. (идеальные координаты есть в названии)
Выбрать фото этой же ячейки со смещенными координатами. (смещенные координаты есть в названии)
Указать угол поворота позволив вращать картинку и меняя при этом угол автоматически с возможностью задать его руками и просмотреть результат - на фото надо наложить сетку правильного угла (т.е. с чем совместить уголок)
Позволить выбрать центр на идеальном фото.
Позволить выбрать центр на идеальном фото со смещением.
Рассчитать соответствие пикселей кодам(координатам) контроллера.
Иметь инструмент для замера размера (ширины?) уголка. Что-то вроде рисования ломанной линии и уже по ней рассчитать размер уголка.


Тут не все так просто. В сроки и стоимость задачи я не включал работы по созданию графического редактора типа paint.net
Если Вы хотите, его можно сделать. Но тут стоимость и сроки будут сопоставимы со сроками и стоимостью всех трех этапов. Например, задача вращения на угол в Delphi не реализована. Она реализована в библиотечке OpenCV, но OpenCV нет в Delphi.

т.е. повернуть картинку вы можете, а отобразить ее (перерисовать уже нет)? Если так сложно поворот осуществить мышкой пусть картинка будет поворачиваться при задании (изменении) угла. Наложить вертикальную или горизонтальную сетку думаю не составит особых сложностей.
Пока что совсем не понятно в каких единицах и как должен измеряться уголок. В изначальном ТЗ предполагалось ,что уголок задается прямоугольниками в разрабатываемой вами программе.
Нет никаких требований по использованию Делфи или ОпенСВ вы можете использовать любой удобный вам инструмент (язык, пакет). Естественно никто не просит реализовывать и тем более повторять графический редактор paint.net.

korvin
Администратор
Сообщения: 201
Зарегистрирован: 18 ноя 2017, 15:36

Re: Частное ТЗ на систему распознавания уголков

Сообщение korvin » 19 окт 2018, 17:31

Zhyzhiy писал(а):Просьба не делать никаких вылетаний с ошибками и даже сообщениями особенно как это реализовано в Сармате. Не должно быть никаких вылетаний, в принципе, если есть что-то лишнее, то надо указать на это пользователю и предложить удалить файлы или выйти без удаления.

К сожалению, без этого не обойтись. Нельзя объять необъятное.
Иначе все усложняется в десятки раз.
К примеру, если обнаружено несколько XML подходящей структуры, то это явно ошибочная ситуация. И ошибка оператора.
Сообщить об этом и указать список файлов - легко. Оператору в Far или еще где глянуть, какие файлы лишние и их удалить, пару пустяков.
Чтобы сделать дублирование этого функционала в самой программе, это надо тратить силы, время, деньги.
Будь у нас неограниченные финансы и время, можно было бы попытаться.
Но этого нет.

korvin
Администратор
Сообщения: 201
Зарегистрирован: 18 ноя 2017, 15:36

Re: Частное ТЗ на систему распознавания уголков

Сообщение korvin » 19 окт 2018, 17:34

Zhyzhiy писал(а):т.е. повернуть картинку вы можете, а отобразить ее (перерисовать уже нет)? Если так сложно поворот осуществить мышкой пусть картинка будет поворачиваться при задании (изменении) угла. Наложить вертикальную или горизонтальную сетку думаю не составит особых сложностей.
Пока что совсем не понятно в каких единицах и как должен измеряться уголок. В изначальном ТЗ предполагалось ,что уголок задается прямоугольниками в разрабатываемой вами программе.
Нет никаких требований по использованию Делфи или ОпенСВ вы можете использовать любой удобный вам инструмент (язык, пакет). Естественно никто не просит реализовывать и тем более повторять графический редактор paint.net.


Поворачиваю картинку я openCV в Python. Но на Python писать простенькую СУБД - это жесть.
Давайте я сделаю инструкцию по замеру уголка (ширины и угла поворота), и потом вернемся к этой теме!


Вернуться в «Распознавание уголков»