Урок 17 • 7 класс STEM • 45 минут
Как вы думаете:
Примеры из жизни:
Узнаем:
Создадим:
STEM-интеграция:
Преимущества робота:
[Объект] → [Освещение] → [Камера] → [Компьютер] → [Решение]
↑ ↑ ↑ ↑ ↑
Что видим Как видим Захватываем Обрабатываем Действуем
Основные компоненты:
Человек видит: 380-750 нм
Роботы могут видеть: 200-2000 нм
RGB модель:
Пример: Желтый = R:255, G:255, B:0
CCD матрица:
CMOS матрица:
Примеры:
Влияние на качество:
Прямое освещение:
Рассеянное освещение:
Подсветка сзади:
где $I$ - освещенность, $I_0$ - яркость источника, $r$ - расстояние
Монохромные (черно-белые):
Цветные (RGB):
Принцип работы:
где:
Time-of-Flight принцип:
где $c$ - скорость света, $t$ - время полета
Диапазон: 8-14 мкм (дальний инфракрасный) Применение:
Особенность: Анализ множества узких спектральных диапазонов Применение:
Принцип: Лазерное сканирование Характеристики:
| Параметр | Бюджетная камера | Промышленная камера |
|---|---|---|
| Разрешение | 640×480 | 2048×2048 |
| Частота кадров | 30 fps | 100+ fps |
| Динамический диапазон | 8 бит | 12-16 бит |
| Точность цвета | ±5% | ±1% |
| Стоимость | $50-200 | $1000-5000 |
Для измерений: высокое разрешение, монохромные Для сортировки: цветные, средняя скорость Для слежения: высокая частота кадров Для контроля качества: высокий динамический диапазон
Гауссовский фильтр:
Алгоритм размытия по Гауссу:
1. Взять пиксель и его соседей
2. Умножить на коэффициенты Гаусса
3. Сложить результаты
4. Заменить исходный пиксель
Медианный фильтр:
Алгоритм медианной фильтрации:
1. Взять окрестность пикселя 3×3
2. Отсортировать значения яркости
3. Выбрать средний элемент (медиану)
4. Заменить центральный пиксель
где $\alpha$ - контраст, $\beta$ - яркость
Алгоритм простой бинаризации:
1. Выбрать пороговое значение T
2. ДЛЯ каждого пикселя (x,y):
ЕСЛИ яркость > T ТО
установить пиксель = 255 (белый)
ИНАЧЕ
установить пиксель = 0 (черный)
Алгоритм адаптивной бинаризации:
1. ДЛЯ каждого пикселя (x,y):
2. Вычислить среднюю яркость в окрестности
3. T = средняя_яркость - константа
4. ЕСЛИ яркость > T ТО белый ИНАЧЕ черный
Преимущества адаптивной бинаризации:
Принцип: Вычисление градиента яркости
Маски Собеля:
Горизонтальная: Вертикальная:
[-1 0 1] [-1 -2 -1]
[-2 0 2] [ 0 0 0]
[-1 0 1] [ 1 2 1]
Алгоритм:
1. Применить горизонтальную маску → Gx
2. Применить вертикальную маску → Gy
3. Вычислить силу градиента: G = √(Gx² + Gy²)
4. Если G > порог, то граница найдена
Этапы алгоритма Кэнни:
Компоненты:
Преимущества HSV:
Алгоритм выделения красных объектов:
1. Преобразовать изображение из RGB в HSV
2. Задать диапазон для красного цвета:
H: 0-10° или 350-360°
S: 50-100%
V: 50-100%
3. ДЛЯ каждого пикселя:
ЕСЛИ пиксель в диапазоне ТО
маска[пиксель] = 255
ИНАЧЕ
маска[пиксель] = 0
4. Результат: бинарная маска красных объектов
Интерпретация компактности:
Алгоритм определения типа фигуры:
1. Найти контур объекта
2. Вычислить площадь S и периметр P
3. Рассчитать компактность K = 4πS/P²
4.
ЕСЛИ K > 0.85 ТО
фигура = "круг"
ИНАЧЕ ЕСЛИ K > 0.75 ТО
фигура = "квадрат"
ИНАЧЕ ЕСЛИ K > 0.55 ТО
фигура = "треугольник"
ИНАЧЕ
фигура = "неопределенная"
Алгоритм подсчета углов:
1. Найти контур объекта
2. Упростить контур (убрать лишние точки)
3. ДЛЯ каждой точки контура:
- Вычислить угол между соседними отрезками
- ЕСЛИ угол < 160° ТО счетчик_углов++
4. Классификация:
- 3 угла → треугольник
- 4 угла → четырехугольник
- >8 углов → вероятно круг
Алгоритм анализа цвета объекта:
1. Выделить область объекта
2. ДЛЯ каждого пикселя в области:
- Получить значения R, G, B
- Добавить в соответствующие суммы
3. Вычислить средние значения:
R_средний = сумма_R / количество_пикселей
G_средний = сумма_G / количество_пикселей
B_средний = сумма_B / количество_пикселей
4. Определить доминирующий цвет:
ЕСЛИ R_средний > G_средний И R_средний > B_средний ТО
цвет = "красный"
ИНАЧЕ ЕСЛИ G_средний > B_средний ТО
цвет = "зеленый"
ИНАЧЕ
цвет = "синий"
где $(x_i, y_i)$ - координаты пикселей объекта, $n$ - количество пикселей
Главная ось объекта:
Алгоритм определения ориентации:
1. Найти центр масс объекта (x_c, y_c)
2. ДЛЯ каждого пикселя объекта (x, y):
- dx = x - x_c
- dy = y - y_c
- M20 += dx²
- M02 += dy²
- M11 += dx×dy
3. Вычислить угол главной оси:
угол = 0.5 × arctan(2×M11 / (M20 - M02))
Результат: угол поворота объекта относительно горизонтали
Задачи:
Пример алгоритма контроля:
Алгоритм контроля качества детали:
1. Получить изображение детали
2. Найти контур детали
3. Измерить геометрические параметры:
- длина, ширина, диаметры
4. Проверить соответствие стандарту:
ЕСЛИ все размеры в допуске ТО
деталь = "годная"
ИНАЧЕ
деталь = "брак"
5. Переместить деталь в соответствующий лоток
Применение: Сборочные операции, сварка, покраска
Алгоритм:
1. Сделать снимок рабочей зоны
2. Найти целевой объект на изображении
3. Определить его положение и ориентацию
4. Вычислить смещение от заданной позиции
5. Скорректировать движение робота
6. Выполнить операцию
Стереозрение для навигации:
Алгоритм навигации с препятствиями:
1. Получить пару стереоизображений
2. Вычислить карту глубины
3. Обнаружить препятствия:
ЕСЛИ глубина < безопасное_расстояние ТО
препятствие = True
4. Выбрать направление движения:
- Найти свободный коридор
- Спланировать траекторию обхода
5. Отправить команды моторам колес
Принцип: Робот одновременно строит карту и определяет свое положение
Этапы:
Задачи:
Алгоритм обнаружения лица:
Упрощенный алгоритм поиска лица:
1. Преобразовать изображение в оттенки серого
2. Найти овальные объекты подходящего размера
3. ДЛЯ каждого кандидата:
- Проверить наличие глаз (два темных пятна)
- Проверить наличие рта (горизонтальная линия)
- Оценить пропорции лица
4. ЕСЛИ все признаки найдены ТО
лицо_обнаружено = True
Захват предметов с визуальным наведением:
Алгоритм визуального захвата:
1. Найти целевой объект на изображении
2. Определить его положение в 3D пространстве
3. Спланировать траекторию руки робота
4. Приблизиться к объекту
5. Скорректировать положение по камере
6. Выполнить захват
7. Проверить успешность захвата
| Задача | Разрешение | Время обработки |
|---|---|---|
| Простая бинаризация | 640×480 | 1-5 мс |
| Выделение контуров | 640×480 | 10-50 мс |
| Распознавание объектов | 640×480 | 50-200 мс |
| Анализ сцены | 1920×1080 | 200-1000 мс |
Группа 1: Распознавание геометрических фигур (круг, квадрат, треугольник) Группа 2: Сортировка объектов по цвету (красный, зеленый, синий) Группа 3: Определение положения объекта на поверхности Группа 4: Подсчет количества объектов определенного типа
[НАЧАЛО]
↓
[Получить изображение]
↓
[Предварительная обработка]
↓
[Сегментация/Выделение объектов]
↓
[Анализ признаков]
↓
[Классификация/Принятие решения]
↓
[Вывод результата]
↓
[КОНЕЦ]
[НАЧАЛО]
↓
[Получить цветное изображение]
↓
[Преобразовать в оттенки серого]
↓
[Применить размытие по Гауссу]
↓
[Выполнить бинаризацию]
↓
[Найти контуры объектов]
↓
[Есть контуры?] ——НЕТ——→ [Объекты не найдены]
↓ ДА ↓
[Для каждого контура:] [КОНЕЦ]
↓
[Вычислить площадь S]
↓
[Вычислить периметр P]
↓
[Рассчитать K = 4πS/P²]
↓
[K > 0.85?] ——ДА——→ [Фигура = "Круг"]
↓ НЕТ ↓
[K > 0.75?] ——ДА——→ [Фигура = "Квадрат"]
↓ НЕТ ↓
[K > 0.55?] ——ДА——→ [Фигура = "Треугольник"]
↓ НЕТ ↓
[Фигура = "Неизвестная"] ↓
↓ ↓
[Вывести результат] ←————————
↓
[КОНЕЦ]
ФУНКЦИЯ распознать_фигуры(изображение):
// Предобработка
серое_изображение = преобразовать_в_серое(изображение)
размытое = применить_размытие(серое_изображение)
бинарное = бинаризация(размытое, порог=128)
// Поиск контуров
контуры = найти_контуры(бинарное)
результаты = []
ДЛЯ каждого контура В контуры:
ЕСЛИ площадь(контур) > минимальная_площадь:
тип_фигуры = классифицировать_фигуру(контур)
центр = найти_центр(контур)
результаты.добавить(тип_фигуры, центр)
ВЕРНУТЬ результаты
КОНЕЦ ФУНКЦИИ
ФУНКЦИЯ классифицировать_фигуру(контур):
S = площадь(контур)
P = периметр(контур)
K = 4 * π * S / (P * P)
ЕСЛИ K > 0.85:
ВЕРНУТЬ "Круг"
ИНАЧЕ ЕСЛИ K > 0.75:
ВЕРНУТЬ "Квадрат"
ИНАЧЕ ЕСЛИ K > 0.55:
ВЕРНУТЬ "Треугольник"
ИНАЧЕ:
ВЕРНУТЬ "Неизвестная фигура"
КОНЕЦ ФУНКЦИИ
Принцип работы:
Преимущества ИИ:
Особенности:
Применения:
Технологии получения 3D:
Applications:
Возможности:
| Отрасль | Доля рынка | Основные задачи |
|---|---|---|
| Автомобильная | 45% | Контроль качества, автопилот |
| Электроника | 20% | Сборка, тестирование |
| Фармацевтика | 12% | Контроль упаковки |
| Пищевая | 10% | Сортировка, безопасность |
| Остальные | 13% | Различные применения |
Технические:
Программные:
3 новые вещи, которые я узнал:
2 вещи, которые меня удивили:
1 вопрос, который у меня остался:
Исследование применений: Найдите и опишите 3 примера использования машинного зрения в разных областях (медицина, транспорт, развлечения, безопасность и т.д.)
Структура описания:
Проект улучшения алгоритма: Возьмите созданный на уроке алгоритм и предложите способы его улучшения:
Собственная задача: Придумайте новую задачу для машинного зрения в школе или дома и опишите алгоритм ее решения в виде блок-схемы.
Сегодня мы узнали:
Помните: Машинное зрение - это не просто камеры, это сложные алгоритмы, которые превращают изображения в полезную информацию для принятия решений.
Следующий урок: “Сенсоры и датчики в робототехнике”
Вопросы для размышления:
🤔 Сможет ли машинное зрение полностью заменить человеческое зрение?
🚀 Какие новые профессии появятся в области компьютерного зрения?
🌍 Как машинное зрение поможет решить глобальные проблемы человечества?