EN | RU
Автоматическое распознавание растений на фотографии по двухмерному коду (Дата Матрице), организация фотографий растений, а также маркирование фотографий информацией о данном растении: род, вид, возраст и т.д. Удобный инструмент для ботаников и коллекционеров растений.
- Введение
- Описание
- Логика приложения
- Источники данных
- Детектирование и декодирование
- Организация файлов фотографий
- Интерфейс программы
- Примеры результатов
- Создание меток
- FAQ
Это некоммерческий проект с открытым исходным кодом. Автор этого проекта является любителем в выращивании суккулентов и мечтает об автоматизации рутинных процессов учета и систематизации информации о растениях, чтобы облегчить жизнь, а также популяризировать мирное хобби по выращиванию растений, в особенности мезембов (Аизовых)
Если вы изучаете или коллекционируете растения или просто являетесь любителем-энтузиастом, то почти наверняка ваш телефон и жесткий диск компьютера содержат тысячи фотографий растений. Это понятно, потому что вы фотографируете растения не только в особые моменты его жизни, например в период цветения, но и просто так, на регулярной освное, чтобы отслеживать развитие данного растения. И все попытки организовать эту кучу фотографий обычно заканчиваются неудачно.
Другой трудемкой задачей является хранении информации о растении. Пластиковая табличка с минимальной информацей и excel-файл (или амбарная книга) - традиционно используемые инструменты. Поддержка такой системы учета требует много сил, при этом большие риски, связанными с человеческим фактором.
Автоматически распознаваемые таблички могут помочь решить обе эти проблемы. Дата Матрица - это как QR-код, только меньше по размеру, который содрежит только уникальный номер растения. Табличку с Дата Матрицей очень просто сделать самостоятельно: распечтать, вырезать и заламинировать, один раз для всех ваших растений. Преимущества таких табличек:
- автоматическое распознавание растения или нескольких растений на фотографии;
- автоматическая маркировка фотографий информацией об изображенном растении (имя, возраст, источник семян и т.д.);
- автоматическая организация фотографий в индивидуальные папки растений;
- благодаря однотипности и одинаковому размеру бирок - аккуратный и организованный внешний вид вашей коллекции;
- точность идентификации: бирка может также содержать в себе информацию в человеко-понятном виде;
- автомтизация изготовления бирок.
Предлагаются следующие шаги:
- Пользователь (любитель растени) делает столько фотографий, сколько он хочет.
- Приложение анализирует все эти фотографии, пытаясь найти на них Дата Матрицу и распознать расетние.
- Имя растения, возраст и др. информация наносится на изображенрие фотографии.
- Обновленный файл фотографии сохраняется в индивидуальную папку данного растения.
По прошествию какого-то количества времени накопятся новые фотографии и цикл повторится. В результате пользователь получит все свои фотографии, маркированные и организованные в отдельные папки полностью автоматически.
Более детальны алгоритм работе представлен на логической схеме.
Приложение использует два вида входных данных:
- изображение - фотографий растений;
- текст - справочная информация о растениях: род, вид, дата посева и т.д.
В текущей версии фотографии могут быть доставлены в приложение тремя способами:
- Расположить файлы фотографий в папку
INPUT
в корневой директории приложений. Приложение их проанализирует (попытается распознать растения на фото) и, в зависимости от результата, переместит файлы в папкуSuccessful
илиUnsuccessful
. - Добавить путь (или несколько путей) к директории с фотографиями в файл
input_paths.txt
. Приложение проанализирует все фотографии по указанным путям в режиме только чтение. - Фото растений, не имеющих матриц данных либо имеющих, но не декодированных, могут вручную помещены непосредственно в папку нужного растения, подпапку
LABEL_REQURED
. Такие фотографии будут также обработаны, т.е. на них будут нанесена информация о тех растениях, в папку которых они были размещены.
- В текущей версии справочная информация может быть получена из csv-файла. Которые в свою очередь может быть легко получен из таблицы Excel, наверняка у вас уже имеющейся.
- В плане разработки также стоит возможность получать информацию из облачных офисных приложены, таких как Google Spreadsheet.
Основные требования к csv-файлу:
- корректные имена заголовков в первой строке;
- заполненный столбец UID (могут быть сгенерированы автоматически).
Использование таких простых форматов (а не использование баз данных, например) позволяет получить данные как через приложение, так и стандартными средствами (текстовый редактор, редактор электорнных таблиц). Тем не менее, есть много неудобств при редактировании csv-файла. Вероятно, использование данного формата носит временный характер.
Локальный XLSX-файл, онлайн таблица (например, Goolge Spreadsheet) будут поддерживаться в следующих релизах.
Существует три вероятных сценария, связанных с обнаружением матрицы данных и ее декодированием:
- Фото имеет матрицу данных, которая была успешно обнаружена и декодирована.
- Фото имеет матрицу данных, но по каким-то причинам она не была обнаружена или декодированиа или была обнаружена но не была декодирована или была обнаружена и декодирована, но данный не были найдены в базе данных.
- Фото не имеет матрицу данных.
Для случаем 2 и 3 возможно ручное размещение фотографии в папке требуемого растения подпапке LABEL_REQURED
. См. пункт Источники фотографий.
Первым этапом после запуска приложения явлется актуализация (или создание, если запуск выполняется впервые) папочной структуры. Выходная папочная структура в точности соответствует структуре базы данных и содержит индивидуальную директорию для каждого растения. Имя папки содержит UID и имя растения (род, вид и т.д.). Если вы случайно удалите папку какого-то растения или всю структуру, то они будут вновь созданы при следующем запуске (но не их содержимое!).
Папка каждого растения также содержит подпапку с именем LABEL_REQURED
, в которую можно поместить вручную распознанные фотографии для нанесения лейбла.
Вот пример, как выглядит главное окно программы:
- Результирующее фото вручную распознанного растения:
- Результирующее фото автоматически распознанного растения:
- Результирующее фото с несколькими растениями, распознанными автоматически:
PDF-макет с метками может быть сгенерирован для последующей печати и ламинации. Следующие шаги описывают технологию ручного изготовления износоусточивых меток:
- распечатать PDF-файл;
- вырезать метки;
- заламинировать метки используя настолько толстую ламинирующую плёнку, какую только можно купить;
- ламинируя следует оставлять минимальный зазор 2-4 мм между метками, чтобы обеспечить герметичность;
- вырезать заламинированные метки;
- сделать косой срез со стороны, которая будет втыкаться в субстрат.
Генератор макета уже внедрен в текущий релиз.
Т.к. всё написано на python, то теоретически - да. Но с большой долей вероятности для кроссплатформенной работы потребуется какой-то рефакторинг. Если вы являетесь пользователем Windows / Mac, вы может поучаствовать в проекте, хотя бы как тестировщик.
Только UID - уникальный идентификатор, состоящий из 6 (или более) цифр. Вся остальная информация получается из базы данных по UID.
Просто попросите меня любым способом. Она не секретная, просто слишком объемная, чтобы хранить ее на GitHub.