Помехоустойчивое кодирование, распознавание символов
| Категория реферата: Остальные рефераты
| Теги реферата: шарарам ответы, антикризисное управление
| Добавил(а) на сайт: Krymov.
Предыдущая страница реферата | 3 4 5 6 7 8 9 10 11 12 13
{обнуляем суммы для масок} for l := 1 to 16 do su[l] := 0;
{суммируем по всем видам масок} for l := 1 to 4 do for m:=-1 to 1 do for n:= -1 to 1 do su[l] := su[l] + ((not f[i+m,j+n]) xor mask1[l,m,n]) and 1; for l := 5 to 12 do for m:=-2 to 2 do for n:=-2 to 2 do su[l] := su[l] + ((not f[i+m,j+n]) xor mask2[l,m,n]) and 1; for l := 13 to 14 do for m:=-2 to 2 do for n:=-1 to 1 do su[l] := su[l] + ((not f[i+m,j+n]) xor mask3[l,m,n]) and 1; for l := 15 to 16 do for m:=-1 to 1 do for n:=-2 to 2 do su[l] := su[l] + ((not f[i+m,j+n]) xor mask4[l,m,n]) and 1;
{---проверяем по очереди каждый вид масок---}
{для первого вида - зачерняем центральную точку} l := 0; flg := false; repeat l := l + 1; if su[l] = 0 then flg := true; until (flg) or (l = 4); if flg then f[i,j] := 0;
{для второго - делаем белым окно 3*3} l := 4; flg := false; repeat l := l + 1; if su[l] = 0 then flg := true; until (flg) or (l = 12); if flg then for m := -2 to 2 do for n := -2 to 2 do f[i+m,j+n] := 255;
{для третьего и четвертого - делаем белой центральную точку} l := 12; flg := false; repeat l := l + 1; if su[l] = 0 then flg := true; until (flg) or (l = 16); if flg then f[i,j] := 255; end end;
{-----------минимально описанный прямоугольник----------} procedure ramka(zx:arr;flagx:boolean); var c : integer; {счетчик черных точек} begin xmin:=BiW;xmax:=0;ymin:=BiH;ymax:=0;
{начальные значения координат м.о.п.} c:=0; {начальное значение счетчика} xt := xt + 1; {сдвигаем текущую координату} repeat {цикл увеличения xt по картинке...} xt := xt + 1; for y := 3 to BiH-2 do {просмотр по высоте} if zx[xt,y] = 0 then c:= c+1; until (c 0) or (xt > BiW - 6);
{...пока не встретим черную точку} c:= 0; {начальное значение счетчика} repeat {цикл по символу...} c := 0; for y := 3 to BiH - 2 do {просмотр по высоте} if zx[xt,y] = 0 then {если черная точка...} begin c:=c+1; {...то ув. счетчик} if xt < xmin then xmin := xt; {изм.коорд.м.о.п.} if xt > xmax then xmax := xt; if y < ymin then ymin := y; if y > ymax then ymax := y end; if xt 0 then xt := xt + 1; {ув. текущий x} until (c=0) or (xt > BiW - 2);{...пока не дойдем до белого} if flagx then {если признак...} begin {...то рисуем рамку;100-цвет} for x:=xmin-1 to xmax+1 do f[x,ymin-1]:=100; for x:=xmin-1 to xmax+1 do f[x,ymax+1]:=100; for y:=ymin-1 to ymax+1 do f[xmin-1,y]:=100; for y:=ymin-1 to ymax+1 do f[xmax+1,y]:=100 end end;
{=====================ОСНОВНОЙ БЛОК=======================}
BEGIN
Init_Graph_Mode;
OutTextXY(120,30,'Идет инициализация данных... ');
Init_Data;
OutTextXY(345,30,'Ok.'); flag := false; smin:=BiH*BiH; {max возможная площадь символа}
For counter := 1 to 10 do {цикл по шаблонам} begin {определяем min возможную площадь символа}
Ramka(f0,flag); if (xmax-xmin)*(ymax-ymin) = xmax-xmin) and (yk-ym >= ymax-ymin)
{если шаблон max then max := kf; {локальный max} di:=di+1; {ув. смещение по x} if xmax-xmin+di>=xk-xm {если сместили по x} then {...то смещаем по y} begin di:=0; dj:=dj+1 end; until (ymax-ymin+dj>=yk-ym);
{...пока не сместим по y} if max > kfmax {ищем глобальный max...} then begin kfmax:=max; rasp:=k {...и его номер} end end; xt:=xsav; {восстанавливаем текущий x}
ShowList(170,280); if (xk-xm)*(yk-ym) >= smin{если допустимая площадь} then {...то выводим распознанный символ}
OutTextXY(190 + 35*counter,520,stroka[rasp]);
Until xt >= BiW - 15;
ShowList(170,280);
ReadLn;
CloseGraph; {сбрасываем графичесий режим}
END.
--------------------
Скачали данный реферат: Зорин, Nikolaenko, Кошелев, Денисий, Ухов, Kanaev.
Последние просмотренные рефераты на тему: понятие культуры, рефераты бесплатно скачать, шпаргалки по государству и праву, шпаргалки по праву.
Категории:
Предыдущая страница реферата | 3 4 5 6 7 8 9 10 11 12 13