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) Интуитивный интерфейс -- возможность работы оператора без специальной подготовки в области компьютерного зрения.