Лабораторная работа №3
Метод "Масок"
Цель: изучить логический метод распознавания – метод «Масок», определить его особенности и отличия от изученных выше методов.
Теория:
Метод «масок» относится к логическим методам распознавания образов.
Так как метод «масок» использует «логическое» описание образа, то значение координат составляют либо 0, либо 1.
В качестве образа рассматривает вектор, фиксированного размера с двоичными координатами.
Алгоритм метода «масок»
Дан набор образов Z1, Z2, Z3,…., Zn и пороги Т1 – порог похожести, Т2 – порог близости. Нужно набор разбить на классы.
1) возьмем образ Z1 – это маска N1. Все остальные образы сравниваем с маской N1.
Сравнение заключается в выполнении скалярного произведения векторов.
Например (1000101^1001100 = 2). Если результат сравнения больше чем Т1 (порог похожести), то текущий образ относится к похожим на маску N1.
2) Все отобранные образы, похожие на маску N1 относим первой группе.
3) Берем первый из оставшихся образов – это будет маска N2. Повторяем шаг 1 и 2.
4) Повторяем шаг 3 до тех пор, пока все образы не будут распределены на группы
5) Для каждой группы вычисляем знак группы Q.
Знак группы – обобщенный двоичный портрет (строка) i-ой группы, т.е. знак группы – это логическая координата вектор – сумма векторов, образующих группу. (Например: 1001+1010 = 1011)
6) Проверяем на близость знаки всех групп, используя порог близости Т2.
Для этого выполняем операцию скалярного произведения векторов. Сравниваем результат с порогом Т2. Если больше чем Т2, то объединяем группы и пересчитываем знак объединенной группы.
7) После объединения групп, полученные знаки образует ряд классов.
8) Для определения к какому классу относится образ. Необходимо выполнить операцию скалярного произведения вектора образа со всеми знаками классов и посмотреть где результат получился больше. Соответственно к этому классу будет отнесен образ.
Задание:
1. Согласно номеру варианта представить предложенный набор букв в качестве двоичных векторов. Для этого каждую букву нарисовать в матрице (размер матрицы должен быть одинаков для всех букв).
Например: буква «Т» в матрице размера 5х5 будет выглядеть следующим образом:
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
Двоичный вектор будет выглядеть как:
1111100100001000010000100
2. Записать вектора в файл
3. Составить программу, которая будет выполнять следующие функции:
• Считать двоичные вектора из файла.
• Ввод порога похожести и порога близости
• Разделить полученный набор образов (двоичных векторов) на классы, используя метод «масок».
• Вывести следующую информацию на экран или в файл: сколько групп и какие образы попали в группу, до объединения групп; какие группы были объединены; сколько получилось классов, какие образы попали в какой класс.
• После этого взять новый образ и определить, к какому классу он принадлежит.
• Предусмотреть возможность изменения нового образа.
Варианты заданий
Вариант |
Набор образов |
Новый образ |
1. |
А, В, Г, Д, О, С, Л, Е, И, З |
Й |
2. |
1, 3, 6, 5, 0, 2, 4, 7, 9, 8 |
В |
3. |
Ц, П, Р, Н, Е, К, У, В, Х, Ь |
Ф |
4. |
I, J, K, L, D, P, O, T, E, V |
X |
5. |
H, L, Z, A, U, K, R, B, C, N |
D |
6. |
Ы, Ш, М, W, B, N, Ж, К, S, I |
А |
7. |
A, Й, Г, Д, О, С, Л, Е, И, З |
U |
8. |
L, П, Р, Н, Е, К, У, В, Х, F |
Б |
9. |
1, 3, 6, 5, I, 2, 4, 7, 9, 0 |
8 |
10. |
!, T, L, O, (, Л, Н, P, N, П |
[ |
11. |
Б, В, Д, Е, А, Ц, Н, С, Ь, Я |
О |
12. |
Х, J, K, L, D, P, O, T, E, V |
В |
13. |
3, B, 6, 8, P, Э, 5, С, 0, Б |
Ь |
14. |
Н, Й, Г, Д, О, С, Л, Е, И, З |
К |
15. |
Н, J, Z, A, U, K, R, B, Y, N |
P |
Содержание отчета
1. Титульный лист
2. Постановка задачи
3. Графическое описание алгоритма решения задачи (например: в виде блок – схемы)
4. Результаты
• Указать номер варианта, набор образов и новый образ
• Привести матрицы кодирования и двоичный вектор для каждого образа
• Вставить скриншот интерфейса программы
• Рассмотреть работу программы для вашего варианта, подобрать наиболее удачные значения порога похожести и близости.
• Привести результаты разбиения на группы, классы.
5. Фрагменты кода
|