<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>

<doc>

   <!-- ************************************************************************* -->

   <body>
      <center><h1>dlib C++ library</h1></center>
      <br/><br/>


      <p>

      Dlib is a general purpose cross-platform C++ library designed using contract programming
      and modern C++ techniques.  

      It is open source software and licensed
      under the <a href="license.html">Boost Software License</a>.

      The <a href="intro.html">introduction</a> contains everything you need to know to get
      started using the library.  However, if you have any questions, comments, or complaints feel free to 
      <a href='mailto:davis@dlib.net'>email me</a><web> or post in the 
      sourceforge <a href='http://sourceforge.net/forum/?group_id=130373'>Forums</a></web>.
      
      
      </p>

      <chm>
         <p>
            For updates to this project see <a href="http://dlib.net">dlib.net</a>.
         </p>
      </chm>

      <br/>

      <p>
         <h2>Major Features</h2>
         <ul>
            <li><b>Documentation</b>
            <ul>
               <li>Unlike a lot of open source projects, this one provides complete and precise 
                  documentation for every class and function.   There are also debugging modes that check the 
                  documented preconditions for functions.  When this is enabled it will catch the vast majority of
                  bugs caused by calling functions incorrectly or using objects in an incorrect manner.  
               </li>
               <li>Lots of example programs are provided</li>
               <li><i>I consider the documentation to be the most important part of the library</i>.  So if you find anything 
                  that isn't documented, isn't clear, or has out of date documentation, tell me and I will fix it.
               </li>
            </ul>
            </li>

            <li><b>Portable Code</b>
               <ul>
                  <li>All non ISO C++ code is isolated inside the OS abstraction layers which are kept as small as possible.   
                     The rest of the library is either layered on top of the OS 
                     abstraction layers or is pure ISO C++.  </li>
                  <li>Big/little endian agnostic</li>
                  <li>No other packages are required to use the library.  Only APIs that are
                     provided by an out of the box OS are needed. </li> 
                  <li>The library is tested regularly on win32, Linux, and Mac OS X systems.  However, it should 
                     work on any POSIX system and has been tested on Solaris, HPUX, and the BSDs.</li>
               </ul>
            </li>
            <li><b>Threading</b>
               <ul>
                  <li>The library provides a portable and simple <a href="api.html#threads">threading API</a></li>
                  <li>A message passing <a href="other.html#pipe">pipe</a> for inter-thread and <a href="network.html#bridge">inter-process</a> communication</li>
                  <li>A <a href="other.html#timer">timer</a> object capable of generating events that are regularly spaced in time</li>
                  <li><a href="api.html#thread_specific_data">Thread specific data</a></li>
                  <li><a href="api.html#threaded_object">Threaded objects</a></li>
                  <li><a href="api.html#thread_function">Threaded functions</a></li>
                  <li>A <a href="api.html#thread_pool">thread_pool</a> with support for futures</li>
               </ul>
            </li>

            <li><b>Networking</b>
               <ul>
                  <li>The library provides a portable and simple <a href="api.html#sockets">TCP sockets API</a></li>
                  <li>An object to help you make TCP based <a href="network.html#server">servers</a></li>
                  <li>A <a href="network.html#sockstreambuf">streambuf</a> object that enables TCP sockets 
                  to interoperate with the C++ iostreams library </li>
                  <li>A simple <a href="network.html#http">HTTP server</a> object you can use to embed a 
                  web server into your applications</li> 
                  <li>A message passing <a href="other.html#pipe">pipe</a> for inter-thread and <a href="network.html#bridge">inter-process</a> communication</li>
               </ul>
            </li>

            <li><b>Graphical User Interfaces</b>
               <ul>
                  <li>The library provides a portable and simple core <a href="api.html#gui_core">GUI API</a></li>
                  <li>Implemented on top of the core GUI API are numerous <a href="api.html#gui_widgets">widgets</a></li>
                  <li>Unlike many other GUI toolkits, the entire dlib GUI toolkit is threadsafe</li>
               </ul>
            </li>


            <li><b>Numerical Algorithms</b>
               <ul>
                  <li>A fast <a href="containers.html#matrix">matrix</a> object implemented using the expression 
                     templates technique and capable of using BLAS and LAPACK libraries when available.</li>
                  <li>Numerous linear algebra and mathematical operations are defined for the matrix object such as the 
                     <a href="dlib/matrix/matrix_la_abstract.h.html#svd">singular value decomposition</a>, 
                     <a href="dlib/matrix/matrix_utilities_abstract.h.html#trans">transpose</a>, 
                     <a href="dlib/matrix/matrix_math_functions_abstract.h.html#sin">trig functions</a>, etc.</li>
                  <li>General purpose unconstrained non-linear optimization algorithms using the  
                      <a href="optimization.html#cg_search_strategy">conjugate gradient</a>, 
                      <a href="optimization.html#bfgs_search_strategy">BFGS</a>, and
                      <a href="optimization.html#lbfgs_search_strategy">L-BFGS</a>
                      techniques</li>
                  <li> <a href="optimization.html#solve_least_squares_lm">Levenberg-Marquardt</a> for solving non-linear
                      least squares problems </li>
                  <li>Box-constrained derivative-free optimization via the 
                      <a href="optimization.html#find_min_bobyqa">BOBYQA</a> algorithm</li> 
                  <li>An implementation of the <a href="optimization.html#oca">Optimized Cutting Plane Algorithm</a></li> 
                  <li>Several <preserve_space><a href="optimization.html#solve_qp2_using_smo">quadratic</a> 
                              <a href="optimization.html#solve_qp3_using_smo">program</a>
                              <a href="optimization.html#solve_qp_using_smo">solvers</a></preserve_space> </li> 
                  <li>A <a href="algorithms.html#bigint">big integer</a> object</li>
                  <li>A <a href="algorithms.html#rand">random number</a> object</li>
               </ul>
            </li>

            <li><b>Machine Learning Algorithms</b>
               <ul>
                  <li>Conventional SMO based Support Vector Machines for <a href="ml.html#svm_nu_trainer">classification</a> 
                                                                    and  <a href="ml.html#svr_trainer">regression</a>  </li>
                  <li>Reduced-rank methods for large-scale <a href="ml.html#svm_c_ekm_trainer">classification</a>
                     and <a href="ml.html#krr_trainer">regression</a></li>
                  <li>Relevance vector machines for <a href="ml.html#rvm_trainer">classification</a> 
                      and <a href="ml.html#rvm_regression_trainer">regression</a> </li>
                  <li>General purpose <a href="ml.html#one_vs_one_trainer">multiclass classification</a> tools</li>
                  <li>A <a href="ml.html#svm_multiclass_linear_trainer">Multiclass SVM</a></li>
                  <li>A tool for solving the optimization problem associated with 
                     <a href="ml.html#structural_svm_problem">structural support vector machines</a>. </li> 
                  <li>Structural SVM tools for <a href="ml.html#structural_sequence_labeling_trainer">sequence labeling</a> </li>  
                  <li>Structural SVM tools for solving <a href="ml.html#structural_assignment_trainer">assignment problems</a> </li>  
                  <li>Structural SVM tools for <a href="ml.html#structural_object_detection_trainer">object detection</a> in images </li>  
                  <li>An online <a href="ml.html#krls">kernel RLS regression</a> algorithm</li>
                  <li>An online <a href="ml.html#svm_pegasos">SVM classification</a> algorithm</li>
                  <li>An online kernelized <a href="ml.html#kcentroid">centroid estimator</a>/novelty detector</li> and
                     offline support vector <a href="ml.html#svm_one_class_trainer">one-class classification</a>
                  <li>A kernelized <a href="ml.html#kkmeans">k-means</a> clustering algorithm</li>
                  <li><a href="ml.html#rbf_network_trainer">Radial Basis Function Networks</a></li>
                  <li><a href="ml.html#mlp">Multi layer perceptrons</a> </li>  
               </ul>
            </li>

            <li><b>Graphical Model Inference Algorithms</b>
               <ul>
                  <li><a href="bayes.html#bayesian_network_join_tree">Join tree</a> algorithm for exact inference in 
                  a Bayesian network.</li> 
                  <li><a href="bayes.html#bayesian_network_gibbs_sampler">Gibbs sampler</a> markov chain monte 
                  carlo algorithm for approximate inference in a Bayesian network.</li>
                  <li>Routines for performing MAP inference in 
                     <a href="optimization.html#find_max_factor_graph_viterbi">chain-structured</a> or 
                     <a href="optimization.html#find_max_factor_graph_nmplp">general</a> factor graphs.</li>
               </ul>
            </li>

            <li><b>Image Processing</b>
               <ul>
                  <li>Windows BMP <a href="imaging.html#load_bmp">read</a> and <a href="imaging.html#save_bmp">write</a> support</li>
                  <li>Automatic color space conversion between various pixel types</li>  
                  <li>Common image operations such as edge finding and morphological operations</li>
                  <li>Implementations of the <a href="imaging.html#get_surf_points">SURF</a>
                  and <a href="imaging.html#hog_image">HOG</a> feature extraction algorithms.</li>
                  <li>Tools for <a href="imaging.html#object_detector">detecting objects</a> in images.</li>
               </ul>
            </li>

            <li><b>Data Compression and Integrity Algorithms</b>
               <ul>
                  <li>A <a href="algorithms.html#crc32">CRC 32</a> object</li>  
                  <li><a href="algorithms.html#md5">MD5</a> functions</li>
                  <li>Various abstracted objects representing parts of <a href="compression.html">data compression</a> 
                  algorithms.  Many forms of the PPM algorithm are included.  </li>
               </ul>
            </li>

            <li><b>Testing</b>
               <ul>
                  <li>A thread safe <a href="other.html#logger">logger</a> object styled after the popular Java logger log4j</li>
                  <li>A modular <a href="other.html#dlib_testing_suite">unit testing framework</a></li>
                  <li>Various <a href="metaprogramming.html">assert</a> macros useful for testing preconditions</li>
               </ul>
            </li>

            <li><b>General Utilities</b>
               <ul>
                  <li>A type-safe <a href="other.html#byte_orderer">object</a> to convert between big and little endian byte orderings</li>
                  <li>A <a href="parsing.html#cmd_line_parser">command line parser</a> with the ability to 
                  parse and validate command lines with various types of arguments and options</li>
                  <li>An <a href="parsing.html#xml_parser">XML parser</a></li>
                  <li>An object that can perform <a href="parsing.html#base64">base64</a> conversions</li>
                  <li>Many <a href="containers.html">container classes</a></li>
                  <li><a href="other.html#serialize">Serialization support</a></li>
                  <li>Many <a href="other.html#memory_manager">memory manager</a> objects that implement 
                  different memory pooling strategies</li>
               </ul>
            </li>
         </ul>

      </p>

   
   </body>

   <!-- ************************************************************************* -->

</doc>
