<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
                   "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<!-- lifted from troff+man by doclifter -->
<refentry id='mindtct1'>
<!--  @(#)mindtct.1 2001/04/02 NIST -->
<!--  I Image Group -->
<!--  Michael D. Garris -->

<refmeta>
<refentrytitle>MINDTCT</refentrytitle>
<manvolnum>1B</manvolnum>
<refmiscinfo class='date'>02 April 2001</refmiscinfo>
<refmiscinfo class='source'>NIST</refmiscinfo>
<refmiscinfo class='manual'>NFIS Reference Manual</refmiscinfo>
</refmeta>
<refnamediv id='name'>
<refname>mindtct</refname>
<refpurpose>detects minutiae from a fingerprint image contained in an ANSI/NIST 2000 file.</refpurpose>
</refnamediv>
<!-- body begins here -->
<refsynopsisdiv id='synopsis'>
<cmdsynopsis>
  <command>mindtct</command>    
    <arg choice='plain'><replaceable>&lt;an2kfilein&gt;&lt;an2kfileout&gt;</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>


<refsect1 id='description'><title>DESCRIPTION</title>
<para><emphasis remap='B'>Mindtct</emphasis>
parses a standard  compliant ANSI/NIST-ITL 1-2000 file
searching for the first occurrence of a grayscale fingerprint
image record.  If found, the fingerprint image is processed and
minutiae are automatically detected.  Minutiae results
are formatted and stored using the NIST fields 5-12
in a Type-9 record.
Upon successful completion, the
input ANSI/NIST record sequence is augmented with two new
records, the Type-9 minutiae record and a tagged field image
record containing the results of image binarization.  This
augmented record sequence is then written to the specified
output filename.</para>

<para><emphasis remap='B'>Mindtct</emphasis>
also generates the following text files in the current
working directory: <emphasis remap='I'>dmap.txt</emphasis>, <emphasis remap='I'>hcmap.txt</emphasis>, <emphasis remap='I'>lcmap.txt</emphasis>,
<emphasis remap='I'>lfmap.txt</emphasis>, <emphasis remap='I'>qmap.txt</emphasis>, and <emphasis remap='I'>min.txt</emphasis>.
These files are described below.</para>

</refsect1>

<refsect1 id='options'><title>OPTIONS</title>
<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>&lt;an2k file in&gt;</emphasis></term>
  <listitem>
<para>the ANSI/NIST file to be processed</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>&lt;an2k file out&gt;</emphasis></term>
  <listitem>
<para>the resulting ANSI/NIST file</para>

  </listitem>
  </varlistentry>
</variablelist>
</refsect1>

<refsect1 id='text_output_files'><title>TEXT OUTPUT FILES</title>
<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>dmap.txt</emphasis></term>
  <listitem>
<para>The <emphasis remap='I'>Direction Map</emphasis> represents the direction of ridge flow within
the fingerprint image.  The map contains a grid of integer directions,
where each cell in the grid represents an 8x8 pixel neighborhood
in the image.  Ridge flow angles are quantized into 16 integer
bi-directional units equally spaced on a semicircle.  Starting with
vertical direction 0, direction units increase clockwise and
represent incremental jumps of 11.25 degrees, stopping at direction
15 which is 11.25 degrees shy of vertical.  Using this scheme, direction
8 is horizontal.  A value of -1 in this map represents a neighborhood
where no valid ridge flow was determined.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>hcmap.txt</emphasis></term>
  <listitem>
<para>The <emphasis remap='I'>High-Curvature Map</emphasis> represents areas in the image having
high-curvature ridge flow.  This is especially true of core and delta
regions in the fingerprint image, but high-curvature is not limited
to just these cases.  This is a bi-level map with same dimension as
the Direction Map.  Cell values of 1 represent 8x8 pixel
neighborhoods in the fingerprint image that are located within
a high-curvature region, otherwise cell values are set to 0.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>lcmap.txt</emphasis></term>
  <listitem>
<para>The <emphasis remap='I'>Low-Contrast Map</emphasis> represents areas in the image having
low-contrast.  The regions of low contrast most commonly represent
the background in the fingerprint image.  This is a bi-level map with
same dimension as the Direction Map.  Cell values of 1
represent 8x8 pixel neighborhoods in the fingerprint image that are
located within a low-contrast region, otherwise cell values are set to 0.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>lfmap.txt</emphasis></term>
  <listitem>
<para>The <emphasis remap='I'>Low-Flow Map</emphasis> represents areas in the image having
non-determinable ridge flow.  Ridge flow is determined using a set
of discrete cosine wave forms computed for a predetermined range
of frequencies.  These wave forms are applied at 16 incremental
orientations.  At times none of the wave forms at none of the
orientations resonate sufficiently high within the region in the
image to satisfactorily determine a dominant directional frequency.
This is a bi-level map with same dimension as the Direction Map.
Cell values of 1 represent 8x8 pixel neighborhoods in the fingerprint
image that are located within a region where a dominant directional
frequency could <emphasis remap='I'>not</emphasis> be determined, otherwise cell values are set to 0.
The Direction Map also records cells with non-determinable ridge
flow.  The difference is that the Low-Flow Map records <emphasis remap='I'>all</emphasis> cells
with non-determinable ridge flow, while the Direction Map records
only those that remain non-determinable after extensive <emphasis remap='I'>interpolation</emphasis>
and <emphasis remap='I'>smoothing</emphasis> of neighboring ridge flow directions.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>qmap.txt</emphasis></term>
  <listitem>
<para>The <emphasis remap='I'>Quality Map</emphasis> represents regions in the image having varying
levels of quality.  The maps above are combined heuristically to form
5 discrete levels of quality.  This map has the same dimension as the
Direction Map, with each value in the map representing an 8x8 pixel
neighborhood in the fingerprint image.  A cell value of 4 represents
highest quality, while a cell value of 0 represent lowest possible
quality.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>min.txt</emphasis></term>
  <listitem>
<para>This text file reports the minutiae detection results.
The majority of the results listed in this text file are also encoded
and stored in a Type-9 record in the output ANSI/NIST file.  The
first non-empty line in the text file lists the number of minutiae
that were detected in the fingerprint image.  Following this,
the attributes associated with each detected minutia are recorded,
one line of text per minutia.  Each minutia line has the same format.
Fields are separated by a ':', subfields are separated by a ';',
and items within subfields are separated by a ','.  A minutia line
may be represented as:</para>

  </listitem>
  </varlistentry>
</variablelist>
<!-- .RE -->
<!-- .RS 2 -->
<para><emphasis remap='I'>MN</emphasis> : <emphasis remap='I'>MX</emphasis>, <emphasis remap='I'>MY</emphasis> : <emphasis remap='I'>DIR</emphasis> : <emphasis remap='I'>REL</emphasis> : <emphasis remap='I'>TYP</emphasis> : <emphasis remap='I'>FTYP</emphasis> : <emphasis remap='I'>FN</emphasis> : <emphasis remap='I'>NX1</emphasis>, <emphasis remap='I'>NY1</emphasis>; <emphasis remap='I'>RC1</emphasis> : ...</para>

<!-- .RE -->
<!-- .RS -->
<!-- .RS -->
<!-- .RS -->
<para>where:</para>
<variablelist remap='TP'>
  <varlistentry>
  <term><emphasis remap='I'>MN</emphasis></term>
  <listitem>
<para>is the integer identifier of the detected minutia.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>MX</emphasis></term>
  <listitem>
<para>is the x-pixel coordinate of the detected minutia.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>MY</emphasis></term>
  <listitem>
<para>is the y-pixel coordinate of the detected minutia.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>DIR</emphasis></term>
  <listitem>
<para>is the direction of the detected minutia.  Minutia direction is
represented similar to ridge flow direction, only minutia direction
is uni-directional starting at vertical pointing up with unit 0 and
increasing clockwise in increments of 11.25 degrees completing a
full circle.  Using this scheme, the angle of a detected minutia is
quantized into the range 0 to 31 with 8 representing horizontal to the
right, 16 representing vertical pointing down, and 24 representing
horizontal to the left.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>REL</emphasis></term>
  <listitem>
<para>is the reliability measure assigned to the detected minutia.  This
measure is computed by looking up the quality level
associated with the position of the minutia from the Quality Map.
The quality level is then heuristically combined with simple
neighborhood pixel statistics surrounding the minutia point.
The results is a floating point value in the range 0.0 to 1.0,
with 0.0 representing lowest minutia quality and 1.0 representing
highest minutia quality.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>TYP</emphasis></term>
  <listitem>
<para>is the type of the detected minutia.</para>
  <!-- .RS -->
<para>bifurcation  = "BIF"
<!-- .br -->
ridge ending = "RIG"</para>
  <!-- .RE -->
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>FTYP</emphasis></term>
  <listitem>
<para>is the type of feature detected.</para>
  <!-- .RS -->
<para>appearing    = "APP"
<!-- .br -->
disappearing = "DIS"
<!-- .br -->
(This attribute is primarily useful for
purposes internal to the minutia detection algorithm.)</para>
  <!-- .RE -->
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>FN</emphasis></term>
  <listitem>
<para>is the integer identifier of the type of feature detected.
(This attribute is primarily useful for
purposes internal to the minutia detection algorithm.)</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>NX1</emphasis></term>
  <listitem>
<para>is the x-pixel coordinate of the first neighboring minutia.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>NY1</emphasis></term>
  <listitem>
<para>is the y-pixel coordinate of the first neighboring minutia.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><emphasis remap='I'>RC1</emphasis></term>
  <listitem>
<para>is the ridge count calculated between the detected minutia and its
first neighbor.</para>
  </listitem>
  </varlistentry>
  <varlistentry>
  <term><literal>...</literal></term>
  <listitem>
<para>for each additional neighbor ridge count computed, the pixel
coordinate of the neighbor and the ridge count to that neighbor
are reported.</para>

  </listitem>
  </varlistentry>
</variablelist>
</refsect1>

<refsect1 id='examples'><title>EXAMPLES</title>
<para>From <emphasis remap='I'>test/mindtct/execs/mindtct/mindtct.src</emphasis>:</para>

<!-- .RS -->
<para><emphasis remap='B'>% mindtct ../../data/t14wsq08.an2 mindtct.an2</emphasis></para>
</refsect1>

<refsect1 id='see_also'><title>SEE ALSO</title>
<para><emphasis remap='B'>an2k2txt</emphasis>(1C),
<emphasis remap='B'>an2ktool</emphasis>(1C),
<emphasis remap='B'>dpyan2k.1</emphasis>(1C)</para>

</refsect1>

<refsect1 id='author'><title>AUTHOR</title>
<para>NIST/ITL/DIV894/Image Group</para>
</refsect1>
</refentry>

