109823 (708676), страница 3

Файл №708676 109823 (Помехоустойчивое кодирование, распознавание символов) 3 страница109823 (708676) страница 32016-08-01СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

простые

сложные



самообучающиеся

без обучения

с обучением



Детерминиро-

ванные

Вероятност-

ные

Логические

Структурные


По заданию курсового проекта определён алфавит объектов – множество, состоящее из пяти прописных и пяти строчных букв латинского алфавита. Необходимо построить простую детерминированную систему распознавания.

Под простой будем понимать систему, алгоритм работы которой определён на основе априорной информации.

Сложные системы состоят из нескольких подсистем и уровней распознавания. Примером такого вида систем являются медицинские диагностические системы.

Работа систем без обучения осуществляется на основе априорной информации о признаках. В обучающиеся системы заложен алгоритм обучения по специально подобранной обучающей выборке. В самообучающихся системах заключены правила, по которым система сама определяет множество классов(алфавит классов).

Детерминированная система – это такая система, в которой связь между значениями признаков и классами жесткая, определенная.

Существует три подхода к задаче распознавания текстовых символов.

Первый – шаблонная (растровая) классификация. При её использовании считанный символ сравнивают со всеми шаблонами, хранящимися в базе. Критерии совпадения символов:

а) Q= fш (xi,yj) XOR fs (xi,yj) min( по всем шаблонам );

б) Корреляция между шаблоном и считываемым символом

R(,z)=xy fш (x,y) . fs (x - , y -z) max

Преимущества: малая чувствительность к дефектам (разрывы, шумы…)

Недостатки: необходимо обучение новым шрифтам и типам размеров шрифтов.

Второй – признаковая классификация.

Преимущества: изображение символа преобразуется в простой набор признаков.

Недостатки: уход от истинного изображения.

При использовании этого метода можно использовать следующие признаки:

  • размеры и соотношения размеров символов (длина, высота, площадь);

  • проекции на различные оси;

  • моменты относительно различных осей и соотношения между ними;

Третий – структурная классификация. Заключается в анализе топологии символов.

Обнаружение: углов, окрестностей, линий, пересечений, конечных точек и их взаимное расположение.

В своей работе наиболее приемлемым я счел использование шаблонной классификации на основе корреляционной функции. Использование других признаков я счёл лишним, т.к. они обладают меньшей эффективностью, а следовательно, уменьшают эффективность распознавания.

2.2 ОПИСАНИЕ ПРОГРАММЫ

Для моделирования системы распознавания я разработал программу на языке Borland Pascal.

В программу вхолят следующие процедуры и функции.

Процедура Init_Graph_Mode осуществляет вход в графический режим при использовании графического драйвера видеоадаптера SVGA. Т.к. драйвер svga256.bgi не является встроенным в таблицу BGI, то для его использования необходимо обратиться к стандартной процедуре InstallUserDriver. Кроме того, эта процедура инициализирует палитру GrayScale путем обращения к стандартной процедуре SetRGBPalette.

Процедура ShowList служит для отображения на экране картинки со строкой символов. Отображение идет с увеличением в 9 раз, т.е. каждый пиксель исходной картинки отображается на экране окном 3*3 одинаковых пикселей. В процедуру в качестве параметров передается x и y точки-начала координат, относительно которой и происходит отображение.

Процедура Init_Data служит для заполнения массивов данных: массивов, где содержатся считанные в память картинки.

Процедура Deranges вносит в исходную картинку помехи.

Внесение помех осуществлялось из расчёта 20% от общего веса символов. Координаты пикселей-помех являются случайными числами в пределах ширины и высоты картинки. Пиксель со случайными координатами инвертируется, т.е. при попадании на белый фон ставится чёрная точка, а при попадании на символ – белая точка.

Процедура Filter производит посильное удаление внесённых помех. Для этого используются 16 видов масок: для удаления помех, “залезших” на символ, для удаления групп из двух помех, для удаления помех, “пристроившихся” к символу. При совпадении маски с фрагментом изображения происходит изменение соответствующих пикселей.

Процедура Ramka служит для нахождения координат минимально описанного прямоугольника. Соответствующие переменные являются глобальными, процедура изменяет их значения и значение текущей координаты x. В зависимости от значения переменной flag происходит рисование полученной рамки на картинке.

Распознавание по корреляции оформлено в основном блоке программы. В процессе распознавания происходит поочерёдное выделение минимально описанных прямоугольников вокруг “испорченных” помехами символов. Затем идет цикл сравнения очередного символа со всеми шаблонами. После проверки того, что символ по размерам не меньше очередного шаблона, идет вычисление корреляционной функции. Если символ больше шаблона, то вычисляется несколько значений со смещениями по x и y, а затем из них берётся максимальное. Полученные значения сравниваются между собой. Номер шаблона, с которым получено наибольшее сходство, и будет распознанным символом.

ЗАКЛЮЧЕНИЕ

В работе были разработаны модели канала связи и системы распознавания. Моделирование было произведено с учётом возможного наличия помех. Моделирование показало работоспособность построенных моделей при достаточно высоком уровне помех.

ЛИТЕРАТУРА

1. Теоретические основы информационной техники/Темников Ф.Е.и др.- М.:Энергия, 1971

2. Орлов В.А., Филлипов Л.И. Теория информации в упражнениях и задачах. - М.:Высш.шк., 1976

3. Сигорский В.П. Математический аппарат инженера - Киев:Техника, 1975

4. Солодов А.В. Теория информации и её

применение к задачам автоматического управления и контроля - М.: Наука, 1967.

2.3 ВЫВОД

Во второй части была рассмотрена модель распознавания, основанная на шаблонной классификации. Программное моделирование показало неплохие результаты. Модель распознаёт строку практически в 100% случаев при уровне помех до 40%. Однако данный подход может использоваться только в том случае, если заранее известно, что распознаваемые символы будут одинакового шрифта.

ПРИЛОЖЕНИЕ А

Текст программы моделирования канала связи.

Program final_of_work;

uses crt,graph;

const a=5;

b=0;

m=10+(a mod 6); {15}

r=trunc((m+a-b)/2); {10}

var

n, {n для (n,1) - кода}

temp,ent,out,symb,decode:byte; {буферы для кодирования}

p:array[1..m] of real; {вероятности}

p01,p10:real; {p единичной ошибки}

z,dl:array[1..m] of byte; {код, длина кода}

mask: array[1..8] of byte; {маски для декодирования}

data_n,data_p

:array[1..100] of integer; {данные для графика}

i,j, {счетчики}

count_of_errors, {счетчик ошибок восстановления}

dlina,sh, {длина массива сообщений}

count:integer; {счетчик для построения графика}

range,c,s,l:byte;

fl:boolean;

function flag(px:real):boolean;

{---осуществляет событие с вероятностью p---}

var ww,wq : word;

begin

ww := round(px * 100);

wq := random(100);

if ww > wq then flag := true else flag := false;

end;

procedure ver; {------------расчет вероятностей---------}

var s,i3,j3: integer;

tmp,s1:real;

begin

s:=0;tmp:=0; {вычисляем вероятности}

for j3:=1 to m do

s:=s+sqr(j3-r);

s:=s+m;

for i3:=1 to m do

p[i3]:=(1+sqr(i3-r))/s;

{-------упорядочиваем вероятности--------}

for i3:=1 to m-1 do {внешний цикл}

begin

tmp := p[i3]; {локальный максимум}

for j3:=i3 to m do

if p[j3] >= tmp then

begin

tmp := p[j3]; {максимум на i шаге}

s:=j3 {его номер}

end;

p[s] := p[i3]; {обмен}

p[i3] := tmp

end;

end;

procedure deranges; {----------внесение помех------------}

var tmp : byte;

c0,c1 : integer; {счетчики 0 и 1 для декодирования}

begin

out := 0; {выходной код после помех}

for i := 0 to 7 do {цикл по разрядам}

begin

c0 := 0; {сброс счетчиков}

c1 := 0;

tmp := (z[ent] shr i) and 1; {выделяем разряд}

for j := 1 to n do {цикл по разрядам (n,1)-кода}

case tmp of {определяемм помеху}

0 : if flag(p01) then inc(c1) else inc(c0);

1 : if flag(p10) then inc(c0) else inc(c1)

end;

if c1 > c0 then out := out or (1 shl i)

end; {вносим помеху в выходной код}

end;

procedure set_codes; {-----по алгоритму Шеннона - Фэно-----}

var i3,j2 : byte;

function numb(v:real):byte;{номер вероятности, находящейся}

var i2 : byte; {"" той, что передается как параметр}

begin

for i2 := 1 to m do {цикл по вероятностям}

if(v >= p[i2 + 1]) and (v <= p[i2]){если нашли границы}

then

numb := i2; {присваиваем номер "верхнего"}

end;

begin {-------------of procedure------------}

for i := 1 to m do {обнуляем коды и длины}

begin

z[i] := 0;

dl[i] := 0

end;

range := 8; {разряд - в максимальное значение}

c := 0; {счетчик по "вертикали" - на начало}

repeat {внешний цикл по кодам......}

if c = 0 {если в начале...}

then

dec(range); {... уменьшаем текущий разряд}

inc(c); {увеличиваем внутренний счетчик}

if (z[c] = z[c + 1]) and (c <= m)

{если два кода равны...}

then

begin {...то цикл деления}

fl := false; {флаг дальнейшего деления}

i := c; {"верхняя" граница}

j := c + 1; {"нижняя" граница}

if (z[j] = z[j + 1]) or (j + 1 < m)

{если ещё есть равные...}

then

fl := true; {...то ещё делим}

while fl do {пока можно делить...}

begin

inc(j); {...увеличиваем нижнюю границу}

if (z[j] <> z[j - 1]) or (j > m - 1) then

fl := false

end;

if((j - i) > 1) and (j < m)

{если > 2 элементов...}

then

dec(j); {...корректируем нижнюю границу}

s := numb((p[i] + p[j])/2); {делим}

if p[i] = p[j] {если два элемента...}

then

s := i; {середину - на "верхний"}

if j <= m {если не за пределами кодов...}

then

for l := i to j do {...цикл по группе}

if l <= s then {устанавливаем коды и длины}

begin

z[l] := z[l] or (1 shl range);

dl[l] := dl[l] + 1

end

else

dl[l] := dl[l] + 1;

if j < m then {устанавливаем текущий счетчик}

c := j

else

c := 0

end

Характеристики

Тип файла
Документ
Размер
233 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6729
Авторов
на СтудИзбе
284
Средний доход
с одного платного файла
Обучение Подробнее