ALGORITHM FOR FINDING THE CONTOUR OF A BUSINESS REMAINDER OF A NON-STANDARD FORM USING DIGITAL PHOTOGRAPHY USING THE PYTHON PROGRAMMING LANGUAGE BASED ON THE OPENCV COMPUTER VISION LIBRARY

Abstract


In the modern world, due to the rapid development of technologies and the growth of their volumes, there is a need for timely search for information contained in digital images. The discovery of objects in photos is of great interest due to their wider use in everyday life. This technology was driven by an increase in computing power available in software and hardware. In the scientific field, the problem of finding and recognizing objects in an image is quite relevant, but they are focused on recognizing their contours, without reducing the contour to real dimensions, and do not solve the problem in full. Purpose: develop an algorithm for finding the contour of the business balance, non-standard form, from a digital photo. Methods: after correcting the perspective of the digital photo, to get a top - down view, the contour of the A4 sheet was found to bring the image to real dimensions. After getting the image with the actual dimensions, the contour of the business remainder is found. Results: the perspective correction functions allow you to get a top-down view of the image to get accurate contours. Using the Canny segmentation method, all the contours in the image were found. Approximating the image contours, the contour of the A4 sheet with its coordinates is found. After calculating the Euclidean distance between the coordinates and comparing it with the known dimensions of the A4 sheet, the image is converted to the exact size, where 1 pixel in the image is equal to 1 mm. After performing a number of morphological operations, a single closed contour with real dimensions is obtained, which contains all the coordinates of the business remainder. The efficiency of the algorithm is analyzed and the main advantages of the algorithm are revealed. Practical relevance: the developed algorithm allows you to reduce the time spent on manual measurements, and the resulting contour receives real data on the business balance.

Full Text

Введение. В современном мире в связи со стремительным развитием технологий и ростом их объемов возникает необходимость в своевременном извлечении информации, содержащейся на цифровых изображениях, с целью использования этой информации в различных областях человеческой деятельности. Одной из этих областей является производство, в котором после использования листового материала остаются деловые остатки. Деловыми остатками (ДО) называют остатки материала от раскроя, которые складируют и в дальнейшем используют для производства деталей. Их рассматривают как листы меньшего размера. Вопрос использования деловых остатков актуален в настоящее время, поскольку это решает ряд задач производства по хранению, утилизации и повторному использованию остатков. Для повторного использования ДО их необходимо измерить. Замеры вручную могут занять много времени, а сфотографировав остатки и взяв всю необходимую информацию о размерах из цифровой фотографии, можно значительно сократить время работы на производстве. В научной и производственной сфере достаточно актуальна задача нахождения и распознавания объектов на изображении. В основном рассмотрены методы нахождения текстовой информации [1] и биометрических персональных данных [2-4]. Авторы многократно рассматривают алгоритмы распознавания лиц [2, 4] и нахождения контурной границы [5-6]. Цель: разработать алгоритм нахождения контура ДО нестандартной формы по цифровой фотографии. В отличие от вышеперечисленных методов конечным результатом алгоритма является контур с реальными размерами ДО. Для реализации поставленной цели необходимо выполнить следующие задачи: 1) проанализировать методы существующих решений; 2) разработать модель нахождения изображения с реальными размерами; 3) реализовать нахождение контура делового остатка; 4) провести эксперименты времени работы алгоритма. Данный алгоритм разработан средствами языка программирования Python на основе библиотек OpenCV [7], NumPy и Image. 1. Анализ существующих решений нахождения деловых остатков. Используя фотографию ДО нестандартной формы, необходимо получить контур, содержавший в себе n точек границ контура. ДО на фотографии может находиться под любым углом (рис. 1). Для приведения изображения к реальным размерам на ДО положен лист формата А4. Главное условие - ДО должен поместиться на фотографии. Соблюдение этого условия влияет на точность измерения. Располагать лист А4 необходимо вертикально на поверхности ДО (см. рис. 1). Фон фотографии не должен совпадать с цветом ДО: если цвет остатка темный, то фон должен быть светлым, и, наоборот, границы листа А4 должны хорошо выделяться на изображении. Рис. 1. Пример расположения ДО и листа формата А4 Подобная задача была рассмотрена в работе [8]. В ней рассмотрен алгоритм контурной сегментации и распознавания образцов объектов. В данном исследовании над изображением проведена предварительная обработка, далее выделены контуры для формирования словаря признаков, после чего шло сопоставление образцов с эталонами из базы данных. Данный метод лишь частично подходит для реализации алгоритма, так как в нем рассмотрено только нахождение контура без его приведения к реальным размерам. Задача обнаружения объекта включает в себя распознавание объекта, присутствующего в изображении, а также локализацию, чтобы вычислить ограничивающую рамку вокруг него. Эта проблема в области компьютерного зрения изучена в работах [9, 10, 11, 12]. В этих методах обычно используется информация о цветной камере. Во многих средах методы, основанные на сверточных нейронных сетях (CNNs), демонстрируют очень высокую точность обнаружения объектов. Тем не менее эти методы уязвимы к ошибкам из-за качества цветных изображений, освещения и отсутствия цветового дифференцирования для обнаружения объекта. В статье [13] для нахождения объектов и их размеров на изображении собираются мультимодальные данные с помощью пользовательского приложения Android. Также выполняется предварительная обработка данных для выполнения пространственно-временного выравнивания информации датчика о камере. Пространственное выравнивание требуется из-за разницы в положении камеры на мобильном устройстве. Временное выравнивание требуется из-за временного промежутка между сбором данных камеры. Таким образом, учитывается разница в положении устройства в разных случаях, когда собирается информация. После этого выравнивания получают информацию о глубине для некоторых пикселей цветных изображений камеры. Для получения информации о глубине для всех пикселей выполняется билинейная интерполяция и используется k-d-дерево для быстрого поиска ближайшего пикселя с информацией о глубине. Реализуется несколько методов расчета размеров интересующего объекта в метрах и показывается работоспособность в различных средах как внутри помещения, так и снаружи. Основными проблемами данного метода являются уязвимость к ошибкам из-за качества цветных изображений камеры, освещение и отсутствие цветового дифференцирования для обнаружения объекта. Также он имеет большую погрешность в расчетах. Так, задокументировано, что датчики, используемые в [13], демонстрируют погрешности, равные 4 см. Даже при более высокой точности, используя лидарные датчики, погрешность равна 2 см. Таким образом, сформирована задача нахождения контура ДО. Рассмотрены существующие модели решения задачи. Выявлены их основные недостатки. 2. Модель нахождения контура делового остатка. С учетом рассмотренных выше моделей сформирован порядок действий для реализации алгоритма (рис. 2). Исправление перспективы изображения необходимо для получения вида «сверху вниз» (рис. 3) из цифровой фотографии. Для исправления перспективы использована библиотека алгоритмов обработки изображений, компьютерного зрения, а также численных алгоритмов общего назначения OpenCV и библиотека NumPy. NumPy - это одна из основных Python-библиотек с поддержкой массивов. Изображение представляет собой стандартный массив NumPy, содержащий пиксели точек данных. Таким образом, при выполнении основных NumPy-операций можно изменять пиксельные значения изображения. Для исправления перспективы ДО вписан в прямоугольник ABCD (см. рис. 3), и при помощи его вершин вычислена матрица преобразования перспективы. После нахождения матрицы применяется преобразование перспективы к изображению. Рис. 2. Алгоритм нахождения контура ДО Используя функцию cv2.getPerspectiveTransform (src, dst), найдена матрица преобразования перспективы. Эта функция требует двух аргументов, списка координат вершин описывающего четырехугольника src, и dst, который является списком преобразованных точек, т.е. cv2.getPerspectiveTransform возвращает матрицу М, которая вычисляет 3×3 матрицу аффинного преобразования так, что: (1) где dst(i) = ( , ), src(i) = (xi, yi), j = 0, 1, 2, 3. Рис. 3. Преобразование перспективы Матрица применятся в функции cv2.warpPerspective (src, M, dsize) → dst, результатом которой является желаемое изображение вида «сверху вниз». Эта функция требует три аргумента, входное изображение src, матрицу преобразования перспективы М и размеры выходного изображения dsize. Функция warpPerspective преобразует исходное изображение с помощью матрицы: . (2) Получив изображение с исправленной перспективой, необходимо найти контур листа А4. Перед нахождением контуров необходимо провести предварительную обработку изображения. Задачей предварительной обработки является эффективное подавление шума при сохранении важных для последующего распознавания элементов изображения [14]. Использование возможностей обработки изображений значительно расширилось за последние годы [15], охватывая такие области, как криминалистика и медицина [16]. Для подавления шума использован фильтр Гаусса [17] (рис. 4). Рис. 4. Отфильтрованное изображение Для этого применим функцию cv2.GaussianBlur(src, ksize, sigmaX) → dst. Первый параметр src - это массив фотографии, далее ksize - размер ядра фильтра, чем больше значение, тем больше размытие (значения должны быть нечетными). Далее идет sigmaX, стандартное отклонение по оси X. В нашем случае размер ядра размытия (5, 5). Различное множество алгоритмов определения объектов рассматривается в работе [18]: 1) примитивы Хаара; 2) Adaptive Boosting; 3) механизм AdaBoost; 4) метод Виолы-Джонса; 5) алгоритм Хафа; 6) алгоритм сравнения с шаблоном; 7) сегментация изображения. Выделение контуров является одним из методов сегментации изображений [14, 19-21]. Под сегментацией принято понимать разбиение изображения на группы пикселей по близким значениям некоторого показателя [22]. Большое распространение получили алгоритмы, основанные на выделении контурных границ с помощью вычисления первой производной (операторы Собеля и др. [23, 24]) или второй производной (оператор Лапласа [23]). В этом случае осуществляется поиск границ, которые в дальнейшем объединяются в контуры. В исследовании, приведённом в [25], показано, что методы пограничной обработки уступают по качеству выделения контуров методу, предложенному Canny [17]. Детектор границ Canny включает следующую последовательность действий. После фильтрации помех на изображении гауссовым фильтром с заданным параметром сглаживания σ в каждой точке изображения вычисляется градиент, который характеризуется значением модуля: (3) и направлением: (4) После получения величины градиента и направления производится полный анализ изображения, чтобы удалить любые нежелательные пиксели, которые не могут составлять ребро. Результатом является двоичное изображение с «тонкими краями» (рис. 5). Рис. 5. Детектор границ Canny Чтобы применить детектор границ Canny, необходимо использовать функцию cv2.Canny(image, threshold1, threshold2) → edges. Функция имеет 3 аргумента, входное изображение image, одноканальное изображение для обработки (градации серого), threshold1 - порог минимума, threshold2 - порог максимума. Для перевода изображения в одноканальное используется функция cv2.cvtColor(image, cv2.COLOR_BGR2GRAY), она принимает два аргумента и отдает итоговое изображение. Первый аргумент - исходное изображение, второй - направление трансформации цветового пространства. Получив двоичное изображение, найдены координаты всех контуров в изображении функцией cv2.findContours (image, mode, method) → contours, hierarchy. Эта функция требует трех аргументов, image-изображения, полученного детектором границ Канни, Mode-режима группировки контуров. Использован режим CV_RETR_LIST для извлечения контуров без установления каких-либо иерархических связей. Method - метод упаковки контуров. Использован метод CV_CHAIN_APPROX_SIMPLE, который склеивает все горизонтальные, вертикальные и диагональные контуры и оставляет только их конечные точки. Выходными данными функции являются contours и hierarchy. В contours каждый контур хранится в виде вектора точек, а hierarchy - необязательный выходной вектор, содержащий информацию о топологии изображения. Для проверки, является ли контур листом А4 или нет, выполнен цикл по каждому контуру. Для каждого из контуров вычислен периметр, используя функцию cv2.arcLength, далее аппроксимируем (сглаживаем) контур, используя функцию cv2.approxPolyDP. Причина, по которой используется аппроксимация контура, заключается в том, что он может не быть идеальным прямоугольником. Из-за зашумления и теней на фото вероятность того, что у листа будет ровно 4 вершины, невелика. Аппроксимируя контур, эта проблема решена. В нашем случае функции выглядят так: peri = cv2.arcLength(contours, True) approx = cv2.approxPolyDP(contours, 0.02 * peri, True) Функция cv2.approxPolyDP принимает аргументы контур contours и 0.02 * peri параметр, задающий точность аппроксимации. Результат выполнения approx, вектор координат контура. Если количество координат равно четырем, то контур является четырехугольником (рис. 6). Рис. 6. Координаты листа А4 После нахождения четырехугольника по его координатам найдены длины его сторон, вычислив евклидово расстояние между точками i и j: . (5) Рассчитав ширину и длину листа А4 на изображении, найдем, во сколько раз необходимо уменьшить или увеличить ширину и длину изображения относительно реальных размеров листа А4, чтобы пиксельное значение ширины и длины изображения в миллиметрах соответствовало реальным размерам. Вычислив новые значения ширины и длины изображения, с помощью библиотеки Image изменим размеры изображения на новые, используя функцию Image.resize(size). Эта функция требует один аргумент size, запрошенный размер в пикселях, как 2-кортеж (ширина, высота). Результатом выполнения функции является изображение заданного размера. Для проверки, корректно ли был найден лист А4 на изображении, повторно находим его координаты на новом изображении с реальными размерами, используя описанный выше порядок действий. Далее находим площадь контура листа А4, используя функцию cv2.contourArea(contour). Она требует один аргумент contour, это входной вектор вершин контура, в нашем случае - вершин листа А4. Если лист найден корректно, то площадь удовлетворяет условиям: (6) Площадь листа А4 равна 62370 мм2, согласно условию площадь может иметь отклонение на 32 мм2, (7) таким образом, погрешность измерения не будет превышать ±0,05 %. Данная погрешность по ГОСТу [26] соответствует измерению штангенциркулем. Для нахождения контура ДО используем функцию cv2.Canny, чтобы получить 8-битное одноканальное изображение. Однако на изображении между вертикальными и горизонтальными полосками контура может оказаться пустое пространство. Чтобы его закрыть, произведем ряд простых морфологических операций [27]. Начнем с создания прямоугольника между полосками с помощью функции cv2.getStructuringElement(shape, ksize) → kernel. Функция требует двух аргументов - shape и ksize. Shape - форма элемента, в нашем случае четырехугольник MORPH_RECT. Размер структурирующего элемента - ksize. Функция строит и возвращает структурирующий элемент kernel, который передан в функцию morphologyEx(). Функция cv2.morphologyEx(src, op, kernel) → dst¶ производит морфологическую операцию, применив ядро к двоичному изображению, замазывая пространство между полосками. Функции необходимо три аргумента: src, op и kernel. Src - двоичное изображение, op - тип морфологической операции, в нашем случае MORPH_CLOSE, для закрытия пустого пространства, kernel - структурирующий элемент: (8) После морфологических операций над изображением находим контур делового остатка функцией cv2.findContours(), используя режим группировки RETR_EXTERNAL для извлечения внешних контуров и метод CV_CHAIN_APPROX_SIMPLE. Чтобы получить контур делового остатка, отсортируем найденные контуры с помощью функции sorted(), которая возвращает новый отсортированный список. С помощью параметра key можно указывать, как именно выполнять сортировку. Флаг reverse позволяет управлять порядком сортировки. По умолчанию сортировка будет по возрастанию элементов. В нашем случае параметр key равен cv2.contourArea, выполняя сортировку по площади контура. Отсортировав контуры, сохраняем только самый большой из них, который содержит контур ДО (рис. 7). Рис. 7. Контур ДО Таким образом, применяя функции cv2.getPerspectiveTransform, cv2.warpPerspective, получено изображение с исправленной перспективой. При помощи листа А4 получили изображение, которое соответствует реальным размерам, где 1 пиксель соответствует 1 мм. Обработав изображение детектором границ Canny и морфологической операцией morphologyEx(), найдены контуры изображения. Отсортировав их и сохранив только самый большой, нашли контур ДО, который так же содержит в себе его координаты. Результаты проведения эксперимента, применения модели нахождения ДО. В разработанном алгоритме исспользован метод обработки изображения для получения контура из работы [8]. Но он был улучшен за счет исправления перспективы, выделяет более точный контур объекта. В отличие от метода, рассмотренного в статье [12], точность нахождения ДО значительно выше, так как погрешность нахождения размеров разработанной модели равна 0,05 %, а в методе превышает 1 %. Главным недостатком является то, что в методе не выделяется контур, объекты вписывают в прямоугольник и выводят его размер, в результате получая только длину и ширину ДО. Результатом разработанного алгоритма является контур ДО с его координатами. Кроме того, обнаружение объектов на основе только цветных изображений может обеспечить относительный размер в пикселях, который не имеет никакого отношения к реальным размерам изображения. Игрушечный автомобиль рядом с камерой может казаться таким же большим, как настоящий автомобиль, который находится далеко от камеры. Трудоемкость алгоритма и метода [8] различается в том, что в разработанной модели объект на фотографии может быть изображен под любым углом, а в методе [8] для выделения более точного контура нужно выполнить ряд действий для получения изображения объекта вида «сверху вниз». Скорость работы алгоритма не критично зависит от размера изображения (таблица). Время работы программы Размер изображения Время, с 434×422 0,098 612×582 0,106 1024×992 0,113 2000×1900 0,125 3456×4608 0,146 Таким образом, проанализирована работоспособность алгоритма. Выявлены основные плюсы алгоритма в отличие от рассмотренных методов. Выводы. В работе рассмотрен алгоритм для нахождения контура ДО нестандартной формы по цифровой фотографии. В отличие от алгоритмов распознавания объектов, которые находят граничные точки контура, разработанный алгоритм имеет улучшенные функции для нахождения реальных размеров ДО. Функция исправления перспективы позволяет получить изображение вида «сверху вниз». Контуры, полученные с этого преобразования, точнее передают форму ДО, повышая таким образом точность для дальнейшего использования листового материала. Используя метод сегментации, который играет важную роль в системах компьютерного зрения для решения задач, связанных с распознаванием и выделением объектов, были найдены все контуры в изображении. Используя апроксимацию для нахождения листа А4, найдены его коодинаты. Вычислив евклидово расстояние между координатами и сравнив с известными размерами листа А4, преобразовали изображение к точному размеру, где 1 пиксель в изображении равен 1 мм. Выполнив ряд морфологических операций, получен единый замкнутый контур с точными размерами, который содержит все координаты ДО. Полученные данные возможно внести в базу данных для дальнейшего использования. Разработанный алгоритм позволяет сократить время, которое тратится при ручных замерах, а контур, полученный в результате, в отличие от стандартных алгоритмов нахождения объектов передает точные данные ДО. Перспективой для дальнейших исследований является доработка алгоритма, чтобы реализовать возможность выбирать шаблон для приведения изображения к реальным размерам, используя не только лист А4. Эта функция позволит работать с ДО любых размеров.

About the authors

V. R Zaynikova

Perm National Research Polytechnic University

S. A Zykin

Perm National Research Polytechnic University

R. A Fayzrahmanov

Perm National Research Polytechnic University

References

  1. Нанавова Т.А. Алгоритм извлечения текста из видео с использованием библиотеки компьютерного зрения OPENCV // Ростовский научный журнал. - 2016. - № 7. - С. 21-40.
  2. Михалин Д.А., Белов Ю.С. Применение библиотеки OPENCV для задачи распознавания лиц // Актуальные проблемы авиации и космонавтики. - 2016. - № 12. - С. 558-559.
  3. Назарова Т.Ю., Лавров Д.Н. Компьютерное моделирование идентификации личности по радужной оболочке глаза на основе OPENCV // Математические структуры и моделирование. - 2014. - № 1(29). - С. 43-64.
  4. Тихонова Т.С., Белов Ю.С. Основные подходы к отслеживанию и распознаванию лица // Наука, техника и образование. - 2016. - № 2(6). - С. 111-115.
  5. Lienhart R., Kuranov A., Pisarevsky V. Empirical Analysis of Detection Cascades of Boosted Classifiers for Rapid Object Detection: MRL Technical Report, 2002.
  6. Чабан Л.Н. Методы и алгоритмы распознавания образов в автоматизированном дешифрировании данных дистанционного зондирования: учеб. пособие. - М.: Изд-во МИИГАиК, 2016. - 94 с.
  7. Bradsky G., Kaehler A. Learning OpenCV. - O’Reilly, 2008. - P. 571.
  8. Нгуен К.М., Колючкин В.Я. Алгоритмы контурной сегментации и распознавания образов объектов систем технического зрения // наука и образование: научное издание МГТУ им. Н.Э. Баумана. - 2013. - № 4. - С. 187-200.
  9. You only look once: Unified, real-time object detection / J. Redmon, S.K. Divvala, R.B. Girshick, A. Farhadi // CoRR. - 2015. - abs/1506.02640.
  10. Rich feature hierarchies for accurate object detection and semantic segmentation / R.B. Girshick, J. Donahue, T. Darrell, J. Malik // CoRR. - 2013. - abs/1311.2524.
  11. Girshick R.B. Fast R-CNN // CoRR. - 2015. - abs/1504.08083.
  12. Faster R-CNN: towards real-time object detection with region proposal networks / S. Ren, K. He, R.B. Girshick, J. Sun // CoRR. - 2015. - abs/1506.01497.
  13. Estimating the Object Size from Static 2D Image / O. Kainz, M.W. Horecny, F. Jakab, D. Cymbalak // CoRR. - 2015. - P. 15-17.
  14. Яне Б. Цифровая обработка изображений: пер. с англ. - М.: Техносфера, 2007. - 584 с.
  15. Chang P.L., Teng W.G. Exploiting the self-organizing map for medical image segmentation in Computer-Based Medical Systems // Twentieth IEEE International Symposium on. - 2007. - P. 281288.
  16. Zhou Z.J., Wu H. Digital Image Processing. Part 1. Ventus Publishing ApS. - 2010.
  17. Canny J.E. A computational approach to edge detection // IEEE Trans Pattern Analysis and Machine Intelligence. - 1986. - No. 8. - Р. 679-698.
  18. Алгоритмы распознавания объектов / А. А. Цветков, Д. К. Шорох, М. Г. Зубарева, С. В. Юрсков, А. В., Шуклин А. Л. Хамуш, И. Б. Ануфриев // Технические науки: проблемы и перспективы. - 2016. - С. 20-28.
  19. Шитова О.В., Пухляк А.Н., Дроб Е.М. Анализ методов сегментации текстурных областей изображений в системах обработки изображений // Научные ведомости Белгород. гос. ун-та. Сер. Экономика. Информатика. - 2014. - № 8(179). - С. 182-188.
  20. Родзин С.И., Родзина О.Н., Эль-Хатиб С.А. Гибридный муравьиный алгоритм сегментации медицинских изображений // Вестник Чувашского ун-та. - 2017. - № 3. - С. 262-272.
  21. Комков В.С., Дюдин М.В. Метод сегментации растровых изображений на основе выбора оптимальных направлений обработки пикселей изображения // Российская наука и образование сегодня: проблемы и перспективы. - 2015. - № 2(5). - С. 151-154.
  22. Шапиро Л., Стокман Дж. Компьютерное зрение. - М.: Бином, 2006. - 752 с.
  23. Гонзалес Р., Вудс Р. Цифровая обработка изображений. - М.: Техносфера, 2006. - 1072 с.
  24. Rosenfeld A., Kak A.C. Digital Picture Processing. - New York: Academic press, 1976.
  25. Стругайло В.В. Обзор методов фильтрации и сегментации цифровых изображений // Наука и образование: научное издание МГТУ им. Н.Э. Баумана. - 2012. - № 5. - С. 17.
  26. ГОСТ 166-89. Межгосударственный стандарт. Штангенциркули. Технические условия // Доступ из справ.-правовой системы КонсультантПлюс.
  27. Власов А.А. Метод контурной сегментации канни с использованием морфологических операций // Решетневские чтения. - 2010. - № 2. - С. 479.

Statistics

Views

Abstract - 79

PDF (Russian) - 14

Refbacks

  • There are currently no refbacks.

Copyright (c) 2022 PNRPU Bulletin. Electrotechnics, Informational Technologies, Control Systems

This website uses cookies

You consent to our cookies if you continue to use our website.

About Cookies