aaivanchenko / diamond-needle-quality Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
В рамках этого issue предлагается сравнить работу ранее исследованных алгоритмах на нескольких изображениях с белым фоном.
Вывести результаты работы различных алгоритмов рядом и визуально выбрать лучший (для каждого изображения).
Подвести итоги.
Предлагается реализовать детекцию границ иглы с помощью "классических" алгоритмов компьютерного зрения. Подход этих алгоритмов заключается в наложении фильтров на изображение. Здесь они чем-то напоминают сверточные нейронные сети, однако фильтры не обучаются, а задаются заранее.
Подробнее см. в вики: Выделение границ
Предлагается проверить качество выделения границ на имеющихся изображениях. Нужно проверить как будут работать такие алгоритмы в случаях когда на фоне имеются другие объекты или изображение будет темным.
Предлагается следующая принципиальная схема:
Для объективной оценки и выбора метода фильтрации предлагается протестировать следующие методы:
Пример применения последних трех методов: Алгоритмы выделения контуров изображений
В качестве инструмента можно использовать OpenCV
.
Предлагается реализовать детекцию границ иглы с помощью "классических" алгоритмов компьютерного зрения. Подход этих алгоритмов заключается в наложении фильтров на изображение. Здесь они чем-то напоминают сверточные нейронные сети, однако фильтры не обучаются, а задаются заранее.
Подробнее см. в вики: Выделение границ
Предлагается проверить качество выделения границ на имеющихся изображениях. Нужно проверить как будут работать такие алгоритмы в следующих случаях:
В рамках этого issue предлагается реализовать скрипт с методом Робертса на основе библиотеки OpenCV
для выделения границ.
Подробнее о методе Робертса см. на вики: Перекрёстный оператор Робертса
В рамках этого issue предлагается реализовать скрипт по удалению шумов с картинки, после работы алгоритма по выделению границ.
После работы данного скрипта в идеале должно остаться только границы алмазной иглы.
Реализовать несколько вариантов фильтрации, выбрать лучший.
Найти данные варианты.
Сохранить отфильтрованные изображения границ иглы для всех тестовых изображений.
Добавить функционал модуля по генерации отчётности в главное окно программы.
Используя результаты проведенных исследований "классических" алгоритмов компьютерного зрения (#7, #8, #9, #10 и #14), реализовать модуль contour.py
для получения контура иглы.
Модуль должен содержать все необходимые функции для определения контура иглы на изображении:
Все функции, а также сам модуль нужно снабдить документацией и аннотацией типов.
Предлагается реализовать детекцию границ иглы с помощью "классических" алгоритмов компьютерного зрения. Подход этих алгоритмов заключается в наложении фильтров на изображение. Здесь они чем-то напоминают сверточные нейронные сети, однако фильтры не обучаются, а задаются заранее.
Подробнее см. в вики: Выделение границ
Предлагается проверить качество выделения границ на имеющихся изображениях. Нужно проверить как будут работать такие алгоритмы в следующих случаях:
В рамках этого issue предлагается реализовать скрипт с методом Превитта на основе библиотеки OpenCV
для выделения границ.
Подробнее о методе Робертса см. на вики: Оператор Прюитт
OpenCV
OpenCV
(Python/C++)OpenCV
(Python)OpenCV
В рекомендациях для участников (CONTRIBUTING.md
) описываются правила по которым ведется разработка и которых нужно придерживаться при внесении своего вклада.
Например, рекомендации могут содержать:
В рамках данного issue предпологается поработать с исходным изображением, а именно поэксперементировать:
Предлагается проверить качество выделения границ на обработанных изображениях одним методом, например Кэнни. Проверку провести в следующих случаях:
В рамках этого issue предлагается реализовать скрипт с обработкой изображения на основе библиотеки OpenCV
.
Используя результаты проведенных исследований по обработки изображения в "классических" алгоритмов компьютерного зрения (#7, #8, #9, #10 и #14), а так же результатов работы с различными размытостями изображения (#25) реализовать модуль imageproc.py для обработки изображения.
Модуль должен содержать все функции, которые были исследованы для обработки изображений:
Все функции, а также сам модуль нужно снабдить документацией и аннотацией типов.
В данном issue необходимо добавить в исключения автопроверки кода все файлы ui_...
Для pylint:
В файл для настройки pylint добавить необходимое поле
Для flake8:
Найти решение
В рамках этого issue предлагается реализовать скрипт по переводу изображения с выделенными границами, алмазной иглы после работы алгоритма, в объект таблицы DataFrame, где X - координата точки границы по оси абсцисс, а Y - координаты точки границы по оси ординат.
Отрисовать полученные точки на плоскости.
Сохранить полученные таблицы для всех тестовых картинок отдельно.
Используя результаты проведенных исследований по определению тупой или острой иглы (#17) , а так же по результатам определения велечины угла. Реализовать модуль название_модуля.py
для определения типа иглы (острая тупая), а так же определение величины угла.
Модуль должен содержать все функции, которые были созданы для определения типа иглы и величены угла:
Все функции, а также сам модуль нужно снабдить документацией и аннотацией типов.
Предлагается реализовать детекцию границ алмазной иглы с помощью метода, который представлен в источнике.
Предлагается проверить качество выделения границ на имеющихся изображениях. Нужно проверить как будут работать такие алгоритмы в следующих случаях:
В рамках данного issue предлагается реализовать скрипт с методом повышения качества выделения границ изображений с использованием алгоритма PSO
Автоматически предлагать контур для новой заточки иглы, если она затуплена.
Создать файл requirements.txt, в котором будут прописаны используемые в проекте библиотеки.
Создать файл можно автоматически следующим образом:
pip list --format=freeze > requirements.txt
В данном issue планируется настроить автопроверку кода при помощи pylint и flake8
В рамках данного issue необходимо сделать реализацию главного окна приложением с использованием PyQt дизайнера или чистого PyQt.
Дополнительно к выше перечисленному предлагается реализовать следующее:
В рамках данного issue препологается придумать (разработать) макет приложения.
На мекете должны быть отображены обязательно:
Написать README для проекта, описывающий его особенности, варианты использования, участия и др.
requirements.txt
для удобной установки. Также можно использовать poetry
для управления зависимостями. Хорошей практикой будет разделить dev зависимости от prod зависимостей. При использовании обычного pip
dev зависимости можно вынести в отдельный файл, например, dev_requirements.txt
.CONTRIBUTING.md
.В рамках этого issue предлагается реализовать скрипт, находящий линейные уравнения, которые описывают найденные границы алмазной иглы.
При помощи двух линейных регрессий описать боковые грани иглы.
Найти точку минимума и при помощи неё найти третью линию, которая описывает нижнюю границу иглы.
Построенные линии изобразить на рисунке с выделенными границами, а так же на исходном рисунке.
Создать html файл с руководством пользователя. В данном руководстве должны быть отображены следующие аспекты:
Как пользоваться программой (руководство пользователя):
Как пользоваться программой, какие возможности предоставляет программа.
Страничка о программе. (О программе):
В данной части должны быть отображены пуннты связанные в общем о программе.
Можно ответить на некоторые вопросы: Что делает программа? Какие особенности?
Также в данной части можно отметить благодарности и отдельную часть для программистов
Изначальное изображение может быть повернуто по произвольным образом. В связи с этим требуется функционал поворота изображения после его загрузки в программу.
В программу требуется добавить две кнопки для поворота изображения на 90 градусов по часовой и против часовой стрелки. Кнопки должны иметь соответствующие иконки.
В данном issue необходимо собрать весь проект в файл .exe
.
Можно использовать следующее:
Первый вероятнее всего использовать проще так как:
Дополнение ко всему необходимо сделать следующее:
.bat
(батник), для сборки проекта. Батник должен в себя включать также:
название_версия_дата
(можно опустить название
)Кончик иглы на исходном изображении может смотреть не "идеально" вниз. Он может быть повернуть на произвольный угол. На таком изображении программа будет работать некорректно.
Предлагается автоматически повернуть изображение на нужный угол, обрезав лишнее. Для вычисления угла можно использовать два подхода:
Поиск оси симметрии можно делать перебором, постепенно меняя ее угол и вычисляя меру симметрии. На основе полученной оси можно получить угол и повернуть изображение.
Другой подход заключается в использовании контура самой иглы, полученной с помощью OpenCV
. Можно повернуть сам контур или линии регрессии для граней так, чтобы он стал симметричным относительно центральной вертикальной оси изображения. На основе этого угла поворота повернуть изображение.
Соответствующий вопрос на stackoverflow:
https://stackoverflow.com/questions/7414057/algorithm-to-calculate-symmetry-of-points
Создать модуль на языке python для генерации отчётов о качестве иглы на изображении.
Созданный модуль должен содержать функции, которые позволяют сделать следующее:
Предлагается реализовать детекцию границ иглы с помощью "классических" алгоритмов компьютерного зрения. Подход этих алгоритмов заключается в наложении фильтров на изображение. Здесь они чем-то напоминают сверточные нейронные сети, однако фильтры не обучаются, а задаются заранее.
Подробнее см. в вики: Выделение границ
Предлагается проверить качество выделения границ на имеющихся изображениях. Нужно проверить как будут работать такие алгоритмы в следующих случаях:
В рамках этого issue предлагается реализовать скрипт с фильтром Кэнни на основе библиотеки OpenCV
для выделения границ.
Предлагается реализовать детекцию границ иглы с помощью "классических" алгоритмов компьютерного зрения. Подход этих алгоритмов заключается в наложении фильтров на изображение. Здесь они чем-то напоминают сверточные нейронные сети, однако фильтры не обучаются, а задаются заранее.
Подробнее см. в вики: Выделение границ
Предлагается проверить качество выделения границ на имеющихся изображениях. Нужно проверить как будут работать такие алгоритмы в следующих случаях:
В рамках этого issue предлагается реализовать скрипт с методом Собеля на основе библиотеки OpenCV
для выделения границ.
Подробнее о методе Робертса см. на вики: Оператор Собеля
Необходимо дополнить Readme файл, добавив в него проделанную на текущий момент работу.
Каждый автор в общей форме описывает свои задачи и действия, которые он выполнял.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.