Commit b0acb13e243de04c956e6b83626681e18c46c944
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 | +### -<key> <value> {: #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
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
docs/docs/api_docs/cpp_api/filegallery/statics.md
0 โ 100644
docs/docs/api_docs/cpp_api/gallery/gallery.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'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'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'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 <tt>.mat</tt> 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><FILE> | |
| 337 | +<FILE> | |
| 338 | +... | |
| 339 | +<FILE> | |
| 340 | +</code></pre>An optional label may be specified using a space ' ' separator: <pre><code><FILE> <LABEL> | |
| 341 | +<FILE> <LABEL> | |
| 342 | +... | |
| 343 | +<FILE> <LABEL> | |
| 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'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. "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'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'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'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'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'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'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'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'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<QPointF> 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<QPointF> | List of unnamed points | |
| 61 | -Rects | QList<Rect> | 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]<[Transform](transform.md)> 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]<[Transform](transform.md)>) 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]<[Transform](transform.md)>) 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>>([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>>([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<<([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>>([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 | ||
| 86 | + continue | |
| 87 | + | |
| 82 | 88 | if link_file not in headers: |
| 83 | 89 | print 'BAD FILE IN ' + f + ':', link_file |
| 84 | 90 | ... | ... |
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('<', '<') | |
| 198 | + if '>' in clean_line: | |
| 199 | + clean_line = clean_line.replace('>', '>') | |
| 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
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<cv::Mat> |
| 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<cv::Mat> |
| 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<Template> |
| 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<Template> |
| 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<Template> |
| 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<Template> |
| 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<Template> |
| 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<Template> |
| 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<Template> |
| 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<_Abstraction> |
| 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 &m, QDataStream &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
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
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
openbr/plugins/core/expand.cpp
| ... | ... | @@ -48,12 +48,9 @@ static TemplateList Expanded(const TemplateList &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<TemplateList> *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
openbr/plugins/core/likely.cpp
openbr/plugins/core/loadstore.cpp
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
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
openbr/plugins/distance/bayesianquantization.cpp
openbr/plugins/distance/crossvalidate.cpp
openbr/plugins/distance/dist.cpp
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 &operator>>(QDataStream &stream, MP &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
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 | */ | ... | ... |