|







| |
Lipi Core Toolkit 1.1
The Core Toolkit provides a set of
components which can be
used for the construction, evaluation and packaging of handwritten shape recognizers for isolated shapes
such as handwritten gestures and characters.
- A number of bugs have been fixed and minor
enhancements have been made in this release.
- The class "ShapeRecognizer" has been renamed as "ShapeRecMethod"
to remove ambiguity
- Support for "dynamic" projects with variable number of shapes
has been added. This is used by LipiIDE 1.0.
- The standalone Data Collection Tool has been moved out of the
Core Toolkit into its own release as part of Tools.

LipiTk 1.1 can be installed on
any of the following mentioned platforms:
- Windows XP Professional
- Windows 2000 Professional
edition
- Red hat Enterprise Linux
Edition 3.0
- GNU Linux 2.6.9.22
- GNU Linux (Ubuntu) 2.6.14.6
Disk Requirements
LipiTk 1.1 packages for Windows and Linux, both are of size 1.5MB, and
require 6MB of space after extraction. Building the package requires 40MB of free space.
Software Requirements
Windows
Linux
Main shape and word recognition interface for client applications. Given the
project and profile name, Lipi engine performs following actions:
- Loads the DLL of the shape recognizer specified in profile config file.
- Creates and returns the instance of shape recognizer.
Using the instance returned by Lipi engine, applications can interact with
the recognizer for training and testing of the algorithm.
Generic data structure library defines the classes used to store the digital
ink.
| Class |
Description |
| Trace |
Class containing contiguous series of coordinates from a pen down event to the next immediate pen up event. |
| TraceGroup |
Contains set of traces that have similar characteristics. |
| TraceFormat |
Holds information about the type and number of channel data available at each pen point. |
| ScreenContext |
Holds the co-ordinates of the writing area provided |
The generic preprocessing module provides implementations of commonly used
shape/character preprocessing operations. Lipitk provides following
preprocessing operations. All of the operations have configuration options that
can be varied using corresponding properties captured in a configuration file.
| Operation |
Description |
| Moving-average smoothing |
Smoothing the stroke by averaging (x,y) values
within a local window. |
| Size normalization |
Normalizing the size of the incoming trace group to a default value. the
normalized is configurable. |
| Dehooking |
Removal of hook artifacts at the ends of strokes
resulting from slippage and/or pen-tip-switch latency. |
| Equi-distant resampling |
Resampling to obtain equi-spaced points along the
stroke trajectory. |
| Method |
Description |
| PCA recognition module |
Principal Component Analysis (subspace classification) |
| DTW recognition module |
Dynamic Time Warping |
| Method |
Description
|
| Boxed-field recognition module |
Boxed-field recognition (can be configured to call PCA, DTW or any
custom shape recognition module ) |
The utility classes include various infrastructure classes which provide
simple utility functions to other modules.These include
- Classes to read/write UNIPEN ink files.
- Classes to read the key-value pairs defined in Lipitk config files.
- Tokenizer class to split a string on the delimiter passed.
- Class to provide logging facility.
| Script |
Description
|
| listfiles.pl |
Generates a file containing a list of filenames from a regular
expression mapfile, for the purposes of training/testing a shape
recognizer. |
| package.pl |
Perl-based package maker |
| genmake.pl |
Perl-based package maker |
| benchmark.pl |
This script performs training, testing and evaluation of a shape
recognizer. It is useful when these actions need to be performed
repeatedly in the course of experimenting with shape recognition
algorithms or tuning parameters. |
| eval.pl |
|
|
Implementation Language |
Tools required to build/use |
Modules |
|
C++ |
Windows : Visual Studio Linux : gcc |
- Lipi Engine
- Generic Data Structure Library
- Preprocessing
- Recognizers
- Utility Classes
|
|
Perl |
Perl |
|
| Bug Description |
User Impact |
|
The number of classes in any project need not be fixed |
In Version 1.0, the number of class in a project was fixed and it was
specified in "project.cfg" as a key value pair NumShapes=10 < for
numerals >
Version 1.1, gives user the freedom to keep the number of classes a
variable. This can be done by specifying dynamic for NumShapes.
NumShapes=dynamic |
Code Enhancements
Recognizers
- Euclidean pre-filter
added to the DTW classifier.
- The Boxfield
recognizer enhanced to give a 'blank space' output when there is no
ink in a logical segment.
PreProcessing
- Multiple normalization
functions merged into one. The functionality of -normalizeSize<1-5>
merged into one function normalizeSize
- Relative confidence normalization schemes
added for PCA and DTW modules, hence the
confidence will be in range 0-1
Pre-built recognizers :
numerals
- Added shape ID to Unicode mapping for numerals project.
Scripts
- The functionality of
build.pl merged into package.pl. All the hard coded variables
defined in build.pl have been moved to a config file release.cfg
-
On Windows platforms, if the STL’s string data type is used in a client
application and passed by reference to a DLL function, the application
crashes when the string variable goes out of scope. This is the known defect
in Microsoft’s STL library.
For details see:
http://support.microsoft.com/default.aspx?scid=kb;en-us;813810
Workaround
For the detailed list of issues and fixes refer :
-
The file path specified in list files for training or testing, can not contain spaces.
The runshaperec.exe reports an error, and training or testing fails.
Workaround
Do not use directory or files names with spaces in them, or (for Windows platforms) use
the DOS path instead (e.g. for C:\program files, use “C:\progra~1”).
Lipi core-toolkit version 1.1 is
not backward compatible with version 1.0 released earlier.
| LipiTK Team members |
Role/Modules |
|
Sriganesh Madhvanath, HPL |
- Project Lead,
- Use cases and
High-level Architecture
|
|
Deepu Vijayasenan, HPL |
- Technical Lead, Architecture
- Release management
- Custom shape recognition module
- PCA shape recognition
- Preproccesing
- Utility classes
- Boxed-field recognition module
- Generic Word Recognizer
|
|
A. Bharath |
|
|
Sridhar Muralikrishna, HPL |
|
|
Mandalapu Dinesh, HPL |
|
|
Rajesh Pandry, HPL/GDIC |
- Scripts
- Build framework
- Packaging framework
- Makefiles
|
|
Moteth Vijaya Kumar, HPL/GDIC |
- Model data viewer
- Error handling
- DLL/SO support
|
|