
- •Министерство образования и науки Российской Федерации
- •Цель лекции
- •План лекции
- •1 Происхождение вычислительных машин
- •2 Изучение алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Биты и их хранение
- •2 Оперативная память
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Устройства внешней памяти
- •3 Хранение и поиск файлов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление числовых значений
- •2 Хранение целых чисел
- •3 Хранение дробей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление текста
- •2 Представление изображений
- •Достоинства пиксельной графики
- •Недостатки пиксельной графики
- •Достоинства векторной графики
- •Недостатки векторной графики
- •3 Представление звука
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Сжатие изображений
- •2 Ошибки передачи данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Архитектура эвм
- •2 Связь процессора с другими устройствами
- •3 Другие архитектуры
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Машинный язык
- •2 Пример машинного языка
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Выполнение программы
- •2 Пример выполнения программы
- •3 Программы и данные
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Логические операции
- •2 Операции сдвига
- •3 Арифметические операции
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция операционных систем
- •2 Архитектура операционных систем
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие процесса
- •2 Управление процессами
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Классификация сетей
- •2 Сетевые протоколы*
- •3 Безопасность сетей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие алгоритма
- •2 Представление алгоритма
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Теория решения задач
- •2 Общие методы решения задач
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритм последовательного поиска
- •2 Управление циклами
- •3 Алгоритм сортировки методом вставки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритмы поиска и сортировки
- •2 Управление рекурсией
- •3 Разработка рекурсивных процедур
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эффективность алгоритмов
- •2 Верификация программ
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция и классификация языков программирования
- •2 Концепции традиционного программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Процедурные единицы
- •2 Реализация языка программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Объектно-ориентированное программирование
- •2 Декларативное программирование
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структуры данных
- •Integer Scores (2.9).
- •2 Статические и динамические структуры
- •3 Указатели
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Массивы
- •2 Списки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структура и функции стека
- •2 Реализация стека
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Очереди
- •2 Деревья
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Пользовательские типы данных
- •Int Age;
- •2 Классы
- •Int *StackEntries;
- •3 Стандартная библиотека шаблонов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Роль операционной системы
- •2 Последовательные файлы
- •3 Вопросы программирования
- •0000000010000110
- •001100010011001100110100
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения индексации
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения хеширования
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Общие вопросы
- •2 Система управления базой данных
- •3 Поддержка целостности баз данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Модели баз данных
- •2 Реляционная модель баз данных
- •3 Объектно-ориентированные базы данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Интеллект и машины
- •2 Распознавание образов
- •3 Мышление
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Искусственные нейронные сети
- •2 Генетические алгоритмы
- •Контрольные вопросы
- •Невычислимые функции Цель лекции
- •План лекции
- •1 Основы машины Тьюринга
- •2 Невычислимая функция
- •3 Сложность задач
- •Листинг 1. Процедура MergeLists для объединения двух упорядоченных списков
- •Листинг 2. Алгоритм сортировки слиянием, реализованный в процедуре MergeSort
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Шифрование с открытым ключом
- •2 Модульная арифметика
- •Контрольные вопросы
- •Литература
- •Internet-ресурсы
2 Распознавание образов
Закрывание и открывание захвата машины не представляет проблемы, и распознать наличие головоломки в захвате во время процесса ее решения также несложно, так как от нашего приложения не требуется большой точности. (К примеру, автоматический механизм ворот гаража может распознать и отреагировать на наличие помехи на пути двери во время закрытия.) Даже проблему фокусировки камеры на головоломке можно легко решить, запрограммировав захват так, чтобы он помещал головоломку в определенное положение, подходящее для просмотра. Следовательно, первое интеллектуальное действие, которое требуется от нашей машины, — это считывание информации с визуального носителя.
Важно понимать, что проблема, с которой сталкивается машина во время наблюдения головоломки, это не просто воспроизведение и хранение изображения. Такая задача решена уже давно — например, при помощи традиционных фотографических и телевизионных систем. Наша задача состоит в распознавании изображения и получении текущего состояния головоломки (а позже и в управлении движением фишек). В этом существенное отличие от приемника телевизионных сигналов, который просто преобразует образы с одного носителя на другой, не распознавая само изображение. Итак, наша машина должна демонстрировать способность распознавать образы (understanding images).
В случае нашей машины для решения головоломки количество вариантов изображений, которые могут быть получены в ходе распознавания, ограничено. Мы можем предположить, что полученный образ — это всегда головоломка с восемью цифрами от 1 до 8 в каком-либо порядке. Вопрос лишь в определении порядка расположения цифр. Представим себе, что образ головоломки закодирован битами в памяти компьютера, где каждый бит представляет уровень яркости определенного пиксела. Исходя из того, что размер изображения всегда один и тот же (машина удерживает головоломку в определенном положении перед камерой), машина может определить позицию каждой фишки, сравнивая различные части картинки с заранее заданными шаблонами, состоящими из битовых комбинаций, обозначающих отдельные цифры головоломки. Как только будут определены совпадающие битовые комбинации для всех фишек, состояние головоломки будет распознано.
Эта техника распознавания изображений используется при оптическом чтении текста. Однако у нее есть и отрицательная сторона — для подобного распознавания требуется единообразие стиля, размера и ориентации считываемых символов. В частности, битовая комбинация, полученная при распознавании символа большого размера, не совпадает с шаблоном для небольшой версии того же символа, хотя очертания их одинаковы. Кроме того, вы можете представить себе, как усложняются проблемы при попытке распознать рукописный текст.
Другой подход к распознаванию символов основывается на сравнении геометрических характеристик, а не внешнего вида символов. В этом случае цифру 1 можно описать как одну вертикальную линию, цифру 2 — как открытую кривую линию, соединенную внизу с прямой горизонтальной чертой, и т. д. Этот способ распознавания символов состоит из двух задач: выявления особенностей обрабатываемого изображения и сравнения его с характеристиками уже известных символов. Но, как и в случае сравнения шаблонов, такая техника также не гарантирует отсутствия ошибок. Например, небольшие ошибки в изображении могут создать набор совершенно других геометрических характеристик, как в случае распознавания О и С или, для нашей головоломки, 3 и 8.
При создании машины для решения головоломки нам, к счастью, не нужно распознавать объемные трехмерные сцены. Мы можем быть уверены, что образы, которые необходимо распознать (цифры от 1 до 8), находятся в различных частях общей картинки и не перекрывают друг друга, как это бывает в общих задачах. Если взять обыкновенную фотографию, то проблема будет заключаться не только в распознавании объекта с различных углов, но и в том, что какие-то части объекта могут быть скрыты от обозрения.
Задача распознавания образов обычно выполняется за два шага: обработка изображения (image processing), которая состоит в идентификации символов на изображении, и анализ изображения (image analysis), то есть осмысление, что же означают эти символы. Мы уже встречались с такими двойными процессами в контексте распознавания символов исходя из их геометрического представления: обработка изображения заключалась в выявлении геометрических характеристик изображения и анализа полученного образа, то есть определения значения этих характеристик.
Обработка изображений влечет за собой множество смежных исследований. Например, усиление контуров, то есть процесс применения математических методов для подчеркивания границ между областями изображения. В каком-то смысле усиление контуров — это попытка преобразования фотографии в чертеж. Другое приложение анализа изображений — это поиск зон, то есть областей изображения со сходными характеристиками, такими как яркость, цвет или текстура. Зоны обычно являются частям одного объекта. Именно возможность распознавания зон позволяет компьютерам добавлять цвета в комиксы или раскрашивать старинные черно-белые фильмы. Еще одно приложение обработки изображений — сглаживание, то есть удаление дефектов изображения. При сглаживании ошибки изображения скрываются от других процессов, входящих в обработку изображений, однако слишком большое сглаживание может привести к исчезновению важной информации.
Сглаживание, усиление контуров и поиск зон — это шаги по направлению к идентификации компонентов изображения. Анализ изображения — это процесс выяснения, что представляют эти компоненты и, в конечном итоге, что представляет собой все изображение. Здесь возникает такая проблема, как распознавание частично скрытых объектов с различных перспектив. Один из подходов к анализу заключается в том, что сначала высказывается предположение, что может представлять собой изображение, а далее производятся попытки связать компоненты изображения с предполагаемыми объектами. Этот способ похож на процесс человеческого мышления — иногда, когда все вокруг выглядит расплывчатым, нам трудно распознать незнакомый объект, но если мы получим подсказку о том, что это может быть, то с легкостью рассмотрим его.
Существует огромное количество различных проблем, связанных с анализом изображений, и в этой области необходимо исследовать еще многое. Задачи, с которыми быстро и просто справляется человеческий разум, все так же остаются за пределами возможностей машин. Тем не менее, в современной ситуации есть признаки того, что альтернативные архитектуры машин смогут однажды преодолеть проблемы, остающиеся нерешенными сегодня.