Лекции по компьютерной графике
.pdf
Климентьев К.Е. Компьютерная графика (курс лекций).
Рис. 54. Выделение отрезков прямых с помощью преобразования Хафа
Таким образом, мы умеем превращать линии - в формулы.
5.1.2. ПРИМЕР СТРУКТУРНОГО РАСПОЗНАВАНИЯ
Пример. Распознаем буквы из алфавита {‘А’, ‘Н’, ‘И’}. Система из 3 правил:
•Правило 1: “Буква А состоит из трех отрезков, причем два из них пересекаются верхними концами, а третий пересекает их обоих посередине”.
•Правило 2: “Буква Н состоит из трех отрезков, причем два из них параллельны, а третий пересекает их обоих посередине”.
•Правило 3: “Буква И состоит из трех отрезков, причем два из них параллельны, а третий соединяет верхний конец первого с нижним концом второго”.
Эти правила заранее известны человеку, он может оформить их в виде базы знаний и “зашить” в программу распознавания букв.
Достоинства методов структурного распознавания: можно достичь очень высокого качества распознавания. Недостатки: качество распознавания зависит от того, насколько хорошо человек знает структуру объекта и насколько удачно он ее формализует.
5.2. НЕСТРУКТУРНЫЕ МЕТОДЫ
Как правило, это методы с предварительным обучением алгоритма. В процессе обучения структура объекта (т.е. система отношений между его составными частями) все-таки оказывается “зашита” в алгоритм, но без участия человека.
5.2.1. МЕТОД БАЙЕСА
Основан на формуле Байеса из теории вероятности:
P(Hi | A) = |
P(Hi )P(A | Hi ) |
(i =1, 2,..., n) |
n |
||
|
∑P(Hi )P(A | Hi ) |
|
|
i=1 |
|
Здесь P(Hi) - априорные (доопытные) вероятности диагнозов Hi, рассчитываются в результате обучения; P(A|Hi) - вероятность симптома A при условии, что заведомо поставлен диагноз Hi, тоже определяется при обучении. Формула позволяет определить вероятность диагноза Hi, если встретился симптом A.
Пример: различить символы “крестик” и “нолик” (см. рис. 55) по точкам с координатами
(0,0) и (0,1).
41
Климентьев К.Е. Компьютерная графика (курс лекций).
Рис. 55. Различные варианты изображения “крестиков” и “ноликов”
Предположим, что по большой выборке, включающей десятки и сотни различных вариантов изображения “крестиков” (K) и “ноликов” (Н), получаем статистику:
P(K)=0.55
P(Н)=0.45
P((0,0)|K)=0.9
P((0,1)|K)=0.2
P((0,0)|Н)=0.7
P((0,1)|Н)=0.9
Обучение закончено. Теперь необходимо распознать изображение, для которого точка (0,0) белая. Каковы вероятности симптомов “это крестик” и “это нолик”?
P(K|(0,0))=(0.55*0.9)/(0.55*0.9+0.45*0.7)=0.61 - выбираем его;
P(Н|(0,0))=(0.45*0.7)/ (0.55*0.9+0.45*0.7)=0.39.
Примечание 1. Это очень упрощенный пример, на самом деле надо распознавать по большему количеству точек, например, по всем 5*5=25. Но наиболее правильно распознавать по характерным признакам, например, не по угловой, а по центральной точке. Задача выделения характерных признаков решается методами факторного анализа.
Примечание 2. Есть вариант метода, в котором P(H) каждый раз заменяются рассчитанными значениями P(H|A), и таким образом алгоритм “дообучается” в процессе распознавания.
5.2.2. МЕТОД НЕЙРОННЫХ СЕТЕЙ
5.2.2.1. МОДЕЛЬ НЕЙРОНА
Нейрон (нервная клетка) человеческого мозга (см. рис. 56).
Рис. 56. Нейрон
В мозгу около 14 миллиардов нервных клеток, но задачами распознавания занимаются всего около 1000 из них. Каждый распознающий нейрон связан примерно с 100 своими собратьями. По аксонам и дендритам передаются слабые электрические импульсы с частотами от нескольких Гц до нескольких сотен Гц, причем информация закодирована в
42
Климентьев К.Е. Компьютерная графика (курс лекций).
частоте их следования. Среднее время, за которое полностью заканчивается процесс распознавания образа, около 0.2 с.
Формальная математическая модель нейрона (см. рис. 57).
Рис. 57. Математическая модель нейрона
На этом рисунке Xi - значения входов; Wi - коэффициенты усиления синапсов (или просто синапсы); Y - значение выхода. Особую роль играет функция активности F, ее типичные варианты (см. рис. 58):
1) линейная y=A*X+B (используется в редких случаях);
2) скачкообразная y = 1, x < x0
0, x ≥ x0
3) сигмовидная (логистическая) y =1+1e−αx .
а) линейная; б) скачок; в) логистическая Рис 58. Варианты функции активности нейрона
5.2.2.2. ОБЩАЯ СТРУКТУРА НЕЙРОННОЙ СЕТИ
Рис. 59. Общая структура нейронной сети
Нейроны располагаются слоями, различают:
•входной слой;
•внутренние слои (их может быть несколько);
•выходной слой.
43
Климентьев К.Е. Компьютерная графика (курс лекций).
Обычно каждый элемент предыдущего слоя соединяется со всеми элементами следующего. (Примечание: во внутренних слоях могут быть скрытые элементы, не имеющие входов). Если все функции активности линейны, то многослойная сеть легко может быть сведена к однослойной (в этом ограниченность линейных функций). Если все функции активности нелинейны, то такие многослойные сети иногда называют перцептронами.
Топология сети зависит от решаемой задачи:
•количество нейронов во входном слое соответствует количеству входных признаков;
•количество внутренних слоев соответствует количеству поверхностей (линий, плоскостей), которыми можно разделить объекты (см. п. 5, и рис. 48);
•количество выходных нейронов соответствует количеству вариантов ответа.
5.2.2.3. РАБОТА СЕТИ
Нейронные сети используются для распознавания образов, для моделирования сложных систем, для принятия решений при управлении процессами и т.п. Свойства сети зависят: 1) от топологии; 2) от вида функции активности; 3) от значений синапсов. Работа сети (см. рис. 59) заключается в том, что:
• на входные нейроны подаются определенные значения;
• производится расчет выходных значений нейронов (в соответствии со значениями синапсов и функциями активности, см. рис. 57) и передача в следующие слои;
• эта операция последовательно производится для всех нейронов всех внутренних слоев и выходного слоя;
• на выходах нейронов выходного слоя формируется результат работы - “ответ”.
В сетях такого рода результат движется от входа к выходу, это - сети прямого распространения.
5.2.2.4. ОБУЧЕНИЕ СЕТИ
Обычно топология сети и значения функции активности определяются на этапе проектирования сети и в дальнейшем жестко фиксированы. Но качество работы сети (например, успешность распознавания) определяется еще значениями синапсов. Эти значения надо подбирать под конкретную задачу на этапе обучения сети. Обучение заключается в том, что:
•значения синапсов выбираются произвольными;
•на вход подается большое количество (иногда несколько тысяч) обучающих примеров;
•для каждого обучающего примера вычисляется “ответ” сети;
•каждый такой “ответ” сравнивается с “правильным ответом”, вычисляется рассогласование (ошибка);
•значения синапсов сети корректируются в зависимости от величины этой ошибки;
•обучение продолжается на следующих примерах.
Каждый эксперимент с одним обучающим образцом называется эпохой. В течение каждой эпохи, получив ошибку на выходе, сначала корректируют синапсы выходного слоя, потом предпоследнего, и так далее, до самого первого. Это - метод обратного распространения ошибок. Его суть (см. рис. 60):
44
Климентьев К.Е. Компьютерная графика (курс лекций).
Рис. 60. Коррекция синапса
•вычисляется ∆Y = Yн-Y рассогласование результата (здесь Yн - номинальное значение результата, “правильный ответ”);
•ошибка ∆Y пересчитывается на вход нейрона, т.е. рассчитывается, какое значение δ, будучи добавлено на вход с “правильным” синапсом W, привело бы к ошибке ∆Y:
-для линейных функций активности δ = ∆Y = Yн-Y;
-для сигмовидной функции активности δ = Y (1-Y) ∆Y = Y (1-Y) (Yн-Y);
•вычисляется корректирующий коэффициент ∆W = η δ X (здесь η - “норма обучения”, маленький коэффициент, чем он меньше, тем точнее, но медленнее обучение; и наоборот);
•синапс корректируется W=W+∆W.
Пример. Рассмотрим одну эпоху обучения для сети с сигмовидными функциями активности, изображенной на рис. 61.

Рис. 61. Пример простой сети
Рассчитываем выходы нейронов:
Y2=F(X1*W1,2+X2*W3,2);
Y4=F(X1*W1,4+X2*W3,4); Y5=F(Y2*W2,5+Y4*W4,5)=Y;
Рассчитываем для нейронов ошибки “по входу”:
δ5 = Y5*(1-Y5)*(Yн-Y5);
δ2 = Y2*(1-Y2)*( δ5W2,5);
δ4 = Y4*(1-Y4)*( δ5*W4,5);
Рассчитываем корректирующие коэффициенты для синапсов:
∆W2,5=η*δ5*Y2;
∆W4,5=η*δ5*Y4;
∆W1,2=η*δ2*Y1;
∆W3,4=η*δ4*Y3;
5.2.2.5. ПРИМЕР РАСПОЗНАВАНИЯ СИМВОЛОВ
Пусть поставлена задача распознавания “крестиков” и “ноликов” (см. п. 5.2.1 и рис. 55). Пусть для простоты у нас будет координатная сетка 3x3. Предварительный анализ показывает, что наиболее сильно влияющий фактор всего один, это - значение центральной точки. Это означает, что можно построить всего одну гиперплоскость, которая разделяет 9- мерное пространство на два полупространства: 1) в одном “живут” объекты с нулевой
45
Климентьев К.Е. Компьютерная графика (курс лекций).
(белой) точкой (1,1); 2) в другом живут объекты с единичной (черной) центральной точкой. Тогда целесообразно построить вот такую сеть - см. рис. 62.
Рис. 62. Сеть, отличающая “крестиков” от “ноликов”
Поскольку сеть однослойная, функции активности можно взять линейные. Выходной нейрон один, пусть Y=1 означает “крестик”, а Y=0 - “нолик”. В процессе обучения на 10 обучающих примерах c нормой η=0.1 синапс W5 принимает значение, близкое к 1, а все остальные стремятся к 0. После окончания обучения распознаватель готов к работе.
Примечание 1. Это был очень упрощенный и искусственный пример. В реальных OCRпрограммах (типа FineReader) символы распознаются на сетках порядка 8х8 и 10х10, используется сигмовидная функция активности, внутренний слой содержит 10-20 нейронов, а количество обучающих эпох достигает 10000.
Примечание 2. Размер обучающей выборки должен быть: 1) не очень мал, иначе распознаватель будет плохо различать символы; 2) не очень велик, иначе распознаватель будет хорошо распознавать обучающие примеры и отвергать реальные данные (это эффект “перетренированности”). Вообще, зависимость качества работы распознавателя (процента правильно распознанных объектов) от объема обучающей выборки выглядит примерно как на рис. 63.
Рис. 63. Зависимость качества распознавания от объема обучающей выборки
Оптимальное количество Nопт обучающих экспериментов подбирается экспериментально.
46
Климентьев К.Е. Компьютерная графика (курс лекций).
ЛИТЕРАТУРА
1.Вельтмандер П.В. Машинная графика. Учебное пособие в 3-х книгах / Новосибирский государственный технический университет, 1997. http://ermak.cs.nstu.ru/kg_rivs/
2.Фролов А.В., Фролов Г.В. Программирование видеоадаптеров CGA, EGA и VGA/ М.:
Диалог-МИФИ, 1992. - 288 с. http://www.vcl.ru/html/dos/vga/home.htm
3.Порев В. Н. Компьютерная графика. - СПб.: БХВ-Петербург, 2002. - 432 с.
4.Мастрюков Д. Алгоритмы сжатия информации // Монитор
•Часть 1. Сжатие по Хаффмену. - 1993, №7-8.- С. 14-24.
•Часть 2. Арифметическое кодирование. - 1994, №1. - С. 20-26.
•Часть 3. Алгоритмы группы LZ. - 1994, №2 . - С.10-18.
•Часть 4. Алгоритм LZW. - 1994, №3. - С. 11-14.
•Часть 5. Алгоритмы сжатия в драйверах устройств. - 1994, №4. - С.24-32.
•Часть 6. Сжатие звуковой информации. - 1994, №5. - С. 2226.
•Часть 7. Сжатие графической информации. - 1994, №6. - С. 12-20.
5.Ватолин Д.С. Алгоритмы сжатия изображений. Методич. пособие / М.: Изд-во ВМиК МГУ, 1999. - 76 с. http://lib.ru/TECHBOOKS/ALGO/VATOLIN/algcomp.htm
6.Уэлстид С. Фракталы и вейвлеты для сжатия изображений в действии / М.: Триумф, 2003. - 319 с.
7.Короткий С. Введение в распознавание образов // Монитор
•Часть 1. Преобразование Хафа. - 1994, №8. - С. 22-25.
•Часть 2. Утончение. - 1995, №1. - С. 8-11.
•Часть 3. Выделение углов. - 1995, №4. - С. 26-28.
•Часть 4. Распознавание символов. - 1995, №5 - С. 24-26.
8. Гайдышев И. Анализ и обработка данных: специальный справочник/ СПб.: Питер, 2001. - 752 с.
11. Каллан Р. Основные концепции нейронных сетей / М.: Вильямс, 2003. - 288 с.
47
Климентьев К.Е. Компьютерная графика (курс лекций).
ПРИЛОЖЕНИЕ A. ДОПОЛНИТЕЛЬНЫЕ ТЕМЫ
ТЕМА 6. СРЕДСТВА РАБОТЫ С ГРАФИКОЙ
6.1.ПОДСИСТЕМА GDI в MS WINDOWS
6.1.1.ОБЩАЯ СТРУКТУРА ПРОГРАММЫ
6.1.2.СООБЩЕНИЯ WINDOWS
6.1.3.СТРУКТУРА ОБАБОТЧИКА ОКОННЫХ СООБЩЕНИЙ
6.1.4.КОНТЕКСТ УСТРОЙСТВА
6.1.5.ГРАФИЧЕСКМЕ ФУНКЦИИ
6.2.X WINDOW В UNIX
6.3.БИБЛИОТЕКИ DIRECTX И OPENGL
6.3.1ОБЩАЯ СТРУКТУРА БИЛИОТЕКИ DIRECTX
6.3.2. ПРИНЦИПЫ ПРОГРАММИРОВАНИЯ С ПОМОЩЬЮ OPENGL
6.4.ЯЗЫКИ HTML И VRML
6.5.ГРАФИЧЕСКИЕ РЕДАКТОРЫ
6.6.СРЕДСТВА СОЗДАНИЯ ПРЕЗЕНТАЦИЙ
48
Климентьев К.Е. Компьютерная графика (курс лекций).
ПРИЛОЖЕНИЕ Б. ПРИМЕРНЫЙ ПЕРЕЧЕНЬ ВОПРОСОВ
КЗАЧЕТУ ПО ТЕОРЕТИЧЕСКОЙ ЧАСТИ КУРСА
1.Алгоритмы рисования прямых линий
2.Алгоритмы рисования эллипсов и окружностей
3.Кривые Безье
4.Алгоритмы закрашивания фигур
5.Матричные преобразования координат на плоскости
6.Проецирование объемных фигур на плоскость
7.Модели освещения фигур в 3-мерном пространстве
8.Методы удаления невидимых фрагментов изображений
9.Метод сжатия RLE
10.Метод сжатия Хаффмана
11.Метод арифметического кодирования
12.Методы сжатия LZ77 и LZSS
13.Методы сжатия LZ78 и LZW
14.Методы спектрального сжатия, формат JPEG
15.Метод фрактального сжатия
16.Метод волнового сжатия
17.Матричные методы изменения качества изображений
18.Методы перехода от цветного изображения к серому, и от серого к черно-белому
19.Метод утончения линий, алгоритм Рутовица
20.Метод векторизации растровых изображений, алгоритм Хафа
21.Общая характеристика методов распознавания образов и изображений
22.Структурные методы распознавания изображений
23.Распознавание изображений методом Байеса
24.Нейронные сети
49
Климентьев К.Е. Компьютерная графика (курс лекций).
ПРИЛОЖЕНИЕ В. ПРИМЕРЫ ИНДИВИДУАЛЬНЫХ ЗАДАНИЙ ПО ЛАБОРАТОРНОМУ ПРАКТИКУМУ
Индивидуальные задания по теме “Использование технических возможностей графических контроллеров VGA/SVGA”.
1.“Пламя” в режиме 320х200x256.
2.“Плазма” в режиме 320х200x256.
3.Плавное гашение/восстановление экрана в режиме 80x25x16.
4.Комментарии шрифтами 8х8, 8х14 и 8х16 одновременно в режиме 320x200x256..
5.Вращение символов в режиме 80х25х16.
6.“Снежинка Коха” в режимах 320x200x4, 640x200x2 и 640x350x2.
7.“Снежинка Коха” в режимах 640x480x16 и 320x200x256.
8.Пламя в текстовом режиме 80х50х16 (или 80х43х16).
9.Одновременная демонстрация всевозможных цветов в режиме 320х200х256.
10.Вертикальный сдвиг на целое число пикселов в 80х25х16.
11.Рисование нестандартными символами в режиме 80х25х16.
12.“Улитка Джулии (Жёлио)” в режимах 320x200x4, 640x200x2 и 640x350x2.
13.“Улитка Джулии (Жёлио)” в режимах 640x480x16 и 320x200x256.
14.“Крест Ньютона” в режимах 320x200x4, 640x200x2 и 640x350x2.
15.“Крест Ньютона” в режимах 320x200x4, 640x200x2 и 640x350x2.
16.Дрожание экрана с разными частотами.
17.“Фрактал Мандельброта” в режимах 320x200x4, 640x200x2 и 640x350x2.
18.“Фрактал Мандельброта” 320x200x4, 640x200x2 и 640x350x2.
19.Варианты “пламени” в 320x200х256 в различных цветовых тональностях: бело-желто- красной, бело-сине-фиолетовой, бело-зеленой и т.п.
20.Варианты “плазмы” в 320x200х256 в различных цветовых тональностях: бело-желто- красной, бело-сине-фиолетовой, бело-зеленой и т.п.
21.“Дракон Хэтуэя” в режимах 320x200x4, 640x200x2 и 640x350x2.
22.“Губка Серпинского” в режимах 320x200x4, 640x200x2 и 640x350x2.
Примечание. Лабораторная работа выполняется в операционной системе MS-DOS (возможно использование DOS-сессии операционных систем Windows 95/98/ME). Языки программирования: Pascal или C, рекомендуемые системы программирования: Turbo Pascal v6.0/7.0 и Borland C/C++ v3.1. Применение расширенных возможностей языка С++
(классов, перегруженных операторов и т.п.), а также использование языка ассемблера не допускается. Если не указано иное, то текстовым видеорежимом по умолчанию следует считать 80x25x16, а графическим – 320x200x256. Каждое изображение, построенное в графическом режиме, должно обязательно сопровождаться комментарием на русском языке, выведенным поточечно.
50
