Модуль интерфейса пользователя

 

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

Интерфейс создан на технологии WinForms.

 

3.3 Модуль ядра

 

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

Рассмотрим каждый класс более подробно и опишем их методы и свойства.

Класс Sign является классом для хранения информации о подписи.

Основные свойства:

− X - массив x-координат;

− Y - массив y-координат;

− P - массив давлений;

− T - массив для хранения времен;

− PartsSize - массив для хранения мест, где штрихи были соединены в длинную линию;

− Vx - массив для хранения изменения скорости X;

− Vy - массив для хранения изменения скорости Y;

− CriticalPoints - критические точки подписи;

− InternalAngles - внутренние углы подписи;

− ExternalAngles - внешние углы подписи.

Методы класса Sign по большей части вспомогательные:

− Сount() - возращает количество точек;

− MinX(), MaxX(), MeanX() - минимальное, максимальное и среднее значение X соответственно;

− MinY(), MaxY(), MeanY() - минимальное, максимальное и среднее значение Y соответственно.

Класс Normalizer отвечает за нормализацию подписи. Содержит следующие методы:

− ApplyRotation() - нормализация по вращению;

− ApplySize() - нормализация по размеру;

− Merge() - отвечает за соединение штрихов в линию.

Класс Extractor отвечает за извлечение локальных особенностей. Метод CalculateVelocities отвечает сразу за подсчет скорости X и Y координат, а так же за извлечение критических точек. Метод CalculateAngles за подсчет внешних и внутренних углов.

Класс GMath является вспомогательным для подсчета математики.

Класс DynamicTimeWarping содержит методы, реализующие DTW-алгоритм.

Класс DTWCalculator cодержит методы для подсчета различных расстояний:

− CoordsDTW() - считает расстояние между координатами;

− VelDTW() - считает расстояние между скоростными особенностями;

− CriticalPointsDTW() - считает расстояние между критическими точками;

− InternalAnglesDTW(), ExternalAnglesDTW() - считают расстояния между углами;

− PressionDTW() - считает расстояние для давлений двух подписей.

Класс ReferenceSet является одним из основных для верификации. Хранит массив подписей из R множества. Основные методы здесь:

− Add() - добавить подпись в R-множество;

− CalculateDtwPairwise() - метод, отвечающий за подсчет расстояний между подписями;

− GetAverageByMinDtw() - возвращает среднее минимальное значение расстояний;

− GetAverageByMaxDtw() - возвращает среднее максимально значение расстояний;

− SetTemplateSign() - устанавливает шаблонную подпись из множества;

− GetAverageByTempDtw() - возвращает среднее расстояние от подписи-шаблона до всех остальных подписей из набора;

− CalculateDtwWithSign() - возращает расстояния от Y подписи до подписей из набора;

− GetFeatureVector() - возвращает FeatureVector для Y подписи.

Класс Saver сохраняет и восстанавливает подписи в файл и из файла соответственно.

Класс Verificator имеет один метод Verificate, который, используя функционал всех предыдущих классов, считывает подписи из файлов, занимается подсчетом векторов особенностей, а затем посылает эти значения на сторону Matlab компонента, который, в свою очередь, подсчитывает QDA стандартными средствами, и возращает true или false.

 

3.4. Модуль Matlab

 

Интеграция С# кода с.m файлом матлаба не является сложной задачей. Достаточно.m файл скомпилировать в dll и подключить эту dll в программу.

 

3.5. Модуль, отвечающий за работу с графическим планшетом

 

Компонент предназначен для организации обработки ввода с графического планшета. Он позволяет использовать привычный способ обработки ввода, основанный на реализации обработчиков событий. В реализации класса компонента инкапсулирована вся работа с библиотекой WinTab. Компонент предоставляет набор функций для открытия и закрытия контекста, изменения параметров контекста, получения информации об устройстве и обработки оконных сообщений.

Класс CWintabContext нужен для обеспечения доступа к управлению контекстом Wintab. Основные методы:

− Open() - открывает Wintab контекст, который будет отправлять пакетные события в окне сообщений;

− Сlose() - закрывает контекст для объекта;

− Enable() - возвращает значение доступен ли Wintab контекст или нет.

И основные поля:

− LogContext - логический контекст Wintab управляется этим объектом;

− HCtx - хэндл для идентификации контекста;

− Name - имя контекста;

− Options - опции для контекста. Опции могут комбинироваться оператором OR. Опции для комбинации находяться в стркуктуре ECTXOptionValues;

− Status - статус, значения которого находятся в ECTXStatusValues;

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

− MsgBase - определяет диапазон номеров сообщений, которые будут использоваться для составления отчета о работе контекста;

− Device - определяет устройство для ввода.

Основными структурами для работы являются Axis и Packet.

Структура Packet описывает пакет данных и содержит информацию о нажатии кнопок на пере планшета, координатах пера и степени нажатия. Опишем поля более подробно:

− pkContext - контекст, генерируемый события;

− pkStatus - статус контекста;

− pkTime - в абсолютном режиме предоставляет системное время, в относительном время после получения последнего пакета;

− pkChanged - указывает, какой пакет данных изменился после последнего события;

− pkSerialNumber - идентификатор пакета контекста;

− pkCursor - курсор, генерируемый контекстом;

− pkButtons - в абсолютном режиме содержит статус текущей кнопки, в относительном первые 4 байта - номер кнопки, последние 4 - код из структуры EWintabPacketButtonCode;

− pkX - в абсолютном режиме местоположение вдоль оси X, в относительном - изменение X относительно оси;

− pkY - в абсолютном режиме местоположение вдоль оси Y, в относительном - изменение Y относительно оси;

− pkNormalPressure - давление на перо;

− pkTangentPressure - тангециальное давление на перо;

− pkOrientation - cодержит информацию об ориентации курсора.

Структура Axis содержит данные диапазона и разрешения оси координат графического планшета. Этой структурой описываться не только оси X и Y плоскости ввода, но и другие параметры, например, «ось» нажатия на перо.

Опишем поля более подробно:

− axMin - определяет минимальное значение элемента данных в родных координат планшета;

− axMax - определяет максимальное значение элемента данных в родных координат планшета;

− axUnits - указывает единицы, используемые при расчете разрешения для элемента данных;

− axResolution - разрешающая способность.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: