Компьютерное зрение в задачах контроля качества (OpenCV)

Автор 541ob_Egorov, Четверг, февраля 26, 2026, 20:05:07

« предыдущая тема - следующая тема »
Вниз

541ob_Egorov

 Тема: "Компьютерное зрение в задачах контроля качества (OpenCV)"
 Исполнитель: Егоров Илья Никитович, гр. 541-об
 Научный руководитель: Русинов Владислав Леонидович, СКБ "Промышленная робототехника и автоматизация"
 Актуальность: Традиционный визуальный контроль качества силами человека перестает отвечать требованиям современных производств: он субъективен, медлителен и неэффективен на высокоскоростных линиях. На смену приходят технологии компьютерного зрения, обеспечивающие круглосуточный мониторинг с точностью свыше 98%. Библиотека OpenCV с открытым кодом становится доступным инструментом для создания таких систем, позволяя предприятиям сокращать брак и издержки. В связи с этим анализ возможностей компьютерного зрения для автоматизации контроля качества представляет высокую практическую значимость.
 План:
 1. Задачи технического зрения на производстве: распознавание объектов, измерение размеров, поиск дефектов.
 2. Библиотека OpenCV: основные модули (imgproc, core, highgui).
 3. Этапы обработки изображения: захват кадра, фильтрация (размытие, бинаризация), поиск контуров, сравнение с эталоном.
 4. Демонстрация алгоритма (в коде или на блок-схеме) проверки целостности детали или чтения штрих-кода.
 5. Оборудование: промышленные камеры, освещение. Иллюстрации: Исходное изображение детали -> изображение после пороговой обработки -> выделенные контуры; примеры годных и бракованных деталей; схема расположения камеры над конвейером.
 Источники: Документация OpenCV, книга Р. Гонсалеса («Цифровая обработка изображений»), статьи по машинному зрению.

ran

Это всё очень хорошо. Но давайте "пофантазируем". Пусть предприятие производит шоколадные конфеты, строительный кирпич, или что-то другое. Сами придумайте. Как это всё дело будет там использоваться? Поощряются любые фонтазии.

541ob_Egorov

Кондитерская фабрика

Конфеты глазируются шоколадом на конвейере. Часто бывают «сколы», «наплывы», а также конфеты могут слипаться по две. Кроме того, важно, чтобы в каждой ячейке лежала конфета строго определенного сорта, а упаковщицы иногда путают.

Работа системы компьютерного зрения:

1. Контроль геометрии (этап глазировки):
   · Камера висит над конвейерной лентой.
   · OpenCV получает кадр, переводит его в оттенки серого и применяет пороговую обработку (бинаризацию), чтобы отделить конфету от фона.
   · Функция findContours() находит контуры каждой конфеты.
   · Анализ: Если количество контуров на ленте меньше расчетного (конфеты слиплись) -- drawContours рисует красный прямоугольник вокруг дефекта. Если площадь контура сильно отличается от эталона (скол или наплыв) -- конфета бракуется. Сжатый воздух сдувает бракованную конфету с ленты.
2. Сортировка (этап упаковки):
   · Перед падением в коробку конфета проходит под второй камерой.
   · Анализ цвета (цветовая гистограмма): Система смотрит на гистограмму изображения. Конфета с орехом имеет один оттенок (светло-бежевый), с кремом -- другой.
   · Анализ текстуры (анализ Фурье): Поверхность конфеты с вафельной крошкой дает "шумную" текстуру в частотной области, а гладкая помадка -- "спокойную".
   · Если конфета летит не в свой ряд, контроллер останавливает конвейер и зажигает лампу.
---
Кирпичный завод

Например на кирпиче остались трещины после обжига, сколы углов и неравномерность цвета (пережог/недожог), которая влияет на сортность (первый сорт идет на фасад, второй -- на перегородки).

Работа системы компьютерного зрения:

1. Контроль целостности (поиск трещин):
   · Кирпичи проходят через туннель с мощным боковым освещением. Трещины создают тень.
   · OpenCV применяет детектор границ Canny.
   · Алгоритм: Если длина найденной линии (трещины) превышает допустимую норму (например, 5 мм), система помечает кирпич как «бой». Манипулятор снимает его с линии.
2. Контроль цветокалибровки (сортность):
   · Камера делает снимок кирпича.
   · OpenCV переводит изображение в цветовое пространство HSV (Hue -- тон, Saturation -- насыщенность). Это удобнее, чем RGB, для оценки цвета.
   · Система смотрит на значение тона (Hue). Если тон попадает в зеленый диапазон (пережог) или слишком бледный, кирпич автоматически направляется в штабель второго сорта.

ran

Спасибо большое за такой качественный ответ.
Сразу видно, что Вы в теме. Выкладывайте доклад.
(есть, правда, такое подозрение, что после внедрения систем контроля качества у нас придется закрыть половину конфетных фабрик и кирпичных заводов :) 

541ob_Egorov

1. Введение: Роль компьютерного зрения в современном промышленном контроле качества.

1.1 Актуальность применения систем технического зрения.

В эпоху четвертой промышленной революции (Индустрия 4.0) происходит глубокая трансформация производственных процессов, основанная на слиянии физического и цифрового миров. Согласно отчету, Rockwell Automation за 2025 год, 95% производителей уже инвестировали или планируют инвестировать в машинное обучение и искусственный интеллект в ближайшие пять лет, причем 50% респондентов намерены использовать эти технологии именно в контроле качества.

Традиционные методы контроля качества, полагающиеся на визуальный осмотр человеком, сталкиваются с серьезными ограничениями:

· Субъективность оценки: разные операторы могут по-разному интерпретировать одни и те же дефекты.
· Низкая скорость: человек не способен эффективно работать на высокоскоростных линиях производства.
· Утомляемость: внимание оператора снижается после нескольких часов монотонной работы.
· Масштабируемость: сложность увеличения объемов контроля пропорционально росту производства.

1.2 Эволюция методов промышленного контроля.

Промышленный визуальный контроль прошел несколько этапов развития:

1) Ручной контроль: Визуальный осмотр человеком, субъективность, низкая скорость.
2) Традиционное машинное зрение: Правила и эвристики, эффективно для ограниченной вариативности.
3) Глубокое обучение: Автоматическое выявление признаков, высокая точность, адаптивность.
4) Мультимодальный интеллект: Комбинация визуальных, акустических и других данных.

Традиционное машинное зрение (rule-based MV) десятилетиями использовало такие методы, как детекция границ, сопоставление с шаблоном, цветовой анализ и морфологические операции. Однако такие подходы показывают ограниченную эффективность при работе с большим разнообразием продукции или непредсказуемыми дефектами.
 
1.3 Компьютерное зрение как ключевая технология автоматизации контроля.

Компьютерное зрение, реализованное с помощью библиотеки OpenCV (Open Source Computer Vision Library), становится фундаментом для создания интеллектуальных систем контроля качества. OpenCV предоставляет обширный набор алгоритмов для решения широкого спектра задач:

·Обнаружение поверхностных дефектов: царапины, вмятины, сколы, изменения цвета
·Контроль геометрических размеров: проверка соответствия деталей заданным допускам
· Верификация сборки: подтверждение правильности установки компонентов
· Сортировка продукции: распознавание и классификация объектов

Современные исследования показывают, что точность обнаружения и классификации дефектов с использованием методов компьютерного зрения часто превышает 95%, а в контролируемых условиях достигает 98-100%.

1.4 Терминология: автоматический оптический контроль (AOI).

В промышленной сфере задача компьютерного зрения для контроля качества получила название автоматический оптический контроль (AOI -- Automated Optical Inspection). Термин возник в производстве печатных плат, где камеры сканируют каждую плату для выявления критических дефектов, и распространился на другие отрасли.

Сегодня оптический контроль использует различные типы камер (инфракрасные, 3D-камеры) и сложные алгоритмы для обнаружения дефектов, классификации и других целей в тысячах производств.

1.5 Цель и задачи доклада.

Цель данного доклада -- рассмотреть применение библиотеки OpenCV для автоматизации контроля качества на промышленных предприятиях, проанализировать основные методы обработки изображений и представить практические примеры реализации.

Задачи:
1) Изучить основные этапы обработки изображений в задачах контроля качества.
2) Рассмотреть методы выделения и анализа объектов на изображениях.
3) Проанализировать архитектуру типовой системы технического зрения.
4) Представить примеры реализации для различных типов производства.

2. Основные этапы обработки изображений в задачах контроля качества.

В системах автоматического контроля качества обработка изображения представляет собой последовательный конвейер преобразований, цель которого -- выделить объекты контроля и подготовить их для анализа. Типовая архитектура AOI-системы включает следующие ключевые этапы:

1) Захват изображения.
2) Предварительная обработка (улучшение качества).
3) Сегментация (выделение объектов).
4) Анализ и классификация.


2.1 Захват изображения.

Первый этап -- получение цифрового изображения контролируемого объекта с помощью промышленных камер. Качество исходных данных критически влияет на успех всей последующей обработки.

Типы камер в промышленности:

· Инфракрасные камеры -- для контроля тепловых процессов.
· 3D-камеры -- для измерения геометрии объектов.
·Высокоскоростные камеры -- для контроля на быстро движущихся конвейерах.

В OpenCV захват изображения реализуется через класс VideoCapture для подключения к камере или загрузки изображения функцией imread() .
Пример загрузки изображения в OpenCV:

*******************************************************************************
Mat img = imread("input_image.jpg", 0); // 0 - загрузка в оттенках серого
if(img.data == NULL) {
    cout << "Ошибка загрузки изображения" << endl;
    return 0;
*******************************************************************************

2.2 Предварительная обработка.

Это наиболее важный этап, от которого зависит до 80% успеха. Задача предварительной обработки -- минимизировать влияние внешних факторов (шум, освещение, пыль) и подготовить изображение для корректной сегментации.

2.2.1 Удаление шума.

Шумы возникают из-за несовершенства сенсоров и электроники и могут быть ошибочно приняты за дефекты. Типы шумов: гауссов шум, импульсный шум.

Методы фильтрации в OpenCV:

- Медианный фильтр (medianBlur()): эффективен против импульсного шума, сохраняет границы объектов.
- Гауссов фильтр (GaussianBlur()): сглаживает гауссов шум, но размывает границы.
-  Фильтр усреднения (blur()): простое сглаживание.

Медианный фильтр особенно важен для задач контроля качества, так как он удаляет шум, сохраняя резкость границ объектов.

***********************************
Mat img_noise;
medianBlur(img, img_noise, 3);
***********************************

Например, на изображении крепежных деталей (винтов, гаек) применение медианного фильтра удаляет шум, сохраняя при этом мелкие детали, такие как резьба.

2.2.2 Компенсация неравномерного освещения.

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

Алгоритм:

1. Получить изображение фона (сцены без объектов) при том же освещении -- световой шаблон (light pattern)
2. Применить математическую операцию для вычитания фона

Два подхода:

1.  Вычитание (Difference): R = L - I, где L -- световой шаблон, I -- исходное изображение.
2. Деление (Division): R = 255 * (1 - (I / L)) -- более эффективно для коррекции неравномерной освещенности.

Результат применения такой коррекции показан на рис. 1: после удаления фона и пороговой обработки изображение практически не содержит артефактов освещения, что значительно упрощает выделение объектов.

2.2.3 Улучшение контраста и пороговая обработка (Thresholding).

После очистки от шума и коррекции освещения изображение обычно преобразуют в бинарное (черно-белое), где объекты отделены от фона.

Методы бинаризации в OpenCV:

**********************************************************
// Простая пороговая обработка
threshold(img, img_thresh, 100, 255, THRESH_BINARY);

// Адаптивная пороговая обработка (учитывает локальную освещенность)
adaptiveThreshold(img, img_adapt_thresh, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 11, 2);
*********************************************************

Адаптивная пороговая обработка часто дает лучшие результаты на изображениях с неравномерным фоном.


2.3 Сегментация объектов.

Сегментация -- процесс разделения изображения на содержательные области, соответствующие отдельным объектам. В OpenCV доступны два основных подхода.

2.3.1 Поиск контуров.

Метод основан на выделении границ объектов и их замыкании в контуры.

Алгоритм поиска контуров включает:

1. Детектор границ Canny -- находит пиксели, где яркость резко меняется.
2. Морфологическое замыкание -- соединяет разорванные границы.
3. Функция findContours() -- выделяет замкнутые контуры.

**********************************
// Этапы контурного анализа
Mat edges;
Canny(img_blur, edges, 50, 150);          // детектор границ
dilate(edges, edges, Mat());               // морфологическое расширение
erode(edges, edges, Mat());                 // морфологическое сужение
findContours(edges, contours, hierarchy, RETR_TREE, CHAIN_APPROX_SIMPLE);
**********************************

После получения контуров можно анализировать их свойства: площадь, периметр, компактность и т.д.

2.3.2 Связные компоненты.

Альтернативный подход -- выделение связных областей пикселей. Функция connectedComponentsWithStats() не только находит объекты, но и возвращает их статистические характеристики: площадь, центроид, ограничивающий прямоугольник.

**********************************
Mat labels, stats, centroids;
int num_objects = connectedComponentsWithStats(img_binary, labels, stats, centroids);
**********************************

Для каждого объекта (компоненты) доступны:

· stats.at<int>(i, CC_STAT_LEFT) -- координата X левого верхнего угла
· stats.at<int>(i, CC_STAT_TOP) -- координата Y
· stats.at<int>(i, CC_STAT_WIDTH) -- ширина
· stats.at<int>(i, CC_STAT_HEIGHT) -- высота
· stats.at<int>(i, CC_STAT_AREA) -- площадь в пикселях

Этот метод особенно эффективен для подсчета количества объектов на изображении, даже если они соприкасаются (но не перекрываются).

2.3.3 Особый случай: подсчет соприкасающихся объектов.

Если объекты плотно прилегают друг к другу, стандартный поиск контуров может объединить их в один. Решение -- анализ на основе площадей:

1. Вычислить площадь эталонного одиночного объекта (S_ref)
2. Для каждого контура вычислить его площадь (S_contour)
3. Количество объектов в контуре: N = round(S_contour / S_ref)
Этот метод работает при условии, что объекты не перекрываются, а расстояние до камеры фиксировано.


2.4 Извлечение признаков.

После того как объекты выделены (сегментированы), необходимо описать их количественными характеристиками для последующей классификации.

Геометрические признаки:

· Площадь (Area)
· Периметр (Perimeter)
· Компактность: Compactness = Perimeter² / (4π × Area)
· Отношение сторон ограничивающего прямоугольника (Aspect Ratio)
· Заполненность (Solidity = Area / Convex Hull Area)

Признаки формы (моменты):
Моменты изображения (функция moments()) позволяют вычислить центр масс объекта и инвариантные моменты (Hu moments), которые не зависят от масштаба, поворота и сдвига .

***********************************
Moments m = moments(contour);
double area = m.m00;
double center_x = m.m10 / area;
double center_y = m.m01 / area;
***********************************


2.5 Классификация.

Завершающий этап -- принятие решения о принадлежности объекта к определенному классу (годен/брак, тип детали). Классификация может выполняться:

1. По правилам (rule-based): на основе пороговых значений признаков (например, если площадь < 1000 пикселей -- объект слишком мал → брак).
2. С помощью машинного обучения: обученный классификатор (SVM, Random Forest) принимает решение на основе вектора признаков.
3. С использованием глубокого обучения: нейросети (YOLO, ResNet) для сложных случаев распознавания.


В промышленных системах результат классификации передается в исполнительные механизмы (пневматический толкатель, сигнализация, робот-манипулятор) для автоматической сортировки продукции.


2.6 Обобщенная схема обработки

Объединяя все этапы, получаем типовой конвейер AOI-системы:

Захват изображения → Удаление шума → Коррекция освещения → Бинаризация → Сегментация (контуры/компоненты) → Извлечение признаков →ККлассификация → Управляющий сигнал.

Каждый этап может быть адаптирован под конкретное производство: для шоколадных конфет критичны цвет и форма, для кирпича -- целостность и размер, для таблеток -- наличие и чистота поверхности.

3. Методы выделения и анализа объектов на изображениях.

После успешной предварительной обработки изображения и удаления шумов следующим критически важным этапом является выделение объектов интереса и их анализ. В системах автоматического контроля качества применяются два основных подхода к сегментации: контурный анализ и анализ связных компонент. Каждый метод имеет свои особенности и области применения.


3.1 Контурный анализ.

Контурный анализ -- один из наиболее важных и широко применяемых методов описания, хранения и распознавания объектов на изображениях.

3.1.1 Теоретические основы.

Контур -- это внешние очертания (обвод) предмета или объекта, совокупность пикселей, составляющих его границу и отделяющих объект от фона.

Ключевые положения контурного анализа:

· Предполагается, что контур содержит достаточную информацию о форме объекта.
·  Внутренние точки объекта во внимание не принимаются.
· Переход к пространству контуров существенно снижает сложность алгоритмов и вычислений по сравнению с анализом полного изображения. 

Важно понимать ограничения метода: контурный анализ имеет довольно слабую устойчивость к помехам, и любое пересечение объектов или их частичная видимость приводит либо к невозможности детектирования, либо к ложным срабатываниям. Однако простота и быстродействие позволяют успешно применять данный подход при четко выраженных объектах на контрастном фоне.

3.1.2 Поиск контуров в OpenCV.

Для поиска контуров в OpenCV используется функция cvFindContours() (в C++ API -- findContours). Функция может находить как внешние, так и вложенные контуры, определяя их иерархию вложения.


Параметры поиска контуров:

mode
 CV_RETR_EXTERNAL - Найти только крайние внешние контуры
 CV_RETR_LIST - Найти все контуры и разместить их списком
 CV_RETR_CCOMP - Найти все контуры и организовать в двухуровневую иерархию
 CV_RETR_TREE -  Найти все контуры и построить полную иерархию вложенности
method
CV_CHAIN_APPROX_NONE - Сохранить все точки контура
 CV_CHAIN_APPROX_SIMPLE - Сжимает горизонтальные, вертикальные и диагональные сегменты, оставляя только конечные точки
 CV_CHAIN_APPROX_TC89_L1 - Применяется алгоритм аппроксимации Teh-Chin
 CV_CHAIN_CODE -  Возвращает цепной код Фримана

3.1.3 Цепной код Фримана.

Особый интерес представляет метод кодирования контура с помощью цепного кода Фримана, который доступен при установке параметра method = CV_CHAIN_CODE.

Цепные коды применяются для представления границы в виде последовательности отрезков прямых линий определенной длины и направления. В основе этого представления лежит 4- или 8-связная решетка:

· Для 4-связной решетки достаточно 2 бит на направление.
· Для 8-связной решетки требуется 3 бита на направление.

Этот метод позволяет компактно хранить информацию о форме объекта и эффективно сравнивать контуры между собой.

3.1.4 Пример реализации поиска контуров

**********************************
#include <cv.h>
#include <highgui.h>
// Создание изображений
IplImage* image = cvLoadImage(filename, 1);
IplImage* gray = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
IplImage* bin = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
IplImage* dst = cvCloneImage(image);
// Преобразование в градации серого и бинаризация
cvCvtColor(image, gray, CV_RGB2GRAY);
cvInRangeS(gray, cvScalar(40), cvScalar(150), bin);
// Поиск контуров
CvMemStorage* storage = cvCreateMemStorage(0);
CvSeq* contours = 0;
cvFindContours(bin, storage, &contours, sizeof(CvContour),
               CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
// Отрисовка найденных контуров
for(CvSeq* seq = contours; seq != 0; seq = seq->h_next) {
    cvDrawContours(dst, seq, CV_RGB(255,216,0), CV_RGB(0,0,250),
                   0, 1, 8);
**********************************

3.1.5 Анализ геометрических характеристик контуров.

После выделения контуров можно извлекать различные геометрические характеристики объектов:

· Площадь контура -- количество пикселей внутри замкнутого контура.
· Периметр -- длина границы объекта.
· Компактность: Compactness = Perimeter² / (4π × Area).
· Отношение сторон ограничивающего прямоугольника (Aspect Ratio).
· Заполненность (Solidity) -- отношение площади контура к площади выпуклой оболочки.

Эти признаки особенно важны при классификации объектов, например, для различия между винтами, гайками и уплотнительными кольцами на конвейерной ленте.

3.2 Анализ связных компонент.

Альтернативный подход к выделению объектов -- анализ связных компонент, который часто оказывается более эффективным для подсчета объектов и получения их статистических характеристик.

3.2.1 Функция connectedComponentsWithStats

OpenCV предоставляет функцию connectedComponentsWithStats(), которая не только находит объекты, но и возвращает их статистические характеристики .

******************************
Mat labels, stats, centroids;
int num_objects = connectedComponentsWithStats(binaryImage, labels, stats, centroids);
******************************
Статистическая информация для каждой компоненты:

CC_STAT_LEFT
stats.at<int>(i, CC_STAT_LEFT) - Координата X левого верхнего угла
CC_STAT_TOP
stats.at<int>(i, CC_STAT_TOP) - Координата Y левого верхнего угла
CC_STAT_WIDTH
stats.at<int>(i, CC_STAT_WIDTH) - Ширина ограничивающего прямоугольника
CC_STAT_HEIGHT
stats.at<int>(i, CC_STAT_HEIGHT) - Высота ограничивающего прямоугольника
CC_STAT_AREA
stats.at<int>(i, CC_STAT_AREA) -  Площадь объекта в пикселях

3.2.2 Преимущества метода связных компонент.

Метод связных компонент особенно эффективен для:
· Подсчета количества объектов на изображении
· Получения bounding box каждого объекта без дополнительных вычислений
· Анализа объектов, которые могут соприкасаться, но не перекрываться

3.2.3 Особый случай: подсчет соприкасающихся объектов

Если объекты плотно прилегают друг к другу, стандартное выделение компонент может объединить их в один объект. В этом случае применяется метод анализа на основе площадей:
1. Вычислить площадь эталонного одиночного объекта (S_ref)
2. Для каждого контура или компоненты вычислить площадь (S_contour)
3. Количество объектов в группе: N = round(S_contour / S_ref)

Этот метод работает при условии фиксированного расстояния до камеры и отсутствия перекрытий объектов.


3.3 Извлечение признаков для классификации.

После выделения объектов необходимо перейти от пиксельного представления к набору числовых характеристик -- признаков, которые будут использоваться для классификации.

3.3.1 Геометрические признаки

Для каждого объекта вычисляются:

1. Площадь (Area) -- количество пикселей объекта
2.  Периметр (Perimeter) -- длина границы
3. Компактность (Compactness): P²/(4πA) -- показывает, насколько форма близка к кругу
4. Отношение сторон (Aspect Ratio): width/height ограничивающего прямоугольника
5.  Заполненность (Solidity): Area / ConvexHullArea
6.  Эксцентриситет (Eccentricity) -- мера вытянутости объекта

3.3.2 Моменты изображения.

Моменты изображения -- мощный математический аппарат для описания формы объектов. Функция moments() вычисляет различные моменты контура:

******************************
Moments m = moments(contour);
double area = m.m00;                    // площадь (нулевой момент)
double center_x = m.m10 / area;         // центр масс по X
double center_y = m.m01 / area;         // центр масс по Y
******************************

Инвариантные моменты Ху (Hu moments) -- семь величин, вычисляемых на основе центральных моментов, которые остаются неизменными при масштабировании, повороте и сдвиге объекта. Это делает их идеальными для распознавания объектов независимо от их положения и ориентации на конвейере.

3.3.3 Признаки текстуры и цвета.

В зависимости от типа производства могут использоваться дополнительные признаки:
· Цветовые гистограммы -- распределение цветов внутри объекта.
· Статистические характеристики текстуры -- контраст, однородность, энергия (на основе матрицы смежности уровней серого).
· Частотные характеристики -- анализ Фурье для выявления периодических структур.

3.4 Сравнение методов сегментации

Характеристика   Контурный анализ (findContours)   Связные компоненты (connectedComponents)
Входные данные   Бинарное изображение   Бинарное изображение
Выходные данные   Последовательность точек контура   Набор областей с метками
Иерархия   Поддерживает (вложенные контуры)   Не поддерживает
Информация о внутренней структуре   Только граница   Вся область объекта
Скорость работы   Высокая   Очень высокая
Память    Экономичная (только границы)   Требует больше памяти
Применение   Анализ формы, сравнение контуров   Подсчёт объектов, bounding boxes


3.5 Интеграция в промышленную систему

На реальном производстве процесс выделения и анализа объектов встраивается в общий конвейер AOI-системы:
Захват изображения → Предварительная обработка → Бинаризация →
Сегментация (контуры/компоненты) → Извлечение признаков → Классификация.

Пример для кондитерской фабрики (шоколадные конфеты):

1. Захват изображения конвейерной ленты
2. Удаление шума медианным фильтром
3. Коррекция освещения методом деления на световой шаблон
4. Бинаризация для отделения конфет от фона
5. Применение findContours для выделения каждой конфеты
6. Вычисление площади и компактности для выявления сколов
7. Анализ цветовой гистограммы для сортировки по типу начинки
8. Передача результатов в систему управления для отбраковки

Пример для кирпичного завода:
1. Захват изображения кирпича после обжига.
2. Применение детектора границ Canny.
3. Поиск контуров и анализ длинных линий (трещин).
4. Анализ цветового тона в пространстве HSV для определения равномерности обжига.
5. Классификация на первый/второй сорт или брак.
4. Архитектура типовой системы технического зрения для промышленного контроля качества

Разработка промышленной системы технического зрения требует комплексного подхода, объединяющего аппаратное обеспечение, программные алгоритмы и интерфейсы взаимодействия с оборудованием. В данном разделе рассматривается типовая архитектура AOI-системы (Automated Optical Inspection) на примере реальных промышленных решений.


4.1 Обобщенная структурная схема системы

Любая система технического зрения для контроля качества может быть представлена в виде иерархической структуры, состоящей из нескольких уровней:

┌───────────────────────────────────────────────────────────── ────────┐
│                  УРОВЕНЬ ПРИНЯТИЯ РЕШЕНИЙ             │
│  (Классификация, интерфейс оператора, база данных дефектов)   │
└─────────────────────────────────────────────────────────────────────┘
                              ▲
                              │
                              ▼
┌─────────────────────────────────────────────────────────┐
│                    УРОВЕНЬ ОБРАБОТКИ         │
│  (Предобработка, сегментация, извлечение признаков) │
└─────────────────────────────────────────────────────────────┘
                              ▲
                              │
                              ▼
┌──────────────────────────────────────────────────────────────────┐
│                    УРОВЕНЬ ЗАХВАТА                  │
│  (Камеры, объективы, освещение, датчики позиционирования)│
└──────────────────────────────────────────────────────────────────┘
                              ▲
                              │
                              ▼
┌────────────────────────────────────────────────────────────┐
│                    ОБЪЕКТ КОНТРОЛЯ          │
│              (Детали на конвейере/в рабочей зоне) │
└────────────────────────────────────────────────────────────┘


4.2 Аппаратный уровень.

4.2.1 Устройства захвата изображения.

Промышленные камеры являются основным сенсорным элементом. Выбор типа камеры определяется спецификой производства:

RGB-камеры:
Контроль цвета, распознавание маркировки, общий визуальный контроль.  Работа в видимом спектре, высокая цветопередача.
Инфракрасные камеры:
Контроль тепловых процессов, обнаружение перегрева, контроль сварных швов.  Работа в ИК-диапазоне, выявление тепловых аномалий.
3D-камеры:
Контроль геометрических размеров, проверка профиля деталей.  Формирование карты глубины, измерение высоты объектов.
Высокоскоростные камеры:
Контроль на быстро движущихся конвейерах. Частота кадров > 100 fps.

В работе по созданию системы технического зрения для промышленного объекта использовались RGB и инфракрасные камеры, интегрированные с Python и OpenCV для мониторинга оборудования.

4.2.2 Освещение
Критически важный компонент, от которого зависит до 30% успеха распознавания. Типы освещения:

- Кольцевое освещение -- равномерная засветка круговой области, эффективно для устранения теней
- Когерентное освещение -- для работы с бликующими поверхностями
- Инфракрасная подсветка -- невидимое для человека освещение, часто используется с ИК-камерами
- Структурированная подсветка -- для 3D-реконструкции

В AOI-системах часто применяется метод калибровки освещения с использованием светового шаблона -- изображения сцены без объектов, полученного при тех же условиях освещения.
4.2.3 Вычислительное ядро

В зависимости от требований к производительности могут использоваться:

· Промышленные ПК -- для сложных вычислений, работы с нейросетями.
· Одноплатные компьютеры (Raspberry Pi) -- для компактных решений (например, система посадки дронов на Raspberry Pi 4 Model B ).
· Встраиваемые модули (Jetson Nano) -- для работы нейросетей на борту.

4.2.4 Исполнительные механизмы.

Система технического зрения интегрируется с оборудованием для реагирования на результаты контроля:
· Пневматические толкатели для отбраковки
· Сигнальные лампы и звуковые оповещатели
· Роботы-манипуляторы для извлечения/сортировки
· Системы остановки конвейера


4.3 Программный уровень.

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

4.3.1 Модуль захвата и синхронизации.

Отвечает за получение изображений с камеры и их синхронизацию с движением конвейера. В реальных проектах, например, в системе для контроля оптических прицелов Leica, программное обеспечение синхронизирует работу камеры и моторизированного поворотного механизма для захвата изображений с нескольких ракурсов.

**************************************
# Пример инициализации захвата с камеры (OpenCV + Python)
import cv2

cap = cv2.VideoCapture(0)  # Подключение к первой камере
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
cap.set(cv2.CAP_PROP_FPS, 30)

ret, frame = cap.read()  # Захват кадра
**************************************

4.3.2 Модуль предварительной обработки

Реализует алгоритмы:
· Удаление шума (медианный фильтр, гауссов фильтр)
· Коррекция неравномерного освещения (методы разности или деления на световой шаблон)
· Повышение контраста

В AOI-приложениях предварительная обработка выносится в отдельный программный модуль, параметры которого могут настраиваться оператором.

4.3.3 Модуль сегментации и выделения объектов

Реализует методы.  В зависимости от задачи может использовать:

· Поиск контуров (findContours)
· Анализ связных компонент (connectedComponentsWithStats)
· Детекторы границ (Canny, Sobel)

4.3.4 Модуль классификации и принятия решений.

Анализирует выделенные объекты и принимает решение о их соответствии требованиям качества. Может использовать:

· Правила на основе порогов (rule-based) -- для простых случаев
· Машинное обучение -- для сложной классификации
· Нейросетевые модели -- для распознавания сложных дефектов

Пример из магистерской диссертации: система использует pytesseract для распознавания числовых значений с приборов, сохраняет данные в CSV и строит временные ряды для прогнозирования.

4.3.5 Модуль визуализации и интерфейса оператора (HMI).

Обеспечивает взаимодействие с пользователем. В промышленных системах интерфейс должен быть интуитивно понятным и предоставлять:

· Отображение текущего состояния процесса
· Визуализацию обнаруженных дефектов
· Статистику контроля
· Возможность ручной корректировки


Пример реализации пользовательского интерфейса для системы технического зрения на Python с использованием OpenCV и Tkinter:
# Структура GUI для промышленной системы
- Главное окно с видеопотоком
- Панель управления параметрами обработки
- Таблица с результатами измерений
- Графики временных рядов
- Кнопки выбора режима (камера/файл)
4.3.6 Модуль хранения данных

Промышленные системы требуют регистрации результатов контроля. В реальных проектах используются:

· SQL базы данных -- для структурированного хранения результатов
· CSV/Excel файлы -- для простого экспорта в аналитические системы
· Графические архивы -- сохранение изображений дефектных изделий


4.4 Интеграция с производственным оборудованием

4.4.1 Калибровка системы координат

Для взаимодействия с роботами-манипуляторами необходима калибровка -- установление соответствия между системой координат камеры и системой координат робота.

Основные этапы калибровки:

1. Определение внутренних параметров камеры (фокусное расстояние, оптический центр, дисторсия)
2. Определение внешних параметров (положение камеры относительно базовой системы координат)
3.  Вычисление матрицы преобразования "пиксели → миллиметры"

В системе для точной посадки дронов используются визуальные маркеры ArUco и AprilTag, распознаваемые OpenCV, что позволяет вычислять координаты с погрешностью не более двух градусов.





4.4.2 Протоколы передачи данных.

Для взаимодействия с исполнительными механизмами используются промышленные протоколы:

· MAVLink -- для управления дронами
· Modbus TCP/RTU -- для связи с ПЛК
· OPC UA -- для интеграции в SCADA-системы
· Цифровые сигналы ввода/вывода -- для простых исполнительных механизмов

4.5 Типовой программный конвейер AOI-системы

На основе анализа литературы можно представить типовой программный конвейер AOI-системы:
Вход: изображение с камеры
       │
       ▼
┌───────────────┐
│ Загрузка    │ ← также загрузка светового шаблона (light pattern)
│ изображения │
└───────────────┘
       │
       ▼
┌──────────────┐
│ Удаление   │ ← medianBlur(), GaussianBlur()
│ шума      │
└──────────────┘
       │
       ▼
┌──────────────┐
│ Коррекция  │ ← выбор метода: разность (L-I) или
│ освещения  │   деление (255*(1-(I/L)))
└──────────────┘
       │
       ▼
┌───────────────┐
│ Бинаризация │ ← threshold() или adaptiveThreshold()
└───────────────┘
       │
       ▼
┌─────────────────────────┐
│ Сегментация          │ ← выбор метода:
│ (выделение объектов)  │   1 - connectedComponents
│                     │   2 - connectedComponentsWithStats
│                     │   3 - findContours
└─────────────────────────┘
       │
       ▼
┌──────────────┐
│ Извлечение │ ← moments(), contourArea(), arcLength()
│ признаков  │
└──────────────┘
       │
       ▼
┌────────────────┐
│ Классификация│ ←  правило / ML / нейросеть
└────────────────┘
       │
       ▼
Выход: решение (годен/брак), координаты, управляющий сигнал.


4.6 Примеры промышленных реализаций

4.6.1 Система контроля оптических прицелов (Leica)

В диссертационной работе Universidade do Minho представлена система для автоматического контроля качества оптических прицелов:

· Аппаратная часть: моторизированный поворотный механизм, камера, система крепления с минимальным контактом
· Программная часть: три компонента -- управляющий скрипт, модуль активации камеры, модуль анализа изображений
· Функционал: захват изображений с нескольких ракурсов, обнаружение дефектов поверхности, хранение данных в SQL базе
· Интерфейс: авторизация оператора, синхронизация камеры и мотора

4.6.2 Система мониторинга промышленного оборудования.

Работа по созданию системы технического зрения для котельной и электрического щита:

· Задача: считывание показаний приборов с RGB и ИК-камер
· Технологии: Python, OpenCV, pytesseract для OCR
· Функционал: распознавание чисел, сохранение в CSV, построение временных рядов, прогнозирование
· Интерфейс: выбор режима (камера/файл), отображение результатов

4.6.3 Система для определения координат объектов в ГПС.

Научная работа по интеграции технического зрения с промышленным роботом:

· Цель: определение координат и ориентации произвольно расположенных деталей для захвата манипулятором
· Метод: анализ формы и цвета, создание цветовых масок
· Результат: возможность автономной работы робота без предварительной ориентации деталей

4.7 Требования к промышленным системам технического зрения

На основе анализа литературных источников можно сформулировать ключевые требования:

1) Надежность -- система должна работать в условиях запыленности, вибрации, перепадов температуры
2) Быстродействие -- обработка должна выполняться в темпе производственного процесса
3) Точность -- погрешность измерений не должна превышать допуски на контроль
4) Модульность -- возможность адаптации под разные типы продукции
5) Документирование -- регистрация всех результатов контроля
6) Безопасность -- исключение повреждения оборудования и продукции
7) Интуитивный интерфейс -- возможность работы оператора без специальной подготовки в области компьютерного зрения.

541ob_Egorov

5. Примеры реализации систем технического зрения для различных типов производства.

Теоретические принципы, рассмотренные в предыдущих разделах, находят практическое воплощение в самых разных отраслях промышленности. В данном разделе представлены реальные примеры внедрения систем компьютерного зрения на базе OpenCV для автоматизации контроля качества. Каждый пример иллюстрирует, как описанные ранее методы обработки изображений адаптируются под специфику конкретного производства.


5.1 Автомобильная промышленность: контроль качества нанесения PVC-покрытия.

Предприятие: ООО «Автомобильный завод», г. Москва (реальный пример внедрения)

Технологический процесс: в автомобилестроении PVC-покрытие наносится на сварные швы кузова для герметизации и антикоррозийной защиты. Роботизированная система наносит герметик точно по шву, но из-за вибраций, износа оборудования или колебаний вязкости материала возникают смещения.

Проблема: Ручной контроль (визуальный осмотр оператором) трудоемок, субъективен и не позволяет выявить микросмещения на ранней стадии.

Разработанное решение:

Система автоматического контроля на базе OpenCV реализует следующий алгоритм:

1. Захват изображения: Промышленная камера фиксирует участок кузова с нанесенным герметиком.
2. Удаление бликов: Применяется алгоритм удаления бликов на основе цветового пространства HSV, что критично для металлических поверхностей.
3. Выделение области герметика: Используется метод SSIM (Structural Similarity Index) для точного выделения области герметика на фоне металла.
4. Извлечение центральной линии: с помощью морфологических операций и скелетизации выделяется центральная линия нанесенного герметика.
5. Обнаружение шва: Применяется детектор границ Canny и алгоритмы выделения контуров для определения положения технологического шва под герметиком.
6. Вычисление смещения: Рассчитывается расстояние между центральной линией герметика и линией шва.
*************************
# Фрагмент кода для выделения центральной линии герметика
import cv2
import numpy as np

def extract_center_line(image):
    # Удаление бликов в HSV-пространстве
    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, (0, 0, 100), (180, 255, 255))
   
    # Выделение области герметика
    seal_area = cv2.bitwise_and(image, image, mask=mask)
   
    # Бинаризация и скелетизация
    gray = cv2.cvtColor(seal_area, cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY)
    skeleton = cv2.ximgproc.thinning(binary)
   
    return skeleton
*************************

Результаты внедрения:

· Точность измерения смещения: более 99%
· Полностью автоматизированный контроль без участия оператора
· Возможность выявления локальных отклонений и указания их точного местоположения


5.2 Фармацевтическая промышленность: контроль качества флаконов.

Предприятие: Фармацевтический завод (Китай)

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

Проблема: Традиционный визуальный контроль силами человека неэффективен, дорогостоящ и подвержен ошибкам. Высокоскоростное производство требует автоматизации.

Разработанное решение:

Исследователи Чэнь и Ву разработали систему реального времени для обнаружения дефектов флаконов на базе OpenCV и Python. Система включает:

1. Высокоскоростной захват изображений: Камера синхронизирована с движением конвейера.
2. Обнаружение трещин: Специализированные алгоритмы выделяют микротрещины на стекле, используя анализ градиентов и текстур.
3. Контроль загрязнений: Выявление посторонних частиц внутри и на поверхности флаконов.
4. Проверка геометрии: Контроль соответствия размеров горловины и корпуса эталону.

**************************
# Упрощенный алгоритм обнаружения трещин
def detect_cracks(image):
    # Преобразование в оттенки серого
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
   
    # Применение детектора границ Canny
    edges = cv2.Canny(gray, 50, 150)
   
    # Поиск контуров
    contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
   
    # Анализ геометрии контуров для выявления трещин
    cracks = []
    for contour in contours:
        area = cv2.contourArea(contour)
        perimeter = cv2.arcLength(contour, True)
        if area > 10 and perimeter / area > 0.5:  # Характеристики типичной трещины
            cracks.append(contour)
   
    return cracks
*******************************

Результаты:

· Высокая точность и производительность в реальном времени
· Полное исключение субъективного фактора
· Возможность интеграции в существующие производственные линии



5.3 Приборостроение: контроль оптических прицелов (Leica)

Предприятие: Leica (Португалия)

Технологический процесс: Производство высокоточных оптических прицелов требует тщательного контроля поверхности на наличие дефектов.

Проблема: Ручной контроль субъективен и не обеспечивает требуемой точности для прецизионной оптики.

Разработанное решение:

В магистерской диссертации Universidade do Minho представлена комплексная система автоматического контроля качества оптических прицелов. Система включает:

Аппаратная часть:

· Моторизированный поворотный механизм для позиционирования изделия
· Промышленная камера высокого разрешения
· Система крепления с минимальным контактом с поверхностью
· Вибрационная защита для точной съемки

Программная часть:

· Три основных компонента: управляющий скрипт, модуль активации камеры, модуль анализа изображений
· Интерфейс с авторизацией оператора
· Синхронизация камеры и поворотного механизма
· Хранение данных в SQL базе

******************************
# Структура программного обеспечения [citation:3]
class RifleScopeInspector:
    def __init__(self):
        self.camera = CameraModule()
        self.rotator = MotorizedRotator()
        self.analyzer = ImageAnalyzer()
        self.database = SQLDatabase()
   
    def inspect(self, scope_id):
        images = []
        for angle in range(0, 360, 30):  # Съемка с разных ракурсов
            self.rotator.move_to(angle)
            img = self.camera.capture()
            images.append(img)
       
        defects = self.analyzer.detect_defects(images)
        self.database.save_results(scope_id, defects)
        return defects
************************************

Функционал модуля анализа:

· Захват изображений с нескольких ракурсов
· Обнаружение поверхностных дефектов (царапины, сколы, загрязнения)
· Автоматическая классификация дефектов по типу и критичности


5.4 Общее машиностроение: контроль геометрических размеров

Предприятие: Камнеобрабатывающий / машиностроительный завод

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

Проблема: Ручные измерения трудоемки и не позволяют контролировать каждое изделие.

Разработанное решение:

Информационно-измерительная система на базе OpenCV и Python:

1. Калибровка: Перед началом работы система калибруется по объектам с известными размерами.
2. Режимы работы:
   · Ручной режим: оператор указывает точки для измерения (более высокая точность)
   · Автоматический режим: система самостоятельно выделяет объекты и измеряет их
3. Функции предобработки: нормализация изображения, пороговая сегментация.

Результаты измерений:

Режим Длина Ширина
Эталон 60.00 мм 75.00мм
Ручной режим 59.68 ± 0.46 мм 74.78 ± 0.54 мм
Автоматический режим 60.60 ± 0.15 мм 74.95 ± 0.13 мм

Анализ точности:

· Погрешность составляет 0.13-0.54 мм
· Для массового контроля точность достаточна
· Для прецизионных измерений требуется улучшение (более совершенная камера, алгоритмы аппроксимации контуров)


5.5 Контроль деталей методом сравнения с эталоном

Предприятие: Машиностроительный завод (Россия)

Технологический процесс: Производство точных деталей требует сравнения каждого экземпляра с эталонным образцом.

Проблема: Необходимость оперативного выявления брака на ранних стадиях производства.

Разработанное решение:

Приложение для контроля качества деталей, разработанное в среде Python с использованием OpenCV:

Архитектура приложения:

· Графический интерфейс: реализован с использованием Tkinter
· Захват изображений: подключение к видеокамере через OpenCV
· Анализ: сравнение изображения детали с эталонным шаблоном

**********************************
# Фрагмент создания интерфейса и захвата изображения [citation:7]
from tkinter import *
import cv2
from PIL import Image, ImageTk

# Создание графического интерфейса
win = Tk()
win.geometry("920x790")

# Подключение к камере
cap = cv2.VideoCapture(0)

# Функция захвата и сохранения изображения
def capture_image():
    ret, img = cap.read()
    cv2.imshow('from camera', img)
    k = cv2.waitKey(30)
    if k == ord('s'):
        cv2.imwrite('new_part.png', img)
        cv2.destroyAllWindows()
*************************************

Метод сравнения:

· Приложение сравнивает изображение контролируемой детали с эталоном
· Выявляются отклонения формы, размеров, наличие дефектов
· Результат сохраняется для статистического анализа


5.6 Обобщение: классификация применений OpenCV в промышленности.

На основе анализа реальных внедрений можно выделить следующие типовые задачи, решаемые с помощью OpenCV:

Обнаружение дефектов
Выявление царапин, сколов, трещин, загрязнений (Автомобильная промышленность (контроль PVC), оптика Leica, флаконы).
Распознавание объектов
Автоматическая сортировка и классификация компонентов (Сортировка деталей на конвейере).
Роботизированное управление
Навигация роботов, точное позиционирование (Захват деталей манипулятором
Контроль геометрии).
Измерение размеров, проверка допусков (Машиностроение, камнеобработка
Предиктивное обслуживание).
Анализ визуальных данных для прогнозирования отказов (Мониторинг состояния оборудования).

5.7 Практические рекомендации по внедрению.

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

1. Начинайте с пилотного проекта: выберите конкретную задачу (например, контроль одного типа дефектов) и реализуйте прототип.
2. Используйте предобученные модели: OpenCV предоставляет готовые алгоритмы, которые можно адаптировать под конкретную задачу.
3. Уделите внимание освещению: качество изображения критически важно -- правильная подсветка может решить 50% проблем.
4. Калибруйте систему: перед началом работы обязательно выполняйте калибровку по эталонным объектам.
5. Обеспечьте удобный интерфейс: оператор должен иметь возможность контролировать процесс и при необходимости вмешиваться.
6. Собирайте статистику: накопленные данные позволяют анализировать тренды и улучшать производственные процессы.

DenisAlekseevich

Так все хорошо начиналось, а потом не переработанный текст от ИИ.

Давайте хоть выводы в конце свои...

ran

Непереработанный текст от ИИ - это очень хорошо. Его просто не нужно читать и все.

541ob_Egorov

Тема: "Компьютерное зрение в задачах контроля качества (OpenCV)"
 Исполнитель: Егоров Илья Никитович, гр. 541-об

 Научный руководитель: Русинов Владислав Леонидович, СКБ "Промышленная робототехника и автоматизация"

 Актуальность: Традиционный визуальный контроль качества силами человека перестает отвечать требованиям современных производств: он субъективен, медлителен и неэффективен на высокоскоростных линиях. На смену приходят технологии компьютерного зрения, обеспечивающие круглосуточный мониторинг с точностью свыше 98%. Библиотека OpenCV с открытым кодом становится доступным инструментом для создания таких систем, позволяя предприятиям сокращать брак и издержки. В связи с этим анализ возможностей компьютерного зрения для автоматизации контроля качества представляет высокую практическую значимость.
 
План:
 1. Задачи технического зрения на производстве: распознавание объектов, измерение размеров, поиск дефектов.
 2. Библиотека OpenCV: основные модули (imgproc, core, highgui).
 3. Этапы обработки изображения: захват кадра, фильтрация (размытие, бинаризация), поиск контуров, сравнение с эталоном.
 4. Демонстрация алгоритма (в коде или на блок-схеме) проверки целостности детали или чтения штрих-кода.
 5. Оборудование: промышленные камеры, освещение. Иллюстрации: Исходное изображение детали -> изображение после пороговой обработки -> выделенные контуры; примеры годных и бракованных деталей; схема расположения камеры над конвейером.

 Источники: Документация OpenCV, книга Р. Гонсалеса («Цифровая обработка изображений»), статьи по машинному зрению.










1. Введение: Роль компьютерного зрения в современном промышленном контроле качества

1.1 Актуальность применения систем технического зрения

В эпоху четвертой промышленной революции (Индустрия 4.0) происходит глубокая трансформация производственных процессов, основанная на слиянии физического и цифрового миров. Согласно отчету Rockwell Automation за 2025 год, 95% производителей уже инвестировали или планируют инвестировать в машинное обучение и искусственный интеллект в ближайшие пять лет, причем 50% респондентов намерены использовать эти технологии именно в контроле качества.

Традиционные методы контроля качества, полагающиеся на визуальный осмотр человеком, сталкиваются с серьезными ограничениями:

· Субъективность оценки -- разные операторы могут по-разному интерпретировать одни и те же дефекты.
· Низкая скорость -- человек не способен эффективно работать на высокоскоростных линиях производства.
· Утомляемость -- внимание оператора снижается после нескольких часов монотонной работы.
· Масштабируемость -- сложность увеличения объемов контроля пропорционально росту производства.

1.2 Компьютерное зрение как ключевая технология автоматизации контроля

Компьютерное зрение, реализованное с помощью библиотеки OpenCV (Open Source Computer Vision Library), становится фундаментом для создания интеллектуальных систем контроля качества. OpenCV предоставляет обширный набор алгоритмов для решения широкого спектра задач:

· Обнаружение поверхностных дефектов: царапины, вмятины, сколы, изменения цвета
· Контроль геометрических размеров: проверка соответствия деталей заданным допускам
· Верификация сборки: подтверждение правильности установки компонентов
· Сортировка продукции: распознавание и классификация объектов

Современные исследования показывают, что точность обнаружения и классификации дефектов с использованием методов компьютерного зрения часто превышает 95%, а в контролируемых условиях достигает 98-100%.

1.3 Терминология: автоматический оптический контроль (AOI)

В промышленной сфере задача компьютерного зрения для контроля качества получила название автоматический оптический контроль (AOI -- Automated Optical Inspection). Термин возник в производстве печатных плат, где камеры сканируют каждую плату для выявления критических дефектов, и распространился на другие отрасли.

Сегодня оптический контроль использует различные типы камер (инфракрасные, 3D-камеры) и сложные алгоритмы для обнаружения дефектов, классификации и других целей в тысячах производств.

1.4 Цель и задачи доклада

Цель доклада -- рассмотреть применение библиотеки OpenCV для автоматизации контроля качества на промышленных предприятиях, проанализировать основные методы обработки изображений и представить практические примеры реализации.

Задачи:

1. Изучить основные этапы обработки изображений в задачах контроля качества.
2. Рассмотреть методы выделения и анализа объектов на изображениях.
3. Проанализировать архитектуру типовой системы технического зрения.
4. Представить примеры реализации для различных типов производства.




2. Основные этапы обработки изображений

Типовой конвейер AOI-системы включает: захват изображения, предобработку, сегментацию, извлечение признаков и классификацию.

2.1 Захват изображения

Получение кадра с промышленной камеры (RGB, ИК, 3D, высокоскоростной). В OpenCV -- VideoCapture или imread().

2.2 Предварительная обработка

Определяет до 80% успеха. Включает:

· Удаление шума -- медианный фильтр (medianBlur) сохраняет границы.
· Коррекцию освещения -- деление на световой шаблон: R = 255 * (1 - (I / L)).
· Бинаризацию -- threshold() или adaptiveThreshold().

2.3 Сегментация объектов

Выделение объектов на изображении:

· Контурный анализ (findContours) -- для анализа формы.
· Связные компоненты (connectedComponentsWithStats) -- для подсчета и bounding boxes.
· Соприкасающиеся объекты -- подсчет через деление площади группы на площадь эталона.

2.4 Извлечение признаков

Числовое описание объектов:

· Геометрия: площадь, периметр, компактность.
· Моменты: центр масс, инварианты Ху (устойчивы к повороту и масштабу).

2.5 Классификация

Решение «годен/брак» -- по правилам, машинному обучению или нейросети. Результат передается исполнительному механизму.



3. Методы выделения и анализа объектов на изображениях

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

3.1 Контурный анализ

Контур -- это граница объекта, отделяющая его от фона. Метод использует только внешние очертания, что снижает сложность вычислений.

Преимущества: простота, быстродействие, эффективен для анализа формы.
Ограничения: слабая устойчивость к помехам, проблемы при пересечении объектов.

В OpenCV поиск контуров выполняется функцией findContours(). Параметры позволяют выбирать иерархию вложенности (RETR_EXTERNAL, RETR_TREE) и степень аппроксимации (CHAIN_APPROX_SIMPLE сжимает сегменты, CHAIN_CODE возвращает цепной код Фримана для компактного хранения формы).

После выделения контуров извлекаются геометрические характеристики: площадь, периметр, компактность (P²/(4πA)), отношение сторон, заполненность.

3.2 Анализ связных компонент

Метод выделяет связные области пикселей. Функция connectedComponentsWithStats() возвращает для каждого объекта ограничивающий прямоугольник, площадь и центроид.

Преимущества: идеален для подсчета объектов, получения bounding boxes, быстрее контурного анализа.
Ограничения: не поддерживает иерархию, требует больше памяти.

3.3 Особый случай: подсчет соприкасающихся объектов

При плотном прилегании объектов стандартные методы объединяют их. Решение -- деление площади группы на площадь эталонного объекта: N = round(S_contour / S_ref).

3.4 Извлечение признаков

Для классификации объекты описываются числовыми признаками:

· Геометрические: площадь, периметр, компактность, отношение сторон, заполненность.
· Моменты: функция moments() вычисляет центр масс; инварианты Ху устойчивы к масштабу, повороту и сдвигу.
· Дополнительные: цветовые гистограммы, текстура, частотные характеристики.

3.5 Интеграция в промышленную систему

Процесс встраивается в общий конвейер: захват → предобработка → бинаризация → сегментация → извлечение признаков → классификация.

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

Пример для кирпичного завода: захват кирпича, детектор Canny, поиск контуров для выявления трещин, анализ цветового тона в HSV для оценки равномерности обжига, классификация по сорту.



4. Архитектура типовой системы технического зрения

Система технического зрения (AOI) объединяет аппаратное обеспечение, программные алгоритмы и интерфейсы взаимодействия с оборудованием.

4.1 Структурная схема

Система строится на трех уровнях:

· Уровень принятия решений -- классификация, интерфейс оператора, база данных.
· Уровень обработки -- предобработка, сегментация, извлечение признаков.
· Уровень захвата -- камеры, освещение, датчики.

4.2 Аппаратный уровень

Камеры:

· RGB -- контроль цвета и маркировки.
· Инфракрасные -- контроль тепловых процессов.
· 3D -- измерение геометрии.
· Высокоскоростные (>100 fps) -- контроль на движущихся конвейерах.

Освещение -- критически важно (до 30% успеха). Типы: кольцевое (устранение теней), когерентное (против бликов), ИК-подсветка, структурированное (3D-реконструкция). В AOI применяется калибровка по световому шаблону.

Вычислительное ядро: промышленные ПК, Raspberry Pi, Jetson Nano.

Исполнительные механизмы: пневматические толкатели, роботы-манипуляторы, сигнализация, остановка конвейера.

4.3 Интеграция с производственным оборудованием

Калибровка: определение соответствия между координатами камеры и робота (внутренние и внешние параметры, матрица преобразования «пиксели → мм»). Используются маркеры ArUco/AprilTag.

Протоколы: Modbus TCP/RTU (ПЛК), OPC UA (SCADA), MAVLink (дроны), цифровые сигналы ввода/вывода.

4.4 Типовой программный конвейер

Вход: изображение с камеры
→ Загрузка (в т.ч. светового шаблона)
→ Удаление шума (medianBlur, GaussianBlur)
→ Коррекция освещения (разность или деление)
→ Бинаризация (threshold, adaptiveThreshold)
→ Сегментация (выбор метода: connectedComponents, connectedComponentsWithStats, findContours)
→ Извлечение признаков (moments, contourArea, arcLength)
→ Классификация (правило / ML / нейросеть)
Выход: решение (годен/брак), координаты, управляющий сигнал

4.5 Требования к промышленным системам

Надежность (пыль, вибрация), быстродействие (в темпе производства), точность (в пределах допусков), модульность, документирование результатов, безопасность, интуитивный интерфейс.


5. Примеры реализации систем технического зрения

5.1 Автомобильная промышленность: контроль нанесения PVC-покрытия

Проблема: ручной контроль герметика на сварных швах трудоемок и субъективен.

Решение: система на базе OpenCV:

· Захват изображения участка кузова
· Удаление бликов в HSV-пространстве
· Выделение области герметика (SSIM)
· Извлечение центральной линии (скелетизация)
· Обнаружение шва (Canny, контуры)
· Расчет смещения между линией герметика и швом

Результат: точность >99%, полная автоматизация.

5.2 Фармацевтика: контроль качества флаконов

Проблема: визуальный контроль неэффективен на высокоскоростном производстве.

Решение: система реального времени:

· Высокоскоростной захват изображений
· Обнаружение трещин (анализ градиентов и текстур)
· Контроль загрязнений
· Проверка геометрии

Результат: высокая точность, интеграция в существующие линии.

5.3 Приборостроение: контроль оптических прицелов (Leica)

Решение: комплексная система с моторизированным поворотным механизмом:

· Съемка с нескольких ракурсов (шаг 30°)
· Обнаружение поверхностных дефектов
· Классификация дефектов по типу и критичности
· Хранение данных в SQL

5.4 Машиностроение: контроль геометрических размеров

Решение: измерительная система на базе OpenCV:

· Калибровка по объектам с известными размерами
· Ручной и автоматический режимы измерений
· Предобработка: нормализация, пороговая сегментация

Точность: погрешность 0.13-0.54 мм (достаточно для массового контроля).

5.5 Контроль деталей сравнением с эталоном

Решение: приложение на Python с Tkinter и OpenCV:

· Захват изображения с камеры
· Сравнение с эталонным шаблоном
· Выявление отклонений формы и размеров
· Сохранение результатов для статистики
Вывод:
Компьютерное зрение на базе OpenCV является ключевой технологией автоматизации контроля качества, способной обеспечить требуемый уровень надежности и эффективности производства в условиях современной индустрии.

Вверх