Помехоустойчивое кодирование, распознавание символов
| Категория реферата: Остальные рефераты
| Теги реферата: шарарам ответы, антикризисное управление
| Добавил(а) на сайт: Krymov.
Предыдущая страница реферата | 3 4 5 6 7 8 9 10 11 12 13 | Следующая страница реферата
{-----эталонная строка для установления соответствия-----} type arr=array[1..BiW,1..BiH] of byte; {тип массива-картинки} const path0='work.bmp'; {путь к bmp-файлу с исходной строкой} var file0,file1:file of byte; {файловые переменные для связи} counter, {счетчик текущей позиции распознавания} rasp:byte; {номер текущего распознанного символа}
f0, {массив с эталонной картинкой} f:arr; {массив с картинкой, содержащей помехи}
x,y, {счетчики хода по массивам}
xmin, ymin,xmax, ymax , {минимально описанный прямоугольника} xt, {текущая позиция x при движении по картинке}
xsav,{для сохранения текущего x при использовании корреляции} i,j, {вспомогательные счетчики}
xm,xk,ym,yk,
{для сохранения текущего м.о.п. при использовании корреляции} k,{счетчик шаблонов при использовании корреляции}
di,dj : integer;
{смещения шаблона и символа по x и y при наложении}
flag :boolean; {признак отображения на экране рамки}
kfmax, {глобальный максимум корреляции для символа} max, {значение корреляции для текущего шаблона} kf, {текущая переменная для вычисления корреляции} smin:longint; {минимально возможная площадь шаблона}
Procedure Init_Graph_Mode; {-----инициализация графики-----}
var
Driver, {код драйвера графического устройства}
Mode, {код графического режима}
TestDriver, {внутренний номер драйвера в таблице BGI}
ErrCode: Integer; {код ошибки} function TestDetect: Integer; far;
{функция определения параметров графического режима драйвера}
{полный адрес точки входа в функцию, т.е. = сегмент+смещение} begin
TestDetect := 3; {разрешение экрана 800*600 точек} end;
begin
TestDriver := InstallUserDriver('svga256', @TestDetect);
{устанавливает новый драйвер в таблицу BGI} if GraphResult grOk then begin
Writeln('Ошибка при установке драйвера:',
GraphErrorMSG(ErrCode));
Halt(1); end;
Driver := Detect;{автоматическое определение драйвера-SVGA}
InitGraph(Driver, Mode, '');
{инициализация графического режима;}
{драйвер - в текущем каталоге}
ErrCode := GraphResult; if ErrCode grOk then begin
Writeln('Ошибка графического режима:',
GraphErrorMSG(ErrCode));
Halt(1); end;
SetTextStyle(DefaultFont, HorizDir, 1); {текущий шрифт}
OutTextXY(120,20,'Идет инициализация графического режима...'); for x := 0 to 255 do {инициализация палитры grayscale}
SetRGBPalette(x,x,x,x);
OutTextXY(450,20,'Ok.');
end;
Procedure showlist(xn,yn:integer);
{---отображение картинки c масштабированием в 9 раз---}
{xn,yn-начало координат при отображении} begin x := 1; {текущие координаты-в начало} y := 1; repeat {внешний цикл-по высоте} for i := -1 to 1 do for j := -1 to 1 do {текущий пиксель - окном 3*3}
PutPixel((3*x+i)+xn,(3*BiH-3*y+j)+yn,f[x,y]); x := x + 1; {приращение по x} if x = BiW then {если с краю...} begin x := 1; {...то переходим в следующий ряд} y := y + 1 end; until y = BiH; {пока не окажемся в последней строке} end;
procedure Init_Data; {-----заполнение массивов данных-----} var t:byte; begin assign(file0,path0); reset(file0); seek(file0,$436); for y:=1 to BiH do for x:=1 to BiW do begin read(file0,t); {заполняем массив шаблонов} f0[x,y]:=t; end; for x := 1 to BiW do{заполняем массив для внесения помех} for y := 1 to BiH do f[x,y]:=f0[x,y]; end;
Procedure Deranges; {-----------внесение помех-----------} const u=20; {---уровень помех в % от общего веса символов---} var count, {количество внесенных помех} w : integer; {суммарный вес символов}
begin count := 0; w:=0; randomize; {инициализация генератора случайных чисел} for x := 1 to BiW do {подсчитываем суммарный вес} for y := 1 to BiH do if f[x,y] = 0 then w:= w+1; repeat {------вносим помехи...------} x := random(BiW); {случайные координаты} y := random(BiH); if (x in [3..BiW-2]) and (y in [3..BiH-2]) then begin if (f[x,y] = 255) then {если на белом фоне...} f[x,y] := 1; {...то черная точка} if (f[x,y] = 0) then {если на черном фоне...} f[x,y] := 255 {...то белая точка} end; count := count + 1; {ув. счетчик помех} until 100*count >= u * w; {пока не получим данный уровень} for x := 1 to BiW do {перекрашиваем в 0-й цвет} for y := 1 to BiH do if f[x,y] = 1 then f[x,y] := 0 end;
Procedure Filter; {-----фильтрация изображения от помех-----}
Рекомендуем скачать другие рефераты по теме: реферат безопасность, земля реферат.
Категории:
Предыдущая страница реферата | 3 4 5 6 7 8 9 10 11 12 13 | Следующая страница реферата