Дактилоскоп: цифровая обработка отпечатков пальца
6.2 Структуры данных
Line_appr = record
value: integer;
begin_dir,end_dir: integer;
Max_dir: integer;
end;
Запись Line_appr используется для описания элементов аппроксимированного графика. С помощью набора элементов данного типа, можно восстановить аппроксимированный график, имеющий ступенчатый вид. Запись содержит следующие поля.
Value: integer - данное поле содержит аппроксимированное значение некоторого участка.
begin_dir: integer - содержит значение начала аппроксимированного участка. Данное значение представляет собой не что иное, как номер направление (от 0 до 35).
end_dir: integer - содержит значение конца аппроксимированного участка. Это значение, также как и begin_dir, представляет собой номер направления.
Max_dir: integer - данное поле содержит номер направления, при котором на данном аппроксимированном участке [begin_dir,end_dir] достигается максимальное значение, на не аппроксимированном графике. Данное направление, в случае если этот участок будет локальным максимумом, и его вероятность превысит порог, берется в качестве направления точки.
Tpoint = record
x,y: integer;
type_point: integer;
end;
Данная запись позволяет записать информацию об одной характерной точке отпечатка. Запись дактилокарты, следовательно, можно будет описать как массив таких записей.
x,y: integer - это экранные координаты найденной точки.
type_point: integer - это тип найденной точки (т.е. это может быть окончание линии или разветвление и т.д.).
T_Line_Appr_array = array [1..35] of Line_appr;
Это массив записей Line_appr. Таким образом, с помощью данного массива представляется аппроксимированный график.
T_All_Y = array [0..35] of integer;
С помощью данного типа описывается просто набор суммарных интенсивностей по всем направлениям относительно заданной точки.
T_Stack_El = class(TObject)
x,y: integer;
direction: integer;
end;
Данный класс представляет собой элемент стека. Используется на стадии отслеживания линии. Т.к. в задачах подобного типа, как правило, трудно предугадать размер стека, поэтому стек был реализован в виде списка, где в каждом элементе содержится указатель на элемент стека. Под элементы стека также динамически выделяется память. Т.к. все объекты в Object Pascal динамические и в синтаксисе необходимо указывать дополнительных ^, что не загромождает код было решено реализовать элемент стека в виде потомка класса Tobject, и заодно наследовать все его полезные свойства, т.е. не требуется самостоятельно заботиться о выделении памяти под объект и т.п.