Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 19794-8-2015 Информационные технологии (ИТ). Биометрия. Форматы обмена биометрическими данными. Часть 8. Данные изображения отпечатка пальца - остов

     6.2 Кодирование гребневой линии остова с использованием кода направления

6.2.1 Код направления

Каждая линия на изображении остова кодируется ломаной линией. Каждый элемент ломаной линии является фиксированным набором линейных элементов (см. 6.2.4). Линия начинается в точке со смещенной координатой с начальным направлением и следующими характеристиками контрольной точки:

- тип контрольной точки (2 бита: 00 - мнимое окончание гребня, 01 - действительное окончание гребня, 10 - действительная бифуркация гребня, 11 - мнимое продолжение гребня);

- угол направления контрольной точки (число битов на запись определено в блоке "Общий заголовок", диапазон 0°-360° масштабируется согласно числу битов на запись);

- координата X (число битов на запись определено в блоке "Общий заголовок");

- координата Y (число битов на запись определено в блоке "Общий заголовок");

- число следующих элементов направления (8 битов).

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

- изменение направления (число битов направления и угловое разрешение определены в блоке записи "Общий заголовок"; тип данных - целое число со знаком; наименьшее отрицательное число (10...0) не используется для определения изменения направления; например, для числа битов направления, равного 4, и для числа направлений от 0° до 180°, равного 32, диапазон целых чисел от минус 7 до плюс 7 масштабируется в диапазон углов от минус 39,375° до плюс 39,375°);

- или в случае сильного изгиба гребневой линии может возникнуть необходимость сохранять элементы направления при более высоком разрешении. Поэтому предусмотрена возможность переключения между двумя различными уровнями разрешения. При появлении наименьшего отрицательного числа (10...0) в коде, значение разрешения переключается между стандартным и высоким. Кодирование линии всегда будет начинаться со стандартного разрешения. При первом появлении (10...0) в коде значение разрешения изменяется на высокое и используется половина длины шага; при втором появлении происходит обратное переключение к стандартному разрешению и полной длине шага и т.д. (приложение С, таблица С.2);

- изменение направления повторяется до тех пор, пока не будет достигнут конец линии;

- тип контрольной точки конца линии (2 бита: 00 - мнимое окончание гребня, 01 - действительное окончание гребня, 10 - действительная бифуркация гребня, 11 - мнимое продолжение гребня).

Если линия остова заканчивается точкой мнимого окончания гребня (идентификатор типа 00), то относительное расположение контрольной точки на линейном элементе является следующим:

- относительное расположение контрольной точки l/ масштабируется в диапазоне от 0 до 3, то есть берется минимальное значение из двух: или 3, или целое значение от 4l/, и сохраняется как целое 2-битовое число без знака, где l - расстояние между началом последнего элемента линии и контрольной точкой, а - длина шага последнего элемента линии (рисунок 2);

- если линия остова заканчивается действительной контрольной точкой (идентификатор типа 01 или 10) или прерывается точкой мнимого продолжения гребня (идентификатор типа 11), то следуют данные контрольной точки с выравниванием по байтам. Чтобы затраты на выравнивание были небольшими, поступают следующим образом: если ранее сохраненный тип контрольной точки конца линии уже выровнен по стартовому байту, то данные контрольной точки дополняются путем добавления ее направления и расположения. Если тип контрольной точки конца линии не выровнен по стартовому байту, то запись повторяется в начале следующего байта и дополняется направлением и расположением.

В итоге, кодирование продолжается следующим образом:

- если ранее сохраненный тип контрольной точки конца линии не выровнен по стартовому байту, то запись повторяется в начале следующего байта. Любые биты, не использованные по причине выравнивания, заполняются нулями;

- угол направления контрольной точки (в диапазоне от 0° до 360°, масштабируемое в соответствии с числом битов направления в коде направления, определенным в блоке "Общий заголовок");

- координата X (число битов для координат точек определено в блоке "Общий заголовок");

- координата Y (число битов для координат точек определено в блоке "Общий заголовок").

Если конечная контрольная точка имеет тип "мнимое продолжение" (идентификатор типа 11), то описание линии продолжается путем добавления числа следующих элементов направления (8 битов) и элементами направления, как описано ранее.

Любые неиспользованные биты последнего байта каждой закодированной линии заполняются нулями для получения выровненного по байтам начала при кодировании следующей линии.

     
Рисунок 2 - Относительное расположение контрольной точки на линейном элементе ломаной линии - это отношение l/, где S - длина линейного элемента, проходящего через контрольную точку М; l - расстояние между начальной точкой линейного элемента S и контрольной точкой M; - значение угла

6.2.2 Общие правила кодирования линии остова

Для сохранения минимального размера кодирования, линия должна начинаться с действительной контрольной точки (идентификатор типа 01 или 10), если это возможно.

Не существует ограничений на использование графического режима с высоким разрешением или контрольных точек мнимого продолжения.