<Chapter><Heading> Topological Data Analysis</Heading>

<Table Align="|l|" >

<Row>
<Item>
<Index>ReadImageFile</Index>
<C> ReadImageFile("file.png",n)</C>


<P/>
Inputs an image file ("file.png", "file.eps", "file.bmp" etc)  
and an integer <M>n</M>
between 0 and 765. 
It returns a 1/0 integer matrix representing a black/white version of the image determined by the threshold <M>n</M>. 
</Item>
</Row>

<Row>
<Item>
<Index>WriteImageFile</Index>
<C> WriteImageFile(A,"filename","ext")</C>


<P/>
Inputs a 1/0 matrix A, and a filename followed by its extension 
(e.g. "myfile" followed by "png"). A black/white image is saved to the file.

</Item>
</Row>

<Row>
<Item>
<Index>ViewMatrix</Index>
<C> ViewMatrix(A)</C>
<C> ViewMatrix(A,"mozilla");</C>


<P/>
Inputs a 1/0 matrix A, and command such as "mozilla" for viewing image files.
A black/white image is displayed. 
</Item>
</Row>

<Row>
<Item>
<Index>BettiNumbersOfMatrix</Index>
<C> BettiNumbersOfMatrix(A)</C>


<P/>
Inputs a 1/0 integer matrix <M>A</M> 
representing a black/white version of an image. It returns a list 
<M>[b0,b1]</M> where <M>b0</M> is the 
zeroth betti number of the black image space, and <M>b1</M> is the first betti number. All higher betti numbers will be zero as the space is <M>2</M>-dimensional.
</Item>
</Row>

<Row>
<Item>
<Index>MatrixToChainComplex</Index>
<C> MatrixToChainComplex(A)</C>


<P/>
Inputs a  1/0 integer matrix <M>A</M>
representing a black/white version of an image
and returns the cellular chain complex of the black image space (in characteristic 0).

</Item>
</Row>

<Row>
<Item>
<Index>ContractMatrix</Index>
<C> ContractMatrix(A)</C>


<P/>
Inputs a  1/0 integer matrix <M>A</M> representing a black/white
version of an image
and modifies <M>A</M> so that it represents a homotopy equivalent 
image space hopefully with fewer black cells. Black cells are removed from the image to produce a homotopy equivalent image from which no further black cell can be removed without changing the homotopy type. The function returns 
true if it succeeds in reducing the number of cells of the original image; otherwise it 
returns false.

</Item>
</Row>

<Row>
<Item>
<Index>BoundaryOfMatrix</Index>
<C> BoundaryOfMatrix(A)</C>


<P/>
Inputs a  1/0 integer matrix <M>A</M> representing a black/white
version of an image. It returns a matrix 
 representing the boundary of the black image.

</Item>
</Row>

<Row>
<Item>
<Index>SingularityMatrix</Index>
<C> SingularityMatrix(A)</C>


<P/>
Inputs a  1/0 integer matrix <M>A</M> representing a black/white
version of an image. It returns a matrix
 representing the set of points where the boundary of the black image is not differentiable. (The method for deciding differentiability at a point is crude/discrete and prone to errors.) The zeroth betti number of the set of points is a measure of the number of "corners" in the boundary of the image.

 </Item>
 </Row>
 


<Row>
<Item>
<Index>ThickenedMatrix</Index>
<C> ThickenedMatrix(A)</C>
<C> ThickenedMatrix(A,n)</C>


<P/>
Inputs a  1/0 integer matrix <M>A</M> 
 and returns a 1/0 matrix <M>B</M>. If an entry in <M>A</M> is equal to 1 then the corresponding entry in <M>B</M> and all eight neighbouring entries in <M>B</M> are equal to 1.
<P/> If a positive integer <M>n</M> is input as a second argument then the thickening process is repeated <M>n</M> times.

</Item>
</Row>

<Row>
<Item>
<Index>ComplementedMatrix</Index>
<C> ComplementedMatrix(A)</C>


<P/>
Inputs a  1/0 integer matrix <M>A</M>
 and returns a 1/0 matrix <M>B</M>. An entry in <M>B</M> is equal to 1 precisely when  the corresponding entry in <M>A</M>  equals 0.

 </Item>
 </Row>


</Table>
</Chapter>


