Skip to main content

Telegram bot that draws the outlines of drips on a photo !!! Warning!!! Before running, be sure to create the folders "exel", "new_file" and "save_docs" in the workspace where the python file is located !!!!

Project description

Droplet-Detector

droplet


Build Status


Введение

Перед нашей командой стояла задача создать простой в использовании проект, который будет рисовать контуры капель. Также было необходимо написать код для подсчёта пикселей каждой капли и добавить возможность сохранять данные в виде таблицы. Эта работа позволила нам глубже изучить компьютерное зрение с помощью библиотек OpenCV2 в Python, научиться работать в команде и дала возможность создать собственного телеграмм-бота.

Работу выполнили студенты из группы 21932:

Обнаружение контуров

Для корректного обнаружения контуров капель мы использовали Canny Edge. Это алгоритм, состоящий из 4 основных шагов:

  1. Уменьшение шума с помощью гауссовского сглаживания.
  2. Вычисление градиента изображения с помощью фильтра Собеля.
  3. Применение Non-Max Suppression для простого подавления локальных минимумов.
  4. Применения пороговой обработки с Гистерезисом, которая создает 2 пороговых значения T_upper и T_lower, которые используются в функции Canny().

Для наглдяности покажем работу алгоритма на следующем изображении капель:

разг

Расчёт площади

Для того, чтобы правильно считалась площадь, была необходима отрисовка замкнутых контуров капель. Это и была следующая проблема, с которой мы столкнулись. Для ее решения мы последовательлно применяли несколько функций:

  1. Уменьшение шума с помощью медианного сглаживания.
  2. Увелечение резкости изображения с помощью 2D фильтра
  3. Маска Собеля для выделения контуров.
  4. Размытие Гаусса для уменьшения шума.
  5. Обнаружение контуров с помощью Canny.
  6. Получение массива внешних контуров с помощью findContours.
  7. Закрашиваниие контуров с помощью fillPoly.
  8. Повторяем с шага 1 для получившейся маски.
  9. Сложение двух получившихся масок.
  10. Отрисовка контуров на картикне.

Для подсчета площади капли в пикселях использовалась функция contourArea, которая считает пиксели в замкнутом контуре.

В итоге, мы пришли к следующим результатам:

разг2

Отрисовка контуров на входном изображении

В конце программы у нас имеются входное изображение и маска с контурами этого изображения. С помощью функции bitwise_and(img, img, mask=mask) из библиотеки OpenCV2 мы рисуем маску прямо на входном изображении и выводим это как итог.

Телеграмм-бот

Для взаимодействия пользователя и телеграмм-бота мы использовали библиотеку Telebot. Бот запускается с помощью команды /start, после чего он нас приветствует и просит ввести команду Help. Далее мы можем увидеть список команд в определённой последовательности для корректной работы. Наш бот не очень разговорчивый, поэтому если вы попытаетесь поговорить с ним на отдалённые темы, у вас ничего не выйдет.

Без имени

DockerHub

Команда для начала работы проекта

docker run nekrasovaanna/droplet-detector

Установка с Pypi и запуск

Установите библиотеку Droplet_Detector в рабочую область

pip install Droplet_Detector

Перед запуском создайте папки в рабочей области "exel", "new_file" and "save_docs"

mkdir exel,new_file,save_docs

Импортируйте модуль Bot.py в вашем файле .py

from Droplet_Detector import Bot

Запустите бота написав

Bot.start()

Cсылка на бота

https://t.me/Droplet_Detector_bot

Источники

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Droplet_Detector-0.1.2.tar.gz (12.3 kB view details)

Uploaded Source

File details

Details for the file Droplet_Detector-0.1.2.tar.gz.

File metadata

  • Download URL: Droplet_Detector-0.1.2.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.17

File hashes

Hashes for Droplet_Detector-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8378ae2c6070cdd35aa4f6ed5cd9ecbc202eb940aa774513b8ccfecf0ab9887a
MD5 3a34c2ef065b599dc7e51d9a186ea294
BLAKE2b-256 fdaf869e38ffea4804d8dfa68edb32f181466bbe7445453f5a8d2b73c9d99a7f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page