Commit b0acb13e243de04c956e6b83626681e18c46c944

Authored by Jordan Cheney
1 parent 53b24eed

Updated plugin documentation, documented command line API and added to C++ Plugin API

Showing 183 changed files with 2628 additions and 2772 deletions

Too many changes.

To preserve performance only 100 of 183 files are displayed.

app/br/br.cpp
... ... @@ -251,19 +251,22 @@ private:
251 251 "-train <gallery> ... <gallery> [{model}]\n"
252 252 "-enroll <input_gallery> ... <input_gallery> {output_gallery}\n"
253 253 "-compare <target_gallery> <query_gallery> [{output}]\n"
  254 + "-pairwiseCompare <target_gallery> <query_gallery> [{output}]\n"
254 255 "-eval <simmat> [<mask>] [{csv}] [{matches}]\n"
  256 + "-inplaceEval <simmat> <target> <query> [{csv}]\n"
255 257 "-plot <file> ... <file> {destination}\n"
256 258 "\n"
257 259 "==== Other Commands ====\n"
258 260 "-fuse <simmat> ... <simmat> (None|MinMax|ZScore|WScore) (Min|Max|Sum[W1:W2:...:Wn]|Replace|Difference|None) {simmat}\n"
259 261 "-cluster <simmat> ... <simmat> <aggressiveness> {csv}\n"
260 262 "-makeMask <target_gallery> <query_gallery> {mask}\n"
  263 + "-makePairwiseMask <target_gallery> <query_gallery> {mask}\n"
261 264 "-combineMasks <mask> ... <mask> {mask} (And|Or)\n"
262 265 "-cat <gallery> ... <gallery> {gallery}\n"
263 266 "-convert (Format|Gallery|Output) <input_file> {output_file}\n"
264 267 "-evalClassification <predicted_gallery> <truth_gallery> <predicted property name> <ground truth proprty name>\n"
265 268 "-evalClustering <clusters> <gallery>\n"
266   - "-evalDetection <predicted_gallery> <truth_gallery> [{csv}] [{normalize}] [{minSize}]\n"
  269 + "-evalDetection <predicted_gallery> <truth_gallery> [{csv}] [{normalize}] [{minSize}] [{maxSize}]\n"
267 270 "-evalLandmarking <predicted_gallery> <truth_gallery> [{csv} [<normalization_index_a> <normalization_index_b>] [sample_index] [total_examples]]\n"
268 271 "-evalRegression <predicted_gallery> <truth_gallery> <predicted property name> <ground truth property name>\n"
269 272 "-assertEval <simmat> <mask> <accuracy>\n"
... ... @@ -271,6 +274,7 @@ private:
271 274 "-plotLandmarking <file> ... <file> {destination}\n"
272 275 "-plotMetadata <file> ... <file> <columns>\n"
273 276 "-project <input_gallery> {output_gallery}\n"
  277 + "-deduplicate <input_gallery> <output_gallery> <threshold>"
274 278 "-getHeader <matrix>\n"
275 279 "-setHeader {<matrix>} <target_gallery> <query_gallery>\n"
276 280 "-<key> <value>\n"
... ... @@ -282,6 +286,7 @@ private:
282 286 "-about\n"
283 287 "-version\n"
284 288 "-daemon\n"
  289 + "-slave\n"
285 290 "-exit\n");
286 291 }
287 292 };
... ...
docs/docs/api_docs/c_api/functions.md
... ... @@ -263,7 +263,7 @@ Creates a **.csv** file containing performance metrics from evaluating the simil
263 263  
264 264 ## br_assert_eval
265 265  
266   -Evaluates the similarity matrix using the mask matrix. Function aborts ff TAR @ FAR = 0.001 does not meet an expected performance value.
  266 +Evaluates the similarity matrix using the mask matrix. Function aborts if TAR @ FAR = 0.001 does not meet an expected performance value.
267 267  
268 268 * **function definition:**
269 269  
... ... @@ -794,7 +794,7 @@ Returns the full path to the root of the SDK.
794 794  
795 795 ## br_get_header
796 796  
797   -Retrieve the target and query inputs in the [BEE matrix](../../technical.md#the-evaluation-harness) header. See the bullets at the top of this page on managed return values.
  797 +Retrieve the target and query inputs in the [BEE matrix](../../technical.md#the-evaluation-harness) header. For information on managed return values see [here](../c_api.md#memory).
798 798  
799 799 * **function definition:**
800 800  
... ... @@ -900,8 +900,8 @@ Convenience function for training on multiple inputs
900 900 Parameter | Type | Description
901 901 --- | --- | ---
902 902 num_inputs | int | Size of **inputs**
903   - inputs[] | const char * | An array of [galleries](../cpp_api.md#gallery) to train on.
904   - modell | const char *model = | (Optional) String specifying the binary file to serialize training results to. The trained algorithm can be recovered by using this file as the algorithm. By default the trained algorithm will not be serialized to disk.
  903 + inputs[] | const char * | An array of [galleries](../cpp_api/gallery/gallery.md) to train on.
  904 + model | const char * | (Optional) String specifying the binary file to serialize training results to. The trained algorithm can be recovered by using this file as the algorithm. By default the trained algorithm will not be serialized to disk.
905 905  
906 906 * **output:** (void)
907 907 * **see:** [br_train](#br_train)
... ... @@ -922,6 +922,24 @@ Get the current OpenBR version.
922 922  
923 923 ---
924 924  
  925 +## br_slave_process
  926 +
  927 +For internal use via [ProcessWrapperTransform](../plugins/core.md#processwrappertransform)
  928 +
  929 +* **function definition:**
  930 +
  931 + void br_slave_process(const char * baseKey)
  932 +
  933 +* **parameters:**
  934 +
  935 + Parameter | Type | Description
  936 + --- | --- | ---
  937 + baseKey | const char * | base key for the slave process
  938 +
  939 +* **output:** (void)
  940 +
  941 +---
  942 +
925 943 ## br_load_img
926 944  
927 945 Load an image from a string buffer. This is an easy way to pass an image in memory from another programming language to openbr.
... ... @@ -1179,7 +1197,7 @@ Enroll a [Template](../cpp_api/template/template.md) from the C API!
1179 1197  
1180 1198 Parameter | Type | Description
1181 1199 --- | --- | ---
1182   - tmpl | br_template | Pointer to a [Template](../cpp_api.md#template).
  1200 + tmpl | br_template | Pointer to a [Template](../cpp_api/template/template.md).
1183 1201  
1184 1202 * **output:** ([br_template_list](typedefs.md#br_template_list)) Returns a pointer to a [TemplateList](../cpp_api/templatelist/templatelist.md)
1185 1203  
... ...
docs/docs/api_docs/cl_api.md
  1 +The command line API is a tool to run OpenBR from the command line. The command line is the easiest and fastest way to run OpenBR!
  2 +
  3 +The following is a detailed description of the command line API. The command line API is really just a set of wrappers to call the [C API](c_api.md). All of the flags in this API have a corresponding C API call. To help display the examples the following shorthand definitions will be used:
  4 +
  5 +Shortcut | Definition
  6 +--- | ---
  7 +<arg> | <> Represent an input argument
  8 +{arg} | {} Represent an output argument
  9 +[arg] | [] Represent an optional argument
  10 +(arg0|...|argN) | (...|...) Represent a choice.
  11 +
  12 +## Algorithms
  13 +
  14 +Almost every command line process needs to specify an algorithm to work properly. Algorithms in OpenBR are described in detail [here](../tutorials.md#algorithms-in-openbr). To specify algorithms to the command line use the <tt>-algorithm</tt> flag like so:
  15 +
  16 + -algorithm "AlgorithmString"
  17 +
  18 +Make sure you use the quotes if your algorithm is longer than one plugin because special characters in OpenBR are also special characters (with very different meanings!) in Bash.
  19 +
  20 +## Core Commands
  21 +
  22 +### -train {: #train }
  23 +
  24 +Train a model
  25 +
  26 +* **arguments:**
  27 +
  28 + -train <gallery> ... <gallery> [{model}]
  29 +
  30 +* **wraps:** [br_train_n](c_api/functions.md#br_train_n)
  31 +
  32 +### -enroll {: #enroll }
  33 +
  34 +Enroll a [Gallery](cpp_api/gallery/gallery.md) through an algorithm
  35 +
  36 +* **arguments:**
  37 +
  38 + -enroll <input_gallery> ... <input_gallery> {output_gallery}
  39 +
  40 +* **wraps:** [br_enroll](c_api/functions.md#br_enroll) or [br_enroll_n](c_api/functions.md#br_enroll_n) depending on the input size
  41 +
  42 +### -compare {: #compare }
  43 +
  44 +Compare query [Templates](cpp_api/template/template.md) against a target [Gallery](cpp_api/gallery/gallery.md)
  45 +
  46 +* **arguments:**
  47 +
  48 + -compare <target_gallery> <query_gallery> [{output}]
  49 +
  50 +* **wraps:** [br_compare](c_api/functions.md#br_compare)
  51 +
  52 +### -pairwiseCompare {: #pairwisecompare }
  53 +
  54 +DOCUMENT ME
  55 +
  56 +* **arguments:**
  57 +
  58 + -pairwiseCompare <target_gallery> <query_gallery> [{output}]
  59 +
  60 +* **wraps:** [br_pairwise_compare](c_api/functions.md#br_pairwise_compare)
  61 +
  62 +### -eval {: #eval }
  63 +
  64 +Evaluate a similarity matrix
  65 +
  66 +* **arguments:**
  67 +
  68 + -eval <simmat> [<mask>] [{csv}] [{matches}]
  69 +
  70 +* **wraps:** [br_eval](c_api/functions.md#br_eval)
  71 +
  72 +### -inplaceEval {: #inplaceeval }
  73 +
  74 +DOCUMENT ME
  75 +
  76 +* **arguments:**
  77 +
  78 + -inplaceEval <simmat> <target> <query> [{output}]
  79 +
  80 +* **wraps:** [br_inplace_eval](c_api/functions.md#br_inplace_eval)
  81 +
  82 +### -plot {: #inplaceeval}
  83 +
  84 +Plot the results of an evaluation
  85 +
  86 +* **arguments:**
  87 +
  88 + -plot <file> ... <file> {destination}
  89 +
  90 +* **wraps:** [br_plot](c_api/functions.md#br_plot)
  91 +
  92 +
  93 +## Other Commands
  94 +
  95 +### -fuse {: #fuse }
  96 +
  97 +Perform score level fusion on similarity matrices.
  98 +
  99 +* **arguments:**
  100 +
  101 + -fuse <simmat> ... <simmat> (None|MinMax|ZScore|WScore) (Min|Max|Sum[W1:W2:...:Wn]|Replace|Difference|None) {simmat}
  102 +
  103 +* **wraps:** [br_fuse](c_api/functions.md#br_fuse)
  104 +
  105 +### -cluster {: #cluster }
  106 +
  107 +Clusters one or more similarity matrices into a list of subjects
  108 +
  109 +* **arguments:**
  110 +
  111 + -cluster <simmat> ... <simmat> <aggressiveness> {csv}
  112 +
  113 +* **wraps:** [br_cluster](c_api/functions.md#br_cluster)
  114 +
  115 +### -makeMask {: #makemask }
  116 +
  117 +Constructs a mask from target and query inputs
  118 +
  119 +* **arguments:**
  120 +
  121 + -makeMask <target_gallery> <query_gallery> {mask}
  122 +
  123 +* **wraps:** [br_make_mask](c_api/functions.md#br_make_mask)
  124 +
  125 +### -makePairwiseMask {: #makepairwisemask }
  126 +
  127 +Constructs a mask from target and query inputs considering the target and input sets to be definite pairwise comparisons.
  128 +
  129 +* **arguments:**
  130 +
  131 + -makePairwiseMask <target_gallery> <query_gallery> {mask}
  132 +
  133 +* **wraps:** [br_make_pairwise_mask](c_api/functions.md#br_make_pairwise_mask)
  134 +
  135 +### -combineMasks {: #combinemask }
  136 +
  137 +Combines several equal-sized mask matrices. A comparison may not be simultaneously indentified as both a genuine and an imposter by different input masks.
  138 +
  139 +* **arguments:**
  140 +
  141 + -combineMasks <mask> ... <mask> {mask} (And|Or)
  142 +
  143 +* **wraps:** [br_combine_masks](c_api/functions.md#br_combine_masks)
  144 +
  145 +### -cat {: #cat }
  146 +
  147 +Concatenates a list of galleries into 1 gallery
  148 +
  149 +* **arguments:**
  150 +
  151 + -cat <gallery> ... <gallery> {gallery}
  152 +
  153 +* **wraps:** [br_cat](c_api/functions.md#br_cat)
  154 +
  155 +### -convert {: #convert }
  156 +
  157 +Convert a file to a different type. Files can only be converted to types within the same group. For example formats can only be converted to other formats.
  158 +
  159 +* **arguments:**
  160 +
  161 + -convert (Format|Gallery|Output) <input_file> {output_file}
  162 +
  163 +* **wraps:** [br_convert](c_api/functions.md#br_convert)
  164 +
  165 +### -evalClassification {: #evalclassification }
  166 +
  167 +Evaluates and prints classification accuracy to terminal
  168 +
  169 +* **arguments:**
  170 +
  171 + -evalClassification <predicted_gallery> <truth_gallery> <predicted property name> <ground truth property name>
  172 +
  173 +* **wraps:** [br_eval_classification](c_api/functions.md#br_eval_classification)
  174 +
  175 +### -evalClustering {: #evalclustering }
  176 +
  177 +Evaluates and prints clustering accuracy to the terminal
  178 +
  179 +* **arguments:**
  180 +
  181 + -evalClustering <clusters> <gallery>
  182 +
  183 +* **wraps:** [br_eval_clustering](c_api/functions.md#br_eval_clustering)
  184 +
  185 +### -evalDetection {: #evaldetection }
  186 +
  187 +Evaluates and prints detection accuracy to terminal
  188 +
  189 +* **arguments:**
  190 +
  191 + -evalDetection <predicted_gallery> <truth_gallery> [{csv}] [{normalize}] [{minSize}] [{maxSize}]
  192 +
  193 +* **wraps:** [br_eval_detection](c_api/functions.md#br_eval_detection)
  194 +
  195 +### -evalLandmarking {: #evallandmarking }
  196 +
  197 +Evaluates and prints landmarking accuracy to terminal
  198 +
  199 +* **arguments:**
  200 +
  201 + -evalLandmarking <predicted_gallery> <truth_gallery> [{csv} [<normalization_index_a> <normalization_index_b>] [sample_index] [total_examples]]
  202 +
  203 +* **wraps:** [br_eval_landmarking](c_api/functions.md#br_eval_landmarking)
  204 +
  205 +
  206 +### -evalRegression {: #evalregression }
  207 +
  208 +Evaluates regression accuracy to disk
  209 +
  210 +* **arguments:**
  211 +
  212 + -evalRegression <predicted_gallery> <truth_gallery> <predicted property name> <ground truth property name>
  213 +
  214 +* **wraps:** [br_eval_regression](c_api/functions.md#br_eval_regression)
  215 +
  216 +### -assertEval {: #asserteval }
  217 +
  218 +Evaluates the similarity matrix using the mask matrix. Function aborts if TAR @ FAR = 0.001 does not meet an expected performance value.
  219 +
  220 +* **arguments:**
  221 +
  222 + -assertEval <simmat> <mask> <accuracy>
  223 +
  224 +* **wraps:** [br_assert_eval](c_api/functions.md#br_assert_eval)
  225 +
  226 +### -plotDetection {: #plotdetection }
  227 +
  228 +Renders detection performance figures for a set of .csv files created by [-evalDetection](#evaldetection).
  229 +
  230 +* **arguments:**
  231 +
  232 + -plotDetection <file> ... <file> {destination}
  233 +
  234 +* **wraps:** [br_plot_detection](c_api/functions.md#br_plot_detection)
  235 +
  236 +### -plotLandmarking {: #plotlandmarking }
  237 +
  238 +Renders landmarking performance figures for a set of .csv files created by [-evalLandmarking](#evallandmarking)
  239 +
  240 +* **arguments:**
  241 +
  242 + -plotLandmarking <file> ... <file> {destination}
  243 +
  244 +* **wraps:** [br_plot_landmarking](c_api/functions.md#br_plot_landmarking)
  245 +
  246 +### -plotMetadata {: #plotmetadata }
  247 +
  248 +Renders metadata figures for a set of .csv files with specified columns
  249 +
  250 +* **arguments:**
  251 +
  252 + -plotMetadata <file> ... <file> <columns>
  253 +
  254 +* **wraps:** [br_plot_metadata](c_api/functions.md#br_plot_metadata)
  255 +
  256 +### -project {: #project }
  257 +
  258 +A naive alternative to [-enroll](#enroll)
  259 +
  260 +* **arguments:**
  261 +
  262 + -project <input_gallery> {output_gallery}
  263 +
  264 +* **wraps:** [br_project](c_api/functions.md#br_project)
  265 +
  266 +### -getHeader {: #getheader }
  267 +
  268 +Retrieve the target and query inputs in the [BEE matrix](../technical.md#the-evaluation-harness) header
  269 +
  270 +* **arguments:**
  271 +
  272 + -getHeader <matrix>
  273 +
  274 +* **wraps:** [br_get_header](c_api/functions.md#br_get_header)
  275 +
  276 +### -setHeader {: #setheader }
  277 +
  278 +Update the target and query inputs in the [BEE matrix](../technical.md#the-evaluation-harness) header
  279 +
  280 +* **arguments:**
  281 +
  282 + -setHeader {<matrix>} <target_gallery> <query_gallery>
  283 +
  284 +* **wraps:** [br_set_header](c_api/functions.md#br_set_header)
  285 +
  286 +### -&lt;key&gt; &lt;value&gt; {: #setproperty }
  287 +
  288 +Appends a provided value to the [global metadata](cpp_api/context/context.md) using a provided key
  289 +
  290 +* **arguments:**
  291 +
  292 + -<key> <value>
  293 +
  294 +* **wraps:** [br_set_property](c_api/functions.md#br_set_property)
  295 +
  296 +
  297 +## Miscellaneous
  298 +
  299 +### -help {: #help }
  300 +
  301 +Print command line API documentation to the terminal
  302 +
  303 +* **arguments:**
  304 +
  305 + -help
  306 +
  307 +* **wraps:** N/A
  308 +
  309 +### -gui {: #gui }
  310 +
  311 +If this flag is set OpenBR will enable GUI windows to be launched. It must be the first flag set.
  312 +
  313 +* **arguments:**
  314 +
  315 + br -gui
  316 +
  317 +* **wraps:** N/A
  318 +
  319 +### -objects {: #objects }
  320 +
  321 +Returns names and parameters for the requested objects. Each object is newline seperated. Arguments are seperated from the object name with a tab. This function uses [QRegExp][QRegExp] syntax
  322 +
  323 +* **arguments:**
  324 +
  325 + -objects [abstraction [implementation]]
  326 +
  327 +* **wraps:** [br_objects](c_api/functions.md#br_objects)
  328 +
  329 +### -about {: #about }
  330 +
  331 +Get a string with the name, version, and copyright of the project. This string is suitable for printing or terminal
  332 +
  333 +* **arguments:**
  334 +
  335 + -about
  336 +
  337 +* **wraps:** [br_about](c_api/functions.md#br_about)
  338 +
  339 +### -version {: #version }
  340 +
  341 +Get the current OpenBR version
  342 +
  343 +* **arguments:**
  344 +
  345 + -version
  346 +
  347 +* **wraps:** [br_version](c_api/functions.md#br_version)
  348 +
  349 +### -slave {: #slave }
  350 +
  351 +For internal use via [ProcessWrapperTransform](../plugins/core.md#processwrappertransform)
  352 +
  353 +* **arguments:**
  354 +
  355 + -slave <baseKey>
  356 +
  357 +* **wraps:** [br_slave_process](c_api/functions.md#br_slave_process)
  358 +
  359 +### -daemon {: #daemon }
  360 +
  361 +DOCUMENT ME
  362 +
  363 +* **arguments:**
  364 +
  365 + -daemon <daemon_pipe>
  366 +
  367 +* **wraps:** N/A
  368 +
  369 +### -exit
  370 +
  371 +Exit the application
  372 +
  373 +* **arguments:**
  374 +
  375 + -exit
  376 +
  377 +* **wraps:** N/A
0 378 \ No newline at end of file
... ...
docs/docs/api_docs/cpp_api.md
1 1 # C++ Plugin API
2 2  
3   -The C++ Plugin API is a pluggable API designed to allow the succinct expression of biometrics algorithms as a series of independent plugins. The API exposes a number of data structures and plugin abstractions to use as simple building blocks for complex algorithms.
  3 +The C++ Plugin API is a pluggable API designed to allow the succinct expression of biometrics algorithms as a series of independent plugins. The API exposes a number of data structures and plugin abstractions to use as simple building blocks for complex algorithms.
4 4  
5 5 ## Data Structures
6 6  
7   -The API defines two data structures:
  7 +The API defines two data structures:
8 8  
9 9 * [Files](cpp_api/file/file.md)
10 10 * [Templates](cpp_api/template/template.md)
11 11  
12   -[Files](cpp_api/file/file.md) are used for storing textual data and [Templates](cpp_api/template/template.md) act as containers that hold images, stored as OpenCV [Mats][Mat], and [Files](cpp_api/file/file.md).
  12 +[Files](cpp_api/file/file.md) are used for storing textual data and [Templates](cpp_api/template/template.md) act as containers that hold images, stored as OpenCV [Mats][Mat], and [Files](cpp_api/file/file.md).
13 13  
14 14 ## Plugin Abstractions
15 15  
... ... @@ -25,20 +25,19 @@ Plugin | Function
25 25 [Output](cpp_api/output/output.md) | Used for I/O. Outputs handle the results of Distance comparisons.
26 26 [Representation](cpp_api/representation/representation.md) | Converts images into feature vectors. Slightly different then Transforms in implementation and available API calls.
27 27 [Classifier](cpp_api/classifier/classifier.md) | Classifies feature vectors as members of specific classes
28   -
  28 +
29 29 Additionally, there are several child-abstractions for specific use cases. They are:
30   -
  30 +
31 31 Plugin | Parent | Function
32 32 --- | --- | ---
33 33 [UntrainableTransform](cpp_api/untrainabletransform/untrainabletransform.md) | [Transform](cpp_api/transform/transform.md) | A [Transform](cpp_api/transform/transform.md) that cannot be trained
34 34 [MetaTransform](cpp_api/metatransform/metatransform.md) | [Transform](cpp_api/transform/transform.md) | A [Transform](cpp_api/transform/transform.md) that is *not* [independent](cpp_api/transform/members.md#independent)
35 35 [UntrainableMetaTransform](cpp_api/untrainablemetatransform/untrainablemetatransform.md) | [UntrainableTransform](cpp_api/untrainabletransform/untrainabletransform.md) | A [Transform](cpp_api/transform/transform.md) that is *not* [independent](cpp_api/transform/members.md#independent) and cannot be trained
36   - [MetadataTransform](cpp_api/metadatatransform/metadatatransform.md) | [Transform](cpp_api/transform/transform.md) | A [Transform](cpp_api/transform/transform.md) that operates only on [Transform](cpp_api/transform/transform.md) [metadata](cpp_api/transform/members.md#file)
  36 + [MetadataTransform](cpp_api/metadatatransform/metadatatransform.md) | [Transform](cpp_api/transform/transform.md) | A [Transform](cpp_api/transform/transform.md) that operates only on [Template](cpp_api/template/template.md) [metadata](cpp_api/template/members.md#file)
37 37 [UntrainableMetadataTransform](cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md) | [MetadataTransform](cpp_api/metadatatransform/metadatatransform.md) | A [MetadataTransform](cpp_api/metadatatransform/metadatatransform.md) that cannot be trained
38 38 [TimeVaryingTransform](cpp_api/timevaryingtransform/timevaryingtransform.md) | [Transform](cpp_api/transform/transform.md) | A [Transform](cpp_api/transform/transform.md) that changes at runtime as a result of the input
39 39 [UntrainableDistance](cpp_api/untrainabledistance/untrainabledistance.md) | [Distance](cpp_api/distance/distance.md) | A [Distance](cpp_api/distance/distance.md) that cannot be trained
40 40 [FileGallery](cpp_api/filegallery/filegallery.md) | [Gallery](cpp_api/gallery/gallery.md) | DOCUMENT ME
41 41 [MatrixOutput](cpp_api/matrixoutput/matrixoutput.md) | [Output](cpp_api/output/output.md) | A [Output](cpp_api/output/output.md) that outputs data as a matrix
42   -
  42 +
43 43 As was stated before, all plugins in OpenBR are constructed using strings stored as [Files](cpp_api/file/file.md). The construction is done at runtime by a [Factory](cpp_api/factory/factory.md) class. The [Factory](cpp_api/factory/factory.md) expects strings of the form "PluginName(property1=value1,propert2=value2...propertyN=valueN)". It then looks up the "PluginName" in a static registry and builds the plugin if found. The registry is populated using a special macro [BR_REGISTER](cpp_api/factory/macros.md#br_register); each plugin needs to register itself and its base abstraction in the factory to enable construction. The purpose of this is to allow algorithms to be described completely by strings. For more information on algorithms in OpenBR please see the [tutorial](../tutorials.md#algorithms-in-openbr)
44   -
45 44 \ No newline at end of file
... ...
docs/docs/api_docs/cpp_api/compositetransform/compositetransform.md 0 โ†’ 100644
  1 +<!-- CompositeTransform -->
  2 +
  3 +Inherits [TimeVaryingTransform](../timevaryingtransform/timevaryingtransform.md)
  4 +
  5 +Base class for [Transforms](../transform/transform.md) that aggregate subtransforms.
  6 +
  7 +See:
  8 +
  9 +* [Properties](properties.md)
  10 +* [Members](members.md)
  11 +* [Constructors](constructors.md)
  12 +* [Static Functions](statics.md)
  13 +* [Functions](functions.md)
  14 +
  15 +A CompositeTransform is a wrapper around a list of child transforms. It is used internally for plugins like pipes and forks. It offers
0 16 \ No newline at end of file
... ...
docs/docs/api_docs/cpp_api/filegallery/constructors.md 0 โ†’ 100644
  1 +Constructor / Destructor | Description
  2 +--- | ---
  3 +virtual ~FileGallery() | Default destructor. Closes [f](members.md#f)
0 4 \ No newline at end of file
... ...
docs/docs/api_docs/cpp_api/filegallery/filegallery.md
1 1 <!-- FILE GALLERY -->
2 2  
3 3 Inherits [Gallery](../gallery/gallery.md)
  4 +
  5 +A [Gallery](../gallery/gallery.md) that handles data stored on disk (as opposed to data already in memory).
  6 +
  7 +See:
  8 +
  9 +* [Members](members.md)
  10 +* [Constructors](constructors.md)
  11 +* [Static Functions](statics.md)
  12 +* [Functions](functions.md)
  13 +
  14 +[FileGalleries](filegallery.md) are the base abstraction for all [Galleries](../gallery/gallery.md) that handle I/O with the hard drive. They automatically track the size and current position of a file and also provide convienience opererators for opening them for reading and writing.
4 15 \ No newline at end of file
... ...
docs/docs/api_docs/cpp_api/filegallery/functions.md 0 โ†’ 100644
  1 +## void init() {: #init }
  2 +
  3 +Initialize the [FileGallery](filegallery.md). This sets [f](members.md#f) using the file name from [file](../object/members.md#file). It also calls [Gallery](../gallery/gallery.md)::[init](../gallery/functions.md#init).
  4 +
  5 +* **function definition:**
  6 +
  7 + void init()
  8 +
  9 +* **parameters:** NONE
  10 +* **output:** (void)
  11 +
  12 +## qint64 totalSize() {: #totalsize }
  13 +
  14 +Get the total size of the file. This is useful for estimating progress.
  15 +
  16 +* **function definition:**
  17 +
  18 + qint64 totalSize()
  19 +
  20 +* **parameters:** NONE
  21 +* **output:** (qint64) Returns the total size of the file in bytes
  22 +
  23 +## qint64 position() {: #pos }
  24 +
  25 +Get the current index in the file. This is useful for reading and writing blocks of data
  26 +
  27 +* **function definition:**
  28 +
  29 + qint64 position()
  30 +
  31 +* **parameters:** NONE
  32 +* **output:** (qint64) Returns the current position in the file
  33 +
  34 +## bool readOpen() {: #readopen }
  35 +
  36 +Open [f](members.md#f) in read-only mode
  37 +
  38 +* **function definition:**
  39 +
  40 + bool readOpen()
  41 +
  42 +* **parameters:** NONE
  43 +* **output:** (bool) Returns true if the file was opened successfully, false otherwise
  44 +
  45 +## void writeOnly() {: #writeonly }
  46 +
  47 +Open [f](members.md#f) in write-only mode
  48 +
  49 +* **function definition:**
  50 +
  51 + void writeOpen()
  52 +
  53 +* **parameters:** NONE
  54 +* **output:** (void)
0 55 \ No newline at end of file
... ...
docs/docs/api_docs/cpp_api/filegallery/members.md 0 โ†’ 100644
  1 +Member | Type | Description
  2 +--- | --- | ---
  3 +<a class="table-anchor" id="f"></a>f | [QFile][QFile] | The file on disk. It has the same name as [file](../object/members.md#file)
... ...
docs/docs/api_docs/cpp_api/filegallery/statics.md 0 โ†’ 100644
  1 +NONE
0 2 \ No newline at end of file
... ...
docs/docs/api_docs/cpp_api/gallery/gallery.md
... ... @@ -6,6 +6,7 @@ Plugin base class for storing a list of enrolled templates.
6 6  
7 7 See:
8 8  
  9 +* [Properties](properties.md)
9 10 * [Members](members.md)
10 11 * [Constructors](constructors.md)
11 12 * [Static Functions](statics.md)
... ...
docs/docs/api_docs/cpp_api/metadatatransform/metadatatransform.md
... ... @@ -11,4 +11,4 @@ See:
11 11 * [Static Functions](statics.md)
12 12 * [Functions](functions.md)
13 13  
14   -[MetadataTransforms](metadatatransform.md) are [Transforms](../transform/transform.md) that operate soley on textual [metadata](../transform/members.md#file). They are *not* [independent](../transform/members.md#independent) because [Templates](../template/template.md) can only every have one collection of [metadata](../template/members.md#file).
  14 +[MetadataTransforms](metadatatransform.md) are [Transforms](../transform/transform.md) that operate soley on textual [metadata](../template/members.md#file). They are *not* [independent](../transform/members.md#independent) because [Templates](../template/template.md) can only every have one collection of [metadata](../template/members.md#file).
... ...
docs/docs/api_docs/cpp_api/transform/functions.md
... ... @@ -380,7 +380,7 @@ Convenience function to call [smartCopy](#smartcopy-1) without arguments
380 380  
381 381 ## [Transform](transform.md) \*simplify(bool &newTransform) {: #simplify }
382 382  
383   -This is a virtual function. Get a simplified version of the transform for use at project time. The simplified version of the [Transform](transform.md) does not include any [Transforms](transform.md) that are only active at train time. It also removes any [LoadStore](../../plugins/core.md#loadstoretransform) transforms and keeps only their children. Transforms that only are active at train time (see [DownsampleTransform](../../plugins/core.md#downsampletransform) as an example) should overload this function and return their children if they have any or NULL if they do not.
  383 +This is a virtual function. Get a simplified version of the transform for use at project time. The simplified version of the [Transform](transform.md) does not include any [Transforms](transform.md) that are only active at train time. It also removes any [LoadStore](../../plugins/core.md#loadstoretransform) transforms and keeps only their children. Transforms that only are active at train time (see [DownsampleTrainingTransform](../../plugins/core.md#downsampletrainingtransform) as an example) should overload this function and return their children if they have any or NULL if they do not.
384 384  
385 385 * **function definition:**
386 386  
... ...
docs/docs/api_docs/cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md
... ... @@ -11,4 +11,4 @@ See:
11 11 * [Static Functions](statics.md)
12 12 * [Functions](functions.md)
13 13  
14   -[UntrainableMetadataTransforms](untrainablemetadatatransform.md) are [Transforms](../transform/transform.md) that operate soley on textual [metadata](../transform/members.md#file). They are *not* [independent](../transform/members.md#independent), because [Templates](../template/template.md) can only every have one collection of [metadata](../template/members.md#file), and they are *not* [trainable](../transform/members.md#trainable).
  14 +[UntrainableMetadataTransforms](untrainablemetadatatransform.md) are [Transforms](../transform/transform.md) that operate soley on textual [metadata](../template/members.md#file). They are *not* [independent](../transform/members.md#independent), because [Templates](../template/template.md) can only every have one collection of [metadata](../template/members.md#file), and they are *not* [trainable](../transform/members.md#trainable).
... ...
docs/docs/api_docs/cpp_api/untrainabletransform/untrainabletransform.md
... ... @@ -11,4 +11,4 @@ See:
11 11 * [Static Functions](statics.md)
12 12 * [Functions](functions.md)
13 13  
14   -This is a base class for [Transforms](../transform/transform.md) that are not trainable. It overloads [train](../transform/functions.md#train-1), [load](../transform/functions.md#load), and [store](../transform/functions.md#store) so that they cannot be used in derived classes. Load and store are overloaded because a [Transform](../transform/transform.md) that doesn't train should also have nothing to save.
15 14 \ No newline at end of file
  15 +This is a base class for [Transforms](../transform/transform.md) that are not trainable. It overloads [train](../transform/functions.md#train-1), [load](../object/functions.md#load), and [store](../object/functions.md#store) so that they cannot be used in derived classes. Load and store are overloaded because a [Transform](../transform/transform.md) that doesn't train should also have nothing to save.
... ...
docs/docs/api_docs/cpp_api/wrappertransform/constructors.md 0 โ†’ 100644
docs/docs/api_docs/cpp_api/wrappertransform/functions.md 0 โ†’ 100644
docs/docs/api_docs/cpp_api/wrappertransform/members.md 0 โ†’ 100644
docs/docs/api_docs/cpp_api/wrappertransform/properties.md 0 โ†’ 100644
docs/docs/api_docs/cpp_api/wrappertransform/statics.md 0 โ†’ 100644
docs/docs/api_docs/cpp_api/wrappertransform/wrappertransform.md 0 โ†’ 100644
  1 +<!-- WrapperTransform -->
  2 +
  3 +Inherits [Transform](../transform/transform.md)
  4 +
  5 +Base class for [Transforms](../transform/transform.md) that act as decorators of another [Transform](../transform/transform.md)
  6 +
  7 +See:
  8 +
  9 +* [Properties](properties.md)
  10 +* [Members](members.md)
  11 +* [Constructors](constructors.md)
  12 +* [Static Functions](statics.md)
  13 +* [Functions](functions.md)
0 14 \ No newline at end of file
... ...
docs/docs/api_docs/plugins/classification.md
1 1 # AdaBoostTransform
2 2  
3 3 Wraps OpenCV's Ada Boost framework
  4 +
4 5  
5 6 * **file:** classification/adaboost.cpp
6 7 * **inherits:** [Transform](../cpp_api/transform/transform.md)
  8 +* **author(s):** [Scott Klum][sklum]
7 9 * **see:** [http://docs.opencv.org/modules/ml/doc/boosting.html](http://docs.opencv.org/modules/ml/doc/boosting.html)
8   -* **author:** Scott Klum
9 10 * **properties:**
10 11  
11   -Property | Type | Description
12   ---- | --- | ---
13   -type | enum | Type of Adaboost to perform. Options are:<ul><li>Discrete</li><li>Real</li><li>Logit</li><li>Gentle</li></ul>Default is Real.
14   -splitCriteria | enum | Splitting criteria used to choose optimal splits during a weak tree construction. Options are:<ul><li>Default</li><li>Gini</li><li>Misclass</li><li>Sqerr</li></ul>Default is Default.
15   -weakCount | int | Maximum number of weak classifiers per stage. Default is 100.
16   -trimRate | float | A threshold between 0 and 1 used to save computational time. Samples with summary weight
17   -folds | int | OpenCV parameter variable. Default value is 0.
18   -maxDepth | int | Maximum height of each weak classifier tree. Default is 1 (stumps).
19   -returnConfidence | bool | Return the confidence value of the classification or the class value of the classification. Default is true (return confidence value).
20   -overwriteMat | bool | If true, the output template will be a 1x1 matrix with value equal to the confidence or classification (depending on returnConfidence). If false the output template will be the same as the input template. Default is true.
21   -inputVariable | QString | Metadata variable storing the label for each template. Default is "Label".
22   -outputVariable | QString | Metadata variable to store the confidence or classification of each template (depending on returnConfidence). If overwriteMat is true nothing will be written here. Default is "".
  12 + Property | Type | Description
  13 + --- | --- | ---
  14 + enum | type | Type of Adaboost to perform. Options are:<ul><li>Discrete</li><li>Real</li><li>Logit</li><li>Gentle</li></ul>Default is Real.
  15 + enum | splitCriteria | Splitting criteria used to choose optimal splits during a weak tree construction. Options are:<ul><li>Default</li><li>Gini</li><li>Misclass</li><li>Sqerr</li></ul>Default is Default.
  16 + int | weakCount | Maximum number of weak classifiers per stage. Default is 100.
  17 + float | trimRate | A threshold between 0 and 1 used to save computational time. Samples with summary weight
  18 + int | folds | OpenCV parameter variable. Default value is 0.
  19 + int | maxDepth | Maximum height of each weak classifier tree. Default is 1 (stumps).
  20 + bool | returnConfidence | Return the confidence value of the classification or the class value of the classification. Default is true (return confidence value).
  21 + bool | overwriteMat | If true, the output template will be a 1x1 matrix with value equal to the confidence or classification (depending on returnConfidence). If false the output template will be the same as the input template. Default is true.
  22 + QString | inputVariable | Metadata variable storing the label for each template. Default is "Label".
  23 + QString | outputVariable | Metadata variable to store the confidence or classification of each template (depending on returnConfidence). If overwriteMat is true nothing will be written here. Default is "".
23 24  
24 25 ---
25 26  
26 27 # DFFSTransform
27 28  
28   -Computes Distance From Feature Space (DFFS)
  29 +Computes [Distance](../cpp_api/distance/distance.md) From Feature Space (DFFS)
  30 +
29 31  
30 32 * **file:** classification/lda.cpp
31 33 * **inherits:** [Transform](../cpp_api/transform/transform.md)
32   -* **author:** Josh Klontz
  34 +* **author(s):** [Josh Klontz][jklontz]
  35 +* **read:**
  36 +
  37 + 1. *Moghaddam, Baback, and Alex Pentland.*
  38 + **"Probabilistic visual learning for object representation."**
  39 + Pattern Analysis and Machine Intelligence, IEEE Transactions on 19.7 (1997): 696-710.
  40 +
33 41 * **properties:**
34 42  
35   -Property | Type | Description
36   ---- | --- | ---
37   -keep | float | Sets PCA keep property. Default is 0.95.
  43 + Property | Type | Description
  44 + --- | --- | ---
  45 + keep | float | Sets PCA keep property. Default is 0.95.
38 46  
39 47 ---
40 48  
41 49 # EBIFTransform
42 50  
43 51 Face Recognition Using Early Biologically Inspired Features
  52 +
44 53  
45 54 * **file:** classification/ebif.cpp
46 55 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
47   -* **see:** [Min Li (IBM China Research Lab, China), Nalini Ratha (IBM Watson Research Center, USA), Weihong Qian (IBM China Research Lab, China), Shenghua Bao (IBM China Research Lab, China), Zhong Su (IBM China Research Lab, China)](#min li (ibm china research lab, china), nalini ratha (ibm watson research center, usa), weihong qian (ibm china research lab, china), shenghua bao (ibm china research lab, china), zhong su (ibm china research lab, china))
48   -* **author:** Josh Klontz
  56 +* **author(s):** [Josh Klontz][jklontz]
  57 +* **read:**
  58 +
  59 + 1. *Li, Min, et al.*
  60 + **"Face recognition using early biologically inspired features."**
  61 + Biometrics: Theory, Applications and Systems (BTAS), 2013 IEEE Sixth International Conference on. IEEE, 2013.
  62 +
49 63 * **properties:**
50 64  
51   -Property | Type | Description
52   ---- | --- | ---
53   -N | int | The number of scales. Default is 6.
54   -M | int | The number of orientations between 0 and pi. Default is 9.
  65 + Property | Type | Description
  66 + --- | --- | ---
  67 + N | int | The number of scales. Default is 6.
  68 + M | int | The number of orientations between 0 and pi. Default is 9.
55 69  
56 70 ---
57 71  
58 72 # ForestInductionTransform
59 73  
60 74 Wraps OpenCV's random trees framework to induce features
  75 +
61 76  
62 77 * **file:** classification/forest.cpp
63 78 * **inherits:** [ForestTransform](#foresttransform)
  79 +* **author(s):** [Scott Klum][sklum]
64 80 * **see:** [https://lirias.kuleuven.be/bitstream/123456789/316661/1/icdm11-camready.pdf](https://lirias.kuleuven.be/bitstream/123456789/316661/1/icdm11-camready.pdf)
65   -* **author:** Scott Klum
66 81 * **properties:**
67 82  
68   -Property | Type | Description
69   ---- | --- | ---
70   -useRegressionValue | bool | SCOTT FILL ME IN.
  83 + Property | Type | Description
  84 + --- | --- | ---
  85 + useRegressionValue | bool | SCOTT FILL ME IN.
71 86  
72 87 ---
73 88  
74 89 # ForestTransform
75 90  
76 91 Wraps OpenCV's random trees framework
  92 +
77 93  
78 94 * **file:** classification/forest.cpp
79 95 * **inherits:** [Transform](../cpp_api/transform/transform.md)
  96 +* **author(s):** [Scott Klum][sklum]
80 97 * **see:** [http://docs.opencv.org/modules/ml/doc/random_trees.html](http://docs.opencv.org/modules/ml/doc/random_trees.html)
81   -* **author:** Scott Klum
82 98 * **properties:**
83 99  
84   -Property | Type | Description
85   ---- | --- | ---
86   -classification | bool | If true the labels are expected to be categorical. Otherwise they are expected to be numerical. Default is true.
87   -splitPercentage | float | Used to calculate the minimum number of samples per split in a random tree. The minimum number of samples is calculated as the number of samples x splitPercentage. Default is 0.01.
88   -maxDepth | int | The maximum depth of each decision tree. Default is std::numeric_limits<int>::max() and typically should be set by the user.
89   -maxTrees | int | The maximum number of trees in the forest. Default is 10.
90   -forestAccuracy | float | A sufficient accuracy for the forest for training to terminate. Used if termCrit is EPS or Both. Default is 0.1.
91   -returnConfidence | bool | If both classification and returnConfidence are use a fuzzy class label as the output of the forest. Default is true.
92   -overwriteMat | bool | If true set dst to be a 1x1 Mat with the forest response as its value. Otherwise append the forest response to metadata using outputVariable as a key. Default is true.
93   -inputVariable | QString | The metadata key for each templates label. Default is "Label".
94   -outputVariable | QString | The metadata key for the forest response if overwriteMat is false. Default is "".
95   -weight | bool | If true and classification is true the random forest will use prior accuracies. Default is false.
96   -termCrit | enum | Termination criteria for training the random forest. Options are Iter, EPS and Both. Iter terminates when the maximum number of trees is reached. EPS terminates when forestAccuracy is met. Both terminates when either is true. Default is Iter.
  100 + Property | Type | Description
  101 + --- | --- | ---
  102 + classification | bool | If true the labels are expected to be categorical. Otherwise they are expected to be numerical. Default is true.
  103 + splitPercentage | float | Used to calculate the minimum number of samples per split in a random tree. The minimum number of samples is calculated as the number of samples x splitPercentage. Default is 0.01.
  104 + maxDepth | int | The maximum depth of each decision tree. Default is std::numeric_limits<int>::max() and typically should be set by the user.
  105 + maxTrees | int | The maximum number of trees in the forest. Default is 10.
  106 + forestAccuracy | float | A sufficient accuracy for the forest for training to terminate. Used if termCrit is EPS or Both. Default is 0.1.
  107 + returnConfidence | bool | If both classification and returnConfidence are use a fuzzy class label as the output of the forest. Default is true.
  108 + overwriteMat | bool | If true set dst to be a 1x1 Mat with the forest response as its value. Otherwise append the forest response to metadata using outputVariable as a key. Default is true.
  109 + inputVariable | QString | The metadata key for each templates label. Default is "Label".
  110 + outputVariable | QString | The metadata key for the forest response if overwriteMat is false. Default is "".
  111 + weight | bool | If true and classification is true the random forest will use prior accuracies. Default is false.
  112 + termCrit | enum | Termination criteria for training the random forest. Options are Iter, EPS and Both. Iter terminates when the maximum number of trees is reached. EPS terminates when forestAccuracy is met. Both terminates when either is true. Default is Iter.
97 113  
98 114 ---
99 115  
100 116 # IPC2013FaceRecognitionTransform
101 117  
102 118 Intel Perceptual Computing SDK 2013 Face Recognition
  119 +
103 120  
104 121 * **file:** classification/ipc2013.cpp
105 122 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
106   -* **author:** Josh Klontz
  123 +* **author(s):** [Josh Klontz][jklontz]
107 124 * **properties:** None
108 125  
109 126  
... ... @@ -112,52 +129,68 @@ Intel Perceptual Computing SDK 2013 Face Recognition
112 129 # LDATransform
113 130  
114 131 Projects input into learned Linear Discriminant Analysis subspace.
  132 +
115 133  
116 134 * **file:** classification/lda.cpp
117 135 * **inherits:** [Transform](../cpp_api/transform/transform.md)
118   -* **authors:** Brendan Klare, Josh Klontz
  136 +* **author(s):** [Brendan Klare][bklare], [Josh Klontz][jklontz]
119 137 * **properties:**
120 138  
121   -Property | Type | Description
122   ---- | --- | ---
123   -pcaKeep | float | BRENDAN OR JOSH FILL ME IN. Default is 0.98.
124   -pcaWhiten | bool | BRENDAN OR JOSH FILL ME IN. Default is false.
125   -directLDA | int | BRENDAN OR JOSH FILL ME IN. Default is 0.
126   -directDrop | float | BRENDAN OR JOSH FILL ME IN. Default is 0.1.
127   -inputVariable | QString | BRENDAN OR JOSH FILL ME IN. Default is "Label".
128   -isBinary | bool | BRENDAN OR JOSH FILL ME IN. Default is false.
129   -normalize | bool | BRENDAN OR JOSH FILL ME IN. Default is true.
  139 + Property | Type | Description
  140 + --- | --- | ---
  141 + pcaKeep | float | BRENDAN OR JOSH FILL ME IN. Default is 0.98.
  142 + pcaWhiten | bool | BRENDAN OR JOSH FILL ME IN. Default is false.
  143 + directLDA | int | BRENDAN OR JOSH FILL ME IN. Default is 0.
  144 + directDrop | float | BRENDAN OR JOSH FILL ME IN. Default is 0.1.
  145 + inputVariable | QString | BRENDAN OR JOSH FILL ME IN. Default is "Label".
  146 + isBinary | bool | BRENDAN OR JOSH FILL ME IN. Default is false.
  147 + normalize | bool | BRENDAN OR JOSH FILL ME IN. Default is true.
  148 +
  149 +---
  150 +
  151 +# Linear
  152 +
  153 +DOCUMENT ME SCOTT
  154 +
  155 +
  156 +* **file:** classification/liblinear.cpp
  157 +* **inherits:** [Transform](../cpp_api/transform/transform.md)
  158 +* **author(s):** [Scott Klum][sklum]
  159 +* **properties:** None
  160 +
130 161  
131 162 ---
132 163  
133 164 # MLPTransform
134 165  
135 166 Wraps OpenCV's multi-layer perceptron framework
  167 +
136 168  
137 169 * **file:** classification/mlp.cpp
138 170 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
  171 +* **author(s):** [Scott Klum][sklum]
139 172 * **see:** [http://docs.opencv.org/modules/ml/doc/neural_networks.html](http://docs.opencv.org/modules/ml/doc/neural_networks.html)
140   -* **author:** Scott Klum
141 173 * **properties:**
142 174  
143   -Property | Type | Description
144   ---- | --- | ---
145   -kernel | enum | Type of MLP kernel to use. Options are Identity, Sigmoid, Gaussian. Default is Sigmoid.
146   -alpha | float | Determines activation function for neural network. See OpenCV documentation for more details. Default is 1.
147   -beta | float | Determines activation function for neural network. See OpenCV documentation for more details. Default is 1.
148   -inputVariables | QStringList | Metadata keys for the labels associated with each template. There should be the same number of keys in the list as there are neurons in the final layer. Default is QStringList().
149   -outputVariables | QStringList | Metadata keys to store the output of the neural network. There should be the same number of keys in the list as there are neurons in the final layer. Default is QStringList().
150   -neuronsPerLayer | QList<int> | The number of neurons in each layer of the net. Default is QList<int>() << 1 << 1.
  175 + Property | Type | Description
  176 + --- | --- | ---
  177 + kernel | enum | Type of MLP kernel to use. Options are Identity, Sigmoid, Gaussian. Default is Sigmoid.
  178 + alpha | float | Determines activation function for neural network. See OpenCV documentation for more details. Default is 1.
  179 + beta | float | Determines activation function for neural network. See OpenCV documentation for more details. Default is 1.
  180 + inputVariables | QStringList | Metadata keys for the labels associated with each template. There should be the same number of keys in the list as there are neurons in the final layer. Default is QStringList().
  181 + outputVariables | QStringList | Metadata keys to store the output of the neural network. There should be the same number of keys in the list as there are neurons in the final layer. Default is QStringList().
  182 + neuronsPerLayer | QList<int> | The number of neurons in each layer of the net. Default is QList<int>() << 1 << 1.
151 183  
152 184 ---
153 185  
154 186 # NT4Compare
155 187  
156 188 Compare templates with Neurotech SDK 4
  189 +
157 190  
158 191 * **file:** classification/nt4.cpp
159 192 * **inherits:** [Distance](../cpp_api/distance/distance.md)
160   -* **authors:** Josh Klontz, E. Taborsky
  193 +* **author(s):** [Josh Klontz][jklontz], [E. Taborsky][mmtaborsky]
161 194 * **properties:** None
162 195  
163 196  
... ... @@ -166,10 +199,11 @@ Compare templates with Neurotech SDK 4
166 199 # NT4DetectFace
167 200  
168 201 Neurotech face detection
  202 +
169 203  
170 204 * **file:** classification/nt4.cpp
171 205 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
172   -* **authors:** Josh Klontz, E. Taborsky
  206 +* **author(s):** [Josh Klontz][jklontz], [E. Taborsky][mmtaborsky]
173 207 * **properties:** None
174 208  
175 209  
... ... @@ -178,10 +212,11 @@ Neurotech face detection
178 212 # NT4EnrollFace
179 213  
180 214 Enroll face in Neurotech SDK 4
  215 +
181 216  
182 217 * **file:** classification/nt4.cpp
183 218 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
184   -* **author:** Josh Klontz
  219 +* **author(s):** [Josh Klontz][jklontz]
185 220 * **properties:** None
186 221  
187 222  
... ... @@ -190,10 +225,11 @@ Enroll face in Neurotech SDK 4
190 225 # NT4EnrollIris
191 226  
192 227 Enroll iris in Neurotech SDK 4
  228 +
193 229  
194 230 * **file:** classification/nt4.cpp
195 231 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
196   -* **author:** E. Taborsky
  232 +* **author(s):** [E. Taborsky][mmtaborsky]
197 233 * **properties:** None
198 234  
199 235  
... ... @@ -202,27 +238,29 @@ Enroll iris in Neurotech SDK 4
202 238 # PCATransform
203 239  
204 240 Projects input into learned Principal Component Analysis subspace.
  241 +
205 242  
206 243 * **file:** classification/lda.cpp
207 244 * **inherits:** [Transform](../cpp_api/transform/transform.md)
208   -* **authors:** Brendan Klare, Josh Klontz
  245 +* **author(s):** [Brendan Klare][bklare], [Josh Klontz][jklontz]
209 246 * **properties:**
210 247  
211   -Property | Type | Description
212   ---- | --- | ---
213   -keep | float | Options are:<ul><li>keep < 0 - All eigenvalues are retained</li><li>keep == 0 - No PCA is performed and the eigenvectors form an identity matrix</li><li>0 < keep < 1 - Keep is the fraction of the variance to retain</li><li>keep >= 1 - keep is the number of leading eigenvectors to retain</li></ul>Default is 0.95.
214   -drop | int | BRENDAN OR JOSH FILL ME IN. Default is 0.
215   -whiten | bool | BRENDAN OR JOSH FILL ME IN. Default is false.
  248 + Property | Type | Description
  249 + --- | --- | ---
  250 + keep | float | Options are:<ul><li>keep < 0 - All eigenvalues are retained</li><li>keep == 0 - No PCA is performed and the eigenvectors form an identity matrix</li><li>0 < keep < 1 - Keep is the fraction of the variance to retain</li><li>keep >= 1 - keep is the number of leading eigenvectors to retain</li></ul>Default is 0.95.
  251 + drop | int | BRENDAN OR JOSH FILL ME IN. Default is 0.
  252 + whiten | bool | BRENDAN OR JOSH FILL ME IN. Default is false.
216 253  
217 254 ---
218 255  
219 256 # PP4Compare
220 257  
221 258 Compare faces using PittPatt 4.
  259 +
222 260  
223 261 * **file:** classification/pp4.cpp
224 262 * **inherits:** [Distance](../cpp_api/distance/distance.md)
225   -* **author:** Josh Klontz
  263 +* **author(s):** [Josh Klontz][jklontz]
226 264 * **properties:** None
227 265  
228 266  
... ... @@ -231,25 +269,27 @@ Compare faces using PittPatt 4.
231 269 # PP4EnrollTransform
232 270  
233 271 Enroll faces in PittPatt 4
  272 +
234 273  
235 274 * **file:** classification/pp4.cpp
236 275 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
237   -* **author:** Josh Klontz
  276 +* **author(s):** [Josh Klontz][jklontz]
238 277 * **properties:**
239 278  
240   -Property | Type | Description
241   ---- | --- | ---
242   -detectOnly | bool | If true, return all detected faces. Otherwise, return only faces that are suitable for recognition. Default is false.
  279 + Property | Type | Description
  280 + --- | --- | ---
  281 + detectOnly | bool | If true, return all detected faces. Otherwise, return only faces that are suitable for recognition. Default is false.
243 282  
244 283 ---
245 284  
246 285 # PP5CompareDistance
247 286  
248   -Compare templates with PP5
  287 +Compare templates with PP5. PP5 distance is known to be asymmetric
  288 +
249 289  
250 290 * **file:** classification/pp5.cpp
251 291 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
252   -* **authors:** Josh Klontz, E. Taborsky
  292 +* **author(s):** [Josh Klontz][jklontz], [E. Taborsky][mmtaborsky]
253 293 * **properties:** None
254 294  
255 295  
... ... @@ -258,30 +298,45 @@ Compare templates with PP5
258 298 # PP5EnrollTransform
259 299  
260 300 Enroll faces in PP5
  301 +
261 302  
262 303 * **file:** classification/pp5.cpp
263 304 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
264   -* **authors:** Josh Klontz, E. Taborsky
  305 +* **author(s):** [Josh Klontz][jklontz], [E. Taborsky][mmtaborsky]
265 306 * **properties:**
266 307  
267   -Property | Type | Description
268   ---- | --- | ---
269   -detectOnly | bool | If true, enroll all detected faces. Otherwise, only enroll faces suitable for recognition. Default is false.
270   -requireLandmarks | bool | If true, require the right eye, left eye, and nose base to be detectable by PP5. If this does not happen FTE is set to true for that template. Default is false.
271   -adaptiveMinSize | float | The minimum face size as a percentage of total image width. 0.1 corresponds to a minimum face size of 10% the total image width. Default is 0.01.
272   -minSize | int | The absolute minimum face size to search for. This is not a pixel value. Please see PittPatt documentation for the relationship between minSize and pixel IPD. Default is 4.
273   -landmarkRange | enum | Range of landmarks to search for. Options are Frontal, Extended, Full, and Comprehensive. Default is Comprehensive.
274   -searchPruningAggressiveness | int | The amount of aggressiveness involved in search for faces in images. 0 means all scales and locations are searched. 1 means fewer detectors are used in the early stages but all scales are still searched. 2-4 means that the largest faces are found first and then fewer scales are searched. Default is 0.
  308 + Property | Type | Description
  309 + --- | --- | ---
  310 + detectOnly | bool | If true, enroll all detected faces. Otherwise, only enroll faces suitable for recognition. Default is false.
  311 + requireLandmarks | bool | If true, require the right eye, left eye, and nose base to be detectable by PP5. If this does not happen FTE is set to true for that template. Default is false.
  312 + adaptiveMinSize | float | The minimum face size as a percentage of total image width. 0.1 corresponds to a minimum face size of 10% the total image width. Default is 0.01.
  313 + minSize | int | The absolute minimum face size to search for. This is not a pixel value. Please see PittPatt documentation for the relationship between minSize and pixel IPD. Default is 4.
  314 + landmarkRange | enum | Range of landmarks to search for. Options are Frontal, Extended, Full, and Comprehensive. Default is Comprehensive.
  315 + searchPruningAggressiveness | int | The amount of aggressiveness involved in search for faces in images. 0 means all scales and locations are searched. 1 means fewer detectors are used in the early stages but all scales are still searched. 2-4 means that the largest faces are found first and then fewer scales are searched. Default is 0.
  316 +
  317 +---
  318 +
  319 +# PP5GalleryTransform
  320 +
  321 +DOCUMENT ME
  322 +
  323 +
  324 +* **file:** classification/pp5.cpp
  325 +* **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
  326 +* **author(s):** [Unknown][unknown]
  327 +* **properties:** None
  328 +
275 329  
276 330 ---
277 331  
278 332 # RowWisePCATransform
279 333  
280 334 PCA on each row.
  335 +
281 336  
282 337 * **file:** classification/lda.cpp
283 338 * **inherits:** [PCATransform](#pcatransform)
284   -* **author:** Josh Klontz
  339 +* **author(s):** [Josh Klontz][jklontz]
285 340 * **properties:** None
286 341  
287 342  
... ... @@ -290,63 +345,68 @@ PCA on each row.
290 345 # SVMTransform
291 346  
292 347 Wraps OpenCV's SVM framework.
  348 +
293 349  
294 350 * **file:** classification/svm.cpp
295 351 * **inherits:** [Transform](../cpp_api/transform/transform.md)
296   -* **see:**
  352 +* **author(s):** [Josh Klontz][jklontz]
  353 +* **see:** [http://docs.opencv.org/modules/ml/doc/support_vector_machines.html](http://docs.opencv.org/modules/ml/doc/support_vector_machines.html)
  354 +* **read:**
297 355  
298   - * [http://docs.opencv.org/modules/ml/doc/support_vector_machines.html](http://docs.opencv.org/modules/ml/doc/support_vector_machines.html)
299   - * [C. Burges. "A tutorial on support vector machines for pattern recognition", Knowledge Discovery and Data Mining 2(2), 1998.](C. Burges. "A tutorial on support vector machines for pattern recognition", Knowledge Discovery and Data Mining 2(2), 1998.)
  356 + 1. *C. Burges.*
  357 + **"A tutorial on support vector machines for pattern recognition"**
  358 + Knowledge Discovery and Data Mining 2(2), 1998.
300 359  
301   -* **author:** Josh Klontz
302 360 * **properties:**
303 361  
304   -Property | Type | Description
305   ---- | --- | ---
306   -Kernel | enum | The type of SVM kernel to use. Options are Linear, Poly, RBF, Sigmoid. Default is Linear.
307   -Type | enum | The type of SVM to do. Options are C_SVC, NU_SVC, ONE_CLASS, EPS_SVR, NU_SVR. Default is C_SVC.
308   -C | float | Parameter C of an SVM optimization problem. Needed when Type is C_SVC, EPS_SVR or NU_SVR. Default is -1.
309   -gamma | float | Parameter gamma of a kernel function. Needed when Kernel is Poly, RBF, or Sigmoid. Default is -1.
310   -inputVariable | QString | Metadata variable storing the label for each template. Default is "Label".
311   -outputVariable | QString | Metadata variable to store the prediction value of the trained SVM. If type is EPS_SVR or NU_SVR the stored value is the output of the SVM. Otherwise the value is the output of the SVM mapped through the reverse lookup table. Default is "".
312   -returnDFVal | bool | If true, dst is set to a 1x1 Mat with value equal to the predicted output of the SVM. Default is false.
313   -termCriteria | int | The maximum number of training iterations. Default is 1000.
314   -folds | int | Cross validation parameter used for autoselecting other parameters. Default is 5.
315   -balanceFolds | bool | If true and the problem is 2-class classification then more balanced cross validation subsets are created. Default is false.
  362 + Property | Type | Description
  363 + --- | --- | ---
  364 + Kernel | enum | The type of SVM kernel to use. Options are Linear, Poly, RBF, Sigmoid. Default is Linear.
  365 + Type | enum | The type of SVM to do. Options are C_SVC, NU_SVC, ONE_CLASS, EPS_SVR, NU_SVR. Default is C_SVC.
  366 + C | float | Parameter C of an SVM optimization problem. Needed when Type is C_SVC, EPS_SVR or NU_SVR. Default is -1.
  367 + gamma | float | Parameter gamma of a kernel function. Needed when Kernel is Poly, RBF, or Sigmoid. Default is -1.
  368 + inputVariable | QString | Metadata variable storing the label for each template. Default is "Label".
  369 + outputVariable | QString | Metadata variable to store the prediction value of the trained SVM. If type is EPS_SVR or NU_SVR the stored value is the output of the SVM. Otherwise the value is the output of the SVM mapped through the reverse lookup table. Default is "".
  370 + returnDFVal | bool | If true, dst is set to a 1x1 Mat with value equal to the predicted output of the SVM. Default is false.
  371 + termCriteria | int | The maximum number of training iterations. Default is 1000.
  372 + folds | int | Cross validation parameter used for autoselecting other parameters. Default is 5.
  373 + balanceFolds | bool | If true and the problem is 2-class classification then more balanced cross validation subsets are created. Default is false.
316 374  
317 375 ---
318 376  
319 377 # SparseLDATransform
320 378  
321 379 Projects input into learned Linear Discriminant Analysis subspace learned on a sparse subset of features with the highest weight in the original LDA algorithm.
  380 +
322 381  
323 382 * **file:** classification/lda.cpp
324 383 * **inherits:** [Transform](../cpp_api/transform/transform.md)
325   -* **author:** Brendan Klare
  384 +* **author(s):** [Brendan Klare][bklare]
326 385 * **properties:**
327 386  
328   -Property | Type | Description
329   ---- | --- | ---
330   -varThreshold | float | BRENDAN FILL ME IN. Default is 1.5.
331   -pcaKeep | float | BRENDAN FILL ME IN. Default is 0.98.
332   -normalize | bool | BRENDAN FILL ME IN. Default is true.
  387 + Property | Type | Description
  388 + --- | --- | ---
  389 + varThreshold | float | BRENDAN FILL ME IN. Default is 1.5.
  390 + pcaKeep | float | BRENDAN FILL ME IN. Default is 0.98.
  391 + normalize | bool | BRENDAN FILL ME IN. Default is true.
333 392  
334 393 ---
335 394  
336 395 # TurkClassifierTransform
337 396  
338 397 Convenience class for training turk attribute regressors
  398 +
339 399  
340 400 * **file:** classification/turk.cpp
341 401 * **inherits:** [Transform](../cpp_api/transform/transform.md)
342   -* **author:** Josh Klontz
  402 +* **author(s):** [Josh Klontz][jklontz]
343 403 * **properties:**
344 404  
345   -Property | Type | Description
346   ---- | --- | ---
347   -key | QString | Metadata key to pass input values to SVM. Actual lookup key is "key_value" where value is each value in the parameter values. Default is "".
348   -values | QStringList | Metadata keys to pass input values to SVM. Actual lookup key is "key_value" where key is the parameter key and value is each value in this list. Each passed value trains a new SVM with the input values found in metadata<ul><li>"key_value"</li></ul>. Default is "".
349   -isMeta | bool | If true, "Average+SaveMat(predicted_key_value)" is appended to each classifier. If false, nothing is appended. Default is false.
  405 + Property | Type | Description
  406 + --- | --- | ---
  407 + key | QString | Metadata key to pass input values to SVM. Actual lookup key is "key_value" where value is each value in the parameter values. Default is "".
  408 + values | QStringList | Metadata keys to pass input values to SVM. Actual lookup key is "key_value" where key is the parameter key and value is each value in this list. Each passed value trains a new SVM with the input values found in metadata<ul><li>"key_value"</li></ul>. Default is "".
  409 + isMeta | bool | If true, "Average+SaveMat(predicted_key_value)" is appended to each classifier. If false, nothing is appended. Default is false.
350 410  
351 411 ---
352 412  
... ...
docs/docs/api_docs/plugins/cluster.md
1 1 # CollectNNTransform
2 2  
3 3 Collect nearest neighbors and append them to metadata.
  4 +
4 5  
5 6 * **file:** cluster/collectnn.cpp
6 7 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
7   -* **author:** Charles Otto
  8 +* **author(s):** [Charles Otto][caotto]
8 9 * **properties:**
9 10  
10   -Property | Type | Description
11   ---- | --- | ---
12   -keep | int | The maximum number of nearest neighbors to keep. Default is 20.
  11 + Property | Type | Description
  12 + --- | --- | ---
  13 + keep | int | The maximum number of nearest neighbors to keep. Default is 20.
13 14  
14 15 ---
15 16  
16 17 # KMeansTransform
17 18  
18 19 Wraps OpenCV kmeans and flann.
  20 +
19 21  
20 22 * **file:** cluster/kmeans.cpp
21 23 * **inherits:** [Transform](../cpp_api/transform/transform.md)
  24 +* **author(s):** [Josh Klontz][jklontz]
22 25 * **see:** [http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html](http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html)
23   -* **author:** Josh Klontz
24 26 * **properties:**
25 27  
26   -Property | Type | Description
27   ---- | --- | ---
28   -kTrain | int | The number of random centroids to make at train time. Default is 256.
29   -kSearch | int | The number of nearest neighbors to search for at runtime. Default is 1.
  28 + Property | Type | Description
  29 + --- | --- | ---
  30 + kTrain | int | The number of random centroids to make at train time. Default is 256.
  31 + kSearch | int | The number of nearest neighbors to search for at runtime. Default is 1.
30 32  
31 33 ---
32 34  
33 35 # KNNTransform
34 36  
35 37 K nearest neighbors classifier.
  38 +
36 39  
37 40 * **file:** cluster/knn.cpp
38 41 * **inherits:** [Transform](../cpp_api/transform/transform.md)
39   -* **author:** Josh Klontz
  42 +* **author(s):** [Josh Klontz][jklontz]
40 43 * **properties:** None
41 44  
42 45  
... ... @@ -45,32 +48,34 @@ K nearest neighbors classifier.
45 48 # LogNNTransform
46 49  
47 50 Log nearest neighbors to specified file.
  51 +
48 52  
49 53 * **file:** cluster/lognn.cpp
50 54 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
51   -* **author:** Charles Otto
  55 +* **author(s):** [Charles Otto][caotto]
52 56 * **properties:**
53 57  
54   -Property | Type | Description
55   ---- | --- | ---
56   -fileName | QString | The name of the log file. An empty fileName won't be written to. Default is "".
  58 + Property | Type | Description
  59 + --- | --- | ---
  60 + fileName | QString | The name of the log file. An empty fileName won't be written to. Default is "".
57 61  
58 62 ---
59 63  
60 64 # RandomCentroidsTransform
61 65  
62 66 Chooses k random points to be centroids.
  67 +
63 68  
64 69 * **file:** cluster/randomcentroids.cpp
65 70 * **inherits:** [Transform](../cpp_api/transform/transform.md)
  71 +* **author(s):** [Austin Blanton][imaus10]
66 72 * **see:** [http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html](http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html)
67   -* **author:** Austin Blanton
68 73 * **properties:**
69 74  
70   -Property | Type | Description
71   ---- | --- | ---
72   -kTrain | int | The number of random centroids to make at train time. Default is 256.
73   -kSearch | int | The number of nearest neighbors to search for at runtime. Default is 1.
  75 + Property | Type | Description
  76 + --- | --- | ---
  77 + kTrain | int | The number of random centroids to make at train time. Default is 256.
  78 + kSearch | int | The number of nearest neighbors to search for at runtime. Default is 1.
74 79  
75 80 ---
76 81  
... ...
docs/docs/api_docs/plugins/core.md
1 1 # CacheTransform
2 2  
3   -Caches br::Transform::project() results.
  3 +Caches [Transform](../cpp_api/transform/transform.md)::project() results.
  4 +
4 5  
5 6 * **file:** core/cache.cpp
6 7 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
7   -* **author:** Josh Klontz
  8 +* **author(s):** [Josh Klontz][jklontz]
8 9 * **properties:** None
9 10  
10 11  
... ... @@ -13,10 +14,11 @@ Caches br::Transform::project() results.
13 14 # CollectOutputTransform
14 15  
15 16 DOCUMENT ME CHARLES
  17 +
16 18  
17 19 * **file:** core/stream.cpp
18 20 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
19   -* **author:** Charles Otto
  21 +* **author(s):** [Charles Otto][caotto]
20 22 * **properties:** None
21 23  
22 24  
... ... @@ -26,9 +28,12 @@ DOCUMENT ME CHARLES
26 28  
27 29 It's like the opposite of ExpandTransform, but not really
28 30  
  31 +Given a [TemplateList](../cpp_api/templatelist/templatelist.md) as input, concatenate them into a single [Template](../cpp_api/template/template.md)
  32 +
  33 +
29 34 * **file:** core/contract.cpp
30 35 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
31   -* **author:** Charles Otto
  36 +* **author(s):** [Charles Otto][caotto]
32 37 * **properties:** None
33 38  
34 39  
... ... @@ -36,11 +41,15 @@ It&#39;s like the opposite of ExpandTransform, but not really
36 41  
37 42 # CrossValidateTransform
38 43  
39   -Cross validate a trainable transform.
  44 +Cross validate a trainable [Transform](../cpp_api/transform/transform.md).
  45 +
  46 +To use an extended [Gallery](../cpp_api/gallery/gallery.md), add an allPartitions="true" flag to the gallery sigset for those images that should be compared
  47 +against for all testing partitions.
  48 +
40 49  
41 50 * **file:** core/crossvalidate.cpp
42 51 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
43   -* **authors:** Josh Klontz, Scott Klum
  52 +* **author(s):** [Josh Klontz][jklontz], [Scott Klum][sklum]
44 53 * **properties:** None
45 54  
46 55  
... ... @@ -49,10 +58,24 @@ Cross validate a trainable transform.
49 58 # DirectStreamTransform
50 59  
51 60 DOCUMENT ME CHARLES
  61 +
52 62  
53 63 * **file:** core/stream.cpp
54   -* **inherits:** [CompositeTransform](#compositetransform)
55   -* **author:** Charles Otto
  64 +* **inherits:** [CompositeTransform](../cpp_api/compositetransform/compositetransform.md)
  65 +* **author(s):** [Charles Otto][caotto]
  66 +* **properties:** None
  67 +
  68 +
  69 +---
  70 +
  71 +# DiscardTemplatesTransform
  72 +
  73 +DOCUMENT ME
  74 +
  75 +
  76 +* **file:** core/discardtemplates.cpp
  77 +* **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
  78 +* **author(s):** [Unknown][unknown]
56 79 * **properties:** None
57 80  
58 81  
... ... @@ -60,12 +83,25 @@ DOCUMENT ME CHARLES
60 83  
61 84 # DiscardTransform
62 85  
63   -Removes all template's matrices.
  86 +Removes all matrices from a [Template](../cpp_api/template/template.md).
  87 +
64 88  
65 89 * **file:** core/discard.cpp
66 90 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
67   -* **see:** [IdentityTransform FirstTransform RestTransform RemoveTransform](#identitytransform firsttransform resttransform removetransform)
68   -* **author:** Josh Klontz
  91 +* **author(s):** [Josh Klontz][jklontz]
  92 +* **properties:** None
  93 +
  94 +
  95 +---
  96 +
  97 +# DistributeTemplateTransform
  98 +
  99 +DOCUMENT ME
  100 +
  101 +
  102 +* **file:** core/distributetemplate.cpp
  103 +* **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
  104 +* **author(s):** [Unknown][unknown]
69 105 * **properties:** None
70 106  
71 107  
... ... @@ -74,10 +110,24 @@ Removes all template&#39;s matrices.
74 110 # DownsampleTrainingTransform
75 111  
76 112 DOCUMENT ME JOSH
  113 +
77 114  
78 115 * **file:** core/downsampletraining.cpp
79 116 * **inherits:** [Transform](../cpp_api/transform/transform.md)
80   -* **author:** Josh Klontz
  117 +* **author(s):** [Josh Klontz][jklontz]
  118 +* **properties:** None
  119 +
  120 +
  121 +---
  122 +
  123 +# EventTransform
  124 +
  125 +DOCUMENT ME
  126 +
  127 +
  128 +* **file:** core/event.cpp
  129 +* **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
  130 +* **author(s):** [Unknown][unknown]
81 131 * **properties:** None
82 132  
83 133  
... ... @@ -85,12 +135,12 @@ DOCUMENT ME JOSH
85 135  
86 136 # ExpandTransform
87 137  
88   -Performs an expansion step on input templatelists
  138 +Performs an expansion step on an input [TemplateList](../cpp_api/templatelist/templatelist.md). Each matrix in each input [Template](../cpp_api/template/template.md) is expanded into its own [Template](../cpp_api/template/template.md).
  139 +
89 140  
90 141 * **file:** core/expand.cpp
91 142 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
92   -* **see:** [PipeTransform](#pipetransform)
93   -* **author:** Josh Klontz
  143 +* **author(s):** [Josh Klontz][jklontz]
94 144 * **properties:** None
95 145  
96 146  
... ... @@ -98,11 +148,12 @@ Performs an expansion step on input templatelists
98 148  
99 149 # FTETransform
100 150  
101   -Flags images that failed to enroll based on the specified transform.
  151 +Flags images that failed to enroll based on the specified [Transform](../cpp_api/transform/transform.md).
  152 +
102 153  
103 154 * **file:** core/fte.cpp
104 155 * **inherits:** [Transform](../cpp_api/transform/transform.md)
105   -* **author:** Josh Klontz
  156 +* **author(s):** [Josh Klontz][jklontz]
106 157 * **properties:** None
107 158  
108 159  
... ... @@ -110,12 +161,12 @@ Flags images that failed to enroll based on the specified transform.
110 161  
111 162 # FirstTransform
112 163  
113   -Removes all but the first matrix from the template.
  164 +Removes all but the first matrix from the [Template](../cpp_api/template/template.md).
  165 +
114 166  
115 167 * **file:** core/first.cpp
116 168 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
117   -* **see:** [IdentityTransform DiscardTransform RestTransform RemoveTransform](#identitytransform discardtransform resttransform removetransform)
118   -* **author:** Josh Klontz
  169 +* **author(s):** [Josh Klontz][jklontz]
119 170 * **properties:** None
120 171  
121 172  
... ... @@ -125,10 +176,12 @@ Removes all but the first matrix from the template.
125 176  
126 177 Transforms in parallel.
127 178  
  179 +The source [Template](../cpp_api/template/template.md) is seperately given to each transform and the results are appended together.
  180 +
  181 +
128 182 * **file:** core/fork.cpp
129   -* **inherits:** [CompositeTransform](#compositetransform)
130   -* **see:** [PipeTransform](#pipetransform)
131   -* **author:** Josh Klontz
  183 +* **inherits:** [CompositeTransform](../cpp_api/compositetransform/compositetransform.md)
  184 +* **author(s):** [Josh Klontz][jklontz]
132 185 * **properties:** None
133 186  
134 187  
... ... @@ -136,11 +189,13 @@ Transforms in parallel.
136 189  
137 190 # GalleryCompareTransform
138 191  
139   -Compare each template to a fixed gallery (with name = galleryName), using the specified distance.
  192 +Compare each [Template](../cpp_api/template/template.md) to a fixed [Gallery](../cpp_api/gallery/gallery.md) (with name = galleryName), using the specified distance.
  193 +dst will contain a 1 by n vector of scores.
  194 +
140 195  
141 196 * **file:** core/gallerycompare.cpp
142 197 * **inherits:** [Transform](../cpp_api/transform/transform.md)
143   -* **author:** Charles Otto
  198 +* **author(s):** [Charles Otto][caotto]
144 199 * **properties:** None
145 200  
146 201  
... ... @@ -148,12 +203,12 @@ Compare each template to a fixed gallery (with name = galleryName), using the sp
148 203  
149 204 # IdentityTransform
150 205  
151   -A no-op transform.
  206 +A no-op [Transform](../cpp_api/transform/transform.md).
  207 +
152 208  
153 209 * **file:** core/identity.cpp
154 210 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
155   -* **see:** [DiscardTransform FirstTransform RestTransform RemoveTransform](#discardtransform firsttransform resttransform removetransform)
156   -* **author:** Josh Klontz
  211 +* **author(s):** [Josh Klontz][jklontz]
157 212 * **properties:** None
158 213  
159 214  
... ... @@ -161,11 +216,27 @@ A no-op transform.
161 216  
162 217 # IndependentTransform
163 218  
164   -Clones the transform so that it can be applied independently.
  219 +Clones the [Transform](../cpp_api/transform/transform.md) so that it can be applied independently.
  220 +
  221 +Independent [Transform](../cpp_api/transform/transform.md)s expect single-matrix [Template](../cpp_api/template/template.md).
  222 +
165 223  
166 224 * **file:** core/independent.cpp
167 225 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
168   -* **author:** Josh Klontz
  226 +* **author(s):** [Josh Klontz][jklontz]
  227 +* **properties:** None
  228 +
  229 +
  230 +---
  231 +
  232 +# JNITransform
  233 +
  234 +Execute Java code from OpenBR using the JNI
  235 +
  236 +
  237 +* **file:** core/jni.cpp
  238 +* **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
  239 +* **author(s):** [Jordan Cheney][jcheney]
169 240 * **properties:** None
170 241  
171 242  
... ... @@ -174,10 +245,12 @@ Clones the transform so that it can be applied independently.
174 245 # LikelyTransform
175 246  
176 247 Generic interface to Likely JIT compiler
  248 +
177 249  
178 250 * **file:** core/likely.cpp
179 251 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
180   -* **author:** Josh Klontz
  252 +* **author(s):** [Josh Klontz][jklontz]
  253 +* **see:** [www.liblikely.org](www.liblikely.org)
181 254 * **properties:** None
182 255  
183 256  
... ... @@ -185,11 +258,12 @@ Generic interface to Likely JIT compiler
185 258  
186 259 # LoadStoreTransform
187 260  
188   -Caches transform training.
  261 +Caches [Transform](../cpp_api/transform/transform.md) training.
  262 +
189 263  
190 264 * **file:** core/loadstore.cpp
191 265 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
192   -* **author:** Josh Klontz
  266 +* **author(s):** [Josh Klontz][jklontz]
193 267 * **properties:** None
194 268  
195 269  
... ... @@ -199,14 +273,12 @@ Caches transform training.
199 273  
200 274 Transforms in series.
201 275  
202   -* **file:** core/pipe.cpp
203   -* **inherits:** [CompositeTransform](#compositetransform)
204   -* **see:**
205   -
206   - * [ExpandTransform](ExpandTransform)
207   - * [ForkTransform](ForkTransform)
  276 +The source [Template](../cpp_api/template/template.md) is given to the first transform and the resulting [Template](../cpp_api/template/template.md) is passed to the next transform, etc.
  277 +
208 278  
209   -* **author:** Josh Klontz
  279 +* **file:** core/pipe.cpp
  280 +* **inherits:** [CompositeTransform](../cpp_api/compositetransform/compositetransform.md)
  281 +* **author(s):** [Josh Klontz][jklontz]
210 282 * **properties:** None
211 283  
212 284  
... ... @@ -215,10 +287,11 @@ Transforms in series.
215 287 # ProcessWrapperTransform
216 288  
217 289 Interface to a separate process
  290 +
218 291  
219 292 * **file:** core/processwrapper.cpp
220   -* **inherits:** [WrapperTransform](#wrappertransform)
221   -* **author:** Charles Otto
  293 +* **inherits:** [WrapperTransform](../cpp_api/wrappertransform/wrappertransform.md)
  294 +* **author(s):** [Charles Otto][caotto]
222 295 * **properties:** None
223 296  
224 297  
... ... @@ -227,10 +300,43 @@ Interface to a separate process
227 300 # ProcrustesAlignTransform
228 301  
229 302 Improved procrustes alignment of points, to include a post processing scaling of points
  303 +to faciliate subsequent texture mapping.
  304 +
230 305  
231 306 * **file:** core/align.cpp
232 307 * **inherits:** [Transform](../cpp_api/transform/transform.md)
233   -* **author:** Brendan Klare
  308 +* **author(s):** [Brendan Klare][bklare]
  309 +* **properties:**
  310 +
  311 + Property | Type | Description
  312 + --- | --- | ---
  313 + width | float | Width of output coordinate space (before padding)
  314 + padding | float | Amount of padding around the coordinate space
  315 + useFirst | bool | Whether or not to use the first instance as the reference object
  316 +
  317 +---
  318 +
  319 +# ProgressCounterTransform
  320 +
  321 +DOCUMENT ME
  322 +
  323 +
  324 +* **file:** core/progresscounter.cpp
  325 +* **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
  326 +* **author(s):** [Unknown][unknown]
  327 +* **properties:** None
  328 +
  329 +
  330 +---
  331 +
  332 +# RemoveTransform
  333 +
  334 +Removes the matrix from the [Template](../cpp_api/template/template.md) at the specified index.
  335 +
  336 +
  337 +* **file:** core/remove.cpp
  338 +* **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
  339 +* **author(s):** [Josh Klontz][jklontz]
234 340 * **properties:** None
235 341  
236 342  
... ... @@ -238,12 +344,12 @@ Improved procrustes alignment of points, to include a post processing scaling of
238 344  
239 345 # RestTransform
240 346  
241   -Removes the first matrix from the template.
  347 +Removes the first matrix from the [Template](../cpp_api/template/template.md).
  348 +
242 349  
243 350 * **file:** core/rest.cpp
244 351 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
245   -* **see:** [IdentityTransform DiscardTransform FirstTransform RemoveTransform](#identitytransform discardtransform firsttransform removetransform)
246   -* **author:** Josh Klontz
  352 +* **author(s):** [Josh Klontz][jklontz]
247 353 * **properties:** None
248 354  
249 355  
... ... @@ -251,11 +357,13 @@ Removes the first matrix from the template.
251 357  
252 358 # SchrodingerTransform
253 359  
254   -Generates two templates, one of which is passed through a transform and the other
  360 +Generates two [Template](../cpp_api/template/template.md), one of which is passed through a [Transform](../cpp_api/transform/transform.md) and the other
  361 +is not. No cats were harmed in the making of this [Transform](../cpp_api/transform/transform.md).
  362 +
255 363  
256 364 * **file:** core/schrodinger.cpp
257 365 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
258   -* **author:** Scott Klum
  366 +* **author(s):** [Scott Klum][sklum]
259 367 * **properties:** None
260 368  
261 369  
... ... @@ -263,11 +371,12 @@ Generates two templates, one of which is passed through a transform and the othe
263 371  
264 372 # SingletonTransform
265 373  
266   -A globally shared transform.
  374 +A globally shared [Transform](../cpp_api/transform/transform.md).
  375 +
267 376  
268 377 * **file:** core/singleton.cpp
269 378 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
270   -* **author:** Josh Klontz
  379 +* **author(s):** [Josh Klontz][jklontz]
271 380 * **properties:** None
272 381  
273 382  
... ... @@ -276,10 +385,11 @@ A globally shared transform.
276 385 # StreamTransform
277 386  
278 387 DOCUMENT ME CHARLES
  388 +
279 389  
280 390 * **file:** core/stream.cpp
281   -* **inherits:** [WrapperTransform](#wrappertransform)
282   -* **author:** Charles Otto
  391 +* **inherits:** [WrapperTransform](../cpp_api/wrappertransform/wrappertransform.md)
  392 +* **author(s):** [Charles Otto][caotto]
283 393 * **properties:** None
284 394  
285 395  
... ... @@ -288,10 +398,11 @@ DOCUMENT ME CHARLES
288 398 # SynthesizePointsTransform
289 399  
290 400 Synthesize additional points via triangulation.
  401 +
291 402  
292 403 * **file:** core/align.cpp
293 404 * **inherits:** [MetadataTransform](../cpp_api/metadatatransform/metadatatransform.md)
294   -* **author:** Josh Klontz
  405 +* **author(s):** [Josh Klontz][jklontz]
295 406 * **properties:** None
296 407  
297 408  
... ... @@ -300,10 +411,11 @@ Synthesize additional points via triangulation.
300 411 # TextureMapTransform
301 412  
302 413 Maps texture from one set of points to another. Assumes that points are rigidly transformed
  414 +
303 415  
304 416 * **file:** core/align.cpp
305 417 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
306   -* **authors:** Brendan Klare, Scott Klum
  418 +* **author(s):** [Brendan Klare][bklare], [Scott Klum][sklum]
307 419 * **properties:** None
308 420  
309 421  
... ...
docs/docs/api_docs/plugins/distance.md
1 1 # AttributeDistance
2 2  
3 3 Attenuation function based distance from attributes
  4 +
4 5  
5 6 * **file:** distance/attribute.cpp
6 7 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
7   -* **author:** Scott Klum
  8 +* **author(s):** [Scott Klum][sklum]
8 9 * **properties:** None
9 10  
10 11  
... ... @@ -12,11 +13,12 @@ Attenuation function based distance from attributes
12 13  
13 14 # BayesianQuantizationDistance
14 15  
15   -Bayesian quantization distance
  16 +Bayesian quantization [Distance](../cpp_api/distance/distance.md)
  17 +
16 18  
17 19 * **file:** distance/bayesianquantization.cpp
18 20 * **inherits:** [Distance](../cpp_api/distance/distance.md)
19   -* **author:** Josh Klontz
  21 +* **author(s):** [Josh Klontz][jklontz]
20 22 * **properties:** None
21 23  
22 24  
... ... @@ -25,10 +27,11 @@ Bayesian quantization distance
25 27 # ByteL1Distance
26 28  
27 29 Fast 8-bit L1 distance
  30 +
28 31  
29 32 * **file:** distance/byteL1.cpp
30 33 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
31   -* **author:** Josh Klontz
  34 +* **author(s):** [Josh Klontz][jklontz]
32 35 * **properties:** None
33 36  
34 37  
... ... @@ -36,11 +39,12 @@ Fast 8-bit L1 distance
36 39  
37 40 # CrossValidateDistance
38 41  
39   -Cross validate a distance metric.
  42 +Cross validate a [Distance](../cpp_api/distance/distance.md) metric.
  43 +
40 44  
41 45 * **file:** distance/crossvalidate.cpp
42 46 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
43   -* **author:** Josh Klontz
  47 +* **author(s):** [Josh Klontz][jklontz]
44 48 * **properties:** None
45 49  
46 50  
... ... @@ -49,10 +53,11 @@ Cross validate a distance metric.
49 53 # DefaultDistance
50 54  
51 55 DistDistance wrapper.
  56 +
52 57  
53 58 * **file:** distance/default.cpp
54 59 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
55   -* **author:** Josh Klontz
  60 +* **author(s):** [Josh Klontz][jklontz]
56 61 * **properties:** None
57 62  
58 63  
... ... @@ -60,11 +65,12 @@ DistDistance wrapper.
60 65  
61 66 # DistDistance
62 67  
63   -Standard distance metrics
  68 +Standard [Distance](../cpp_api/distance/distance.md) metrics
  69 +
64 70  
65 71 * **file:** distance/dist.cpp
66 72 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
67   -* **author:** Josh Klontz
  73 +* **author(s):** [Josh Klontz][jklontz]
68 74 * **properties:** None
69 75  
70 76  
... ... @@ -73,10 +79,11 @@ Standard distance metrics
73 79 # FilterDistance
74 80  
75 81 Checks target metadata against filters.
  82 +
76 83  
77 84 * **file:** distance/filter.cpp
78 85 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
79   -* **author:** Josh Klontz
  86 +* **author(s):** [Josh Klontz][jklontz]
80 87 * **properties:** None
81 88  
82 89  
... ... @@ -84,23 +91,28 @@ Checks target metadata against filters.
84 91  
85 92 # FuseDistance
86 93  
87   -Fuses similarity scores across multiple matrices of compared templates
  94 +Fuses similarity scores across multiple matrices of compared [Template](../cpp_api/template/template.md)
  95 +
88 96  
89 97 * **file:** distance/fuse.cpp
90 98 * **inherits:** [Distance](../cpp_api/distance/distance.md)
91   -* **author:** Scott Klum
92   -* **properties:** None
  99 +* **author(s):** [Scott Klum][sklum]
  100 +* **properties:**
93 101  
  102 + Property | Type | Description
  103 + --- | --- | ---
  104 + Operation | enum | Possible values are:<ul><li>Mean</li><li>sum</li><li>min</li><li>max</li></ul>.
94 105  
95 106 ---
96 107  
97 108 # HalfByteL1Distance
98 109  
99 110 Fast 4-bit L1 distance
  111 +
100 112  
101 113 * **file:** distance/halfbyteL1.cpp
102 114 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
103   -* **author:** Josh Klontz
  115 +* **author(s):** [Josh Klontz][jklontz]
104 116 * **properties:** None
105 117  
106 118  
... ... @@ -109,10 +121,11 @@ Fast 4-bit L1 distance
109 121 # HeatMapDistance
110 122  
111 123 1v1 heat map comparison
  124 +
112 125  
113 126 * **file:** distance/heatmap.cpp
114 127 * **inherits:** [Distance](../cpp_api/distance/distance.md)
115   -* **author:** Scott Klum
  128 +* **author(s):** [Scott Klum][sklum]
116 129 * **properties:** None
117 130  
118 131  
... ... @@ -120,11 +133,12 @@ Fast 4-bit L1 distance
120 133  
121 134 # IdenticalDistance
122 135  
123   -Returns
  136 +Returns true if the [Template](../cpp_api/template/template.md) are identical, false otherwise.
  137 +
124 138  
125 139 * **file:** distance/identical.cpp
126 140 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
127   -* **author:** Josh Klontz
  141 +* **author(s):** [Josh Klontz][jklontz]
128 142 * **properties:** None
129 143  
130 144  
... ... @@ -133,10 +147,12 @@ Returns
133 147 # KeyPointMatcherDistance
134 148  
135 149 Wraps OpenCV Key Point Matcher
  150 +
136 151  
137 152 * **file:** distance/keypointmatcher.cpp
138 153 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
139   -* **author:** Josh Klontz
  154 +* **author(s):** [Josh Klontz][jklontz]
  155 +* **see:** [http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html](http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html)
140 156 * **properties:** None
141 157  
142 158  
... ... @@ -145,10 +161,11 @@ Wraps OpenCV Key Point Matcher
145 161 # L1Distance
146 162  
147 163 L1 distance computed using eigen.
  164 +
148 165  
149 166 * **file:** distance/L1.cpp
150 167 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
151   -* **author:** Josh Klontz
  168 +* **author(s):** [Josh Klontz][jklontz]
152 169 * **properties:** None
153 170  
154 171  
... ... @@ -157,10 +174,11 @@ L1 distance computed using eigen.
157 174 # L2Distance
158 175  
159 176 L2 distance computed using eigen.
  177 +
160 178  
161 179 * **file:** distance/L2.cpp
162 180 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
163   -* **author:** Josh Klontz
  181 +* **author(s):** [Josh Klontz][jklontz]
164 182 * **properties:** None
165 183  
166 184  
... ... @@ -169,10 +187,11 @@ L2 distance computed using eigen.
169 187 # MatchProbabilityDistance
170 188  
171 189 Match Probability
  190 +
172 191  
173 192 * **file:** distance/matchprobability.cpp
174 193 * **inherits:** [Distance](../cpp_api/distance/distance.md)
175   -* **author:** Josh Klontz
  194 +* **author(s):** [Josh Klontz][jklontz]
176 195 * **properties:** None
177 196  
178 197  
... ... @@ -181,10 +200,11 @@ Match Probability
181 200 # MetadataDistance
182 201  
183 202 Checks target metadata against query metadata.
  203 +
184 204  
185 205 * **file:** distance/metadata.cpp
186 206 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
187   -* **author:** Scott Klum
  207 +* **author(s):** [Scott Klum][sklum]
188 208 * **properties:** None
189 209  
190 210  
... ... @@ -193,10 +213,11 @@ Checks target metadata against query metadata.
193 213 # NegativeLogPlusOneDistance
194 214  
195 215 Returns -log(distance(a,b)+1)
  216 +
196 217  
197 218 * **file:** distance/neglogplusone.cpp
198 219 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
199   -* **author:** Josh Klontz
  220 +* **author(s):** [Josh Klontz][jklontz]
200 221 * **properties:** None
201 222  
202 223  
... ... @@ -204,11 +225,12 @@ Returns -log(distance(a,b)+1)
204 225  
205 226 # OnlineDistance
206 227  
207   -Online distance metric to attenuate match scores across multiple frames
  228 +Online [Distance](../cpp_api/distance/distance.md) metric to attenuate match scores across multiple frames
  229 +
208 230  
209 231 * **file:** distance/online.cpp
210 232 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
211   -* **author:** Brendan klare
  233 +* **author(s):** [Brendan klare][bklare]
212 234 * **properties:** None
213 235  
214 236  
... ... @@ -218,9 +240,14 @@ Online distance metric to attenuate match scores across multiple frames
218 240  
219 241 Distances in series.
220 242  
  243 +The [Template](../cpp_api/template/template.md) are compared using each [Distance](../cpp_api/distance/distance.md) in order.
  244 +If the result of the comparison with any given distance is -FLOAT_MAX then this result is returned early.
  245 +Otherwise the returned result is the value of comparing the [Template](../cpp_api/template/template.md) using the last [Distance](../cpp_api/distance/distance.md).
  246 +
  247 +
221 248 * **file:** distance/pipe.cpp
222 249 * **inherits:** [Distance](../cpp_api/distance/distance.md)
223   -* **author:** Josh Klontz
  250 +* **author(s):** [Josh Klontz][jklontz]
224 251 * **properties:** None
225 252  
226 253  
... ... @@ -228,11 +255,12 @@ Distances in series.
228 255  
229 256 # RejectDistance
230 257  
231   -Sets distance to -FLOAT_MAX if a target template has/doesn't have a key.
  258 +Sets [Distance](../cpp_api/distance/distance.md) to -FLOAT_MAX if a target [Template](../cpp_api/template/template.md) has/doesn't have a key.
  259 +
232 260  
233 261 * **file:** distance/reject.cpp
234 262 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
235   -* **author:** Scott Klum
  263 +* **author(s):** [Scott Klum][sklum]
236 264 * **properties:** None
237 265  
238 266  
... ... @@ -240,11 +268,12 @@ Sets distance to -FLOAT_MAX if a target template has/doesn&#39;t have a key.
240 268  
241 269 # SVMDistance
242 270  
243   -SVM Regression on template absolute differences.
  271 +SVM Regression on [Template](../cpp_api/template/template.md) absolute differences.
  272 +
244 273  
245 274 * **file:** distance/svm.cpp
246 275 * **inherits:** [Distance](../cpp_api/distance/distance.md)
247   -* **author:** Josh Klontz
  276 +* **author(s):** [Josh Klontz][jklontz]
248 277 * **properties:** None
249 278  
250 279  
... ... @@ -252,11 +281,12 @@ SVM Regression on template absolute differences.
252 281  
253 282 # SumDistance
254 283  
255   -Sum match scores across multiple distances
  284 +Sum match scores across multiple [Distance](../cpp_api/distance/distance.md)
  285 +
256 286  
257 287 * **file:** distance/sum.cpp
258 288 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
259   -* **author:** Scott Klum
  289 +* **author(s):** [Scott Klum][sklum]
260 290 * **properties:** None
261 291  
262 292  
... ... @@ -265,10 +295,11 @@ Sum match scores across multiple distances
265 295 # TurkDistance
266 296  
267 297 Unmaps Turk HITs to be compared against query mats
  298 +
268 299  
269 300 * **file:** distance/turk.cpp
270 301 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
271   -* **author:** Scott Klum
  302 +* **author(s):** [Scott Klum][sklum]
272 303 * **properties:** None
273 304  
274 305  
... ... @@ -276,11 +307,25 @@ Unmaps Turk HITs to be compared against query mats
276 307  
277 308 # UnitDistance
278 309  
279   -Linear normalizes of a distance so the mean impostor score is 0 and the mean genuine score is 1.
  310 +Linear normalizes of a [Distance](../cpp_api/distance/distance.md) so the mean impostor score is 0 and the mean genuine score is 1.
  311 +
280 312  
281 313 * **file:** distance/unit.cpp
282 314 * **inherits:** [Distance](../cpp_api/distance/distance.md)
283   -* **author:** Josh Klontz
  315 +* **author(s):** [Josh Klontz][jklontz]
  316 +* **properties:** None
  317 +
  318 +
  319 +---
  320 +
  321 +# ZScoreDistance
  322 +
  323 +DOCUMENT ME
  324 +
  325 +
  326 +* **file:** distance/zscore.cpp
  327 +* **inherits:** [Distance](../cpp_api/distance/distance.md)
  328 +* **author(s):** [Unknown][unknown]
284 329 * **properties:** None
285 330  
286 331  
... ...
docs/docs/api_docs/plugins/format.md
1 1 # DefaultFormat
2 2  
3 3 Reads image files.
  4 +
4 5  
5 6 * **file:** format/video.cpp
6 7 * **inherits:** [Format](../cpp_api/format/format.md)
7   -* **author:** Josh Klontz
  8 +* **author(s):** [Josh Klontz][jklontz]
8 9 * **properties:** None
9 10  
10 11  
... ... @@ -13,10 +14,12 @@ Reads image files.
13 14 # binaryFormat
14 15  
15 16 A simple binary matrix format.
  17 +
16 18  
17 19 * **file:** format/binary.cpp
18 20 * **inherits:** [Format](../cpp_api/format/format.md)
19   -* **author:** Josh Klontz
  21 +* **author(s):** [Josh Klontz][jklontz]
  22 +* **format:** First 4 bytes indicate the number of rows. Second 4 bytes indicate the number of columns. The rest of the bytes are 32-bit floating data elements in row-major order.
20 23 * **properties:** None
21 24  
22 25  
... ... @@ -25,10 +28,11 @@ A simple binary matrix format.
25 28 # csvFormat
26 29  
27 30 Reads a comma separated value file.
  31 +
28 32  
29 33 * **file:** format/csv.cpp
30 34 * **inherits:** [Format](../cpp_api/format/format.md)
31   -* **author:** Josh Klontz
  35 +* **author(s):** [Josh Klontz][jklontz]
32 36 * **properties:** None
33 37  
34 38  
... ... @@ -37,10 +41,12 @@ Reads a comma separated value file.
37 41 # ebtsFormat
38 42  
39 43 Reads FBI EBTS transactions.
  44 +
40 45  
41 46 * **file:** format/ebts.cpp
42 47 * **inherits:** [Format](../cpp_api/format/format.md)
43   -* **author:** Scott Klum
  48 +* **author(s):** [Scott Klum][sklum]
  49 +* **see:** [https://www.fbibiospecs.org/ebts.html](https://www.fbibiospecs.org/ebts.html)
44 50 * **properties:** None
45 51  
46 52  
... ... @@ -49,10 +55,11 @@ Reads FBI EBTS transactions.
49 55 # lffsFormat
50 56  
51 57 Reads a NIST LFFS file.
  58 +
52 59  
53 60 * **file:** format/lffs.cpp
54 61 * **inherits:** [Format](../cpp_api/format/format.md)
55   -* **author:** Josh Klontz
  62 +* **author(s):** [Josh Klontz][jklontz]
56 63 * **properties:** None
57 64  
58 65  
... ... @@ -61,10 +68,12 @@ Reads a NIST LFFS file.
61 68 # lmatFormat
62 69  
63 70 Likely matrix format
  71 +
64 72  
65 73 * **file:** format/lmat.cpp
66 74 * **inherits:** [Format](../cpp_api/format/format.md)
67   -* **author:** Josh Klontz
  75 +* **author(s):** [Josh Klontz][jklontz]
  76 +* **see:** [www.liblikely.org](www.liblikely.org)
68 77 * **properties:** None
69 78  
70 79  
... ... @@ -73,10 +82,11 @@ Likely matrix format
73 82 # maskFormat
74 83  
75 84 Reads a NIST BEE mask matrix.
  85 +
76 86  
77 87 * **file:** format/mtx.cpp
78 88 * **inherits:** [mtxFormat](#mtxformat)
79   -* **author:** Josh Klontz
  89 +* **author(s):** [Josh Klontz][jklontz]
80 90 * **properties:** None
81 91  
82 92  
... ... @@ -86,9 +96,13 @@ Reads a NIST BEE mask matrix.
86 96  
87 97 MATLAB <tt>.mat</tt> format.
88 98  
  99 +matFormat is known not to work with compressed matrices
  100 +
  101 +
89 102 * **file:** format/mat.cpp
90 103 * **inherits:** [Format](../cpp_api/format/format.md)
91   -* **author:** Josh Klontz
  104 +* **author(s):** [Josh Klontz][jklontz]
  105 +* **see:** [http://www.mathworks.com/help/pdf_doc/matlab/matfile_format.pdf](http://www.mathworks.com/help/pdf_doc/matlab/matfile_format.pdf)
92 106 * **properties:** None
93 107  
94 108  
... ... @@ -97,10 +111,11 @@ MATLAB &lt;tt&gt;.mat&lt;/tt&gt; format.
97 111 # mtxFormat
98 112  
99 113 Reads a NIST BEE similarity matrix.
  114 +
100 115  
101 116 * **file:** format/mtx.cpp
102 117 * **inherits:** [Format](../cpp_api/format/format.md)
103   -* **author:** Josh Klontz
  118 +* **author(s):** [Josh Klontz][jklontz]
104 119 * **properties:** None
105 120  
106 121  
... ... @@ -109,10 +124,11 @@ Reads a NIST BEE similarity matrix.
109 124 # nullFormat
110 125  
111 126 Returns an empty matrix.
  127 +
112 128  
113 129 * **file:** format/null.cpp
114 130 * **inherits:** [Format](../cpp_api/format/format.md)
115   -* **author:** Josh Klontz
  131 +* **author(s):** [Josh Klontz][jklontz]
116 132 * **properties:** None
117 133  
118 134  
... ... @@ -121,10 +137,11 @@ Returns an empty matrix.
121 137 # postFormat
122 138  
123 139 Handle POST requests
  140 +
124 141  
125 142 * **file:** format/post.cpp
126 143 * **inherits:** [Format](../cpp_api/format/format.md)
127   -* **author:** Josh Klontz
  144 +* **author(s):** [Josh Klontz][jklontz]
128 145 * **properties:** None
129 146  
130 147  
... ... @@ -133,10 +150,12 @@ Handle POST requests
133 150 # rawFormat
134 151  
135 152 RAW format
  153 +
136 154  
137 155 * **file:** format/raw.cpp
138 156 * **inherits:** [Format](../cpp_api/format/format.md)
139   -* **author:** Josh Klontz
  157 +* **author(s):** [Josh Klontz][jklontz]
  158 +* **see:** [http://www.nist.gov/srd/nistsd27.cfm](http://www.nist.gov/srd/nistsd27.cfm)
140 159 * **properties:** None
141 160  
142 161  
... ... @@ -145,10 +164,14 @@ RAW format
145 164 # scoresFormat
146 165  
147 166 Reads in scores or ground truth from a text table.
  167 +
148 168  
149 169 * **file:** format/scores.cpp
150 170 * **inherits:** [Format](../cpp_api/format/format.md)
151   -* **author:** Josh Klontz
  171 +* **author(s):** [Josh Klontz][jklontz]
  172 +* **format:** Example of the format: <pre><code>2.2531514 FALSE 99990377 99990164
  173 +2.2549822 TRUE 99990101 99990101
  174 +</code></pre>
152 175 * **properties:** None
153 176  
154 177  
... ... @@ -157,10 +180,11 @@ Reads in scores or ground truth from a text table.
157 180 # urlFormat
158 181  
159 182 Reads image files from the web.
  183 +
160 184  
161 185 * **file:** format/url.cpp
162 186 * **inherits:** [Format](../cpp_api/format/format.md)
163   -* **author:** Josh Klontz
  187 +* **author(s):** [Josh Klontz][jklontz]
164 188 * **properties:** None
165 189  
166 190  
... ... @@ -169,10 +193,11 @@ Reads image files from the web.
169 193 # videoFormat
170 194  
171 195 Read all frames of a video using OpenCV
  196 +
172 197  
173 198 * **file:** format/video.cpp
174 199 * **inherits:** [Format](../cpp_api/format/format.md)
175   -* **author:** Charles Otto
  200 +* **author(s):** [Charles Otto][caotto]
176 201 * **properties:** None
177 202  
178 203  
... ... @@ -181,10 +206,11 @@ Read all frames of a video using OpenCV
181 206 # webcamFormat
182 207  
183 208 Retrieves an image from a webcam.
  209 +
184 210  
185 211 * **file:** format/video.cpp
186 212 * **inherits:** [Format](../cpp_api/format/format.md)
187   -* **author:** Josh Klontz
  213 +* **author(s):** [Josh Klontz][jklontz]
188 214 * **properties:** None
189 215  
190 216  
... ... @@ -193,10 +219,11 @@ Retrieves an image from a webcam.
193 219 # xmlFormat
194 220  
195 221 Decodes images from Base64 xml
  222 +
196 223  
197 224 * **file:** format/xml.cpp
198 225 * **inherits:** [Format](../cpp_api/format/format.md)
199   -* **authors:** Scott Klum, Josh Klontz
  226 +* **author(s):** [Scott Klum][sklum], [Josh Klontz][jklontz]
200 227 * **properties:** None
201 228  
202 229  
... ...
docs/docs/api_docs/plugins/gallery.md
1 1 # BinaryGallery
2 2  
3 3 An abstract gallery for handling binary data
  4 +
4 5  
5 6 * **file:** gallery/binary.cpp
6 7 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
7   -* **author:** Unknown
  8 +* **author(s):** [Josh Klontz][jklontz]
8 9 * **properties:** None
9 10  
10 11  
... ... @@ -12,11 +13,12 @@ An abstract gallery for handling binary data
12 13  
13 14 # DefaultGallery
14 15  
15   -Treats the gallery as a br::Format.
  16 +Treats the gallery as a [Format](../cpp_api/format/format.md).
  17 +
16 18  
17 19 * **file:** gallery/default.cpp
18 20 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
19   -* **author:** Josh Klontz
  21 +* **author(s):** [Josh Klontz][jklontz]
20 22 * **properties:** None
21 23  
22 24  
... ... @@ -25,22 +27,28 @@ Treats the gallery as a br::Format.
25 27 # EmptyGallery
26 28  
27 29 Reads/writes templates to/from folders.
  30 +
28 31  
29 32 * **file:** gallery/empty.cpp
30 33 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
31   -* **author:** Josh Klontz
32   -* **properties:** None
  34 +* **author(s):** [Josh Klontz][jklontz]
  35 +* **properties:**
33 36  
  37 + Property | Type | Description
  38 + --- | --- | ---
  39 + regexp | QString | An optional regular expression to match against the files extension.
34 40  
35 41 ---
36 42  
37 43 # FDDBGallery
38 44  
39 45 Implements the FDDB detection format.
  46 +
40 47  
41 48 * **file:** gallery/fddb.cpp
42 49 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
43   -* **author:** Josh Klontz
  50 +* **author(s):** [Josh Klontz][jklontz]
  51 +* **see:** [http://vis-www.cs.umass.edu/fddb/README.txt](http://vis-www.cs.umass.edu/fddb/README.txt)
44 52 * **properties:** None
45 53  
46 54  
... ... @@ -49,10 +57,25 @@ Implements the FDDB detection format.
49 57 # arffGallery
50 58  
51 59 Weka ARFF file format.
  60 +
52 61  
53 62 * **file:** gallery/arff.cpp
54 63 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
55   -* **author:** Josh Klontz
  64 +* **author(s):** [Josh Klontz][jklontz]
  65 +* **see:** [http://weka.wikispaces.com/ARFF+%28stable+version%29](http://weka.wikispaces.com/ARFF+%28stable+version%29)
  66 +* **properties:** None
  67 +
  68 +
  69 +---
  70 +
  71 +# aviGallery
  72 +
  73 +Read videos of format .avi
  74 +
  75 +
  76 +* **file:** gallery/video.cpp
  77 +* **inherits:** [videoGallery](#videogallery)
  78 +* **author(s):** [Unknown][unknown]
56 79 * **properties:** None
57 80  
58 81  
... ... @@ -61,10 +84,11 @@ Weka ARFF file format.
61 84 # crawlGallery
62 85  
63 86 Crawl a root location for image files.
  87 +
64 88  
65 89 * **file:** gallery/crawl.cpp
66 90 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
67   -* **author:** Josh Klontz
  91 +* **author(s):** [Josh Klontz][jklontz]
68 92 * **properties:** None
69 93  
70 94  
... ... @@ -73,11 +97,12 @@ Crawl a root location for image files.
73 97 # csvGallery
74 98  
75 99 Treats each line as a file.
  100 +
76 101  
77 102 * **file:** gallery/csv.cpp
78 103 * **inherits:** [FileGallery](../cpp_api/filegallery/filegallery.md)
79   -* **see:** [txtGallery](#txtgallery)
80   -* **author:** Josh Klontz
  104 +* **author(s):** [Josh Klontz][jklontz]
  105 +* **format:** Columns should be comma separated with first row containing headers. The first column in the file should be the path to the file to enroll. Other columns will be treated as file metadata.
81 106 * **properties:** None
82 107  
83 108  
... ... @@ -86,10 +111,11 @@ Treats each line as a file.
86 111 # dbGallery
87 112  
88 113 Database input.
  114 +
89 115  
90 116 * **file:** gallery/db.cpp
91 117 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
92   -* **author:** Josh Klontz
  118 +* **author(s):** [Josh Klontz][jklontz]
93 119 * **properties:** None
94 120  
95 121  
... ... @@ -97,11 +123,12 @@ Database input.
97 123  
98 124 # flatGallery
99 125  
100   -Treats each line as a call to File::flat()
  126 +Treats each line as a call to [File](../cpp_api/file/file.md)::flat()
  127 +
101 128  
102 129 * **file:** gallery/flat.cpp
103 130 * **inherits:** [FileGallery](../cpp_api/filegallery/filegallery.md)
104   -* **author:** Josh Klontz
  131 +* **author(s):** [Josh Klontz][jklontz]
105 132 * **properties:** None
106 133  
107 134  
... ... @@ -111,9 +138,13 @@ Treats each line as a call to File::flat()
111 138  
112 139 A binary gallery.
113 140  
  141 +Designed to be a literal translation of templates to disk.
  142 +Compatible with [TemplateList](../cpp_api/templatelist/templatelist.md)::fromBuffer.
  143 +
  144 +
114 145 * **file:** gallery/binary.cpp
115 146 * **inherits:** [BinaryGallery](#binarygallery)
116   -* **author:** Josh Klontz
  147 +* **author(s):** [Josh Klontz][jklontz]
117 148 * **properties:** None
118 149  
119 150  
... ... @@ -122,10 +153,11 @@ A binary gallery.
122 153 # googleGallery
123 154  
124 155 Input from a google image search.
  156 +
125 157  
126 158 * **file:** gallery/google.cpp
127 159 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
128   -* **author:** Josh Klontz
  160 +* **author(s):** [Josh Klontz][jklontz]
129 161 * **properties:** None
130 162  
131 163  
... ... @@ -134,10 +166,11 @@ Input from a google image search.
134 166 # jsonGallery
135 167  
136 168 Newline-separated JSON objects.
  169 +
137 170  
138 171 * **file:** gallery/binary.cpp
139 172 * **inherits:** [BinaryGallery](#binarygallery)
140   -* **author:** Josh Klontz
  173 +* **author(s):** [Josh Klontz][jklontz]
141 174 * **properties:** None
142 175  
143 176  
... ... @@ -146,10 +179,11 @@ Newline-separated JSON objects.
146 179 # keyframesGallery
147 180  
148 181 Read key frames of a video with LibAV
  182 +
149 183  
150 184 * **file:** gallery/keyframes.cpp
151 185 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
152   -* **author:** Ben Klein
  186 +* **author(s):** [Ben Klein][bhklein]
153 187 * **properties:** None
154 188  
155 189  
... ... @@ -158,10 +192,16 @@ Read key frames of a video with LibAV
158 192 # landmarksGallery
159 193  
160 194 Text format for associating anonymous landmarks with images.
  195 +
161 196  
162 197 * **file:** gallery/landmarks.cpp
163 198 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
164   -* **author:** Josh Klontz
  199 +* **author(s):** [Josh Klontz][jklontz]
  200 +* **format:** The input should be formatted as follows: <pre><code>file_name:x1,y1,x2,y2,...,xn,yn
  201 +file_name:x1,y1,x2,y2,...,xn,yn
  202 +...
  203 +file_name:x1,y1,x2,y2,...,xn,yn
  204 +</code></pre>
165 205 * **properties:** None
166 206  
167 207  
... ... @@ -170,10 +210,12 @@ Text format for associating anonymous landmarks with images.
170 210 # lmatGallery
171 211  
172 212 Likely matrix format
  213 +
173 214  
174 215 * **file:** gallery/lmat.cpp
175 216 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
176   -* **author:** Josh Klontz
  217 +* **author(s):** [Josh Klontz][jklontz]
  218 +* **see:** [www.liblikely.org](www.liblikely.org)
177 219 * **properties:** None
178 220  
179 221  
... ... @@ -181,11 +223,12 @@ Likely matrix format
181 223  
182 224 # matrixGallery
183 225  
184   -Combine all templates into one large matrix and process it as a br::Format
  226 +Combine all [Template](../cpp_api/template/template.md) into one large matrix and process it as a [Format](../cpp_api/format/format.md)
  227 +
185 228  
186 229 * **file:** gallery/matrix.cpp
187 230 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
188   -* **author:** Josh Klontz
  231 +* **author(s):** [Josh Klontz][jklontz]
189 232 * **properties:** None
190 233  
191 234  
... ... @@ -194,10 +237,11 @@ Combine all templates into one large matrix and process it as a br::Format
194 237 # memGallery
195 238  
196 239 A gallery held in memory.
  240 +
197 241  
198 242 * **file:** gallery/mem.cpp
199 243 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
200   -* **author:** Josh Klontz
  244 +* **author(s):** [Josh Klontz][jklontz]
201 245 * **properties:** None
202 246  
203 247  
... ... @@ -206,10 +250,11 @@ A gallery held in memory.
206 250 # mp4Gallery
207 251  
208 252 Read key frames of a .mp4 video file with LibAV
  253 +
209 254  
210 255 * **file:** gallery/keyframes.cpp
211 256 * **inherits:** [keyframesGallery](#keyframesgallery)
212   -* **author:** Ben Klein
  257 +* **author(s):** [Ben Klein][bhklein]
213 258 * **properties:** None
214 259  
215 260  
... ... @@ -218,10 +263,24 @@ Read key frames of a .mp4 video file with LibAV
218 263 # postGallery
219 264  
220 265 Handle POST requests
  266 +
221 267  
222 268 * **file:** gallery/post.cpp
223 269 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
224   -* **author:** Josh Klontz
  270 +* **author(s):** [Josh Klontz][jklontz]
  271 +* **properties:** None
  272 +
  273 +
  274 +---
  275 +
  276 +# seqGallery
  277 +
  278 +DOCUMENT ME
  279 +
  280 +
  281 +* **file:** gallery/seq.cpp
  282 +* **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
  283 +* **author(s):** [Unknown][unknown]
225 284 * **properties:** None
226 285  
227 286  
... ... @@ -229,11 +288,12 @@ Handle POST requests
229 288  
230 289 # statGallery
231 290  
232   -Print template statistics.
  291 +Print [Template](../cpp_api/template/template.md) statistics.
  292 +
233 293  
234 294 * **file:** gallery/stat.cpp
235 295 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
236   -* **author:** Josh Klontz
  296 +* **author(s):** [Josh Klontz][jklontz]
237 297 * **properties:** None
238 298  
239 299  
... ... @@ -241,11 +301,12 @@ Print template statistics.
241 301  
242 302 # templateGallery
243 303  
244   -Treat the file as a single binary template.
  304 +Treat the file as a single binary [Template](../cpp_api/template/template.md).
  305 +
245 306  
246 307 * **file:** gallery/template.cpp
247 308 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
248   -* **author:** Josh Klontz
  309 +* **author(s):** [Josh Klontz][jklontz]
249 310 * **properties:** None
250 311  
251 312  
... ... @@ -254,10 +315,11 @@ Treat the file as a single binary template.
254 315 # turkGallery
255 316  
256 317 For Amazon Mechanical Turk datasets
  318 +
257 319  
258 320 * **file:** gallery/turk.cpp
259 321 * **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
260   -* **author:** Scott Klum
  322 +* **author(s):** [Scott Klum][sklum]
261 323 * **properties:** None
262 324  
263 325  
... ... @@ -266,11 +328,20 @@ For Amazon Mechanical Turk datasets
266 328 # txtGallery
267 329  
268 330 Treats each line as a file.
  331 +
269 332  
270 333 * **file:** gallery/txt.cpp
271 334 * **inherits:** [FileGallery](../cpp_api/filegallery/filegallery.md)
272   -* **see:** [csvGallery](#csvgallery)
273   -* **author:** Josh Klontz
  335 +* **author(s):** [Josh Klontz][jklontz]
  336 +* **format:** The entire line is treated as the file path. <pre><code>&lt;FILE&gt;
  337 +&lt;FILE&gt;
  338 +...
  339 +&lt;FILE&gt;
  340 +</code></pre>An optional label may be specified using a space ' ' separator: <pre><code>&lt;FILE&gt; &lt;LABEL&gt;
  341 +&lt;FILE&gt; &lt;LABEL&gt;
  342 +...
  343 +&lt;FILE&gt; &lt;LABEL&gt;
  344 +</code></pre>
274 345 * **properties:** None
275 346  
276 347  
... ... @@ -279,10 +350,11 @@ Treats each line as a file.
279 350 # urlGallery
280 351  
281 352 Newline-separated URLs.
  353 +
282 354  
283 355 * **file:** gallery/binary.cpp
284 356 * **inherits:** [BinaryGallery](#binarygallery)
285   -* **author:** Josh Klontz
  357 +* **author(s):** [Josh Klontz][jklontz]
286 358 * **properties:** None
287 359  
288 360  
... ... @@ -291,10 +363,63 @@ Newline-separated URLs.
291 363 # utGallery
292 364  
293 365 A contiguous array of br_universal_template.
  366 +
294 367  
295 368 * **file:** gallery/binary.cpp
296 369 * **inherits:** [BinaryGallery](#binarygallery)
297   -* **author:** Josh Klontz
  370 +* **author(s):** [Josh Klontz][jklontz]
  371 +* **properties:** None
  372 +
  373 +
  374 +---
  375 +
  376 +# vbbGallery
  377 +
  378 +DOCUMENT ME
  379 +
  380 +
  381 +* **file:** gallery/vbb.cpp
  382 +* **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
  383 +* **author(s):** [Unknown][unknown]
  384 +* **properties:** None
  385 +
  386 +
  387 +---
  388 +
  389 +# videoGallery
  390 +
  391 +Read a video frame by frame using cv::VideoCapture
  392 +
  393 +
  394 +* **file:** gallery/video.cpp
  395 +* **inherits:** [Gallery](../cpp_api/gallery/gallery.md)
  396 +* **author(s):** [Unknown][unknown]
  397 +* **properties:** None
  398 +
  399 +
  400 +---
  401 +
  402 +# webcamGallery
  403 +
  404 +Read a video from the webcam
  405 +
  406 +
  407 +* **file:** gallery/video.cpp
  408 +* **inherits:** [videoGallery](#videogallery)
  409 +* **author(s):** [Unknown][unknown]
  410 +* **properties:** None
  411 +
  412 +
  413 +---
  414 +
  415 +# wmvGallery
  416 +
  417 +Read videos of format .wmv
  418 +
  419 +
  420 +* **file:** gallery/video.cpp
  421 +* **inherits:** [videoGallery](#videogallery)
  422 +* **author(s):** [Unknown][unknown]
298 423 * **properties:** None
299 424  
300 425  
... ... @@ -302,11 +427,12 @@ A contiguous array of br_universal_template.
302 427  
303 428 # xmlGallery
304 429  
305   -A
  430 +A sigset input.
  431 +
306 432  
307 433 * **file:** gallery/xml.cpp
308 434 * **inherits:** [FileGallery](../cpp_api/filegallery/filegallery.md)
309   -* **author:** Josh Klontz
  435 +* **author(s):** [Josh Klontz][jklontz]
310 436 * **properties:** None
311 437  
312 438  
... ...
docs/docs/api_docs/plugins/gui.md
1 1 # AdjacentOverlayTransform
2 2  
3 3 Load the image named in the specified property, draw it on the current matrix adjacent to the rect specified in the other property.
  4 +
4 5  
5 6 * **file:** gui/adjacentoverlay.cpp
6 7 * **inherits:** [Transform](../cpp_api/transform/transform.md)
7   -* **author:** Charles Otto
  8 +* **author(s):** [Charles Otto][caotto]
8 9 * **properties:** None
9 10  
10 11  
... ... @@ -13,10 +14,11 @@ Load the image named in the specified property, draw it on the current matrix ad
13 14 # DrawDelaunayTransform
14 15  
15 16 Creates a Delaunay triangulation based on a set of points
  17 +
16 18  
17 19 * **file:** gui/drawdelaunay.cpp
18 20 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
19   -* **author:** Scott Klum
  21 +* **author(s):** [Scott Klum][sklum]
20 22 * **properties:** None
21 23  
22 24  
... ... @@ -25,10 +27,11 @@ Creates a Delaunay triangulation based on a set of points
25 27 # DrawGridLinesTransform
26 28  
27 29 Draws a grid on the image
  30 +
28 31  
29 32 * **file:** gui/drawgridlines.cpp
30 33 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
31   -* **author:** Josh Klontz
  34 +* **author(s):** [Josh Klontz][jklontz]
32 35 * **properties:** None
33 36  
34 37  
... ... @@ -37,10 +40,11 @@ Draws a grid on the image
37 40 # DrawOpticalFlow
38 41  
39 42 Draw a line representing the direction and magnitude of optical flow at the specified points.
  43 +
40 44  
41 45 * **file:** gui/drawopticalflow.cpp
42 46 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
43   -* **author:** Austin Blanton
  47 +* **author(s):** [Austin Blanton][imaus10]
44 48 * **properties:** None
45 49  
46 50  
... ... @@ -50,9 +54,12 @@ Draw a line representing the direction and magnitude of optical flow at the spec
50 54  
51 55 Draw the values of a list of properties at the specified point on the image
52 56  
  57 +The inPlace argument controls whether or not the image is cloned before it is drawn on.
  58 +
  59 +
53 60 * **file:** gui/drawpropertiespoint.cpp
54 61 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
55   -* **author:** Charles Otto
  62 +* **author(s):** [Charles Otto][caotto]
56 63 * **properties:** None
57 64  
58 65  
... ... @@ -62,9 +69,12 @@ Draw the values of a list of properties at the specified point on the image
62 69  
63 70 Draw the value of the specified property at the specified point on the image
64 71  
  72 +The inPlace argument controls whether or not the image is cloned before it is drawn on.
  73 +
  74 +
65 75 * **file:** gui/drawpropertypoint.cpp
66 76 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
67   -* **author:** Charles Otto
  77 +* **author(s):** [Charles Otto][caotto]
68 78 * **properties:** None
69 79  
70 80  
... ... @@ -73,10 +83,11 @@ Draw the value of the specified property at the specified point on the image
73 83 # DrawSegmentation
74 84  
75 85 Fill in the segmentations or draw a line between intersecting segments.
  86 +
76 87  
77 88 * **file:** gui/drawsegmentation.cpp
78 89 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
79   -* **author:** Austin Blanton
  90 +* **author(s):** [Austin Blanton][imaus10]
80 91 * **properties:** None
81 92  
82 93  
... ... @@ -86,9 +97,12 @@ Fill in the segmentations or draw a line between intersecting segments.
86 97  
87 98 Renders metadata onto the image.
88 99  
  100 +The inPlace argument controls whether or not the image is cloned before the metadata is drawn.
  101 +
  102 +
89 103 * **file:** gui/draw.cpp
90 104 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
91   -* **author:** Josh Klontz
  105 +* **author(s):** [Josh Klontz][jklontz]
92 106 * **properties:** None
93 107  
94 108  
... ... @@ -97,10 +111,11 @@ Renders metadata onto the image.
97 111 # ElicitTransform
98 112  
99 113 Elicits metadata for templates in a pretty GUI
  114 +
100 115  
101 116 * **file:** gui/show.cpp
102 117 * **inherits:** [ShowTransform](#showtransform)
103   -* **author:** Scott Klum
  118 +* **author(s):** [Scott Klum][sklum]
104 119 * **properties:** None
105 120  
106 121  
... ... @@ -109,10 +124,12 @@ Elicits metadata for templates in a pretty GUI
109 124 # FPSCalc
110 125  
111 126 Calculates the average FPS of projects going through this transform, stores the result in AvgFPS
  127 +Reports an average FPS from the initialization of this transform onwards.
  128 +
112 129  
113 130 * **file:** gui/show.cpp
114 131 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
115   -* **author:** Charles Otto
  132 +* **author(s):** [Charles Otto][caotto]
116 133 * **properties:** None
117 134  
118 135  
... ... @@ -121,10 +138,24 @@ Calculates the average FPS of projects going through this transform, stores the
121 138 # FPSLimit
122 139  
123 140 Limits the frequency of projects going through this transform to the input targetFPS
  141 +
124 142  
125 143 * **file:** gui/show.cpp
126 144 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
127   -* **author:** Charles Otto
  145 +* **author(s):** [Charles Otto][caotto]
  146 +* **properties:** None
  147 +
  148 +
  149 +---
  150 +
  151 +# FilterTransform
  152 +
  153 +DOCUMENT ME
  154 +
  155 +
  156 +* **file:** gui/show.cpp
  157 +* **inherits:** [ShowTransform](#showtransform)
  158 +* **author(s):** [Unknown][unknown]
128 159 * **properties:** None
129 160  
130 161  
... ... @@ -133,10 +164,13 @@ Limits the frequency of projects going through this transform to the input targe
133 164 # ManualRectsTransform
134 165  
135 166 Manual select rectangular regions on an image.
  167 +Stores marked rectangles as anonymous rectangles, or if a set of labels is provided, prompt the user
  168 +to select one of those labels after drawing each rectangle.
  169 +
136 170  
137 171 * **file:** gui/show.cpp
138 172 * **inherits:** [ShowTransform](#showtransform)
139   -* **author:** Charles Otto
  173 +* **author(s):** [Charles Otto][caotto]
140 174 * **properties:** None
141 175  
142 176  
... ... @@ -145,10 +179,11 @@ Manual select rectangular regions on an image.
145 179 # ManualTransform
146 180  
147 181 Manual selection of landmark locations
  182 +
148 183  
149 184 * **file:** gui/show.cpp
150 185 * **inherits:** [ShowTransform](#showtransform)
151   -* **author:** Scott Klum
  186 +* **author(s):** [Scott Klum][sklum]
152 187 * **properties:** None
153 188  
154 189  
... ... @@ -157,10 +192,11 @@ Manual selection of landmark locations
157 192 # ShowTrainingTransform
158 193  
159 194 Show the training data
  195 +
160 196  
161 197 * **file:** gui/show.cpp
162 198 * **inherits:** [Transform](../cpp_api/transform/transform.md)
163   -* **author:** Josh Klontz
  199 +* **author(s):** [Josh Klontz][jklontz]
164 200 * **properties:** None
165 201  
166 202  
... ... @@ -170,9 +206,12 @@ Show the training data
170 206  
171 207 Displays templates in a GUI pop-up window using QT.
172 208  
  209 +Can be used with parallelism enabled, although it is considered TimeVarying.
  210 +
  211 +
173 212 * **file:** gui/show.cpp
174 213 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
175   -* **author:** Charles Otto
  214 +* **author(s):** [Charles Otto][caotto]
176 215 * **properties:** None
177 216  
178 217  
... ... @@ -181,10 +220,11 @@ Displays templates in a GUI pop-up window using QT.
181 220 # SurveyTransform
182 221  
183 222 Display an image, and asks a yes/no question about it
  223 +
184 224  
185 225 * **file:** gui/show.cpp
186 226 * **inherits:** [ShowTransform](#showtransform)
187   -* **author:** Charles Otto
  227 +* **author(s):** [Charles Otto][caotto]
188 228 * **properties:** None
189 229  
190 230  
... ...
docs/docs/api_docs/plugins/imgproc.md
1 1 # AbsDiffTransform
2 2  
3 3 Take the absolute difference of two matrices.
  4 +
4 5  
5 6 * **file:** imgproc/absdiff.cpp
6 7 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
7   -* **author:** Josh Klontz
  8 +* **author(s):** [Josh Klontz][jklontz]
8 9 * **properties:** None
9 10  
10 11  
... ... @@ -13,10 +14,11 @@ Take the absolute difference of two matrices.
13 14 # AbsTransform
14 15  
15 16 Computes the absolute value of each element.
  17 +
16 18  
17 19 * **file:** imgproc/abs.cpp
18 20 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
19   -* **author:** Josh Klontz
  21 +* **author(s):** [Josh Klontz][jklontz]
20 22 * **properties:** None
21 23  
22 24  
... ... @@ -25,10 +27,12 @@ Computes the absolute value of each element.
25 27 # AdaptiveThresholdTransform
26 28  
27 29 Wraps OpenCV's adaptive thresholding.
  30 +
28 31  
29 32 * **file:** imgproc/adaptivethreshold.cpp
30 33 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
31   -* **author:** Scott Klum
  34 +* **author(s):** [Scott Klum][sklum]
  35 +* **see:** [http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html](http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html)
32 36 * **properties:** None
33 37  
34 38  
... ... @@ -37,10 +41,11 @@ Wraps OpenCV&#39;s adaptive thresholding.
37 41 # AffineTransform
38 42  
39 43 Performs a two or three point registration.
  44 +
40 45  
41 46 * **file:** imgproc/affine.cpp
42 47 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
43   -* **author:** Josh Klontz
  48 +* **author(s):** [Josh Klontz][jklontz]
44 49 * **properties:** None
45 50  
46 51  
... ... @@ -49,10 +54,11 @@ Performs a two or three point registration.
49 54 # AndTransform
50 55  
51 56 Logical AND of two matrices.
  57 +
52 58  
53 59 * **file:** imgproc/and.cpp
54 60 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
55   -* **author:** Josh Klontz
  61 +* **author(s):** [Josh Klontz][jklontz]
56 62 * **properties:** None
57 63  
58 64  
... ... @@ -61,10 +67,11 @@ Logical AND of two matrices.
61 67 # ApplyMaskTransform
62 68  
63 69 Applies a mask from the metadata.
  70 +
64 71  
65 72 * **file:** imgproc/applymask.cpp
66 73 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
67   -* **author:** Austin Blanton
  74 +* **author(s):** [Austin Blanton][imaus10]
68 75 * **properties:** None
69 76  
70 77  
... ... @@ -73,10 +80,11 @@ Applies a mask from the metadata.
73 80 # BayesianQuantizationTransform
74 81  
75 82 Quantize into a space where L1 distance approximates log-likelihood.
  83 +
76 84  
77 85 * **file:** imgproc/bayesianquantization.cpp
78 86 * **inherits:** [Transform](../cpp_api/transform/transform.md)
79   -* **author:** Josh Klontz
  87 +* **author(s):** [Josh Klontz][jklontz]
80 88 * **properties:** None
81 89  
82 90  
... ... @@ -85,10 +93,11 @@ Quantize into a space where L1 distance approximates log-likelihood.
85 93 # BinarizeTransform
86 94  
87 95 Approximate floats as signed bit.
  96 +
88 97  
89 98 * **file:** imgproc/binarize.cpp
90 99 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
91   -* **author:** Josh Klontz
  100 +* **author(s):** [Josh Klontz][jklontz]
92 101 * **properties:** None
93 102  
94 103  
... ... @@ -97,10 +106,11 @@ Approximate floats as signed bit.
97 106 # BlendTransform
98 107  
99 108 Alpha-blend two matrices
  109 +
100 110  
101 111 * **file:** imgproc/blend.cpp
102 112 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
103   -* **author:** Josh Klontz
  113 +* **author(s):** [Josh Klontz][jklontz]
104 114 * **properties:** None
105 115  
106 116  
... ... @@ -109,10 +119,11 @@ Alpha-blend two matrices
109 119 # BlurTransform
110 120  
111 121 Gaussian blur
  122 +
112 123  
113 124 * **file:** imgproc/blur.cpp
114 125 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
115   -* **author:** Josh Klontz
  126 +* **author(s):** [Josh Klontz][jklontz]
116 127 * **properties:** None
117 128  
118 129  
... ... @@ -120,11 +131,12 @@ Gaussian blur
120 131  
121 132 # BuildScalesTransform
122 133  
123   -Document me
  134 +DOCUMENT ME
  135 +
124 136  
125 137 * **file:** imgproc/multiscale.cpp
126 138 * **inherits:** [Transform](../cpp_api/transform/transform.md)
127   -* **author:** Austin Blanton
  139 +* **author(s):** [Austin Blanton][imaus10]
128 140 * **properties:** None
129 141  
130 142  
... ... @@ -133,10 +145,11 @@ Document me
133 145 # ByRowTransform
134 146  
135 147 Turns each row into its own matrix.
  148 +
136 149  
137 150 * **file:** imgproc/byrow.cpp
138 151 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
139   -* **author:** Josh Klontz
  152 +* **author(s):** [Josh Klontz][jklontz]
140 153 * **properties:** None
141 154  
142 155  
... ... @@ -144,11 +157,13 @@ Turns each row into its own matrix.
144 157  
145 158 # CannyTransform
146 159  
147   -Warpper to OpenCV Canny edge detector
  160 +Wrapper to OpenCV Canny edge detector
  161 +
148 162  
149 163 * **file:** imgproc/canny.cpp
150 164 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
151   -* **author:** Scott Klum
  165 +* **author(s):** [Scott Klum][sklum]
  166 +* **see:** [http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html](http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/canny_detector/canny_detector.html)
152 167 * **properties:** None
153 168  
154 169  
... ... @@ -157,10 +172,12 @@ Warpper to OpenCV Canny edge detector
157 172 # CatColsTransform
158 173  
159 174 Concatenates all input matrices by column into a single matrix.
  175 +Use after a fork to concatenate two feature matrices by column.
  176 +
160 177  
161 178 * **file:** imgproc/catcols.cpp
162 179 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
163   -* **author:** Austin Blanton
  180 +* **author(s):** [Austin Blanton][imaus10]
164 181 * **properties:** None
165 182  
166 183  
... ... @@ -169,10 +186,12 @@ Concatenates all input matrices by column into a single matrix.
169 186 # CatRowsTransform
170 187  
171 188 Concatenates all input matrices by row into a single matrix.
  189 +All matricies must have the same column counts.
  190 +
172 191  
173 192 * **file:** imgproc/catrows.cpp
174 193 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
175   -* **author:** Josh Klontz
  194 +* **author(s):** [Josh Klontz][jklontz]
176 195 * **properties:** None
177 196  
178 197  
... ... @@ -181,10 +200,11 @@ Concatenates all input matrices by row into a single matrix.
181 200 # CatTransform
182 201  
183 202 Concatenates all input matrices into a single matrix.
  203 +
184 204  
185 205 * **file:** imgproc/cat.cpp
186 206 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
187   -* **author:** Josh Klontz
  207 +* **author(s):** [Josh Klontz][jklontz]
188 208 * **properties:** None
189 209  
190 210  
... ... @@ -193,10 +213,11 @@ Concatenates all input matrices into a single matrix.
193 213 # CenterTransform
194 214  
195 215 Normalize each dimension based on training data.
  216 +
196 217  
197 218 * **file:** imgproc/center.cpp
198 219 * **inherits:** [Transform](../cpp_api/transform/transform.md)
199   -* **author:** Josh Klontz
  220 +* **author(s):** [Josh Klontz][jklontz]
200 221 * **properties:** None
201 222  
202 223  
... ... @@ -204,11 +225,18 @@ Normalize each dimension based on training data.
204 225  
205 226 # ContrastEqTransform
206 227  
207   -Xiaoyang Tan; Triggs, B.;
  228 +Perform contrast equalization
  229 +
208 230  
209 231 * **file:** imgproc/contrasteq.cpp
210 232 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
211   -* **author:** Josh Klontz
  233 +* **author(s):** [Josh Klontz][jklontz]
  234 +* **read:**
  235 +
  236 + 1. *Xiaoyang Tan; Triggs, B.;*
  237 + **"Enhanced Local Texture Feature Sets for Face Recognition Under Difficult Lighting Conditions,"**
  238 + Image Processing, IEEE Transactions on , vol.19, no.6, pp.1635-1650, June 2010
  239 +
212 240 * **properties:** None
213 241  
214 242  
... ... @@ -217,10 +245,11 @@ Xiaoyang Tan; Triggs, B.;
217 245 # CropBlackTransform
218 246  
219 247 Crop out black borders
  248 +
220 249  
221 250 * **file:** imgproc/cropblack.cpp
222 251 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
223   -* **author:** Josh Klontz
  252 +* **author(s):** [Josh Klontz][jklontz]
224 253 * **properties:** None
225 254  
226 255  
... ... @@ -229,10 +258,11 @@ Crop out black borders
229 258 # CropFromMaskTransform
230 259  
231 260 Crops image based on mask metadata
  261 +
232 262  
233 263 * **file:** imgproc/cropfrommask.cpp
234 264 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
235   -* **author:** Brendan Klare
  265 +* **author(s):** [Brendan Klare][bklare]
236 266 * **properties:** None
237 267  
238 268  
... ... @@ -241,10 +271,11 @@ Crops image based on mask metadata
241 271 # CropSquareTransform
242 272  
243 273 Trim the image so the width and the height are the same size.
  274 +
244 275  
245 276 * **file:** imgproc/cropsquare.cpp
246 277 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
247   -* **author:** Josh Klontz
  278 +* **author(s):** [Josh Klontz][jklontz]
248 279 * **properties:** None
249 280  
250 281  
... ... @@ -253,10 +284,11 @@ Trim the image so the width and the height are the same size.
253 284 # CropTransform
254 285  
255 286 Crops about the specified region of interest.
  287 +
256 288  
257 289 * **file:** imgproc/crop.cpp
258 290 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
259   -* **author:** Josh Klontz
  291 +* **author(s):** [Josh Klontz][jklontz]
260 292 * **properties:** None
261 293  
262 294  
... ... @@ -265,10 +297,12 @@ Crops about the specified region of interest.
265 297 # CryptographicHashTransform
266 298  
267 299 Wraps QCryptographicHash
  300 +
268 301  
269 302 * **file:** imgproc/cryptographichash.cpp
270 303 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
271   -* **author:** Josh Klontz
  304 +* **author(s):** [Josh Klontz][jklontz]
  305 +* **see:** [http://doc.qt.io/qt-5/qcryptographichash.html](http://doc.qt.io/qt-5/qcryptographichash.html)
272 306 * **properties:** None
273 307  
274 308  
... ... @@ -277,10 +311,11 @@ Wraps QCryptographicHash
277 311 # CvtFloatTransform
278 312  
279 313 Convert to floating point format.
  314 +
280 315  
281 316 * **file:** imgproc/cvtfloat.cpp
282 317 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
283   -* **author:** Josh Klontz
  318 +* **author(s):** [Josh Klontz][jklontz]
284 319 * **properties:** None
285 320  
286 321  
... ... @@ -289,10 +324,11 @@ Convert to floating point format.
289 324 # CvtTransform
290 325  
291 326 Colorspace conversion.
  327 +
292 328  
293 329 * **file:** imgproc/cvt.cpp
294 330 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
295   -* **author:** Josh Klontz
  331 +* **author(s):** [Josh Klontz][jklontz]
296 332 * **properties:** None
297 333  
298 334  
... ... @@ -301,10 +337,11 @@ Colorspace conversion.
301 337 # CvtUCharTransform
302 338  
303 339 Convert to uchar format
  340 +
304 341  
305 342 * **file:** imgproc/cvtuchar.cpp
306 343 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
307   -* **author:** Josh Klontz
  344 +* **author(s):** [Josh Klontz][jklontz]
308 345 * **properties:** None
309 346  
310 347  
... ... @@ -313,10 +350,11 @@ Convert to uchar format
313 350 # DiscardAlphaTransform
314 351  
315 352 Drop the alpha channel (if exists).
  353 +
316 354  
317 355 * **file:** imgproc/discardalpha.cpp
318 356 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
319   -* **author:** Austin Blanton
  357 +* **author(s):** [Austin Blanton][imaus10]
320 358 * **properties:** None
321 359  
322 360  
... ... @@ -324,11 +362,12 @@ Drop the alpha channel (if exists).
324 362  
325 363 # DivTransform
326 364  
327   -Enforce a multiple of
  365 +Enforce a multiple of n columns.
  366 +
328 367  
329 368 * **file:** imgproc/div.cpp
330 369 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
331   -* **author:** Josh Klontz
  370 +* **author(s):** [Josh Klontz][jklontz]
332 371 * **properties:** None
333 372  
334 373  
... ... @@ -337,10 +376,11 @@ Enforce a multiple of
337 376 # DoGTransform
338 377  
339 378 Difference of gaussians
  379 +
340 380  
341 381 * **file:** imgproc/dog.cpp
342 382 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
343   -* **author:** Josh Klontz
  383 +* **author(s):** [Josh Klontz][jklontz]
344 384 * **properties:** None
345 385  
346 386  
... ... @@ -349,10 +389,11 @@ Difference of gaussians
349 389 # DownsampleTransform
350 390  
351 391 Downsample the rows and columns of a matrix.
  392 +
352 393  
353 394 * **file:** imgproc/downsample.cpp
354 395 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
355   -* **author:** Lacey Best-Rowden
  396 +* **author(s):** [Lacey Best-Rowden][lbestrowden]
356 397 * **properties:** None
357 398  
358 399  
... ... @@ -360,11 +401,12 @@ Downsample the rows and columns of a matrix.
360 401  
361 402 # DupTransform
362 403  
363   -Duplicates the template data.
  404 +Duplicates the [Template](../cpp_api/template/template.md) data.
  405 +
364 406  
365 407 * **file:** imgproc/dup.cpp
366 408 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
367   -* **author:** Josh Klontz
  409 +* **author(s):** [Josh Klontz][jklontz]
368 410 * **properties:** None
369 411  
370 412  
... ... @@ -373,10 +415,11 @@ Duplicates the template data.
373 415 # EnsureChannelsTransform
374 416  
375 417 Enforce the matrix has a certain number of channels by adding or removing channels.
  418 +
376 419  
377 420 * **file:** imgproc/ensurechannels.cpp
378 421 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
379   -* **author:** Josh Klontz
  422 +* **author(s):** [Josh Klontz][jklontz]
380 423 * **properties:** None
381 424  
382 425  
... ... @@ -385,10 +428,11 @@ Enforce the matrix has a certain number of channels by adding or removing channe
385 428 # EqualizeHistTransform
386 429  
387 430 Histogram equalization
  431 +
388 432  
389 433 * **file:** imgproc/equalizehist.cpp
390 434 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
391   -* **author:** Josh Klontz
  435 +* **author(s):** [Josh Klontz][jklontz]
392 436 * **properties:** None
393 437  
394 438  
... ... @@ -397,10 +441,11 @@ Histogram equalization
397 441 # FlipTransform
398 442  
399 443 Flips the image about an axis.
  444 +
400 445  
401 446 * **file:** imgproc/flip.cpp
402 447 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
403   -* **author:** Josh Klontz
  448 +* **author(s):** [Josh Klontz][jklontz]
404 449 * **properties:** None
405 450  
406 451  
... ... @@ -409,10 +454,11 @@ Flips the image about an axis.
409 454 # FloodTransform
410 455  
411 456 Fill black pixels with the specified color.
  457 +
412 458  
413 459 * **file:** imgproc/flood.cpp
414 460 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
415   -* **author:** Josh Klontz
  461 +* **author(s):** [Josh Klontz][jklontz]
416 462 * **properties:** None
417 463  
418 464  
... ... @@ -421,10 +467,11 @@ Fill black pixels with the specified color.
421 467 # GaborJetTransform
422 468  
423 469 A vector of gabor wavelets applied at a point.
  470 +
424 471  
425 472 * **file:** imgproc/gabor.cpp
426 473 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
427   -* **author:** Josh Klontz
  474 +* **author(s):** [Josh Klontz][jklontz]
428 475 * **properties:** None
429 476  
430 477  
... ... @@ -432,11 +479,13 @@ A vector of gabor wavelets applied at a point.
432 479  
433 480 # GaborTransform
434 481  
435   -http://en.wikipedia.org/wiki/Gabor_filter
  482 +Implements a Gabor Filter
  483 +
436 484  
437 485 * **file:** imgproc/gabor.cpp
438 486 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
439   -* **author:** Josh Klontz
  487 +* **author(s):** [Josh Klontz][jklontz]
  488 +* **see:** [http://en.wikipedia.org/wiki/Gabor_filter](http://en.wikipedia.org/wiki/Gabor_filter)
440 489 * **properties:** None
441 490  
442 491  
... ... @@ -445,10 +494,11 @@ http://en.wikipedia.org/wiki/Gabor_filter
445 494 # GammaTransform
446 495  
447 496 Gamma correction
  497 +
448 498  
449 499 * **file:** imgproc/gamma.cpp
450 500 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
451   -* **author:** Josh Klontz
  501 +* **author(s):** [Josh Klontz][jklontz]
452 502 * **properties:** None
453 503  
454 504  
... ... @@ -457,10 +507,11 @@ Gamma correction
457 507 # GradientMaskTransform
458 508  
459 509 Masks image according to pixel change.
  510 +
460 511  
461 512 * **file:** imgproc/gradientmask.cpp
462 513 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
463   -* **author:** Josh Klontz
  514 +* **author(s):** [Josh Klontz][jklontz]
464 515 * **properties:** None
465 516  
466 517  
... ... @@ -469,10 +520,11 @@ Masks image according to pixel change.
469 520 # GradientTransform
470 521  
471 522 Computes magnitude and/or angle of image.
  523 +
472 524  
473 525 * **file:** imgproc/gradient.cpp
474 526 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
475   -* **author:** Josh Klontz
  527 +* **author(s):** [Josh Klontz][jklontz]
476 528 * **properties:** None
477 529  
478 530  
... ... @@ -482,9 +534,25 @@ Computes magnitude and/or angle of image.
482 534  
483 535 Group all input matrices into a single matrix.
484 536  
  537 +Similar to CatTransfrom but groups every _size_ adjacent matricies.
  538 +
  539 +
485 540 * **file:** imgproc/group.cpp
486 541 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
487   -* **author:** Josh Klontz
  542 +* **author(s):** [Josh Klontz][jklontz]
  543 +* **properties:** None
  544 +
  545 +
  546 +---
  547 +
  548 +# HeatmapTransform
  549 +
  550 +DOCUMENT ME
  551 +
  552 +
  553 +* **file:** imgproc/heatmap.cpp
  554 +* **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
  555 +* **author(s):** [Unknown][unknown]
488 556 * **properties:** None
489 557  
490 558  
... ... @@ -493,10 +561,11 @@ Group all input matrices into a single matrix.
493 561 # HistBinTransform
494 562  
495 563 Quantizes the values into bins.
  564 +
496 565  
497 566 * **file:** imgproc/histbin.cpp
498 567 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
499   -* **author:** Josh Klontz
  568 +* **author(s):** [Josh Klontz][jklontz]
500 569 * **properties:** None
501 570  
502 571  
... ... @@ -505,10 +574,11 @@ Quantizes the values into bins.
505 574 # HistEqQuantizationTransform
506 575  
507 576 Approximate floats as uchar with different scalings for each dimension.
  577 +
508 578  
509 579 * **file:** imgproc/histeqquantization.cpp
510 580 * **inherits:** [Transform](../cpp_api/transform/transform.md)
511   -* **author:** Josh Klontz
  581 +* **author(s):** [Josh Klontz][jklontz]
512 582 * **properties:** None
513 583  
514 584  
... ... @@ -517,10 +587,11 @@ Approximate floats as uchar with different scalings for each dimension.
517 587 # HistTransform
518 588  
519 589 Histograms the matrix
  590 +
520 591  
521 592 * **file:** imgproc/hist.cpp
522 593 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
523   -* **author:** Josh Klontz
  594 +* **author(s):** [Josh Klontz][jklontz]
524 595 * **properties:** None
525 596  
526 597  
... ... @@ -529,10 +600,12 @@ Histograms the matrix
529 600 # HoGDescriptorTransform
530 601  
531 602 OpenCV HOGDescriptor wrapper
  603 +
532 604  
533 605 * **file:** imgproc/hog.cpp
534 606 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
535   -* **author:** Austin Blanton
  607 +* **author(s):** [Austin Blanton][imaus10]
  608 +* **see:** [http://docs.opencv.org/modules/gpu/doc/object_detection.html](http://docs.opencv.org/modules/gpu/doc/object_detection.html)
536 609 * **properties:** None
537 610  
538 611  
... ... @@ -541,10 +614,12 @@ OpenCV HOGDescriptor wrapper
541 614 # InpaintTransform
542 615  
543 616 Wraps OpenCV inpainting
  617 +
544 618  
545 619 * **file:** imgproc/inpaint.cpp
546 620 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
547   -* **author:** Josh Klontz
  621 +* **author(s):** [Josh Klontz][jklontz]
  622 +* **see:** [http://docs.opencv.org/modules/photo/doc/inpainting.html](http://docs.opencv.org/modules/photo/doc/inpainting.html)
548 623 * **properties:** None
549 624  
550 625  
... ... @@ -553,10 +628,11 @@ Wraps OpenCV inpainting
553 628 # IntegralHistTransform
554 629  
555 630 An integral histogram
  631 +
556 632  
557 633 * **file:** imgproc/integralhist.cpp
558 634 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
559   -* **author:** Josh Klontz
  635 +* **author(s):** [Josh Klontz][jklontz]
560 636 * **properties:** None
561 637  
562 638  
... ... @@ -565,10 +641,11 @@ An integral histogram
565 641 # IntegralSamplerTransform
566 642  
567 643 Sliding window feature extraction from a multi-channel integral image.
  644 +
568 645  
569 646 * **file:** imgproc/integralsampler.cpp
570 647 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
571   -* **author:** Josh Klontz
  648 +* **author(s):** [Josh Klontz][jklontz]
572 649 * **properties:** None
573 650  
574 651  
... ... @@ -577,10 +654,12 @@ Sliding window feature extraction from a multi-channel integral image.
577 654 # IntegralSlidingWindowTransform
578 655  
579 656 Overloads SlidingWindowTransform for integral images that should be
  657 +sampled at multiple scales.
  658 +
580 659  
581 660 * **file:** imgproc/slidingwindow.cpp
582 661 * **inherits:** [SlidingWindowTransform](#slidingwindowtransform)
583   -* **author:** Josh Klontz
  662 +* **author(s):** [Josh Klontz][jklontz]
584 663 * **properties:** None
585 664  
586 665  
... ... @@ -589,10 +668,11 @@ Overloads SlidingWindowTransform for integral images that should be
589 668 # IntegralTransform
590 669  
591 670 Computes integral image.
  671 +
592 672  
593 673 * **file:** imgproc/integral.cpp
594 674 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
595   -* **author:** Josh Klontz
  675 +* **author(s):** [Josh Klontz][jklontz]
596 676 * **properties:** None
597 677  
598 678  
... ... @@ -601,10 +681,11 @@ Computes integral image.
601 681 # KernelHashTransform
602 682  
603 683 Kernel hash
  684 +
604 685  
605 686 * **file:** imgproc/kernelhash.cpp
606 687 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
607   -* **author:** Josh Klontz
  688 +* **author(s):** [Josh Klontz][jklontz]
608 689 * **properties:** None
609 690  
610 691  
... ... @@ -613,10 +694,12 @@ Kernel hash
613 694 # KeyPointDescriptorTransform
614 695  
615 696 Wraps OpenCV Key Point Descriptor
  697 +
616 698  
617 699 * **file:** imgproc/keypointdescriptor.cpp
618 700 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
619   -* **author:** Josh Klontz
  701 +* **author(s):** [Josh Klontz][jklontz]
  702 +* **see:** [http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html](http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html)
620 703 * **properties:** None
621 704  
622 705  
... ... @@ -624,11 +707,18 @@ Wraps OpenCV Key Point Descriptor
624 707  
625 708 # LBPTransform
626 709  
627   -Ahonen, T.; Hadid, A.; Pietikainen, M.;
  710 +Convert the image into a feature vector using Local Binary Patterns
  711 +
628 712  
629 713 * **file:** imgproc/lbp.cpp
630 714 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
631   -* **author:** Josh Klontz
  715 +* **author(s):** [Josh Klontz][jklontz]
  716 +* **read:**
  717 +
  718 + 1. *Ahonen, T.; Hadid, A.; Pietikainen, M.;*
  719 + **"Face Description with Local Binary Patterns: Application to Face Recognition"**
  720 + Pattern Analysis and Machine Intelligence, IEEE Transactions, vol.28, no.12, pp.2037-2041, Dec. 2006
  721 +
632 722 * **properties:** None
633 723  
634 724  
... ... @@ -636,11 +726,18 @@ Ahonen, T.; Hadid, A.; Pietikainen, M.;
636 726  
637 727 # LTPTransform
638 728  
639   -Tan, Xiaoyang, and Bill Triggs. "Enhanced local texture feature sets for face recognition under difficult lighting conditions." Analysis and Modeling of Faces and Gestures. Springer Berlin Heidelberg, 2007. 168-182.
  729 +DOCUMENT ME
  730 +
640 731  
641 732 * **file:** imgproc/ltp.cpp
642 733 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
643   -* **authors:** Brendan Klare, Josh Klontz
  734 +* **author(s):** [Brendan Klare][bklare], [Josh Klontz][jklontz]
  735 +* **read:**
  736 +
  737 + 1. *Tan, Xiaoyang, and Bill Triggs.*
  738 + **"Enhanced local texture feature sets for face recognition under difficult lighting conditions."**
  739 + Analysis and Modeling of Faces and Gestures. Springer Berlin Heidelberg, 2007. 168-182.
  740 +
644 741 * **properties:** None
645 742  
646 743  
... ... @@ -649,10 +746,11 @@ Tan, Xiaoyang, and Bill Triggs. &quot;Enhanced local texture feature sets for face re
649 746 # LargestConvexAreaTransform
650 747  
651 748 Set the template's label to the area of the largest convex hull.
  749 +
652 750  
653 751 * **file:** imgproc/largestconvexarea.cpp
654 752 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
655   -* **author:** Josh Klontz
  753 +* **author(s):** [Josh Klontz][jklontz]
656 754 * **properties:** None
657 755  
658 756  
... ... @@ -661,10 +759,11 @@ Set the template&#39;s label to the area of the largest convex hull.
661 759 # LimitSizeTransform
662 760  
663 761 Limit the size of the template
  762 +
664 763  
665 764 * **file:** imgproc/limitsize.cpp
666 765 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
667   -* **author:** Josh Klontz
  766 +* **author(s):** [Josh Klontz][jklontz]
668 767 * **properties:** None
669 768  
670 769  
... ... @@ -672,11 +771,12 @@ Limit the size of the template
672 771  
673 772 # MAddTransform
674 773  
675   -dst = a*src+b
  774 +dst = a src+b
  775 +
676 776  
677 777 * **file:** imgproc/madd.cpp
678 778 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
679   -* **author:** Josh Klontz
  779 +* **author(s):** [Josh Klontz][jklontz]
680 780 * **properties:** None
681 781  
682 782  
... ... @@ -685,10 +785,11 @@ dst = a*src+b
685 785 # MaskTransform
686 786  
687 787 Applies an eliptical mask
  788 +
688 789  
689 790 * **file:** imgproc/mask.cpp
690 791 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
691   -* **author:** Josh Klontz
  792 +* **author(s):** [Josh Klontz][jklontz]
692 793 * **properties:** None
693 794  
694 795  
... ... @@ -697,10 +798,11 @@ Applies an eliptical mask
697 798 # MatStatsTransform
698 799  
699 800 Statistics
  801 +
700 802  
701 803 * **file:** imgproc/matstats.cpp
702 804 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
703   -* **author:** Josh Klontz
  805 +* **author(s):** [Josh Klontz][jklontz]
704 806 * **properties:** None
705 807  
706 808  
... ... @@ -709,10 +811,11 @@ Statistics
709 811 # MeanFillTransform
710 812  
711 813 Fill 0 pixels with the mean of non-0 pixels.
  814 +
712 815  
713 816 * **file:** imgproc/meanfill.cpp
714 817 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
715   -* **author:** Josh Klontz
  818 +* **author(s):** [Josh Klontz][jklontz]
716 819 * **properties:** None
717 820  
718 821  
... ... @@ -722,9 +825,12 @@ Fill 0 pixels with the mean of non-0 pixels.
722 825  
723 826 Computes the mean of a set of templates.
724 827  
  828 +Suitable for visualization only as it sets every projected template to the mean template.
  829 +
  830 +
725 831 * **file:** imgproc/mean.cpp
726 832 * **inherits:** [Transform](../cpp_api/transform/transform.md)
727   -* **author:** Scott Klum
  833 +* **author(s):** [Scott Klum][sklum]
728 834 * **properties:** None
729 835  
730 836  
... ... @@ -733,10 +839,12 @@ Computes the mean of a set of templates.
733 839 # MergeTransform
734 840  
735 841 Wraps OpenCV merge
  842 +
736 843  
737 844 * **file:** imgproc/merge.cpp
738 845 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
739   -* **author:** Josh Klontz
  846 +* **author(s):** [Josh Klontz][jklontz]
  847 +* **see:** [http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#merge](http://docs.opencv.org/modules/core/doc/operations_on_arrays.html#merge)
740 848 * **properties:** None
741 849  
742 850  
... ... @@ -745,10 +853,11 @@ Wraps OpenCV merge
745 853 # MorphTransform
746 854  
747 855 Morphological operator
  856 +
748 857  
749 858 * **file:** imgproc/morph.cpp
750 859 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
751   -* **author:** Josh Klontz
  860 +* **author(s):** [Josh Klontz][jklontz]
752 861 * **properties:** None
753 862  
754 863  
... ... @@ -757,10 +866,12 @@ Morphological operator
757 866 # NLMeansDenoisingTransform
758 867  
759 868 Wraps OpenCV Non-Local Means Denoising
  869 +
760 870  
761 871 * **file:** imgproc/denoising.cpp
762 872 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
763   -* **author:** Josh Klontz
  873 +* **author(s):** [Josh Klontz][jklontz]
  874 +* **see:** [http://docs.opencv.org/modules/photo/doc/denoising.html](http://docs.opencv.org/modules/photo/doc/denoising.html)
764 875 * **properties:** None
765 876  
766 877  
... ... @@ -769,29 +880,31 @@ Wraps OpenCV Non-Local Means Denoising
769 880 # NormalizeTransform
770 881  
771 882 Normalize matrix to unit length
  883 +
772 884  
773 885 * **file:** imgproc/normalize.cpp
774 886 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
775   -* **author:** Josh Klontz
  887 +* **author(s):** [Josh Klontz][jklontz]
776 888 * **properties:**
777 889  
778   -Property | Type | Description
779   ---- | --- | ---
780   -NormType | enum | Values are NORM_INF, NORM_L1, NORM_L2, NORM_MINMAX
781   -ByRow | bool | If true normalize each row independently otherwise normalize the entire matrix.
782   -alpha | int | Lower bound if using NORM_MINMAX. Value to normalize to otherwise.
783   -beta | int | Upper bound if using NORM_MINMAX. Not used otherwise.
784   -squareRoot | bool | If true compute the signed square root of the output after normalization.
  890 + Property | Type | Description
  891 + --- | --- | ---
  892 + NormType | enum | Values are:<ul><li>NORM_INF</li><li>NORM_L1</li><li>NORM_L2</li><li>NORM_MINMAX</li></ul>
  893 + ByRow | bool | If true normalize each row independently otherwise normalize the entire matrix.
  894 + alpha | int | Lower bound if using NORM_MINMAX. Value to normalize to otherwise.
  895 + beta | int | Upper bound if using NORM_MINMAX. Not used otherwise.
  896 + squareRoot | bool | If true compute the signed square root of the output after normalization.
785 897  
786 898 ---
787 899  
788 900 # OrigLinearRegressionTransform
789 901  
790 902 Prediction with magic numbers from jmp; must get input as blue;green;red
  903 +
791 904  
792 905 * **file:** imgproc/origlinearregression.cpp
793 906 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
794   -* **author:** E. Taborsky
  907 +* **author(s):** [E. Taborsky][mmtaborsky]
795 908 * **properties:** None
796 909  
797 910  
... ... @@ -800,10 +913,11 @@ Prediction with magic numbers from jmp; must get input as blue;green;red
800 913 # PackTransform
801 914  
802 915 Compress two uchar into one uchar.
  916 +
803 917  
804 918 * **file:** imgproc/pack.cpp
805 919 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
806   -* **author:** Josh Klontz
  920 +* **author(s):** [Josh Klontz][jklontz]
807 921 * **properties:** None
808 922  
809 923  
... ... @@ -812,10 +926,11 @@ Compress two uchar into one uchar.
812 926 # PowTransform
813 927  
814 928 Raise each element to the specified power.
  929 +
815 930  
816 931 * **file:** imgproc/pow.cpp
817 932 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
818   -* **author:** Josh Klontz
  933 +* **author(s):** [Josh Klontz][jklontz]
819 934 * **properties:** None
820 935  
821 936  
... ... @@ -824,10 +939,17 @@ Raise each element to the specified power.
824 939 # ProductQuantizationDistance
825 940  
826 941 Distance in a product quantized space
  942 +
827 943  
828 944 * **file:** imgproc/productquantization.cpp
829 945 * **inherits:** [UntrainableDistance](../cpp_api/untrainabledistance/untrainabledistance.md)
830   -* **author:** Josh Klontz
  946 +* **author(s):** [Josh Klontz][jklontz]
  947 +* **read:**
  948 +
  949 + 1. *Jegou, Herve, Matthijs Douze, and Cordelia Schmid.*
  950 + **"Product quantization for nearest neighbor search."**
  951 + Pattern Analysis and Machine Intelligence, IEEE Transactions on 33.1 (2011): 117-128
  952 +
831 953 * **properties:** None
832 954  
833 955  
... ... @@ -836,10 +958,17 @@ Distance in a product quantized space
836 958 # ProductQuantizationTransform
837 959  
838 960 Product quantization
  961 +
839 962  
840 963 * **file:** imgproc/productquantization.cpp
841 964 * **inherits:** [Transform](../cpp_api/transform/transform.md)
842   -* **author:** Josh Klontz
  965 +* **author(s):** [Josh Klontz][jklontz]
  966 +* **read:**
  967 +
  968 + 1. *Jegou, Herve, Matthijs Douze, and Cordelia Schmid.*
  969 + **"Product quantization for nearest neighbor search."**
  970 + Pattern Analysis and Machine Intelligence, IEEE Transactions on 33.1 (2011): 117-128
  971 +
843 972 * **properties:** None
844 973  
845 974  
... ... @@ -848,10 +977,11 @@ Product quantization
848 977 # QuantizeTransform
849 978  
850 979 Approximate floats as uchar.
  980 +
851 981  
852 982 * **file:** imgproc/quantize.cpp
853 983 * **inherits:** [Transform](../cpp_api/transform/transform.md)
854   -* **author:** Josh Klontz
  984 +* **author(s):** [Josh Klontz][jklontz]
855 985 * **properties:** None
856 986  
857 987  
... ... @@ -860,10 +990,11 @@ Approximate floats as uchar.
860 990 # RGTransform
861 991  
862 992 Normalized RG color space.
  993 +
863 994  
864 995 * **file:** imgproc/rg.cpp
865 996 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
866   -* **author:** Josh Klontz
  997 +* **author(s):** [Josh Klontz][jklontz]
867 998 * **properties:** None
868 999  
869 1000  
... ... @@ -872,10 +1003,11 @@ Normalized RG color space.
872 1003 # ROIFromPtsTransform
873 1004  
874 1005 Crops the rectangular regions of interest from given points and sizes.
  1006 +
875 1007  
876 1008 * **file:** imgproc/roifrompoints.cpp
877 1009 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
878   -* **author:** Austin Blanton
  1010 +* **author(s):** [Austin Blanton][imaus10]
879 1011 * **properties:** None
880 1012  
881 1013  
... ... @@ -884,10 +1016,11 @@ Crops the rectangular regions of interest from given points and sizes.
884 1016 # ROITransform
885 1017  
886 1018 Crops the rectangular regions of interest.
  1019 +
887 1020  
888 1021 * **file:** imgproc/roi.cpp
889 1022 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
890   -* **author:** Josh Klontz
  1023 +* **author(s):** [Josh Klontz][jklontz]
891 1024 * **properties:** None
892 1025  
893 1026  
... ... @@ -896,10 +1029,11 @@ Crops the rectangular regions of interest.
896 1029 # RankTransform
897 1030  
898 1031 Converts each element to its rank-ordered value.
  1032 +
899 1033  
900 1034 * **file:** imgproc/rank.cpp
901 1035 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
902   -* **author:** Josh Klontz
  1036 +* **author(s):** [Josh Klontz][jklontz]
903 1037 * **properties:** None
904 1038  
905 1039  
... ... @@ -908,10 +1042,11 @@ Converts each element to its rank-ordered value.
908 1042 # RectRegionsTransform
909 1043  
910 1044 Subdivide matrix into rectangular subregions.
  1045 +
911 1046  
912 1047 * **file:** imgproc/rectregions.cpp
913 1048 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
914   -* **author:** Josh Klontz
  1049 +* **author(s):** [Josh Klontz][jklontz]
915 1050 * **properties:** None
916 1051  
917 1052  
... ... @@ -919,11 +1054,12 @@ Subdivide matrix into rectangular subregions.
919 1054  
920 1055 # RecursiveIntegralSamplerTransform
921 1056  
922   -Construct template in a recursive decent manner.
  1057 +Construct [Template](../cpp_api/template/template.md) in a recursive decent manner.
  1058 +
923 1059  
924 1060 * **file:** imgproc/recursiveintegralsampler.cpp
925 1061 * **inherits:** [Transform](../cpp_api/transform/transform.md)
926   -* **author:** Josh Klontz
  1062 +* **author(s):** [Josh Klontz][jklontz]
927 1063 * **properties:** None
928 1064  
929 1065  
... ... @@ -932,10 +1068,11 @@ Construct template in a recursive decent manner.
932 1068 # RedLinearRegressionTransform
933 1069  
934 1070 Prediction using only the red wavelength; magic numbers from jmp
  1071 +
935 1072  
936 1073 * **file:** imgproc/redlinearregression.cpp
937 1074 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
938   -* **author:** E. Taborsky
  1075 +* **author(s):** [E. Taborsky][mmtaborsky]
939 1076 * **properties:** None
940 1077  
941 1078  
... ... @@ -943,11 +1080,12 @@ Prediction using only the red wavelength; magic numbers from jmp
943 1080  
944 1081 # ReshapeTransform
945 1082  
946   -Reshape the each matrix to the specified number of rows.
  1083 +Reshape each matrix to the specified number of rows.
  1084 +
947 1085  
948 1086 * **file:** imgproc/reshape.cpp
949 1087 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
950   -* **author:** Josh Klontz
  1088 +* **author(s):** [Josh Klontz][jklontz]
951 1089 * **properties:** None
952 1090  
953 1091  
... ... @@ -956,22 +1094,31 @@ Reshape the each matrix to the specified number of rows.
956 1094 # ResizeTransform
957 1095  
958 1096 Resize the template
  1097 +
959 1098  
960 1099 * **file:** imgproc/resize.cpp
961 1100 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
962   -* **author:** Josh Klontz
963   -* **properties:** None
  1101 +* **author(s):** [Josh Klontz][jklontz]
  1102 +* **properties:**
964 1103  
  1104 + Property | Type | Description
  1105 + --- | --- | ---
  1106 + method | enum | Resize method. Good options are:<ul><li>Area should be used for shrinking an image</li><li>Cubic for slow but accurate enlargment</li><li>Bilin for fast enlargement</li></ul>
  1107 + preserveAspect | bool | If true, the image will be sized per specification, but a border will be applied to preserve aspect ratio.
965 1108  
966 1109 ---
967 1110  
968 1111 # RevertAffineTransform
969 1112  
970 1113 Designed for use after eye detection + Stasm, this will
  1114 +revert the detected landmarks to the original coordinate space
  1115 +before affine alignment to the stasm mean shape. The storeAffine
  1116 +parameter must be set to true when calling AffineTransform before this.
  1117 +
971 1118  
972 1119 * **file:** imgproc/revertaffine.cpp
973 1120 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
974   -* **author:** Brendan Klare
  1121 +* **author(s):** [Brendan Klare][bklare]
975 1122 * **properties:** None
976 1123  
977 1124  
... ... @@ -980,10 +1127,11 @@ Designed for use after eye detection + Stasm, this will
980 1127 # RndPointTransform
981 1128  
982 1129 Generates a random landmark.
  1130 +
983 1131  
984 1132 * **file:** imgproc/rndpoint.cpp
985 1133 * **inherits:** [Transform](../cpp_api/transform/transform.md)
986   -* **author:** Josh Klontz
  1134 +* **author(s):** [Josh Klontz][jklontz]
987 1135 * **properties:** None
988 1136  
989 1137  
... ... @@ -992,10 +1140,11 @@ Generates a random landmark.
992 1140 # RndRegionTransform
993 1141  
994 1142 Selects a random region.
  1143 +
995 1144  
996 1145 * **file:** imgproc/rndregion.cpp
997 1146 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
998   -* **author:** Josh Klontz
  1147 +* **author(s):** [Josh Klontz][jklontz]
999 1148 * **properties:** None
1000 1149  
1001 1150  
... ... @@ -1004,10 +1153,11 @@ Selects a random region.
1004 1153 # RndRotateTransform
1005 1154  
1006 1155 Randomly rotates an image in a specified range.
  1156 +
1007 1157  
1008 1158 * **file:** imgproc/rndrotate.cpp
1009 1159 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1010   -* **author:** Scott Klum
  1160 +* **author(s):** [Scott Klum][sklum]
1011 1161 * **properties:** None
1012 1162  
1013 1163  
... ... @@ -1016,10 +1166,11 @@ Randomly rotates an image in a specified range.
1016 1166 # RndSubspaceTransform
1017 1167  
1018 1168 Generates a random subspace.
  1169 +
1019 1170  
1020 1171 * **file:** imgproc/rndsubspace.cpp
1021 1172 * **inherits:** [Transform](../cpp_api/transform/transform.md)
1022   -* **author:** Josh Klontz
  1173 +* **author(s):** [Josh Klontz][jklontz]
1023 1174 * **properties:** None
1024 1175  
1025 1176  
... ... @@ -1027,11 +1178,18 @@ Generates a random subspace.
1027 1178  
1028 1179 # RootNormTransform
1029 1180  
1030   -dst=sqrt(norm_L1(src)) proposed as RootSIFT in
  1181 +dst=sqrt(norm_L1(src)) proposed as RootSIFT (see paper)
  1182 +
1031 1183  
1032 1184 * **file:** imgproc/rootnorm.cpp
1033 1185 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1034   -* **author:** Josh Klontz
  1186 +* **author(s):** [Josh Klontz][jklontz]
  1187 +* **read:**
  1188 +
  1189 + 1. *Arandjelovic, Relja, and Andrew Zisserman.*
  1190 + **"Three things everyone should know to improve object retrieval."**
  1191 + Computer Vision and Pattern Recognition (CVPR), 2012 IEEE Conference on. IEEE, 2012.
  1192 +
1035 1193 * **properties:** None
1036 1194  
1037 1195  
... ... @@ -1040,10 +1198,11 @@ dst=sqrt(norm_L1(src)) proposed as RootSIFT in
1040 1198 # RowWiseMeanCenterTransform
1041 1199  
1042 1200 Remove the row-wise training set average.
  1201 +
1043 1202  
1044 1203 * **file:** imgproc/rowwisemeancenter.cpp
1045 1204 * **inherits:** [Transform](../cpp_api/transform/transform.md)
1046   -* **author:** Josh Klontz
  1205 +* **author(s):** [Josh Klontz][jklontz]
1047 1206 * **properties:** None
1048 1207  
1049 1208  
... ... @@ -1052,10 +1211,12 @@ Remove the row-wise training set average.
1052 1211 # SIFTDescriptorTransform
1053 1212  
1054 1213 Specialize wrapper OpenCV SIFT wrapper
  1214 +
1055 1215  
1056 1216 * **file:** imgproc/sift.cpp
1057 1217 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1058   -* **author:** Josh Klontz
  1218 +* **author(s):** [Josh Klontz][jklontz]
  1219 +* **see:** [http://docs.opencv.org/modules/nonfree/doc/feature_detection.html](http://docs.opencv.org/modules/nonfree/doc/feature_detection.html)
1059 1220 * **properties:** None
1060 1221  
1061 1222  
... ... @@ -1064,10 +1225,11 @@ Specialize wrapper OpenCV SIFT wrapper
1064 1225 # SampleFromMaskTransform
1065 1226  
1066 1227 Samples pixels from a mask.
  1228 +
1067 1229  
1068 1230 * **file:** imgproc/samplefrommask.cpp
1069 1231 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1070   -* **author:** Scott Klum
  1232 +* **author(s):** [Scott Klum][sklum]
1071 1233 * **properties:** None
1072 1234  
1073 1235  
... ... @@ -1076,10 +1238,11 @@ Samples pixels from a mask.
1076 1238 # ScaleTransform
1077 1239  
1078 1240 Scales using the given factor
  1241 +
1079 1242  
1080 1243 * **file:** imgproc/scale.cpp
1081 1244 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1082   -* **author:** Scott Klum
  1245 +* **author(s):** [Scott Klum][sklum]
1083 1246 * **properties:** None
1084 1247  
1085 1248  
... ... @@ -1087,11 +1250,13 @@ Scales using the given factor
1087 1250  
1088 1251 # SkinMaskTransform
1089 1252  
1090   -http://worldofcameras.wordpress.com/tag/skin-detection-opencv/
  1253 +Make a mask over skin in an image
  1254 +
1091 1255  
1092 1256 * **file:** imgproc/skinmask.cpp
1093 1257 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1094   -* **author:** Josh Klontz
  1258 +* **author(s):** [Josh Klontz][jklontz]
  1259 +* **see:** [http://worldofcameras.wordpress.com/tag/skin-detection-opencv/](http://worldofcameras.wordpress.com/tag/skin-detection-opencv/)
1095 1260 * **properties:** None
1096 1261  
1097 1262  
... ... @@ -1100,10 +1265,12 @@ http://worldofcameras.wordpress.com/tag/skin-detection-opencv/
1100 1265 # SlidingWindowTransform
1101 1266  
1102 1267 Applies a transform to a sliding window.
  1268 +Discards negative detections.
  1269 +
1103 1270  
1104 1271 * **file:** imgproc/slidingwindow.cpp
1105 1272 * **inherits:** [Transform](../cpp_api/transform/transform.md)
1106   -* **author:** Austin Blanton
  1273 +* **author(s):** [Austin Blanton][imaus10]
1107 1274 * **properties:** None
1108 1275  
1109 1276  
... ... @@ -1112,10 +1279,11 @@ Applies a transform to a sliding window.
1112 1279 # SplitChannelsTransform
1113 1280  
1114 1281 Split a multi-channel matrix into several single-channel matrices.
  1282 +
1115 1283  
1116 1284 * **file:** imgproc/splitchannels.cpp
1117 1285 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1118   -* **author:** Josh Klontz
  1286 +* **author(s):** [Josh Klontz][jklontz]
1119 1287 * **properties:** None
1120 1288  
1121 1289  
... ... @@ -1124,10 +1292,11 @@ Split a multi-channel matrix into several single-channel matrices.
1124 1292 # SubdivideTransform
1125 1293  
1126 1294 Divide the matrix into 4 smaller matricies of equal size.
  1295 +
1127 1296  
1128 1297 * **file:** imgproc/subdivide.cpp
1129 1298 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1130   -* **author:** Josh Klontz
  1299 +* **author(s):** [Josh Klontz][jklontz]
1131 1300 * **properties:** None
1132 1301  
1133 1302  
... ... @@ -1136,10 +1305,11 @@ Divide the matrix into 4 smaller matricies of equal size.
1136 1305 # SubtractTransform
1137 1306  
1138 1307 Subtract two matrices.
  1308 +
1139 1309  
1140 1310 * **file:** imgproc/subtract.cpp
1141 1311 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
1142   -* **author:** Josh Klontz
  1312 +* **author(s):** [Josh Klontz][jklontz]
1143 1313 * **properties:** None
1144 1314  
1145 1315  
... ... @@ -1148,10 +1318,25 @@ Subtract two matrices.
1148 1318 # ThresholdTransform
1149 1319  
1150 1320 Wraps OpenCV's adaptive thresholding.
  1321 +
1151 1322  
1152 1323 * **file:** imgproc/threshold.cpp
1153 1324 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1154   -* **author:** Scott Klum
  1325 +* **author(s):** [Scott Klum][sklum]
  1326 +* **see:** [http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html](http://docs.opencv.org/modules/imgproc/doc/miscellaneous_transformations.html)
  1327 +* **properties:** None
  1328 +
  1329 +
  1330 +---
  1331 +
  1332 +# TransposeTransform
  1333 +
  1334 +Get the transpose of the [Template](../cpp_api/template/template.md) matrix
  1335 +
  1336 +
  1337 +* **file:** imgproc/transpose.cpp
  1338 +* **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
  1339 +* **author(s):** [Unknown][unknown]
1155 1340 * **properties:** None
1156 1341  
1157 1342  
... ... @@ -1160,10 +1345,11 @@ Wraps OpenCV&#39;s adaptive thresholding.
1160 1345 # WatershedSegmentationTransform
1161 1346  
1162 1347 Applies watershed segmentation.
  1348 +
1163 1349  
1164 1350 * **file:** imgproc/watershedsegmentation.cpp
1165 1351 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
1166   -* **author:** Austin Blanton
  1352 +* **author(s):** [Austin Blanton][imaus10]
1167 1353 * **properties:** None
1168 1354  
1169 1355  
... ...
docs/docs/api_docs/plugins/io.md
1 1 # DecodeTransform
2 2  
3 3 Decodes images
  4 +
4 5  
5 6 * **file:** io/decode.cpp
6 7 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
7   -* **author:** Josh Klontz
  8 +* **author(s):** [Josh Klontz][jklontz]
8 9 * **properties:** None
9 10  
10 11  
... ... @@ -13,10 +14,24 @@ Decodes images
13 14 # DownloadTransform
14 15  
15 16 Downloads an image from a URL
  17 +
16 18  
17 19 * **file:** io/download.cpp
18 20 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
19   -* **author:** Josh Klontz
  21 +* **author(s):** [Josh Klontz][jklontz]
  22 +* **properties:** None
  23 +
  24 +
  25 +---
  26 +
  27 +# GalleryOutputTransform
  28 +
  29 +DOCUMENT ME
  30 +
  31 +
  32 +* **file:** io/galleryoutput.cpp
  33 +* **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
  34 +* **author(s):** [Unknown][unknown]
20 35 * **properties:** None
21 36  
22 37  
... ... @@ -26,9 +41,16 @@ Downloads an image from a URL
26 41  
27 42 Incrementally output templates received to a gallery, based on the current filename
28 43  
  44 +When a template is received in projectUpdate for the first time since a finalize, open a new gallery based on the
  45 +template's filename, and the galleryFormat property.
  46 +
  47 +[Template](../cpp_api/template/template.md) received in projectUpdate will be output to the gallery with a filename combining their original filename and
  48 +their FrameNumber property, with the file extension specified by the fileFormat property.
  49 +
  50 +
29 51 * **file:** io/incrementaloutput.cpp
30 52 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
31   -* **author:** Charles Otto
  53 +* **author(s):** [Charles Otto][caotto]
32 54 * **properties:** None
33 55  
34 56  
... ... @@ -36,11 +58,25 @@ Incrementally output templates received to a gallery, based on the current filen
36 58  
37 59 # OpenTransform
38 60  
39   -Applies br::Format to br::Template::file::name and appends results.
  61 +Applies [Format](../cpp_api/format/format.md) to [Template](../cpp_api/template/template.md) filename and appends results.
  62 +
40 63  
41 64 * **file:** io/open.cpp
42 65 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
43   -* **author:** Josh Klontz
  66 +* **author(s):** [Josh Klontz][jklontz]
  67 +* **properties:** None
  68 +
  69 +
  70 +---
  71 +
  72 +# OutputTransform
  73 +
  74 +DOCUMENT ME
  75 +
  76 +
  77 +* **file:** io/out.cpp
  78 +* **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
  79 +* **author(s):** [Unknown][Unknown]
44 80 * **properties:** None
45 81  
46 82  
... ... @@ -48,11 +84,12 @@ Applies br::Format to br::Template::file::name and appends results.
48 84  
49 85 # PrintTransform
50 86  
51   -Prints the template's file to stdout or stderr.
  87 +Prints the file of the input [Template](../cpp_api/template/template.md) to stdout or stderr.
  88 +
52 89  
53 90 * **file:** io/print.cpp
54 91 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
55   -* **author:** Josh Klontz
  92 +* **author(s):** [Josh Klontz][jklontz]
56 93 * **properties:** None
57 94  
58 95  
... ... @@ -60,11 +97,16 @@ Prints the template&#39;s file to stdout or stderr.
60 97  
61 98 # ReadLandmarksTransform
62 99  
63   -Read landmarks from a file and associate them with the correct templates.
  100 +Read landmarks from a file and associate them with the correct [Template](../cpp_api/template/template.md).
  101 +
64 102  
65 103 * **file:** io/readlandmarks.cpp
66 104 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
67   -* **author:** Scott Klum
  105 +* **author(s):** [Scott Klum][sklum]
  106 +* **format:** Example of the format: <pre><code>image_001.jpg:146.000000,190.000000,227.000000,186.000000,202.000000,256.000000
  107 +image_002.jpg:75.000000,235.000000,140.000000,225.000000,91.000000,300.000000
  108 +image_003.jpg:158.000000,186.000000,246.000000,188.000000,208.000000,233.000000
  109 +</code></pre>
68 110 * **properties:** None
69 111  
70 112  
... ... @@ -73,10 +115,11 @@ Read landmarks from a file and associate them with the correct templates.
73 115 # ReadTransform
74 116  
75 117 Read images
  118 +
76 119  
77 120 * **file:** io/read.cpp
78 121 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
79   -* **author:** Josh Klontz
  122 +* **author(s):** [Josh Klontz][jklontz]
80 123 * **properties:** None
81 124  
82 125  
... ... @@ -85,10 +128,11 @@ Read images
85 128 # WriteTransform
86 129  
87 130 Write all mats to disk as images.
  131 +
88 132  
89 133 * **file:** io/write.cpp
90 134 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
91   -* **author:** Brendan Klare
  135 +* **author(s):** [Brendan Klare][bklare]
92 136 * **properties:** None
93 137  
94 138  
... ... @@ -97,10 +141,17 @@ Write all mats to disk as images.
97 141 # YouTubeFacesDBTransform
98 142  
99 143 Implements the YouTubesFaceDB
  144 +
100 145  
101 146 * **file:** io/youtubefacesdb.cpp
102 147 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
103   -* **author:** Josh Klontz
  148 +* **author(s):** [Josh Klontz][jklontz]
  149 +* **read:**
  150 +
  151 + 1. *Wolf, Lior, Tal Hassner, and Itay Maoz.*
  152 + **"Face recognition in unconstrained videos with matched background similarity."**
  153 + Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on. IEEE, 2011.
  154 +
104 155 * **properties:** None
105 156  
106 157  
... ...
docs/docs/api_docs/plugins/metadata.md
1 1 # ASEFEyesTransform
2 2  
3   -Bolme, D.S.; Draper, B.A.; Beveridge, J.R.;
  3 +Find eye locations using an ASEF filter
  4 +
4 5  
5 6 * **file:** metadata/eyes.cpp
6 7 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
7   -* **authors:** David Bolme, Josh Klontz
  8 +* **author(s):** [Josh Klontz][jklontz]
  9 +* **read:**
  10 +
  11 + 1. *Bolme, D.S.; Draper, B.A.; Beveridge, J.R.;*
  12 + **"Average of Synthetic Exact Filters,"**
  13 + Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on , vol., no., pp.2105-2112, 20-25 June 2009
  14 +
8 15 * **properties:** None
9 16  
10 17  
... ... @@ -13,10 +20,11 @@ Bolme, D.S.; Draper, B.A.; Beveridge, J.R.;
13 20 # AnonymizeLandmarksTransform
14 21  
15 22 Remove a name from a point/rect
  23 +
16 24  
17 25 * **file:** metadata/anonymizelandmarks.cpp
18 26 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
19   -* **author:** Scott Klum
  27 +* **author(s):** [Scott Klum][sklum]
20 28 * **properties:** None
21 29  
22 30  
... ... @@ -24,11 +32,12 @@ Remove a name from a point/rect
24 32  
25 33 # AsTransform
26 34  
27   -Change the br::Template::file extension
  35 +Change the [Template](../cpp_api/template/template.md) file extension
  36 +
28 37  
29 38 * **file:** metadata/as.cpp
30 39 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
31   -* **author:** Josh Klontz
  40 +* **author(s):** [Josh Klontz][jklontz]
32 41 * **properties:** None
33 42  
34 43  
... ... @@ -37,10 +46,11 @@ Change the br::Template::file extension
37 46 # AveragePointsTransform
38 47  
39 48 Averages a set of landmarks into a new landmark
  49 +
40 50  
41 51 * **file:** metadata/averagepoints.cpp
42 52 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
43   -* **author:** Brendan Klare
  53 +* **author(s):** [Brendan Klare][bklare]
44 54 * **properties:** None
45 55  
46 56  
... ... @@ -49,10 +59,12 @@ Averages a set of landmarks into a new landmark
49 59 # CascadeTransform
50 60  
51 61 Wraps OpenCV cascade classifier
  62 +
52 63  
53 64 * **file:** metadata/cascade.cpp
54 65 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
55   -* **authors:** Josh Klontz, David Crouse
  66 +* **author(s):** [Josh Klontz][jklontz], [David Crouse][dgcrouse]
  67 +* **see:** [http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html](http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html)
56 68 * **properties:** None
57 69  
58 70  
... ... @@ -60,11 +72,12 @@ Wraps OpenCV cascade classifier
60 72  
61 73 # CheckTransform
62 74  
63   -Checks the template for NaN values.
  75 +Checks the [Template](../cpp_api/template/template.md) for NaN values.
  76 +
64 77  
65 78 * **file:** metadata/check.cpp
66 79 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
67   -* **author:** Josh Klontz
  80 +* **author(s):** [Josh Klontz][jklontz]
68 81 * **properties:** None
69 82  
70 83  
... ... @@ -72,11 +85,12 @@ Checks the template for NaN values.
72 85  
73 86 # ClearPointsTransform
74 87  
75   -Clears the points from a template
  88 +Clears the points from a [Template](../cpp_api/template/template.md)
  89 +
76 90  
77 91 * **file:** metadata/clearpoints.cpp
78 92 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
79   -* **author:** Brendan Klare
  93 +* **author(s):** [Brendan Klare][bklare]
80 94 * **properties:** None
81 95  
82 96  
... ... @@ -85,10 +99,11 @@ Clears the points from a template
85 99 # ConsolidateDetectionsTransform
86 100  
87 101 Consolidate redundant/overlapping detections.
  102 +
88 103  
89 104 * **file:** metadata/consolidatedetections.cpp
90 105 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
91   -* **author:** Brendan Klare
  106 +* **author(s):** [Brendan Klare][bklare]
92 107 * **properties:** None
93 108  
94 109  
... ... @@ -96,11 +111,12 @@ Consolidate redundant/overlapping detections.
96 111  
97 112 # CropRectTransform
98 113  
99   -Crops the width and height of a template's rects by input width and height factors.
  114 +Crops the width and height of a [Template](../cpp_api/template/template.md) rects by input width and height factors.
  115 +
100 116  
101 117 * **file:** metadata/croprect.cpp
102 118 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
103   -* **author:** Scott Klum
  119 +* **author(s):** [Scott Klum][sklum]
104 120 * **properties:** None
105 121  
106 122  
... ... @@ -109,10 +125,11 @@ Crops the width and height of a template&#39;s rects by input width and height facto
109 125 # DelaunayTransform
110 126  
111 127 Creates a Delaunay triangulation based on a set of points
  128 +
112 129  
113 130 * **file:** metadata/delaunay.cpp
114 131 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
115   -* **author:** Scott Klum
  132 +* **author(s):** [Scott Klum][sklum]
116 133 * **properties:** None
117 134  
118 135  
... ... @@ -120,11 +137,12 @@ Creates a Delaunay triangulation based on a set of points
120 137  
121 138 # ExpandRectTransform
122 139  
123   -Expand the width and height of a template's rects by input width and height factors.
  140 +Expand the width and height of a [Template](../cpp_api/template/template.md) rects by input width and height factors.
  141 +
124 142  
125 143 * **file:** metadata/expandrect.cpp
126 144 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
127   -* **author:** Charles Otto
  145 +* **author(s):** [Charles Otto][caotto]
128 146 * **properties:** None
129 147  
130 148  
... ... @@ -133,10 +151,41 @@ Expand the width and height of a template&#39;s rects by input width and height fact
133 151 # ExtractMetadataTransform
134 152  
135 153 Create matrix from metadata values.
  154 +
136 155  
137 156 * **file:** metadata/extractmetadata.cpp
138 157 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
139   -* **author:** Josh Klontz
  158 +* **author(s):** [Josh Klontz][jklontz]
  159 +* **properties:** None
  160 +
  161 +
  162 +---
  163 +
  164 +# FaceFromEyesTransform
  165 +
  166 +Create face bounding box from two eye locations.
  167 +
  168 +
  169 +* **file:** metadata/facefromeyes.cpp
  170 +* **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
  171 +* **author(s):** [Brendan Klare][bklare]
  172 +* **properties:**
  173 +
  174 + Property | Type | Description
  175 + --- | --- | ---
  176 + widthPadding | double | Specifies what percentage of the interpupliary distance (ipd) will be padded in both horizontal directions.
  177 + verticalLocation | double | specifies where vertically the eyes are within the bounding box (0.5 would be the center).
  178 +
  179 +---
  180 +
  181 +# FileExclusionTransform
  182 +
  183 +DOCUMENT ME
  184 +
  185 +
  186 +* **file:** metadata/fileexclusion.cpp
  187 +* **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
  188 +* **author(s):** [Unknown][Unknown]
140 189 * **properties:** None
141 190  
142 191  
... ... @@ -144,11 +193,12 @@ Create matrix from metadata values.
144 193  
145 194 # FilterDupeMetadataTransform
146 195  
147   -Removes duplicate templates based on a unique metadata key
  196 +Removes duplicate [Template](../cpp_api/template/template.md) based on a unique metadata key
  197 +
148 198  
149 199 * **file:** metadata/filterdupemetadata.cpp
150 200 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
151   -* **author:** Austin Blanton
  201 +* **author(s):** [Austin Blanton][imaus10]
152 202 * **properties:** None
153 203  
154 204  
... ... @@ -156,11 +206,12 @@ Removes duplicate templates based on a unique metadata key
156 206  
157 207 # GridTransform
158 208  
159   -Add landmarks to the template in a grid layout
  209 +Add landmarks to the [Template](../cpp_api/template/template.md) in a grid layout
  210 +
160 211  
161 212 * **file:** metadata/grid.cpp
162 213 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
163   -* **author:** Josh Klontz
  214 +* **author(s):** [Josh Klontz][jklontz]
164 215 * **properties:** None
165 216  
166 217  
... ... @@ -168,11 +219,12 @@ Add landmarks to the template in a grid layout
168 219  
169 220 # GroundTruthTransform
170 221  
171   -Add any ground truth to the template using the file's base name.
  222 +Add any ground truth to the [Template](../cpp_api/template/template.md) using the file's base name.
  223 +
172 224  
173 225 * **file:** metadata/groundtruth.cpp
174 226 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
175   -* **author:** Josh Klontz
  227 +* **author(s):** [Josh Klontz][jklontz]
176 228 * **properties:** None
177 229  
178 230  
... ... @@ -181,10 +233,12 @@ Add any ground truth to the template using the file&#39;s base name.
181 233 # HOGPersonDetectorTransform
182 234  
183 235 Detects objects with OpenCV's built-in HOG detection.
  236 +
184 237  
185 238 * **file:** metadata/hogpersondetector.cpp
186 239 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
187   -* **author:** Austin Blanton
  240 +* **author(s):** [Austin Blanton][imaus10]
  241 +* **see:** [http://docs.opencv.org/modules/gpu/doc/object_detection.html](http://docs.opencv.org/modules/gpu/doc/object_detection.html)
188 242 * **properties:** None
189 243  
190 244  
... ... @@ -192,11 +246,12 @@ Detects objects with OpenCV&#39;s built-in HOG detection.
192 246  
193 247 # IfMetadataTransform
194 248  
195   -Clear templates without the required metadata.
  249 +Clear [Template](../cpp_api/template/template.md) without the required metadata.
  250 +
196 251  
197 252 * **file:** metadata/ifmetadata.cpp
198 253 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
199   -* **author:** Josh Klontz
  254 +* **author(s):** [Josh Klontz][jklontz]
200 255 * **properties:** None
201 256  
202 257  
... ... @@ -205,10 +260,11 @@ Clear templates without the required metadata.
205 260 # ImpostorUniquenessMeasureTransform
206 261  
207 262 Impostor Uniqueness Measure
  263 +
208 264  
209 265 * **file:** metadata/imposteruniquenessmeasure.cpp
210 266 * **inherits:** [Transform](../cpp_api/transform/transform.md)
211   -* **author:** Josh Klontz
  267 +* **author(s):** [Josh Klontz][jklontz]
212 268 * **properties:** None
213 269  
214 270  
... ... @@ -217,10 +273,11 @@ Impostor Uniqueness Measure
217 273 # JSONTransform
218 274  
219 275 Represent the metadata as JSON template data.
  276 +
220 277  
221 278 * **file:** metadata/json.cpp
222 279 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
223   -* **author:** Josh Klontz
  280 +* **author(s):** [Josh Klontz][jklontz]
224 281 * **properties:** None
225 282  
226 283  
... ... @@ -229,10 +286,11 @@ Represent the metadata as JSON template data.
229 286 # KeepMetadataTransform
230 287  
231 288 Retains only the values for the keys listed, to reduce template size
  289 +
232 290  
233 291 * **file:** metadata/keepmetadata.cpp
234 292 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
235   -* **author:** Scott Klum
  293 +* **author(s):** [Scott Klum][sklum]
236 294 * **properties:** None
237 295  
238 296  
... ... @@ -241,10 +299,12 @@ Retains only the values for the keys listed, to reduce template size
241 299 # KeyPointDetectorTransform
242 300  
243 301 Wraps OpenCV Key Point Detector
  302 +
244 303  
245 304 * **file:** metadata/keypointdetector.cpp
246 305 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
247   -* **author:** Josh Klontz
  306 +* **author(s):** [Josh Klontz][jklontz]
  307 +* **see:** [http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html](http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html)
248 308 * **properties:** None
249 309  
250 310  
... ... @@ -253,10 +313,11 @@ Wraps OpenCV Key Point Detector
253 313 # KeyToRectTransform
254 314  
255 315 Convert values of key_X, key_Y, key_Width, key_Height to a rect.
  316 +
256 317  
257 318 * **file:** metadata/keytorect.cpp
258 319 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
259   -* **author:** Jordan Cheney
  320 +* **author(s):** [Jordan Cheney][JordanCheney]
260 321 * **properties:** None
261 322  
262 323  
... ... @@ -265,10 +326,11 @@ Convert values of key_X, key_Y, key_Width, key_Height to a rect.
265 326 # NameLandmarksTransform
266 327  
267 328 Name a point/rect
  329 +
268 330  
269 331 * **file:** metadata/namelandmarks.cpp
270 332 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
271   -* **author:** Scott Klum
  333 +* **author(s):** [Scott Klum][sklum]
272 334 * **properties:** None
273 335  
274 336  
... ... @@ -276,11 +338,12 @@ Name a point/rect
276 338  
277 339 # NameTransform
278 340  
279   -Sets the template's matrix data to the br::File::name.
  341 +Sets the [Template](../cpp_api/template/template.md) matrix data to the br::File::name.
  342 +
280 343  
281 344 * **file:** metadata/name.cpp
282 345 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
283   -* **author:** Josh Klontz
  346 +* **author(s):** [Josh Klontz][jklontz]
284 347 * **properties:** None
285 348  
286 349  
... ... @@ -289,10 +352,11 @@ Sets the template&#39;s matrix data to the br::File::name.
289 352 # NormalizePointsTransform
290 353  
291 354 Normalize points to be relative to a single point
  355 +
292 356  
293 357 * **file:** metadata/normalizepoints.cpp
294 358 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
295   -* **author:** Scott Klum
  359 +* **author(s):** [Scott Klum][sklum]
296 360 * **properties:** None
297 361  
298 362  
... ... @@ -301,10 +365,11 @@ Normalize points to be relative to a single point
301 365 # PointDisplacementTransform
302 366  
303 367 Normalize points to be relative to a single point
  368 +
304 369  
305 370 * **file:** metadata/pointdisplacement.cpp
306 371 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
307   -* **author:** Scott Klum
  372 +* **author(s):** [Scott Klum][sklum]
308 373 * **properties:** None
309 374  
310 375  
... ... @@ -313,10 +378,11 @@ Normalize points to be relative to a single point
313 378 # PointsToMatrixTransform
314 379  
315 380 Converts either the file::points() list or a QList<QPointF> metadata item to be the template's matrix
  381 +
316 382  
317 383 * **file:** metadata/pointstomatrix.cpp
318 384 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
319   -* **author:** Scott Klum
  385 +* **author(s):** [Scott Klum][sklum]
320 386 * **properties:** None
321 387  
322 388  
... ... @@ -325,10 +391,11 @@ Converts either the file::points() list or a QList&lt;QPointF&gt; metadata item to be
325 391 # ProcrustesTransform
326 392  
327 393 Procrustes alignment of points
  394 +
328 395  
329 396 * **file:** metadata/procrustes.cpp
330 397 * **inherits:** [MetadataTransform](../cpp_api/metadatatransform/metadatatransform.md)
331   -* **author:** Scott Klum
  398 +* **author(s):** [Scott Klum][sklum]
332 399 * **properties:** None
333 400  
334 401  
... ... @@ -336,11 +403,12 @@ Procrustes alignment of points
336 403  
337 404 # RectsToTemplatesTransform
338 405  
339   -For each rectangle bounding box in src, a new
  406 +For each rectangle bounding box in src, a new [Template](../cpp_api/template/template.md) is created.
  407 +
340 408  
341 409 * **file:** metadata/rectstotemplates.cpp
342 410 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
343   -* **author:** Brendan Klare
  411 +* **author(s):** [Brendan Klare][bklare]
344 412 * **properties:** None
345 413  
346 414  
... ... @@ -349,10 +417,11 @@ For each rectangle bounding box in src, a new
349 417 # RegexPropertyTransform
350 418  
351 419 Apply the input regular expression to the value of inputProperty, store the matched portion in outputProperty.
  420 +
352 421  
353 422 * **file:** metadata/regexproperty.cpp
354 423 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
355   -* **author:** Charles Otto
  424 +* **author(s):** [Charles Otto][caotto]
356 425 * **properties:** None
357 426  
358 427  
... ... @@ -360,11 +429,12 @@ Apply the input regular expression to the value of inputProperty, store the matc
360 429  
361 430 # RemoveMetadataTransform
362 431  
363   -Removes a metadata field from all templates
  432 +Removes a metadata field from all [Template](../cpp_api/template/template.md)
  433 +
364 434  
365 435 * **file:** metadata/removemetadata.cpp
366 436 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
367   -* **author:** Brendan Klare
  437 +* **author(s):** [Brendan Klare][bklare]
368 438 * **properties:** None
369 439  
370 440  
... ... @@ -372,11 +442,12 @@ Removes a metadata field from all templates
372 442  
373 443 # RemoveTemplatesTransform
374 444  
375   -Remove templates with the specified file extension or metadata value.
  445 +Remove [Template](../cpp_api/template/template.md) with the specified file extension or metadata value.
  446 +
376 447  
377 448 * **file:** metadata/removetemplates.cpp
378 449 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
379   -* **author:** Josh Klontz
  450 +* **author(s):** [Josh Klontz][jklontz]
380 451 * **properties:** None
381 452  
382 453  
... ... @@ -385,10 +456,11 @@ Remove templates with the specified file extension or metadata value.
385 456 # RenameFirstTransform
386 457  
387 458 Rename first found metadata key
  459 +
388 460  
389 461 * **file:** metadata/renamefirst.cpp
390 462 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
391   -* **author:** Josh Klontz
  463 +* **author(s):** [Josh Klontz][jklontz]
392 464 * **properties:** None
393 465  
394 466  
... ... @@ -397,10 +469,11 @@ Rename first found metadata key
397 469 # RenameTransform
398 470  
399 471 Rename metadata key
  472 +
400 473  
401 474 * **file:** metadata/rename.cpp
402 475 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
403   -* **author:** Josh Klontz
  476 +* **author(s):** [Josh Klontz][jklontz]
404 477 * **properties:** None
405 478  
406 479  
... ... @@ -409,10 +482,12 @@ Rename metadata key
409 482 # ReorderPointsTransform
410 483  
411 484 Reorder the points such that points[from[i]] becomes points[to[i]] and
  485 +vice versa
  486 +
412 487  
413 488 * **file:** metadata/reorderpoints.cpp
414 489 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
415   -* **author:** Scott Klum
  490 +* **author(s):** [Scott Klum][sklum]
416 491 * **properties:** None
417 492  
418 493  
... ... @@ -420,11 +495,14 @@ Reorder the points such that points[from[i]] becomes points[to[i]] and
420 495  
421 496 # RestoreMatTransform
422 497  
423   -Set the last matrix of the input template to a matrix stored as metadata with input propName.
  498 +Set the last matrix of the input [Template](../cpp_api/template/template.md) to a matrix stored as metadata with input propName.
  499 +
  500 +Also removes the property from the [Template](../cpp_api/template/template.md)s metadata after restoring it.
  501 +
424 502  
425 503 * **file:** metadata/restoremat.cpp
426 504 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
427   -* **author:** Charles Otto
  505 +* **author(s):** [Charles Otto][caotto]
428 506 * **properties:** None
429 507  
430 508  
... ... @@ -432,11 +510,12 @@ Set the last matrix of the input template to a matrix stored as metadata with in
432 510  
433 511 # SaveMatTransform
434 512  
435   -Store the last matrix of the input template as a metadata key with input property name.
  513 +Store the last matrix of the input [Template](../cpp_api/template/template.md) as a metadata key with input property name.
  514 +
436 515  
437 516 * **file:** metadata/savemat.cpp
438 517 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
439   -* **author:** Charles Otto
  518 +* **author(s):** [Charles Otto][caotto]
440 519 * **properties:** None
441 520  
442 521  
... ... @@ -445,10 +524,11 @@ Store the last matrix of the input template as a metadata key with input propert
445 524 # SelectPointsTransform
446 525  
447 526 Retains only landmarks/points at the provided indices
  527 +
448 528  
449 529 * **file:** metadata/selectpoints.cpp
450 530 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
451   -* **author:** Brendan Klare
  531 +* **author(s):** [Brendan Klare][bklare]
452 532 * **properties:** None
453 533  
454 534  
... ... @@ -457,10 +537,11 @@ Retains only landmarks/points at the provided indices
457 537 # SetMetadataTransform
458 538  
459 539 Sets the metadata key/value pair.
  540 +
460 541  
461 542 * **file:** metadata/setmetadata.cpp
462 543 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
463   -* **author:** Josh Klontz
  544 +* **author(s):** [Josh Klontz][jklontz]
464 545 * **properties:** None
465 546  
466 547  
... ... @@ -469,10 +550,11 @@ Sets the metadata key/value pair.
469 550 # SetPointsInRectTransform
470 551  
471 552 Set points relative to a rect
  553 +
472 554  
473 555 * **file:** metadata/setpointsinrect.cpp
474 556 * **inherits:** [UntrainableMetadataTransform](../cpp_api/untrainablemetadatatransform/untrainablemetadatatransform.md)
475   -* **author:** Jordan Cheney
  557 +* **author(s):** [Jordan Cheney][JordanCheney]
476 558 * **properties:** None
477 559  
478 560  
... ... @@ -481,10 +563,11 @@ Set points relative to a rect
481 563 # StasmTransform
482 564  
483 565 Wraps STASM key point detector
  566 +
484 567  
485 568 * **file:** metadata/stasm4.cpp
486 569 * **inherits:** [UntrainableTransform](../cpp_api/untrainabletransform/untrainabletransform.md)
487   -* **author:** Scott Klum
  570 +* **author(s):** [Scott Klum][sklum]
488 571 * **properties:** None
489 572  
490 573  
... ... @@ -492,11 +575,12 @@ Wraps STASM key point detector
492 575  
493 576 # StopWatchTransform
494 577  
495   -Gives time elapsed over a specified transform as a function of both images (or frames) and pixels.
  578 +Gives time elapsed over a specified [Transform](../cpp_api/transform/transform.md) as a function of both images (or frames) and pixels.
  579 +
496 580  
497 581 * **file:** metadata/stopwatch.cpp
498 582 * **inherits:** [MetaTransform](../cpp_api/metatransform/metatransform.md)
499   -* **authors:** Jordan Cheney, Josh Klontz
  583 +* **author(s):** [Jordan Cheney][JordanCheney], [Josh Klontz][jklontz]
500 584 * **properties:** None
501 585  
502 586  
... ...
docs/docs/api_docs/plugins/output.md
1 1 # DefaultOutput
2 2  
3   -Adaptor class -- write a matrix output using Format classes.
  3 +Adaptor class -- write a matrix output using [Format](../cpp_api/format/format.md) classes.
  4 +
4 5  
5 6 * **file:** output/default.cpp
6 7 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
7   -* **author:** Charles Otto
  8 +* **author(s):** [Charles Otto][caotto]
8 9 * **properties:** None
9 10  
10 11  
... ... @@ -13,10 +14,11 @@ Adaptor class -- write a matrix output using Format classes.
13 14 # EmptyOutput
14 15  
15 16 Output to the terminal.
  17 +
16 18  
17 19 * **file:** output/empty.cpp
18 20 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
19   -* **author:** Josh Klontz
  21 +* **author(s):** [Josh Klontz][jklontz]
20 22 * **properties:** None
21 23  
22 24  
... ... @@ -25,10 +27,11 @@ Output to the terminal.
25 27 # bestOutput
26 28  
27 29 The highest scoring matches.
  30 +
28 31  
29 32 * **file:** output/best.cpp
30 33 * **inherits:** [Output](../cpp_api/output/output.md)
31   -* **author:** Josh Klontz
  34 +* **author(s):** [Josh Klontz][jklontz]
32 35 * **properties:** None
33 36  
34 37  
... ... @@ -37,10 +40,11 @@ The highest scoring matches.
37 40 # csvOutput
38 41  
39 42 Comma separated values output.
  43 +
40 44  
41 45 * **file:** output/csv.cpp
42 46 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
43   -* **author:** Josh Klontz
  47 +* **author(s):** [Josh Klontz][jklontz]
44 48 * **properties:** None
45 49  
46 50  
... ... @@ -49,10 +53,11 @@ Comma separated values output.
49 53 # evalOutput
50 54  
51 55 Evaluate the output matrix.
  56 +
52 57  
53 58 * **file:** output/eval.cpp
54 59 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
55   -* **author:** Josh Klontz
  60 +* **author(s):** [Josh Klontz][jklontz]
56 61 * **properties:** None
57 62  
58 63  
... ... @@ -61,10 +66,11 @@ Evaluate the output matrix.
61 66 # heatOutput
62 67  
63 68 Matrix-like output for heat maps.
  69 +
64 70  
65 71 * **file:** output/heat.cpp
66 72 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
67   -* **author:** Scott Klum
  73 +* **author(s):** [Scott Klum][sklum]
68 74 * **properties:** None
69 75  
70 76  
... ... @@ -73,10 +79,11 @@ Matrix-like output for heat maps.
73 79 # histOutput
74 80  
75 81 Score histogram.
  82 +
76 83  
77 84 * **file:** output/hist.cpp
78 85 * **inherits:** [Output](../cpp_api/output/output.md)
79   -* **author:** Josh Klontz
  86 +* **author(s):** [Josh Klontz][jklontz]
80 87 * **properties:** None
81 88  
82 89  
... ... @@ -85,10 +92,11 @@ Score histogram.
85 92 # meltOutput
86 93  
87 94 One score per row.
  95 +
88 96  
89 97 * **file:** output/melt.cpp
90 98 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
91   -* **author:** Josh Klontz
  99 +* **author(s):** [Josh Klontz][jklontz]
92 100 * **properties:** None
93 101  
94 102  
... ... @@ -96,11 +104,12 @@ One score per row.
96 104  
97 105 # mtxOutput
98 106  
99   -
  107 +simmat output.
  108 +
100 109  
101 110 * **file:** output/mtx.cpp
102 111 * **inherits:** [Output](../cpp_api/output/output.md)
103   -* **author:** Josh Klontz
  112 +* **author(s):** [Josh Klontz][jklontz]
104 113 * **properties:** None
105 114  
106 115  
... ... @@ -109,10 +118,11 @@ One score per row.
109 118 # nullOutput
110 119  
111 120 Discards the scores.
  121 +
112 122  
113 123 * **file:** output/null.cpp
114 124 * **inherits:** [Output](../cpp_api/output/output.md)
115   -* **author:** Josh Klontz
  125 +* **author(s):** [Josh Klontz][jklontz]
116 126 * **properties:** None
117 127  
118 128  
... ... @@ -121,10 +131,11 @@ Discards the scores.
121 131 # rankOutput
122 132  
123 133 Outputs highest ranked matches with scores.
  134 +
124 135  
125 136 * **file:** output/rank.cpp
126 137 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
127   -* **author:** Scott Klum
  138 +* **author(s):** [Scott Klum][sklum]
128 139 * **properties:** None
129 140  
130 141  
... ... @@ -133,10 +144,11 @@ Outputs highest ranked matches with scores.
133 144 # rrOutput
134 145  
135 146 Rank retrieval output.
  147 +
136 148  
137 149 * **file:** output/rr.cpp
138 150 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
139   -* **authors:** Josh Klontz, Scott Klum
  151 +* **author(s):** [Josh Klontz][jklontz], [Scott Klum][sklum]
140 152 * **properties:** None
141 153  
142 154  
... ... @@ -145,10 +157,11 @@ Rank retrieval output.
145 157 # tailOutput
146 158  
147 159 The highest scoring matches.
  160 +
148 161  
149 162 * **file:** output/tail.cpp
150 163 * **inherits:** [Output](../cpp_api/output/output.md)
151   -* **author:** Josh Klontz
  164 +* **author(s):** [Josh Klontz][jklontz]
152 165 * **properties:** None
153 166  
154 167  
... ... @@ -157,10 +170,11 @@ The highest scoring matches.
157 170 # txtOutput
158 171  
159 172 Text file output.
  173 +
160 174  
161 175 * **file:** output/txt.cpp
162 176 * **inherits:** [MatrixOutput](../cpp_api/matrixoutput/matrixoutput.md)
163   -* **author:** Josh Klontz
  177 +* **author(s):** [Josh Klontz][jklontz]
164 178 * **properties:** None
165 179  
166 180  
... ...
docs/docs/api_docs/plugins/video.md
1 1 # AggregateFrames
2 2  
3   -Passes along n sequential frames to the next transform.
  3 +Passes along n sequential frames to the next [Transform](../cpp_api/transform/transform.md).
  4 +
  5 +For a video with m frames, AggregateFrames would create a total of m-n+1 sequences ([0,n] ... [m-n+1, m])
  6 +
4 7  
5 8 * **file:** video/aggregate.cpp
6 9 * **inherits:** [TimeVaryingTransform](../cpp_api/timevaryingtransform/timevaryingtransform.md)
7   -* **author:** Josh Klontz
  10 +* **author(s):** [Josh Klontz][jklontz]
8 11 * **properties:** None
9 12  
10 13  
... ... @@ -13,10 +16,13 @@ Passes along n sequential frames to the next transform.
13 16 # DropFrames
14 17  
15 18 Only use one frame every n frames.
  19 +
16 20  
17 21 * **file:** video/drop.cpp
18 22 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
19   -* **author:** Austin Blanton
  23 +* **author(s):** [Austin Blanton][imaus10
  24 +
  25 + For a video with m frames, DropFrames will pass on m/n frames.]
20 26 * **properties:** None
21 27  
22 28  
... ... @@ -25,10 +31,11 @@ Only use one frame every n frames.
25 31 # OpticalFlowTransform
26 32  
27 33 Gets a one-channel dense optical flow from two images
  34 +
28 35  
29 36 * **file:** video/opticalflow.cpp
30 37 * **inherits:** [UntrainableMetaTransform](../cpp_api/untrainablemetatransform/untrainablemetatransform.md)
31   -* **author:** Austin Blanton
  38 +* **author(s):** [Austin Blanton][imaus10]
32 39 * **properties:** None
33 40  
34 41  
... ...
docs/docs/contribute.md
  1 +So you want to contribute to OpenBR? That's awesome! These are some guidelines to follow so that your contribution fits nicely into our framework.
  2 +
  3 +## Contributing a Plugin
  4 +
  5 +You should consider contributing a plugin (or plugins!) if you have an algorithm you are interested in moving to OpenBR or you have an extension to an existing algorithm. Below are the steps for creating and contributing a plugin-
  6 +
  7 +1. Check out the [C++ Plugin API](api_docs/cpp_api.md) and decide which abstraction best suits the needs of your contribution
  8 +2. Select a module in the <tt>openbr/plugins/</tt> directory that describes your plugin, then create a new file in that module. Your file should have the same name as your plugin.
  9 +3. Implement your plugin! Make sure to have a look at the [Style Guide](#style-guide) so your code matches what's already there. This increases overall readability and makes it easier for newcomers to learn!
  10 +
  11 +### Common Mistakes
  12 +
  13 +Some common mistakes that will stop your plugin from working!
  14 +
  15 +* The entire plugin should be inside ```namespace br```
  16 +* Make sure your plugin declares ```Q_OBJECT``` right after it's definition
  17 +* Remember to call [BR_REGISTER](api_docs/cpp_api/factory/macros.md#br_register) at the end of your plugin!
  18 +* Remeber to add ```#include "module/filename.moc"``` at the very bottom of your file
  19 +
  20 +[MAddTransform](api_docs/plugins/imgproc.md#maddtransform) is a simple and clear example of how a [Transform](api_docs/cpp_api/transform/transform.md) should look.
  21 +
  22 +### Documenting
  23 +
  24 +Documenting your plugin is very important. OpenBR supports custom, doxygen-style, in-code comments to make documentation simple, clear, and easy. Comments should appear like
  25 +
  26 + /*!
  27 + * ...
  28 + */
  29 +
  30 +Comments are organized using tags, which are of the form <tt>\tag</tt>. There are a few **required** tags that all OpenBR transforms must have.
  31 +
  32 +Tag | Description
  33 +--- | ---
  34 +\ingroup | The abstraction that your plugin belongs to
  35 +\brief | A description of your plugin
  36 +\author | Your name
  37 +\cite | The citation link for the author. There must be citation tag for every author who appears. If you haven't already please add your information to <tt>openbr/docs/docs/contributors.md</tt>
  38 +\br_property | Describes a <tt>BR_PROPERTY</tt> of your plugin. This should take the format ```\br_property type name description```. In certain cases, for enumerations for example, it is beneficial to add a bulleted list to the description. This is done using a comma seperated **[]** list. ```[item1,item2,item3]``` will appear like <ul><li>item1</li><li>item2</li><li>item3</li></ul> Each property of the plugin must have a corresponding \br_property tag.
  39 +
  40 +The mimimum comment would look like this
  41 +
  42 + /*!
  43 + * \ingroup abstraction group
  44 + * \brief A description of the plugin
  45 + * \author Your Name \cite Your Citation
  46 + * \br_property percentage float The percentage of something
  47 + * \br_property enum choice A choice with possible values: [choice1, choice2, choice3]
  48 + */
  49 +
  50 +There are also a few **optional** tags to provide more information.
  51 +
  52 +Tag | Description
  53 +--- | ---
  54 +\br_link | A link to a webpage
  55 +\br_paper | An academic paper your plugin needs to cite. This is a multi-line tag- The first line should contain the paper authors, the second line should contain the paper title, and the third should contain other information about the paper (for example conference and year). See below for an example.
  56 +\br_related_plugin | Link to a related plugin within OpenBR. The full name of the plugin should be provided. Multiple plugins can be given and they should be seperated by a space.
  57 +\br_format | TODO define
  58 +
  59 +Optional tags could look like this
  60 +
  61 + /*!
  62 + * \br_link http://openbiometrics.org
  63 + * \br_paper Author1, Author2, Author3
  64 + * Paper Title
  65 + * Conference. Year
  66 + * \br_related_plugin ExampleTransform ExampleDistance ExampleGallery
  67 + */
  68 +
  69 +Finally, OpenBR supports automatic linking for abstractions found in comments. For example, Transform will automatically become [Transform](api_docs/cpp_api/transform/transform.md). Plural words like Transforms will also be linked but possesives like Tranform's will not.
  70 +
  71 +---
  72 +
  73 +## Contributing to the API
  74 +
  75 +You should contribute to the API if you want to add a new abstraction or extend an existing abstraction with new functionality. Please note, this occurs *very* *very* rarely. Our goal is to leave the core API as stable and consistent as possible and change only the surrounding plugins. If you believe your idea offers exciting new functionality or greatly increases efficiency please [open an issue](https://github.com/biometrics/openbr/issues) so that it can be discussed as a community.
0 76 \ No newline at end of file
... ...
docs/docs/contributors.md 0 โ†’ 100644
  1 +<!-- Contributors -->
  2 +
  3 +[jklontz]: https://github.com/jklontz "Joshua C. Klontz, jklontz@ieee.org"
  4 +[mburge]: https://github.com/mburge "Dr. Mark J. Burge mburge@gmail.com"
  5 +[bklare]: https://github.com/bklare "Dr. Brendan F. Klare brendan.klare@ieee.org"
  6 +[mmtaborsky]: https://github.com/mmtaborsky "M. M. Taborsky mmtaborsky@gmail.com"
  7 +[sklum]: https://github.com/sklum "Scott J. Klum scott.klum@gmail.com"
  8 +[caotto]: https://github.com/caotto "Charles A. Otto ottochar@gmail.com"
  9 +[lbestrowden]: https://github.com/lbestrowden "Lacey S. Best-Rowden bestrow1@msu.edu"
  10 +[imaus10]: https://github.com/imaus10 "Austin Van Blanton imaus10@gmail.com"
  11 +[dgcrouse]: https://github.com/dgcrouse "David G. Crouse dgcrouse@gmail.com"
  12 +[baba1472]: https://github.com/baba1472 "Babatunde Ogunfemi ogunfemi.b@gmail.com"
  13 +[jcheney]: https://github.com/JordanCheney "Jordan Cheney jordan.cheney@gmail.com"
... ...
docs/docs/docs/cpp_api/file/file.md deleted
1   -# File
2   -
3   -A file path with associated metadata.
4   -
5   -See:
6   -
7   -* [Members](members.md)
8   -* [Constructors](constructors.md)
9   -* [Static Functions](statics.md)
10   -* [Functions](functions.md)
11   -
12   -The File is one of two important data structures in OpenBR (the [Template](../template/template.md) is the other).
13   -It is typically used to store the path to a file on disk with associated metadata.
14   -The ability to associate a key/value metadata table with the file helps keep the API simple while providing customizable behavior.
15   -
16   -When querying the value of a metadata key, the value will first try to be resolved against the file's private metadata table.
17   -If the key does not exist in its local table then it will be resolved against the properties in the global Context.
18   -By design file metadata may be set globally using Context::setProperty to operate on all files.
19   -
20   -Files have a simple grammar that allow them to be converted to and from strings.
21   -If a string ends with a **]** or **)** then the text within the final **[]** or **()** are parsed as comma separated metadata fields.
22   -By convention, fields within **[]** are expected to have the format <tt>[key1=value1, key2=value2, ..., keyN=valueN]</tt> where order is irrelevant.
23   -Fields within **()** are expected to have the format <tt>(value1, value2, ..., valueN)</tt> where order matters and the key context dependent.
24   -The left hand side of the string not parsed in a manner described above is assigned to [name](members.md#name).
25   -
26   -Values are not necessarily stored as strings in the metadata table.
27   -The system will attempt to infer and convert them to their "native" type.
28   -The conversion logic is as follows:
29   -
30   -1. If the value starts with **[** and ends with **]** then it is treated as a comma separated list and represented with [QVariantList][QVariantList]. Each value in the list is parsed recursively.
31   -2. If the value starts with **(** and ends with **)** and contains four comma separated elements, each convertable to a floating point number, then it is represented with [QRectF][QRectF].
32   -3. If the value starts with **(** and ends with **)** and contains two comma separated elements, each convertable to a floating point number, then it is represented with [QPointF][QPointF].
33   -4. If the value is convertable to a floating point number then it is represented with <tt>float</tt>.
34   -5. Otherwise, it is represented with [QString][QString].
35   -
36   -Metadata keys fall into one of two categories:
37   -* camelCaseKeys are inputs that specify how to process the file.
38   -* Capitalized_Underscored_Keys are outputs computed from processing the file.
39   -
40   -Below are some of the most commonly occurring standardized keys:
41   -
42   -Key | Value | Description
43   ---- | ---- | -----------
44   -name | QString | Contents of [name](members.md#name)
45   -separator | QString | Separate [name](members.md#name) into multiple files
46   -Index | int | Index of a template in a template list
47   -Confidence | float | Classification/Regression quality
48   -FTE | bool | Failure to enroll
49   -FTO | bool | Failure to open
50   -\*_X | float | Position
51   -\*_Y | float | Position
52   -\*_Width | float | Size
53   -\*_Height | float | Size
54   -\*_Radius | float | Size
55   -Label | QString | Class label
56   -Theta | float | Pose
57   -Roll | float | Pose
58   -Pitch | float | Pose
59   -Yaw | float | Pose
60   -Points | QList&lt;QPointF&gt; | List of unnamed points
61   -Rects | QList&lt;Rect&gt; | List of unnamed rects
62   -Age | float | Age used for demographic filtering
63   -Gender | QString | Subject gender
64   -Train | bool | The data is for training, as opposed to enrollment
65   -_\* | \* | Reserved for internal use
docs/docs/docs/cpp_api/transform/statics.md deleted
1   -## [Transform](transform.md) \*make([QString][QString] str, [QObject][QObject] \*parent) {: #make }
2   -
3   -Make a transform from a string. This function converts the abbreviation characters **+**, **/**, **{}**, **<\>**, and **()** into their full-length alternatives.
4   -
5   -Abbreviation | Translation
6   ---- | ---
7   -\+ | [PipeTransform](../../plugins/core.md#pipetransform). Each [Transform](transform.md) linked by a **+** is turned into a child of a single [PipeTransform](../../plugins/core.md#pipetransform). "Example1+Example2" becomes "Pipe([Example1,Example2])". [Templates](../template/template.md) are projected through the children of a pipe in series, the output of one become the input of the next.
8   -/ | [ForkTransform](../../plugins/core.md#forktransform). Each [Transform](transform.md) linked by a **/** is turned into a child of a single [ForkTransform](../../plugins/core.md#forktransform). "Example1/Example2" becomes "Fork([Example1,Example2])". [Templates](../template/template.md) are projected the children of a fork in parallel, each receives the same input and the outputs are merged together.
9   -\{\} | [CacheTransform](../../plugins/core.md#cachetransform). Can only surround a single [Transform](transform.md). "{Example}" becomes "Cache(Example)". The results of a cached [Transform](transform.md) are stored in a global cache using the [file](../object/members.md#file) name as a key.
10   -<> | [LoadStoreTransform](../../plugins/core.md#loadstoretransform). Can only surround a single [Transform](transform.md). "<Example>" becomes "LoadStore(Example)". Serialize and store a [Transform](transform.md) after training or deserialize and load a [Transform](transform.md) before projecting.
11   -() | Order of operations. Change the order of operations using parantheses.
12   -
13   -The parsed string is then passed to [Factory](../factory/factory.md)::[make](../factory/statics.md#make) to be turned into a transform.
14   -
15   -* **function definition:**
16   -
17   - static Transform *make(QString str, QObject *parent)
18   -
19   -* **parameters:**
20   -
21   - Parameter | Type | Description
22   - --- | --- | ---
23   - str | [QString][QString] | String describing the transform
24   - parent | [QObject][QObject] \* | Parent of the object to be created
25   -
26   -* **output:** ([Transform](transform.md) \*) Returns a pointer to the [Transform](transform.md) described by the string
27   -* **see:** [Factory::make](../factory/statics.md#make)
28   -* **example:**
29   -
30   - Transform::make("Example1+Example2+<ModelFile>")->description(); // returns "Pipe(transforms=[Example1,Example2,LoadStore(ModelFile)])".
31   -
32   -
33   -## [QSharedPointer][QSharedPointer]&lt;[Transform](transform.md)&gt; fromAlgorithm(const [QString][QString] &algorithm, bool preprocess=false) {: #fromalgorithm }
34   -
35   -Create a [Transform](transform.md) from an OpenBR algorithm string. The [Transform](transform.md) is created using everything to the left of a **:** or a **!** in the string.
36   -
37   -* **function definition:**
38   -
39   - static QSharedPointer<Transform> fromAlgorithm(const QString &algorithm, bool preprocess=false)
40   -
41   -* **parameters:**
42   -
43   - Parameter | Type | Description
44   - --- | --- | ---
45   - algorithm | const [QString][QString] & | Algorithm string to construct the [Transform](transform.md) from
46   - preprocess | bool | (Optional) If true add a [StreamTransform](../../plugins/core.md#streamtransform) as the parent of the constructed [Transform](transform.md). Default is false.
47   -
48   -* **output:** ([QSharedPointer][QSharedPointer]&lt;[Transform](transform.md)&gt;) Returns a pointer to the [Transform](transform.md) described by the algorithm.
49   -* **example:**
50   -
51   - Transform::fromAlgorithm("EnrollmentTransform:Distance")->decription(); // returns "EnrollmentTransform"
52   - Transform::fromAlgorithm("EnrollmentTransform!DistanceTransform")->decription(); // returns "EnrollmentTransform"
53   - Transform::fromAlgorithm("EnrollmentTransform")->decription(); // returns "EnrollmentTransform"
54   -
55   -## [QSharedPointer][QSharedPointer]<[Transform](transform.md)> fromComparison(const [QString][QString] &algorithm) {: #fromcomparison }
56   -
57   -Create a[Transform](transform.md) from an OpenBR algorithm string. The [Transform](transform.md) is created using everything to the right of a **:** or a **!** in the string. If the separating symbol is a **:** the string to the right describes a distance. It is converted to a [GalleryCompareTransform](../../plugins/core.md#gallerycomparetransform) with the distance stored as a property. If the separating symbol is a **!** the string already describes a transform and is unchanged.
58   -
59   -* **function definition:**
60   -
61   - static QSharedPointer<Transform> fromComparison(const QString &algorithm)
62   -
63   -* **parameters:**
64   -
65   - Parameter | Type | Description
66   - --- | --- | ---
67   - algorithm | const [QString][QString] & | Algorithm string to construct the [Transform](transform.md) from
68   -
69   -* **output:** ([QSharedPointer][QSharedPointer]&lt;[Transform](transform.md)&gt;) Returns a pointer to the [Transform](transform.md) described by the algorithm.
70   -* **example:**
71   -
72   - Transform::fromAlgorithm("EnrollmentTransform:Distance")->description(); // returns "GalleryCompare(distance=Distance)""
73   - Transform::fromAlgorithm("EnrollmentTransform!DistanceTransform"); // returns "DistanceTransform"
74   -
75   -
76   -## [Transform](transform.md) \*deserialize([QDataStream][QDataStream] &stream) {: #deserialize }
77   -
78   -Deserialize a [Transform](transform.md) from a stream.
79   -
80   -* **function definition:**
81   -
82   - static Transform *deserialize(QDataStream &stream)
83   -
84   -* **parameters:**
85   -
86   - Parameter | Type | Description
87   - --- | --- | ---
88   - stream | [QDataStream][QDataStream] & | Stream containing the serialized transform
89   -
90   -* **output:** ([Transform](transform.md) \*) Returns the deserialized transform
91   -
92   -
93   -## [Template](../template/template.md) &operator&gt;&gt;([Template](../template/template.md) &srcdst, const [Transform](transform.md) &f) {: #template-operater-gtgt-1 }
94   -
95   -Convenience function for [project](functions.md#project-1)
96   -
97   -* **function definition:**
98   -
99   - inline Template &operator>>(Template &srcdst, const Transform &f)
100   -
101   -* **parameters:**
102   -
103   - Parameter | Type | Description
104   - --- | --- | ---
105   - srcdst | [Template](../template/template.md) & | Input template. Will be overwritten with the output following call to [project](functions.md#project-1)
106   - f | const [Transform](transform.md) & | [Transform](transform.md) to project through.
107   -
108   -* **output:** ([Template](../template/template.md) &) Returns the output of f::[project](functions.md#project-1)
109   -* **example:**
110   -
111   - Template t("picture1.jpg");
112   - Transform *transform = Transform::make("Example", NULL);
113   -
114   - t >> *transform; // projects t through Example. t is overwritten with the output of the project call
115   -
116   -<!--no italics* -->
117   -
118   -## [TemplateList](../templatelist/templatelist.md) &operator&gt;&gt;([TemplateList](../templatelist/templatelist.md) &srcdst, const [Transform](transform.md) &f) {: #template-operater-gtgt-2 }
119   -
120   -Convenience function for [project](functions.md#project-2)
121   -
122   -* **function definition:**
123   -
124   - inline TemplateList &operator>>(TemplateList &srcdst, const Transform &f)
125   -
126   -* **parameters:**
127   -
128   - Parameter | Type | Description
129   - --- | --- | ---
130   - srcdst | [TemplateList](../templatelist/templatelist.md) & | Input templates. Will be overwritten with the output following call to [project](functions.md#project-2)
131   - f | const [Transform](transform.md) & | [Transform](transform.md) to project through.
132   -
133   -* **output:** ([TemplateList](../templatelist/templatelist.md) &) Returns the output of f::[project](functions.md#project-2)
134   -* **example:**
135   -
136   - TemplateList tList(QList<Template>() << Template("picture1.jpg"));
137   - Transform *transform = Transform::make("Example", NULL);
138   -
139   - tList >> *transform; // projects tList through Example. tList is overwritten with the output of the project call
140   -
141   -<!--no italics* -->
142   -
143   -## [QDataStream][QDataStream] &operator&lt;&lt;([QDataStream][QDataStream] &stream, const [Transform](transform.md) &f) {: #stream-operator-ltlt}
144   -
145   -Convenience function for [store](../object/functions.md#store)
146   -
147   -* **function definition:**
148   -
149   - inline QDataStream &operator<<(QDataStream &stream, const Transform &f)
150   -
151   -* **parameters:**
152   -
153   - Parameter | Type | Description
154   - --- | --- | ---
155   - stream | [QDataStream][QDataStream] & | Stream to store the transform in
156   - f | const [Transform](transform.md) & | Transform to be stored
157   -
158   -* **output:** ([QDataStream][QDataStream] &) Returns the stream with the transform stored in it
159   -* **example:**
160   -
161   - Transform *transform = Transform::make("Example(property1=value1,property2=value2)");
162   -
163   - QDataStream stream;
164   - stream << *transform; // stores "Example(property1=value1,property2=value2)" in the stream
165   -
166   -<!--no italics* -->
167   -
168   -## [QDataStream][QDataStream] &operator&gt;&gt;([QDataStream][QDataStream] &stream, const [Transform](transform.md) &f) {: #stream-operator-gtgt}
169   -
170   -Convenience function for [load](../object/functions.md#load)
171   -
172   -* **function definition:**
173   -
174   - inline QDataStream &operator>>(QDataStream &stream, const Transform &f)
175   -
176   -* **parameters:**
177   -
178   - Parameter | Type | Description
179   - --- | --- | ---
180   - stream | [QDataStream][QDataStream] & | Stream to load the transform from
181   - f | const [Transform](transform.md) & | Transform to store loaded information
182   -
183   -* **output:** ([QDataStream][QDataStream] &) Returns the stream without the transform data
184   -* **example:**
185   -
186   - Transform *in = Transform::make("Example(property1=value1,property2=value2)");
187   -
188   - QDataStream stream;
189   - stream << *in; // stores "Example(property1=value1,property2=value2)" in the stream
190   -
191   - Transform out;
192   - stream >> out;
193   - out->description(); // returns "Example(property1=value1,property2=value2)"
docs/docs/misc/MBGC_file_overview.pdf 0 โ†’ 100644
No preview for this file type
docs/docs/technical.md
... ... @@ -83,10 +83,10 @@ The *Biometric Evaluation Environment* (BEE) is a [NIST](http://www.nist.gov/ind
83 83  
84 84 OpenBR implements the following portions of the BEE specification:
85 85  
86   -* Signature Set- A signature set (or *sigset*) is a [Gallery](api_docs/cpp_api/gallery/gallery.md) compliant **XML** file-list specified on page 9 of [MBGC File Overview](DOCUMENT ME) and implemented in [xmlGallery](api_docs/plugins/gallery.md#xmlgallery). Sigsets are identified with a **.xml** extension.
  86 +* Signature Set- A signature set (or *sigset*) is a [Gallery](api_docs/cpp_api/gallery/gallery.md) compliant **XML** file-list specified on page 9 of the [MBGC File Overview](misc/MBGC_file_overview.pdf) and implemented in [xmlGallery](api_docs/plugins/gallery.md#xmlgallery). Sigsets are identified with a **.xml** extension.
87 87  
88   -* Similarity Matrix- A similarity matrix (or *simmat*) is an [Output](api_docs/cpp_api/output/output.md) compliant binary score matrix specified on page 12 of [MBGC File Overview](DOCUMENT ME) and implemented in [mtxOutput](api_docs/plugins/output.md#mtxoutput). Simmats are identified with a **.mtx** extension. See [br_eval](api_docs/c_api/functions.md#br_eval) for more information.
  88 +* Similarity Matrix- A similarity matrix (or *simmat*) is an [Output](api_docs/cpp_api/output/output.md) compliant binary score matrix specified on page 12 of the [MBGC File Overview](misc/MBGC_file_overview.pdf) and implemented in [mtxOutput](api_docs/plugins/output.md#mtxoutput). Simmats are identified with a **.mtx** extension. See [br_eval](api_docs/c_api/functions.md#br_eval) for more information.
89 89  
90   -* Mask Matrix- A mask matrix (or *mask*) is a binary matrix specified on page 14 of [MBGC File Overview](DOCUMENT ME) identifying the ground truth genuines and impostors of a corresponding *simmat*. Masks are identified with a **.mask** extension. See [br_make_mask](api_docs/c_api/functions.md#br_make_mask) and [br_combine_masks](api_docs/c_api/functions.md#br_combine_masks) for more information.
  90 +* Mask Matrix- A mask matrix (or *mask*) is a binary matrix specified on page 14 of the [MBGC File Overview](misc/MBGC_file_overview.pdf) identifying the ground truth genuines and impostors of a corresponding *simmat*. Masks are identified with a **.mask** extension. See [br_make_mask](api_docs/c_api/functions.md#br_make_mask) and [br_combine_masks](api_docs/c_api/functions.md#br_combine_masks) for more information.
91 91  
92 92 ---
... ...
docs/mkdocs.yml
... ... @@ -6,6 +6,7 @@ copyright: 2012 The MITRE Corporation
6 6 theme: readthedocs
7 7 theme_dir: themes/readthedocs/
8 8 links_file: docs/links.md
  9 +contributors_file: docs/contributors.md
9 10  
10 11 include_search: True
11 12 include_next_prev: False
... ... @@ -89,7 +90,6 @@ pages:
89 90 - [api_docs/cpp_api/initializer/statics.md, Initializer, Static Functions]
90 91 - [api_docs/cpp_api/initializer/functions.md, Initializer, Functions]
91 92  
92   -
93 93 # Transform
94 94 - [api_docs/cpp_api/transform/transform.md, C++ Plugin API, Transform]
95 95 - [api_docs/cpp_api/transform/members.md, Transform, Members]
... ... @@ -135,6 +135,12 @@ pages:
135 135 # TimeVaryingTransform
136 136 - [api_docs/cpp_api/timevaryingtransform/timevaryingtransform.md, C++ Plugin API, TimeVaryingTransform]
137 137  
  138 +# CompositeTransform
  139 +- [api_docs/cpp_api/compositetransform/compositetransform.md, C++ Plugin API, CompositeTransform]
  140 +
  141 +# WrapperTransform
  142 +- [api_docs/cpp_api/wrappertransform/wrappertransform.md, C++ Plugin API, WrapperTransform]
  143 +
138 144 # Distance
139 145 - [api_docs/cpp_api/distance/distance.md, C++ Plugin API, Distance]
140 146 - [api_docs/cpp_api/distance/members.md, Distance, Members]
... ... @@ -181,6 +187,10 @@ pages:
181 187  
182 188 # FileGallery
183 189 - [api_docs/cpp_api/filegallery/filegallery.md, C++ Plugin API, FileGallery]
  190 +- [api_docs/cpp_api/filegallery/members.md, FileGallery, Members]
  191 +- [api_docs/cpp_api/filegallery/constructors.md, FileGallery, Constructors]
  192 +- [api_docs/cpp_api/filegallery/statics.md, FileGallery, Static Functions]
  193 +- [api_docs/cpp_api/filegallery/functions.md, FileGallery, Functions]
184 194  
185 195 # Representation
186 196 - [api_docs/cpp_api/representation/representation.md, C++ Plugin API, Representation]
... ...
docs/scripts/check_links.py
... ... @@ -72,13 +72,19 @@ def parse(path, html):
72 72 def check(headers, links):
73 73 for f, file_links in links.items():
74 74 for link in file_links:
75   - if link.http:
  75 + if link.http: # Can't check links to other websites
76 76 continue
77 77  
78 78 link_file = f
79 79 if link.file:
80 80 link_file = link.file
81 81  
  82 + if link_file.endswith('.pdf'):
  83 + if not os.path.exists(link_file):
  84 + print 'BAD PDF: ' + link_file + ' DOES NOT EXIST'
  85 + print
  86 + continue
  87 +
82 88 if link_file not in headers:
83 89 print 'BAD FILE IN ' + f + ':', link_file
84 90 print
... ...
docs/scripts/generate_plugin_docs.py
1   -import os
  1 +import os, sys
2 2 import re
3 3  
  4 +abstractions = ['FileList', 'File',
  5 + 'TemplateList', 'Template',
  6 + 'UntrainableTransform',
  7 + 'MetaTransform', 'UntrainableMetaTransform',
  8 + 'MetadataTransform', 'UntrainableMetadataTransform',
  9 + 'TimeVaryingTransform',
  10 + 'CompositeTransform', 'WrapperTransform',
  11 + 'Transform',
  12 + 'UntrainableDistance', 'Distance',
  13 + 'MatrixOutput', 'Output',
  14 + 'Format',
  15 + 'FileGallery', 'Gallery',
  16 + 'Representation',
  17 + 'Classifier'
  18 + ]
  19 +
4 20 def subfiles(path):
5 21 return [name for name in os.listdir(path) if os.path.isfile(os.path.join(path, name)) and not name[0] == '.']
6 22  
... ... @@ -21,14 +37,15 @@ def parse(group):
21 37 if len(clss) == 0 or 'class' not in clss:
22 38 return None
23 39  
24   - blocks = docsMatch.group().split('\\')[1:]
  40 + clean_docs = docsMatch.group()[3:-2].replace('*', ' ').strip()
  41 + blocks = clean_docs.split('\\')[1:]
25 42 if len(blocks) == 0:
26 43 return None
27 44  
28 45 attributes = {}
29 46 for block in blocks:
30 47 key = block[:block.find(' ')]
31   - value = block[block.find(' '):].split('\n')[0].strip()
  48 + value = block[block.find(' '):].strip()
32 49 if key in attributes:
33 50 attributes[key].append(value)
34 51 else:
... ... @@ -38,51 +55,91 @@ def parse(group):
38 55 attributes['Parent'] = clss[clss.find('public')+6:].strip().strip(',') # Handles the edge case of multiple inheritence
39 56 return attributes
40 57  
41   -def parseInheritance(inheritance):
42   - abstractions = ['Transform', 'UntrainableTransform',
43   - 'MetaTransform', 'UntrainableMetaTransform',
44   - 'MetadataTransform', 'UntrainableMetadataTransform',
45   - 'TimeVaryingTransform',
46   - 'Distance', 'UntrainableDistance',
47   - 'Output', 'MatrixOutput',
48   - 'Format',
49   - 'Gallery', 'FileGallery',
50   - 'Representation',
51   - 'Classifier'
52   - ]
  58 +def parseBrief(briefs):
  59 + if not briefs:
  60 + print 'All plugins need a description!'
  61 + sys.exit(1)
  62 +
  63 + output = ""
  64 + for brief in briefs:
  65 + for abstraction in abstractions:
  66 + regex = re.compile('\s' + abstraction + "'?s?")
  67 +
  68 + matches = regex.finditer(brief)
  69 + for match in matches:
  70 + name = ' [' + abstraction + ']'
  71 + link = '(../cpp_api/' + abstraction.lower() + '/' + abstraction.lower() + '.md)'
  72 + brief = brief.replace(match.group(), name + link).strip() # strip removes a possible leading whitespace
  73 +
  74 + for line in brief.split('\n'):
  75 + if not line.strip():
  76 + output += "\n"
  77 + else:
  78 + output += line.strip() + "\n"
  79 +
  80 + output += ' '
  81 +
  82 + return output + '\n\n'
53 83  
  84 +def parseInheritance(inheritance):
54 85 if inheritance in abstractions:
55 86 return '../cpp_api/' + inheritance.lower() + '/' + inheritance.lower() + '.md'
56 87 else: # Not an abstraction must inherit in the local file!
57 88 return '#' + inheritance.lower()
58 89  
59   -def parseSees(sees):
60   - if not sees:
  90 +def parseLinks(links):
  91 + if not links:
61 92 return ""
62 93  
63 94 output = "* **see:**"
64   - if len(sees) > 1:
  95 + if len(links) > 1:
65 96 output += "\n\n"
66   - for see in sees:
67   - output += "\t* [" + see + "](" + see + ")\n"
  97 + for link in links:
  98 + output += "\t* [" + link + "](" + link + ")\n"
68 99 output += "\n"
69 100 else:
70   - link = sees[0]
71   - if not 'http' in link:
72   - link = '#' + link.lower()
73   - output += " [" + sees[0] + "](" + link + ")\n"
  101 + output += " [" + links[0] + "](" + links[0] + ")\n"
74 102  
75 103 return output
76 104  
77   -def parseAuthors(authors):
  105 +def parsePapers(papers):
  106 + if not papers:
  107 + return ""
  108 +
  109 + output = "* **read:**\n\n"
  110 + for i in range(len(papers)):
  111 + info = papers[i].split('\n')
  112 + authors = info[0].strip()
  113 + title = None
  114 + other = None
  115 + if len(info) >= 2:
  116 + title = info[1].strip()
  117 + if len(info) >= 3:
  118 + other = info[2].strip()
  119 +
  120 + output += "\t" + str(i+1) + ". *" + authors + "*\n"
  121 + if title:
  122 + output += "\t **" + title + "**\n"
  123 + if other:
  124 + output += "\t " + other + "\n"
  125 + output += "\n"
  126 +
  127 + return output
  128 +
  129 +def parseAuthors(authors, citations):
78 130 if not authors:
79   - return "* **authors:** None\n"
  131 + print 'All plugins need an author!'
  132 + sys.exit(1)
80 133  
81   - output = "* **author"
82   - if len(authors) > 1:
83   - output += "s:** " + ", ".join(authors) + "\n"
84   - else:
85   - output += ":** " + authors[0] + "\n"
  134 + if len(authors) != len(citations):
  135 + print 'Different number of authors and citations!'
  136 + print authors, citations
  137 + return "* **authors:** PARSING ERROR\n"
  138 +
  139 + output = "* **author(s):** "
  140 + for i in range(len(authors)):
  141 + output += "[" + authors[i] + "][" + citations[i] + "], "
  142 + output = output[:-2] + "\n"
86 143  
87 144 return output
88 145  
... ... @@ -91,8 +148,8 @@ def parseProperties(properties):
91 148 return "* **properties:** None\n\n"
92 149  
93 150 output = "* **properties:**\n\n"
94   - output += "Property | Type | Description\n"
95   - output += "--- | --- | ---\n"
  151 + output += "\tProperty | Type | Description\n"
  152 + output += "\t--- | --- | ---\n"
96 153 for prop in properties:
97 154 split = prop.split(' ')
98 155 ty = split[0]
... ... @@ -115,13 +172,46 @@ def parseProperties(properties):
115 172 desc = before.strip() + table + after.strip()
116 173 table_match = table_regex.search(desc)
117 174  
118   - output += name + " | " + ty + " | " + desc + "\n"
  175 + output += "\t" + name + " | " + ty + " | " + desc + "\n"
119 176  
120 177 return output
121 178  
  179 +def parseFormats(formats):
  180 + if not formats:
  181 + return ""
  182 +
  183 + output = "* **format:** "
  184 + for f in formats:
  185 + in_raw = False
  186 + for line in f.split('\n'):
  187 + if not line.strip():
  188 + output += "<pre><code>" if not in_raw else "</code></pre>"
  189 + in_raw = not in_raw
  190 + continue
  191 +
  192 + clean_line = line.strip()
  193 +
  194 + # <> are often used describing formats. Unfortunately they are also html tags.
  195 + # So we need to replace them with safe alternatives
  196 + if '<' in clean_line:
  197 + clean_line = clean_line.replace('<', '&lt;')
  198 + if '>' in clean_line:
  199 + clean_line = clean_line.replace('>', '&gt;')
  200 +
  201 + output += clean_line
  202 + if in_raw:
  203 + output += "\n"
  204 + else:
  205 + output += ' '
  206 +
  207 + if in_raw:
  208 + output += "</code></pre>"
  209 +
  210 + return output + "\n"
  211 +
122 212 def main():
123 213 plugins_dir = '../../openbr/plugins/'
124   - output_dir = '../docs/docs/plugins/'
  214 + output_dir = '../docs/api_docs/plugins/'
125 215  
126 216 for module in subdirs(plugins_dir):
127 217 if module == "cmake":
... ... @@ -143,14 +233,18 @@ def main():
143 233 if not attributes or (attributes and attributes["Parent"] == "Initializer"):
144 234 continue
145 235  
  236 + print 'documenting ' + module + "/" + plugin + '...'
  237 +
146 238 plugin_string = "# " + attributes["Name"] + "\n\n"
147   - plugin_string += ' '.join([brief for brief in attributes["brief"]]) + "\n\n"
  239 + plugin_string += parseBrief(attributes.get("brief", None))
148 240 plugin_string += "* **file:** " + os.path.join(module, plugin) + "\n"
149 241 plugin_string += "* **inherits:** [" + attributes["Parent"] + "](" + parseInheritance(attributes["Parent"]) + ")\n"
150 242  
151   - plugin_string += parseSees(attributes.get("see", None))
152   - plugin_string += parseAuthors(attributes.get("author", None))
153   - plugin_string += parseProperties(attributes.get("property", None))
  243 + plugin_string += parseAuthors(attributes.get("author", None), attributes.get("cite", None))
  244 + plugin_string += parseLinks(attributes.get("br_link", None))
  245 + plugin_string += parsePapers(attributes.get("br_paper", None))
  246 + plugin_string += parseFormats(attributes.get("br_format", None))
  247 + plugin_string += parseProperties(attributes.get("br_property", None))
154 248  
155 249 plugin_string += "\n---\n\n"
156 250  
... ...
docs/themes/readthedocs/css/theme_extra.css
... ... @@ -10,6 +10,9 @@ h3, h4, h5, h6 {
10 10 font-weight: 300
11 11 }
12 12  
  13 +p {
  14 + font-size: 90%;
  15 +}
13 16 /*
14 17 * Sphinx doesn't have support for section dividers like we do in
15 18 * MkDocs, this styles the section titles in the nav
... ...
openbr/openbr.h
... ... @@ -23,427 +23,96 @@
23 23 extern "C" {
24 24 #endif
25 25  
26   -/*!
27   - * \brief Wraps br::Context::about()
28   - * \see br_version
29   - */
  26 +
30 27 BR_EXPORT const char *br_about();
31 28  
32   -/*!
33   - * \brief Wraps br::Cat()
34   - */
35 29 BR_EXPORT void br_cat(int num_input_galleries, const char *input_galleries[], const char *output_gallery);
36 30  
37   -/*!
38   - * \brief Removes duplicate templates in a gallery.
39   - * \param input_gallery Gallery to be deduplicated.
40   - * \param output_gallery Deduplicated gallery.
41   - * \param threshold Comparisons with a match score >= this value are designated to be duplicates.
42   - * \note If a gallery contains n duplicates, the first n-1 duplicates in the gallery will be removed and the nth will be kept.
43   - * \note Users are encouraged to use binary gallery formats as the entire gallery is read into memory in one call to Gallery::read.
44   - */
45 31 BR_EXPORT void br_deduplicate(const char *input_gallery, const char *output_gallery, const char *threshold);
46 32  
47   -/*!
48   - * \brief Clusters one or more similarity matrices into a list of subjects.
49   - *
50   - * A similarity matrix is a type of br::Output. The current clustering algorithm is a simplified implementation of \cite zhu11.
51   - * \param num_simmats Size of \c simmats.
52   - * \param simmats Array of \ref simmat composing one large self-similarity matrix arranged in row major order.
53   - * \param aggressiveness The higher the aggressiveness the larger the clusters. Suggested range is [0,10].
54   - * \param csv The cluster results file to generate. Results are stored one row per cluster and use gallery indices.
55   - */
56 33 BR_EXPORT void br_cluster(int num_simmats, const char *simmats[], float aggressiveness, const char *csv);
57 34  
58   -/*!
59   - * \brief Combines several equal-sized mask matrices.
60   - * \param num_input_masks Size of \c input_masks
61   - * \param input_masks Array of \ref mask to combine.
62   - * All matrices must have the same dimensions.
63   - * \param output_mask The file to contain the resulting \ref mask.
64   - * \param method Either:
65   - * - \c And - Ignore comparison if \em any input masks ignore.
66   - * - \c Or - Ignore comparison if \em all input masks ignore.
67   - * \note A comparison may not be simultaneously identified as both a genuine and an impostor by different input masks.
68   - * \see br_make_mask
69   - */
70 35 BR_EXPORT void br_combine_masks(int num_input_masks, const char *input_masks[], const char *output_mask, const char *method);
71 36  
72   -/*!
73   - * \brief Compares each template in the query gallery to each template in the target gallery.
74   - * \param target_gallery The br::Gallery file whose templates make up the columns of the output.
75   - * \param query_gallery The br::Gallery file whose templates make up the rows of the output.
76   - * A value of '.' reuses the target gallery as the query gallery.
77   - * \param output Optional br::Output file to contain the results of comparing the templates.
78   - * The default behavior is to print scores to the terminal.
79   - * \see br_enroll
80   - */
81 37 BR_EXPORT void br_compare(const char *target_gallery, const char *query_gallery, const char *output = "");
82 38  
83   -/*!
84   - * \brief Convenience function for comparing to multiple targets.
85   - * \see br_compare
86   - */
87 39 BR_EXPORT void br_compare_n(int num_targets, const char *target_galleries[], const char *query_gallery, const char *output);
88 40  
89   -/*!
90   - * \brief DOCUMENT ME!
91   - */
92 41 BR_EXPORT void br_pairwise_compare(const char *target_gallery, const char *query_gallery, const char *output = "");
93 42  
94   -/*!
95   - * \brief Wraps br::Convert()
96   - */
97 43 BR_EXPORT void br_convert(const char *file_type, const char *input_file, const char *output_file);
98 44  
99   -/*!
100   - * \brief Constructs template(s) from an input.
101   - * \param input The br::Input set of images to enroll.
102   - * \param gallery The br::Gallery file to contain the enrolled templates.
103   - * By default the gallery will be held in memory and \em input can used as a gallery in \ref br_compare.
104   - * \see br_enroll_n
105   - */
106 45 BR_EXPORT void br_enroll(const char *input, const char *gallery = "");
107 46  
108   -/*!
109   - * \brief Convenience function for enrolling multiple inputs.
110   - * \see br_enroll
111   - */
112 47 BR_EXPORT void br_enroll_n(int num_inputs, const char *inputs[], const char *gallery = "");
113 48  
114   -/*!
115   - * \brief A naive alternative to \ref br_enroll.
116   - */
117 49 BR_EXPORT void br_project(const char *input, const char *output);
118 50  
119   -/*!
120   - * \brief Creates a \c .csv file containing performance metrics from evaluating the similarity matrix using the mask matrix.
121   - * \param simmat The \ref simmat to use.
122   - * \param mask The \ref mask to use.
123   - * \param csv Optional \c .csv file to contain performance metrics.
124   - * \param matches Optional integer number of matches to output around the EER, defualts to 0.
125   - * \return True accept rate at a false accept rate of one in one thousand.
126   - * \see br_plot
127   - */
128 51 BR_EXPORT float br_eval(const char *simmat, const char *mask, const char *csv = "", int matches = 0);
129 52  
130   -/*!
131   - * \brief Evaluates the similarity matrix using the mask matrix. Function aborts ff TAR @ FAR = 0.001 does not meet an expected performance value
132   - * \param simmat The \ref simmat to use.
133   - * \param mask The \ref mask to use.
134   - * \param accuracy Desired true accept rate at false accept rate of one in one thousand.
135   - */
136   - BR_EXPORT void br_assert_eval(const char *simmat, const char *mask, const float accuracy);
137   -
138   -/*!
139   - * \brief Creates a \c .csv file containing performance metrics from evaluating the similarity matrix using galleries containing ground truth labels
140   - * \param simmat The \ref simmat to use.
141   - * \param target the name of a gallery containing metadata for the target set.
142   - * \param query the name of a gallery containing metadata for the query set.
143   - * \param csv Optional \c .csv file to contain performance metrics.
144   - * \return True accept rate at a false accept rate of one in one thousand.
145   - * \see br_plot
146   - */
  53 +BR_EXPORT void br_assert_eval(const char *simmat, const char *mask, const float accuracy);
  54 +
147 55 BR_EXPORT float br_inplace_eval(const char * simmat, const char *target, const char *query, const char *csv = "");
148 56  
149   -/*!
150   - * \brief Evaluates and prints classification accuracy to terminal.
151   - * \param predicted_gallery The predicted br::Gallery.
152   - * \param truth_gallery The ground truth br::Gallery.
153   - * \param predicted_property (Optional) which metadata key to use from <i>predicted_gallery</i>.
154   - * \param truth_property (Optional) which metadata key to use from <i>truth_gallery</i>.
155   - */
156 57 BR_EXPORT void br_eval_classification(const char *predicted_gallery, const char *truth_gallery, const char *predicted_property = "", const char *truth_property = "");
157 58  
158   -/*!
159   - * \brief Evaluates and prints clustering accuracy to the terminal.
160   - * \param csv The cluster results file.
161   - * \param gallery The br::Gallery used to generate the \ref simmat that was clustered.
162   - * \param truth_property (Optional) which metadata key to use from <i>gallery</i/>, defaults to Label
163   - * \see br_cluster
164   - */
165 59 BR_EXPORT void br_eval_clustering(const char *csv, const char *gallery, const char * truth_property);
166 60  
167   -/*!
168   - * \brief Evaluates and prints detection accuracy to terminal.
169   - * \param predicted_gallery The predicted br::Gallery.
170   - * \param truth_gallery The ground truth br::Gallery.
171   - * \param csv Optional \c .csv file to contain performance metrics.
172   - * \param normalize Optional \c bool flag to normalize predicted bounding boxes for improved detection.
173   - * \return Average detection bounding box overlap.
174   - */
175 61 BR_EXPORT float br_eval_detection(const char *predicted_gallery, const char *truth_gallery, const char *csv = "", bool normalize = false, int minSize = 0, int maxSize = 0);
176 62  
177   -/*!
178   - * \brief Evaluates and prints landmarking accuracy to terminal.
179   - * \param predicted_gallery The predicted br::Gallery.
180   - * \param truth_gallery The ground truth br::Gallery.
181   - * \param csv Optional \c .csv file to contain performance metrics.
182   - * \param normalization_index_a Optional first index in the list of points to use for normalization.
183   - * \param normalization_index_b Optional second index in the list of points to use for normalization.
184   - * \param sample_index Optional index for sample landmark image in ground truth gallery.
185   - * \param total_examples Optional number of accurate and inaccurate examples to display.
186   - */
187 63 BR_EXPORT float br_eval_landmarking(const char *predicted_gallery, const char *truth_gallery, const char *csv = "", int normalization_index_a = 0, int normalization_index_b = 1, int sample_index = 0, int total_examples = 5);
188 64  
189   -/*!
190   - * \brief Evaluates regression accuracy to disk.
191   - * \param predicted_gallery The predicted br::Gallery.
192   - * \param truth_gallery The ground truth br::Gallery.
193   - * \param predicted_property (Optional) which metadata key to use from <i>predicted_gallery</i>.
194   - * \param truth_property (Optional) which metadata key to use from <i>truth_gallery</i>.
195   - */
196 65 BR_EXPORT void br_eval_regression(const char *predicted_gallery, const char *truth_gallery, const char *predicted_property = "", const char *truth_property = "");
197 66  
198   -/*!
199   - * \brief Wraps br::Context::finalize()
200   - * \see br_initialize
201   - */
202 67 BR_EXPORT void br_finalize();
203 68  
204   -/*!
205   - * \brief Perform score level fusion on similarity matrices.
206   - * \param num_input_simmats Size of \em input_simmats.
207   - * \param input_simmats Array of \ref simmat. All simmats must have the same dimensions.
208   - * \param normalization Valid options are:
209   - * - \c None - No score normalization.
210   - * - \c MinMax - Scores normalized to [0,1].
211   - * - \c ZScore - Scores normalized to a standard normal curve.
212   - * \param fusion Valid options are:
213   - * - \c Min - Uses the minimum score.
214   - * - \c Max - Uses the maximum score.
215   - * - \c Sum - Sums the scores. Sums can also be weighted: <tt>SumW1:W2:...:Wn</tt>.
216   - * - \c Replace - Replaces scores in the first matrix with scores in the second matrix when the mask is set.
217   - * \param output_simmat \ref simmat to contain the fused scores.
218   - */
219 69 BR_EXPORT void br_fuse(int num_input_simmats, const char *input_simmats[],
220 70 const char *normalization, const char *fusion, const char *output_simmat);
221 71  
222   -/*!
223   - * \brief Wraps br::Context::initialize()
224   - * \see br_finalize
225   - */
226 72 BR_EXPORT void br_initialize(int &argc, char *argv[], const char *sdk_path = "", bool use_gui = false);
227   -/*!
228   - * \brief Wraps br::Context::initialize() with default arguments.
229   - * \see br_finalize
230   - */
  73 +
231 74 BR_EXPORT void br_initialize_default();
232 75  
233   -/*!
234   - * \brief Wraps br::IsClassifier()
235   - */
236 76 BR_EXPORT bool br_is_classifier(const char *algorithm);
237 77  
238   -/*!
239   - * \brief Constructs a \ref mask from target and query inputs.
240   - * \param target_input The target br::Input.
241   - * \param query_input The query br::Input.
242   - * \param mask The file to contain the resulting \ref mask.
243   - * \see br_combine_masks
244   - */
245 78 BR_EXPORT void br_make_mask(const char *target_input, const char *query_input, const char *mask);
246 79  
247   -/*!
248   - * \brief Constructs a \ref mask from target and query inputs considering the target and input sets to be definint pairwise comparisons
249   - * \param target_input The target br::Input.
250   - * \param query_input The query br::Input.
251   - * \param mask The file to contain the resulting \ref mask.
252   - * \see br_combine_masks
253   - */
254 80 BR_EXPORT void br_make_pairwise_mask(const char *target_input, const char *query_input, const char *mask);
255 81  
256   -/*!
257   - * \brief Returns the most recent line sent to stderr.
258   - * \note \ref input_string_buffer
259   - * \see br_progress br_time_remaining
260   - */
261 82 BR_EXPORT int br_most_recent_message(char * buffer, int buffer_length);
262 83  
263   -/*!
264   - * \brief Returns names and parameters for the requested objects.
265   - *
266   - * Each object is \c \\n seperated. Arguments are seperated from the object name with a \c \\t.
267   - * \param abstractions Regular expression of the abstractions to search.
268   - * \param implementations Regular expression of the implementations to search.
269   - * \param parameters Include parameters after object name.
270   - * \note \ref input_string_buffer
271   - * \note This function uses Qt's <a href="http://doc.qt.digia.com/stable/qregexp.html">QRegExp</a> syntax.
272   - */
273 84 BR_EXPORT int br_objects(char * buffer, int buffer_length, const char *abstractions = ".*", const char *implementations = ".*", bool parameters = true);
274 85  
275   -/*!
276   - * \brief Renders recognition performance figures for a set of <tt>.csv</tt> files created by \ref br_eval.
277   - *
278   - * In order of their output, the figures are:
279   - * -# Metadata table
280   - * -# Receiver Operating Characteristic (ROC)
281   - * -# Detection Error Tradeoff (DET)
282   - * -# Score Distribution (SD) histogram
283   - * -# True Accept Rate Bar Chart (BC)
284   - * -# Cumulative Match Characteristic (CMC)
285   - * -# Error Rate (ERR) curve
286   - *
287   - * Two files will be created:
288   - * - <i>destination</i><tt>.R</tt> which is the auto-generated R script used to render the figures.
289   - * - <i>destination</i><tt>.pdf</tt> which has all of the figures in one file multi-page file.
290   - *
291   - * OpenBR uses file and folder names to automatically determine the plot legend.
292   - * For example, let's consider the case where three algorithms (<tt>A</tt>, <tt>B</tt>, & <tt>C</tt>) were each evaluated on two datasets (<tt>Y</tt> & <tt>Z</tt>).
293   - * The suggested way to plot these experiments on the same graph is to create a folder named <tt>Algorithm_Dataset</tt> that contains the six <tt>.csv</tt> files produced by br_eval <tt>A_Y.csv</tt>, <tt>A_Z.csv</tt>, <tt>B_Y.csv</tt>, <tt>B_Z.csv</tt>, <tt>C_Y.csv</tt>, & <tt>C_Z.csv</tt>.
294   - * The '<tt>_</tt>' character plays a special role in determining the legend title(s) and value(s).
295   - * In this case, <tt>A</tt>, <tt>B</tt>, & <tt>C</tt> will be identified as different values of type <tt>Algorithm</tt>, and each will be assigned its own color; <tt>Y</tt> & <tt>Z</tt> will be identified as different values of type Dataset, and each will be assigned its own line style.
296   - * Matches around the EER will be displayed if the matches parameter is set in \ref br_eval.
297   - *
298   - * \param num_files Number of <tt>.csv</tt> files.
299   - * \param files <tt>.csv</tt> files created using \ref br_eval.
300   - * \param destination Basename for the resulting figures.
301   - * \param show Open <i>destination</i>.pdf using the system's default PDF viewer.
302   - * \return Returns \c true on success. Returns false on a failure to compile the figures due to a missing, out of date, or incomplete \c R installation.
303   - * \note This function requires a current <a href="http://www.r-project.org/">R</a> installation with the following packages:
304   - * \code install.packages(c("ggplot2", "gplots", "reshape", "scales", "jpg", "png")) \endcode
305   - * \see br_eval
306   - */
307 86 BR_EXPORT bool br_plot(int num_files, const char *files[], const char *destination, bool show = false);
308 87  
309   -/*!
310   - * \brief Renders detection performance figures for a set of <tt>.csv</tt> files created by \ref br_eval_detection.
311   - *
312   - * In order of their output, the figures are:
313   - * -# Discrete Receiver Operating Characteristic (DiscreteROC)
314   - * -# Continuous Receiver Operating Characteristic (ContinuousROC)
315   - * -# Discrete Precision Recall (DiscretePR)
316   - * -# Continuous Precision Recall (ContinuousPR)
317   - * -# Bounding Box Overlap Histogram (Overlap)
318   - * -# Average Overlap Table (AverageOverlap)
319   - * -# Average Overlap Heatmap (AverageOverlap)
320   - *
321   - * Detection accuracy is measured with <i>overlap fraction = bounding box intersection / union</i>.
322   - * When computing <i>discrete</i> curves, an overlap >= 0.5 is considered a true positive, otherwise it is considered a false negative.
323   - * When computing <i>continuous</i> curves, true positives and false negatives are measured fractionally as <i>overlap</i> and <i>1-overlap</i> respectively.
324   - *
325   - * \see br_plot
326   - */
327 88 BR_EXPORT bool br_plot_detection(int num_files, const char *files[], const char *destination, bool show = false);
328 89  
329   -/*!
330   - * \brief Renders landmarking performance figures for a set of <tt>.csv</tt> files created by \ref br_eval_landmarking.
331   - *
332   - * In order of their output, the figures are:
333   - * -# Cumulative landmarks less than normalized error (CD)
334   - * -# Normalized error box and whisker plots (Box)
335   - * -# Normalized error violin plots (Violin)
336   - *
337   - * Landmarking error is normalized against the distance between two predifined points, usually inter-ocular distance (IOD).
338   - *
339   - * \see br_plot
340   - */
341 90 BR_EXPORT bool br_plot_landmarking(int num_files, const char *files[], const char *destination, bool show = false);
342 91  
343   -/*!
344   - * \brief Renders metadata figures for a set of <tt>.csv</tt> files with specified columns.
345   - *
346   - * Several files will be created:
347   - * - <tt>PlotMetadata.R</tt> which is the auto-generated R script used to render the figures.
348   - * - <tt>PlotMetadata.pdf</tt> which has all of the figures in one file (convenient for attaching in an email).
349   - * - <i>column</i><tt>.pdf</tt>, ..., <i>column</i><tt>.pdf</tt> which has each figure in a separate file (convenient for including in a presentation).
350   - *
351   - * \param num_files Number of <tt>.csv</tt> files.
352   - * \param files <tt>.csv</tt> files created by enrolling templates to <tt>.csv</tt> metadata files.
353   - * \param columns ';' seperated list of columns to plot.
354   - * \param show Open <tt>PlotMetadata.pdf</tt> using the system's default PDF viewer.
355   - * \return See \ref br_plot
356   - */
357 92 BR_EXPORT bool br_plot_metadata(int num_files, const char *files[], const char *columns, bool show = false);
358 93  
359   -/*!
360   - * \brief Wraps br::Context::progress()
361   - * \see br_most_recent_message br_time_remaining
362   - */
363 94 BR_EXPORT float br_progress();
364 95  
365   -/*!
366   - * \brief Read and parse arguments from a named pipe.
367   - *
368   - * Used by the \ref cli to implement \c -daemon, generally not useful otherwise.
369   - * Guaranteed to return at least one argument.
370   - * \param pipe Pipe name
371   - * \param[out] argc argument count
372   - * \param[out] argv argument list
373   - * \note \ref managed_return_value
374   - */
375 96 BR_EXPORT void br_read_pipe(const char *pipe, int *argc, char ***argv);
376 97  
377   -/*!
378   - * \brief Wraps br::Context::scratchPath()
379   - * \note \ref input_string_buffer
380   - * \see br_version
381   - */
382 98 BR_EXPORT int br_scratch_path(char * buffer, int buffer_length);
383 99  
384   -
385   -/*!
386   - * \brief Returns the full path to the root of the SDK.
387   - * \see br_initialize
388   - */
389 100 BR_EXPORT const char *br_sdk_path();
390 101  
391   -/*!
392   - * \brief Retrieve the target and query inputs in the BEE matrix header.
393   - * \param matrix The BEE matrix file to modify
394   - * \param[out] target_gallery The matrix target
395   - * \param[out] query_gallery The matrix query
396   - * \note \ref managed_return_value
397   - * \see br_set_header
398   - */
399 102 BR_EXPORT void br_get_header(const char *matrix, const char **target_gallery, const char **query_gallery);
400 103  
401   -/*!
402   - * \brief Update the target and query inputs in the BEE matrix header.
403   - * \param matrix The BEE matrix file to modify
404   - * \param target_gallery The matrix target
405   - * \param query_gallery The matrix query
406   - * \see br_get_header
407   - */
408 104 BR_EXPORT void br_set_header(const char *matrix, const char *target_gallery, const char *query_gallery);
409 105  
410   -/*!
411   - *\brief Wraps br::Context::setProperty()
412   - */
413 106 BR_EXPORT void br_set_property(const char *key, const char *value);
414 107  
415   -/*!
416   - * \brief Wraps br::Context::timeRemaining()
417   - * \see br_most_recent_message br_progress
418   - */
419 108 BR_EXPORT int br_time_remaining();
420 109  
421   -/*!
422   - * \brief Trains the br::Transform and br::Comparer on the input.
423   - * \param input The br::Input set of images to train on.
424   - * \param model Optional string specifying the binary file to serialize training results to.
425   - * The trained algorithm can be recovered by using this file as the algorithm.
426   - * By default the trained algorithm will not be serialized to disk.
427   - * \see br_train_n
428   - */
429 110 BR_EXPORT void br_train(const char *input, const char *model = "");
430 111  
431   -/*!
432   - * \brief Convenience function for training on multiple inputs.
433   - * \see br_train
434   - */
435 112 BR_EXPORT void br_train_n(int num_inputs, const char *inputs[], const char *model = "");
436 113  
437   -/*!
438   - * \brief Wraps br::Context::version()
439   - * \see br_about br_scratch_path
440   - */
441 114 BR_EXPORT const char *br_version();
442 115  
443   -
444   -/*!
445   - * \brief For internal use via ProcessWrapperTransform
446   - */
447 116 BR_EXPORT void br_slave_process(const char * baseKey);
448 117  
449 118 // to avoid having to include unwanted headers
... ... @@ -454,124 +123,56 @@ typedef void* br_template;
454 123 typedef void* br_template_list;
455 124 typedef void* br_gallery;
456 125 typedef void* br_matrix_output;
457   -/*!
458   - * \brief Load an image from a string buffer.
459   - * Easy way to pass an image in memory from another programming language to openbr.
460   - * \param data The image buffer.
461   - * \param len The length of the buffer.
462   - * \see br_unload_img
463   - */
  126 +
464 127 BR_EXPORT br_template br_load_img(const char *data, int len);
465   -/*!
466   - * \brief Unload an image to a string buffer.
467   - * Easy way to pass an image from openbr to another programming language.
468   - * \param tmpl Pointer to a br::Template.
469   - */
  128 +
470 129 BR_EXPORT unsigned char* br_unload_img(br_template tmpl);
471   -/*!
472   - * \brief Deserialize a br::TemplateList from a buffer.
473   - * Can be the buffer for a .gal file,
474   - * since they are just a TemplateList serialized to disk.
475   - */
  130 +
476 131 BR_EXPORT br_template_list br_template_list_from_buffer(const char *buf, int len);
477   -/*!
478   - * \brief Free a br::Template's memory.
479   - */
  132 +
480 133 BR_EXPORT void br_free_template(br_template tmpl);
481   -/*!
482   - * \brief Free a br::TemplateList's memory.
483   - */
  134 +
484 135 BR_EXPORT void br_free_template_list(br_template_list tl);
485   -/*!
486   - * \brief Free a br::Output's memory.
487   - */
  136 +
488 137 BR_EXPORT void br_free_output(br_matrix_output output);
489   -/*!
490   - * \brief Get the number of rows in an image.
491   - * \param tmpl Pointer to a br::Template.
492   - */
  138 +
493 139 BR_EXPORT int br_img_rows(br_template tmpl);
494   -/*!
495   - * \brief Get the number of columns in an image.
496   - * \param tmpl Pointer to a br::Template.
497   - */
  140 +
498 141 BR_EXPORT int br_img_cols(br_template tmpl);
499   -/*!
500   - * \brief Get the number of channels in an image.
501   - * \param tmpl Pointer to a br::Template.
502   - */
  142 +
503 143 BR_EXPORT int br_img_channels(br_template tmpl);
504   -/*!
505   - * \brief Returns if the image is empty.
506   - */
  144 +
507 145 BR_EXPORT bool br_img_is_empty(br_template tmpl);
508   -/*!
509   - * \brief Get the filename for a br::Template
510   - * \note \ref input_string_buffer
511   - */
  146 +
512 147 BR_EXPORT int br_get_filename(char * buffer, int buffer_length, br_template tmpl);
513   -/*!
514   - * \brief Set the filename for a br::Template.
515   - */
  148 +
516 149 BR_EXPORT void br_set_filename(br_template tmpl, const char *filename);
517   -/*!
518   - * \brief Get metadata as a string for the given key in the given template.
519   - * \note \ref input_string_buffer
520   - */
  150 +
521 151 BR_EXPORT int br_get_metadata_string(char * buffer, int buffer_length, br_template tmpl, const char *key);
522   -/*!
523   - * \brief Enroll a br::Template from the C API! Returns a pointer to a br::TemplateList
524   - * \param tmpl Pointer to a br::Template.
525   - */
  152 +
526 153 BR_EXPORT br_template_list br_enroll_template(br_template tmpl);
527   -/*!
528   - * \brief Enroll a br::TemplateList from the C API!
529   - * \param tl Pointer to a br::TemplateList.
530   - */
  154 +
531 155 BR_EXPORT void br_enroll_template_list(br_template_list tl);
532   -/*!
533   - * \brief Compare br::TemplateLists from the C API!
534   - * \return Pointer to a br::MatrixOutput.
535   - */
  156 +
536 157 BR_EXPORT br_matrix_output br_compare_template_lists(br_template_list target, br_template_list query);
537   -/*!
538   - * \brief Get a value in the br::MatrixOutput.
539   - */
  158 +
540 159 BR_EXPORT float br_get_matrix_output_at(br_matrix_output output, int row, int col);
541   -/*!
542   - * \brief Get a pointer to a br::Template at a specified index.
543   - * \param tl Pointer to a br::TemplateList.
544   - * \param index The index of the br::Template.
545   - */
  160 +
546 161 BR_EXPORT br_template br_get_template(br_template_list tl, int index);
547   -/*!
548   - * \brief Get the number of br::Templates in a br::TemplateList.
549   - * \param tl Pointer to a br::TemplateList
550   - */
  162 +
551 163 BR_EXPORT int br_num_templates(br_template_list tl);
552   -/*!
553   - * \brief Initialize a br::Gallery.
554   - * \param gallery String location of gallery on disk.
555   - */
  164 +
556 165 BR_EXPORT br_gallery br_make_gallery(const char *gallery);
557   -/*!
558   - * \brief Read br::TemplateList from br::Gallery.
559   - */
  166 +
560 167 BR_EXPORT br_template_list br_load_from_gallery(br_gallery gallery);
561   -/*!
562   - * \brief Write a br::Template to the br::Gallery on disk.
563   - */
  168 +
564 169 BR_EXPORT void br_add_template_to_gallery(br_gallery gallery, br_template tmpl);
565   -/*!
566   - * \brief Write a br::TemplateList to the br::Gallery on disk.
567   - */
  170 +
568 171 BR_EXPORT void br_add_template_list_to_gallery(br_gallery gallery, br_template_list tl);
569   -/*!
570   - * \brief Close the br::Gallery.
571   - */
  172 +
572 173 BR_EXPORT void br_close_gallery(br_gallery gallery);
573 174  
574   -/*! @}*/
  175 +
575 176  
576 177 #ifdef __cplusplus
577 178 }
... ...
openbr/openbr_export.cpp
1   -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2   - * Copyright 2012 The MITRE Corporation *
3   - * *
4   - * Licensed under the Apache License, Version 2.0 (the "License"); *
5   - * you may not use this file except in compliance with the License. *
6   - * You may obtain a copy of the License at *
7   - * *
8   - * http://www.apache.org/licenses/LICENSE-2.0 *
9   - * *
10   - * Unless required by applicable law or agreed to in writing, software *
11   - * distributed under the License is distributed on an "AS IS" BASIS, *
12   - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13   - * See the License for the specific language governing permissions and *
14   - * limitations under the License. *
15   - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
16   -
17   -/*!
18   - * \mainpage
19   - * \section overview Overview
20   - * OpenBR \cite klontz2013open is a framework for investigating new modalities, improving existing algorithms, interfacing with commercial systems, measuring recognition performance, and deploying automated biometric systems.
21   - * The project is designed to facilitate rapid algorithm prototyping, and features a mature core framework, flexible plugin system, and support for open and closed source development.
22   - * Off-the-shelf algorithms are also available for specific modalities including \ref cpp_face_recognition, \ref cpp_age_estimation, and \ref cpp_gender_estimation.
23   - *
24   - * OpenBR originated within The MITRE Corporation from a need to streamline the process of prototyping new algorithms.
25   - * The project was later published as open source software under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2</a> license and is <i>free for academic and commercial use</i>.
26   - *
27   - * \image html "abstraction.svg" "The two principal software artifacts are the shared library 'openbr' and command line application 'br'."
28   - *
29   - * \section get_started Get Started
30   - * - \ref introduction - A high-level technical overview of OpenBR.
31   - * - \ref installation - A hacker's guide to building, editing, and running OpenBR.
32   - * - \ref examples - Source code illustrating common use cases.
33   - * - \ref help - Talk to the experts.
34   - *
35   - * \section learn_more Learn More
36   - * - \ref algorithm_grammar - How algorithms are constructed from string descriptions.
37   - * - \ref cli - Command line wrapper of the \ref c_sdk.
38   - * - \ref c_sdk - High-level API for running algorithms and evaluating results.
39   - * - \ref cpp_plugin_sdk - Plugin API for extending OpenBR functionality.
40   - * - \ref bee - A <a href="http://www.nist.gov/index.html">NIST</a> standard for evaluating biometric algorithms.
41   - * - \ref qmake_integration - Add OpenBR to your Qt <tt>.pro</tt> project.
42   - */
43   -
44   -/*!
45   - * \page introduction Introduction
46   - * \brief A high-level technical overview of OpenBR.
47   - *
48   - * We strongly encourage users new to OpenBR to read our <a href="http://www.openbiometrics.org/publications/klontz2013open.pdf"><b>publication</b></a> for an introduction to the core concepts.
49   - * Researchers incorporating OpenBR into their own work are kindly requested to cite this paper.
50   - */
51   -
52   -/*!
53   - * \page installation Installation
54   - * \brief A hacker's guide to building, editing, and running OpenBR.
55   - *
56   - * \section installation_from_source From Source
57   - * Installation from source is the recommended method for getting OpenBR on your machine.
58   - * <b>If you are interested in our off-the-shelf algorithms, please use the latest tagged release instead of the master branch.</b>
59   - * If you need a little help getting started, choose from the list of build instructions for free C++ compilers below:
60   - * - \subpage windows_msvc
61   - * - \subpage osx_clang
62   - * - \subpage linux_gcc
63   - * - \subpage raspbian_gcc
64   - *
65   - * \section installation_from_binary From Binary
66   - * Pre-compiled releases are not currently provided, but they can be built from source using the instructions above.
67   - * Generally you should follow your operating system's best practices for installing a binary package.
68   - * However, for temporary evaluation, one simple configuration approach is:
69   - *
70   - * \par Linux
71   -\verbatim
72   -$ cd bin
73   -$ export LD_LIBRARY_PATH=../lib:${LD_LIBRARY_PATH}
74   -$ sudo ldconfig
75   -\endverbatim
76   - * \par OS X
77   -\verbatim
78   -$ cd bin
79   -$ export DYLD_LIBRARY_PATH=../lib:${DYLD_LIBRARY_PATH}
80   -$ export DYLD_FRAMEWORK_PATH=../lib:${DYLD_FRAMEWORK_PATH}
81   -\endverbatim
82   - * \par Windows
83   - * No configuration is necessary!
84   - *
85   - * \section installation_done Start Working
86   - * To test for successful installation:
87   -\verbatim
88   -$ cd bin
89   -$ br -help
90   -\endverbatim
91   - */
92   -
93   -/*!
94   - * \page windows_msvc Windows 7 - Visual Studio Express Edition 2012 - x64
95   - * -# <a href="http://www.microsoft.com/en-us/download/details.aspx?id=34673">Download Visual Studio 2012 Express Edition for Windows Desktop</a> and install.
96   - * -# Consider the free open source program <a href="http://wincdemu.sysprogs.org">WinCDEmu</a> if you need a program to mount ISO images.
97   - * -# You will have to register with Microsoft after installation, but it's free.
98   - * -# Grab any available <a href="http://www.microsoft.com/visualstudio/eng/downloads#d-visual-studio-2012-update">Visual Studio Updates</a>.
99   - * -# Download and install <a href="http://msdn.microsoft.com/en-us/windows/hardware/hh852363.aspx">Windows 8 SDK</a>.
100   - * -# <a href="http://www.cmake.org/files/v2.8/cmake-2.8.11.2-win32-x86.exe">Download and Install CMake 2.8.11.2</a>
101   - * -# During installation setup select "add CMake to PATH".
102   - * -# <a href="http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.6.1/opencv-2.4.6.1.tar.gz">Download OpenCV 2.4.6.1</a>
103   - * -# Consider the free open source program <a href="http://www.7-zip.org/">7-Zip</a> if you need a program to unarchive tarballs.
104   - * -# Move the "opencv-2.4.6.1" folder to "C:\".
105   - * -# Open "VS2012 x64 Cross Tools Command Prompt" (from the Start Menu, select "All Programs" -> "Microsoft Visual Studio 2012" -> "Visual Studio Tools" -> "VS2012 x64 Cross Tools Command Prompt") and enter:
106   - \code
107   - $ cd C:\opencv-2.4.6.1
108   - $ mkdir build-msvc2012
109   - $ cd build-msvc2012
110   - $ cmake -G "NMake Makefiles" -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DWITH_FFMPEG=OFF -DCMAKE_BUILD_TYPE=Debug ..
111   - $ nmake
112   - $ nmake install
113   - $ cmake -DCMAKE_BUILD_TYPE=Release ..
114   - $ nmake
115   - $ nmake install
116   - $ nmake clean
117   - \endcode
118   - * -# <a href="http://download.qt-project.org/official_releases/qt/5.1/5.1.1/qt-windows-opensource-5.1.1-msvc2012-x86_64-offline.exe">Download and Install Qt 5.1.1</a>
119   - * -# Create a <a href="github.com">GitHub</a> account and follow their instructions for <a href="https://help.github.com/articles/set-up-git">setting up Git</a>.
120   - * -# Launch "Git Bash" from the Desktop and clone OpenBR:
121   - \code
122   - $ cd /c
123   - $ git clone https://github.com/biometrics/openbr.git
124   - $ cd openbr
125   - $ git checkout 0.5
126   - $ git submodule init
127   - $ git submodule update
128   - \endcode
129   - * -# Build OpenBR!
130   - * -# From the VS2012 x64 Cross Tools Command Prompt:
131   - \code
132   - $ cd C:\openbr
133   - $ mkdir build-msvc2012
134   - $ cd build-msvc2012
135   - $ cmake -G "CodeBlocks - NMake Makefiles" -DCMAKE_PREFIX_PATH="C:/opencv-2.4.6.1/build-msvc2012/install;C:/Qt/Qt5.1.1/5.1.1/msvc2012_64" -DCMAKE_INSTALL_PREFIX="./install" -DBR_INSTALL_DEPENDENCIES=ON -DCMAKE_BUILD_TYPE=Release ..
136   - $ nmake
137   - $ nmake install
138   - \endcode
139   - * -# Check out the "install" folder.
140   - * -# Hack OpenBR!
141   - * -# From the VS2012 x64 Cross Tools Command Prompt:
142   - \code
143   - $ C:\Qt\Qt5.1.1\Tools\QtCreator\bin\qtcreator.exe
144   - \endcode
145   - * -# From the Qt Creator "Tools" menu select "Options..."
146   - * -# Under "Kits" select "Desktop (default)"
147   - * -# For "Compiler:" select "Microsoft Visual C++ Compiler 11.0 (x86_amd64)" and click "OK"
148   - * -# From the Qt Creator "File" menu select "Open File or Project...".
149   - * -# Select "C:\openbr\CMakeLists.txt" then "Open".
150   - * -# If prompted for the location of CMake, enter "C:\Program Files (x86)\CMake 2.8\bin\cmake.exe".
151   - * -# Browse to your pre-existing build directory "C:\openbr\build-msvc2012" then select "Next".
152   - * -# Select "Run CMake" then "Finish".
153   - * -# You're all set! You can find more information on Qt Creator <a href="http://qt-project.org/doc/qtcreator">here</a> if you need.
154   - * -# (Optional) Package OpenBR!
155   - * -# From the VS2012 x64 Cross Tools Command Prompt:
156   - \code
157   - $ cd C:\openbr\build-msvc2012
158   - $ cpack -G ZIP
159   - \endcode
160   - */
161   -
162   -/*!
163   - * \page osx_clang OS X Mountain Lion - Clang/LLVM 3.1 - x64
164   - * -# Download and install the latest "Xcode" and "Command Line Tools" from the <a href="https://developer.apple.com/downloads/index.action#">Apple Developer Downloads</a> page.
165   - * -# <a href="http://www.cmake.org/files/v2.8/cmake-2.8.11.2.tar.gz">Download CMake 2.8.11.2</a>
166   - \code
167   - $ cd ~/Downloads
168   - $ tar -xf cmake-2.8.11.2.tar.gz
169   - $ cd cmake-2.8.11.2
170   - $ ./configure
171   - $ make -j4
172   - $ sudo make install
173   - $ cd ..
174   - $ rm -rf cmake-2.8.11.2*
175   - \endcode
176   - * -# <a href="http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.6.1/opencv-2.4.6.1.tar.gz">Download OpenCV 2.4.6.1</a>
177   - \code
178   - $ cd ~/Downloads
179   - $ tar -xf opencv-2.4.6.1.tar.gz
180   - $ cd opencv-2.4.6.1
181   - $ mkdir build
182   - $ cd build
183   - $ cmake -DCMAKE_BUILD_TYPE=Release ..
184   - $ make -j4
185   - $ sudo make install
186   - $ cd ../..
187   - $ rm -rf opencv-2.4.6.1*
188   - \endcode
189   - * -# <a href="http://download.qt-project.org/official_releases/qt/5.1/5.1.1/qt-mac-opensource-5.1.1-clang-offline.dmg">Download and install Qt 5.1.1</a>
190   - * -# Create a <a href="github.com">GitHub</a> account, follow their instructions for <a href="https://help.github.com/articles/set-up-git">setting up Git</a>.
191   - \code
192   - $ git clone https://github.com/biometrics/openbr.git
193   - $ cd openbr
194   - $ git checkout 0.5
195   - $ git submodule init
196   - $ git submodule update
197   - \endcode
198   - * -# Build OpenBR!
199   - \code
200   - $ mkdir build # from the OpenBR root directory
201   - $ cd build
202   - $ cmake -DCMAKE_PREFIX_PATH=~/Qt5.1.1/5.1.1/clang_64 -DCMAKE_BUILD_TYPE=Release ..
203   - $ make -j4
204   - $ sudo make install
205   - \endcode
206   - * -# Hack OpenBR!
207   - * -# Open Qt Creator IDE
208   - \code
209   - $ open ~/Qt5.1.1/Qt\ Creator.app
210   - \endcode
211   - * -# From the Qt Creator "File" menu select "Open File or Project...".
212   - * -# Select "openbr/CMakeLists.txt" then "Open".
213   - * -# Browse to your pre-existing build directory "openbr/build" then select "Continue".
214   - * -# Select "Run CMake" then "Done".
215   - * -# You're all set! You can find more information on Qt Creator <a href="http://qt-project.org/doc/qtcreator">here</a> if you need.
216   - * -# (Optional) Test OpenBR!
217   - \code
218   - $ cd openbr/scripts
219   - $ ./downloadDatasets.sh
220   - $ cd ../build
221   - $ make test
222   - \endcode
223   - * -# (Optional) Package OpenBR!
224   - \code
225   - $ cd openbr/build
226   - $ sudo cpack -G TGZ
227   - \endcode
228   - * -# (Optional) Build OpenBR documentation!
229   - * -# <a href="ftp://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.5.src.tar.gz">Download Doxygen 1.8.5</a>
230   - \code
231   - $ cd ~/Downloads
232   - $ tar -xf doxygen-1.8.5.src.tar.gz
233   - $ cd doxygen-1.8.5
234   - $ ./configure
235   - $ make -j4
236   - $ sudo make install
237   - $ cd ..
238   - $ rm -rf doxygen-1.8.5*
239   - \endcode
240   - * -# Modify build settings and recompile.
241   - \code
242   - $ cd openbr/build
243   - $ cmake -DBR_BUILD_DOCUMENTATION=ON ..
244   - $ make -j4
245   - $ open html/index.html
246   - \endcode
247   - */
248   -
249   -/*!
250   - * \page linux_gcc Ubuntu 13.04 - GCC 4.7.3 - x64
251   - * -# Install GCC 4.7.3
252   - \code
253   - $ sudo apt-get update
254   - $ sudo apt-get install build-essential
255   - \endcode
256   - * -# Install CMake 2.8.10.1
257   - \code
258   - $ sudo apt-get install cmake cmake-curses-gui
259   - \endcode
260   - * -# <a href="http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.5/opencv-2.4.5.tar.gz">Download OpenCV 2.4.5</a>, note <a href="https://github.com/biometrics/openbr/wiki/Build-OpenCV-with-Video-Support-on-Ubuntu">this</a>
261   - \code
262   - $ cd ~/Downloads
263   - $ tar -xf opencv-2.4.5.tar.gz
264   - $ cd opencv-2.4.5
265   - $ mkdir build
266   - $ cd build
267   - $ cmake -DCMAKE_BUILD_TYPE=Release ..
268   - $ make -j4
269   - $ sudo make install
270   - $ cd ../..
271   - $ rm -rf opencv-2.4.5*
272   - \endcode
273   - * -# Install Qt 5.0.1
274   - \code
275   - $ sudo apt-get install qt5-default libqt5svg5-dev qtcreator
276   - \endcode
277   - * -# Create a <a href="github.com">GitHub</a> account, follow their instructions for <a href="https://help.github.com/articles/set-up-git">setting up Git</a>.
278   - \code
279   - $ git clone https://github.com/biometrics/openbr.git
280   - $ cd openbr
281   - $ git checkout 0.5
282   - $ git submodule init
283   - $ git submodule update
284   - \endcode
285   - * -# Build OpenBR!
286   - \code
287   - $ mkdir build # from the OpenBR root directory
288   - $ cd build
289   - $ cmake -DCMAKE_BUILD_TYPE=Release ..
290   - $ make -j4
291   - $ sudo make install
292   - \endcode
293   - * -# Hack OpenBR!
294   - * -# Open Qt Creator IDE
295   - \code
296   - $ qtcreator &
297   - \endcode
298   - * -# From the Qt Creator "File" menu select "Open File or Project...".
299   - * -# Select "openbr/CMakeLists.txt" then "Open".
300   - * -# Browse to your pre-existing build directory "openbr/build" then select "Next".
301   - * -# Select "Run CMake" then "Finish".
302   - * -# You're all set! You can find more information on Qt Creator <a href="http://qt-project.org/doc/qtcreator">here</a> if you need.
303   - * -# (Optional) Test OpenBR!
304   - \code
305   - $ cd openbr/scripts
306   - $ ./downloadDatasets.sh
307   - $ cd ../build
308   - $ make test
309   - \endcode
310   - * -# (Optional) Package OpenBR!
311   - \code
312   - $ cd openbr/build
313   - $ sudo cpack -G TGZ
314   - \endcode
315   - * -# (Optional) Build OpenBR documentation!
316   - \code
317   - $ sudo apt-get install doxygen
318   - $ cd openbr/build
319   - $ cmake -DBR_BUILD_DOCUMENTATION=ON ..
320   - $ make -j4
321   - $ sudo apt-get install libgnome2-bin
322   - $ gnome-open html/index.html
323   - \endcode
324   - */
325   -
326   -/*!
327   - * \page raspbian_gcc Raspbian 3.0.1 - GCC 4.6.3 - ARMv6
328   - * -# Install CMake 2.8.9
329   - \code
330   - $ sudo apt-get install cmake
331   - \endcode
332   - * -# Download OpenCV 2.4.9
333   - \code
334   - $ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip
335   - $ unzip opencv-2.4.9.zip
336   - $ cd opencv-2.4.9
337   - $ mkdir build
338   - $ cd build
339   - $ cmake -DCMAKE_BUILD_TYPE=Release ..
340   - $ make
341   - $ sudo make install
342   - $ cd ../..
343   - $ rm -rf opencv-2.4.9*
344   - \endcode
345   - * -# Install Qt5
346   - * -# Modify source list
347   - \code
348   - $ nano /etc/apt/sources.list
349   - \endcode
350   - by changing:
351   - \code
352   - deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
353   - \endcode
354   - to:
355   - \code
356   - deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
357   - \endcode
358   - * -# Update apt-get
359   - \code
360   - $ sudo apt-get update
361   - \endcode
362   - * -# Install packages
363   - \code
364   - $ sudo apt-get install qt5-default libqt5svg5-dev
365   - \endcode
366   - * -# Create a <a href="github.com">GitHub</a> account, follow their instructions for <a href="https://help.github.com/articles/set-up-git">setting up Git</a>.
367   - \code
368   - $ git clone https://github.com/biometrics/openbr.git
369   - $ cd openbr
370   - $ git checkout 0.5
371   - $ git submodule init
372   - $ git submodule update
373   - \endcode
374   - * -# Build OpenBR!
375   - \code
376   - $ mkdir build # from the OpenBR root directory
377   - $ cd build
378   - $ cmake -DCMAKE_BUILD_TYPE=Release ..
379   - $ make
380   - $ sudo make install
381   - \endcode
382   - * -# (Optional) Test OpenBR!
383   - \code
384   - $ cd openbr/scripts
385   - $ ./downloadDatasets.sh
386   - $ cd ../build
387   - $ make test
388   - \endcode
389   -*/
390   -
391   -/*!
392   - * \page help Help
393   - * - Developer mailing list: <a href="https://groups.google.com/forum/?fromgroups#!forum/openbr-dev">openbr-dev@googlegroups.com</a>
394   - * - IRC Channel: <a href="http://webchat.freenode.net/?channels=openbr">irc.freenode.net\#openbr</a>
395   - */
396   -
397   -/*!
398   - * \page qmake_integration QMake Integration
399   - * \brief Add OpenBR to your Qt <tt>.pro</tt> project.
400   - *
401   - * After completing the \ref installation instructions, try launching Qt Creator and opening <tt>\<path_to_openbr_installation\>/share/openbr/qmake_tutorial/hello.pro</tt>.
402   - *
403   - * Happy hacking!
404   - */
405   -
406   -/*!
407   - * \page algorithm_grammar Algorithm Grammar
408   - * \brief How algorithms are constructed from string descriptions.
409   - *
410   - * <b>So you've run <tt>scripts/helloWorld.sh</tt> and it generally makes sense, except you have no idea what <tt>'Open+Cvt(Gray)+Cascade(FrontalFace)+ASEFEyes+Affine(128,128,0.33,0.45)+CvtFloat+PCA(0.95):Dist(L2)'</tt> means or how it is executed.</b>
411   - * Well if this is the case, you've found the right documentation.
412   - * Let's get started!
413   - *
414   - * In OpenBR an <i>algorithm</i> is a technique for enrolling templates associated with a technique for comparing them.
415   - * Recall that our ultimate goal is to be able to say how similar two face images are (or two fingerprints, irises, etc.).
416   - * Instead of storing the entire raw image for comparison, it is common practice to store an optimized representation, or <i>template</i>, of the image for the task at hand.
417   - * The process of generating this optimized representatation is called <i>template enrollment</i> or <i>template generation</i>.
418   - * Given two templates, <i>template comparison</i> computes the similarity between them, where the higher values indicate more probable matches and the threshold for determining what constitutes an adaquate match is determined operationally.
419   - * The goal of template generation is to design templates that are small, accurate, and fast to compare.
420   - * Ok, you probably knew all of this already, let's move on.
421   - *
422   - * The only way of creating an algorithm in OpenBR is from a text string that describes it.
423   - * We call this string the <i>algorithm description</i>.
424   - * The algorithm description is seperated into two parts by a ':', with the left hand side indicating how to generate templates and the right hand side indicating how to compare them.
425   - * Some algorithms, like \ref cpp_gender_estimation and \ref cpp_age_estimation are <i>classifiers</i> that don't create templates.
426   - * In these cases, the colon and the template comparison technique can be omitted from the algorithm description.
427   - *
428   - * There are several motivations for mandating that algorithms are defined from these strings, here are the most important:
429   - * -# It ensures good software development practices by forcibly decoupling the development of each step in an algorithm, facilitating the modification of algorithms and the re-use of individual steps.
430   - * -# It spares the creation and maintainance of a lot of very similar header files that would otherwise be needed for each step in an algorithm, observe the abscence of headers in <tt>openbr/plugins</tt>.
431   - * -# It allows for algorithm parameter tuning without recompiling.
432   - * -# It is completely unambiguous, both the OpenBR interpreter and anyone familiar with the project can understand exactly what your algorithm does just from this description.
433   - *
434   - * Let's look at some of the important parts of the code base that make this possible!
435   - *
436   - * In <tt>AlgorithmCore::init()</tt> in <tt>openbr/core/core.cpp</tt> you can see the code for splitting the algorithm description at the colon.
437   - * Shortly thereafter in this function we <i>make</i> the template generation and comparison methods.
438   - * These make calls are defined in the public \ref cpp_plugin_sdk and can also be called from end user code.
439   - *
440   - * Below we discuss some of the source code for \ref br::Transform::make in <tt>openbr/openbr_plugin.cpp</tt>.
441   - * Note, \ref br::Distance::make is similar in spirit and will not be covered.
442   - *
443   - * One of the first steps when converting the template enrollment description into a \ref br::Transform is to replace the operators, like '+', with their full form:
444   - * \snippet openbr/openbr_plugin.cpp Make a pipe
445   - * A pipe (see \ref br::PipeTransform in <tt>openbr/plugins/meta.cpp</tt>) is the standard way of chaining together multiple steps in series to form more sophisticated algorithms.
446   - * PipeTransform takes a list of transforms, and <i>projects</i> templates through each transform in order.
447   - *
448   - * After operator expansion, the template enrollment description forms a tree, and the transform is constructed from this description starting recurively starting at the root of the tree:
449   - * \snippet openbr/openbr_plugin.cpp Construct the root transform
450   - *
451   - * At this point we reach arguably the most important code in the entire framework, the <i>object factory</i> in <tt>openbr/openbr_plugin.h</tt>.
452   - * The \ref br::Factory class is responsible for constructing an object from a string:
453   - * \snippet openbr/openbr_plugin.h Factory make
454   - *
455   - * Going back to our original example, a \ref br::PipeTransform will be created with \ref br::OpenTransform, \ref br::CvtTransform, \ref br::CascadeTransform, \ref br::ASEFEyesTransform, \ref br::AffineTransform, \ref br::CvtFloatTransform, and \ref br::PCATransform as its children.
456   - * If you want all the tedious details about what exactly this algoritm does, then you should read the \ref br::Transform::project function implemented by each of these plugins.
457   - * The brief explanation is that it <i>reads the image from disk, converts it to grayscale, runs the face detector, runs the eye detector on any detected faces, uses the eye locations to normalize the face for rotation and scale, converts to floating point format, and then embeds it in a PCA subspaced trained on face images</i>.
458   - * If you are familiar with face recognition, you will likely recognize this as the Eigenfaces \cite turk1991eigenfaces algorithm.
459   - *
460   - * As a final note, the Eigenfaces algorithms uses the Euclidean distance (or L2-norm) to compare templates.
461   - * Since OpenBR expects <i>similarity</i> values when comparing templates, and not <i>distances</i>, \ref br::DistDistance will return <i>-log(distance+1)</i> so that larger values indicate more similarity.
462   - */
463   -
464   -/*!
465   - * \page bee Biometric Evaluation Environment
466   - * \brief The <i>Biometric Evaluation Environment</i> (BEE) is a <a href="http://www.nist.gov/index.html">NIST</a> standard for evaluating biometric algorithms.
467   - *
468   - * OpenBR implements the following portions of the BEE specification:
469   - *
470   - * \section sigset Signature Set
471   - * A signature set (or \em sigset) is a br::Gallery compliant \c XML file-list specified on page 9 of <a href="MBGC_file_overview.pdf#page=9">MBGC File Overview</a> and implemented in xmlGallery.
472   - * Sigsets are identified with a <tt>.xml</tt> extension.
473   - *
474   - * \section simmat Similarity Matrix
475   - * A similarity matrix (or \em simmat) is a br::Output compliant binary score matrix specified on page 12 of <a href="MBGC_file_overview.pdf#page=12">MBGC File Overview</a> and implemented in mtxOutput.
476   - * Simmats are identified with a <tt>.mtx</tt> extension.
477   - * \see br_eval
478   - *
479   - * \section mask Mask Matrix
480   - * A mask matrix (or \em mask) is a binary matrix specified on page 14 of <a href="MBGC_file_overview.pdf#page=14">MBGC File Overview</a> identifying the ground truth genuines and impostors of a corresponding \ref simmat.
481   - * Masks are identified with a <tt>.mask</tt> extension.
482   - * \see br_make_mask br_combine_masks
483   - */
openbr/openbr_plugin.h
... ... @@ -43,183 +43,69 @@
43 43 #include <openbr/openbr.h>
44 44 #include <assert.h>
45 45  
46   -/*!
47   - * \defgroup cpp_plugin_sdk C++ Plugin SDK
48   - * \brief Plugin API for extending OpenBR functionality.
49   - *
50   - * \code
51   - * #include <openbr/openbr_plugin.h>
52   - * \endcode
53   - *
54   - * \par Development
55   - * Plugins should be developed in <tt>openbr/plugins/</tt>.
56   - * See this folder for numerous examples of existing plugins to follow when writing your own.
57   - * Plugins may optionally include a <tt>.cmake</tt> file to control build configuration.
58   - *
59   - * \par Documentation
60   - * Plugin documentation should include at least three lines providing the plugin abstraction, a brief explanation, and author.
61   - * If multiple authors are specified, the last author is assumed to be the current maintainer of the plugin.
62   - * Plugin authors are encouraged to <tt>\\cite</tt> relevant papers by adding them to <tt>share/openbr/openbr.bib</tt>.
63   - *
64   - * \section examples Examples
65   - * - \ref cpp_face_recognition
66   - * - \ref cpp_face_recognition_search
67   - * - \ref cpp_age_estimation
68   - * - \ref cpp_gender_estimation
69   - *
70   - * \subsection cpp_face_recognition Face Recognition
71   - * \ref cli_face_recognition "Command Line Interface Equivalent"
72   - * \snippet app/examples/face_recognition.cpp face_recognition
73   - *
74   - * \subsection cpp_face_recognition_search Face Recognition Search
75   - * \ref cli_face_recognition_search "Command Line Interface Equivalent"
76   - * \snippet app/examples/face_recognition_search.cpp face_recognition_search
77   - *
78   - * \subsection cpp_face_recognition_train Face Recognition Train
79   - * \ref cli_face_recognition_train "Command Line Interface Equivalent"
80   - * \snippet app/examples/face_recognition_train.cpp face_recognition_train
81   - *
82   - * \subsection cpp_age_estimation Age Estimation
83   - * \ref cli_age_estimation "Command Line Interface Equivalent"
84   - * \snippet app/examples/age_estimation.cpp age_estimation
85   - *
86   - * \subsection cpp_gender_estimation Gender Estimation
87   - * \ref cli_gender_estimation "Command Line Interface Equivalent"
88   - * \snippet app/examples/gender_estimation.cpp gender_estimation
89   - */
90   -
91 46 namespace br
92 47 {
93 48  
94   -/*!
95   - * \addtogroup cpp_plugin_sdk
96   - * @{
97   - */
98   -
99   -/*!
100   - * Helper macro for use with <a href="http://doc.qt.digia.com/qt/properties.html">Q_PROPERTY</a>.
101   - *
102   - * \b Example:<br>
103   - * Note the symmetry between \c BR_PROPERTY and \c Q_PROPERTY.
104   - * \snippet openbr/plugins/misc.cpp example_transform
105   - */
106 49 #define BR_PROPERTY(TYPE,NAME,DEFAULT) \
107 50 TYPE NAME; \
108 51 TYPE get_##NAME() const { return NAME; } \
109 52 void set_##NAME(TYPE the_##NAME) { NAME = the_##NAME; } \
110 53 void reset_##NAME() { NAME = DEFAULT; }
111 54  
112   -/*!
113   - * \brief A file path with associated metadata.
114   - *
115   - * The File is one of two important data structures in OpenBR (the Template is the other).
116   - * It is typically used to store the path to a file on disk with associated metadata.
117   - * The ability to associate a key/value metadata table with the file helps keep the API simple while providing customizable behavior.
118   - *
119   - * When querying the value of a metadata key, the value will first try to be resolved against the file's private metadata table.
120   - * If the key does not exist in its local table then it will be resolved against the properities in the global Context.
121   - * By design file metadata may be set globally using Context::setProperty to operate on all files.
122   - *
123   - * Files have a simple grammar that allow them to be converted to and from strings.
124   - * If a string ends with a \c ] or \c ) then the text within the final \c [] or \c () are parsed as comma sperated metadata fields.
125   - * By convention, fields within \c [] are expected to have the format <tt>[key1=value1, key2=value2, ..., keyN=valueN]</tt> where order is irrelevant.
126   - * Fields within \c () are expected to have the format <tt>(value1, value2, ..., valueN)</tt> where order matters and the key context dependent.
127   - * The left hand side of the string not parsed in a manner described above is assigned to #name.
128   - *
129   - * Values are not necessarily stored as strings in the metadata table.
130   - * The system will attempt to infer and convert them to their "native" type.
131   - * The conversion logic is as follows:
132   - * -# If the value starts with \c [ and ends with \c ] then it is treated as a comma separated list and represented with \c QVariantList. Each value in the list is parsed recursively.
133   - * -# If the value starts with \c ( and ends with \c ) and contains four comma separated elements, each convertable to a floating point number, then it is represented with \c QRectF.
134   - * -# If the value starts with \c ( and ends with \c ) and contains two comma separated elements, each convertable to a floating point number, then it is represented with \c QPointF.
135   - * -# If the value is convertable to a floating point number then it is represented with \c float.
136   - * -# Otherwise, it is represented with \c QString.
137   - *
138   - * Metadata keys fall into one of two categories:
139   - * - \c camelCaseKeys are inputs that specify how to process the file.
140   - * - \c Capitalized_Underscored_Keys are outputs computed from processing the file.
141   - *
142   - * Below are some of the most commonly occuring standardized keys:
143   - *
144   - * Key | Value | Description
145   - * --- | ---- | -----------
146   - * name | QString | Contents of #name
147   - * separator | QString | Seperate #name into multiple files
148   - * Index | int | Index of a template in a template list
149   - * Confidence | float | Classification/Regression quality
150   - * FTE | bool | Failure to enroll
151   - * FTO | bool | Failure to open
152   - * *_X | float | Position
153   - * *_Y | float | Position
154   - * *_Width | float | Size
155   - * *_Height | float | Size
156   - * *_Radius | float | Size
157   - * Label | QString | Class label
158   - * Theta | float | Pose
159   - * Roll | float | Pose
160   - * Pitch | float | Pose
161   - * Yaw | float | Pose
162   - * Points | QList<QPointF> | List of unnamed points
163   - * Rects | QList<Rect> | List of unnamed rects
164   - * Age | float | Age used for demographic filtering
165   - * Gender | QString | Subject gender
166   - * Train | bool | The data is for training, as opposed to enrollment
167   - * _* | * | Reserved for internal use
168   - */
169 55 struct BR_EXPORT File
170 56 {
171   - QString name; /*!< \brief Path to a file on disk. */
  57 + QString name;
172 58  
173 59 File() { fte = false; }
174   - File(const QString &file) { init(file); } /*!< \brief Construct a file from a string. */
175   - File(const QString &file, const QVariant &label) { init(file); set("Label", label); } /*!< \brief Construct a file from a string and assign a label. */
176   - File(const char *file) { init(file); } /*!< \brief Construct a file from a c-style string. */
177   - File(const QVariantMap &metadata) : fte(false), m_metadata(metadata) {} /*!< \brief Construct a file from metadata. */
178   - inline operator QString() const { return name; } /*!< \brief Returns #name. */
179   - QString flat() const; /*!< \brief A stringified version of the file with metadata. */
180   - QString hash() const; /*!< \brief A hash of the file. */
181   -
182   - inline QStringList localKeys() const { return m_metadata.keys(); } /*!< \brief Returns the private metadata keys. */
183   - inline QVariantMap localMetadata() const { return m_metadata; } /*!< \brief Returns the private metadata. */
184   -
185   - void append(const QVariantMap &localMetadata); /*!< \brief Add new metadata fields. */
186   - void append(const File &other); /*!< \brief Append another file using \c separator. */
187   - inline File &operator+=(const QMap<QString,QVariant> &other) { append(other); return *this; } /*!< \brief Add new metadata fields. */
188   - inline File &operator+=(const File &other) { append(other); return *this; } /*!< \brief Append another file using \c separator. */
189   -
190   - QList<File> split() const; /*!< \brief Split the file using \c separator. */
191   - QList<File> split(const QString &separator) const; /*!< \brief Split the file. */
192   -
193   - inline void setParameter(int index, const QVariant &value) { set("_Arg" + QString::number(index), value); } /*!< \brief Insert a keyless value. */
194   - inline bool containsParameter(int index) const { return contains("_Arg" + QString::number(index)); } /*!< \brief Check for the existence of a keyless value. */
195   - inline QVariant getParameter(int index) const { return get<QVariant>("_Arg" + QString::number(index)); } /*!< \brief Retrieve a keyless value. */
196   -
197   - inline bool operator==(const char* other) const { return name == other; } /*!< \brief Compare name to c-style string. */
198   - inline bool operator==(const File &other) const { return (name == other.name) && (m_metadata == other.m_metadata); } /*!< \brief Compare name and metadata for equality. */
199   - inline bool operator!=(const File &other) const { return !(*this == other); } /*!< \brief Compare name and metadata for inequality. */
200   - inline bool operator<(const File &other) const { return name < other.name; } /*!< \brief Compare name. */
201   - inline bool operator<=(const File &other) const { return name <= other.name; } /*!< \brief Compare name. */
202   - inline bool operator>(const File &other) const { return name > other.name; } /*!< \brief Compare name. */
203   - inline bool operator>=(const File &other) const { return name >= other.name; } /*!< \brief Compare name. */
204   -
205   - inline bool isNull() const { return name.isEmpty() && m_metadata.isEmpty(); } /*!< \brief Returns \c true if name and metadata are empty, \c false otherwise. */
206   - inline bool isTerminal() const { return name == "terminal"; } /*!< \brief Returns \c true if #name is "terminal", \c false otherwise. */
207   - inline bool exists() const { return QFileInfo(name).exists(); } /*!< \brief Returns \c true if the file exists on disk, \c false otherwise. */
208   - inline QString fileName() const { return QFileInfo(name).fileName(); } /*!< \brief Returns the file's base name and extension. */
  60 + File(const QString &file) { init(file); }
  61 + File(const QString &file, const QVariant &label) { init(file); set("Label", label); }
  62 + File(const char *file) { init(file); }
  63 + File(const QVariantMap &metadata) : fte(false), m_metadata(metadata) {}
  64 + inline operator QString() const { return name; }
  65 + QString flat() const;
  66 + QString hash() const;
  67 +
  68 + inline QStringList localKeys() const { return m_metadata.keys(); }
  69 + inline QVariantMap localMetadata() const { return m_metadata; }
  70 +
  71 + void append(const QVariantMap &localMetadata);
  72 + void append(const File &other);
  73 + inline File &operator+=(const QMap<QString,QVariant> &other) { append(other); return *this; }
  74 + inline File &operator+=(const File &other) { append(other); return *this; }
  75 +
  76 + QList<File> split() const;
  77 + QList<File> split(const QString &separator) const;
  78 +
  79 + inline void setParameter(int index, const QVariant &value) { set("_Arg" + QString::number(index), value); }
  80 + inline bool containsParameter(int index) const { return contains("_Arg" + QString::number(index)); }
  81 + inline QVariant getParameter(int index) const { return get<QVariant>("_Arg" + QString::number(index)); }
  82 +
  83 + inline bool operator==(const char* other) const { return name == other; }
  84 + inline bool operator==(const File &other) const { return (name == other.name) && (m_metadata == other.m_metadata); }
  85 + inline bool operator!=(const File &other) const { return !(*this == other); }
  86 + inline bool operator<(const File &other) const { return name < other.name; }
  87 + inline bool operator<=(const File &other) const { return name <= other.name; }
  88 + inline bool operator>(const File &other) const { return name > other.name; }
  89 + inline bool operator>=(const File &other) const { return name >= other.name; }
  90 +
  91 + inline bool isNull() const { return name.isEmpty() && m_metadata.isEmpty(); }
  92 + inline bool isTerminal() const { return name == "terminal"; }
  93 + inline bool exists() const { return QFileInfo(name).exists(); }
  94 + inline QString fileName() const { return QFileInfo(name).fileName(); }
209 95 inline QString baseName() const { const QString baseName = QFileInfo(name).baseName();
210   - return baseName.isEmpty() ? QDir(name).dirName() : baseName; } /*!< \brief Returns the file's base name. */
211   - inline QString suffix() const { return QFileInfo(name).suffix(); } /*!< \brief Returns the file's extension. */
212   - inline QString path() const { return QFileInfo(name).path(); } /*! \brief Returns the file's path excluding its name. */
213   - QString resolved() const; /*!< \brief Returns name prepended with Globals->path if name does not exist. */
214   -
215   - bool contains(const QString &key) const; /*!< \brief Returns \c true if the key has an associated value, \c false otherwise. */
216   - bool contains(const QStringList &keys) const; /*!< \brief Returns \c true if all keys have associated values, \c false otherwise. */
217   - QVariant value(const QString &key) const; /*!< \brief Returns the value for the specified key. */
218   - static QVariant parse(const QString &value); /*!< \brief Try to convert the QString to a QPointF or QRectF if possible. */
219   - inline void set(const QString &key, const QVariant &value) { m_metadata.insert(key, value); } /*!< \brief Insert or overwrite the metadata key with the specified value. */
220   - void set(const QString &key, const QString &value); /*!< \brief Insert or overwrite the metadata key with the specified value. */
221   -
222   - /*!< \brief Specialization for list type. Insert or overwrite the metadata key with the specified value. */
  96 + return baseName.isEmpty() ? QDir(name).dirName() : baseName; }
  97 + inline QString suffix() const { return QFileInfo(name).suffix(); }
  98 + inline QString path() const { return QFileInfo(name).path(); }
  99 + QString resolved() const;
  100 +
  101 + bool contains(const QString &key) const;
  102 + bool contains(const QStringList &keys) const;
  103 + QVariant value(const QString &key) const;
  104 + static QVariant parse(const QString &value);
  105 + inline void set(const QString &key, const QVariant &value) { m_metadata.insert(key, value); }
  106 + void set(const QString &key, const QString &value);
  107 +
  108 +
223 109 template <typename T>
224 110 void setList(const QString &key, const QList<T> &value)
225 111 {
... ... @@ -230,9 +116,9 @@ struct BR_EXPORT File
230 116 set(key, variantList);
231 117 }
232 118  
233   - inline void remove(const QString &key) { m_metadata.remove(key); } /*!< \brief Remove the metadata key. */
  119 + inline void remove(const QString &key) { m_metadata.remove(key); }
  120 +
234 121  
235   - /*!< \brief Returns a value for the key, throwing an error if the key does not exist. */
236 122 template <typename T>
237 123 T get(const QString &key) const
238 124 {
... ... @@ -242,7 +128,7 @@ struct BR_EXPORT File
242 128 return variant.value<T>();
243 129 }
244 130  
245   - /*!< \brief Returns a value for the key, returning \em defaultValue if the key does not exist or can't be converted. */
  131 +
246 132 template <typename T>
247 133 T get(const QString &key, const T &defaultValue) const
248 134 {
... ... @@ -252,10 +138,10 @@ struct BR_EXPORT File
252 138 return variant.value<T>();
253 139 }
254 140  
255   - /*!< \brief Specialization for boolean type. */
  141 +
256 142 bool getBool(const QString &key, bool defaultValue = false) const;
257 143  
258   - /*!< \brief Specialization for list type. Returns a list of type T for the key, throwing an error if the key does not exist or if the value cannot be converted to the specified type. */
  144 +
259 145 template <typename T>
260 146 QList<T> getList(const QString &key) const
261 147 {
... ... @@ -268,7 +154,7 @@ struct BR_EXPORT File
268 154 return list;
269 155 }
270 156  
271   - /*!< \brief Specialization for list type. Returns a list of type T for the key, returning \em defaultValue if the key does not exist or can't be converted. */
  157 +
272 158 template <typename T>
273 159 QList<T> getList(const QString &key, const QList<T> defaultValue) const
274 160 {
... ... @@ -281,7 +167,7 @@ struct BR_EXPORT File
281 167 return list;
282 168 }
283 169  
284   - /*!< \brief Returns the value for the specified key for every file in the list. */
  170 +
285 171 template<class U>
286 172 static QList<QVariant> values(const QList<U> &fileList, const QString &key)
287 173 {
... ... @@ -290,7 +176,7 @@ struct BR_EXPORT File
290 176 return values;
291 177 }
292 178  
293   - /*!< \brief Returns a value for the key for every file in the list, throwing an error if the key does not exist. */
  179 +
294 180 template<class T, class U>
295 181 static QList<T> get(const QList<U> &fileList, const QString &key)
296 182 {
... ... @@ -299,7 +185,7 @@ struct BR_EXPORT File
299 185 return result;
300 186 }
301 187  
302   - /*!< \brief Returns a value for the key for every file in the list, returning \em defaultValue if the key does not exist or can't be converted. */
  188 +
303 189 template<class T, class U>
304 190 static QList<T> get(const QList<U> &fileList, const QString &key, const T &defaultValue)
305 191 {
... ... @@ -308,22 +194,22 @@ struct BR_EXPORT File
308 194 return result;
309 195 }
310 196  
311   - QList<QPointF> namedPoints() const; /*!< \brief Returns points convertible from metadata keys. */
312   - QList<QPointF> points() const; /*!< \brief Returns the file's points list. */
313   - void appendPoint(const QPointF &point); /*!< \brief Adds a point to the file's point list. */
314   - void appendPoints(const QList<QPointF> &points); /*!< \brief Adds landmarks to the file's landmark list. */
315   - inline void clearPoints() { m_metadata["Points"] = QList<QVariant>(); } /*!< \brief Clears the file's landmark list. */
316   - inline void setPoints(const QList<QPointF> &points) { clearPoints(); appendPoints(points); } /*!< \brief Overwrites the file's landmark list. */
317   -
318   - QList<QRectF> namedRects() const; /*!< \brief Returns rects convertible from metadata values. */
319   - QList<QRectF> rects() const; /*!< \brief Returns the file's rects list. */
320   - void appendRect(const QRectF &rect); /*!< \brief Adds a rect to the file's rect list. */
321   - void appendRect(const cv::Rect &rect); /*!< \brief Adds a rect to the file's rect list. */
322   - void appendRects(const QList<QRectF> &rects); /*!< \brief Adds rects to the file's rect list. */
323   - void appendRects(const QList<cv::Rect> &rects); /*!< \brief Adds rects to the file's rect list. */
324   - inline void clearRects() { m_metadata["Rects"] = QList<QVariant>(); } /*!< \brief Clears the file's rect list. */
325   - inline void setRects(const QList<QRectF> &rects) { clearRects(); appendRects(rects); } /*!< \brief Overwrites the file's rect list. */
326   - inline void setRects(const QList<cv::Rect> &rects) { clearRects(); appendRects(rects); } /*!< \brief Overwrites the file's rect list. */
  197 + QList<QPointF> namedPoints() const;
  198 + QList<QPointF> points() const;
  199 + void appendPoint(const QPointF &point);
  200 + void appendPoints(const QList<QPointF> &points);
  201 + inline void clearPoints() { m_metadata["Points"] = QList<QVariant>(); }
  202 + inline void setPoints(const QList<QPointF> &points) { clearPoints(); appendPoints(points); }
  203 +
  204 + QList<QRectF> namedRects() const;
  205 + QList<QRectF> rects() const;
  206 + void appendRect(const QRectF &rect);
  207 + void appendRect(const cv::Rect &rect);
  208 + void appendRects(const QList<QRectF> &rects);
  209 + void appendRects(const QList<cv::Rect> &rects);
  210 + inline void clearRects() { m_metadata["Rects"] = QList<QVariant>(); }
  211 + inline void setRects(const QList<QRectF> &rects) { clearRects(); appendRects(rects); }
  212 + inline void setRects(const QList<cv::Rect> &rects) { clearRects(); appendRects(rects); }
327 213  
328 214 bool fte;
329 215 private:
... ... @@ -334,83 +220,64 @@ private:
334 220 void init(const QString &file);
335 221 };
336 222  
337   -/*!< \brief Specialization for boolean type. */
  223 +
338 224 template <>
339 225 inline bool File::get<bool>(const QString &key, const bool &defaultValue) const
340 226 {
341 227 return getBool(key, defaultValue);
342 228 }
343 229  
344   -/*!< \brief Specialization for boolean type. */
  230 +
345 231 template <>
346 232 inline bool File::get<bool>(const QString &key) const
347 233 {
348 234 return getBool(key);
349 235 }
350 236  
351   -BR_EXPORT QDebug operator<<(QDebug dbg, const File &file); /*!< \brief Prints br::File::flat() to \c stderr. */
352   -BR_EXPORT QDataStream &operator<<(QDataStream &stream, const File &file); /*!< \brief Serializes the file to a stream. */
353   -BR_EXPORT QDataStream &operator>>(QDataStream &stream, File &file); /*!< \brief Deserializes the file from a stream. */
  237 +BR_EXPORT QDebug operator<<(QDebug dbg, const File &file);
  238 +BR_EXPORT QDataStream &operator<<(QDataStream &stream, const File &file);
  239 +BR_EXPORT QDataStream &operator>>(QDataStream &stream, File &file);
  240 +
354 241  
355   -/*!
356   - * \brief A list of files.
357   - *
358   - * Convenience class for working with a list of files.
359   - */
360 242 struct BR_EXPORT FileList : public QList<File>
361 243 {
362 244 FileList() {}
363   - FileList(int n); /*!< \brief Initialize the list with \em n empty files. */
364   - FileList(const QStringList &files); /*!< \brief Initialize the file list from a string list. */
365   - FileList(const QList<File> &files) { append(files); } /*!< \brief Initialize the file list from another file list. */
  245 + FileList(int n);
  246 + FileList(const QStringList &files);
  247 + FileList(const QList<File> &files) { append(files); }
366 248  
367   - QStringList flat() const; /*!< \brief Returns br::File::flat() for each file in the list. */
368   - QStringList names() const; /*!< \brief Returns #br::File::name for each file in the list. */
369   - void sort(const QString& key); /*!< \brief Sort the list based on metadata. */
  249 + QStringList flat() const;
  250 + QStringList names() const;
  251 + void sort(const QString& key);
370 252  
371   - QList<int> crossValidationPartitions() const; /*!< \brief Returns the cross-validation partition (default=0) for each file in the list. */
372   - int failures() const; /*!< \brief Returns the number of files with br::File::failed(). */
  253 + QList<int> crossValidationPartitions() const;
  254 + int failures() const;
373 255  
374   - static FileList fromGallery(const File &gallery, bool cache = false); /*!< \brief Create a file list from a br::Gallery. */
  256 + static FileList fromGallery(const File &gallery, bool cache = false);
375 257 };
376 258  
377   -/*!
378   - * \brief A list of matrices associated with a file.
379   - *
380   - * The Template is one of two important data structures in OpenBR (the File is the other).
381   - * A template represents a biometric at various stages of enrollment and can be modified by br::Transform and compared to other templates with br::Distance.
382   - *
383   - * While there exist many cases (ex. video enrollment, multiple face detects, per-patch subspace learning, ...) where the template will contain more than one matrix,
384   - * in most cases templates have exactly one matrix in their list representing a single image at various stages of enrollment.
385   - * In the cases where exactly one image is expected, the template provides the function m() as an idiom for treating it as a single matrix.
386   - * Casting operators are also provided to pass the template into image processing functions expecting matrices.
387   - *
388   - * Metadata related to the template that is computed during enrollment (ex. bounding boxes, eye locations, quality metrics, ...) should be assigned to the template's #file member.
389   - */
  259 +
390 260 struct Template : public QList<cv::Mat>
391 261 {
392   - File file; /*!< \brief The file from which the template is constructed. */
  262 + File file;
393 263 Template() {}
394   - Template(const File &_file) : file(_file) {} /*!< \brief Initialize #file. */
395   - Template(const File &_file, const cv::Mat &mat) : file(_file) { append(mat); } /*!< \brief Initialize #file and append a matrix. */
396   - Template(const File &_file, const QList<cv::Mat> &mats) : file(_file) { append(mats); } /*!< \brief Initialize #file and append matricies. */
397   - Template(const cv::Mat &mat) { append(mat); } /*!< \brief Append a matrix. */
  264 + Template(const File &_file) : file(_file) {}
  265 + Template(const File &_file, const cv::Mat &mat) : file(_file) { append(mat); }
  266 + Template(const File &_file, const QList<cv::Mat> &mats) : file(_file) { append(mats); }
  267 + Template(const cv::Mat &mat) { append(mat); }
398 268  
399 269 inline const cv::Mat &m() const { static const cv::Mat NullMatrix;
400   - return isEmpty() ? qFatal("Empty template."), NullMatrix : last(); } /*!< \brief Idiom to treat the template as a matrix. */
401   - inline cv::Mat &m() { return isEmpty() ? append(cv::Mat()), last() : last(); } /*!< \brief Idiom to treat the template as a matrix. */
  270 + return isEmpty() ? qFatal("Empty template."), NullMatrix : last(); }
  271 + inline cv::Mat &m() { return isEmpty() ? append(cv::Mat()), last() : last(); }
402 272 inline operator const File &() const { return file; }
403   - inline cv::Mat &operator=(const cv::Mat &other) { return m() = other; } /*!< \brief Idiom to treat the template as a matrix. */
404   - inline operator const cv::Mat&() const { return m(); } /*!< \brief Idiom to treat the template as a matrix. */
405   - inline operator cv::Mat&() { return m(); } /*!< \brief Idiom to treat the template as a matrix. */
406   - inline operator cv::_InputArray() const { return m(); } /*!< \brief Idiom to treat the template as a matrix. */
407   - inline operator cv::_OutputArray() { return m(); } /*!< \brief Idiom to treat the template as a matrix. */
408   - inline bool isNull() const { return isEmpty() || !m().data; } /*!< \brief Returns \c true if the template is empty or has no matrix data, \c false otherwise. */
409   - inline void merge(const Template &other) { append(other); file.append(other.file); } /*!< \brief Append the contents of another template. */
410   -
411   - /*!
412   - * \brief Returns the total number of bytes in all the matrices.
413   - */
  273 + inline cv::Mat &operator=(const cv::Mat &other) { return m() = other; }
  274 + inline operator const cv::Mat&() const { return m(); }
  275 + inline operator cv::Mat&() { return m(); }
  276 + inline operator cv::_InputArray() const { return m(); }
  277 + inline operator cv::_OutputArray() { return m(); }
  278 + inline bool isNull() const { return isEmpty() || !m().data; }
  279 + inline void merge(const Template &other) { append(other); file.append(other.file); }
  280 +
414 281 size_t bytes() const
415 282 {
416 283 size_t bytes = 0;
... ... @@ -419,9 +286,6 @@ struct Template : public QList&lt;cv::Mat&gt;
419 286 return bytes;
420 287 }
421 288  
422   - /*!
423   - * \brief Copies all the matrices and returns a new template.
424   - */
425 289 Template clone() const
426 290 {
427 291 Template other(file);
... ... @@ -430,41 +294,27 @@ struct Template : public QList&lt;cv::Mat&gt;
430 294 }
431 295 };
432 296  
433   -/*!
434   - * \brief Serialize a template.
435   - */
436 297 BR_EXPORT QDataStream &operator<<(QDataStream &stream, const Template &t);
437 298  
438   -/*!
439   - * \brief Deserialize a template.
440   - */
441 299 BR_EXPORT QDataStream &operator>>(QDataStream &stream, Template &t);
442 300  
443   -/*!
444   - * \brief A list of templates.
445   - *
446   - * Convenience class for working with a list of templates.
447   - */
448 301 struct TemplateList : public QList<Template>
449 302 {
450 303 TemplateList() {}
451   - TemplateList(const QList<Template> &templates) { append(templates); } /*!< \brief Initialize the template list from another template list. */
452   - TemplateList(const QList<File> &files) { foreach (const File &file, files) append(file); } /*!< \brief Initialize the template list from a file list. */
453   - BR_EXPORT static TemplateList fromGallery(const File &gallery); /*!< \brief Create a template list from a br::Gallery. */
  304 + TemplateList(const QList<Template> &templates) { append(templates); }
  305 + TemplateList(const QList<File> &files) { foreach (const File &file, files) append(file); }
  306 + BR_EXPORT static TemplateList fromGallery(const File &gallery);
  307 +
454 308  
455   - /*!< \brief Create a template list from a memory buffer of individual templates. Compatible with '.gal' galleries. */
456 309 BR_EXPORT static TemplateList fromBuffer(const QByteArray &buffer);
457 310  
458   - /*!< \brief Ensure labels are in the range [0,numClasses-1]. */
  311 +
459 312 BR_EXPORT static TemplateList relabel(const TemplateList &tl, const QString &propName, bool preserveIntegers);
460 313  
461 314 BR_EXPORT QList<int> indexProperty(const QString &propName, QHash<QString, int> * valueMap=NULL,QHash<int, QVariant> * reverseLookup = NULL) const;
462 315 BR_EXPORT QList<int> indexProperty(const QString &propName, QHash<QString, int> &valueMap, QHash<int, QVariant> &reverseLookup) const;
463 316 BR_EXPORT QList<int> applyIndex(const QString &propName, const QHash<QString, int> &valueMap) const;
464 317  
465   - /*!
466   - * \brief Returns the total number of bytes in all the templates.
467   - */
468 318 template <typename T>
469 319 T bytes() const
470 320 {
... ... @@ -473,9 +323,6 @@ struct TemplateList : public QList&lt;Template&gt;
473 323 return bytes;
474 324 }
475 325  
476   - /*!
477   - * \brief Returns a list of matrices with one matrix from each template at the specified \em index.
478   - */
479 326 QList<cv::Mat> data(int index = 0) const
480 327 {
481 328 QList<cv::Mat> data; data.reserve(size());
... ... @@ -483,9 +330,6 @@ struct TemplateList : public QList&lt;Template&gt;
483 330 return data;
484 331 }
485 332  
486   - /*!
487   - * \brief Returns a list of #br::TemplateList with each #br::Template in a given #br::TemplateList containing the number of matrices specified by \em partitionSizes.
488   - */
489 333 QList<TemplateList> partition(const QList<int> &partitionSizes) const
490 334 {
491 335 int sum = 0;
... ... @@ -517,9 +361,6 @@ struct TemplateList : public QList&lt;Template&gt;
517 361 return partitions;
518 362 }
519 363  
520   - /*!
521   - * \brief Returns #br::Template::file for each template in the list.
522   - */
523 364 FileList files() const
524 365 {
525 366 FileList files; files.reserve(size());
... ... @@ -527,14 +368,8 @@ struct TemplateList : public QList&lt;Template&gt;
527 368 return files;
528 369 }
529 370  
530   - /*!
531   - * \brief Returns #br::Template::file for each template in the list.
532   - */
533 371 FileList operator()() const { return files(); }
534 372  
535   - /*!
536   - * \brief Returns the number of occurences for each label in the list.
537   - */
538 373 template<typename T>
539 374 QMap<T,int> countValues(const QString &propName, bool excludeFailures = false) const
540 375 {
... ... @@ -545,9 +380,6 @@ struct TemplateList : public QList&lt;Template&gt;
545 380 return labelCounts;
546 381 }
547 382  
548   - /*!
549   - * \brief Merge all the templates together.
550   - */
551 383 TemplateList reduced() const
552 384 {
553 385 Template reduced;
... ... @@ -556,9 +388,6 @@ struct TemplateList : public QList&lt;Template&gt;
556 388 return TemplateList() << reduced;
557 389 }
558 390  
559   - /*!
560   - * \brief Find the indices of templates with specified key, value pairs.
561   - */
562 391 template<typename T>
563 392 QList<int> find(const QString& key, const T& value)
564 393 {
... ... @@ -571,41 +400,36 @@ struct TemplateList : public QList&lt;Template&gt;
571 400 }
572 401 };
573 402  
574   -/*!
575   - * \brief The base class of all plugins and objects requiring introspection.
576   - *
577   - * Plugins are constructed from files.
578   - * The file's name specifies which plugin to construct and the metadata provides initialization values for the plugin's properties.
579   - */
  403 +
580 404 class BR_EXPORT Object : public QObject
581 405 {
582 406 Q_OBJECT
583   - int firstAvailablePropertyIdx; /*!< \brief Index of the first property that can be set via command line arguments. */
  407 + int firstAvailablePropertyIdx;
584 408  
585 409 public:
586   - File file; /*!< \brief The file used to construct the plugin. */
  410 + File file;
  411 +
  412 + virtual void init() {}
  413 + virtual void store(QDataStream &stream) const;
  414 + virtual void load(QDataStream &stream);
587 415  
588   - virtual void init() {} /*!< \brief Overload this function instead of the default constructor to initialize the derived class. It should be safe to call this function multiple times. */
589   - virtual void store(QDataStream &stream) const; /*!< \brief Serialize the object. */
590   - virtual void load(QDataStream &stream); /*!< \brief Deserialize the object. Default implementation calls init() after deserialization. */
591 416  
592   - /*!< \brief Serialize an object created via the plugin system, including the string used to build the base object, allowing re-creation of the object without knowledge of its base string*/
593 417 virtual void serialize(QDataStream &stream) const
594 418 {
595 419 stream << description();
596 420 store(stream);
597 421 }
598 422  
599   - QStringList parameters() const; /*!< \brief A string describing the parameters the object takes. */
600   - QStringList prunedArguments(bool expanded = false) const; /*!< \brief A string describing the values the object has, default valued parameters will not be listed. If expanded is true, all abbreviations and model file names should be replaced with a description of the object generated from those names. */
601   - QString argument(int index, bool expanded) const; /*!< \brief A string value for the argument at the specified index. */
602   - virtual QString description(bool expanded = false) const; /*!< \brief Returns a string description of the object. */
603   -
604   - void setProperty(const QString &name, QVariant value); /*!< \brief Overload of QObject::setProperty to handle OpenBR data types. */
605   - virtual bool setPropertyRecursive(const QString &name, QVariant value); /*!< \brief Recursive version of setProperty, try to set the property on this object, or its children, returns true if successful. */
606   - bool setExistingProperty(const QString &name, QVariant value); /*! <\brief attempt to set property 'name' on this object. If name is not a pre-declared property, return false */
  423 + QStringList parameters() const;
  424 + QStringList prunedArguments(bool expanded = false) const;
  425 + QString argument(int index, bool expanded) const;
  426 + virtual QString description(bool expanded = false) const;
607 427  
608   - virtual QList<Object *> getChildren() const; /*!< \brief retrieve children of this object, default version scans properties, subclasses which do not sotre their children as properties must overload. */
  428 + void setProperty(const QString &name, QVariant value);
  429 + virtual bool setPropertyRecursive(const QString &name, QVariant value);
  430 + bool setExistingProperty(const QString &name, QVariant value);
  431 +
  432 + virtual QList<Object *> getChildren() const;
609 433  
610 434 template<typename T>
611 435 QList<T *> getChildren() const
... ... @@ -620,287 +444,109 @@ public:
620 444 return output;
621 445 }
622 446  
623   - static QStringList parse(const QString &string, char split = ','); /*!< \brief Splits the string while respecting lexical scoping of <tt>()</tt>, <tt>[]</tt>, <tt>\<\></tt>, and <tt>{}</tt>. */
  447 + static QStringList parse(const QString &string, char split = ',');
624 448  
625 449 private:
626 450 template <typename T> friend struct Factory;
627 451 friend class Context;
628   - void init(const File &file); /*!< \brief Initializes the plugin's properties from the file's metadata. */
  452 + void init(const File &file);
629 453 };
630 454  
631   -/*!
632   - * \brief The singleton class of global settings.
633   - *
634   - * Allocated by br::Context::initialize(), and deallocated by br::Context::finalize().
635   - *
636   - * \code
637   - * // Access the global context using the br::Globals pointer:
638   - * QString theSDKPath = br::Globals->sdkPath;
639   - * \endcode
640   - */
  455 +
641 456 class BR_EXPORT Context : public Object
642 457 {
643 458 Q_OBJECT
644 459 QFile logFile;
645 460  
646 461 public:
647   - /*!
648   - * \brief Path to <tt>share/openbr/openbr.bib</tt>
649   - */
  462 +
650 463 Q_PROPERTY(QString sdkPath READ get_sdkPath WRITE set_sdkPath RESET reset_sdkPath)
651 464 BR_PROPERTY(QString, sdkPath, "")
652 465  
653   - /*!
654   - * \brief The default algorithm to use when enrolling and comparing templates.
655   - */
656 466 Q_PROPERTY(QString algorithm READ get_algorithm WRITE set_algorithm RESET reset_algorithm)
657 467 BR_PROPERTY(QString, algorithm, "")
658 468  
659   - /*!
660   - * \brief Optional log file to copy <tt>stderr</tt> to.
661   - */
662 469 Q_PROPERTY(QString log READ get_log WRITE set_log RESET reset_log)
663 470 BR_PROPERTY(QString, log, "")
664 471  
665   - /*!
666   - * \brief Path to use when resolving images specified with relative paths.
667   - * Multiple paths can be specified using a semicolon separator.
668   - */
669 472 Q_PROPERTY(QString path READ get_path WRITE set_path RESET reset_path)
670 473 BR_PROPERTY(QString, path, "")
671 474  
672   - /*!
673   - * \brief The number of threads to use.
674   - */
675 475 Q_PROPERTY(int parallelism READ get_parallelism WRITE set_parallelism RESET reset_parallelism)
676 476 BR_PROPERTY(int, parallelism, std::max(1, QThread::idealThreadCount()+1))
677 477  
678   - /*!
679   - * \brief Whether or not to use GUI functions
680   - */
681 478 Q_PROPERTY(bool useGui READ get_useGui WRITE set_useGui RESET reset_useGui)
682 479 BR_PROPERTY(bool, useGui, true)
683 480  
684   - /*!
685   - * \brief The maximum number of templates to process in parallel.
686   - */
687 481 Q_PROPERTY(int blockSize READ get_blockSize WRITE set_blockSize RESET reset_blockSize)
688 482 BR_PROPERTY(int, blockSize, parallelism * ((sizeof(void*) == 4) ? 128 : 1024))
689 483  
690   - /*!
691   - * \brief If \c true no messages will be sent to the terminal, \c false by default.
692   - */
693 484 Q_PROPERTY(bool quiet READ get_quiet WRITE set_quiet RESET reset_quiet)
694 485 BR_PROPERTY(bool, quiet, false)
695 486  
696   - /*!
697   - * \brief If \c true extra messages will be sent to the terminal, \c false by default.
698   - */
699 487 Q_PROPERTY(bool verbose READ get_verbose WRITE set_verbose RESET reset_verbose)
700 488 BR_PROPERTY(bool, verbose, false)
701 489  
702   - /*!
703   - * \brief The most resent message sent to the terminal.
704   - */
705 490 Q_PROPERTY(QString mostRecentMessage READ get_mostRecentMessage WRITE set_mostRecentMessage RESET reset_mostRecentMessage)
706 491 BR_PROPERTY(QString, mostRecentMessage, "")
707 492  
708   - /*!
709   - * \brief Used internally to compute progress() and timeRemaining().
710   - */
711   -
712 493 Q_PROPERTY(double currentStep READ get_currentStep WRITE set_currentStep RESET reset_currentStep)
713 494 BR_PROPERTY(double, currentStep, 0)
714 495  
715 496 Q_PROPERTY(double currentProgress READ get_currentProgress WRITE set_currentProgress RESET reset_currentProgress)
716 497 BR_PROPERTY(double, currentProgress, 0)
717 498  
718   -
719   - /*!
720   - * \brief Used internally to compute progress() and timeRemaining().
721   - */
722 499 Q_PROPERTY(double totalSteps READ get_totalSteps WRITE set_totalSteps RESET reset_totalSteps)
723 500 BR_PROPERTY(double, totalSteps, 0)
724 501  
725   - /*!
726   - * \brief If \c true enroll 0 or more templates per image, otherwise (default) enroll exactly one.
727   - */
728 502 Q_PROPERTY(bool enrollAll READ get_enrollAll WRITE set_enrollAll RESET reset_enrollAll)
729 503 BR_PROPERTY(bool, enrollAll, false)
730 504  
731 505 typedef QHash<QString,QStringList> Filters;
732   - /*!
733   - * \brief Filters that automatically determine impostor matches based on target (gallery) template metadata.
734   - * \see br::FilterDistance
735   - */
736 506 Q_PROPERTY(Filters filters READ get_filters WRITE set_filters RESET reset_filters)
737 507 BR_PROPERTY(Filters, filters, Filters())
738 508  
739   - /*!
740   - * \brief File output is redirected here if the file's basename is 'buffer', clearing previous contents.
741   - */
742 509 Q_PROPERTY(QByteArray buffer READ get_buffer WRITE set_buffer RESET reset_buffer)
743 510 BR_PROPERTY(QByteArray, buffer, QByteArray())
744 511  
745   - /*!
746   - * \brief Enable/disable score normalization.
747   - */
748 512 Q_PROPERTY(bool scoreNormalization READ get_scoreNormalization WRITE set_scoreNormalization RESET reset_scoreNormalization)
749 513 BR_PROPERTY(bool, scoreNormalization, true)
750 514  
751   - /*!
752   - * \brief Perform k-fold cross validation.
753   - */
754 515 Q_PROPERTY(int crossValidate READ get_crossValidate WRITE set_crossValidate RESET reset_crossValidate)
755 516 BR_PROPERTY(int, crossValidate, 0)
756 517  
757   - /*!
758   - * \brief List of paths sub-models will be searched for on
759   - */
760 518 Q_PROPERTY(QList<QString> modelSearch READ get_modelSearch WRITE set_modelSearch RESET reset_modelSearch)
761 519 BR_PROPERTY(QList<QString>, modelSearch, QList<QString>() )
762 520  
763   - QHash<QString,QString> abbreviations; /*!< \brief Used by br::Transform::make() to expand abbreviated algorithms into their complete definitions. */
764   - QTime startTime; /*!< \brief Used to estimate timeRemaining(). */
  521 + QHash<QString,QString> abbreviations;
  522 + QTime startTime;
765 523  
766   - /*!
767   - * \brief Returns true if \em name is queryable using <a href="http://doc.qt.digia.com/qt/qobject.html#property">QObject::property</a>
768   - * \param name The property key to check for existance.
769   - * \return \c true if \em name is a property, \c false otherwise.
770   - * \see set
771   - */
772 524 bool contains(const QString &name);
773   -
774   - /*!
775   - * \brief Prints current progress statistics to \em stdout.
776   - * \see progress
777   - */
778 525 void printStatus();
779   -
780   - /*!
781   - * \brief Returns the completion percentage of a call to br::Train(), br::Enroll() or br::Compare().
782   - * \return float Fraction completed.
783   - * - \c -1 if no task is underway.
784   - * \see timeRemaining
785   - */
786 526 float progress() const;
787   -
788   - /*!
789   - * \brief Set a global property.
790   - * \param key Global property key.
791   - * \param value Global property value.
792   - * \see contains
793   - */
794 527 void setProperty(const QString &key, const QString &value);
795   -
796   - /*!
797   - * \brief Returns the time remaining in seconds of a call to \ref br_train, \ref br_enroll or \ref br_compare.
798   - * \return int Time remaining in seconds.
799   - * - \c -1 if no task is underway.
800   - * \see progress
801   - */
802 528 int timeRemaining() const;
803 529  
804   - /*!
805   - * \brief Returns \c true if \em sdkPath is valid, \c false otherwise.
806   - * \param sdkPath The path to <tt>share/openbr/openbr.bib</tt>
807   - */
808 530 static bool checkSDKPath(const QString &sdkPath);
809   -
810   - /*!
811   - * \brief Call \em once at the start of the application to allocate global variables.
812   - * \code
813   - * int main(int argc, char *argv[])
814   - * {
815   - * br::Context::initialize(argc, argv);
816   - *
817   - * // ...
818   - *
819   - * br::Context::finalize();
820   - * return 0;
821   - * }
822   - * \endcode
823   - * \param argc As provided by <tt>main()</tt>.
824   - * \param argv As provided by <tt>main()</tt>.
825   - * \param sdkPath The path to the folder containing <tt>share/openbr/openbr.bib</tt>
826   - * By default <tt>share/openbr/openbr.bib</tt> will be searched for relative to:
827   - * -# The working directory
828   - * -# The executable's location
829   - * \param useGui Create a QApplication instead of a QCoreApplication.
830   - * \note Tiggers \em abort() on failure to locate <tt>share/openbr/openbr.bib</tt>.
831   - * \note <a href="http://qt-project.org/">Qt</a> users should instead call this <i>after</i> initializing QApplication.
832   - * \see finalize
833   - */
834 531 static void initialize(int &argc, char *argv[], QString sdkPath = "", bool useGui = true);
835   -
836   - /*!
837   - * \brief Call \em once at the end of the application to deallocate global variables.
838   - * \see initialize
839   - */
840 532 static void finalize();
841   -
842   - /*!
843   - * \brief Returns a string with the name, version, and copyright of the project.
844   - * \return A string suitable for printing to the terminal or displaying in a dialog box.
845   - * \see version
846   - */
847 533 static QString about();
848   -
849   - /*!
850   - * \brief Returns the version of the SDK.
851   - * \return A string with the format: <i>\<MajorVersion\></i><tt>.</tt><i>\<MinorVersion\></i><tt>.</tt><i>\<PatchVersion\></i>
852   - * \see about scratchPath
853   - */
854 534 static QString version();
855   -
856   - /*!
857   - * \brief Returns the scratch directory.
858   - * \return A string with the format: <i>\</path/to/user/home/\></i><tt>OpenBR-</tt><i>\<MajorVersion\></i><tt>.</tt><i>\<MinorVersion\></i>
859   - * \note This should be used as the root directory for managing temporary files and providing process persistence.
860   - * \see version
861   - */
862 535 static QString scratchPath();
863   -
864   - /*!
865   - * \brief Returns names and parameters for the requested objects.
866   - *
867   - * Each object is \c \\n seperated. Arguments are seperated from the object name with a \c \\t.
868   - * \param abstractions Regular expression of the abstractions to search.
869   - * \param implementations Regular expression of the implementations to search.
870   - * \param parameters Include parameters after object name.
871   - * \note \ref managed_return_value
872   - * \note This function uses Qt's <a href="http://doc.qt.digia.com/stable/qregexp.html">QRegExp</a> syntax.
873   - */
874 536 static QStringList objects(const char *abstractions = ".*", const char *implementations = ".*", bool parameters = true);
875 537  
876 538 private:
877 539 static void messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg);
878 540 };
879 541  
880   -/*!
881   - * \brief The globally available settings.
882   - *
883   - * Initialized by Context::initialize() and destroyed with Context::finalize().
884   - */
885 542 BR_EXPORT extern Context *Globals;
886 543  
887   -/*!
888   - * \brief For run time construction of objects from strings.
889   - *
890   - * All plugins must derive from br::Object.
891   - * The factory is a templated struct to allow for different types of plugins.
892   - *
893   - * Uses the Industrial Strength Pluggable Factory model described <a href="http://adtmag.com/articles/2000/09/25/industrial-strength-pluggable-factories.aspx">here</a>.
894   - */
  544 +
895 545 template <class T>
896 546 struct Factory
897 547 {
898 548 virtual ~Factory() {}
899 549  
900   - /*!
901   - * \brief Constructs a plugin from a file.
902   - */
903   - //! [Factory make]
904 550 static T *make(const File &file)
905 551 {
906 552 QString name = file.get<QString>("plugin", "");
... ... @@ -914,11 +560,7 @@ struct Factory
914 560 static_cast<Object*>(object)->init(file);
915 561 return object;
916 562 }
917   - //! [Factory make]
918 563  
919   - /*!
920   - * \brief Constructs all the available plugins.
921   - */
922 564 static QList< QSharedPointer<T> > makeAll()
923 565 {
924 566 QList< QSharedPointer<T> > objects;
... ... @@ -929,14 +571,8 @@ struct Factory
929 571 return objects;
930 572 }
931 573  
932   - /*!
933   - * \brief Returns the names of the available plugins.
934   - */
935 574 static QStringList names() { return registry ? registry->keys() : QStringList(); }
936 575  
937   - /*!
938   - * \brief Returns the parameters for a plugin.
939   - */
940 576 static QString parameters(const QString &name)
941 577 {
942 578 if (!registry) return QString();
... ... @@ -946,9 +582,6 @@ struct Factory
946 582 }
947 583  
948 584 protected:
949   - /*!
950   - * \brief For internal use. Nifty trick to register objects using a constructor.
951   - */
952 585 Factory(QString name)
953 586 {
954 587 if (!registry) registry = new QMap<QString,Factory<T>*>();
... ... @@ -979,49 +612,22 @@ class FactoryInstance : public Factory&lt;_Abstraction&gt;
979 612 template <class _Abstraction, class _Implementation>
980 613 const FactoryInstance<_Abstraction,_Implementation> FactoryInstance<_Abstraction,_Implementation>::registerThis;
981 614  
982   -/*!
983   - * Macro to register a br::Factory plugin.
984   - *
985   - * \b Example:<br>
986   - * Note the use of \c Q_OBJECT at the beginning of the class declaration and \c BR_REGISTER after the class declaration.
987   - * \snippet openbr/plugins/misc.cpp example_transform
988   - */
989 615 #define BR_REGISTER(ABSTRACTION,IMPLEMENTATION) \
990 616 template class \
991 617 br::FactoryInstance<br::ABSTRACTION, IMPLEMENTATION>;
992 618  
993   -/*!
994   - * \defgroup initializers Initializers
995   - * \brief Plugins that initialize resources.
996   - */
997 619  
998   -/*!
999   - * \ingroup initializers
1000   - * \brief Plugin base class for initializing resources.
1001   - */
1002 620 class BR_EXPORT Initializer : public Object
1003 621 {
1004 622 Q_OBJECT
1005 623  
1006 624 public:
1007 625 virtual ~Initializer() {}
1008   - virtual void initialize() const = 0; /*!< \brief Called once at the end of br::Context::initialize(). */
1009   - virtual void finalize() const {} /*!< \brief Called once at the beginning of br::Context::finalize(). */
  626 + virtual void initialize() const = 0;
  627 + virtual void finalize() const {}
1010 628 };
1011 629  
1012   -/*!
1013   - * \defgroup outputs Outputs
1014   - * \brief Plugins that store template comparison results.
1015   - */
1016   -
1017   -/*!
1018   - * \ingroup outputs
1019   - * \brief Plugin base class for storing template comparison results.
1020   - *
1021   - * An \em output is a br::File representing the result comparing templates.
1022   - * br::File::suffix() is used to determine which plugin should handle the output.
1023   - * \note Handle serialization to disk in the derived class destructor.
1024   - */
  630 +
1025 631 class BR_EXPORT Output : public Object
1026 632 {
1027 633 Q_OBJECT
... ... @@ -1032,16 +638,16 @@ public:
1032 638 BR_PROPERTY(int, blockRows, -1)
1033 639 BR_PROPERTY(int, blockCols, -1)
1034 640  
1035   - FileList targetFiles; /*!< \brief List of files representing the gallery templates. */
1036   - FileList queryFiles; /*!< \brief List of files representing the probe templates. */
1037   - bool selfSimilar; /*!< \brief \c true if the \em targetFiles == \em queryFiles, \c false otherwise. */
  641 + FileList targetFiles;
  642 + FileList queryFiles;
  643 + bool selfSimilar;
1038 644  
1039 645 virtual ~Output() {}
1040   - virtual void initialize(const FileList &targetFiles, const FileList &queryFiles); /*!< \brief Initializes class data members. */
1041   - virtual void setBlock(int rowBlock, int columnBlock); /*!< \brief Set the current block. */
1042   - virtual void setRelative(float value, int i, int j); /*!< \brief Set a score relative to the current block. */
  646 + virtual void initialize(const FileList &targetFiles, const FileList &queryFiles);
  647 + virtual void setBlock(int rowBlock, int columnBlock);
  648 + virtual void setRelative(float value, int i, int j);
1043 649  
1044   - static Output *make(const File &file, const FileList &targetFiles, const FileList &queryFiles); /*!< \brief Make an output from a file and gallery/probe file lists. */
  650 + static Output *make(const File &file, const FileList &targetFiles, const FileList &queryFiles);
1045 651  
1046 652 private:
1047 653 QSharedPointer<Output> next;
... ... @@ -1049,81 +655,50 @@ private:
1049 655 virtual void set(float value, int i, int j) = 0;
1050 656 };
1051 657  
1052   -/*!
1053   - * \ingroup outputs
1054   - * \brief Plugin derived base class for storing outputs as matrices.
1055   - */
  658 +
1056 659 class BR_EXPORT MatrixOutput : public Output
1057 660 {
1058 661 Q_OBJECT
1059 662  
1060 663 public:
1061   - cv::Mat data; /*!< \brief The similarity matrix. */
  664 + cv::Mat data;
1062 665  
1063   - /*!
1064   - * \brief Make a MatrixOutput from gallery and probe file lists.
1065   - */
1066 666 static MatrixOutput *make(const FileList &targetFiles, const FileList &queryFiles);
1067 667  
1068 668 protected:
1069   - QString toString(int row, int column) const; /*!< \brief Converts the value requested similarity score to a string. */
  669 + QString toString(int row, int column) const;
1070 670  
1071 671 private:
1072 672 void initialize(const FileList &targetFiles, const FileList &queryFiles);
1073 673 void set(float value, int i, int j);
1074 674 };
1075 675  
1076   -/*!
1077   - * \defgroup formats Formats
1078   - * \brief Plugins that read a matrix.
1079   - */
1080   -
1081   -/*!
1082   - * \ingroup formats
1083   - * \brief Plugin base class for reading a template from disk.
1084   - *
1085   - * A \em format is a br::File representing a template (ex. jpg image) on disk.
1086   - * br::File::suffix() is used to determine which plugin should handle the format.
1087   - */
1088 676 class BR_EXPORT Format : public Object
1089 677 {
1090 678 Q_OBJECT
1091 679  
1092 680 public:
1093 681 virtual ~Format() {}
1094   - virtual Template read() const = 0; /*!< \brief Returns a br::Template created by reading #br::Object::file. */
1095   - virtual void write(const Template &t) const = 0; /*!< \brief Writes the br::Template to #br::Object::file. */
  682 + virtual Template read() const = 0;
  683 + virtual void write(const Template &t) const = 0;
1096 684 static Template read(const QString &file);
1097 685 static void write(const QString &file, const Template &t);
1098 686 };
1099 687  
1100   -/*!
1101   - * \defgroup galleries Galleries
1102   - * \brief Plugins that store templates.
1103   - */
1104   -
1105   -/*!
1106   - * \ingroup galleries
1107   - * \brief Plugin base class for storing a list of enrolled templates.
1108   - *
1109   - * A \em gallery is a file representing a br::TemplateList serialized to disk.
1110   - * br::File::suffix() is used to determine which plugin should handle the gallery.
1111   - * \note Handle serialization to disk in the derived class destructor.
1112   - */
1113 688 class BR_EXPORT Gallery : public Object
1114 689 {
1115   - Q_OBJECT
  690 + Q_OBJECT
1116 691 public:
1117 692 Q_PROPERTY(int readBlockSize READ get_readBlockSize WRITE set_readBlockSize RESET reset_readBlockSize STORED false)
1118 693 BR_PROPERTY(int, readBlockSize, Globals->blockSize)
1119 694  
1120 695 virtual ~Gallery() {}
1121   - TemplateList read(); /*!< \brief Retrieve all the stored templates. */
1122   - FileList files(); /*!< \brief Retrieve all the stored template files. */
1123   - virtual TemplateList readBlock(bool *done) = 0; /*!< \brief Retrieve a portion of the stored templates. */
1124   - void writeBlock(const TemplateList &templates); /*!< \brief Serialize a template list. */
1125   - virtual void write(const Template &t) = 0; /*!< \brief Serialize a template. */
1126   - static Gallery *make(const File &file); /*!< \brief Make a gallery to/from a file on disk. */
  696 + TemplateList read();
  697 + FileList files();
  698 + virtual TemplateList readBlock(bool *done) = 0;
  699 + void writeBlock(const TemplateList &templates);
  700 + virtual void write(const Template &t) = 0;
  701 + static Gallery *make(const File &file);
1127 702 void init();
1128 703  
1129 704 virtual qint64 totalSize() { return std::numeric_limits<qint64>::max(); }
... ... @@ -1133,20 +708,7 @@ private:
1133 708 QSharedPointer<Gallery> next;
1134 709 };
1135 710  
1136   -/*!
1137   - * \defgroup transforms Transforms
1138   - * \brief Plugins that process a template.
1139   - */
1140 711  
1141   -/*!
1142   - * \addtogroup transforms
1143   - * @{
1144   - */
1145   -
1146   -/*!
1147   - * \brief For asynchronous events during template projection.
1148   - * \see Transform::getEvent
1149   - */
1150 712 class TemplateEvent : public QObject
1151 713 {
1152 714 Q_OBJECT
... ... @@ -1161,14 +723,7 @@ signals:
1161 723 void theSignal(const Template &output) const;
1162 724 };
1163 725  
1164   -/*!
1165   - * \brief Plugin base class for processing a template.
1166   - *
1167   - * Transforms support the idea of \em training and \em projecting,
1168   - * whereby they are (optionally) given example images and are expected learn how to transform new instances into an alternative,
1169   - * hopefully more useful, basis for the recognition task at hand.
1170   - * Transforms can be chained together to support the declaration and use of arbitrary algorithms at run time.
1171   - */
  726 +
1172 727 class BR_EXPORT Transform : public Object
1173 728 {
1174 729 Q_OBJECT
... ... @@ -1177,53 +732,31 @@ public:
1177 732 bool independent, trainable;
1178 733  
1179 734 virtual ~Transform() {}
1180   - static Transform *make(QString str, QObject *parent); /*!< \brief Make a transform from a string. */
1181   - static QSharedPointer<Transform> fromAlgorithm(const QString &algorithm, bool preprocess=false); /*!< \brief Retrieve an algorithm's transform. If preprocess is true, attaches a stream transform as the root of the algorithm*/
  735 + static Transform *make(QString str, QObject *parent);
  736 + static QSharedPointer<Transform> fromAlgorithm(const QString &algorithm, bool preprocess=false);
1182 737 static QSharedPointer<Transform> fromComparison(const QString &algorithm);
1183 738  
1184   - virtual Transform *clone() const; /*!< \brief Copy the transform. */
  739 + virtual Transform *clone() const;
1185 740  
1186   - /*!< \brief Train the transform. */
1187   - virtual void train(const TemplateList &data);
1188 741  
1189   - /*!< \brief Train the transform, separate list items represent the way calls to project would be broken up
1190   - * Transforms that have to call train on another transform should implement train(QList), the strucutre of the
1191   - * list should mirror the calls that would be made to project by the parent transform. For example, DistributeTemplates
1192   - * would make a separate project call for each template it receives, and therefore sets the QList to contain single item
1193   - * template lists before passing it on.
1194   - * This version of train(QList) is appropriate for transforms that perform training on themselves, and don't call train
1195   - * on other transforms. It combines everything in data into a single TemplateList, then calls train(TemplateList)
1196   - */
  742 + virtual void train(const TemplateList &data);
1197 743 virtual void train(const QList<TemplateList> &data);
1198 744  
1199   - /*!< \brief Apply the transform to a single template. Typically used by independent transforms */
1200   - virtual void project(const Template &src, Template &dst) const = 0;
1201 745  
1202   - /*!< \brief Apply the transform, taking the full template list as input.
1203   - * A TemplateList is what is typically passed from transform to transform. Transforms that just
1204   - * need to operatoe on a single template at a time (and want to output exactly 1 template) can implement
1205   - * project(template), but transforms that want to change the structure of the TemplateList (such as flatten), or
1206   - * or output more or less than one template (e.g. detection methods) should implement project(TemplateList) directly
1207   - */
  746 + virtual void project(const Template &src, Template &dst) const = 0;
1208 747 virtual void project(const TemplateList &src, TemplateList &dst) const;
1209 748  
1210   - /*!< \brief Apply the transform to a single template, may update the transform's internal state
1211   - * By default, just call project, we can always call a const function from a non-const function.
1212   - * If a transform implements projectUpdate, it should report true to timeVarying so that it can be
1213   - * handled correctly by e.g. Stream.
1214   - */
1215 749 virtual void projectUpdate(const Template &src, Template &dst)
1216 750 {
1217 751 project(src, dst);
1218 752 }
1219 753  
1220   - /*!< \brief Apply the transform, may update the transform's internal state. */
1221 754 virtual void projectUpdate(const TemplateList &src, TemplateList &dst)
1222 755 {
1223 756 project(src,dst);
1224 757 }
1225 758  
1226   - /*!< \brief inplace projectUpdate. */
  759 +
1227 760 void projectUpdate(Template &srcdst)
1228 761 {
1229 762 Template dst;
... ... @@ -1231,7 +764,6 @@ public:
1231 764 srcdst = dst;
1232 765 }
1233 766  
1234   - /*!< \brief inplace projectUpdate. */
1235 767 void projectUpdate(TemplateList &srcdst)
1236 768 {
1237 769 TemplateList dst;
... ... @@ -1239,24 +771,9 @@ public:
1239 771 srcdst = dst;
1240 772 }
1241 773  
1242   - /*!
1243   - * Time-varying transforms may move away from a single input->single output model, and only emit
1244   - * templates under some conditions (e.g. a tracking thing may emit a template for each detected
1245   - * unique object), in this case finalize indicates that no further calls to project will be made
1246   - * and the transform can emit a final set if templates if it wants. Time-invariant transforms
1247   - * don't have to do anything.
1248   - */
1249 774 virtual void finalize(TemplateList &output) { output = TemplateList(); }
1250   -
1251   - /*!
1252   - * \brief Does the transform require the non-const version of project? Can vary for aggregation type transforms
1253   - * (if their children are time varying, they are also time varying, otherwise probably not)
1254   - */
1255 775 virtual bool timeVarying() const { return false; }
1256 776  
1257   - /*!
1258   - * \brief Convenience function equivalent to project().
1259   - */
1260 777 inline Template operator()(const Template &src) const
1261 778 {
1262 779 Template dst;
... ... @@ -1265,9 +782,6 @@ public:
1265 782 return dst;
1266 783 }
1267 784  
1268   - /*!
1269   - * \brief Convenience function equivalent to project().
1270   - */
1271 785 inline TemplateList operator()(const TemplateList &src) const
1272 786 {
1273 787 TemplateList dst;
... ... @@ -1275,21 +789,9 @@ public:
1275 789 return dst;
1276 790 }
1277 791  
1278   - /*!
1279   - * \brief Perform the minimum amount of work necessary to make a
1280   - * transform that can be used safely from a different thread than this
1281   - * transform. For transforms that aren't time-varying, nothing needs to be
1282   - * done, returning this is sufficient. Time varying transforms should implement this method
1283   - * and copy enough of their state that projectUpdate can safely be called on the original
1284   - * instance, and the copy concurrently.
1285   - */
1286 792 virtual Transform *smartCopy(bool &newTransform) { newTransform=false; return this;}
1287   -
1288 793 virtual Transform *smartCopy() {bool junk; return smartCopy(junk);}
1289 794  
1290   - /*!
1291   - * \brief Recursively retrieve a named event, returns NULL if an event is not found.
1292   - */
1293 795 virtual TemplateEvent *getEvent(const QString &name);
1294 796  
1295 797 static Transform *deserialize(QDataStream &stream)
... ... @@ -1301,88 +803,63 @@ public:
1301 803 return res;
1302 804 }
1303 805  
1304   - /*!
1305   - * \brief Return a pointer to a simplified version of this transform (if possible). Transforms which are only active during training should remove
1306   - * themselves by either returning their child transforms (where relevant) or returning NULL. Set newTransform to true if the transform returned is newly allocated.
1307   - */
1308 806 virtual Transform * simplify(bool &newTransform) { newTransform = false; return this; }
1309 807  
1310 808 protected:
1311   - Transform(bool independent = true, bool trainable = true); /*!< \brief Construct a transform. */
1312   - inline Transform *make(const QString &description) { return make(description, this); } /*!< \brief Make a subtransform. */
  809 + Transform(bool independent = true, bool trainable = true);
  810 + inline Transform *make(const QString &description) { return make(description, this); }
1313 811 };
1314 812  
1315   -/*!
1316   - * \brief Convenience function equivalent to project().
1317   - */
1318 813 inline Template &operator>>(Template &srcdst, const Transform &f)
1319 814 {
1320 815 srcdst = f(srcdst);
1321 816 return srcdst;
1322 817 }
1323 818  
1324   -/*!
1325   - * \brief Convenience function equivalent to project().
1326   - */
1327 819 inline TemplateList &operator>>(TemplateList &srcdst, const Transform &f)
1328 820 {
1329 821 srcdst = f(srcdst);
1330 822 return srcdst;
1331 823 }
1332 824  
1333   -/*!
1334   - * \brief Convenience function equivalent to store().
1335   - */
1336 825 inline QDataStream &operator<<(QDataStream &stream, const Transform &f)
1337 826 {
1338 827 f.store(stream);
1339 828 return stream;
1340 829 }
1341 830  
1342   -/*!
1343   - * \brief Convenience function equivalent to load().
1344   - */
1345 831 inline QDataStream &operator>>(QDataStream &stream, Transform &f)
1346 832 {
1347 833 f.load(stream);
1348 834 return stream;
1349 835 }
1350   -/*! @}*/
1351 836  
1352   -/*!
1353   - * \defgroup distances Distances
1354   - * \brief Plugins that compare templates.
1355   - */
1356 837  
1357   -/*!
1358   - * \ingroup distances
1359   - * \brief Plugin base class for comparing templates.
1360   - */
1361 838 class BR_EXPORT Distance : public Object
1362 839 {
1363 840 Q_OBJECT
1364 841  
1365 842 public:
1366 843 virtual ~Distance() {}
1367   - static Distance *make(QString str, QObject *parent); /*!< \brief Make a distance from a string. */
  844 + static Distance *make(QString str, QObject *parent);
1368 845  
1369   - static QSharedPointer<Distance> fromAlgorithm(const QString &algorithm); /*!< \brief Retrieve an algorithm's distance. */
1370   - virtual bool trainable() { return true; } /*!< \brief \c true if The distance implements train(), false otherwise. */
1371   - virtual void train(const TemplateList &src) = 0; /*!< \brief Train the distance. */
1372   - virtual void compare(const TemplateList &target, const TemplateList &query, Output *output) const; /*!< \brief Compare two template lists. */
1373   - virtual QList<float> compare(const TemplateList &targets, const Template &query) const; /*!< \brief Compute the normalized distance between a template and a template list. */
1374   - virtual float compare(const Template &a, const Template &b) const; /*!< \brief Compute the distance between two templates. */
1375   - virtual float compare(const cv::Mat &a, const cv::Mat &b) const; /*!< \brief Compute the distance between two biometric signatures. */
1376   - virtual float compare(const uchar *a, const uchar *b, size_t size) const; /*!< \brief Compute the distance between two buffers. */
  846 + static QSharedPointer<Distance> fromAlgorithm(const QString &algorithm);
  847 + virtual bool trainable() { return true; }
  848 + virtual void train(const TemplateList &src) = 0;
  849 + virtual void compare(const TemplateList &target, const TemplateList &query, Output *output) const;
  850 + virtual QList<float> compare(const TemplateList &targets, const Template &query) const;
  851 + virtual float compare(const Template &a, const Template &b) const;
  852 + virtual float compare(const cv::Mat &a, const cv::Mat &b) const;
  853 + virtual float compare(const uchar *a, const uchar *b, size_t size) const;
1377 854  
1378 855 protected:
1379   - inline Distance *make(const QString &description) { return make(description, this); } /*!< \brief Make a subdistance. */
  856 + inline Distance *make(const QString &description) { return make(description, this); }
1380 857  
1381 858 private:
1382 859 virtual void compareBlock(const TemplateList &target, const TemplateList &query, Output *output, int targetOffset, int queryOffset) const;
1383 860  
1384 861 friend struct AlgorithmCore;
1385   - virtual bool compare(const File &targetGallery, const File &queryGallery, const File &output) const /*!< \brief Escape hatch for algorithms that need customized file I/O during comparison. */
  862 + virtual bool compare(const File &targetGallery, const File &queryGallery, const File &output) const
1386 863 { (void) targetGallery; (void) queryGallery; (void) output; return false; }
1387 864 };
1388 865  
... ... @@ -1393,7 +870,7 @@ class BR_EXPORT Representation : public Object
1393 870 public:
1394 871 virtual ~Representation() {}
1395 872  
1396   - static Representation *make(QString str, QObject *parent); /*!< \brief Make a representation from a string. */
  873 + static Representation *make(QString str, QObject *parent);
1397 874 virtual cv::Mat preprocess(const cv::Mat &image) const { return image; }
1398 875 virtual void train(const QList<cv::Mat> &images, const QList<float> &labels) { (void) images; (void)labels; }
1399 876 // By convention, an empty indices list will result in all feature responses being calculated
... ... @@ -1409,90 +886,41 @@ class BR_EXPORT Classifier : public Object
1409 886 public:
1410 887 virtual ~Classifier() {}
1411 888  
1412   - static Classifier *make(QString str, QObject *parent); /*!< \brief Make a classifier from a string. */
  889 + static Classifier *make(QString str, QObject *parent);
1413 890 virtual void train(const QList<cv::Mat> &images, const QList<float> &labels) = 0;
1414 891 // By convention, classify should return a value normalized such that the threshold is 0. Negative values
1415 892 // can be interpreted as a negative classification and positive values as a positive classification.
1416 893 virtual float classify(const cv::Mat &image) const = 0;
1417 894 };
1418 895  
1419   -/*!
1420   -* \brief Returns \c true if the algorithm is a classifier, \c false otherwise.
1421   -*
1422   -* Classifers have no br::Distance associated with their br::Transform.
1423   -* Instead they populate br::Template::file \c Label metadata field with the predicted class.
1424   -*/
  896 +
1425 897 BR_EXPORT bool IsClassifier(const QString &algorithm);
1426 898  
1427   -/*!
1428   - * \brief High-level function for creating models.
1429   - * \see br_train
1430   - */
1431 899 BR_EXPORT void Train(const File &input, const File &model);
1432 900  
1433   -/*!
1434   - * \brief High-level function for creating galleries.
1435   - * \see br_enroll
1436   - */
1437 901 BR_EXPORT void Enroll(const File &input, const File &gallery = File());
1438 902  
1439   -/*!
1440   - * \brief High-level function for enrolling templates.
1441   - * \see br_enroll
1442   - */
1443 903 BR_EXPORT void Enroll(TemplateList &tmpl);
1444 904  
1445   -/*!
1446   - * \brief A naive alternative to \ref br::Enroll
1447   - */
1448 905 BR_EXPORT void Project(const File &input, const File &output);
1449 906  
1450   -/*!
1451   - * \brief High-level function for comparing galleries.
1452   - * \see br_compare
1453   - */
1454 907 BR_EXPORT void Compare(const File &targetGallery, const File &queryGallery, const File &output);
1455   -/*!
1456   - * \brief High-level function for comparing templates.
1457   - */
1458   -BR_EXPORT void CompareTemplateLists(const TemplateList &target, const TemplateList &query, Output *output);
1459 908  
  909 +BR_EXPORT void CompareTemplateLists(const TemplateList &target, const TemplateList &query, Output *output);
1460 910  
1461   -/*!
1462   - * \brief High-level function for doing a series of pairwise comparisons.
1463   - * \see br_pairwise_compare
1464   - */
1465 911 BR_EXPORT void PairwiseCompare(const File &targetGallery, const File &queryGallery, const File &output);
1466 912  
1467   -/*!
1468   - * \brief Change file formats.
1469   - * \param fileType One of \c Format, \c Gallery, or \c Output.
1470   - * \param inputFile The source file to convert from.
1471   - * \param outputFile The destination file to convert to.
1472   - */
1473 913 BR_EXPORT void Convert(const File &fileType, const File &inputFile, const File &outputFile);
1474 914  
1475   -/*!
1476   - * \brief Concatenate several galleries into one.
1477   - * \param inputGalleries List of galleries to concatenate.
1478   - * \param outputGallery Gallery to store the concatenated result.
1479   - * \note outputGallery must not be in inputGalleries.
1480   - */
1481 915 BR_EXPORT void Cat(const QStringList &inputGalleries, const QString &outputGallery);
1482 916  
1483   -/*!
1484   - * \brief Deduplicate a gallery.
1485   - * \param inputGallery Gallery to deduplicate.
1486   - * \param outputGallery Gallery to store the deduplicated result.
1487   - * \param threshold Match score threshold to determine duplicates.
1488   - */
1489 917 BR_EXPORT void Deduplicate(const File &inputGallery, const File &outputGallery, const QString &threshold);
1490 918  
1491 919 BR_EXPORT Transform *wrapTransform(Transform *base, const QString &target);
1492 920  
1493 921 BR_EXPORT Transform *pipeTransforms(QList<Transform *> &transforms);
1494 922  
1495   -/*! @}*/
  923 +
1496 924  
1497 925 } // namespace br
1498 926  
... ...
openbr/plugins/classification/adaboost.cpp
... ... @@ -26,17 +26,17 @@ namespace br
26 26 * \ingroup transforms
27 27 * \brief Wraps OpenCV's Ada Boost framework
28 28 * \author Scott Klum \cite sklum
29   - * \see http://docs.opencv.org/modules/ml/doc/boosting.html
30   - * \property enum type Type of Adaboost to perform. Options are: [Discrete, Real, Logit, Gentle] Default is Real.
31   - * \property enum splitCriteria Splitting criteria used to choose optimal splits during a weak tree construction. Options are: [Default, Gini, Misclass, Sqerr] Default is Default.
32   - * \property int weakCount Maximum number of weak classifiers per stage. Default is 100.
33   - * \property float trimRate A threshold between 0 and 1 used to save computational time. Samples with summary weight \leq 1 - weight\_trim\_rate do not participate in the next iteration of training. Set this parameter to 0 to turn off this functionality. Default is 0.95.
34   - * \property int folds OpenCV parameter variable. Default value is 0.
35   - * \property int maxDepth Maximum height of each weak classifier tree. Default is 1 (stumps).
36   - * \property bool returnConfidence Return the confidence value of the classification or the class value of the classification. Default is true (return confidence value).
37   - * \property bool overwriteMat If true, the output template will be a 1x1 matrix with value equal to the confidence or classification (depending on returnConfidence). If false the output template will be the same as the input template. Default is true.
38   - * \property QString inputVariable Metadata variable storing the label for each template. Default is "Label".
39   - * \property QString outputVariable Metadata variable to store the confidence or classification of each template (depending on returnConfidence). If overwriteMat is true nothing will be written here. Default is "".
  29 + * \br_link http://docs.opencv.org/modules/ml/doc/boosting.html
  30 + * \br_property type enum Type of Adaboost to perform. Options are: [Discrete, Real, Logit, Gentle] Default is Real.
  31 + * \br_property splitCriteria enum Splitting criteria used to choose optimal splits during a weak tree construction. Options are: [Default, Gini, Misclass, Sqerr] Default is Default.
  32 + * \br_property weakCount int Maximum number of weak classifiers per stage. Default is 100.
  33 + * \br_property trimRate float A threshold between 0 and 1 used to save computational time. Samples with summary weight \leq 1 - weight\_trim\_rate do not participate in the next iteration of training. Set this parameter to 0 to turn off this functionality. Default is 0.95.
  34 + * \br_property folds int OpenCV parameter variable. Default value is 0.
  35 + * \br_property maxDepth int Maximum height of each weak classifier tree. Default is 1 (stumps).
  36 + * \br_property returnConfidence bool Return the confidence value of the classification or the class value of the classification. Default is true (return confidence value).
  37 + * \br_property overwriteMat bool If true, the output template will be a 1x1 matrix with value equal to the confidence or classification (depending on returnConfidence). If false the output template will be the same as the input template. Default is true.
  38 + * \br_property inputVariable QString Metadata variable storing the label for each template. Default is "Label".
  39 + * \br_property outputVariable QString Metadata variable to store the confidence or classification of each template (depending on returnConfidence). If overwriteMat is true nothing will be written here. Default is "".
40 40 */
41 41 class AdaBoostTransform : public Transform
42 42 {
... ...
openbr/plugins/classification/ebif.cpp
... ... @@ -28,10 +28,12 @@ namespace br
28 28 /*!
29 29 * \ingroup transforms
30 30 * \brief Face Recognition Using Early Biologically Inspired Features
31   - * \see Min Li (IBM China Research Lab, China), Nalini Ratha (IBM Watson Research Center, USA), Weihong Qian (IBM China Research Lab, China), Shenghua Bao (IBM China Research Lab, China), Zhong Su (IBM China Research Lab, China)
  31 + * \br_paper Li, Min, et al.
  32 + * "Face recognition using early biologically inspired features."
  33 + * Biometrics: Theory, Applications and Systems (BTAS), 2013 IEEE Sixth International Conference on. IEEE, 2013.
32 34 * \author Josh Klontz \cite jklontz
33   - * \property int N The number of scales. Default is 6.
34   - * \property int M The number of orientations between 0 and pi. Default is 9.
  35 + * \br_property int N The number of scales. Default is 6.
  36 + * \br_property int M The number of orientations between 0 and pi. Default is 9.
35 37 */
36 38 class EBIFTransform : public UntrainableTransform
37 39 {
... ...
openbr/plugins/classification/forest.cpp
... ... @@ -26,18 +26,18 @@ namespace br
26 26 * \ingroup transforms
27 27 * \brief Wraps OpenCV's random trees framework
28 28 * \author Scott Klum \cite sklum
29   - * \see http://docs.opencv.org/modules/ml/doc/random_trees.html
30   - * \property bool classification If true the labels are expected to be categorical. Otherwise they are expected to be numerical. Default is true.
31   - * \property float splitPercentage Used to calculate the minimum number of samples per split in a random tree. The minimum number of samples is calculated as the number of samples x splitPercentage. Default is 0.01.
32   - * \property int maxDepth The maximum depth of each decision tree. Default is std::numeric_limits<int>::max() and typically should be set by the user.
33   - * \property int maxTrees The maximum number of trees in the forest. Default is 10.
34   - * \property float forestAccuracy A sufficient accuracy for the forest for training to terminate. Used if termCrit is EPS or Both. Default is 0.1.
35   - * \property bool returnConfidence If both classification and returnConfidence are use a fuzzy class label as the output of the forest. Default is true.
36   - * \property bool overwriteMat If true set dst to be a 1x1 Mat with the forest response as its value. Otherwise append the forest response to metadata using outputVariable as a key. Default is true.
37   - * \property QString inputVariable The metadata key for each templates label. Default is "Label".
38   - * \property QString outputVariable The metadata key for the forest response if overwriteMat is false. Default is "".
39   - * \property bool weight If true and classification is true the random forest will use prior accuracies. Default is false.
40   - * \property enum termCrit Termination criteria for training the random forest. Options are Iter, EPS and Both. Iter terminates when the maximum number of trees is reached. EPS terminates when forestAccuracy is met. Both terminates when either is true. Default is Iter.
  29 + * \br_link http://docs.opencv.org/modules/ml/doc/random_trees.html
  30 + * \br_property bool classification If true the labels are expected to be categorical. Otherwise they are expected to be numerical. Default is true.
  31 + * \br_property float splitPercentage Used to calculate the minimum number of samples per split in a random tree. The minimum number of samples is calculated as the number of samples x splitPercentage. Default is 0.01.
  32 + * \br_property int maxDepth The maximum depth of each decision tree. Default is std::numeric_limits<int>::max() and typically should be set by the user.
  33 + * \br_property int maxTrees The maximum number of trees in the forest. Default is 10.
  34 + * \br_property float forestAccuracy A sufficient accuracy for the forest for training to terminate. Used if termCrit is EPS or Both. Default is 0.1.
  35 + * \br_property bool returnConfidence If both classification and returnConfidence are use a fuzzy class label as the output of the forest. Default is true.
  36 + * \br_property bool overwriteMat If true set dst to be a 1x1 Mat with the forest response as its value. Otherwise append the forest response to metadata using outputVariable as a key. Default is true.
  37 + * \br_property QString inputVariable The metadata key for each templates label. Default is "Label".
  38 + * \br_property QString outputVariable The metadata key for the forest response if overwriteMat is false. Default is "".
  39 + * \br_property bool weight If true and classification is true the random forest will use prior accuracies. Default is false.
  40 + * \br_property enum termCrit Termination criteria for training the random forest. Options are Iter, EPS and Both. Iter terminates when the maximum number of trees is reached. EPS terminates when forestAccuracy is met. Both terminates when either is true. Default is Iter.
41 41 */
42 42 class ForestTransform : public Transform
43 43 {
... ... @@ -187,8 +187,8 @@ BR_REGISTER(Transform, ForestTransform)
187 187 * \ingroup transforms
188 188 * \brief Wraps OpenCV's random trees framework to induce features
189 189 * \author Scott Klum \cite sklum
190   - * \see https://lirias.kuleuven.be/bitstream/123456789/316661/1/icdm11-camready.pdf
191   - * \property bool useRegressionValue SCOTT FILL ME IN.
  190 + * \br_link https://lirias.kuleuven.be/bitstream/123456789/316661/1/icdm11-camready.pdf
  191 + * \br_property bool useRegressionValue SCOTT FILL ME IN.
192 192 */
193 193 class ForestInductionTransform : public ForestTransform
194 194 {
... ...
openbr/plugins/classification/lda.cpp
... ... @@ -28,7 +28,7 @@ namespace br
28 28 /*!
29 29 * \ingroup initializers
30 30 * \brief Initialize Eigen
31   - * http://eigen.tuxfamily.org/dox/TopicMultiThreading.html
  31 + * \br_link http://eigen.tuxfamily.org/dox/TopicMultiThreading.html
32 32 * \author Scott Klum \cite sklum
33 33 */
34 34 class EigenInitializer : public Initializer
... ... @@ -49,9 +49,9 @@ BR_REGISTER(Initializer, EigenInitializer)
49 49 * \author Brendan Klare \cite bklare
50 50 * \author Josh Klontz \cite jklontz
51 51 *
52   - * \property float keep Options are: [keep < 0 - All eigenvalues are retained, keep == 0 - No PCA is performed and the eigenvectors form an identity matrix, 0 < keep < 1 - Keep is the fraction of the variance to retain, keep >= 1 - keep is the number of leading eigenvectors to retain] Default is 0.95.
53   - * \property int drop BRENDAN OR JOSH FILL ME IN. Default is 0.
54   - * \property bool whiten BRENDAN OR JOSH FILL ME IN. Default is false.
  52 + * \br_property float keep Options are: [keep < 0 - All eigenvalues are retained, keep == 0 - No PCA is performed and the eigenvectors form an identity matrix, 0 < keep < 1 - Keep is the fraction of the variance to retain, keep >= 1 - keep is the number of leading eigenvectors to retain] Default is 0.95.
  53 + * \br_property int drop BRENDAN OR JOSH FILL ME IN. Default is 0.
  54 + * \br_property bool whiten BRENDAN OR JOSH FILL ME IN. Default is false.
55 55 */
56 56 class PCATransform : public Transform
57 57 {
... ... @@ -266,9 +266,12 @@ BR_REGISTER(Transform, RowWisePCATransform)
266 266  
267 267 /*!
268 268 * \ingroup transforms
269   - * \brief Computes Distance From Feature Space (DFFS) \cite moghaddam97.
  269 + * \brief Computes Distance From Feature Space (DFFS)
  270 + * \br_paper Moghaddam, Baback, and Alex Pentland.
  271 + * "Probabilistic visual learning for object representation."
  272 + * Pattern Analysis and Machine Intelligence, IEEE Transactions on 19.7 (1997): 696-710.
270 273 * \author Josh Klontz \cite jklontz
271   - * \property float keep Sets PCA keep property. Default is 0.95.
  274 + * \br_property float keep Sets PCA keep property. Default is 0.95.
272 275 */
273 276 class DFFSTransform : public Transform
274 277 {
... ... @@ -314,13 +317,13 @@ BR_REGISTER(Transform, DFFSTransform)
314 317 * \brief Projects input into learned Linear Discriminant Analysis subspace.
315 318 * \author Brendan Klare \cite bklare
316 319 * \author Josh Klontz \cite jklontz
317   - * \property float pcaKeep BRENDAN OR JOSH FILL ME IN. Default is 0.98.
318   - * \property bool pcaWhiten BRENDAN OR JOSH FILL ME IN. Default is false.
319   - * \property int directLDA BRENDAN OR JOSH FILL ME IN. Default is 0.
320   - * \property float directDrop BRENDAN OR JOSH FILL ME IN. Default is 0.1.
321   - * \property QString inputVariable BRENDAN OR JOSH FILL ME IN. Default is "Label".
322   - * \property bool isBinary BRENDAN OR JOSH FILL ME IN. Default is false.
323   - * \property bool normalize BRENDAN OR JOSH FILL ME IN. Default is true.
  320 + * \br_property float pcaKeep BRENDAN OR JOSH FILL ME IN. Default is 0.98.
  321 + * \br_property bool pcaWhiten BRENDAN OR JOSH FILL ME IN. Default is false.
  322 + * \br_property int directLDA BRENDAN OR JOSH FILL ME IN. Default is 0.
  323 + * \br_property float directDrop BRENDAN OR JOSH FILL ME IN. Default is 0.1.
  324 + * \br_property QString inputVariable BRENDAN OR JOSH FILL ME IN. Default is "Label".
  325 + * \br_property bool isBinary BRENDAN OR JOSH FILL ME IN. Default is false.
  326 + * \br_property bool normalize BRENDAN OR JOSH FILL ME IN. Default is true.
324 327 */
325 328 class LDATransform : public Transform
326 329 {
... ... @@ -564,9 +567,9 @@ BR_REGISTER(Transform, LDATransform)
564 567 * \ingroup transforms
565 568 * \brief Projects input into learned Linear Discriminant Analysis subspace learned on a sparse subset of features with the highest weight in the original LDA algorithm.
566 569 * \author Brendan Klare \cite bklare
567   - * \property float varThreshold BRENDAN FILL ME IN. Default is 1.5.
568   - * \property float pcaKeep BRENDAN FILL ME IN. Default is 0.98.
569   - * \property bool normalize BRENDAN FILL ME IN. Default is true.
  570 + * \br_property float varThreshold BRENDAN FILL ME IN. Default is 1.5.
  571 + * \br_property float pcaKeep BRENDAN FILL ME IN. Default is 0.98.
  572 + * \br_property bool normalize BRENDAN FILL ME IN. Default is true.
570 573 */
571 574 class SparseLDATransform : public Transform
572 575 {
... ...
openbr/plugins/classification/liblinear.cpp
... ... @@ -45,6 +45,10 @@ static void loadModel(model &amp;m, QDataStream &amp;stream)
45 45 m = *load_model(qPrintable(tempFile.fileName()));
46 46 }
47 47  
  48 +/*!
  49 + * \brief DOCUMENT ME SCOTT
  50 + * \author Scott Klum \cite sklum
  51 + */
48 52 class Linear : public Transform
49 53 {
50 54 Q_OBJECT
... ...
openbr/plugins/classification/mlp.cpp
... ... @@ -28,13 +28,13 @@ namespace br
28 28 * \ingroup transforms
29 29 * \brief Wraps OpenCV's multi-layer perceptron framework
30 30 * \author Scott Klum \cite sklum
31   - * \see http://docs.opencv.org/modules/ml/doc/neural_networks.html
32   - * \property enum kernel Type of MLP kernel to use. Options are Identity, Sigmoid, Gaussian. Default is Sigmoid.
33   - * \property float alpha Determines activation function for neural network. See OpenCV documentation for more details. Default is 1.
34   - * \property float beta Determines activation function for neural network. See OpenCV documentation for more details. Default is 1.
35   - * \property QStringList inputVariables Metadata keys for the labels associated with each template. There should be the same number of keys in the list as there are neurons in the final layer. Default is QStringList().
36   - * \property QStringList outputVariables Metadata keys to store the output of the neural network. There should be the same number of keys in the list as there are neurons in the final layer. Default is QStringList().
37   - * \property QList<int> neuronsPerLayer The number of neurons in each layer of the net. Default is QList<int>() << 1 << 1.
  31 + * \br_link http://docs.opencv.org/modules/ml/doc/neural_networks.html
  32 + * \br_property enum kernel Type of MLP kernel to use. Options are Identity, Sigmoid, Gaussian. Default is Sigmoid.
  33 + * \br_property float alpha Determines activation function for neural network. See OpenCV documentation for more details. Default is 1.
  34 + * \br_property float beta Determines activation function for neural network. See OpenCV documentation for more details. Default is 1.
  35 + * \br_property QStringList inputVariables Metadata keys for the labels associated with each template. There should be the same number of keys in the list as there are neurons in the final layer. Default is QStringList().
  36 + * \br_property QStringList outputVariables Metadata keys to store the output of the neural network. There should be the same number of keys in the list as there are neurons in the final layer. Default is QStringList().
  37 + * \br_property QList<int> neuronsPerLayer The number of neurons in each layer of the net. Default is QList<int>() << 1 << 1.
38 38 */
39 39 class MLPTransform : public MetaTransform
40 40 {
... ...
openbr/plugins/classification/nt4.cpp
... ... @@ -75,9 +75,9 @@ BR_REGISTER(Initializer, NT4Initializer)
75 75 */
76 76 struct NT4Context
77 77 {
78   - HNLExtractor extractor; /*!< Face extractor. */
79   - HNEExtractor irisExtractor; /*!< Iris extractor. */
80   - HNMatcher matcher; /*!< Template matcher. */
  78 + HNLExtractor extractor; // Face extractor.
  79 + HNEExtractor irisExtractor; // Iris extractor.
  80 + HNMatcher matcher; // Template matcher.
81 81  
82 82 NT4Context()
83 83 {
... ... @@ -148,9 +148,7 @@ struct NT4Context
148 148 NObjectFree(matcher);
149 149 }
150 150  
151   - /*!
152   - * \brief to NT image
153   - */
  151 + // to NT image
154 152 static void toImage(const Mat &src, HNGrayscaleImage *grayscaleImage)
155 153 {
156 154 Mat gray;
... ... @@ -167,9 +165,7 @@ struct NT4Context
167 165 NObjectFree(image);
168 166 }
169 167  
170   - /*!
171   - * \brief to OpenCV matrix
172   - */
  168 + // to OpenCV matrix
173 169 static Mat toMat(const HNLTemplate &templ)
174 170 {
175 171 NSizeType bufferSize;
... ... @@ -181,9 +177,7 @@ struct NT4Context
181 177 return buffer;
182 178 }
183 179  
184   - /*!
185   - * \brief extract metadata
186   - */
  180 + // extract metadata
187 181 static File toMetadata(const NleDetectionDetails &detectionDetails)
188 182 {
189 183 File metadata;
... ... @@ -221,9 +215,7 @@ struct NT4Context
221 215 return metadata;
222 216 }
223 217  
224   - /*!
225   - * \brief Initialize from metadata
226   - */
  218 + // Initialize from metadata
227 219 static NleDetectionDetails fromMetadata(const File &metadata)
228 220 {
229 221 NleDetectionDetails detectionDetails;
... ...
openbr/plugins/classification/pp4.cpp
... ... @@ -200,7 +200,7 @@ struct PP4Context
200 200 * \brief Enroll faces in PittPatt 4
201 201 * \author Josh Klontz \cite jklontz
202 202 * \warning Needs a maintainer.
203   - * \property bool detectOnly If true, return all detected faces. Otherwise, return only faces that are suitable for recognition. Default is false.
  203 + * \br_property bool detectOnly If true, return all detected faces. Otherwise, return only faces that are suitable for recognition. Default is false.
204 204 */
205 205 class PP4EnrollTransform : public UntrainableMetaTransform
206 206 {
... ...
openbr/plugins/classification/pp5.cpp
... ... @@ -252,12 +252,12 @@ struct PP5Context
252 252 * \brief Enroll faces in PP5
253 253 * \author Josh Klontz \cite jklontz
254 254 * \author E. Taborsky \cite mmtaborsky
255   - * \property bool detectOnly If true, enroll all detected faces. Otherwise, only enroll faces suitable for recognition. Default is false.
256   - * \property bool requireLandmarks If true, require the right eye, left eye, and nose base to be detectable by PP5. If this does not happen FTE is set to true for that template. Default is false.
257   - * \property float adaptiveMinSize The minimum face size as a percentage of total image width. 0.1 corresponds to a minimum face size of 10% the total image width. Default is 0.01.
258   - * \property int minSize The absolute minimum face size to search for. This is not a pixel value. Please see PittPatt documentation for the relationship between minSize and pixel IPD. Default is 4.
259   - * \property enum landmarkRange Range of landmarks to search for. Options are Frontal, Extended, Full, and Comprehensive. Default is Comprehensive.
260   - * \property int searchPruningAggressiveness The amount of aggressiveness involved in search for faces in images. 0 means all scales and locations are searched. 1 means fewer detectors are used in the early stages but all scales are still searched. 2-4 means that the largest faces are found first and then fewer scales are searched. Default is 0.
  255 + * \br_property bool detectOnly If true, enroll all detected faces. Otherwise, only enroll faces suitable for recognition. Default is false.
  256 + * \br_property bool requireLandmarks If true, require the right eye, left eye, and nose base to be detectable by PP5. If this does not happen FTE is set to true for that template. Default is false.
  257 + * \br_property float adaptiveMinSize The minimum face size as a percentage of total image width. 0.1 corresponds to a minimum face size of 10% the total image width. Default is 0.01.
  258 + * \br_property int minSize The absolute minimum face size to search for. This is not a pixel value. Please see PittPatt documentation for the relationship between minSize and pixel IPD. Default is 4.
  259 + * \br_property enum landmarkRange Range of landmarks to search for. Options are Frontal, Extended, Full, and Comprehensive. Default is Comprehensive.
  260 + * \br_property int searchPruningAggressiveness The amount of aggressiveness involved in search for faces in images. 0 means all scales and locations are searched. 1 means fewer detectors are used in the early stages but all scales are still searched. 2-4 means that the largest faces are found first and then fewer scales are searched. Default is 0.
261 261 */
262 262 class PP5EnrollTransform : public UntrainableMetaTransform
263 263 {
... ... @@ -406,10 +406,9 @@ BR_REGISTER(Transform, PP5EnrollTransform)
406 406  
407 407 /*!
408 408 * \ingroup distances
409   - * \brief Compare templates with PP5
  409 + * \brief Compare templates with PP5. PP5 distance is known to be asymmetric
410 410 * \author Josh Klontz \cite jklontz
411 411 * \author E. Taborsky \cite mmtaborsky
412   - * \note PP5 distance is known to be asymmetric
413 412 */
414 413 class PP5CompareDistance : public UntrainableDistance
415 414 , public PP5Context
... ... @@ -511,6 +510,10 @@ class PP5CompareDistance : public UntrainableDistance
511 510  
512 511 BR_REGISTER(Distance, PP5CompareDistance)
513 512  
  513 +/*!
  514 + * \brief DOCUMENT ME
  515 + * \author Unknown \cite unknown
  516 + */
514 517 class PP5GalleryTransform: public UntrainableMetaTransform
515 518 , public PP5Context
516 519 {
... ...
openbr/plugins/classification/svm.cpp
... ... @@ -29,19 +29,22 @@ namespace br
29 29 /*!
30 30 * \ingroup transforms
31 31 * \brief Wraps OpenCV's SVM framework.
32   - * \see http://docs.opencv.org/modules/ml/doc/support_vector_machines.html
33   - * \see C. Burges. "A tutorial on support vector machines for pattern recognition", Knowledge Discovery and Data Mining 2(2), 1998.
  32 + * \br_link http://docs.opencv.org/modules/ml/doc/support_vector_machines.html
  33 + * \br_paper C. Burges.
  34 + * "A tutorial on support vector machines for pattern recognition"
  35 + * Knowledge Discovery and Data Mining 2(2), 1998.
34 36 * \author Josh Klontz \cite jklontz
35   - * \property enum Kernel The type of SVM kernel to use. Options are Linear, Poly, RBF, Sigmoid. Default is Linear.
36   - * \property enum Type The type of SVM to do. Options are C_SVC, NU_SVC, ONE_CLASS, EPS_SVR, NU_SVR. Default is C_SVC.
37   - * \property float C Parameter C of an SVM optimization problem. Needed when Type is C_SVC, EPS_SVR or NU_SVR. Default is -1.
38   - * \property float gamma Parameter gamma of a kernel function. Needed when Kernel is Poly, RBF, or Sigmoid. Default is -1.
39   - * \property QString inputVariable Metadata variable storing the label for each template. Default is "Label".
40   - * \property QString outputVariable Metadata variable to store the prediction value of the trained SVM. If type is EPS_SVR or NU_SVR the stored value is the output of the SVM. Otherwise the value is the output of the SVM mapped through the reverse lookup table. Default is "".
41   - * \property bool returnDFVal If true, dst is set to a 1x1 Mat with value equal to the predicted output of the SVM. Default is false.
42   - * \property int termCriteria The maximum number of training iterations. Default is 1000.
43   - * \property int folds Cross validation parameter used for autoselecting other parameters. Default is 5.
44   - * \property bool balanceFolds If true and the problem is 2-class classification then more balanced cross validation subsets are created. Default is false.
  37 + *
  38 + * \br_property enum Kernel The type of SVM kernel to use. Options are Linear, Poly, RBF, Sigmoid. Default is Linear.
  39 + * \br_property enum Type The type of SVM to do. Options are C_SVC, NU_SVC, ONE_CLASS, EPS_SVR, NU_SVR. Default is C_SVC.
  40 + * \br_property float C Parameter C of an SVM optimization problem. Needed when Type is C_SVC, EPS_SVR or NU_SVR. Default is -1.
  41 + * \br_property float gamma Parameter gamma of a kernel function. Needed when Kernel is Poly, RBF, or Sigmoid. Default is -1.
  42 + * \br_property QString inputVariable Metadata variable storing the label for each template. Default is "Label".
  43 + * \br_property QString outputVariable Metadata variable to store the prediction value of the trained SVM. If type is EPS_SVR or NU_SVR the stored value is the output of the SVM. Otherwise the value is the output of the SVM mapped through the reverse lookup table. Default is "".
  44 + * \br_property bool returnDFVal If true, dst is set to a 1x1 Mat with value equal to the predicted output of the SVM. Default is false.
  45 + * \br_property int termCriteria The maximum number of training iterations. Default is 1000.
  46 + * \br_property int folds Cross validation parameter used for autoselecting other parameters. Default is 5.
  47 + * \br_property bool balanceFolds If true and the problem is 2-class classification then more balanced cross validation subsets are created. Default is false.
45 48 */
46 49 class SVMTransform : public Transform
47 50 {
... ...
openbr/plugins/classification/turk.cpp
... ... @@ -23,9 +23,9 @@ namespace br
23 23 * \ingroup transforms
24 24 * \brief Convenience class for training turk attribute regressors
25 25 * \author Josh Klontz \cite jklontz
26   - * \property QString key Metadata key to pass input values to SVM. Actual lookup key is "key_value" where value is each value in the parameter values. Default is "".
27   - * \property QStringList values Metadata keys to pass input values to SVM. Actual lookup key is "key_value" where key is the parameter key and value is each value in this list. Each passed value trains a new SVM with the input values found in metadata["key_value"]. Default is "".
28   - * \property bool isMeta If true, "Average+SaveMat(predicted_key_value)" is appended to each classifier. If false, nothing is appended. Default is false.
  26 + * \br_property QString key Metadata key to pass input values to SVM. Actual lookup key is "key_value" where value is each value in the parameter values. Default is "".
  27 + * \br_property QStringList values Metadata keys to pass input values to SVM. Actual lookup key is "key_value" where key is the parameter key and value is each value in this list. Each passed value trains a new SVM with the input values found in metadata["key_value"]. Default is "".
  28 + * \br_property bool isMeta If true, "Average+SaveMat(predicted_key_value)" is appended to each classifier. If false, nothing is appended. Default is false.
29 29 */
30 30 class TurkClassifierTransform : public Transform
31 31 {
... ...
openbr/plugins/cluster/collectnn.cpp
... ... @@ -23,7 +23,7 @@ namespace br
23 23 * \ingroup transforms
24 24 * \brief Collect nearest neighbors and append them to metadata.
25 25 * \author Charles Otto \cite caotto
26   - * \property int keep The maximum number of nearest neighbors to keep. Default is 20.
  26 + * \br_property int keep The maximum number of nearest neighbors to keep. Default is 20.
27 27 */
28 28 class CollectNNTransform : public UntrainableMetaTransform
29 29 {
... ...
openbr/plugins/cluster/kmeans.cpp
... ... @@ -28,9 +28,9 @@ namespace br
28 28 * \ingroup transforms
29 29 * \brief Wraps OpenCV kmeans and flann.
30 30 * \author Josh Klontz \cite jklontz
31   - * \property int kTrain The number of random centroids to make at train time. Default is 256.
32   - * \property int kSearch The number of nearest neighbors to search for at runtime. Default is 1.
33   - * \see http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html
  31 + * \br_property int kTrain The number of random centroids to make at train time. Default is 256.
  32 + * \br_property int kSearch The number of nearest neighbors to search for at runtime. Default is 1.
  33 + * \br_link http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html
34 34 */
35 35 class KMeansTransform : public Transform
36 36 {
... ...
openbr/plugins/cluster/lognn.cpp
... ... @@ -25,7 +25,7 @@ namespace br
25 25 * \ingroup transforms
26 26 * \brief Log nearest neighbors to specified file.
27 27 * \author Charles Otto \cite caotto
28   - * \property QString fileName The name of the log file. An empty fileName won't be written to. Default is "".
  28 + * \br_property QString fileName The name of the log file. An empty fileName won't be written to. Default is "".
29 29 */
30 30 class LogNNTransform : public TimeVaryingTransform
31 31 {
... ...
openbr/plugins/cluster/randomcentroids.cpp
... ... @@ -29,9 +29,9 @@ namespace br
29 29 * \ingroup transforms
30 30 * \brief Chooses k random points to be centroids.
31 31 * \author Austin Blanton \cite imaus10
32   - * \property int kTrain The number of random centroids to make at train time. Default is 256.
33   - * \property int kSearch The number of nearest neighbors to search for at runtime. Default is 1.
34   - * \see http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html
  32 + * \br_property int kTrain The number of random centroids to make at train time. Default is 256.
  33 + * \br_property int kSearch The number of nearest neighbors to search for at runtime. Default is 1.
  34 + * \br_link http://docs.opencv.org/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html
35 35 */
36 36 class RandomCentroidsTransform : public Transform
37 37 {
... ...
openbr/plugins/core/align.cpp
... ... @@ -36,9 +36,10 @@ namespace br
36 36 * \brief Improved procrustes alignment of points, to include a post processing scaling of points
37 37 * to faciliate subsequent texture mapping.
38 38 * \author Brendan Klare \cite bklare
39   - * \param width Width of output coordinate space (before padding)
40   - * \param padding Amount of padding around the coordinate space
41   - * \param useFirst whether or not to use the first instance as the reference object
  39 + *
  40 + * \br_property float width Width of output coordinate space (before padding)
  41 + * \br_property float padding Amount of padding around the coordinate space
  42 + * \br_property bool useFirst Whether or not to use the first instance as the reference object
42 43 */
43 44 class ProcrustesAlignTransform : public Transform
44 45 {
... ...
openbr/plugins/core/cache.cpp
... ... @@ -21,7 +21,7 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup transforms
24   - * \brief Caches br::Transform::project() results.
  24 + * \brief Caches Transform::project() results.
25 25 * \author Josh Klontz \cite jklontz
26 26 */
27 27 class CacheTransform : public MetaTransform
... ...
openbr/plugins/core/contract.cpp
... ... @@ -22,9 +22,10 @@ namespace br
22 22 /*!
23 23 * \ingroup transforms
24 24 * \brief It's like the opposite of ExpandTransform, but not really
25   - * \author Charles Otto \cite caotto
26 25 *
27   - * Given a set of templatelists as input, concatenate them onto a single Template
  26 + * Given a TemplateList as input, concatenate them into a single Template
  27 + *
  28 + * \author Charles Otto \cite caotto
28 29 */
29 30 class ContractTransform : public UntrainableMetaTransform
30 31 {
... ...
openbr/plugins/core/crossvalidate.cpp
... ... @@ -29,11 +29,13 @@ static void _train(Transform *transform, TemplateList data) // think data has to
29 29  
30 30 /*!
31 31 * \ingroup transforms
32   - * \brief Cross validate a trainable transform.
  32 + * \brief Cross validate a trainable Transform.
  33 + *
  34 + * To use an extended Gallery, add an allPartitions="true" flag to the gallery sigset for those images that should be compared
  35 + * against for all testing partitions.
  36 + *
33 37 * \author Josh Klontz \cite jklontz
34 38 * \author Scott Klum \cite sklum
35   - * \note To use an extended gallery, add an allPartitions="true" flag to the gallery sigset for those images that should be compared
36   - * against for all testing partitions.
37 39 */
38 40 class CrossValidateTransform : public MetaTransform
39 41 {
... ...
openbr/plugins/core/discard.cpp
... ... @@ -21,8 +21,8 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup transforms
24   - * \brief Removes all template's matrices.
25   - * \see IdentityTransform FirstTransform RestTransform RemoveTransform
  24 + * \brief Removes all matrices from a Template.
  25 + * \br_related_plugin IdentityTransform FirstTransform RestTransform RemoveTransform
26 26 * \author Josh Klontz \cite jklontz
27 27 */
28 28 class DiscardTransform : public UntrainableMetaTransform
... ...
openbr/plugins/core/discardtemplates.cpp
... ... @@ -19,6 +19,10 @@
19 19 namespace br
20 20 {
21 21  
  22 +/*!
  23 + * \brief DOCUMENT ME
  24 + * \author Unknown \cite unknown
  25 + */
22 26 class DiscardTemplatesTransform : public UntrainableMetaTransform
23 27 {
24 28 Q_OBJECT
... ...
openbr/plugins/core/distributetemplate.cpp
... ... @@ -26,6 +26,10 @@ static void _projectList(const Transform *transform, const TemplateList *src, Te
26 26 transform->project(*src, *dst);
27 27 }
28 28  
  29 +/*!
  30 + * \brief DOCUMENT ME
  31 + * \author Unknown \cite unknown
  32 + */
29 33 class DistributeTemplateTransform : public MetaTransform
30 34 {
31 35 Q_OBJECT
... ...
openbr/plugins/core/event.cpp
... ... @@ -19,6 +19,10 @@
19 19 namespace br
20 20 {
21 21  
  22 +/*!
  23 + * \brief DOCUMENT ME
  24 + * \author Unknown \cite unknown
  25 + */
22 26 class EventTransform : public UntrainableMetaTransform
23 27 {
24 28 Q_OBJECT
... ...
openbr/plugins/core/expand.cpp
... ... @@ -48,12 +48,9 @@ static TemplateList Expanded(const TemplateList &amp;templates)
48 48  
49 49 /*!
50 50 * \ingroup transforms
51   - * \brief Performs an expansion step on input templatelists
  51 + * \brief Performs an expansion step on an input TemplateList. Each matrix in each input Template is expanded into its own Template.
52 52 * \author Josh Klontz \cite jklontz
53   - *
54   - * Each matrix in an input Template is expanded into its own template.
55   - *
56   - * \see PipeTransform
  53 + * \br_related_plugin PipeTransform
57 54 */
58 55 class ExpandTransform : public UntrainableMetaTransform
59 56 {
... ...
openbr/plugins/core/first.cpp
... ... @@ -21,8 +21,8 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup transforms
24   - * \brief Removes all but the first matrix from the template.
25   - * \see IdentityTransform DiscardTransform RestTransform RemoveTransform
  24 + * \brief Removes all but the first matrix from the Template.
  25 + * \br_related_plugin IdentityTransform DiscardTransform RestTransform RemoveTransform
26 26 * \author Josh Klontz \cite jklontz
27 27 */
28 28 class FirstTransform : public UntrainableMetaTransform
... ...
openbr/plugins/core/fork.cpp
... ... @@ -29,11 +29,11 @@ static void _train(Transform *transform, const QList&lt;TemplateList&gt; *data)
29 29 /*!
30 30 * \ingroup transforms
31 31 * \brief Transforms in parallel.
32   - * \author Josh Klontz \cite jklontz
33 32 *
34   - * The source br::Template is seperately given to each transform and the results are appended together.
  33 + * The source Template is seperately given to each transform and the results are appended together.
35 34 *
36   - * \see PipeTransform
  35 + * \author Josh Klontz \cite jklontz
  36 + * \br_related_plugin PipeTransform
37 37 */
38 38 class ForkTransform : public CompositeTransform
39 39 {
... ...
openbr/plugins/core/fte.cpp
... ... @@ -22,7 +22,7 @@ namespace br
22 22  
23 23 /*!
24 24 * \ingroup transforms
25   - * \brief Flags images that failed to enroll based on the specified transform.
  25 + * \brief Flags images that failed to enroll based on the specified Transform.
26 26 * \author Josh Klontz \cite jklontz
27 27 */
28 28 class FTETransform : public Transform
... ...
openbr/plugins/core/gallerycompare.cpp
... ... @@ -22,7 +22,7 @@ namespace br
22 22  
23 23 /*!
24 24 * \ingroup transforms
25   - * \brief Compare each template to a fixed gallery (with name = galleryName), using the specified distance.
  25 + * \brief Compare each Template to a fixed Gallery (with name = galleryName), using the specified distance.
26 26 * dst will contain a 1 by n vector of scores.
27 27 * \author Charles Otto \cite caotto
28 28 */
... ...
openbr/plugins/core/identity.cpp
... ... @@ -21,8 +21,8 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup transforms
24   - * \brief A no-op transform.
25   - * \see DiscardTransform FirstTransform RestTransform RemoveTransform
  24 + * \brief A no-op Transform.
  25 + * \br_related_plugin DiscardTransform FirstTransform RestTransform RemoveTransform
26 26 * \author Josh Klontz \cite jklontz
27 27 */
28 28 class IdentityTransform : public UntrainableMetaTransform
... ...
openbr/plugins/core/independent.cpp
... ... @@ -25,9 +25,11 @@ namespace br
25 25  
26 26 /*!
27 27 * \ingroup transforms
28   - * \brief Clones the transform so that it can be applied independently.
  28 + * \brief Clones the Transform so that it can be applied independently.
  29 + *
  30 + * Independent Transforms expect single-matrix Templates.
  31 + *
29 32 * \author Josh Klontz \cite jklontz
30   - * \em Independent transforms expect single-matrix templates.
31 33 */
32 34 class IndependentTransform : public MetaTransform
33 35 {
... ...
openbr/plugins/core/jni.cpp
... ... @@ -56,7 +56,6 @@ BR_REGISTER(Initializer, JNIInitializer)
56 56 * \brief Execute Java code from OpenBR using the JNI
57 57 * \author Jordan Cheney \cite jcheney
58 58 */
59   -
60 59 class JNITransform : public UntrainableTransform
61 60 {
62 61 Q_OBJECT
... ...
openbr/plugins/core/likely.cpp
... ... @@ -7,7 +7,7 @@ namespace br
7 7 * \ingroup transforms
8 8 * \brief Generic interface to Likely JIT compiler
9 9 *
10   - * www.liblikely.org
  10 + * \br_link www.liblikely.org
11 11 * \author Josh Klontz \cite jklontz
12 12 */
13 13 class LikelyTransform : public UntrainableTransform
... ...
openbr/plugins/core/loadstore.cpp
... ... @@ -22,7 +22,7 @@ namespace br
22 22  
23 23 /*!
24 24 * \ingroup transforms
25   - * \brief Caches transform training.
  25 + * \brief Caches Transform training.
26 26 * \author Josh Klontz \cite jklontz
27 27 */
28 28 class LoadStoreTransform : public MetaTransform
... ...
openbr/plugins/core/pipe.cpp
... ... @@ -24,12 +24,11 @@ namespace br
24 24 /*!
25 25 * \ingroup Transforms
26 26 * \brief Transforms in series.
27   - * \author Josh Klontz \cite jklontz
28 27 *
29   - * The source br::Template is given to the first transform and the resulting br::Template is passed to the next transform, etc.
  28 + * The source Template is given to the first transform and the resulting Template is passed to the next transform, etc.
30 29 *
31   - * \see ExpandTransform
32   - * \see ForkTransform
  30 + * \author Josh Klontz \cite jklontz
  31 + * \br_related_plugin ExpandTransform ForkTransform
33 32 */
34 33 class PipeTransform : public CompositeTransform
35 34 {
... ...
openbr/plugins/core/progresscounter.cpp
... ... @@ -22,6 +22,11 @@
22 22 namespace br
23 23 {
24 24  
  25 +/*!
  26 + * \ingroup transforms
  27 + * \brief DOCUMENT ME
  28 + * \author Unknown \cite unknown
  29 + */
25 30 class ProgressCounterTransform : public TimeVaryingTransform
26 31 {
27 32 Q_OBJECT
... ...
openbr/plugins/core/remove.cpp
... ... @@ -21,11 +21,10 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup transforms
24   - * \brief Removes the matrix from the template at the specified index.
  24 + * \brief Removes the matrix from the Template at the specified index.
25 25 * \author Josh Klontz \cite jklontz
26   - * \see IdentityTransform DiscardTransform FirstTransform RestTransform
  26 + * \br_related_plugin IdentityTransform DiscardTransform FirstTransform RestTransform
27 27 */
28   -//! [example_transform]
29 28 class RemoveTransform : public UntrainableMetaTransform
30 29 {
31 30 Q_OBJECT
... ... @@ -40,7 +39,6 @@ class RemoveTransform : public UntrainableMetaTransform
40 39 };
41 40  
42 41 BR_REGISTER(Transform, RemoveTransform)
43   -//! [example_transform]
44 42  
45 43 } // namespace br
46 44  
... ...
openbr/plugins/core/rest.cpp
... ... @@ -21,8 +21,8 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup transforms
24   - * \brief Removes the first matrix from the template.
25   - * \see IdentityTransform DiscardTransform FirstTransform RemoveTransform
  24 + * \brief Removes the first matrix from the Template.
  25 + * \br_related_plugin IdentityTransform DiscardTransform FirstTransform RemoveTransform
26 26 * \author Josh Klontz \cite jklontz
27 27 */
28 28 class RestTransform : public UntrainableMetaTransform
... ...
openbr/plugins/core/schrodinger.cpp
... ... @@ -21,8 +21,8 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup transforms
24   - * \brief Generates two templates, one of which is passed through a transform and the other
25   - * is not. No cats were harmed in the making of this transform.
  24 + * \brief Generates two Templates, one of which is passed through a Transform and the other
  25 + * is not. No cats were harmed in the making of this Transform.
26 26 * \author Scott Klum \cite sklum
27 27 */
28 28 class SchrodingerTransform : public MetaTransform
... ...
openbr/plugins/core/singleton.cpp
... ... @@ -21,7 +21,7 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup transforms
24   - * \brief A globally shared transform.
  24 + * \brief A globally shared Transform.
25 25 * \author Josh Klontz \cite jklontz
26 26 */
27 27 class SingletonTransform : public MetaTransform
... ...
openbr/plugins/distance/bayesianquantization.cpp
... ... @@ -26,7 +26,7 @@ namespace br
26 26  
27 27 /*!
28 28 * \ingroup distances
29   - * \brief Bayesian quantization distance
  29 + * \brief Bayesian quantization Distance
30 30 * \author Josh Klontz \cite jklontz
31 31 */
32 32 class BayesianQuantizationDistance : public Distance
... ...
openbr/plugins/distance/crossvalidate.cpp
... ... @@ -21,7 +21,7 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup distances
24   - * \brief Cross validate a distance metric.
  24 + * \brief Cross validate a Distance metric.
25 25 * \author Josh Klontz \cite jklontz
26 26 */
27 27 class CrossValidateDistance : public UntrainableDistance
... ...
openbr/plugins/distance/dist.cpp
... ... @@ -24,7 +24,7 @@ namespace br
24 24  
25 25 /*!
26 26 * \ingroup distances
27   - * \brief Standard distance metrics
  27 + * \brief Standard Distance metrics
28 28 * \author Josh Klontz \cite jklontz
29 29 */
30 30 class DistDistance : public UntrainableDistance
... ...
openbr/plugins/distance/fuse.cpp
... ... @@ -23,9 +23,9 @@ namespace br
23 23  
24 24 /*!
25 25 * \ingroup distances
26   - * \brief Fuses similarity scores across multiple matrices of compared templates
  26 + * \brief Fuses similarity scores across multiple matrices of compared Templates
27 27 * \author Scott Klum \cite sklum
28   - * \note Operation: Mean, sum, min, max are supported.
  28 + * \br_property enum Operation Possible values are: [Mean, sum, min, max].
29 29 */
30 30 class FuseDistance : public Distance
31 31 {
... ...
openbr/plugins/distance/identical.cpp
... ... @@ -23,7 +23,7 @@ namespace br
23 23  
24 24 /*!
25 25 * \ingroup distances
26   - * \brief Returns \c true if the templates are identical, \c false otherwise.
  26 + * \brief Returns true if the Templates are identical, false otherwise.
27 27 * \author Josh Klontz \cite jklontz
28 28 */
29 29 class IdenticalDistance : public UntrainableDistance
... ...
openbr/plugins/distance/keypointmatcher.cpp
... ... @@ -26,6 +26,7 @@ namespace br
26 26 /*!
27 27 * \ingroup transforms
28 28 * \brief Wraps OpenCV Key Point Matcher
  29 + * \br_link http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html
29 30 * \author Josh Klontz \cite jklontz
30 31 */
31 32 class KeyPointMatcherDistance : public UntrainableDistance
... ...
openbr/plugins/distance/matchprobability.cpp
... ... @@ -110,7 +110,7 @@ QDataStream &amp;operator&gt;&gt;(QDataStream &amp;stream, MP &amp;nmp)
110 110  
111 111 /*!
112 112 * \ingroup distances
113   - * \brief Match Probability \cite klare12
  113 + * \brief Match Probability
114 114 * \author Josh Klontz \cite jklontz
115 115 */
116 116 class MatchProbabilityDistance : public Distance
... ...
openbr/plugins/distance/online.cpp
... ... @@ -21,7 +21,7 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup distances
24   - * \brief Online distance metric to attenuate match scores across multiple frames
  24 + * \brief Online Distance metric to attenuate match scores across multiple frames
25 25 * \author Brendan klare \cite bklare
26 26 */
27 27 class OnlineDistance : public UntrainableDistance
... ...
openbr/plugins/distance/pipe.cpp
... ... @@ -24,11 +24,13 @@ namespace br
24 24 /*!
25 25 * \ingroup distances
26 26 * \brief Distances in series.
27   - * \author Josh Klontz \cite jklontz
28 27 *
29   - * The templates are compared using each br::Distance in order.
  28 + * The Templates are compared using each Distance in order.
30 29 * If the result of the comparison with any given distance is -FLOAT_MAX then this result is returned early.
31   - * Otherwise the returned result is the value of comparing the templates using the last br::Distance.
  30 + * Otherwise the returned result is the value of comparing the Templates using the last Distance.
  31 + *
  32 + * \author Josh Klontz \cite jklontz
  33 + *
32 34 */
33 35 class PipeDistance : public Distance
34 36 {
... ...
openbr/plugins/distance/reject.cpp
... ... @@ -21,7 +21,7 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup distances
24   - * \brief Sets distance to -FLOAT_MAX if a target template has/doesn't have a key.
  24 + * \brief Sets Distance to -FLOAT_MAX if a target Template has/doesn't have a key.
25 25 * \author Scott Klum \cite sklum
26 26 */
27 27 class RejectDistance : public UntrainableDistance
... ...
openbr/plugins/distance/sum.cpp
... ... @@ -23,7 +23,7 @@ namespace br
23 23  
24 24 /*!
25 25 * \ingroup distances
26   - * \brief Sum match scores across multiple distances
  26 + * \brief Sum match scores across multiple Distances
27 27 * \author Scott Klum \cite sklum
28 28 */
29 29 class SumDistance : public UntrainableDistance
... ...
openbr/plugins/distance/svm.cpp
... ... @@ -11,8 +11,8 @@ namespace br
11 11  
12 12 /*!
13 13 * \ingroup Distances
14   - * \brief SVM Regression on template absolute differences.
15   - * \author Josh Klontz
  14 + * \brief SVM Regression on Template absolute differences.
  15 + * \author Josh Klontz \cite jklontz
16 16 */
17 17 class SVMDistance : public Distance
18 18 {
... ...
openbr/plugins/distance/unit.cpp
... ... @@ -21,7 +21,7 @@ namespace br
21 21  
22 22 /*!
23 23 * \ingroup distances
24   - * \brief Linear normalizes of a distance so the mean impostor score is 0 and the mean genuine score is 1.
  24 + * \brief Linear normalizes of a Distance so the mean impostor score is 0 and the mean genuine score is 1.
25 25 * \author Josh Klontz \cite jklontz
26 26 */
27 27 class UnitDistance : public Distance
... ...
openbr/plugins/distance/zscore.cpp
... ... @@ -20,6 +20,10 @@
20 20 namespace br
21 21 {
22 22  
  23 +/*!
  24 + * \brief DOCUMENT ME
  25 + * \author Unknown \cite unknown
  26 + */
23 27 class ZScoreDistance : public Distance
24 28 {
25 29 Q_OBJECT
... ...
openbr/plugins/format/binary.cpp
... ... @@ -26,7 +26,7 @@ namespace br
26 26 * \ingroup formats
27 27 * \brief A simple binary matrix format.
28 28 * \author Josh Klontz \cite jklontz
29   - * First 4 bytes indicate the number of rows.
  29 + * \br_format First 4 bytes indicate the number of rows.
30 30 * Second 4 bytes indicate the number of columns.
31 31 * The rest of the bytes are 32-bit floating data elements in row-major order.
32 32 */
... ...