Разработка программы распознавания геометрических фигур для подсчета трубной продукции на металлургическом предприятии : магистерская диссертация



Download 1,96 Mb.
bet8/19
Sana20.07.2022
Hajmi1,96 Mb.
#828782
1   ...   4   5   6   7   8   9   10   11   ...   19
Bog'liq
m th n.a.vlasova 2021

ВЫВОДЫ ПО ПЕРВОЙ ГЛАВЕ


В этой главе были рассмотрены общие понятия компьютерного зрения, показаны возможности и методы, существующие на сегодняшний день. Также были показаны преимущества использования компьютерного зрения в бизнесе – где применяются и в каких отраслях экономики. Были рассмотрены и проблемы, с которыми сталкиваются разработчики ИИ и машинного зрения. Показаны применения методов машинного обучения и компьютерного зрения в промышленности. На основе собранного материала была написана обзорная статья.



  1. АНАЛИЗ СРЕДСТВ РАСПОЗНАВАНИЯ ОБРАЗОВ НА

ИЗОБРАЖЕНИИ


    1. РАСПОЗНОВАНИЕ ФИГУР С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ РЕАЛИЗОВАННОЙ НА ЯП PYTHON – OPENCV


Из первой главы мы узнали, что язык программирования Python хорошо подойдет для написания алгоритма по распознаванию и подсчёту количества труб в пачке. Рассмотрим библиотеки данного языка необходимые для написания алгоритма.
OpenCV была создана в Intel в 1999 году Гари Бредски, а первый релиз вышел в 2000 году [8]. Вадим Писаревский присоединился к Гари Бредски, чтобы руководить российской командой Intel по разработке программного обеспечения OpenCV. В 2005 году OpenCV был использован на автомобиле Stanley, победившем в конкурсе DARPA Grand Challenge 2005 года. В дальнейшем его активная разработка продолжалась при поддержке Willow Garage, а руководили проектом Гари Бредский и Вадим Писаревский. Сейчас OpenCV поддерживает множество алгоритмов, связанных с компьютерным зрением и машинным обучением, и расширяется с каждым днем [35].
OpenCV поддерживает широкий спектр языков программирования, таких как C++, Python, Java и т.д., и доступен на различных платформах, включая Windows, Linux, OS X, Android и iOS. Также активно разрабатываются интерфейсы для высокоскоростных операций на GPU на основе CUDA и OpenCL.
OpenCV-Python - это Python API для OpenCV, сочетающий в себе лучшие качества OpenCV C++ API и языка Python.
OpenCV-Python - это библиотека привязана к языку Python, предназначенная для решения задач компьютерного зрения [11].
Python - это язык программирования общего назначения, созданный Гвидо ван Россумом, который очень быстро стал популярным, в основном
благодаря своей простоте и читаемости кода. Он позволяет программисту выражать идеи в меньшем количестве строк кода без снижения читабельности. По сравнению с такими языками, как C/C++, Python более медленный.
Тем не менее, Python может быть легко расширен с помощью C/C++, что позволяет нам писать код с интенсивными вычислениями на C/C++ и создавать обертки для Python, которые могут быть использованы как модули Python. Это дает нам два преимущества: во-первых, код будет таким же быстрым, как и оригинальный код на C/C++ (поскольку это настоящий код на C++, работающий в фоновом режиме), а во-вторых, код на Python проще, чем на C/C++. OpenCV-Python - это Python-обертка для оригинальной реализации OpenCV на C++ [16].
OpenCV-Python использует Numpy, которая является высоко оптимизированной библиотекой для численных операций с синтаксисом в стиле MATLAB. Все структуры массивов OpenCV преобразуются в массивы Numpy и обратно. Это также облегчает интеграцию с другими библиотеками, использующими Numpy, такими как SciPy и Matplotlib.
OpenCV (Open Source Computer Vision Library) - это программная библиотека компьютерного зрения и машинного обучения с открытым исходным кодом. OpenCV была создана для обеспечения общей инфраструктуры для приложений компьютерного зрения и ускорения использования машинного восприятия в коммерческих продуктах. Будучи продуктом с лицензией BSD, OpenCV упрощает использование и модификацию кода для коммерческих организаций [11].
Библиотека содержит более 2500 оптимизированных алгоритмов, которые включают в себя полный набор как классических, так и современных алгоритмов компьютерного зрения и машинного обучения [15]. Эти алгоритмы могут использоваться для обнаружения и распознавания лиц, идентификации объектов, классификации действий человека в видео, отслеживания движения камеры, отслеживания движущихся объектов,
извлечения 3D-моделей объектов, создания 3D-облаков точек со стереокамер,
сшивки изображений для получения изображения всей сцены в высоком разрешении, поиска похожих изображений из базы данных изображений, удаления красных глаз с изображений, сделанных с использованием вспышки, отслеживания движения глаз, распознавания пейзажей и установки маркеров для наложения на них дополненной реальности и т.д. Сообщество пользователей OpenCV насчитывает более 47 тысяч человек, а количество загрузок превышает 18 миллионов. Библиотека активно используется в компаниях, исследовательских группах и правительственных органах.
Наряду с такими известными компаниями, как Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota, которые используют эту библиотеку, существует множество стартапов, таких как Applied Minds, VideoSurf и Zeitera, которые широко используют OpenCV. Области применения OpenCV охватывают широкий диапазон: от сшивки изображений Streetview, обнаружения вторжений в видео наблюдения в Израиле, мониторинга шахтного оборудования в Китае, помощи роботам в навигации и подборе объектов в Willow Garage, обнаружения несчастных случаев при утоплении в бассейне в Европе, запуска интерактивного искусства в Испании и Нью- Йорке, проверки взлетных полос на наличие мусора в Турции, проверки этикеток на продуктах на фабриках по всему миру до быстрого обнаружения лиц в Японии.
Она имеет интерфейсы C++, Python, Java и MATLAB и поддерживает Windows, Linux, Android и Mac OS. OpenCV в основном ориентирован на приложения для зрения в реальном времени и использует преимущества инструкций MMX и SSE, когда они доступны. В настоящее время активно разрабатываются полнофункциональные интерфейсы CUDA и OpenCL. Существует более 500 алгоритмов и примерно в 10 раз больше функций, составляющих или поддерживающих эти алгоритмы. OpenCV написан на родном языке C++ и имеет шаблонизированный интерфейс, который легко работает с контейнерами STL.
Для решения задачи с распознованием геометрических фигур мы будем применять преобразование Хафа. Данный метод существует в библиотеке OpenCV. Рассмотрим его подробнее ниже.
Преобразование Хафа - это метод выделения признаков для обнаружения простых форм, таких как круги, линии и т.д. на изображении.
Простая фигура - это фигура, которая может быть представлена всего несколькими параметрами. Например, линия может быть представлена двумя параметрами (наклон, перехват), а окружность имеет три параметра - координаты центра и радиус (x, y, r). Преобразование Хафа отлично справляется с поиском таких фигур на изображении.
Давайте посмотрим, как работает преобразование Хафа на примере.

Рисунок 6 – Линия в оси Oxy6




Для преобразований Хафа мы будем выражать линии в системе координат Oxy (рисунок 6). Следовательно, уравнение линии [12] может быть записано как:
, (1)





6 Составлено автором по: [11]


, (2)
где r – радиус.
В общем случае для каждой точки (x0,y0) мы можем определить семейство прямых, проходящих через эту точку, как:
, (3)
Это означает, что каждая пара (rθ,θ) представляет каждую линию, проходящую через (x0,y0).
Если для заданного (x0,y0) построить семейство линий, проходящих через него, то мы получим синусоиду [13]. Например, для x0=8 и y0=6 мы получим следующий график (в плоскости θ - r), представлено на рисунке 7:

Рисунок 7-График синусоиды7

Мы рассматриваем только точки, такие что r>0 и 0<θ<2π.


Мы можем проделать ту же операцию для всех точек изображения. Если кривые двух разных точек пересекаются в плоскости θ - r, это означает, что обе точки принадлежат одной прямой[13]. Например, следуя приведенному
примеру и построив график еще для двух точек (рисунок 8): x1=4, y1=9 и x2=12, y2=3, получим:

Рисунок 8 – График для двух других точек8

Три графика пересекаются в одной точке (0.925,9.6), эти координаты являются параметрами (θ,r) или линией, на которой лежат (x0,y0), (x1,y1) и (x2,y2).


Что означает все вышеперечисленное? Это значит, что в общем случае линию можно определить, найдя количество пересечений между кривыми. Чем больше кривых пересекается, тем больше точек у линии, представленной этим пересечением. В общем, мы можем определить порог минимального количества пересечений, необходимых для обнаружения линии.
Именно это и делает линейное преобразование Хафа. Оно отслеживает пересечения между кривыми каждой точки изображения [12]. Если число пересечений превышает некоторый порог, то оно объявляет их линией с параметрами (θ,rθ) точки пересечения.
Библиотека OpenCV включает в себя метод распознавания окружностей, которую будем использовать на практике и рассмотрим подробно в главе 3.

    1. Download 1,96 Mb.

      Do'stlaringiz bilan baham:
1   ...   4   5   6   7   8   9   10   11   ...   19




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish