From 3858f2291d64652a82fea930ba5c598045633843 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Tue, 24 Jun 2014 19:18:51 +0400 Subject: [PATCH] removed contrib, legacy and softcsscade modules; removed latentsvm and datamatrix detector from objdetect. removed haartraining and sft apps. some of the stuff will be moved to opencv_contrib module. in order to make this PR pass buildbot, please, comment off opencv_legacy, opencv_contrib and opencv_softcascade test runs. --- apps/CMakeLists.txt | 2 - apps/haartraining/CMakeLists.txt | 89 - apps/haartraining/_cvcommon.h | 92 - apps/haartraining/_cvhaartraining.h | 414 - apps/haartraining/createsamples.cpp | 245 - apps/haartraining/cvboost.cpp | 3789 ------ apps/haartraining/cvclassifier.h | 729 -- apps/haartraining/cvcommon.cpp | 125 - apps/haartraining/cvhaarclassifier.cpp | 835 -- apps/haartraining/cvhaartraining.cpp | 3060 ----- apps/haartraining/cvhaartraining.h | 192 - apps/haartraining/cvsamples.cpp | 953 -- apps/haartraining/haartraining.cpp | 284 - apps/haartraining/performance.cpp | 377 - apps/sft/CMakeLists.txt | 33 - apps/sft/config.cpp | 162 - apps/sft/dataset.cpp | 77 - apps/sft/include/sft/common.hpp | 74 - apps/sft/include/sft/config.hpp | 138 - apps/sft/include/sft/dataset.hpp | 67 - apps/sft/sft.cpp | 168 - apps/traincascade/CMakeLists.txt | 4 +- include/opencv/cv.h | 2 - include/opencv2/opencv.hpp | 1 - modules/contrib/CMakeLists.txt | 1 - modules/contrib/doc/contrib.rst | 12 - modules/contrib/doc/facerec/colormaps.rst | 107 - modules/contrib/doc/facerec/etc/at.txt | 400 - modules/contrib/doc/facerec/facerec_api.rst | 377 - modules/contrib/doc/facerec/facerec_changelog.rst | 86 - modules/contrib/doc/facerec/facerec_tutorial.rst | 628 - .../facerec/img/at_database_small_sample_size.png | Bin 33673 -> 0 bytes .../facerec/img/colormaps/colorscale_autumn.jpg | Bin 1352 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_bone.jpg | Bin 1325 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_cool.jpg | Bin 1325 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_hot.jpg | Bin 1403 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_hsv.jpg | Bin 1690 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_jet.jpg | Bin 1579 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_mkpj1.jpg | Bin 1569 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_mkpj2.jpg | Bin 1517 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_ocean.jpg | Bin 1430 -> 0 bytes .../doc/facerec/img/colormaps/colorscale_pink.jpg | Bin 1390 -> 0 bytes .../facerec/img/colormaps/colorscale_rainbow.jpg | Bin 1524 -> 0 bytes .../facerec/img/colormaps/colorscale_spring.jpg | Bin 1254 -> 0 bytes .../facerec/img/colormaps/colorscale_summer.jpg | Bin 1345 -> 0 bytes .../facerec/img/colormaps/colorscale_winter.jpg | Bin 1238 -> 0 bytes .../img/eigenface_reconstruction_opencv.png | Bin 175184 -> 0 bytes .../contrib/doc/facerec/img/eigenfaces_opencv.png | Bin 110206 -> 0 bytes .../img/fisherface_reconstruction_opencv.png | Bin 113741 -> 0 bytes .../contrib/doc/facerec/img/fisherfaces_opencv.png | Bin 287827 -> 0 bytes modules/contrib/doc/facerec/img/lbp/lbp.png | Bin 15698 -> 0 bytes modules/contrib/doc/facerec/img/lbp/lbp_yale.jpg | Bin 85132 -> 0 bytes modules/contrib/doc/facerec/img/lbp/patterns.png | Bin 18178 -> 0 bytes .../img/tutorial/facerec_video/facerec_video.png | Bin 296717 -> 0 bytes .../gender_classification/arnie_10_10_200_200.jpg | Bin 5517 -> 0 bytes .../gender_classification/arnie_20_20_200_200.jpg | Bin 6325 -> 0 bytes .../gender_classification/arnie_20_20_70_70.jpg | Bin 1813 -> 0 bytes .../gender_classification/arnie_30_30_200_200.jpg | Bin 7317 -> 0 bytes .../tutorial/gender_classification/clooney_set.png | Bin 93647 -> 0 bytes .../gender_classification/fisherface_0.png | Bin 36841 -> 0 bytes .../fisherface_reconstruction_0.png | Bin 10518 -> 0 bytes .../img/tutorial/gender_classification/mean.png | Bin 10188 -> 0 bytes modules/contrib/doc/facerec/index.rst | 32 - modules/contrib/doc/facerec/src/CMakeLists.txt | 25 - modules/contrib/doc/facerec/src/create_csv.py | 43 - modules/contrib/doc/facerec/src/crop_face.py | 112 - modules/contrib/doc/facerec/src/facerec_demo.cpp | 169 - .../contrib/doc/facerec/src/facerec_eigenfaces.cpp | 193 - .../doc/facerec/src/facerec_fisherfaces.cpp | 191 - modules/contrib/doc/facerec/src/facerec_lbph.cpp | 155 - .../contrib/doc/facerec/src/facerec_save_load.cpp | 200 - modules/contrib/doc/facerec/src/facerec_video.cpp | 152 - .../tutorial/facerec_gender_classification.rst | 233 - .../doc/facerec/tutorial/facerec_save_load.rst | 46 - .../facerec/tutorial/facerec_video_recognition.rst | 207 - modules/contrib/doc/openfabmap.rst | 232 - modules/contrib/doc/stereo.rst | 115 - modules/contrib/include/opencv2/contrib.hpp | 638 - modules/contrib/include/opencv2/contrib/compat.hpp | 384 - .../contrib/include/opencv2/contrib/contrib.hpp | 48 - .../opencv2/contrib/detection_based_tracker.hpp | 173 - .../include/opencv2/contrib/hybridtracker.hpp | 219 - .../contrib/include/opencv2/contrib/openfabmap.hpp | 401 - modules/contrib/src/adaptiveskindetector.cpp | 288 - modules/contrib/src/ba.cpp | 1128 -- modules/contrib/src/bowmsctrainer.cpp | 138 - modules/contrib/src/chamfermatching.cpp | 1411 --- modules/contrib/src/chowliutree.cpp | 289 - modules/contrib/src/colormap.cpp | 530 - modules/contrib/src/colortracker.cpp | 134 - modules/contrib/src/contrib_init.cpp | 43 - modules/contrib/src/detection_based_tracker.cpp | 877 -- modules/contrib/src/facerec.cpp | 901 -- modules/contrib/src/featuretracker.cpp | 229 - modules/contrib/src/fuzzymeanshifttracker.cpp | 721 -- modules/contrib/src/gencolors.cpp | 139 - modules/contrib/src/hybridtracker.cpp | 235 - modules/contrib/src/inputoutput.cpp | 204 - modules/contrib/src/lda.cpp | 1108 -- modules/contrib/src/logpolar_bsm.cpp | 651 -- modules/contrib/src/octree.cpp | 344 - modules/contrib/src/openfabmap.cpp | 778 -- modules/contrib/src/polyfit.cpp | 83 - modules/contrib/src/precomp.hpp | 64 - modules/contrib/src/rgbdodometry.cpp | 635 - modules/contrib/src/selfsimilarity.cpp | 259 - modules/contrib/src/spinimages.cpp | 1212 -- modules/contrib/src/stereovar.cpp | 411 - modules/contrib/test/test_main.cpp | 3 - modules/contrib/test/test_precomp.hpp | 16 - modules/legacy/CMakeLists.txt | 1 - .../common_interfaces_of_descriptor_extractors.rst | 34 - ...n_interfaces_of_generic_descriptor_matchers.rst | 363 - modules/legacy/doc/expectation_maximization.rst | 193 - .../doc/feature_detection_and_description.rst | 434 - modules/legacy/doc/histograms.rst | 89 - modules/legacy/doc/legacy.rst | 16 - modules/legacy/doc/motion_analysis.rst | 80 - modules/legacy/doc/pics/quadedge.png | Bin 4679 -> 0 bytes modules/legacy/doc/pics/subdiv.png | Bin 2812 -> 0 bytes modules/legacy/doc/planar_subdivisions.rst | 314 - modules/legacy/include/opencv2/legacy.hpp | 3506 ------ .../legacy/include/opencv2/legacy/blobtrack.hpp | 948 -- modules/legacy/include/opencv2/legacy/compat.hpp | 735 -- modules/legacy/include/opencv2/legacy/legacy.hpp | 48 - modules/legacy/include/opencv2/legacy/streams.hpp | 92 - modules/legacy/src/3dtracker.cpp | 582 - modules/legacy/src/_facedetection.h | 412 - modules/legacy/src/_featuretree.h | 63 - modules/legacy/src/_kdtree.hpp | 464 - modules/legacy/src/_matrix.h | 405 - modules/legacy/src/_vectrack.h | 163 - modules/legacy/src/_vm.h | 295 - modules/legacy/src/auxutils.cpp | 44 - modules/legacy/src/bgfg_acmmm2003.cpp | 741 -- modules/legacy/src/bgfg_codebook.cpp | 361 - modules/legacy/src/bgfg_common.cpp | 137 - modules/legacy/src/bgfg_estimation.cpp | 211 - modules/legacy/src/bgfg_gaussmix.cpp | 1328 --- modules/legacy/src/blobtrack.cpp | 639 - modules/legacy/src/blobtrackanalysis.cpp | 127 - modules/legacy/src/blobtrackanalysishist.cpp | 1517 --- modules/legacy/src/blobtrackanalysisior.cpp | 173 - modules/legacy/src/blobtrackanalysistrackdist.cpp | 580 - modules/legacy/src/blobtrackgen1.cpp | 183 - modules/legacy/src/blobtrackgenyml.cpp | 217 - modules/legacy/src/blobtrackingauto.cpp | 481 - modules/legacy/src/blobtrackingcc.cpp | 553 - modules/legacy/src/blobtrackingccwithcr.cpp | 491 - modules/legacy/src/blobtrackinglist.cpp | 548 - modules/legacy/src/blobtrackingmsfg.cpp | 1181 -- modules/legacy/src/blobtrackingmsfgs.cpp | 456 - modules/legacy/src/blobtrackpostprockalman.cpp | 327 - modules/legacy/src/blobtrackpostproclinear.cpp | 128 - modules/legacy/src/blobtrackpostproclist.cpp | 133 - modules/legacy/src/calcimagehomography.cpp | 113 - modules/legacy/src/calibfilter.cpp | 915 -- modules/legacy/src/calonder.cpp | 998 -- modules/legacy/src/camshift.cpp | 286 - modules/legacy/src/clique.cpp | 708 -- modules/legacy/src/compat.cpp | 685 -- modules/legacy/src/condens.cpp | 264 - modules/legacy/src/contourtree.cpp | 970 -- modules/legacy/src/correspond.cpp | 398 - modules/legacy/src/corrimages.cpp | 1146 -- modules/legacy/src/createhandmask.cpp | 138 - modules/legacy/src/decomppoly.cpp | 628 - modules/legacy/src/dominants.cpp | 402 - modules/legacy/src/dpstereo.cpp | 553 - modules/legacy/src/eigenobjects.cpp | 1810 --- modules/legacy/src/em.cpp | 268 - modules/legacy/src/enmin.cpp | 1381 --- modules/legacy/src/enteringblobdetection.cpp | 1062 -- modules/legacy/src/enteringblobdetectionreal.cpp | 163 - modules/legacy/src/epilines.cpp | 3700 ------ modules/legacy/src/extendededges.cpp | 265 - modules/legacy/src/face.cpp | 354 - modules/legacy/src/face.h | 135 - modules/legacy/src/facedetection.cpp | 501 - modules/legacy/src/facedetection.h | 100 - modules/legacy/src/facetemplate.cpp | 86 - modules/legacy/src/facetemplate.h | 201 - modules/legacy/src/features2d.cpp | 124 - modules/legacy/src/featuretree.cpp | 64 - modules/legacy/src/findface.cpp | 67 - modules/legacy/src/findhandregion.cpp | 633 - modules/legacy/src/hmm.cpp | 1697 --- modules/legacy/src/hmm1d.cpp | 1150 -- modules/legacy/src/hmmobs.cpp | 634 - modules/legacy/src/image.cpp | 332 - modules/legacy/src/kdtree.cpp | 238 - modules/legacy/src/lcm.cpp | 720 -- modules/legacy/src/lee.cpp | 4715 -------- modules/legacy/src/levmar.cpp | 317 - modules/legacy/src/levmarprojbandle.cpp | 1779 --- modules/legacy/src/levmartrif.cpp | 498 - modules/legacy/src/lines.cpp | 479 - modules/legacy/src/lmeds.cpp | 1695 --- modules/legacy/src/lsh.cpp | 462 - modules/legacy/src/morphcontours.cpp | 856 -- modules/legacy/src/morphing.cpp | 391 - modules/legacy/src/oneway.cpp | 2309 ---- modules/legacy/src/optflowbm.cpp | 302 - modules/legacy/src/optflowhs.cpp | 524 - modules/legacy/src/optflowlk.cpp | 599 - modules/legacy/src/pgh.cpp | 357 - modules/legacy/src/planardetect.cpp | 1582 --- modules/legacy/src/precomp.hpp | 71 - modules/legacy/src/prewarp.cpp | 163 - modules/legacy/src/pyrsegmentation.cpp | 1880 --- modules/legacy/src/scanlines.cpp | 2016 ---- modules/legacy/src/segment.cpp | 585 - modules/legacy/src/snakes.cpp | 428 - modules/legacy/src/spilltree.cpp | 498 - modules/legacy/src/stereogc.cpp | 948 -- modules/legacy/src/subdiv2.cpp | 879 -- modules/legacy/src/testseq.cpp | 1369 --- modules/legacy/src/texture.cpp | 647 -- modules/legacy/src/trifocal.cpp | 2784 ----- modules/legacy/src/vecfacetracking.cpp | 973 -- modules/legacy/src/video.cpp | 82 - modules/legacy/test/test_bruteforcematcher.cpp | 115 - modules/legacy/test/test_em.cpp | 450 - modules/legacy/test/test_main.cpp | 3 - modules/legacy/test/test_nearestneighbors.cpp | 264 - modules/legacy/test/test_optflow.cpp | 355 - modules/legacy/test/test_precomp.hpp | 20 - modules/legacy/test/test_pyrsegmentation.cpp | 204 - modules/legacy/test/test_stereomatching.cpp | 722 -- modules/legacy/test/test_subdivisions.cpp | 340 - modules/objdetect/include/opencv2/objdetect.hpp | 49 - .../include/opencv2/objdetect/objdetect_c.h | 129 - modules/objdetect/src/_latentsvm.h | 398 - modules/objdetect/src/_lsvm_distancetransform.h | 138 - modules/objdetect/src/_lsvm_error.h | 20 - modules/objdetect/src/_lsvm_fft.h | 79 - modules/objdetect/src/_lsvm_matching.h | 440 - modules/objdetect/src/_lsvm_resizeimg.h | 10 - modules/objdetect/src/_lsvm_routine.h | 37 - modules/objdetect/src/_lsvm_tbbversion.h | 51 - modules/objdetect/src/_lsvm_types.h | 83 - modules/objdetect/src/_lsvmparser.h | 66 - modules/objdetect/src/datamatrix.cpp | 567 - modules/objdetect/src/distancetransform.cpp | 383 - modules/objdetect/src/featurepyramid.cpp | 515 - modules/objdetect/src/fft.cpp | 246 - modules/objdetect/src/latentsvm.cpp | 644 - modules/objdetect/src/latentsvmdetector.cpp | 271 - modules/objdetect/src/lsvmparser.cpp | 817 -- modules/objdetect/src/lsvmtbbversion.cpp | 122 - modules/objdetect/src/matching.cpp | 1800 --- modules/objdetect/src/resizeimg.cpp | 242 - modules/objdetect/src/routine.cpp | 117 - modules/objdetect/test/test_latentsvmdetector.cpp | 307 - modules/python/CMakeLists.txt | 5 +- modules/python/src2/cv2.cpp | 3 - modules/python/src2/hdr_parser.py | 1 - modules/softcascade/CMakeLists.txt | 3 - modules/softcascade/doc/softcascade.rst | 12 - modules/softcascade/doc/softcascade_cuda.rst | 62 - modules/softcascade/doc/softcascade_detector.rst | 147 - modules/softcascade/doc/softcascade_training.rst | 143 - .../softcascade/include/opencv2/softcascade.hpp | 300 - modules/softcascade/misc/detections2negatives.py | 81 - modules/softcascade/misc/roc_caltech.py | 17 - modules/softcascade/misc/roc_test.py | 103 - modules/softcascade/misc/scale_caltech.py | 142 - modules/softcascade/misc/scale_inria.py | 139 - modules/softcascade/misc/sft.py | 281 - modules/softcascade/perf/perf_cuda_softcascade.cpp | 236 - modules/softcascade/perf/perf_main.cpp | 53 - modules/softcascade/perf/perf_precomp.hpp | 62 - modules/softcascade/perf/perf_softcascade.cpp | 47 - modules/softcascade/src/cuda/channels.cu | 507 - modules/softcascade/src/cuda/icf-sc.cu | 566 - modules/softcascade/src/cuda_invoker.hpp | 156 - modules/softcascade/src/detector.cpp | 596 - modules/softcascade/src/detector_cuda.cpp | 603 - .../softcascade/src/integral_channel_builder.cpp | 266 - modules/softcascade/src/octave.cpp | 458 - modules/softcascade/src/precomp.hpp | 96 - modules/softcascade/src/softcascade_init.cpp | 66 - modules/softcascade/test/test_channel_features.cpp | 62 - modules/softcascade/test/test_cuda_softcascade.cpp | 316 - modules/softcascade/test/test_main.cpp | 45 - modules/softcascade/test/test_precomp.hpp | 61 - modules/softcascade/test/test_softcascade.cpp | 141 - modules/softcascade/test/test_training.cpp | 160 - modules/softcascade/test/utility.cpp | 109 - modules/softcascade/test/utility.hpp | 75 - samples/CMakeLists.txt | 2 - samples/c/CMakeLists.txt | 59 - samples/c/JCB.png | Bin 372 -> 0 bytes samples/c/adaptiveskindetector.cpp | 415 - samples/c/baboon.jpg | Bin 179920 -> 0 bytes samples/c/bgfg_codebook.cpp | 241 - samples/c/blobtrack_sample.cpp | 755 -- samples/c/build_all.sh | 16 - samples/c/calonder_params.xml | 10 - samples/c/cat.jpg | Bin 65555 -> 0 bytes samples/c/cat.xml | Bin 210308 -> 0 bytes samples/c/contours.c | 167 - samples/c/convert_cascade.c | 50 - samples/c/cvsample.dsp | 92 - samples/c/cvsample.vs2005.vcproj | 413 - samples/c/delaunay.c | 242 - samples/c/example_cmake/CMakeLists.txt | 15 - samples/c/example_cmake/README.txt | 27 - samples/c/example_cmake/minarea.c | 116 - samples/c/facedetect.cmd | 2 - samples/c/fback_c.c | 75 - samples/c/find_obj.cpp | 322 - samples/c/find_obj_calonder.cpp | 166 - samples/c/find_obj_ferns.cpp | 157 - samples/c/fruits.jpg | Bin 82429 -> 0 bytes samples/c/latentsvmdetect.cpp | 88 - samples/c/lena.jpg | Bin 91814 -> 0 bytes samples/c/morphology.c | 130 - samples/c/mser_sample.cpp | 87 - samples/c/one_way_sample.cpp | 119 - samples/c/one_way_train_0000.jpg | Bin 28611 -> 0 bytes samples/c/one_way_train_0001.jpg | Bin 29553 -> 0 bytes samples/c/one_way_train_images.txt | 2 - samples/c/pyramid_segmentation.c | 98 - samples/c/stuff.jpg | Bin 29365 -> 0 bytes samples/cpp/CMakeLists.txt | 6 +- samples/cpp/Qt_sample/CMakeLists.txt | 12 - samples/cpp/Qt_sample/cube4.avi | Bin 1825984 -> 0 bytes samples/cpp/Qt_sample/qt_opengl.cpp | 269 - samples/{c => cpp}/agaricus-lepiota.data | 0 samples/{c => cpp}/airplane.jpg | Bin samples/{c => cpp}/baboon200.jpg | Bin samples/{c => cpp}/baboon200_rotated.jpg | Bin samples/cpp/bagofwords_classification.cpp | 20 - samples/{c => cpp}/box.png | Bin samples/{c => cpp}/box_in_scene.png | Bin samples/cpp/brief_match_test.cpp | 131 - samples/cpp/build3dmodel.cpp | 778 -- samples/cpp/calibration_artificial.cpp | 334 - samples/cpp/chamfer.cpp | 75 - samples/cpp/dbt_face_detection.cpp | 104 - samples/cpp/detection_based_tracker_sample.cpp | 193 - samples/cpp/detector_descriptor_evaluation.cpp | 983 -- .../cpp/detector_descriptor_matcher_evaluation.cpp | 346 - samples/cpp/em.cpp | 37 +- samples/cpp/fabmap/stlucia_test_small0000.jpeg | Bin 30139 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0001.jpeg | Bin 32412 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0002.jpeg | Bin 39202 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0003.jpeg | Bin 31817 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0004.jpeg | Bin 29448 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0005.jpeg | Bin 30569 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0006.jpeg | Bin 34486 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0007.jpeg | Bin 36663 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0008.jpeg | Bin 32048 -> 0 bytes samples/cpp/fabmap/stlucia_test_small0009.jpeg | Bin 30311 -> 0 bytes samples/cpp/fabmap/train_data_small.yml | 9197 --------------- samples/cpp/fabmap/vocab_small.yml | 11632 ------------------- samples/cpp/fabmap_sample.cpp | 216 - samples/{c => cpp}/facedetect.cpp | 0 samples/cpp/facerec_at_t.txt | 400 - samples/cpp/facerec_demo.cpp | 163 - samples/cpp/fern_params.xml | 10 - samples/cpp/freak_demo.cpp | 128 - samples/cpp/gencolors.cpp | 36 - samples/cpp/generic_descriptor_match.cpp | 94 - samples/cpp/hybridtrackingsample.cpp | 182 - samples/cpp/image.cpp | 2 - samples/{c => cpp}/intrinsics.yml | 0 samples/cpp/latentsvm_multidetect.cpp | 165 - samples/cpp/logpolar_bsm.cpp | 84 - samples/cpp/matcher_simple.cpp | 59 - samples/cpp/matching_to_many_images.cpp | 262 - samples/cpp/matching_to_many_images/query.png | Bin 121403 -> 0 bytes samples/cpp/matching_to_many_images/train/1.png | Bin 118730 -> 0 bytes samples/cpp/matching_to_many_images/train/2.png | Bin 114372 -> 0 bytes samples/cpp/matching_to_many_images/train/3.png | Bin 120917 -> 0 bytes .../matching_to_many_images/train/trainImages.txt | 3 - samples/cpp/meanshift_segmentation.cpp | 77 - samples/{c/motempl.c => cpp/motempl.cpp} | 0 samples/{c => cpp}/mushroom.cpp | 0 samples/cpp/peopledetect.cpp | 180 - .../polar_transforms.cpp} | 0 samples/{c => cpp}/puzzle.png | Bin samples/cpp/rgbdodometry.cpp | 178 - samples/cpp/rgbdodometry/depth_00000.png | Bin 104673 -> 0 bytes samples/cpp/rgbdodometry/depth_00002.png | Bin 101864 -> 0 bytes samples/cpp/rgbdodometry/image_00000.png | Bin 466110 -> 0 bytes samples/cpp/rgbdodometry/image_00002.png | Bin 443258 -> 0 bytes samples/{c => cpp}/scene_l.bmp | Bin samples/{c => cpp}/scene_r.bmp | Bin samples/{c => cpp}/smiledetect.cpp | 0 samples/cpp/stereo_match.cpp | 20 +- samples/{c => cpp}/tree.avi | Bin samples/{c => cpp}/tree_engine.cpp | 0 samples/cpp/video_dmtx.cpp | 101 - samples/{c => cpp}/waveform.data | 0 samples/python2/facerec_demo.py | 166 - samples/python2/video_dmtx.py | 72 - 398 files changed, 12 insertions(+), 150885 deletions(-) delete mode 100644 apps/haartraining/CMakeLists.txt delete mode 100644 apps/haartraining/_cvcommon.h delete mode 100644 apps/haartraining/_cvhaartraining.h delete mode 100644 apps/haartraining/createsamples.cpp delete mode 100644 apps/haartraining/cvboost.cpp delete mode 100644 apps/haartraining/cvclassifier.h delete mode 100644 apps/haartraining/cvcommon.cpp delete mode 100644 apps/haartraining/cvhaarclassifier.cpp delete mode 100644 apps/haartraining/cvhaartraining.cpp delete mode 100644 apps/haartraining/cvhaartraining.h delete mode 100644 apps/haartraining/cvsamples.cpp delete mode 100644 apps/haartraining/haartraining.cpp delete mode 100644 apps/haartraining/performance.cpp delete mode 100644 apps/sft/CMakeLists.txt delete mode 100644 apps/sft/config.cpp delete mode 100644 apps/sft/dataset.cpp delete mode 100644 apps/sft/include/sft/common.hpp delete mode 100644 apps/sft/include/sft/config.hpp delete mode 100644 apps/sft/include/sft/dataset.hpp delete mode 100644 apps/sft/sft.cpp delete mode 100644 modules/contrib/CMakeLists.txt delete mode 100644 modules/contrib/doc/contrib.rst delete mode 100644 modules/contrib/doc/facerec/colormaps.rst delete mode 100644 modules/contrib/doc/facerec/etc/at.txt delete mode 100644 modules/contrib/doc/facerec/facerec_api.rst delete mode 100644 modules/contrib/doc/facerec/facerec_changelog.rst delete mode 100644 modules/contrib/doc/facerec/facerec_tutorial.rst delete mode 100644 modules/contrib/doc/facerec/img/at_database_small_sample_size.png delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_autumn.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_bone.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_cool.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_hot.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_hsv.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_jet.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_mkpj1.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_mkpj2.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_ocean.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_pink.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_rainbow.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_spring.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_summer.jpg delete mode 100644 modules/contrib/doc/facerec/img/colormaps/colorscale_winter.jpg delete mode 100644 modules/contrib/doc/facerec/img/eigenface_reconstruction_opencv.png delete mode 100644 modules/contrib/doc/facerec/img/eigenfaces_opencv.png delete mode 100644 modules/contrib/doc/facerec/img/fisherface_reconstruction_opencv.png delete mode 100644 modules/contrib/doc/facerec/img/fisherfaces_opencv.png delete mode 100644 modules/contrib/doc/facerec/img/lbp/lbp.png delete mode 100644 modules/contrib/doc/facerec/img/lbp/lbp_yale.jpg delete mode 100644 modules/contrib/doc/facerec/img/lbp/patterns.png delete mode 100644 modules/contrib/doc/facerec/img/tutorial/facerec_video/facerec_video.png delete mode 100644 modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_10_10_200_200.jpg delete mode 100644 modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_20_20_200_200.jpg delete mode 100644 modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_20_20_70_70.jpg delete mode 100644 modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_30_30_200_200.jpg delete mode 100644 modules/contrib/doc/facerec/img/tutorial/gender_classification/clooney_set.png delete mode 100644 modules/contrib/doc/facerec/img/tutorial/gender_classification/fisherface_0.png delete mode 100644 modules/contrib/doc/facerec/img/tutorial/gender_classification/fisherface_reconstruction_0.png delete mode 100644 modules/contrib/doc/facerec/img/tutorial/gender_classification/mean.png delete mode 100644 modules/contrib/doc/facerec/index.rst delete mode 100644 modules/contrib/doc/facerec/src/CMakeLists.txt delete mode 100755 modules/contrib/doc/facerec/src/create_csv.py delete mode 100755 modules/contrib/doc/facerec/src/crop_face.py delete mode 100644 modules/contrib/doc/facerec/src/facerec_demo.cpp delete mode 100644 modules/contrib/doc/facerec/src/facerec_eigenfaces.cpp delete mode 100644 modules/contrib/doc/facerec/src/facerec_fisherfaces.cpp delete mode 100644 modules/contrib/doc/facerec/src/facerec_lbph.cpp delete mode 100644 modules/contrib/doc/facerec/src/facerec_save_load.cpp delete mode 100644 modules/contrib/doc/facerec/src/facerec_video.cpp delete mode 100644 modules/contrib/doc/facerec/tutorial/facerec_gender_classification.rst delete mode 100644 modules/contrib/doc/facerec/tutorial/facerec_save_load.rst delete mode 100644 modules/contrib/doc/facerec/tutorial/facerec_video_recognition.rst delete mode 100644 modules/contrib/doc/openfabmap.rst delete mode 100644 modules/contrib/doc/stereo.rst delete mode 100644 modules/contrib/include/opencv2/contrib.hpp delete mode 100644 modules/contrib/include/opencv2/contrib/compat.hpp delete mode 100644 modules/contrib/include/opencv2/contrib/contrib.hpp delete mode 100644 modules/contrib/include/opencv2/contrib/detection_based_tracker.hpp delete mode 100644 modules/contrib/include/opencv2/contrib/hybridtracker.hpp delete mode 100644 modules/contrib/include/opencv2/contrib/openfabmap.hpp delete mode 100644 modules/contrib/src/adaptiveskindetector.cpp delete mode 100644 modules/contrib/src/ba.cpp delete mode 100644 modules/contrib/src/bowmsctrainer.cpp delete mode 100644 modules/contrib/src/chamfermatching.cpp delete mode 100644 modules/contrib/src/chowliutree.cpp delete mode 100644 modules/contrib/src/colormap.cpp delete mode 100644 modules/contrib/src/colortracker.cpp delete mode 100644 modules/contrib/src/contrib_init.cpp delete mode 100644 modules/contrib/src/detection_based_tracker.cpp delete mode 100644 modules/contrib/src/facerec.cpp delete mode 100644 modules/contrib/src/featuretracker.cpp delete mode 100644 modules/contrib/src/fuzzymeanshifttracker.cpp delete mode 100644 modules/contrib/src/gencolors.cpp delete mode 100644 modules/contrib/src/hybridtracker.cpp delete mode 100644 modules/contrib/src/inputoutput.cpp delete mode 100644 modules/contrib/src/lda.cpp delete mode 100644 modules/contrib/src/logpolar_bsm.cpp delete mode 100644 modules/contrib/src/octree.cpp delete mode 100644 modules/contrib/src/openfabmap.cpp delete mode 100644 modules/contrib/src/polyfit.cpp delete mode 100644 modules/contrib/src/precomp.hpp delete mode 100644 modules/contrib/src/rgbdodometry.cpp delete mode 100644 modules/contrib/src/selfsimilarity.cpp delete mode 100644 modules/contrib/src/spinimages.cpp delete mode 100644 modules/contrib/src/stereovar.cpp delete mode 100644 modules/contrib/test/test_main.cpp delete mode 100644 modules/contrib/test/test_precomp.hpp delete mode 100644 modules/legacy/CMakeLists.txt delete mode 100644 modules/legacy/doc/common_interfaces_of_descriptor_extractors.rst delete mode 100644 modules/legacy/doc/common_interfaces_of_generic_descriptor_matchers.rst delete mode 100644 modules/legacy/doc/expectation_maximization.rst delete mode 100644 modules/legacy/doc/feature_detection_and_description.rst delete mode 100644 modules/legacy/doc/histograms.rst delete mode 100644 modules/legacy/doc/legacy.rst delete mode 100644 modules/legacy/doc/motion_analysis.rst delete mode 100644 modules/legacy/doc/pics/quadedge.png delete mode 100644 modules/legacy/doc/pics/subdiv.png delete mode 100644 modules/legacy/doc/planar_subdivisions.rst delete mode 100644 modules/legacy/include/opencv2/legacy.hpp delete mode 100644 modules/legacy/include/opencv2/legacy/blobtrack.hpp delete mode 100644 modules/legacy/include/opencv2/legacy/compat.hpp delete mode 100644 modules/legacy/include/opencv2/legacy/legacy.hpp delete mode 100644 modules/legacy/include/opencv2/legacy/streams.hpp delete mode 100644 modules/legacy/src/3dtracker.cpp delete mode 100644 modules/legacy/src/_facedetection.h delete mode 100644 modules/legacy/src/_featuretree.h delete mode 100644 modules/legacy/src/_kdtree.hpp delete mode 100644 modules/legacy/src/_matrix.h delete mode 100644 modules/legacy/src/_vectrack.h delete mode 100644 modules/legacy/src/_vm.h delete mode 100644 modules/legacy/src/auxutils.cpp delete mode 100644 modules/legacy/src/bgfg_acmmm2003.cpp delete mode 100644 modules/legacy/src/bgfg_codebook.cpp delete mode 100644 modules/legacy/src/bgfg_common.cpp delete mode 100644 modules/legacy/src/bgfg_estimation.cpp delete mode 100644 modules/legacy/src/bgfg_gaussmix.cpp delete mode 100644 modules/legacy/src/blobtrack.cpp delete mode 100644 modules/legacy/src/blobtrackanalysis.cpp delete mode 100644 modules/legacy/src/blobtrackanalysishist.cpp delete mode 100644 modules/legacy/src/blobtrackanalysisior.cpp delete mode 100644 modules/legacy/src/blobtrackanalysistrackdist.cpp delete mode 100644 modules/legacy/src/blobtrackgen1.cpp delete mode 100644 modules/legacy/src/blobtrackgenyml.cpp delete mode 100644 modules/legacy/src/blobtrackingauto.cpp delete mode 100644 modules/legacy/src/blobtrackingcc.cpp delete mode 100644 modules/legacy/src/blobtrackingccwithcr.cpp delete mode 100644 modules/legacy/src/blobtrackinglist.cpp delete mode 100644 modules/legacy/src/blobtrackingmsfg.cpp delete mode 100644 modules/legacy/src/blobtrackingmsfgs.cpp delete mode 100644 modules/legacy/src/blobtrackpostprockalman.cpp delete mode 100644 modules/legacy/src/blobtrackpostproclinear.cpp delete mode 100644 modules/legacy/src/blobtrackpostproclist.cpp delete mode 100644 modules/legacy/src/calcimagehomography.cpp delete mode 100644 modules/legacy/src/calibfilter.cpp delete mode 100644 modules/legacy/src/calonder.cpp delete mode 100644 modules/legacy/src/camshift.cpp delete mode 100644 modules/legacy/src/clique.cpp delete mode 100644 modules/legacy/src/compat.cpp delete mode 100644 modules/legacy/src/condens.cpp delete mode 100644 modules/legacy/src/contourtree.cpp delete mode 100644 modules/legacy/src/correspond.cpp delete mode 100644 modules/legacy/src/corrimages.cpp delete mode 100644 modules/legacy/src/createhandmask.cpp delete mode 100644 modules/legacy/src/decomppoly.cpp delete mode 100644 modules/legacy/src/dominants.cpp delete mode 100644 modules/legacy/src/dpstereo.cpp delete mode 100644 modules/legacy/src/eigenobjects.cpp delete mode 100644 modules/legacy/src/em.cpp delete mode 100644 modules/legacy/src/enmin.cpp delete mode 100644 modules/legacy/src/enteringblobdetection.cpp delete mode 100644 modules/legacy/src/enteringblobdetectionreal.cpp delete mode 100644 modules/legacy/src/epilines.cpp delete mode 100644 modules/legacy/src/extendededges.cpp delete mode 100644 modules/legacy/src/face.cpp delete mode 100644 modules/legacy/src/face.h delete mode 100644 modules/legacy/src/facedetection.cpp delete mode 100644 modules/legacy/src/facedetection.h delete mode 100644 modules/legacy/src/facetemplate.cpp delete mode 100644 modules/legacy/src/facetemplate.h delete mode 100644 modules/legacy/src/features2d.cpp delete mode 100644 modules/legacy/src/featuretree.cpp delete mode 100644 modules/legacy/src/findface.cpp delete mode 100644 modules/legacy/src/findhandregion.cpp delete mode 100644 modules/legacy/src/hmm.cpp delete mode 100644 modules/legacy/src/hmm1d.cpp delete mode 100644 modules/legacy/src/hmmobs.cpp delete mode 100644 modules/legacy/src/image.cpp delete mode 100644 modules/legacy/src/kdtree.cpp delete mode 100644 modules/legacy/src/lcm.cpp delete mode 100644 modules/legacy/src/lee.cpp delete mode 100644 modules/legacy/src/levmar.cpp delete mode 100644 modules/legacy/src/levmarprojbandle.cpp delete mode 100644 modules/legacy/src/levmartrif.cpp delete mode 100644 modules/legacy/src/lines.cpp delete mode 100644 modules/legacy/src/lmeds.cpp delete mode 100644 modules/legacy/src/lsh.cpp delete mode 100644 modules/legacy/src/morphcontours.cpp delete mode 100644 modules/legacy/src/morphing.cpp delete mode 100644 modules/legacy/src/oneway.cpp delete mode 100644 modules/legacy/src/optflowbm.cpp delete mode 100644 modules/legacy/src/optflowhs.cpp delete mode 100644 modules/legacy/src/optflowlk.cpp delete mode 100644 modules/legacy/src/pgh.cpp delete mode 100644 modules/legacy/src/planardetect.cpp delete mode 100644 modules/legacy/src/precomp.hpp delete mode 100644 modules/legacy/src/prewarp.cpp delete mode 100644 modules/legacy/src/pyrsegmentation.cpp delete mode 100644 modules/legacy/src/scanlines.cpp delete mode 100644 modules/legacy/src/segment.cpp delete mode 100644 modules/legacy/src/snakes.cpp delete mode 100644 modules/legacy/src/spilltree.cpp delete mode 100644 modules/legacy/src/stereogc.cpp delete mode 100644 modules/legacy/src/subdiv2.cpp delete mode 100644 modules/legacy/src/testseq.cpp delete mode 100644 modules/legacy/src/texture.cpp delete mode 100644 modules/legacy/src/trifocal.cpp delete mode 100644 modules/legacy/src/vecfacetracking.cpp delete mode 100644 modules/legacy/src/video.cpp delete mode 100644 modules/legacy/test/test_bruteforcematcher.cpp delete mode 100644 modules/legacy/test/test_em.cpp delete mode 100644 modules/legacy/test/test_main.cpp delete mode 100644 modules/legacy/test/test_nearestneighbors.cpp delete mode 100644 modules/legacy/test/test_optflow.cpp delete mode 100644 modules/legacy/test/test_precomp.hpp delete mode 100644 modules/legacy/test/test_pyrsegmentation.cpp delete mode 100644 modules/legacy/test/test_stereomatching.cpp delete mode 100644 modules/legacy/test/test_subdivisions.cpp delete mode 100644 modules/objdetect/src/_latentsvm.h delete mode 100644 modules/objdetect/src/_lsvm_distancetransform.h delete mode 100644 modules/objdetect/src/_lsvm_error.h delete mode 100644 modules/objdetect/src/_lsvm_fft.h delete mode 100644 modules/objdetect/src/_lsvm_matching.h delete mode 100644 modules/objdetect/src/_lsvm_resizeimg.h delete mode 100644 modules/objdetect/src/_lsvm_routine.h delete mode 100644 modules/objdetect/src/_lsvm_tbbversion.h delete mode 100644 modules/objdetect/src/_lsvm_types.h delete mode 100644 modules/objdetect/src/_lsvmparser.h delete mode 100644 modules/objdetect/src/datamatrix.cpp delete mode 100644 modules/objdetect/src/distancetransform.cpp delete mode 100644 modules/objdetect/src/featurepyramid.cpp delete mode 100644 modules/objdetect/src/fft.cpp delete mode 100644 modules/objdetect/src/latentsvm.cpp delete mode 100644 modules/objdetect/src/latentsvmdetector.cpp delete mode 100644 modules/objdetect/src/lsvmparser.cpp delete mode 100644 modules/objdetect/src/lsvmtbbversion.cpp delete mode 100644 modules/objdetect/src/matching.cpp delete mode 100644 modules/objdetect/src/resizeimg.cpp delete mode 100644 modules/objdetect/src/routine.cpp delete mode 100644 modules/objdetect/test/test_latentsvmdetector.cpp delete mode 100644 modules/softcascade/CMakeLists.txt delete mode 100644 modules/softcascade/doc/softcascade.rst delete mode 100644 modules/softcascade/doc/softcascade_cuda.rst delete mode 100644 modules/softcascade/doc/softcascade_detector.rst delete mode 100644 modules/softcascade/doc/softcascade_training.rst delete mode 100644 modules/softcascade/include/opencv2/softcascade.hpp delete mode 100755 modules/softcascade/misc/detections2negatives.py delete mode 100755 modules/softcascade/misc/roc_caltech.py delete mode 100755 modules/softcascade/misc/roc_test.py delete mode 100755 modules/softcascade/misc/scale_caltech.py delete mode 100755 modules/softcascade/misc/scale_inria.py delete mode 100644 modules/softcascade/misc/sft.py delete mode 100644 modules/softcascade/perf/perf_cuda_softcascade.cpp delete mode 100644 modules/softcascade/perf/perf_main.cpp delete mode 100644 modules/softcascade/perf/perf_precomp.hpp delete mode 100644 modules/softcascade/perf/perf_softcascade.cpp delete mode 100644 modules/softcascade/src/cuda/channels.cu delete mode 100644 modules/softcascade/src/cuda/icf-sc.cu delete mode 100644 modules/softcascade/src/cuda_invoker.hpp delete mode 100644 modules/softcascade/src/detector.cpp delete mode 100644 modules/softcascade/src/detector_cuda.cpp delete mode 100644 modules/softcascade/src/integral_channel_builder.cpp delete mode 100644 modules/softcascade/src/octave.cpp delete mode 100644 modules/softcascade/src/precomp.hpp delete mode 100644 modules/softcascade/src/softcascade_init.cpp delete mode 100644 modules/softcascade/test/test_channel_features.cpp delete mode 100644 modules/softcascade/test/test_cuda_softcascade.cpp delete mode 100644 modules/softcascade/test/test_main.cpp delete mode 100644 modules/softcascade/test/test_precomp.hpp delete mode 100644 modules/softcascade/test/test_softcascade.cpp delete mode 100644 modules/softcascade/test/test_training.cpp delete mode 100644 modules/softcascade/test/utility.cpp delete mode 100644 modules/softcascade/test/utility.hpp delete mode 100644 samples/c/CMakeLists.txt delete mode 100644 samples/c/JCB.png delete mode 100644 samples/c/adaptiveskindetector.cpp delete mode 100644 samples/c/baboon.jpg delete mode 100644 samples/c/bgfg_codebook.cpp delete mode 100644 samples/c/blobtrack_sample.cpp delete mode 100755 samples/c/build_all.sh delete mode 100644 samples/c/calonder_params.xml delete mode 100644 samples/c/cat.jpg delete mode 100644 samples/c/cat.xml delete mode 100644 samples/c/contours.c delete mode 100644 samples/c/convert_cascade.c delete mode 100644 samples/c/cvsample.dsp delete mode 100644 samples/c/cvsample.vs2005.vcproj delete mode 100644 samples/c/delaunay.c delete mode 100644 samples/c/example_cmake/CMakeLists.txt delete mode 100644 samples/c/example_cmake/README.txt delete mode 100644 samples/c/example_cmake/minarea.c delete mode 100644 samples/c/facedetect.cmd delete mode 100644 samples/c/fback_c.c delete mode 100644 samples/c/find_obj.cpp delete mode 100644 samples/c/find_obj_calonder.cpp delete mode 100644 samples/c/find_obj_ferns.cpp delete mode 100644 samples/c/fruits.jpg delete mode 100644 samples/c/latentsvmdetect.cpp delete mode 100644 samples/c/lena.jpg delete mode 100644 samples/c/morphology.c delete mode 100644 samples/c/mser_sample.cpp delete mode 100644 samples/c/one_way_sample.cpp delete mode 100644 samples/c/one_way_train_0000.jpg delete mode 100644 samples/c/one_way_train_0001.jpg delete mode 100644 samples/c/one_way_train_images.txt delete mode 100644 samples/c/pyramid_segmentation.c delete mode 100644 samples/c/stuff.jpg delete mode 100644 samples/cpp/Qt_sample/CMakeLists.txt delete mode 100644 samples/cpp/Qt_sample/cube4.avi delete mode 100644 samples/cpp/Qt_sample/qt_opengl.cpp rename samples/{c => cpp}/agaricus-lepiota.data (100%) rename samples/{c => cpp}/airplane.jpg (100%) rename samples/{c => cpp}/baboon200.jpg (100%) rename samples/{c => cpp}/baboon200_rotated.jpg (100%) rename samples/{c => cpp}/box.png (100%) rename samples/{c => cpp}/box_in_scene.png (100%) delete mode 100644 samples/cpp/brief_match_test.cpp delete mode 100644 samples/cpp/build3dmodel.cpp delete mode 100644 samples/cpp/calibration_artificial.cpp delete mode 100644 samples/cpp/chamfer.cpp delete mode 100644 samples/cpp/dbt_face_detection.cpp delete mode 100644 samples/cpp/detection_based_tracker_sample.cpp delete mode 100644 samples/cpp/detector_descriptor_evaluation.cpp delete mode 100644 samples/cpp/detector_descriptor_matcher_evaluation.cpp delete mode 100755 samples/cpp/fabmap/stlucia_test_small0000.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0001.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0002.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0003.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0004.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0005.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0006.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0007.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0008.jpeg delete mode 100755 samples/cpp/fabmap/stlucia_test_small0009.jpeg delete mode 100644 samples/cpp/fabmap/train_data_small.yml delete mode 100644 samples/cpp/fabmap/vocab_small.yml delete mode 100644 samples/cpp/fabmap_sample.cpp rename samples/{c => cpp}/facedetect.cpp (100%) delete mode 100644 samples/cpp/facerec_at_t.txt delete mode 100644 samples/cpp/facerec_demo.cpp delete mode 100644 samples/cpp/fern_params.xml delete mode 100644 samples/cpp/freak_demo.cpp delete mode 100644 samples/cpp/gencolors.cpp delete mode 100644 samples/cpp/generic_descriptor_match.cpp delete mode 100644 samples/cpp/hybridtrackingsample.cpp rename samples/{c => cpp}/intrinsics.yml (100%) delete mode 100644 samples/cpp/latentsvm_multidetect.cpp delete mode 100644 samples/cpp/logpolar_bsm.cpp delete mode 100644 samples/cpp/matcher_simple.cpp delete mode 100644 samples/cpp/matching_to_many_images.cpp delete mode 100755 samples/cpp/matching_to_many_images/query.png delete mode 100755 samples/cpp/matching_to_many_images/train/1.png delete mode 100755 samples/cpp/matching_to_many_images/train/2.png delete mode 100755 samples/cpp/matching_to_many_images/train/3.png delete mode 100644 samples/cpp/matching_to_many_images/train/trainImages.txt delete mode 100644 samples/cpp/meanshift_segmentation.cpp rename samples/{c/motempl.c => cpp/motempl.cpp} (100%) rename samples/{c => cpp}/mushroom.cpp (100%) delete mode 100644 samples/cpp/peopledetect.cpp rename samples/{c/polar_transforms.c => cpp/polar_transforms.cpp} (100%) rename samples/{c => cpp}/puzzle.png (100%) delete mode 100644 samples/cpp/rgbdodometry.cpp delete mode 100644 samples/cpp/rgbdodometry/depth_00000.png delete mode 100644 samples/cpp/rgbdodometry/depth_00002.png delete mode 100644 samples/cpp/rgbdodometry/image_00000.png delete mode 100644 samples/cpp/rgbdodometry/image_00002.png rename samples/{c => cpp}/scene_l.bmp (100%) rename samples/{c => cpp}/scene_r.bmp (100%) rename samples/{c => cpp}/smiledetect.cpp (100%) rename samples/{c => cpp}/tree.avi (100%) rename samples/{c => cpp}/tree_engine.cpp (100%) delete mode 100644 samples/cpp/video_dmtx.cpp rename samples/{c => cpp}/waveform.data (100%) delete mode 100755 samples/python2/facerec_demo.py delete mode 100755 samples/python2/video_dmtx.py diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt index b1d7f42..1814efb 100644 --- a/apps/CMakeLists.txt +++ b/apps/CMakeLists.txt @@ -1,6 +1,4 @@ add_definitions(-D__OPENCV_BUILD=1) link_libraries(${OPENCV_LINKER_LIBS}) -add_subdirectory(haartraining) add_subdirectory(traincascade) -add_subdirectory(sft) diff --git a/apps/haartraining/CMakeLists.txt b/apps/haartraining/CMakeLists.txt deleted file mode 100644 index 63bbff6..0000000 --- a/apps/haartraining/CMakeLists.txt +++ /dev/null @@ -1,89 +0,0 @@ -SET(OPENCV_HAARTRAINING_DEPS opencv_core opencv_imgproc opencv_photo opencv_ml opencv_highgui opencv_objdetect opencv_calib3d opencv_video opencv_features2d opencv_flann opencv_legacy) -ocv_check_dependencies(${OPENCV_HAARTRAINING_DEPS}) - -if(NOT OCV_DEPENDENCIES_FOUND) - return() -endif() - -project(haartraining) - -ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}" "${OpenCV_SOURCE_DIR}/include/opencv") -ocv_include_modules(${OPENCV_HAARTRAINING_DEPS}) - -if(WIN32) - link_directories(${CMAKE_CURRENT_BINARY_DIR}) -endif() - -link_libraries(${OPENCV_HAARTRAINING_DEPS} opencv_haartraining_engine) - -# ----------------------------------------------------------- -# Library -# ----------------------------------------------------------- -set(cvhaartraining_lib_src - _cvcommon.h - cvclassifier.h - _cvhaartraining.h - cvhaartraining.h - cvboost.cpp - cvcommon.cpp - cvhaarclassifier.cpp - cvhaartraining.cpp - cvsamples.cpp - ) - -add_library(opencv_haartraining_engine STATIC ${cvhaartraining_lib_src}) -set_target_properties(opencv_haartraining_engine PROPERTIES - DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" - ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} - RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} - INSTALL_NAME_DIR lib - ) - -# ----------------------------------------------------------- -# haartraining -# ----------------------------------------------------------- - -add_executable(opencv_haartraining cvhaartraining.h haartraining.cpp) -set_target_properties(opencv_haartraining PROPERTIES - DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" - OUTPUT_NAME "opencv_haartraining") - -# ----------------------------------------------------------- -# createsamples -# ----------------------------------------------------------- - -add_executable(opencv_createsamples cvhaartraining.h createsamples.cpp) -set_target_properties(opencv_createsamples PROPERTIES - DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" - OUTPUT_NAME "opencv_createsamples") - -# ----------------------------------------------------------- -# performance -# ----------------------------------------------------------- -add_executable(opencv_performance performance.cpp) -set_target_properties(opencv_performance PROPERTIES - DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" - OUTPUT_NAME "opencv_performance") - -# ----------------------------------------------------------- -# Install part -# ----------------------------------------------------------- - -if(INSTALL_CREATE_DISTRIB) - if(BUILD_SHARED_LIBS) - install(TARGETS opencv_haartraining RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} CONFIGURATIONS Release COMPONENT dev) - install(TARGETS opencv_createsamples RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} CONFIGURATIONS Release COMPONENT dev) - install(TARGETS opencv_performance RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} CONFIGURATIONS Release COMPONENT dev) - endif() -else() - install(TARGETS opencv_haartraining RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} COMPONENT dev) - install(TARGETS opencv_createsamples RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} COMPONENT dev) - install(TARGETS opencv_performance RUNTIME DESTINATION ${OPENCV_BIN_INSTALL_PATH} COMPONENT dev) -endif() - -if(ENABLE_SOLUTION_FOLDERS) - set_target_properties(opencv_performance PROPERTIES FOLDER "applications") - set_target_properties(opencv_createsamples PROPERTIES FOLDER "applications") - set_target_properties(opencv_haartraining PROPERTIES FOLDER "applications") - set_target_properties(opencv_haartraining_engine PROPERTIES FOLDER "applications") -endif() diff --git a/apps/haartraining/_cvcommon.h b/apps/haartraining/_cvcommon.h deleted file mode 100644 index 92fee8e..0000000 --- a/apps/haartraining/_cvcommon.h +++ /dev/null @@ -1,92 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __CVCOMMON_H_ -#define __CVCOMMON_H_ - -#include "opencv2/core.hpp" - -#include "cxcore.h" -#include "cv.h" -#include "cxmisc.h" - -#define __BEGIN__ __CV_BEGIN__ -#define __END__ __CV_END__ -#define EXIT __CV_EXIT__ - -#ifndef PATH_MAX -#define PATH_MAX 512 -#endif /* PATH_MAX */ - -int icvMkDir( const char* filename ); - -/* returns index at specified position from index matrix of any type. - if matrix is NULL, then specified position is returned */ -CV_INLINE -int icvGetIdxAt( CvMat* idx, int pos ); - -CV_INLINE -int icvGetIdxAt( CvMat* idx, int pos ) -{ - if( idx == NULL ) - { - return pos; - } - else - { - CvScalar sc; - int type; - - type = CV_MAT_TYPE( idx->type ); - cvRawDataToScalar( idx->data.ptr + pos * - ( (idx->rows == 1) ? CV_ELEM_SIZE( type ) : idx->step ), type, &sc ); - - return (int) sc.val[0]; - } -} - -/* debug functions */ - -#define CV_DEBUG_SAVE( ptr ) icvSave( ptr, __FILE__, __LINE__ ); - -void icvSave( const CvArr* ptr, const char* filename, int line ); - -#endif /* __CVCOMMON_H_ */ diff --git a/apps/haartraining/_cvhaartraining.h b/apps/haartraining/_cvhaartraining.h deleted file mode 100644 index 459e6aa..0000000 --- a/apps/haartraining/_cvhaartraining.h +++ /dev/null @@ -1,414 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * _cvhaartraining.h - * - * training of cascade of boosted classifiers based on haar features - */ - -#ifndef __CVHAARTRAINING_H_ -#define __CVHAARTRAINING_H_ - -#include "_cvcommon.h" -#include "cvclassifier.h" -#include -#include - -/* parameters for tree cascade classifier training */ - -/* max number of clusters */ -#define CV_MAX_CLUSTERS 3 - -/* term criteria for K-Means */ -#define CV_TERM_CRITERIA() cvTermCriteria( CV_TERMCRIT_EPS, 1000, 1E-5 ) - -/* print statistic info */ -#define CV_VERBOSE 1 - -#define CV_STAGE_CART_FILE_NAME "AdaBoostCARTHaarClassifier.txt" - -#define CV_HAAR_FEATURE_MAX 3 -#define CV_HAAR_FEATURE_DESC_MAX 20 - -typedef int sum_type; -typedef double sqsum_type; -typedef short idx_type; - -#define CV_SUM_MAT_TYPE CV_32SC1 -#define CV_SQSUM_MAT_TYPE CV_64FC1 -#define CV_IDX_MAT_TYPE CV_16SC1 - -#define CV_STUMP_TRAIN_PORTION 100 - -#define CV_THRESHOLD_EPS (0.00001F) - -typedef struct CvTHaarFeature -{ - char desc[CV_HAAR_FEATURE_DESC_MAX]; - int tilted; - struct - { - CvRect r; - float weight; - } rect[CV_HAAR_FEATURE_MAX]; -} CvTHaarFeature; - -typedef struct CvFastHaarFeature -{ - int tilted; - struct - { - int p0, p1, p2, p3; - float weight; - } rect[CV_HAAR_FEATURE_MAX]; -} CvFastHaarFeature; - -typedef struct CvIntHaarFeatures -{ - CvSize winsize; - int count; - CvTHaarFeature* feature; - CvFastHaarFeature* fastfeature; -} CvIntHaarFeatures; - -CV_INLINE CvTHaarFeature cvHaarFeature( const char* desc, - int x0, int y0, int w0, int h0, float wt0, - int x1, int y1, int w1, int h1, float wt1, - int x2 CV_DEFAULT( 0 ), int y2 CV_DEFAULT( 0 ), - int w2 CV_DEFAULT( 0 ), int h2 CV_DEFAULT( 0 ), - float wt2 CV_DEFAULT( 0.0F ) ); - -CV_INLINE CvTHaarFeature cvHaarFeature( const char* desc, - int x0, int y0, int w0, int h0, float wt0, - int x1, int y1, int w1, int h1, float wt1, - int x2, int y2, int w2, int h2, float wt2 ) -{ - CvTHaarFeature hf; - - assert( CV_HAAR_FEATURE_MAX >= 3 ); - assert( strlen( desc ) < CV_HAAR_FEATURE_DESC_MAX ); - - strcpy( &(hf.desc[0]), desc ); - hf.tilted = ( hf.desc[0] == 't' ); - - hf.rect[0].r.x = x0; - hf.rect[0].r.y = y0; - hf.rect[0].r.width = w0; - hf.rect[0].r.height = h0; - hf.rect[0].weight = wt0; - - hf.rect[1].r.x = x1; - hf.rect[1].r.y = y1; - hf.rect[1].r.width = w1; - hf.rect[1].r.height = h1; - hf.rect[1].weight = wt1; - - hf.rect[2].r.x = x2; - hf.rect[2].r.y = y2; - hf.rect[2].r.width = w2; - hf.rect[2].r.height = h2; - hf.rect[2].weight = wt2; - - return hf; -} - -/* Prepared for training samples */ -typedef struct CvHaarTrainingData -{ - CvSize winsize; /* training image size */ - int maxnum; /* maximum number of samples */ - CvMat sum; /* sum images (each row represents image) */ - CvMat tilted; /* tilted sum images (each row represents image) */ - CvMat normfactor; /* normalization factor */ - CvMat cls; /* classes. 1.0 - object, 0.0 - background */ - CvMat weights; /* weights */ - - CvMat* valcache; /* precalculated feature values (CV_32FC1) */ - CvMat* idxcache; /* presorted indices (CV_IDX_MAT_TYPE) */ -} CvHaarTrainigData; - - -/* Passed to callback functions */ -typedef struct CvUserdata -{ - CvHaarTrainingData* trainingData; - CvIntHaarFeatures* haarFeatures; -} CvUserdata; - -CV_INLINE -CvUserdata cvUserdata( CvHaarTrainingData* trainingData, - CvIntHaarFeatures* haarFeatures ); - -CV_INLINE -CvUserdata cvUserdata( CvHaarTrainingData* trainingData, - CvIntHaarFeatures* haarFeatures ) -{ - CvUserdata userdata; - - userdata.trainingData = trainingData; - userdata.haarFeatures = haarFeatures; - - return userdata; -} - - -#define CV_INT_HAAR_CLASSIFIER_FIELDS() \ - float (*eval)( CvIntHaarClassifier*, sum_type*, sum_type*, float ); \ - void (*save)( CvIntHaarClassifier*, FILE* file ); \ - void (*release)( CvIntHaarClassifier** ); - -/* internal weak classifier*/ -typedef struct CvIntHaarClassifier -{ - CV_INT_HAAR_CLASSIFIER_FIELDS() -} CvIntHaarClassifier; - -/* - * CART classifier - */ -typedef struct CvCARTHaarClassifier -{ - CV_INT_HAAR_CLASSIFIER_FIELDS() - - int count; - int* compidx; - CvTHaarFeature* feature; - CvFastHaarFeature* fastfeature; - float* threshold; - int* left; - int* right; - float* val; -} CvCARTHaarClassifier; - -/* internal stage classifier */ -typedef struct CvStageHaarClassifier -{ - CV_INT_HAAR_CLASSIFIER_FIELDS() - - int count; - float threshold; - CvIntHaarClassifier** classifier; -} CvStageHaarClassifier; - -/* internal cascade classifier */ -typedef struct CvCascadeHaarClassifier -{ - CV_INT_HAAR_CLASSIFIER_FIELDS() - - int count; - CvIntHaarClassifier** classifier; -} CvCascadeHaarClassifier; - - -/* internal tree cascade classifier node */ -typedef struct CvTreeCascadeNode -{ - CvStageHaarClassifier* stage; - - struct CvTreeCascadeNode* next; - struct CvTreeCascadeNode* child; - struct CvTreeCascadeNode* parent; - - struct CvTreeCascadeNode* next_same_level; - struct CvTreeCascadeNode* child_eval; - int idx; - int leaf; -} CvTreeCascadeNode; - -/* internal tree cascade classifier */ -typedef struct CvTreeCascadeClassifier -{ - CV_INT_HAAR_CLASSIFIER_FIELDS() - - CvTreeCascadeNode* root; /* root of the tree */ - CvTreeCascadeNode* root_eval; /* root node for the filtering */ - - int next_idx; -} CvTreeCascadeClassifier; - - -CV_INLINE float cvEvalFastHaarFeature( const CvFastHaarFeature* feature, - const sum_type* sum, const sum_type* tilted ) -{ - const sum_type* img = feature->tilted ? tilted : sum; - float ret = feature->rect[0].weight* - (img[feature->rect[0].p0] - img[feature->rect[0].p1] - - img[feature->rect[0].p2] + img[feature->rect[0].p3]) + - feature->rect[1].weight* - (img[feature->rect[1].p0] - img[feature->rect[1].p1] - - img[feature->rect[1].p2] + img[feature->rect[1].p3]); - - if( feature->rect[2].weight != 0.0f ) - ret += feature->rect[2].weight * - ( img[feature->rect[2].p0] - img[feature->rect[2].p1] - - img[feature->rect[2].p2] + img[feature->rect[2].p3] ); - return ret; -} - - -typedef struct CvSampleDistortionData -{ - IplImage* src; - IplImage* erode; - IplImage* dilate; - IplImage* mask; - IplImage* img; - IplImage* maskimg; - int dx; - int dy; - int bgcolor; -} CvSampleDistortionData; - -/* - * icvConvertToFastHaarFeature - * - * Convert to fast representation of haar features - * - * haarFeature - input array - * fastHaarFeature - output array - * size - size of arrays - * step - row step for the integral image - */ -void icvConvertToFastHaarFeature( CvTHaarFeature* haarFeature, - CvFastHaarFeature* fastHaarFeature, - int size, int step ); - - -void icvWriteVecHeader( FILE* file, int count, int width, int height ); -void icvWriteVecSample( FILE* file, CvArr* sample ); -void icvPlaceDistortedSample( CvArr* background, - int inverse, int maxintensitydev, - double maxxangle, double maxyangle, double maxzangle, - int inscribe, double maxshiftf, double maxscalef, - CvSampleDistortionData* data ); -void icvEndSampleDistortion( CvSampleDistortionData* data ); - -int icvStartSampleDistortion( const char* imgfilename, int bgcolor, int bgthreshold, - CvSampleDistortionData* data ); - -typedef int (*CvGetHaarTrainingDataCallback)( CvMat* img, void* userdata ); - -typedef struct CvVecFile -{ - FILE* input; - int count; - int vecsize; - int last; - short* vector; -} CvVecFile; - -int icvGetHaarTraininDataFromVecCallback( CvMat* img, void* userdata ); - -/* - * icvGetHaarTrainingDataFromVec - * - * Fill with samples from .vec file, passed -int icvGetHaarTrainingDataFromVec( CvHaarTrainingData* data, int first, int count, - CvIntHaarClassifier* cascade, - const char* filename, - int* consumed ); - */ - -CvIntHaarClassifier* icvCreateCARTHaarClassifier( int count ); - -void icvReleaseHaarClassifier( CvIntHaarClassifier** classifier ); - -void icvInitCARTHaarClassifier( CvCARTHaarClassifier* carthaar, CvCARTClassifier* cart, - CvIntHaarFeatures* intHaarFeatures ); - -float icvEvalCARTHaarClassifier( CvIntHaarClassifier* classifier, - sum_type* sum, sum_type* tilted, float normfactor ); - -CvIntHaarClassifier* icvCreateStageHaarClassifier( int count, float threshold ); - -void icvReleaseStageHaarClassifier( CvIntHaarClassifier** classifier ); - -float icvEvalStageHaarClassifier( CvIntHaarClassifier* classifier, - sum_type* sum, sum_type* tilted, float normfactor ); - -CvIntHaarClassifier* icvCreateCascadeHaarClassifier( int count ); - -void icvReleaseCascadeHaarClassifier( CvIntHaarClassifier** classifier ); - -float icvEvalCascadeHaarClassifier( CvIntHaarClassifier* classifier, - sum_type* sum, sum_type* tilted, float normfactor ); - -void icvSaveHaarFeature( CvTHaarFeature* feature, FILE* file ); - -void icvLoadHaarFeature( CvTHaarFeature* feature, FILE* file ); - -void icvSaveCARTHaarClassifier( CvIntHaarClassifier* classifier, FILE* file ); - -CvIntHaarClassifier* icvLoadCARTHaarClassifier( FILE* file, int step ); - -void icvSaveStageHaarClassifier( CvIntHaarClassifier* classifier, FILE* file ); - -CvIntHaarClassifier* icvLoadCARTStageHaarClassifier( const char* filename, int step ); - - -/* tree cascade classifier */ - -float icvEvalTreeCascadeClassifier( CvIntHaarClassifier* classifier, - sum_type* sum, sum_type* tilted, float normfactor ); - -void icvSetLeafNode( CvTreeCascadeClassifier* tree, CvTreeCascadeNode* leaf ); - -float icvEvalTreeCascadeClassifierFilter( CvIntHaarClassifier* classifier, sum_type* sum, - sum_type* tilted, float normfactor ); - -CvTreeCascadeNode* icvCreateTreeCascadeNode(); - -void icvReleaseTreeCascadeNodes( CvTreeCascadeNode** node ); - -void icvReleaseTreeCascadeClassifier( CvIntHaarClassifier** classifier ); - -/* Prints out current tree structure to */ -void icvPrintTreeCascade( CvTreeCascadeNode* root ); - -/* Loads tree cascade classifier */ -CvIntHaarClassifier* icvLoadTreeCascadeClassifier( const char* filename, int step, - int* splits ); - -/* Finds leaves belonging to maximal level and connects them via leaf->next_same_level */ -CvTreeCascadeNode* icvFindDeepestLeaves( CvTreeCascadeClassifier* tree ); - -#endif /* __CVHAARTRAINING_H_ */ diff --git a/apps/haartraining/createsamples.cpp b/apps/haartraining/createsamples.cpp deleted file mode 100644 index 2e86cca..0000000 --- a/apps/haartraining/createsamples.cpp +++ /dev/null @@ -1,245 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * createsamples.cpp - * - * Create test/training samples - */ - -#include -#include -#include -#include -#include - -using namespace std; - -#include "cvhaartraining.h" - -int main( int argc, char* argv[] ) -{ - int i = 0; - char* nullname = (char*)"(NULL)"; - char* vecname = NULL; /* .vec file name */ - char* infoname = NULL; /* file name with marked up image descriptions */ - char* imagename = NULL; /* single sample image */ - char* bgfilename = NULL; /* background */ - int num = 1000; - int bgcolor = 0; - int bgthreshold = 80; - int invert = 0; - int maxintensitydev = 40; - double maxxangle = 1.1; - double maxyangle = 1.1; - double maxzangle = 0.5; - int showsamples = 0; - /* the samples are adjusted to this scale in the sample preview window */ - double scale = 4.0; - int width = 24; - int height = 24; - - srand((unsigned int)time(0)); - - if( argc == 1 ) - { - printf( "Usage: %s\n [-info ]\n" - " [-img ]\n" - " [-vec ]\n" - " [-bg ]\n [-num ]\n" - " [-bgcolor ]\n" - " [-inv] [-randinv] [-bgthresh ]\n" - " [-maxidev ]\n" - " [-maxxangle ]\n" - " [-maxyangle ]\n" - " [-maxzangle ]\n" - " [-show []]\n" - " [-w ]\n [-h ]\n", - argv[0], num, bgcolor, bgthreshold, maxintensitydev, - maxxangle, maxyangle, maxzangle, scale, width, height ); - - return 0; - } - - for( i = 1; i < argc; ++i ) - { - if( !strcmp( argv[i], "-info" ) ) - { - infoname = argv[++i]; - } - else if( !strcmp( argv[i], "-img" ) ) - { - imagename = argv[++i]; - } - else if( !strcmp( argv[i], "-vec" ) ) - { - vecname = argv[++i]; - } - else if( !strcmp( argv[i], "-bg" ) ) - { - bgfilename = argv[++i]; - } - else if( !strcmp( argv[i], "-num" ) ) - { - num = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-bgcolor" ) ) - { - bgcolor = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-bgthresh" ) ) - { - bgthreshold = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-inv" ) ) - { - invert = 1; - } - else if( !strcmp( argv[i], "-randinv" ) ) - { - invert = CV_RANDOM_INVERT; - } - else if( !strcmp( argv[i], "-maxidev" ) ) - { - maxintensitydev = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-maxxangle" ) ) - { - maxxangle = atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-maxyangle" ) ) - { - maxyangle = atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-maxzangle" ) ) - { - maxzangle = atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-show" ) ) - { - showsamples = 1; - if( i+1 < argc && strlen( argv[i+1] ) > 0 && argv[i+1][0] != '-' ) - { - double d; - d = strtod( argv[i+1], 0 ); - if( d != -HUGE_VAL && d != HUGE_VAL && d > 0 ) scale = d; - ++i; - } - } - else if( !strcmp( argv[i], "-w" ) ) - { - width = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-h" ) ) - { - height = atoi( argv[++i] ); - } - } - - printf( "Info file name: %s\n", ((infoname == NULL) ? nullname : infoname ) ); - printf( "Img file name: %s\n", ((imagename == NULL) ? nullname : imagename ) ); - printf( "Vec file name: %s\n", ((vecname == NULL) ? nullname : vecname ) ); - printf( "BG file name: %s\n", ((bgfilename == NULL) ? nullname : bgfilename ) ); - printf( "Num: %d\n", num ); - printf( "BG color: %d\n", bgcolor ); - printf( "BG threshold: %d\n", bgthreshold ); - printf( "Invert: %s\n", (invert == CV_RANDOM_INVERT) ? "RANDOM" - : ( (invert) ? "TRUE" : "FALSE" ) ); - printf( "Max intensity deviation: %d\n", maxintensitydev ); - printf( "Max x angle: %g\n", maxxangle ); - printf( "Max y angle: %g\n", maxyangle ); - printf( "Max z angle: %g\n", maxzangle ); - printf( "Show samples: %s\n", (showsamples) ? "TRUE" : "FALSE" ); - if( showsamples ) - { - printf( "Scale: %g\n", scale ); - } - printf( "Width: %d\n", width ); - printf( "Height: %d\n", height ); - - /* determine action */ - if( imagename && vecname ) - { - printf( "Create training samples from single image applying distortions...\n" ); - - cvCreateTrainingSamples( vecname, imagename, bgcolor, bgthreshold, bgfilename, - num, invert, maxintensitydev, - maxxangle, maxyangle, maxzangle, - showsamples, width, height ); - - printf( "Done\n" ); - } - else if( imagename && bgfilename && infoname ) - { - printf( "Create test samples from single image applying distortions...\n" ); - - cvCreateTestSamples( infoname, imagename, bgcolor, bgthreshold, bgfilename, num, - invert, maxintensitydev, - maxxangle, maxyangle, maxzangle, showsamples, width, height ); - - printf( "Done\n" ); - } - else if( infoname && vecname ) - { - int total; - - printf( "Create training samples from images collection...\n" ); - - total = cvCreateTrainingSamplesFromInfo( infoname, vecname, num, showsamples, - width, height ); - - printf( "Done. Created %d samples\n", total ); - } - else if( vecname ) - { - printf( "View samples from vec file (press ESC to exit)...\n" ); - - cvShowVecSamples( vecname, width, height, scale ); - - printf( "Done\n" ); - } - else - { - printf( "Nothing to do\n" ); - } - - return 0; -} diff --git a/apps/haartraining/cvboost.cpp b/apps/haartraining/cvboost.cpp deleted file mode 100644 index 4b9f24f..0000000 --- a/apps/haartraining/cvboost.cpp +++ /dev/null @@ -1,3789 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "cvconfig.h" - -#ifdef HAVE_MALLOC_H - #include -#endif - -#ifdef HAVE_MEMORY_H - #include -#endif - -#ifdef _OPENMP - #include -#endif /* _OPENMP */ - -#include -#include -#include -#include -#include - -#include "_cvcommon.h" -#include "cvclassifier.h" - -#ifdef _OPENMP -#include "omp.h" -#endif - -#define CV_BOOST_IMPL - -typedef struct CvValArray -{ - uchar* data; - size_t step; -} CvValArray; - -template -class LessThanValArray -{ -public: - LessThanValArray( const T* _aux ) : aux(_aux) {} - bool operator()(Idx a, Idx b) const - { - return *( (float*) (aux->data + ((int) (a)) * aux->step ) ) < - *( (float*) (aux->data + ((int) (b)) * aux->step ) ); - } - const T* aux; -}; - -CV_BOOST_IMPL -void cvGetSortedIndices( CvMat* val, CvMat* idx, int sortcols ) -{ - int idxtype = 0; - size_t istep = 0; - size_t jstep = 0; - - int i = 0; - int j = 0; - - CvValArray va; - - CV_Assert( idx != NULL ); - CV_Assert( val != NULL ); - - idxtype = CV_MAT_TYPE( idx->type ); - CV_Assert( idxtype == CV_16SC1 || idxtype == CV_32SC1 || idxtype == CV_32FC1 ); - CV_Assert( CV_MAT_TYPE( val->type ) == CV_32FC1 ); - if( sortcols ) - { - CV_Assert( idx->rows == val->cols ); - CV_Assert( idx->cols == val->rows ); - istep = CV_ELEM_SIZE( val->type ); - jstep = val->step; - } - else - { - CV_Assert( idx->rows == val->rows ); - CV_Assert( idx->cols == val->cols ); - istep = val->step; - jstep = CV_ELEM_SIZE( val->type ); - } - - va.data = val->data.ptr; - va.step = jstep; - switch( idxtype ) - { - case CV_16SC1: - for( i = 0; i < idx->rows; i++ ) - { - for( j = 0; j < idx->cols; j++ ) - { - CV_MAT_ELEM( *idx, short, i, j ) = (short) j; - } - std::sort((short*) (idx->data.ptr + (size_t)i * idx->step), - (short*) (idx->data.ptr + (size_t)i * idx->step) + idx->cols, - LessThanValArray(&va)); - va.data += istep; - } - break; - - case CV_32SC1: - for( i = 0; i < idx->rows; i++ ) - { - for( j = 0; j < idx->cols; j++ ) - { - CV_MAT_ELEM( *idx, int, i, j ) = j; - } - std::sort((int*) (idx->data.ptr + (size_t)i * idx->step), - (int*) (idx->data.ptr + (size_t)i * idx->step) + idx->cols, - LessThanValArray(&va)); - va.data += istep; - } - break; - - case CV_32FC1: - for( i = 0; i < idx->rows; i++ ) - { - for( j = 0; j < idx->cols; j++ ) - { - CV_MAT_ELEM( *idx, float, i, j ) = (float) j; - } - std::sort((float*) (idx->data.ptr + (size_t)i * idx->step), - (float*) (idx->data.ptr + (size_t)i * idx->step) + idx->cols, - LessThanValArray(&va)); - va.data += istep; - } - break; - - default: - assert( 0 ); - break; - } -} - -CV_BOOST_IMPL -void cvReleaseStumpClassifier( CvClassifier** classifier ) -{ - cvFree( classifier ); - *classifier = 0; -} - -CV_BOOST_IMPL -float cvEvalStumpClassifier( CvClassifier* classifier, CvMat* sample ) -{ - assert( classifier != NULL ); - assert( sample != NULL ); - assert( CV_MAT_TYPE( sample->type ) == CV_32FC1 ); - - if( (CV_MAT_ELEM( (*sample), float, 0, - ((CvStumpClassifier*) classifier)->compidx )) < - ((CvStumpClassifier*) classifier)->threshold ) - return ((CvStumpClassifier*) classifier)->left; - return ((CvStumpClassifier*) classifier)->right; -} - -#define ICV_DEF_FIND_STUMP_THRESHOLD( suffix, type, error ) \ -static int icvFindStumpThreshold_##suffix( \ - uchar* data, size_t datastep, \ - uchar* wdata, size_t wstep, \ - uchar* ydata, size_t ystep, \ - uchar* idxdata, size_t idxstep, int num, \ - float* lerror, \ - float* rerror, \ - float* threshold, float* left, float* right, \ - float* sumw, float* sumwy, float* sumwyy ) \ -{ \ - int found = 0; \ - float wyl = 0.0F; \ - float wl = 0.0F; \ - float wyyl = 0.0F; \ - float wyr = 0.0F; \ - float wr = 0.0F; \ - \ - float curleft = 0.0F; \ - float curright = 0.0F; \ - float* prevval = NULL; \ - float* curval = NULL; \ - float curlerror = 0.0F; \ - float currerror = 0.0F; \ - \ - int i = 0; \ - int idx = 0; \ - \ - if( *sumw == FLT_MAX ) \ - { \ - /* calculate sums */ \ - float *y = NULL; \ - float *w = NULL; \ - float wy = 0.0F; \ - \ - *sumw = 0.0F; \ - *sumwy = 0.0F; \ - *sumwyy = 0.0F; \ - for( i = 0; i < num; i++ ) \ - { \ - idx = (int) ( *((type*) (idxdata + i*idxstep)) ); \ - w = (float*) (wdata + idx * wstep); \ - *sumw += *w; \ - y = (float*) (ydata + idx * ystep); \ - wy = (*w) * (*y); \ - *sumwy += wy; \ - *sumwyy += wy * (*y); \ - } \ - } \ - \ - for( i = 0; i < num; i++ ) \ - { \ - idx = (int) ( *((type*) (idxdata + i*idxstep)) ); \ - curval = (float*) (data + idx * datastep); \ - /* for debug purpose */ \ - if( i > 0 ) assert( (*prevval) <= (*curval) ); \ - \ - wyr = *sumwy - wyl; \ - wr = *sumw - wl; \ - \ - if( wl > 0.0 ) curleft = wyl / wl; \ - else curleft = 0.0F; \ - \ - if( wr > 0.0 ) curright = wyr / wr; \ - else curright = 0.0F; \ - \ - error \ - \ - if( curlerror + currerror < (*lerror) + (*rerror) ) \ - { \ - (*lerror) = curlerror; \ - (*rerror) = currerror; \ - *threshold = *curval; \ - if( i > 0 ) { \ - *threshold = 0.5F * (*threshold + *prevval); \ - } \ - *left = curleft; \ - *right = curright; \ - found = 1; \ - } \ - \ - do \ - { \ - wl += *((float*) (wdata + idx * wstep)); \ - wyl += (*((float*) (wdata + idx * wstep))) \ - * (*((float*) (ydata + idx * ystep))); \ - wyyl += *((float*) (wdata + idx * wstep)) \ - * (*((float*) (ydata + idx * ystep))) \ - * (*((float*) (ydata + idx * ystep))); \ - } \ - while( (++i) < num && \ - ( *((float*) (data + (idx = \ - (int) ( *((type*) (idxdata + i*idxstep))) ) * datastep)) \ - == *curval ) ); \ - --i; \ - prevval = curval; \ - } /* for each value */ \ - \ - return found; \ -} - -/* misclassification error - * err = MIN( wpos, wneg ); - */ -#define ICV_DEF_FIND_STUMP_THRESHOLD_MISC( suffix, type ) \ - ICV_DEF_FIND_STUMP_THRESHOLD( misc_##suffix, type, \ - float wposl = 0.5F * ( wl + wyl ); \ - float wposr = 0.5F * ( wr + wyr ); \ - curleft = 0.5F * ( 1.0F + curleft ); \ - curright = 0.5F * ( 1.0F + curright ); \ - curlerror = MIN( wposl, wl - wposl ); \ - currerror = MIN( wposr, wr - wposr ); \ - ) - -/* gini error - * err = 2 * wpos * wneg /(wpos + wneg) - */ -#define ICV_DEF_FIND_STUMP_THRESHOLD_GINI( suffix, type ) \ - ICV_DEF_FIND_STUMP_THRESHOLD( gini_##suffix, type, \ - float wposl = 0.5F * ( wl + wyl ); \ - float wposr = 0.5F * ( wr + wyr ); \ - curleft = 0.5F * ( 1.0F + curleft ); \ - curright = 0.5F * ( 1.0F + curright ); \ - curlerror = 2.0F * wposl * ( 1.0F - curleft ); \ - currerror = 2.0F * wposr * ( 1.0F - curright ); \ - ) - -#define CV_ENTROPY_THRESHOLD FLT_MIN - -/* entropy error - * err = - wpos * log(wpos / (wpos + wneg)) - wneg * log(wneg / (wpos + wneg)) - */ -#define ICV_DEF_FIND_STUMP_THRESHOLD_ENTROPY( suffix, type ) \ - ICV_DEF_FIND_STUMP_THRESHOLD( entropy_##suffix, type, \ - float wposl = 0.5F * ( wl + wyl ); \ - float wposr = 0.5F * ( wr + wyr ); \ - curleft = 0.5F * ( 1.0F + curleft ); \ - curright = 0.5F * ( 1.0F + curright ); \ - curlerror = currerror = 0.0F; \ - if( curleft > CV_ENTROPY_THRESHOLD ) \ - curlerror -= wposl * logf( curleft ); \ - if( curleft < 1.0F - CV_ENTROPY_THRESHOLD ) \ - curlerror -= (wl - wposl) * logf( 1.0F - curleft ); \ - \ - if( curright > CV_ENTROPY_THRESHOLD ) \ - currerror -= wposr * logf( curright ); \ - if( curright < 1.0F - CV_ENTROPY_THRESHOLD ) \ - currerror -= (wr - wposr) * logf( 1.0F - curright ); \ - ) - -/* least sum of squares error */ -#define ICV_DEF_FIND_STUMP_THRESHOLD_SQ( suffix, type ) \ - ICV_DEF_FIND_STUMP_THRESHOLD( sq_##suffix, type, \ - /* calculate error (sum of squares) */ \ - /* err = sum( w * (y - left(rigt)Val)^2 ) */ \ - curlerror = wyyl + curleft * curleft * wl - 2.0F * curleft * wyl; \ - currerror = (*sumwyy) - wyyl + curright * curright * wr - 2.0F * curright * wyr; \ - ) - -ICV_DEF_FIND_STUMP_THRESHOLD_MISC( 16s, short ) - -ICV_DEF_FIND_STUMP_THRESHOLD_MISC( 32s, int ) - -ICV_DEF_FIND_STUMP_THRESHOLD_MISC( 32f, float ) - - -ICV_DEF_FIND_STUMP_THRESHOLD_GINI( 16s, short ) - -ICV_DEF_FIND_STUMP_THRESHOLD_GINI( 32s, int ) - -ICV_DEF_FIND_STUMP_THRESHOLD_GINI( 32f, float ) - - -ICV_DEF_FIND_STUMP_THRESHOLD_ENTROPY( 16s, short ) - -ICV_DEF_FIND_STUMP_THRESHOLD_ENTROPY( 32s, int ) - -ICV_DEF_FIND_STUMP_THRESHOLD_ENTROPY( 32f, float ) - - -ICV_DEF_FIND_STUMP_THRESHOLD_SQ( 16s, short ) - -ICV_DEF_FIND_STUMP_THRESHOLD_SQ( 32s, int ) - -ICV_DEF_FIND_STUMP_THRESHOLD_SQ( 32f, float ) - -typedef int (*CvFindThresholdFunc)( uchar* data, size_t datastep, - uchar* wdata, size_t wstep, - uchar* ydata, size_t ystep, - uchar* idxdata, size_t idxstep, int num, - float* lerror, - float* rerror, - float* threshold, float* left, float* right, - float* sumw, float* sumwy, float* sumwyy ); - -CvFindThresholdFunc findStumpThreshold_16s[4] = { - icvFindStumpThreshold_misc_16s, - icvFindStumpThreshold_gini_16s, - icvFindStumpThreshold_entropy_16s, - icvFindStumpThreshold_sq_16s - }; - -CvFindThresholdFunc findStumpThreshold_32s[4] = { - icvFindStumpThreshold_misc_32s, - icvFindStumpThreshold_gini_32s, - icvFindStumpThreshold_entropy_32s, - icvFindStumpThreshold_sq_32s - }; - -CvFindThresholdFunc findStumpThreshold_32f[4] = { - icvFindStumpThreshold_misc_32f, - icvFindStumpThreshold_gini_32f, - icvFindStumpThreshold_entropy_32f, - icvFindStumpThreshold_sq_32f - }; - -CV_BOOST_IMPL -CvClassifier* cvCreateStumpClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* /*typeMask*/, - CvMat* missedMeasurementsMask, - CvMat* compIdx, - CvMat* sampleIdx, - CvMat* weights, - CvClassifierTrainParams* trainParams - ) -{ - CvStumpClassifier* stump = NULL; - int m = 0; /* number of samples */ - int n = 0; /* number of components */ - uchar* data = NULL; - int cstep = 0; - int sstep = 0; - uchar* ydata = NULL; - int ystep = 0; - uchar* idxdata = NULL; - int idxstep = 0; - int l = 0; /* number of indices */ - uchar* wdata = NULL; - int wstep = 0; - - int* idx = NULL; - int i = 0; - - float sumw = FLT_MAX; - float sumwy = FLT_MAX; - float sumwyy = FLT_MAX; - - CV_Assert( trainData != NULL ); - CV_Assert( CV_MAT_TYPE( trainData->type ) == CV_32FC1 ); - CV_Assert( trainClasses != NULL ); - CV_Assert( CV_MAT_TYPE( trainClasses->type ) == CV_32FC1 ); - CV_Assert( missedMeasurementsMask == NULL ); - CV_Assert( compIdx == NULL ); - CV_Assert( weights != NULL ); - CV_Assert( CV_MAT_TYPE( weights->type ) == CV_32FC1 ); - CV_Assert( trainParams != NULL ); - - data = trainData->data.ptr; - if( CV_IS_ROW_SAMPLE( flags ) ) - { - cstep = CV_ELEM_SIZE( trainData->type ); - sstep = trainData->step; - m = trainData->rows; - n = trainData->cols; - } - else - { - sstep = CV_ELEM_SIZE( trainData->type ); - cstep = trainData->step; - m = trainData->cols; - n = trainData->rows; - } - - ydata = trainClasses->data.ptr; - if( trainClasses->rows == 1 ) - { - assert( trainClasses->cols == m ); - ystep = CV_ELEM_SIZE( trainClasses->type ); - } - else - { - assert( trainClasses->rows == m ); - ystep = trainClasses->step; - } - - wdata = weights->data.ptr; - if( weights->rows == 1 ) - { - assert( weights->cols == m ); - wstep = CV_ELEM_SIZE( weights->type ); - } - else - { - assert( weights->rows == m ); - wstep = weights->step; - } - - l = m; - if( sampleIdx != NULL ) - { - assert( CV_MAT_TYPE( sampleIdx->type ) == CV_32FC1 ); - - idxdata = sampleIdx->data.ptr; - if( sampleIdx->rows == 1 ) - { - l = sampleIdx->cols; - idxstep = CV_ELEM_SIZE( sampleIdx->type ); - } - else - { - l = sampleIdx->rows; - idxstep = sampleIdx->step; - } - assert( l <= m ); - } - - idx = (int*) cvAlloc( l * sizeof( int ) ); - stump = (CvStumpClassifier*) cvAlloc( sizeof( CvStumpClassifier) ); - - /* START */ - memset( (void*) stump, 0, sizeof( CvStumpClassifier ) ); - - stump->eval = cvEvalStumpClassifier; - stump->tune = NULL; - stump->save = NULL; - stump->release = cvReleaseStumpClassifier; - - stump->lerror = FLT_MAX; - stump->rerror = FLT_MAX; - stump->left = 0.0F; - stump->right = 0.0F; - - /* copy indices */ - if( sampleIdx != NULL ) - { - for( i = 0; i < l; i++ ) - { - idx[i] = (int) *((float*) (idxdata + i*idxstep)); - } - } - else - { - for( i = 0; i < l; i++ ) - { - idx[i] = i; - } - } - - for( i = 0; i < n; i++ ) - { - CvValArray va; - - va.data = data + i * ((size_t) cstep); - va.step = sstep; - std::sort(idx, idx + l, LessThanValArray(&va)); - if( findStumpThreshold_32s[(int) ((CvStumpTrainParams*) trainParams)->error] - ( data + i * ((size_t) cstep), sstep, - wdata, wstep, ydata, ystep, (uchar*) idx, sizeof( int ), l, - &(stump->lerror), &(stump->rerror), - &(stump->threshold), &(stump->left), &(stump->right), - &sumw, &sumwy, &sumwyy ) ) - { - stump->compidx = i; - } - } /* for each component */ - - /* END */ - - cvFree( &idx ); - - if( ((CvStumpTrainParams*) trainParams)->type == CV_CLASSIFICATION_CLASS ) - { - stump->left = 2.0F * (stump->left >= 0.5F) - 1.0F; - stump->right = 2.0F * (stump->right >= 0.5F) - 1.0F; - } - - return (CvClassifier*) stump; -} - -/* - * cvCreateMTStumpClassifier - * - * Multithreaded stump classifier constructor - * Includes huge train data support through callback function - */ -CV_BOOST_IMPL -CvClassifier* cvCreateMTStumpClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* /*typeMask*/, - CvMat* missedMeasurementsMask, - CvMat* compIdx, - CvMat* sampleIdx, - CvMat* weights, - CvClassifierTrainParams* trainParams ) -{ - CvStumpClassifier* stump = NULL; - int m = 0; /* number of samples */ - int n = 0; /* number of components */ - uchar* data = NULL; - size_t cstep = 0; - size_t sstep = 0; - int datan = 0; /* num components */ - uchar* ydata = NULL; - size_t ystep = 0; - uchar* idxdata = NULL; - size_t idxstep = 0; - int l = 0; /* number of indices */ - uchar* wdata = NULL; - size_t wstep = 0; - - uchar* sorteddata = NULL; - int sortedtype = 0; - size_t sortedcstep = 0; /* component step */ - size_t sortedsstep = 0; /* sample step */ - int sortedn = 0; /* num components */ - int sortedm = 0; /* num samples */ - - char* filter = NULL; - int i = 0; - - int compidx = 0; - int stumperror; - int portion; - - /* private variables */ - CvMat mat; - CvValArray va; - float lerror; - float rerror; - float left; - float right; - float threshold; - int optcompidx; - - float sumw; - float sumwy; - float sumwyy; - - int t_compidx; - int t_n; - - int ti; - int tj; - int tk; - - uchar* t_data; - size_t t_cstep; - size_t t_sstep; - - size_t matcstep; - size_t matsstep; - - int* t_idx; - /* end private variables */ - - CV_Assert( trainParams != NULL ); - CV_Assert( trainClasses != NULL ); - CV_Assert( CV_MAT_TYPE( trainClasses->type ) == CV_32FC1 ); - CV_Assert( missedMeasurementsMask == NULL ); - CV_Assert( compIdx == NULL ); - - stumperror = (int) ((CvMTStumpTrainParams*) trainParams)->error; - - ydata = trainClasses->data.ptr; - if( trainClasses->rows == 1 ) - { - m = trainClasses->cols; - ystep = CV_ELEM_SIZE( trainClasses->type ); - } - else - { - m = trainClasses->rows; - ystep = trainClasses->step; - } - - wdata = weights->data.ptr; - if( weights->rows == 1 ) - { - CV_Assert( weights->cols == m ); - wstep = CV_ELEM_SIZE( weights->type ); - } - else - { - CV_Assert( weights->rows == m ); - wstep = weights->step; - } - - if( ((CvMTStumpTrainParams*) trainParams)->sortedIdx != NULL ) - { - sortedtype = - CV_MAT_TYPE( ((CvMTStumpTrainParams*) trainParams)->sortedIdx->type ); - assert( sortedtype == CV_16SC1 || sortedtype == CV_32SC1 - || sortedtype == CV_32FC1 ); - sorteddata = ((CvMTStumpTrainParams*) trainParams)->sortedIdx->data.ptr; - sortedsstep = CV_ELEM_SIZE( sortedtype ); - sortedcstep = ((CvMTStumpTrainParams*) trainParams)->sortedIdx->step; - sortedn = ((CvMTStumpTrainParams*) trainParams)->sortedIdx->rows; - sortedm = ((CvMTStumpTrainParams*) trainParams)->sortedIdx->cols; - } - - if( trainData == NULL ) - { - assert( ((CvMTStumpTrainParams*) trainParams)->getTrainData != NULL ); - n = ((CvMTStumpTrainParams*) trainParams)->numcomp; - assert( n > 0 ); - } - else - { - assert( CV_MAT_TYPE( trainData->type ) == CV_32FC1 ); - data = trainData->data.ptr; - if( CV_IS_ROW_SAMPLE( flags ) ) - { - cstep = CV_ELEM_SIZE( trainData->type ); - sstep = trainData->step; - assert( m == trainData->rows ); - datan = n = trainData->cols; - } - else - { - sstep = CV_ELEM_SIZE( trainData->type ); - cstep = trainData->step; - assert( m == trainData->cols ); - datan = n = trainData->rows; - } - if( ((CvMTStumpTrainParams*) trainParams)->getTrainData != NULL ) - { - n = ((CvMTStumpTrainParams*) trainParams)->numcomp; - } - } - assert( datan <= n ); - - if( sampleIdx != NULL ) - { - assert( CV_MAT_TYPE( sampleIdx->type ) == CV_32FC1 ); - idxdata = sampleIdx->data.ptr; - idxstep = ( sampleIdx->rows == 1 ) - ? CV_ELEM_SIZE( sampleIdx->type ) : sampleIdx->step; - l = ( sampleIdx->rows == 1 ) ? sampleIdx->cols : sampleIdx->rows; - - if( sorteddata != NULL ) - { - filter = (char*) cvAlloc( sizeof( char ) * m ); - memset( (void*) filter, 0, sizeof( char ) * m ); - for( i = 0; i < l; i++ ) - { - filter[(int) *((float*) (idxdata + i * idxstep))] = (char) 1; - } - } - } - else - { - l = m; - } - - stump = (CvStumpClassifier*) cvAlloc( sizeof( CvStumpClassifier) ); - - /* START */ - memset( (void*) stump, 0, sizeof( CvStumpClassifier ) ); - - portion = ((CvMTStumpTrainParams*)trainParams)->portion; - - if( portion < 1 ) - { - /* auto portion */ - portion = n; - #ifdef _OPENMP - portion /= omp_get_max_threads(); - #endif /* _OPENMP */ - } - - stump->eval = cvEvalStumpClassifier; - stump->tune = NULL; - stump->save = NULL; - stump->release = cvReleaseStumpClassifier; - - stump->lerror = FLT_MAX; - stump->rerror = FLT_MAX; - stump->left = 0.0F; - stump->right = 0.0F; - - compidx = 0; - #ifdef _OPENMP - #pragma omp parallel private(mat, va, lerror, rerror, left, right, threshold, \ - optcompidx, sumw, sumwy, sumwyy, t_compidx, t_n, \ - ti, tj, tk, t_data, t_cstep, t_sstep, matcstep, \ - matsstep, t_idx) - #endif /* _OPENMP */ - { - lerror = FLT_MAX; - rerror = FLT_MAX; - left = 0.0F; - right = 0.0F; - threshold = 0.0F; - optcompidx = 0; - - sumw = FLT_MAX; - sumwy = FLT_MAX; - sumwyy = FLT_MAX; - - t_compidx = 0; - t_n = 0; - - ti = 0; - tj = 0; - tk = 0; - - t_data = NULL; - t_cstep = 0; - t_sstep = 0; - - matcstep = 0; - matsstep = 0; - - t_idx = NULL; - - mat.data.ptr = NULL; - - if( datan < n ) - { - /* prepare matrix for callback */ - if( CV_IS_ROW_SAMPLE( flags ) ) - { - mat = cvMat( m, portion, CV_32FC1, 0 ); - matcstep = CV_ELEM_SIZE( mat.type ); - matsstep = mat.step; - } - else - { - mat = cvMat( portion, m, CV_32FC1, 0 ); - matcstep = mat.step; - matsstep = CV_ELEM_SIZE( mat.type ); - } - mat.data.ptr = (uchar*) cvAlloc( sizeof( float ) * mat.rows * mat.cols ); - } - - if( filter != NULL || sortedn < n ) - { - t_idx = (int*) cvAlloc( sizeof( int ) * m ); - if( sortedn == 0 || filter == NULL ) - { - if( idxdata != NULL ) - { - for( ti = 0; ti < l; ti++ ) - { - t_idx[ti] = (int) *((float*) (idxdata + ti * idxstep)); - } - } - else - { - for( ti = 0; ti < l; ti++ ) - { - t_idx[ti] = ti; - } - } - } - } - - #ifdef _OPENMP - #pragma omp critical(c_compidx) - #endif /* _OPENMP */ - { - t_compidx = compidx; - compidx += portion; - } - while( t_compidx < n ) - { - t_n = portion; - if( t_compidx < datan ) - { - t_n = ( t_n < (datan - t_compidx) ) ? t_n : (datan - t_compidx); - t_data = data; - t_cstep = cstep; - t_sstep = sstep; - } - else - { - t_n = ( t_n < (n - t_compidx) ) ? t_n : (n - t_compidx); - t_cstep = matcstep; - t_sstep = matsstep; - t_data = mat.data.ptr - t_compidx * ((size_t) t_cstep ); - - /* calculate components */ - ((CvMTStumpTrainParams*)trainParams)->getTrainData( &mat, - sampleIdx, compIdx, t_compidx, t_n, - ((CvMTStumpTrainParams*)trainParams)->userdata ); - } - - if( sorteddata != NULL ) - { - if( filter != NULL ) - { - /* have sorted indices and filter */ - switch( sortedtype ) - { - case CV_16SC1: - for( ti = t_compidx; ti < MIN( sortedn, t_compidx + t_n ); ti++ ) - { - tk = 0; - for( tj = 0; tj < sortedm; tj++ ) - { - int curidx = (int) ( *((short*) (sorteddata - + ti * sortedcstep + tj * sortedsstep)) ); - if( filter[curidx] != 0 ) - { - t_idx[tk++] = curidx; - } - } - if( findStumpThreshold_32s[stumperror]( - t_data + ti * t_cstep, t_sstep, - wdata, wstep, ydata, ystep, - (uchar*) t_idx, sizeof( int ), tk, - &lerror, &rerror, - &threshold, &left, &right, - &sumw, &sumwy, &sumwyy ) ) - { - optcompidx = ti; - } - } - break; - case CV_32SC1: - for( ti = t_compidx; ti < MIN( sortedn, t_compidx + t_n ); ti++ ) - { - tk = 0; - for( tj = 0; tj < sortedm; tj++ ) - { - int curidx = (int) ( *((int*) (sorteddata - + ti * sortedcstep + tj * sortedsstep)) ); - if( filter[curidx] != 0 ) - { - t_idx[tk++] = curidx; - } - } - if( findStumpThreshold_32s[stumperror]( - t_data + ti * t_cstep, t_sstep, - wdata, wstep, ydata, ystep, - (uchar*) t_idx, sizeof( int ), tk, - &lerror, &rerror, - &threshold, &left, &right, - &sumw, &sumwy, &sumwyy ) ) - { - optcompidx = ti; - } - } - break; - case CV_32FC1: - for( ti = t_compidx; ti < MIN( sortedn, t_compidx + t_n ); ti++ ) - { - tk = 0; - for( tj = 0; tj < sortedm; tj++ ) - { - int curidx = (int) ( *((float*) (sorteddata - + ti * sortedcstep + tj * sortedsstep)) ); - if( filter[curidx] != 0 ) - { - t_idx[tk++] = curidx; - } - } - if( findStumpThreshold_32s[stumperror]( - t_data + ti * t_cstep, t_sstep, - wdata, wstep, ydata, ystep, - (uchar*) t_idx, sizeof( int ), tk, - &lerror, &rerror, - &threshold, &left, &right, - &sumw, &sumwy, &sumwyy ) ) - { - optcompidx = ti; - } - } - break; - default: - assert( 0 ); - break; - } - } - else - { - /* have sorted indices */ - switch( sortedtype ) - { - case CV_16SC1: - for( ti = t_compidx; ti < MIN( sortedn, t_compidx + t_n ); ti++ ) - { - if( findStumpThreshold_16s[stumperror]( - t_data + ti * t_cstep, t_sstep, - wdata, wstep, ydata, ystep, - sorteddata + ti * sortedcstep, sortedsstep, sortedm, - &lerror, &rerror, - &threshold, &left, &right, - &sumw, &sumwy, &sumwyy ) ) - { - optcompidx = ti; - } - } - break; - case CV_32SC1: - for( ti = t_compidx; ti < MIN( sortedn, t_compidx + t_n ); ti++ ) - { - if( findStumpThreshold_32s[stumperror]( - t_data + ti * t_cstep, t_sstep, - wdata, wstep, ydata, ystep, - sorteddata + ti * sortedcstep, sortedsstep, sortedm, - &lerror, &rerror, - &threshold, &left, &right, - &sumw, &sumwy, &sumwyy ) ) - { - optcompidx = ti; - } - } - break; - case CV_32FC1: - for( ti = t_compidx; ti < MIN( sortedn, t_compidx + t_n ); ti++ ) - { - if( findStumpThreshold_32f[stumperror]( - t_data + ti * t_cstep, t_sstep, - wdata, wstep, ydata, ystep, - sorteddata + ti * sortedcstep, sortedsstep, sortedm, - &lerror, &rerror, - &threshold, &left, &right, - &sumw, &sumwy, &sumwyy ) ) - { - optcompidx = ti; - } - } - break; - default: - assert( 0 ); - break; - } - } - } - - ti = MAX( t_compidx, MIN( sortedn, t_compidx + t_n ) ); - for( ; ti < t_compidx + t_n; ti++ ) - { - va.data = t_data + ti * t_cstep; - va.step = t_sstep; - std::sort(t_idx, t_idx + l, LessThanValArray(&va)); - if( findStumpThreshold_32s[stumperror]( - t_data + ti * t_cstep, t_sstep, - wdata, wstep, ydata, ystep, - (uchar*)t_idx, sizeof( int ), l, - &lerror, &rerror, - &threshold, &left, &right, - &sumw, &sumwy, &sumwyy ) ) - { - optcompidx = ti; - } - } - #ifdef _OPENMP - #pragma omp critical(c_compidx) - #endif /* _OPENMP */ - { - t_compidx = compidx; - compidx += portion; - } - } /* while have training data */ - - /* get the best classifier */ - #ifdef _OPENMP - #pragma omp critical(c_beststump) - #endif /* _OPENMP */ - { - if( lerror + rerror < stump->lerror + stump->rerror ) - { - stump->lerror = lerror; - stump->rerror = rerror; - stump->compidx = optcompidx; - stump->threshold = threshold; - stump->left = left; - stump->right = right; - } - } - - /* free allocated memory */ - if( mat.data.ptr != NULL ) - { - cvFree( &(mat.data.ptr) ); - } - if( t_idx != NULL ) - { - cvFree( &t_idx ); - } - } /* end of parallel region */ - - /* END */ - - /* free allocated memory */ - if( filter != NULL ) - { - cvFree( &filter ); - } - - if( ((CvMTStumpTrainParams*) trainParams)->type == CV_CLASSIFICATION_CLASS ) - { - stump->left = 2.0F * (stump->left >= 0.5F) - 1.0F; - stump->right = 2.0F * (stump->right >= 0.5F) - 1.0F; - } - - return (CvClassifier*) stump; -} - -CV_BOOST_IMPL -float cvEvalCARTClassifier( CvClassifier* classifier, CvMat* sample ) -{ - CV_FUNCNAME( "cvEvalCARTClassifier" ); - - int idx = 0; - - __BEGIN__; - - - CV_ASSERT( classifier != NULL ); - CV_ASSERT( sample != NULL ); - CV_ASSERT( CV_MAT_TYPE( sample->type ) == CV_32FC1 ); - CV_ASSERT( sample->rows == 1 || sample->cols == 1 ); - - if( sample->rows == 1 ) - { - do - { - if( (CV_MAT_ELEM( (*sample), float, 0, - ((CvCARTClassifier*) classifier)->compidx[idx] )) < - ((CvCARTClassifier*) classifier)->threshold[idx] ) - { - idx = ((CvCARTClassifier*) classifier)->left[idx]; - } - else - { - idx = ((CvCARTClassifier*) classifier)->right[idx]; - } - } while( idx > 0 ); - } - else - { - do - { - if( (CV_MAT_ELEM( (*sample), float, - ((CvCARTClassifier*) classifier)->compidx[idx], 0 )) < - ((CvCARTClassifier*) classifier)->threshold[idx] ) - { - idx = ((CvCARTClassifier*) classifier)->left[idx]; - } - else - { - idx = ((CvCARTClassifier*) classifier)->right[idx]; - } - } while( idx > 0 ); - } - - __END__; - - return ((CvCARTClassifier*) classifier)->val[-idx]; -} - -static -float cvEvalCARTClassifierIdx( CvClassifier* classifier, CvMat* sample ) -{ - CV_FUNCNAME( "cvEvalCARTClassifierIdx" ); - - int idx = 0; - - __BEGIN__; - - - CV_ASSERT( classifier != NULL ); - CV_ASSERT( sample != NULL ); - CV_ASSERT( CV_MAT_TYPE( sample->type ) == CV_32FC1 ); - CV_ASSERT( sample->rows == 1 || sample->cols == 1 ); - - if( sample->rows == 1 ) - { - do - { - if( (CV_MAT_ELEM( (*sample), float, 0, - ((CvCARTClassifier*) classifier)->compidx[idx] )) < - ((CvCARTClassifier*) classifier)->threshold[idx] ) - { - idx = ((CvCARTClassifier*) classifier)->left[idx]; - } - else - { - idx = ((CvCARTClassifier*) classifier)->right[idx]; - } - } while( idx > 0 ); - } - else - { - do - { - if( (CV_MAT_ELEM( (*sample), float, - ((CvCARTClassifier*) classifier)->compidx[idx], 0 )) < - ((CvCARTClassifier*) classifier)->threshold[idx] ) - { - idx = ((CvCARTClassifier*) classifier)->left[idx]; - } - else - { - idx = ((CvCARTClassifier*) classifier)->right[idx]; - } - } while( idx > 0 ); - } - - __END__; - - return (float) (-idx); -} - -CV_BOOST_IMPL -void cvReleaseCARTClassifier( CvClassifier** classifier ) -{ - cvFree( classifier ); - *classifier = NULL; -} - -static void CV_CDECL icvDefaultSplitIdx_R( int compidx, float threshold, - CvMat* idx, CvMat** left, CvMat** right, - void* userdata ) -{ - CvMat* trainData = (CvMat*) userdata; - int i = 0; - - *left = cvCreateMat( 1, trainData->rows, CV_32FC1 ); - *right = cvCreateMat( 1, trainData->rows, CV_32FC1 ); - (*left)->cols = (*right)->cols = 0; - if( idx == NULL ) - { - for( i = 0; i < trainData->rows; i++ ) - { - if( CV_MAT_ELEM( *trainData, float, i, compidx ) < threshold ) - { - (*left)->data.fl[(*left)->cols++] = (float) i; - } - else - { - (*right)->data.fl[(*right)->cols++] = (float) i; - } - } - } - else - { - uchar* idxdata; - int idxnum; - int idxstep; - int index; - - idxdata = idx->data.ptr; - idxnum = (idx->rows == 1) ? idx->cols : idx->rows; - idxstep = (idx->rows == 1) ? CV_ELEM_SIZE( idx->type ) : idx->step; - for( i = 0; i < idxnum; i++ ) - { - index = (int) *((float*) (idxdata + i * idxstep)); - if( CV_MAT_ELEM( *trainData, float, index, compidx ) < threshold ) - { - (*left)->data.fl[(*left)->cols++] = (float) index; - } - else - { - (*right)->data.fl[(*right)->cols++] = (float) index; - } - } - } -} - -static void CV_CDECL icvDefaultSplitIdx_C( int compidx, float threshold, - CvMat* idx, CvMat** left, CvMat** right, - void* userdata ) -{ - CvMat* trainData = (CvMat*) userdata; - int i = 0; - - *left = cvCreateMat( 1, trainData->cols, CV_32FC1 ); - *right = cvCreateMat( 1, trainData->cols, CV_32FC1 ); - (*left)->cols = (*right)->cols = 0; - if( idx == NULL ) - { - for( i = 0; i < trainData->cols; i++ ) - { - if( CV_MAT_ELEM( *trainData, float, compidx, i ) < threshold ) - { - (*left)->data.fl[(*left)->cols++] = (float) i; - } - else - { - (*right)->data.fl[(*right)->cols++] = (float) i; - } - } - } - else - { - uchar* idxdata; - int idxnum; - int idxstep; - int index; - - idxdata = idx->data.ptr; - idxnum = (idx->rows == 1) ? idx->cols : idx->rows; - idxstep = (idx->rows == 1) ? CV_ELEM_SIZE( idx->type ) : idx->step; - for( i = 0; i < idxnum; i++ ) - { - index = (int) *((float*) (idxdata + i * idxstep)); - if( CV_MAT_ELEM( *trainData, float, compidx, index ) < threshold ) - { - (*left)->data.fl[(*left)->cols++] = (float) index; - } - else - { - (*right)->data.fl[(*right)->cols++] = (float) index; - } - } - } -} - -/* internal structure used in CART creation */ -typedef struct CvCARTNode -{ - CvMat* sampleIdx; - CvStumpClassifier* stump; - int parent; - int leftflag; - float errdrop; -} CvCARTNode; - -CV_BOOST_IMPL -CvClassifier* cvCreateCARTClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* typeMask, - CvMat* missedMeasurementsMask, - CvMat* compIdx, - CvMat* sampleIdx, - CvMat* weights, - CvClassifierTrainParams* trainParams ) -{ - CvCARTClassifier* cart = NULL; - size_t datasize = 0; - int count = 0; - int i = 0; - int j = 0; - - CvCARTNode* intnode = NULL; - CvCARTNode* list = NULL; - int listcount = 0; - CvMat* lidx = NULL; - CvMat* ridx = NULL; - - float maxerrdrop = 0.0F; - int idx = 0; - - void (*splitIdxCallback)( int compidx, float threshold, - CvMat* idx, CvMat** left, CvMat** right, - void* userdata ); - void* userdata; - - count = ((CvCARTTrainParams*) trainParams)->count; - - assert( count > 0 ); - - datasize = sizeof( *cart ) + (sizeof( float ) + 3 * sizeof( int )) * count + - sizeof( float ) * (count + 1); - - cart = (CvCARTClassifier*) cvAlloc( datasize ); - memset( cart, 0, datasize ); - - cart->count = count; - - cart->eval = cvEvalCARTClassifier; - cart->save = NULL; - cart->release = cvReleaseCARTClassifier; - - cart->compidx = (int*) (cart + 1); - cart->threshold = (float*) (cart->compidx + count); - cart->left = (int*) (cart->threshold + count); - cart->right = (int*) (cart->left + count); - cart->val = (float*) (cart->right + count); - - datasize = sizeof( CvCARTNode ) * (count + count); - intnode = (CvCARTNode*) cvAlloc( datasize ); - memset( intnode, 0, datasize ); - list = (CvCARTNode*) (intnode + count); - - splitIdxCallback = ((CvCARTTrainParams*) trainParams)->splitIdx; - userdata = ((CvCARTTrainParams*) trainParams)->userdata; - if( splitIdxCallback == NULL ) - { - splitIdxCallback = ( CV_IS_ROW_SAMPLE( flags ) ) - ? icvDefaultSplitIdx_R : icvDefaultSplitIdx_C; - userdata = trainData; - } - - /* create root of the tree */ - intnode[0].sampleIdx = sampleIdx; - intnode[0].stump = (CvStumpClassifier*) - ((CvCARTTrainParams*) trainParams)->stumpConstructor( trainData, flags, - trainClasses, typeMask, missedMeasurementsMask, compIdx, sampleIdx, weights, - ((CvCARTTrainParams*) trainParams)->stumpTrainParams ); - cart->left[0] = cart->right[0] = 0; - - /* build tree */ - listcount = 0; - for( i = 1; i < count; i++ ) - { - /* split last added node */ - splitIdxCallback( intnode[i-1].stump->compidx, intnode[i-1].stump->threshold, - intnode[i-1].sampleIdx, &lidx, &ridx, userdata ); - - if( intnode[i-1].stump->lerror != 0.0F ) - { - list[listcount].sampleIdx = lidx; - list[listcount].stump = (CvStumpClassifier*) - ((CvCARTTrainParams*) trainParams)->stumpConstructor( trainData, flags, - trainClasses, typeMask, missedMeasurementsMask, compIdx, - list[listcount].sampleIdx, - weights, ((CvCARTTrainParams*) trainParams)->stumpTrainParams ); - list[listcount].errdrop = intnode[i-1].stump->lerror - - (list[listcount].stump->lerror + list[listcount].stump->rerror); - list[listcount].leftflag = 1; - list[listcount].parent = i-1; - listcount++; - } - else - { - cvReleaseMat( &lidx ); - } - if( intnode[i-1].stump->rerror != 0.0F ) - { - list[listcount].sampleIdx = ridx; - list[listcount].stump = (CvStumpClassifier*) - ((CvCARTTrainParams*) trainParams)->stumpConstructor( trainData, flags, - trainClasses, typeMask, missedMeasurementsMask, compIdx, - list[listcount].sampleIdx, - weights, ((CvCARTTrainParams*) trainParams)->stumpTrainParams ); - list[listcount].errdrop = intnode[i-1].stump->rerror - - (list[listcount].stump->lerror + list[listcount].stump->rerror); - list[listcount].leftflag = 0; - list[listcount].parent = i-1; - listcount++; - } - else - { - cvReleaseMat( &ridx ); - } - - if( listcount == 0 ) break; - - /* find the best node to be added to the tree */ - idx = 0; - maxerrdrop = list[idx].errdrop; - for( j = 1; j < listcount; j++ ) - { - if( list[j].errdrop > maxerrdrop ) - { - idx = j; - maxerrdrop = list[j].errdrop; - } - } - intnode[i] = list[idx]; - if( list[idx].leftflag ) - { - cart->left[list[idx].parent] = i; - } - else - { - cart->right[list[idx].parent] = i; - } - if( idx != (listcount - 1) ) - { - list[idx] = list[listcount - 1]; - } - listcount--; - } - - /* fill fields */ - j = 0; - cart->count = 0; - for( i = 0; i < count && (intnode[i].stump != NULL); i++ ) - { - cart->count++; - cart->compidx[i] = intnode[i].stump->compidx; - cart->threshold[i] = intnode[i].stump->threshold; - - /* leaves */ - if( cart->left[i] <= 0 ) - { - cart->left[i] = -j; - cart->val[j] = intnode[i].stump->left; - j++; - } - if( cart->right[i] <= 0 ) - { - cart->right[i] = -j; - cart->val[j] = intnode[i].stump->right; - j++; - } - } - - /* CLEAN UP */ - for( i = 0; i < count && (intnode[i].stump != NULL); i++ ) - { - intnode[i].stump->release( (CvClassifier**) &(intnode[i].stump) ); - if( i != 0 ) - { - cvReleaseMat( &(intnode[i].sampleIdx) ); - } - } - for( i = 0; i < listcount; i++ ) - { - list[i].stump->release( (CvClassifier**) &(list[i].stump) ); - cvReleaseMat( &(list[i].sampleIdx) ); - } - - cvFree( &intnode ); - - return (CvClassifier*) cart; -} - -/****************************************************************************************\ -* Boosting * -\****************************************************************************************/ - -typedef struct CvBoostTrainer -{ - CvBoostType type; - int count; /* (idx) ? number_of_indices : number_of_samples */ - int* idx; - float* F; -} CvBoostTrainer; - -/* - * cvBoostStartTraining, cvBoostNextWeakClassifier, cvBoostEndTraining - * - * These functions perform training of 2-class boosting classifier - * using ANY appropriate weak classifier - */ - -static -CvBoostTrainer* icvBoostStartTraining( CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* /*weights*/, - CvMat* sampleIdx, - CvBoostType type ) -{ - uchar* ydata; - int ystep; - int m; - uchar* traindata; - int trainstep; - int trainnum; - int i; - int idx; - - size_t datasize; - CvBoostTrainer* ptr; - - int idxnum; - int idxstep; - uchar* idxdata; - - assert( trainClasses != NULL ); - assert( CV_MAT_TYPE( trainClasses->type ) == CV_32FC1 ); - assert( weakTrainVals != NULL ); - assert( CV_MAT_TYPE( weakTrainVals->type ) == CV_32FC1 ); - - CV_MAT2VEC( *trainClasses, ydata, ystep, m ); - CV_MAT2VEC( *weakTrainVals, traindata, trainstep, trainnum ); - - CV_Assert( m == trainnum ); - - idxnum = 0; - idxstep = 0; - idxdata = NULL; - if( sampleIdx ) - { - CV_MAT2VEC( *sampleIdx, idxdata, idxstep, idxnum ); - } - - datasize = sizeof( *ptr ) + sizeof( *ptr->idx ) * idxnum; - ptr = (CvBoostTrainer*) cvAlloc( datasize ); - memset( ptr, 0, datasize ); - ptr->F = NULL; - ptr->idx = NULL; - - ptr->count = m; - ptr->type = type; - - if( idxnum > 0 ) - { - CvScalar s; - - ptr->idx = (int*) (ptr + 1); - ptr->count = idxnum; - for( i = 0; i < ptr->count; i++ ) - { - cvRawDataToScalar( idxdata + i*idxstep, CV_MAT_TYPE( sampleIdx->type ), &s ); - ptr->idx[i] = (int) s.val[0]; - } - } - for( i = 0; i < ptr->count; i++ ) - { - idx = (ptr->idx) ? ptr->idx[i] : i; - - *((float*) (traindata + idx * trainstep)) = - 2.0F * (*((float*) (ydata + idx * ystep))) - 1.0F; - } - - return ptr; -} - -/* - * - * Discrete AdaBoost functions - * - */ -static -float icvBoostNextWeakClassifierDAB( CvMat* weakEvalVals, - CvMat* trainClasses, - CvMat* /*weakTrainVals*/, - CvMat* weights, - CvBoostTrainer* trainer ) -{ - uchar* evaldata; - int evalstep; - int m; - uchar* ydata; - int ystep; - int ynum; - uchar* wdata; - int wstep; - int wnum; - - float sumw; - float err; - int i; - int idx; - - CV_Assert( weakEvalVals != NULL ); - CV_Assert( CV_MAT_TYPE( weakEvalVals->type ) == CV_32FC1 ); - CV_Assert( trainClasses != NULL ); - CV_Assert( CV_MAT_TYPE( trainClasses->type ) == CV_32FC1 ); - CV_Assert( weights != NULL ); - CV_Assert( CV_MAT_TYPE( weights ->type ) == CV_32FC1 ); - - CV_MAT2VEC( *weakEvalVals, evaldata, evalstep, m ); - CV_MAT2VEC( *trainClasses, ydata, ystep, ynum ); - CV_MAT2VEC( *weights, wdata, wstep, wnum ); - - CV_Assert( m == ynum ); - CV_Assert( m == wnum ); - - sumw = 0.0F; - err = 0.0F; - for( i = 0; i < trainer->count; i++ ) - { - idx = (trainer->idx) ? trainer->idx[i] : i; - - sumw += *((float*) (wdata + idx*wstep)); - err += (*((float*) (wdata + idx*wstep))) * - ( (*((float*) (evaldata + idx*evalstep))) != - 2.0F * (*((float*) (ydata + idx*ystep))) - 1.0F ); - } - err /= sumw; - err = -cvLogRatio( err ); - - for( i = 0; i < trainer->count; i++ ) - { - idx = (trainer->idx) ? trainer->idx[i] : i; - - *((float*) (wdata + idx*wstep)) *= expf( err * - ((*((float*) (evaldata + idx*evalstep))) != - 2.0F * (*((float*) (ydata + idx*ystep))) - 1.0F) ); - sumw += *((float*) (wdata + idx*wstep)); - } - for( i = 0; i < trainer->count; i++ ) - { - idx = (trainer->idx) ? trainer->idx[i] : i; - - *((float*) (wdata + idx * wstep)) /= sumw; - } - - return err; -} - -/* - * - * Real AdaBoost functions - * - */ -static -float icvBoostNextWeakClassifierRAB( CvMat* weakEvalVals, - CvMat* trainClasses, - CvMat* /*weakTrainVals*/, - CvMat* weights, - CvBoostTrainer* trainer ) -{ - uchar* evaldata; - int evalstep; - int m; - uchar* ydata; - int ystep; - int ynum; - uchar* wdata; - int wstep; - int wnum; - - float sumw; - int i, idx; - - CV_Assert( weakEvalVals != NULL ); - CV_Assert( CV_MAT_TYPE( weakEvalVals->type ) == CV_32FC1 ); - CV_Assert( trainClasses != NULL ); - CV_Assert( CV_MAT_TYPE( trainClasses->type ) == CV_32FC1 ); - CV_Assert( weights != NULL ); - CV_Assert( CV_MAT_TYPE( weights ->type ) == CV_32FC1 ); - - CV_MAT2VEC( *weakEvalVals, evaldata, evalstep, m ); - CV_MAT2VEC( *trainClasses, ydata, ystep, ynum ); - CV_MAT2VEC( *weights, wdata, wstep, wnum ); - - CV_Assert( m == ynum ); - CV_Assert( m == wnum ); - - - sumw = 0.0F; - for( i = 0; i < trainer->count; i++ ) - { - idx = (trainer->idx) ? trainer->idx[i] : i; - - *((float*) (wdata + idx*wstep)) *= expf( (-(*((float*) (ydata + idx*ystep))) + 0.5F) - * cvLogRatio( *((float*) (evaldata + idx*evalstep)) ) ); - sumw += *((float*) (wdata + idx*wstep)); - } - for( i = 0; i < trainer->count; i++ ) - { - idx = (trainer->idx) ? trainer->idx[i] : i; - - *((float*) (wdata + idx*wstep)) /= sumw; - } - - return 1.0F; -} - -/* - * - * LogitBoost functions - * - */ -#define CV_LB_PROB_THRESH 0.01F -#define CV_LB_WEIGHT_THRESHOLD 0.0001F - -static -void icvResponsesAndWeightsLB( int num, uchar* wdata, int wstep, - uchar* ydata, int ystep, - uchar* fdata, int fstep, - uchar* traindata, int trainstep, - int* indices ) -{ - int i, idx; - float p; - - for( i = 0; i < num; i++ ) - { - idx = (indices) ? indices[i] : i; - - p = 1.0F / (1.0F + expf( -(*((float*) (fdata + idx*fstep)))) ); - *((float*) (wdata + idx*wstep)) = MAX( p * (1.0F - p), CV_LB_WEIGHT_THRESHOLD ); - if( *((float*) (ydata + idx*ystep)) == 1.0F ) - { - *((float*) (traindata + idx*trainstep)) = - 1.0F / (MAX( p, CV_LB_PROB_THRESH )); - } - else - { - *((float*) (traindata + idx*trainstep)) = - -1.0F / (MAX( 1.0F - p, CV_LB_PROB_THRESH )); - } - } -} - -static -CvBoostTrainer* icvBoostStartTrainingLB( CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* weights, - CvMat* sampleIdx, - CvBoostType type ) -{ - size_t datasize; - CvBoostTrainer* ptr; - - uchar* ydata; - int ystep; - int m; - uchar* traindata; - int trainstep; - int trainnum; - uchar* wdata; - int wstep; - int wnum; - int i; - - int idxnum; - int idxstep; - uchar* idxdata; - - assert( trainClasses != NULL ); - assert( CV_MAT_TYPE( trainClasses->type ) == CV_32FC1 ); - assert( weakTrainVals != NULL ); - assert( CV_MAT_TYPE( weakTrainVals->type ) == CV_32FC1 ); - assert( weights != NULL ); - assert( CV_MAT_TYPE( weights->type ) == CV_32FC1 ); - - CV_MAT2VEC( *trainClasses, ydata, ystep, m ); - CV_MAT2VEC( *weakTrainVals, traindata, trainstep, trainnum ); - CV_MAT2VEC( *weights, wdata, wstep, wnum ); - - CV_Assert( m == trainnum ); - CV_Assert( m == wnum ); - - - idxnum = 0; - idxstep = 0; - idxdata = NULL; - if( sampleIdx ) - { - CV_MAT2VEC( *sampleIdx, idxdata, idxstep, idxnum ); - } - - datasize = sizeof( *ptr ) + sizeof( *ptr->F ) * m + sizeof( *ptr->idx ) * idxnum; - ptr = (CvBoostTrainer*) cvAlloc( datasize ); - memset( ptr, 0, datasize ); - ptr->F = (float*) (ptr + 1); - ptr->idx = NULL; - - ptr->count = m; - ptr->type = type; - - if( idxnum > 0 ) - { - CvScalar s; - - ptr->idx = (int*) (ptr->F + m); - ptr->count = idxnum; - for( i = 0; i < ptr->count; i++ ) - { - cvRawDataToScalar( idxdata + i*idxstep, CV_MAT_TYPE( sampleIdx->type ), &s ); - ptr->idx[i] = (int) s.val[0]; - } - } - - for( i = 0; i < m; i++ ) - { - ptr->F[i] = 0.0F; - } - - icvResponsesAndWeightsLB( ptr->count, wdata, wstep, ydata, ystep, - (uchar*) ptr->F, sizeof( *ptr->F ), - traindata, trainstep, ptr->idx ); - - return ptr; -} - -static -float icvBoostNextWeakClassifierLB( CvMat* weakEvalVals, - CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* weights, - CvBoostTrainer* trainer ) -{ - uchar* evaldata; - int evalstep; - int m; - uchar* ydata; - int ystep; - int ynum; - uchar* traindata; - int trainstep; - int trainnum; - uchar* wdata; - int wstep; - int wnum; - int i, idx; - - assert( weakEvalVals != NULL ); - assert( CV_MAT_TYPE( weakEvalVals->type ) == CV_32FC1 ); - assert( trainClasses != NULL ); - assert( CV_MAT_TYPE( trainClasses->type ) == CV_32FC1 ); - assert( weakTrainVals != NULL ); - assert( CV_MAT_TYPE( weakTrainVals->type ) == CV_32FC1 ); - assert( weights != NULL ); - assert( CV_MAT_TYPE( weights ->type ) == CV_32FC1 ); - - CV_MAT2VEC( *weakEvalVals, evaldata, evalstep, m ); - CV_MAT2VEC( *trainClasses, ydata, ystep, ynum ); - CV_MAT2VEC( *weakTrainVals, traindata, trainstep, trainnum ); - CV_MAT2VEC( *weights, wdata, wstep, wnum ); - - CV_Assert( m == ynum ); - CV_Assert( m == wnum ); - CV_Assert( m == trainnum ); - //assert( m == trainer->count ); - - for( i = 0; i < trainer->count; i++ ) - { - idx = (trainer->idx) ? trainer->idx[i] : i; - - trainer->F[idx] += *((float*) (evaldata + idx * evalstep)); - } - - icvResponsesAndWeightsLB( trainer->count, wdata, wstep, ydata, ystep, - (uchar*) trainer->F, sizeof( *trainer->F ), - traindata, trainstep, trainer->idx ); - - return 1.0F; -} - -/* - * - * Gentle AdaBoost - * - */ -static -float icvBoostNextWeakClassifierGAB( CvMat* weakEvalVals, - CvMat* trainClasses, - CvMat* /*weakTrainVals*/, - CvMat* weights, - CvBoostTrainer* trainer ) -{ - uchar* evaldata; - int evalstep; - int m; - uchar* ydata; - int ystep; - int ynum; - uchar* wdata; - int wstep; - int wnum; - - int i, idx; - float sumw; - - CV_Assert( weakEvalVals != NULL ); - CV_Assert( CV_MAT_TYPE( weakEvalVals->type ) == CV_32FC1 ); - CV_Assert( trainClasses != NULL ); - CV_Assert( CV_MAT_TYPE( trainClasses->type ) == CV_32FC1 ); - CV_Assert( weights != NULL ); - CV_Assert( CV_MAT_TYPE( weights->type ) == CV_32FC1 ); - - CV_MAT2VEC( *weakEvalVals, evaldata, evalstep, m ); - CV_MAT2VEC( *trainClasses, ydata, ystep, ynum ); - CV_MAT2VEC( *weights, wdata, wstep, wnum ); - - CV_Assert( m == ynum ); - CV_Assert( m == wnum ); - - sumw = 0.0F; - for( i = 0; i < trainer->count; i++ ) - { - idx = (trainer->idx) ? trainer->idx[i] : i; - - *((float*) (wdata + idx*wstep)) *= - expf( -(*((float*) (evaldata + idx*evalstep))) - * ( 2.0F * (*((float*) (ydata + idx*ystep))) - 1.0F ) ); - sumw += *((float*) (wdata + idx*wstep)); - } - - for( i = 0; i < trainer->count; i++ ) - { - idx = (trainer->idx) ? trainer->idx[i] : i; - - *((float*) (wdata + idx*wstep)) /= sumw; - } - - return 1.0F; -} - -typedef CvBoostTrainer* (*CvBoostStartTraining)( CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* weights, - CvMat* sampleIdx, - CvBoostType type ); - -typedef float (*CvBoostNextWeakClassifier)( CvMat* weakEvalVals, - CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* weights, - CvBoostTrainer* data ); - -CvBoostStartTraining startTraining[4] = { - icvBoostStartTraining, - icvBoostStartTraining, - icvBoostStartTrainingLB, - icvBoostStartTraining - }; - -CvBoostNextWeakClassifier nextWeakClassifier[4] = { - icvBoostNextWeakClassifierDAB, - icvBoostNextWeakClassifierRAB, - icvBoostNextWeakClassifierLB, - icvBoostNextWeakClassifierGAB - }; - -/* - * - * Dispatchers - * - */ -CV_BOOST_IMPL -CvBoostTrainer* cvBoostStartTraining( CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* weights, - CvMat* sampleIdx, - CvBoostType type ) -{ - return startTraining[type]( trainClasses, weakTrainVals, weights, sampleIdx, type ); -} - -CV_BOOST_IMPL -void cvBoostEndTraining( CvBoostTrainer** trainer ) -{ - cvFree( trainer ); - *trainer = NULL; -} - -CV_BOOST_IMPL -float cvBoostNextWeakClassifier( CvMat* weakEvalVals, - CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* weights, - CvBoostTrainer* trainer ) -{ - return nextWeakClassifier[trainer->type]( weakEvalVals, trainClasses, - weakTrainVals, weights, trainer ); -} - -/****************************************************************************************\ -* Boosted tree models * -\****************************************************************************************/ - -typedef struct CvBtTrainer -{ - /* {{ external */ - CvMat* trainData; - int flags; - - CvMat* trainClasses; - int m; - uchar* ydata; - int ystep; - - CvMat* sampleIdx; - int numsamples; - - float param[2]; - CvBoostType type; - int numclasses; - /* }} external */ - - CvMTStumpTrainParams stumpParams; - CvCARTTrainParams cartParams; - - float* f; /* F_(m-1) */ - CvMat* y; /* yhat */ - CvMat* weights; - CvBoostTrainer* boosttrainer; -} CvBtTrainer; - -/* - * cvBtStart, cvBtNext, cvBtEnd - * - * These functions perform iterative training of - * 2-class (CV_DABCLASS - CV_GABCLASS, CV_L2CLASS), K-class (CV_LKCLASS) classifier - * or fit regression model (CV_LSREG, CV_LADREG, CV_MREG) - * using decision tree as a weak classifier. - */ - -typedef void (*CvZeroApproxFunc)( float* approx, CvBtTrainer* trainer ); - -/* Mean zero approximation */ -static void icvZeroApproxMean( float* approx, CvBtTrainer* trainer ) -{ - int i; - int idx; - - approx[0] = 0.0F; - for( i = 0; i < trainer->numsamples; i++ ) - { - idx = icvGetIdxAt( trainer->sampleIdx, i ); - approx[0] += *((float*) (trainer->ydata + idx * trainer->ystep)); - } - approx[0] /= (float) trainer->numsamples; -} - -/* - * Median zero approximation - */ -static void icvZeroApproxMed( float* approx, CvBtTrainer* trainer ) -{ - int i; - int idx; - - for( i = 0; i < trainer->numsamples; i++ ) - { - idx = icvGetIdxAt( trainer->sampleIdx, i ); - trainer->f[i] = *((float*) (trainer->ydata + idx * trainer->ystep)); - } - - std::sort(trainer->f, trainer->f + trainer->numsamples); - approx[0] = trainer->f[trainer->numsamples / 2]; -} - -/* - * 0.5 * log( mean(y) / (1 - mean(y)) ) where y in {0, 1} - */ -static void icvZeroApproxLog( float* approx, CvBtTrainer* trainer ) -{ - float y_mean; - - icvZeroApproxMean( &y_mean, trainer ); - approx[0] = 0.5F * cvLogRatio( y_mean ); -} - -/* - * 0 zero approximation - */ -static void icvZeroApprox0( float* approx, CvBtTrainer* trainer ) -{ - int i; - - for( i = 0; i < trainer->numclasses; i++ ) - { - approx[i] = 0.0F; - } -} - -static CvZeroApproxFunc icvZeroApproxFunc[] = -{ - icvZeroApprox0, /* CV_DABCLASS */ - icvZeroApprox0, /* CV_RABCLASS */ - icvZeroApprox0, /* CV_LBCLASS */ - icvZeroApprox0, /* CV_GABCLASS */ - icvZeroApproxLog, /* CV_L2CLASS */ - icvZeroApprox0, /* CV_LKCLASS */ - icvZeroApproxMean, /* CV_LSREG */ - icvZeroApproxMed, /* CV_LADREG */ - icvZeroApproxMed, /* CV_MREG */ -}; - -CV_BOOST_IMPL -void cvBtNext( CvCARTClassifier** trees, CvBtTrainer* trainer ); - -static -CvBtTrainer* cvBtStart( CvCARTClassifier** trees, - CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* sampleIdx, - int numsplits, - CvBoostType type, - int numclasses, - float* param ) -{ - CvBtTrainer* ptr = 0; - - CV_FUNCNAME( "cvBtStart" ); - - __BEGIN__; - - size_t data_size; - float* zero_approx; - int m; - int i, j; - - if( trees == NULL ) - { - CV_ERROR( CV_StsNullPtr, "Invalid trees parameter" ); - } - - if( type < CV_DABCLASS || type > CV_MREG ) - { - CV_ERROR( CV_StsUnsupportedFormat, "Unsupported type parameter" ); - } - if( type == CV_LKCLASS ) - { - CV_ASSERT( numclasses >= 2 ); - } - else - { - numclasses = 1; - } - - m = MAX( trainClasses->rows, trainClasses->cols ); - ptr = NULL; - data_size = sizeof( *ptr ); - if( type > CV_GABCLASS ) - { - data_size += m * numclasses * sizeof( *(ptr->f) ); - } - CV_CALL( ptr = (CvBtTrainer*) cvAlloc( data_size ) ); - memset( ptr, 0, data_size ); - ptr->f = (float*) (ptr + 1); - - ptr->trainData = trainData; - ptr->flags = flags; - ptr->trainClasses = trainClasses; - CV_MAT2VEC( *trainClasses, ptr->ydata, ptr->ystep, ptr->m ); - - memset( &(ptr->cartParams), 0, sizeof( ptr->cartParams ) ); - memset( &(ptr->stumpParams), 0, sizeof( ptr->stumpParams ) ); - - switch( type ) - { - case CV_DABCLASS: - ptr->stumpParams.error = CV_MISCLASSIFICATION; - ptr->stumpParams.type = CV_CLASSIFICATION_CLASS; - break; - case CV_RABCLASS: - ptr->stumpParams.error = CV_GINI; - ptr->stumpParams.type = CV_CLASSIFICATION; - break; - default: - ptr->stumpParams.error = CV_SQUARE; - ptr->stumpParams.type = CV_REGRESSION; - } - ptr->cartParams.count = numsplits; - ptr->cartParams.stumpTrainParams = (CvClassifierTrainParams*) &(ptr->stumpParams); - ptr->cartParams.stumpConstructor = cvCreateMTStumpClassifier; - - ptr->param[0] = param[0]; - ptr->param[1] = param[1]; - ptr->type = type; - ptr->numclasses = numclasses; - - CV_CALL( ptr->y = cvCreateMat( 1, m, CV_32FC1 ) ); - ptr->sampleIdx = sampleIdx; - ptr->numsamples = ( sampleIdx == NULL ) ? ptr->m - : MAX( sampleIdx->rows, sampleIdx->cols ); - - ptr->weights = cvCreateMat( 1, m, CV_32FC1 ); - cvSet( ptr->weights, cvScalar( 1.0 ) ); - - if( type <= CV_GABCLASS ) - { - ptr->boosttrainer = cvBoostStartTraining( ptr->trainClasses, ptr->y, - ptr->weights, NULL, type ); - - CV_CALL( cvBtNext( trees, ptr ) ); - } - else - { - data_size = sizeof( *zero_approx ) * numclasses; - CV_CALL( zero_approx = (float*) cvAlloc( data_size ) ); - icvZeroApproxFunc[type]( zero_approx, ptr ); - for( i = 0; i < m; i++ ) - { - for( j = 0; j < numclasses; j++ ) - { - ptr->f[i * numclasses + j] = zero_approx[j]; - } - } - - CV_CALL( cvBtNext( trees, ptr ) ); - - for( i = 0; i < numclasses; i++ ) - { - for( j = 0; j <= trees[i]->count; j++ ) - { - trees[i]->val[j] += zero_approx[i]; - } - } - CV_CALL( cvFree( &zero_approx ) ); - } - - __END__; - - return ptr; -} - -static void icvBtNext_LSREG( CvCARTClassifier** trees, CvBtTrainer* trainer ) -{ - int i; - - /* yhat_i = y_i - F_(m-1)(x_i) */ - for( i = 0; i < trainer->m; i++ ) - { - trainer->y->data.fl[i] = - *((float*) (trainer->ydata + i * trainer->ystep)) - trainer->f[i]; - } - - trees[0] = (CvCARTClassifier*) cvCreateCARTClassifier( trainer->trainData, - trainer->flags, - trainer->y, NULL, NULL, NULL, trainer->sampleIdx, trainer->weights, - (CvClassifierTrainParams*) &trainer->cartParams ); -} - - -static void icvBtNext_LADREG( CvCARTClassifier** trees, CvBtTrainer* trainer ) -{ - CvCARTClassifier* ptr; - int i, j; - CvMat sample; - int sample_step; - uchar* sample_data; - int index; - - int data_size; - int* idx; - float* resp; - int respnum; - float val; - - data_size = trainer->m * sizeof( *idx ); - idx = (int*) cvAlloc( data_size ); - data_size = trainer->m * sizeof( *resp ); - resp = (float*) cvAlloc( data_size ); - - /* yhat_i = sign(y_i - F_(m-1)(x_i)) */ - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - trainer->y->data.fl[index] = (float) - CV_SIGN( *((float*) (trainer->ydata + index * trainer->ystep)) - - trainer->f[index] ); - } - - ptr = (CvCARTClassifier*) cvCreateCARTClassifier( trainer->trainData, trainer->flags, - trainer->y, NULL, NULL, NULL, trainer->sampleIdx, trainer->weights, - (CvClassifierTrainParams*) &trainer->cartParams ); - - CV_GET_SAMPLE( *trainer->trainData, trainer->flags, 0, sample ); - CV_GET_SAMPLE_STEP( *trainer->trainData, trainer->flags, sample_step ); - sample_data = sample.data.ptr; - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - sample.data.ptr = sample_data + index * sample_step; - idx[index] = (int) cvEvalCARTClassifierIdx( (CvClassifier*) ptr, &sample ); - } - for( j = 0; j <= ptr->count; j++ ) - { - respnum = 0; - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - if( idx[index] == j ) - { - resp[respnum++] = *((float*) (trainer->ydata + index * trainer->ystep)) - - trainer->f[index]; - } - } - if( respnum > 0 ) - { - std::sort(resp, resp + respnum); - val = resp[respnum / 2]; - } - else - { - val = 0.0F; - } - ptr->val[j] = val; - } - - cvFree( &idx ); - cvFree( &resp ); - - trees[0] = ptr; -} - - -static void icvBtNext_MREG( CvCARTClassifier** trees, CvBtTrainer* trainer ) -{ - CvCARTClassifier* ptr; - int i, j; - CvMat sample; - int sample_step; - uchar* sample_data; - - int data_size; - int* idx; - float* resid; - float* resp; - int respnum; - float rhat; - float val; - float delta; - int index; - - data_size = trainer->m * sizeof( *idx ); - idx = (int*) cvAlloc( data_size ); - data_size = trainer->m * sizeof( *resp ); - resp = (float*) cvAlloc( data_size ); - data_size = trainer->m * sizeof( *resid ); - resid = (float*) cvAlloc( data_size ); - - /* resid_i = (y_i - F_(m-1)(x_i)) */ - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - resid[index] = *((float*) (trainer->ydata + index * trainer->ystep)) - - trainer->f[index]; - /* for delta */ - resp[i] = (float) fabs( resid[index] ); - } - - /* delta = quantile_alpha{abs(resid_i)} */ - std::sort(resp, resp + trainer->numsamples); - delta = resp[(int)(trainer->param[1] * (trainer->numsamples - 1))]; - - /* yhat_i */ - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - trainer->y->data.fl[index] = MIN( delta, ((float) fabs( resid[index] )) ) * - CV_SIGN( resid[index] ); - } - - ptr = (CvCARTClassifier*) cvCreateCARTClassifier( trainer->trainData, trainer->flags, - trainer->y, NULL, NULL, NULL, trainer->sampleIdx, trainer->weights, - (CvClassifierTrainParams*) &trainer->cartParams ); - - CV_GET_SAMPLE( *trainer->trainData, trainer->flags, 0, sample ); - CV_GET_SAMPLE_STEP( *trainer->trainData, trainer->flags, sample_step ); - sample_data = sample.data.ptr; - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - sample.data.ptr = sample_data + index * sample_step; - idx[index] = (int) cvEvalCARTClassifierIdx( (CvClassifier*) ptr, &sample ); - } - for( j = 0; j <= ptr->count; j++ ) - { - respnum = 0; - - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - if( idx[index] == j ) - { - resp[respnum++] = *((float*) (trainer->ydata + index * trainer->ystep)) - - trainer->f[index]; - } - } - if( respnum > 0 ) - { - /* rhat = median(y_i - F_(m-1)(x_i)) */ - std::sort(resp, resp + respnum); - rhat = resp[respnum / 2]; - - /* val = sum{sign(r_i - rhat_i) * min(delta, abs(r_i - rhat_i)} - * r_i = y_i - F_(m-1)(x_i) - */ - val = 0.0F; - for( i = 0; i < respnum; i++ ) - { - val += CV_SIGN( resp[i] - rhat ) - * MIN( delta, (float) fabs( resp[i] - rhat ) ); - } - - val = rhat + val / (float) respnum; - } - else - { - val = 0.0F; - } - - ptr->val[j] = val; - - } - - cvFree( &resid ); - cvFree( &resp ); - cvFree( &idx ); - - trees[0] = ptr; -} - -//#define CV_VAL_MAX 1e304 - -//#define CV_LOG_VAL_MAX 700.0 - -#define CV_VAL_MAX 1e+8 - -#define CV_LOG_VAL_MAX 18.0 - -static void icvBtNext_L2CLASS( CvCARTClassifier** trees, CvBtTrainer* trainer ) -{ - CvCARTClassifier* ptr; - int i, j; - CvMat sample; - int sample_step; - uchar* sample_data; - - int data_size; - int* idx; - int respnum; - float val; - double val_f; - - float sum_weights; - float* weights; - float* sorted_weights; - CvMat* trimmed_idx; - CvMat* sample_idx; - int index; - int trimmed_num; - - data_size = trainer->m * sizeof( *idx ); - idx = (int*) cvAlloc( data_size ); - - data_size = trainer->m * sizeof( *weights ); - weights = (float*) cvAlloc( data_size ); - data_size = trainer->m * sizeof( *sorted_weights ); - sorted_weights = (float*) cvAlloc( data_size ); - - /* yhat_i = (4 * y_i - 2) / ( 1 + exp( (4 * y_i - 2) * F_(m-1)(x_i) ) ). - * y_i in {0, 1} - */ - sum_weights = 0.0F; - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - val = 4.0F * (*((float*) (trainer->ydata + index * trainer->ystep))) - 2.0F; - val_f = val * trainer->f[index]; - val_f = ( val_f < CV_LOG_VAL_MAX ) ? exp( val_f ) : CV_LOG_VAL_MAX; - val = (float) ( (double) val / ( 1.0 + val_f ) ); - trainer->y->data.fl[index] = val; - val = (float) fabs( val ); - weights[index] = val * (2.0F - val); - sorted_weights[i] = weights[index]; - sum_weights += sorted_weights[i]; - } - - trimmed_idx = NULL; - sample_idx = trainer->sampleIdx; - trimmed_num = trainer->numsamples; - if( trainer->param[1] < 1.0F ) - { - /* perform weight trimming */ - - float threshold; - int count; - - std::sort(sorted_weights, sorted_weights + trainer->numsamples); - - sum_weights *= (1.0F - trainer->param[1]); - - i = -1; - do { sum_weights -= sorted_weights[++i]; } - while( sum_weights > 0.0F && i < (trainer->numsamples - 1) ); - - threshold = sorted_weights[i]; - - while( i > 0 && sorted_weights[i-1] == threshold ) i--; - - if( i > 0 ) - { - trimmed_num = trainer->numsamples - i; - trimmed_idx = cvCreateMat( 1, trimmed_num, CV_32FC1 ); - count = 0; - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - if( weights[index] >= threshold ) - { - CV_MAT_ELEM( *trimmed_idx, float, 0, count ) = (float) index; - count++; - } - } - - assert( count == trimmed_num ); - - sample_idx = trimmed_idx; - - printf( "Used samples %%: %g\n", - (float) trimmed_num / (float) trainer->numsamples * 100.0F ); - } - } - - ptr = (CvCARTClassifier*) cvCreateCARTClassifier( trainer->trainData, trainer->flags, - trainer->y, NULL, NULL, NULL, sample_idx, trainer->weights, - (CvClassifierTrainParams*) &trainer->cartParams ); - - CV_GET_SAMPLE( *trainer->trainData, trainer->flags, 0, sample ); - CV_GET_SAMPLE_STEP( *trainer->trainData, trainer->flags, sample_step ); - sample_data = sample.data.ptr; - for( i = 0; i < trimmed_num; i++ ) - { - index = icvGetIdxAt( sample_idx, i ); - sample.data.ptr = sample_data + index * sample_step; - idx[index] = (int) cvEvalCARTClassifierIdx( (CvClassifier*) ptr, &sample ); - } - for( j = 0; j <= ptr->count; j++ ) - { - respnum = 0; - val = 0.0F; - sum_weights = 0.0F; - for( i = 0; i < trimmed_num; i++ ) - { - index = icvGetIdxAt( sample_idx, i ); - if( idx[index] == j ) - { - val += trainer->y->data.fl[index]; - sum_weights += weights[index]; - respnum++; - } - } - if( sum_weights > 0.0F ) - { - val /= sum_weights; - } - else - { - val = 0.0F; - } - ptr->val[j] = val; - } - - if( trimmed_idx != NULL ) cvReleaseMat( &trimmed_idx ); - cvFree( &sorted_weights ); - cvFree( &weights ); - cvFree( &idx ); - - trees[0] = ptr; -} - -static void icvBtNext_LKCLASS( CvCARTClassifier** trees, CvBtTrainer* trainer ) -{ - int i, j, k, kk, num; - CvMat sample; - int sample_step; - uchar* sample_data; - - int data_size; - int* idx; - int respnum; - float val; - - float sum_weights; - float* weights; - float* sorted_weights; - CvMat* trimmed_idx; - CvMat* sample_idx; - int index; - int trimmed_num; - double sum_exp_f; - double exp_f; - double f_k; - - data_size = trainer->m * sizeof( *idx ); - idx = (int*) cvAlloc( data_size ); - data_size = trainer->m * sizeof( *weights ); - weights = (float*) cvAlloc( data_size ); - data_size = trainer->m * sizeof( *sorted_weights ); - sorted_weights = (float*) cvAlloc( data_size ); - trimmed_idx = cvCreateMat( 1, trainer->numsamples, CV_32FC1 ); - - for( k = 0; k < trainer->numclasses; k++ ) - { - /* yhat_i = y_i - p_k(x_i), y_i in {0, 1} */ - /* p_k(x_i) = exp(f_k(x_i)) / (sum_exp_f(x_i)) */ - sum_weights = 0.0F; - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - /* p_k(x_i) = 1 / (1 + sum(exp(f_kk(x_i) - f_k(x_i)))), kk != k */ - num = index * trainer->numclasses; - f_k = (double) trainer->f[num + k]; - sum_exp_f = 1.0; - for( kk = 0; kk < trainer->numclasses; kk++ ) - { - if( kk == k ) continue; - exp_f = (double) trainer->f[num + kk] - f_k; - exp_f = (exp_f < CV_LOG_VAL_MAX) ? exp( exp_f ) : CV_VAL_MAX; - if( exp_f == CV_VAL_MAX || exp_f >= (CV_VAL_MAX - sum_exp_f) ) - { - sum_exp_f = CV_VAL_MAX; - break; - } - sum_exp_f += exp_f; - } - - val = (float) ( (*((float*) (trainer->ydata + index * trainer->ystep))) - == (float) k ); - val -= (float) ( (sum_exp_f == CV_VAL_MAX) ? 0.0 : ( 1.0 / sum_exp_f ) ); - - assert( val >= -1.0F ); - assert( val <= 1.0F ); - - trainer->y->data.fl[index] = val; - val = (float) fabs( val ); - weights[index] = val * (1.0F - val); - sorted_weights[i] = weights[index]; - sum_weights += sorted_weights[i]; - } - - sample_idx = trainer->sampleIdx; - trimmed_num = trainer->numsamples; - if( trainer->param[1] < 1.0F ) - { - /* perform weight trimming */ - - float threshold; - int count; - - std::sort(sorted_weights, sorted_weights + trainer->numsamples); - - sum_weights *= (1.0F - trainer->param[1]); - - i = -1; - do { sum_weights -= sorted_weights[++i]; } - while( sum_weights > 0.0F && i < (trainer->numsamples - 1) ); - - threshold = sorted_weights[i]; - - while( i > 0 && sorted_weights[i-1] == threshold ) i--; - - if( i > 0 ) - { - trimmed_num = trainer->numsamples - i; - trimmed_idx->cols = trimmed_num; - count = 0; - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - if( weights[index] >= threshold ) - { - CV_MAT_ELEM( *trimmed_idx, float, 0, count ) = (float) index; - count++; - } - } - - assert( count == trimmed_num ); - - sample_idx = trimmed_idx; - - printf( "k: %d Used samples %%: %g\n", k, - (float) trimmed_num / (float) trainer->numsamples * 100.0F ); - } - } /* weight trimming */ - - trees[k] = (CvCARTClassifier*) cvCreateCARTClassifier( trainer->trainData, - trainer->flags, trainer->y, NULL, NULL, NULL, sample_idx, trainer->weights, - (CvClassifierTrainParams*) &trainer->cartParams ); - - CV_GET_SAMPLE( *trainer->trainData, trainer->flags, 0, sample ); - CV_GET_SAMPLE_STEP( *trainer->trainData, trainer->flags, sample_step ); - sample_data = sample.data.ptr; - for( i = 0; i < trimmed_num; i++ ) - { - index = icvGetIdxAt( sample_idx, i ); - sample.data.ptr = sample_data + index * sample_step; - idx[index] = (int) cvEvalCARTClassifierIdx( (CvClassifier*) trees[k], - &sample ); - } - for( j = 0; j <= trees[k]->count; j++ ) - { - respnum = 0; - val = 0.0F; - sum_weights = 0.0F; - for( i = 0; i < trimmed_num; i++ ) - { - index = icvGetIdxAt( sample_idx, i ); - if( idx[index] == j ) - { - val += trainer->y->data.fl[index]; - sum_weights += weights[index]; - respnum++; - } - } - if( sum_weights > 0.0F ) - { - val = ((float) (trainer->numclasses - 1)) * val / - ((float) (trainer->numclasses)) / sum_weights; - } - else - { - val = 0.0F; - } - trees[k]->val[j] = val; - } - } /* for each class */ - - cvReleaseMat( &trimmed_idx ); - cvFree( &sorted_weights ); - cvFree( &weights ); - cvFree( &idx ); -} - - -static void icvBtNext_XXBCLASS( CvCARTClassifier** trees, CvBtTrainer* trainer ) -{ - float alpha; - int i; - CvMat* weak_eval_vals; - CvMat* sample_idx; - int num_samples; - CvMat sample; - uchar* sample_data; - int sample_step; - - weak_eval_vals = cvCreateMat( 1, trainer->m, CV_32FC1 ); - - sample_idx = cvTrimWeights( trainer->weights, trainer->sampleIdx, - trainer->param[1] ); - num_samples = ( sample_idx == NULL ) - ? trainer->m : MAX( sample_idx->rows, sample_idx->cols ); - - printf( "Used samples %%: %g\n", - (float) num_samples / (float) trainer->numsamples * 100.0F ); - - trees[0] = (CvCARTClassifier*) cvCreateCARTClassifier( trainer->trainData, - trainer->flags, trainer->y, NULL, NULL, NULL, - sample_idx, trainer->weights, - (CvClassifierTrainParams*) &trainer->cartParams ); - - /* evaluate samples */ - CV_GET_SAMPLE( *trainer->trainData, trainer->flags, 0, sample ); - CV_GET_SAMPLE_STEP( *trainer->trainData, trainer->flags, sample_step ); - sample_data = sample.data.ptr; - - for( i = 0; i < trainer->m; i++ ) - { - sample.data.ptr = sample_data + i * sample_step; - weak_eval_vals->data.fl[i] = trees[0]->eval( (CvClassifier*) trees[0], &sample ); - } - - alpha = cvBoostNextWeakClassifier( weak_eval_vals, trainer->trainClasses, - trainer->y, trainer->weights, trainer->boosttrainer ); - - /* multiply tree by alpha */ - for( i = 0; i <= trees[0]->count; i++ ) - { - trees[0]->val[i] *= alpha; - } - if( trainer->type == CV_RABCLASS ) - { - for( i = 0; i <= trees[0]->count; i++ ) - { - trees[0]->val[i] = cvLogRatio( trees[0]->val[i] ); - } - } - - if( sample_idx != NULL && sample_idx != trainer->sampleIdx ) - { - cvReleaseMat( &sample_idx ); - } - cvReleaseMat( &weak_eval_vals ); -} - -typedef void (*CvBtNextFunc)( CvCARTClassifier** trees, CvBtTrainer* trainer ); - -static CvBtNextFunc icvBtNextFunc[] = -{ - icvBtNext_XXBCLASS, - icvBtNext_XXBCLASS, - icvBtNext_XXBCLASS, - icvBtNext_XXBCLASS, - icvBtNext_L2CLASS, - icvBtNext_LKCLASS, - icvBtNext_LSREG, - icvBtNext_LADREG, - icvBtNext_MREG -}; - -CV_BOOST_IMPL -void cvBtNext( CvCARTClassifier** trees, CvBtTrainer* trainer ) -{ - int i, j; - int index; - CvMat sample; - int sample_step; - uchar* sample_data; - - icvBtNextFunc[trainer->type]( trees, trainer ); - - /* shrinkage */ - if( trainer->param[0] != 1.0F ) - { - for( j = 0; j < trainer->numclasses; j++ ) - { - for( i = 0; i <= trees[j]->count; i++ ) - { - trees[j]->val[i] *= trainer->param[0]; - } - } - } - - if( trainer->type > CV_GABCLASS ) - { - /* update F_(m-1) */ - CV_GET_SAMPLE( *(trainer->trainData), trainer->flags, 0, sample ); - CV_GET_SAMPLE_STEP( *(trainer->trainData), trainer->flags, sample_step ); - sample_data = sample.data.ptr; - for( i = 0; i < trainer->numsamples; i++ ) - { - index = icvGetIdxAt( trainer->sampleIdx, i ); - sample.data.ptr = sample_data + index * sample_step; - for( j = 0; j < trainer->numclasses; j++ ) - { - trainer->f[index * trainer->numclasses + j] += - trees[j]->eval( (CvClassifier*) (trees[j]), &sample ); - } - } - } -} - -static -void cvBtEnd( CvBtTrainer** trainer ) -{ - CV_FUNCNAME( "cvBtEnd" ); - - __BEGIN__; - - if( trainer == NULL || (*trainer) == NULL ) - { - CV_ERROR( CV_StsNullPtr, "Invalid trainer parameter" ); - } - - if( (*trainer)->y != NULL ) - { - CV_CALL( cvReleaseMat( &((*trainer)->y) ) ); - } - if( (*trainer)->weights != NULL ) - { - CV_CALL( cvReleaseMat( &((*trainer)->weights) ) ); - } - if( (*trainer)->boosttrainer != NULL ) - { - CV_CALL( cvBoostEndTraining( &((*trainer)->boosttrainer) ) ); - } - CV_CALL( cvFree( trainer ) ); - - __END__; -} - -/****************************************************************************************\ -* Boosted tree model as a classifier * -\****************************************************************************************/ - -static -float cvEvalBtClassifier( CvClassifier* classifier, CvMat* sample ) -{ - float val; - - CV_FUNCNAME( "cvEvalBtClassifier" ); - - __BEGIN__; - - int i; - - val = 0.0F; - if( CV_IS_TUNABLE( classifier->flags ) ) - { - CvSeqReader reader; - CvCARTClassifier* tree; - - CV_CALL( cvStartReadSeq( ((CvBtClassifier*) classifier)->seq, &reader ) ); - for( i = 0; i < ((CvBtClassifier*) classifier)->numiter; i++ ) - { - CV_READ_SEQ_ELEM( tree, reader ); - val += tree->eval( (CvClassifier*) tree, sample ); - } - } - else - { - CvCARTClassifier** ptree; - - ptree = ((CvBtClassifier*) classifier)->trees; - for( i = 0; i < ((CvBtClassifier*) classifier)->numiter; i++ ) - { - val += (*ptree)->eval( (CvClassifier*) (*ptree), sample ); - ptree++; - } - } - - __END__; - - return val; -} - -static -float cvEvalBtClassifier2( CvClassifier* classifier, CvMat* sample ) -{ - float val; - - CV_FUNCNAME( "cvEvalBtClassifier2" ); - - __BEGIN__; - - CV_CALL( val = cvEvalBtClassifier( classifier, sample ) ); - - __END__; - - return (float) (val >= 0.0F); -} - -static -float cvEvalBtClassifierK( CvClassifier* classifier, CvMat* sample ) -{ - int cls = 0; - - CV_FUNCNAME( "cvEvalBtClassifierK" ); - - __BEGIN__; - - int i, k; - float max_val; - int numclasses; - - float* vals; - size_t data_size; - - numclasses = ((CvBtClassifier*) classifier)->numclasses; - data_size = sizeof( *vals ) * numclasses; - CV_CALL( vals = (float*) cvAlloc( data_size ) ); - memset( vals, 0, data_size ); - - if( CV_IS_TUNABLE( classifier->flags ) ) - { - CvSeqReader reader; - CvCARTClassifier* tree; - - CV_CALL( cvStartReadSeq( ((CvBtClassifier*) classifier)->seq, &reader ) ); - for( i = 0; i < ((CvBtClassifier*) classifier)->numiter; i++ ) - { - for( k = 0; k < numclasses; k++ ) - { - CV_READ_SEQ_ELEM( tree, reader ); - vals[k] += tree->eval( (CvClassifier*) tree, sample ); - } - } - - } - else - { - CvCARTClassifier** ptree; - - ptree = ((CvBtClassifier*) classifier)->trees; - for( i = 0; i < ((CvBtClassifier*) classifier)->numiter; i++ ) - { - for( k = 0; k < numclasses; k++ ) - { - vals[k] += (*ptree)->eval( (CvClassifier*) (*ptree), sample ); - ptree++; - } - } - } - - max_val = vals[cls]; - for( k = 1; k < numclasses; k++ ) - { - if( vals[k] > max_val ) - { - max_val = vals[k]; - cls = k; - } - } - - CV_CALL( cvFree( &vals ) ); - - __END__; - - return (float) cls; -} - -typedef float (*CvEvalBtClassifier)( CvClassifier* classifier, CvMat* sample ); - -static CvEvalBtClassifier icvEvalBtClassifier[] = -{ - cvEvalBtClassifier2, - cvEvalBtClassifier2, - cvEvalBtClassifier2, - cvEvalBtClassifier2, - cvEvalBtClassifier2, - cvEvalBtClassifierK, - cvEvalBtClassifier, - cvEvalBtClassifier, - cvEvalBtClassifier -}; - -static -int cvSaveBtClassifier( CvClassifier* classifier, const char* filename ) -{ - CV_FUNCNAME( "cvSaveBtClassifier" ); - - __BEGIN__; - - FILE* file; - int i, j; - CvSeqReader reader; - memset(&reader, 0, sizeof(reader)); - CvCARTClassifier* tree; - - CV_ASSERT( classifier ); - CV_ASSERT( filename ); - - if( !icvMkDir( filename ) || (file = fopen( filename, "w" )) == 0 ) - { - CV_ERROR( CV_StsError, "Unable to create file" ); - } - - if( CV_IS_TUNABLE( classifier->flags ) ) - { - CV_CALL( cvStartReadSeq( ((CvBtClassifier*) classifier)->seq, &reader ) ); - } - fprintf( file, "%d %d\n%d\n%d\n", (int) ((CvBtClassifier*) classifier)->type, - ((CvBtClassifier*) classifier)->numclasses, - ((CvBtClassifier*) classifier)->numfeatures, - ((CvBtClassifier*) classifier)->numiter ); - - for( i = 0; i < ((CvBtClassifier*) classifier)->numclasses * - ((CvBtClassifier*) classifier)->numiter; i++ ) - { - if( CV_IS_TUNABLE( classifier->flags ) ) - { - CV_READ_SEQ_ELEM( tree, reader ); - } - else - { - tree = ((CvBtClassifier*) classifier)->trees[i]; - } - - fprintf( file, "%d\n", tree->count ); - for( j = 0; j < tree->count; j++ ) - { - fprintf( file, "%d %g %d %d\n", tree->compidx[j], - tree->threshold[j], - tree->left[j], - tree->right[j] ); - } - for( j = 0; j <= tree->count; j++ ) - { - fprintf( file, "%g ", tree->val[j] ); - } - fprintf( file, "\n" ); - } - - fclose( file ); - - __END__; - - return 1; -} - - -static -void cvReleaseBtClassifier( CvClassifier** ptr ) -{ - CV_FUNCNAME( "cvReleaseBtClassifier" ); - - __BEGIN__; - - int i; - - if( ptr == NULL || *ptr == NULL ) - { - CV_ERROR( CV_StsNullPtr, "" ); - } - if( CV_IS_TUNABLE( (*ptr)->flags ) ) - { - CvSeqReader reader; - CvCARTClassifier* tree; - - CV_CALL( cvStartReadSeq( ((CvBtClassifier*) *ptr)->seq, &reader ) ); - for( i = 0; i < ((CvBtClassifier*) *ptr)->numclasses * - ((CvBtClassifier*) *ptr)->numiter; i++ ) - { - CV_READ_SEQ_ELEM( tree, reader ); - tree->release( (CvClassifier**) (&tree) ); - } - CV_CALL( cvReleaseMemStorage( &(((CvBtClassifier*) *ptr)->seq->storage) ) ); - } - else - { - CvCARTClassifier** ptree; - - ptree = ((CvBtClassifier*) *ptr)->trees; - for( i = 0; i < ((CvBtClassifier*) *ptr)->numclasses * - ((CvBtClassifier*) *ptr)->numiter; i++ ) - { - (*ptree)->release( (CvClassifier**) ptree ); - ptree++; - } - } - - CV_CALL( cvFree( ptr ) ); - *ptr = NULL; - - __END__; -} - -static void cvTuneBtClassifier( CvClassifier* classifier, CvMat*, int flags, - CvMat*, CvMat* , CvMat*, CvMat*, CvMat* ) -{ - CV_FUNCNAME( "cvTuneBtClassifier" ); - - __BEGIN__; - - size_t data_size; - - if( CV_IS_TUNABLE( flags ) ) - { - if( !CV_IS_TUNABLE( classifier->flags ) ) - { - CV_ERROR( CV_StsUnsupportedFormat, - "Classifier does not support tune function" ); - } - else - { - /* tune classifier */ - CvCARTClassifier** trees; - - printf( "Iteration %d\n", ((CvBtClassifier*) classifier)->numiter + 1 ); - - data_size = sizeof( *trees ) * ((CvBtClassifier*) classifier)->numclasses; - CV_CALL( trees = (CvCARTClassifier**) cvAlloc( data_size ) ); - CV_CALL( cvBtNext( trees, - (CvBtTrainer*) ((CvBtClassifier*) classifier)->trainer ) ); - CV_CALL( cvSeqPushMulti( ((CvBtClassifier*) classifier)->seq, - trees, ((CvBtClassifier*) classifier)->numclasses ) ); - CV_CALL( cvFree( &trees ) ); - ((CvBtClassifier*) classifier)->numiter++; - } - } - else - { - if( CV_IS_TUNABLE( classifier->flags ) ) - { - /* convert */ - void* ptr; - - assert( ((CvBtClassifier*) classifier)->seq->total == - ((CvBtClassifier*) classifier)->numiter * - ((CvBtClassifier*) classifier)->numclasses ); - - data_size = sizeof( ((CvBtClassifier*) classifier)->trees[0] ) * - ((CvBtClassifier*) classifier)->seq->total; - CV_CALL( ptr = cvAlloc( data_size ) ); - CV_CALL( cvCvtSeqToArray( ((CvBtClassifier*) classifier)->seq, ptr ) ); - CV_CALL( cvReleaseMemStorage( - &(((CvBtClassifier*) classifier)->seq->storage) ) ); - ((CvBtClassifier*) classifier)->trees = (CvCARTClassifier**) ptr; - classifier->flags &= ~CV_TUNABLE; - CV_CALL( cvBtEnd( (CvBtTrainer**) - &(((CvBtClassifier*) classifier)->trainer )) ); - ((CvBtClassifier*) classifier)->trainer = NULL; - } - } - - __END__; -} - -static CvBtClassifier* icvAllocBtClassifier( CvBoostType type, int flags, int numclasses, - int numiter ) -{ - CvBtClassifier* ptr; - size_t data_size; - - assert( numclasses >= 1 ); - assert( numiter >= 0 ); - assert( ( numclasses == 1 ) || (type == CV_LKCLASS) ); - - data_size = sizeof( *ptr ); - ptr = (CvBtClassifier*) cvAlloc( data_size ); - memset( ptr, 0, data_size ); - - if( CV_IS_TUNABLE( flags ) ) - { - ptr->seq = cvCreateSeq( 0, sizeof( *(ptr->seq) ), sizeof( *(ptr->trees) ), - cvCreateMemStorage() ); - ptr->numiter = 0; - } - else - { - data_size = numclasses * numiter * sizeof( *(ptr->trees) ); - ptr->trees = (CvCARTClassifier**) cvAlloc( data_size ); - memset( ptr->trees, 0, data_size ); - - ptr->numiter = numiter; - } - - ptr->flags = flags; - ptr->numclasses = numclasses; - ptr->type = type; - - ptr->eval = icvEvalBtClassifier[(int) type]; - ptr->tune = cvTuneBtClassifier; - ptr->save = cvSaveBtClassifier; - ptr->release = cvReleaseBtClassifier; - - return ptr; -} - -CV_BOOST_IMPL -CvClassifier* cvCreateBtClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* typeMask, - CvMat* missedMeasurementsMask, - CvMat* compIdx, - CvMat* sampleIdx, - CvMat* weights, - CvClassifierTrainParams* trainParams ) -{ - CvBtClassifier* ptr = 0; - - CV_FUNCNAME( "cvCreateBtClassifier" ); - - __BEGIN__; - CvBoostType type; - int num_classes; - int num_iter; - int i; - CvCARTClassifier** trees; - size_t data_size; - - CV_ASSERT( trainData != NULL ); - CV_ASSERT( trainClasses != NULL ); - CV_ASSERT( typeMask == NULL ); - CV_ASSERT( missedMeasurementsMask == NULL ); - CV_ASSERT( compIdx == NULL ); - CV_ASSERT( weights == NULL ); - CV_ASSERT( trainParams != NULL ); - - type = ((CvBtClassifierTrainParams*) trainParams)->type; - - if( type >= CV_DABCLASS && type <= CV_GABCLASS && sampleIdx ) - { - CV_ERROR( CV_StsBadArg, "Sample indices are not supported for this type" ); - } - - if( type == CV_LKCLASS ) - { - double min_val; - double max_val; - - cvMinMaxLoc( trainClasses, &min_val, &max_val ); - num_classes = (int) (max_val + 1.0); - - CV_ASSERT( num_classes >= 2 ); - } - else - { - num_classes = 1; - } - num_iter = ((CvBtClassifierTrainParams*) trainParams)->numiter; - - CV_ASSERT( num_iter > 0 ); - - ptr = icvAllocBtClassifier( type, CV_TUNABLE | flags, num_classes, num_iter ); - ptr->numfeatures = (CV_IS_ROW_SAMPLE( flags )) ? trainData->cols : trainData->rows; - - i = 0; - - printf( "Iteration %d\n", 1 ); - - data_size = sizeof( *trees ) * ptr->numclasses; - CV_CALL( trees = (CvCARTClassifier**) cvAlloc( data_size ) ); - - CV_CALL( ptr->trainer = cvBtStart( trees, trainData, flags, trainClasses, sampleIdx, - ((CvBtClassifierTrainParams*) trainParams)->numsplits, type, num_classes, - &(((CvBtClassifierTrainParams*) trainParams)->param[0]) ) ); - - CV_CALL( cvSeqPushMulti( ptr->seq, trees, ptr->numclasses ) ); - CV_CALL( cvFree( &trees ) ); - ptr->numiter++; - - for( i = 1; i < num_iter; i++ ) - { - ptr->tune( (CvClassifier*) ptr, NULL, CV_TUNABLE, NULL, NULL, NULL, NULL, NULL ); - } - if( !CV_IS_TUNABLE( flags ) ) - { - /* convert */ - ptr->tune( (CvClassifier*) ptr, NULL, 0, NULL, NULL, NULL, NULL, NULL ); - } - - __END__; - - return (CvClassifier*) ptr; -} - -CV_BOOST_IMPL -CvClassifier* cvCreateBtClassifierFromFile( const char* filename ) -{ - CvBtClassifier* ptr = 0; - - CV_FUNCNAME( "cvCreateBtClassifierFromFile" ); - - __BEGIN__; - - FILE* file; - int i, j; - int data_size; - int num_classifiers; - int num_features; - int num_classes; - int type; - int values_read = -1; - - CV_ASSERT( filename != NULL ); - - ptr = NULL; - file = fopen( filename, "r" ); - if( !file ) - { - CV_ERROR( CV_StsError, "Unable to open file" ); - } - - values_read = fscanf( file, "%d %d %d %d", &type, &num_classes, &num_features, &num_classifiers ); - CV_Assert(values_read == 4); - - CV_ASSERT( type >= (int) CV_DABCLASS && type <= (int) CV_MREG ); - CV_ASSERT( num_features > 0 ); - CV_ASSERT( num_classifiers > 0 ); - - if( (CvBoostType) type != CV_LKCLASS ) - { - num_classes = 1; - } - ptr = icvAllocBtClassifier( (CvBoostType) type, 0, num_classes, num_classifiers ); - ptr->numfeatures = num_features; - - for( i = 0; i < num_classes * num_classifiers; i++ ) - { - int count; - CvCARTClassifier* tree; - - values_read = fscanf( file, "%d", &count ); - CV_Assert(values_read == 1); - - data_size = sizeof( *tree ) - + count * ( sizeof( *(tree->compidx) ) + sizeof( *(tree->threshold) ) + - sizeof( *(tree->right) ) + sizeof( *(tree->left) ) ) - + (count + 1) * ( sizeof( *(tree->val) ) ); - CV_CALL( tree = (CvCARTClassifier*) cvAlloc( data_size ) ); - memset( tree, 0, data_size ); - tree->eval = cvEvalCARTClassifier; - tree->tune = NULL; - tree->save = NULL; - tree->release = cvReleaseCARTClassifier; - tree->compidx = (int*) ( tree + 1 ); - tree->threshold = (float*) ( tree->compidx + count ); - tree->left = (int*) ( tree->threshold + count ); - tree->right = (int*) ( tree->left + count ); - tree->val = (float*) ( tree->right + count ); - - tree->count = count; - for( j = 0; j < tree->count; j++ ) - { - values_read = fscanf( file, "%d %g %d %d", &(tree->compidx[j]), - &(tree->threshold[j]), - &(tree->left[j]), - &(tree->right[j]) ); - CV_Assert(values_read == 4); - } - for( j = 0; j <= tree->count; j++ ) - { - values_read = fscanf( file, "%g", &(tree->val[j]) ); - CV_Assert(values_read == 1); - } - ptr->trees[i] = tree; - } - - fclose( file ); - - __END__; - - return (CvClassifier*) ptr; -} - -/****************************************************************************************\ -* Utility functions * -\****************************************************************************************/ - -CV_BOOST_IMPL -CvMat* cvTrimWeights( CvMat* weights, CvMat* idx, float factor ) -{ - CvMat* ptr = 0; - - CV_FUNCNAME( "cvTrimWeights" ); - __BEGIN__; - int i, index, num; - float sum_weights; - uchar* wdata; - size_t wstep; - int wnum; - float threshold; - int count; - float* sorted_weights; - - CV_ASSERT( CV_MAT_TYPE( weights->type ) == CV_32FC1 ); - - ptr = idx; - sorted_weights = NULL; - - if( factor > 0.0F && factor < 1.0F ) - { - size_t data_size; - - CV_MAT2VEC( *weights, wdata, wstep, wnum ); - num = ( idx == NULL ) ? wnum : MAX( idx->rows, idx->cols ); - - data_size = num * sizeof( *sorted_weights ); - sorted_weights = (float*) cvAlloc( data_size ); - memset( sorted_weights, 0, data_size ); - - sum_weights = 0.0F; - for( i = 0; i < num; i++ ) - { - index = icvGetIdxAt( idx, i ); - sorted_weights[i] = *((float*) (wdata + index * wstep)); - sum_weights += sorted_weights[i]; - } - - std::sort(sorted_weights, sorted_weights + num); - - sum_weights *= (1.0F - factor); - - i = -1; - do { sum_weights -= sorted_weights[++i]; } - while( sum_weights > 0.0F && i < (num - 1) ); - - threshold = sorted_weights[i]; - - while( i > 0 && sorted_weights[i-1] == threshold ) i--; - - if( i > 0 || ( idx != NULL && CV_MAT_TYPE( idx->type ) != CV_32FC1 ) ) - { - CV_CALL( ptr = cvCreateMat( 1, num - i, CV_32FC1 ) ); - count = 0; - for( i = 0; i < num; i++ ) - { - index = icvGetIdxAt( idx, i ); - if( *((float*) (wdata + index * wstep)) >= threshold ) - { - CV_MAT_ELEM( *ptr, float, 0, count ) = (float) index; - count++; - } - } - - assert( count == ptr->cols ); - } - cvFree( &sorted_weights ); - } - - __END__; - - return ptr; -} - - -CV_BOOST_IMPL -void cvReadTrainData( const char* filename, int flags, - CvMat** trainData, - CvMat** trainClasses ) -{ - - CV_FUNCNAME( "cvReadTrainData" ); - - __BEGIN__; - - FILE* file; - int m, n; - int i, j; - float val; - int values_read = -1; - - if( filename == NULL ) - { - CV_ERROR( CV_StsNullPtr, "filename must be specified" ); - } - if( trainData == NULL ) - { - CV_ERROR( CV_StsNullPtr, "trainData must be not NULL" ); - } - if( trainClasses == NULL ) - { - CV_ERROR( CV_StsNullPtr, "trainClasses must be not NULL" ); - } - - *trainData = NULL; - *trainClasses = NULL; - file = fopen( filename, "r" ); - if( !file ) - { - CV_ERROR( CV_StsError, "Unable to open file" ); - } - - values_read = fscanf( file, "%d %d", &m, &n ); - CV_Assert(values_read == 2); - - if( CV_IS_ROW_SAMPLE( flags ) ) - { - CV_CALL( *trainData = cvCreateMat( m, n, CV_32FC1 ) ); - } - else - { - CV_CALL( *trainData = cvCreateMat( n, m, CV_32FC1 ) ); - } - - CV_CALL( *trainClasses = cvCreateMat( 1, m, CV_32FC1 ) ); - - for( i = 0; i < m; i++ ) - { - for( j = 0; j < n; j++ ) - { - values_read = fscanf( file, "%f", &val ); - CV_Assert(values_read == 1); - if( CV_IS_ROW_SAMPLE( flags ) ) - { - CV_MAT_ELEM( **trainData, float, i, j ) = val; - } - else - { - CV_MAT_ELEM( **trainData, float, j, i ) = val; - } - } - values_read = fscanf( file, "%f", &val ); - CV_Assert(values_read == 2); - CV_MAT_ELEM( **trainClasses, float, 0, i ) = val; - } - - fclose( file ); - - __END__; - -} - -CV_BOOST_IMPL -void cvWriteTrainData( const char* filename, int flags, - CvMat* trainData, CvMat* trainClasses, CvMat* sampleIdx ) -{ - CV_FUNCNAME( "cvWriteTrainData" ); - - __BEGIN__; - - FILE* file; - int m, n; - int i, j; - int clsrow; - int count; - int idx; - CvScalar sc; - - if( filename == NULL ) - { - CV_ERROR( CV_StsNullPtr, "filename must be specified" ); - } - if( trainData == NULL || CV_MAT_TYPE( trainData->type ) != CV_32FC1 ) - { - CV_ERROR( CV_StsUnsupportedFormat, "Invalid trainData" ); - } - if( CV_IS_ROW_SAMPLE( flags ) ) - { - m = trainData->rows; - n = trainData->cols; - } - else - { - n = trainData->rows; - m = trainData->cols; - } - if( trainClasses == NULL || CV_MAT_TYPE( trainClasses->type ) != CV_32FC1 || - MIN( trainClasses->rows, trainClasses->cols ) != 1 ) - { - CV_ERROR( CV_StsUnsupportedFormat, "Invalid trainClasses" ); - } - clsrow = (trainClasses->rows == 1); - if( m != ( (clsrow) ? trainClasses->cols : trainClasses->rows ) ) - { - CV_ERROR( CV_StsUnmatchedSizes, "Incorrect trainData and trainClasses sizes" ); - } - - if( sampleIdx != NULL ) - { - count = (sampleIdx->rows == 1) ? sampleIdx->cols : sampleIdx->rows; - } - else - { - count = m; - } - - - file = fopen( filename, "w" ); - if( !file ) - { - CV_ERROR( CV_StsError, "Unable to create file" ); - } - - fprintf( file, "%d %d\n", count, n ); - - for( i = 0; i < count; i++ ) - { - if( sampleIdx ) - { - if( sampleIdx->rows == 1 ) - { - sc = cvGet2D( sampleIdx, 0, i ); - } - else - { - sc = cvGet2D( sampleIdx, i, 0 ); - } - idx = (int) sc.val[0]; - } - else - { - idx = i; - } - for( j = 0; j < n; j++ ) - { - fprintf( file, "%g ", ( (CV_IS_ROW_SAMPLE( flags )) - ? CV_MAT_ELEM( *trainData, float, idx, j ) - : CV_MAT_ELEM( *trainData, float, j, idx ) ) ); - } - fprintf( file, "%g\n", ( (clsrow) - ? CV_MAT_ELEM( *trainClasses, float, 0, idx ) - : CV_MAT_ELEM( *trainClasses, float, idx, 0 ) ) ); - } - - fclose( file ); - - __END__; -} - - -#define ICV_RAND_SHUFFLE( suffix, type ) \ -static void icvRandShuffle_##suffix( uchar* data, size_t step, int num ) \ -{ \ - time_t seed; \ - type tmp; \ - int i; \ - float rn; \ - \ - time( &seed ); \ - CvRNG state = cvRNG((int)seed); \ - \ - for( i = 0; i < (num-1); i++ ) \ - { \ - rn = ((float) cvRandInt( &state )) / (1.0F + UINT_MAX); \ - CV_SWAP( *((type*)(data + i * step)), \ - *((type*)(data + ( i + (int)( rn * (num - i ) ) )* step)), \ - tmp ); \ - } \ -} - -ICV_RAND_SHUFFLE( 8U, uchar ) - -ICV_RAND_SHUFFLE( 16S, short ) - -ICV_RAND_SHUFFLE( 32S, int ) - -ICV_RAND_SHUFFLE( 32F, float ) - -CV_BOOST_IMPL -void cvRandShuffleVec( CvMat* mat ) -{ - CV_FUNCNAME( "cvRandShuffle" ); - - __BEGIN__; - - uchar* data; - size_t step; - int num; - - if( (mat == NULL) || !CV_IS_MAT( mat ) || MIN( mat->rows, mat->cols ) != 1 ) - { - CV_ERROR( CV_StsUnsupportedFormat, "" ); - } - - CV_MAT2VEC( *mat, data, step, num ); - switch( CV_MAT_TYPE( mat->type ) ) - { - case CV_8UC1: - icvRandShuffle_8U( data, step, num); - break; - case CV_16SC1: - icvRandShuffle_16S( data, step, num); - break; - case CV_32SC1: - icvRandShuffle_32S( data, step, num); - break; - case CV_32FC1: - icvRandShuffle_32F( data, step, num); - break; - default: - CV_ERROR( CV_StsUnsupportedFormat, "" ); - } - - __END__; -} - -/* End of file. */ diff --git a/apps/haartraining/cvclassifier.h b/apps/haartraining/cvclassifier.h deleted file mode 100644 index c1ae7f5..0000000 --- a/apps/haartraining/cvclassifier.h +++ /dev/null @@ -1,729 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * File cvclassifier.h - * - * Classifier types - */ - -#ifndef _CVCLASSIFIER_H_ -#define _CVCLASSIFIER_H_ - -#include -#include "cxcore.h" - -#define CV_BOOST_API - -/* Convert matrix to vector */ -#define CV_MAT2VEC( mat, vdata, vstep, num ) \ - assert( (mat).rows == 1 || (mat).cols == 1 ); \ - (vdata) = ((mat).data.ptr); \ - if( (mat).rows == 1 ) \ - { \ - (vstep) = CV_ELEM_SIZE( (mat).type ); \ - (num) = (mat).cols; \ - } \ - else \ - { \ - (vstep) = (mat).step; \ - (num) = (mat).rows; \ - } - -/* Set up matrix header to be sample of samples matrix */ -#define CV_GET_SAMPLE( trainData, tdflags, num, sample ) \ -if( CV_IS_ROW_SAMPLE( tdflags ) ) \ -{ \ - cvInitMatHeader( &(sample), 1, (trainData).cols, \ - CV_MAT_TYPE( (trainData).type ), \ - ((trainData).data.ptr + (num) * (trainData).step), \ - (trainData).step ); \ -} \ -else \ -{ \ - cvInitMatHeader( &(sample), (trainData).rows, 1, \ - CV_MAT_TYPE( (trainData).type ), \ - ((trainData).data.ptr + (num) * CV_ELEM_SIZE( (trainData).type )), \ - (trainData).step ); \ -} - -#define CV_GET_SAMPLE_STEP( trainData, tdflags, sstep ) \ -(sstep) = ( ( CV_IS_ROW_SAMPLE( tdflags ) ) \ - ? (trainData).step : CV_ELEM_SIZE( (trainData).type ) ); - - -#define CV_LOGRATIO_THRESHOLD 0.00001F - -/* log( val / (1 - val ) ) */ -CV_INLINE float cvLogRatio( float val ); - -CV_INLINE float cvLogRatio( float val ) -{ - float tval; - - tval = MAX(CV_LOGRATIO_THRESHOLD, MIN( 1.0F - CV_LOGRATIO_THRESHOLD, (val) )); - return logf( tval / (1.0F - tval) ); -} - - -/* flags values for classifier consturctor flags parameter */ - -/* each trainData matrix column is a sample */ -#define CV_COL_SAMPLE 0 - -/* each trainData matrix row is a sample */ -#define CV_ROW_SAMPLE 1 - -#ifndef CV_IS_ROW_SAMPLE -# define CV_IS_ROW_SAMPLE( flags ) ( ( flags ) & CV_ROW_SAMPLE ) -#endif - -/* Classifier supports tune function */ -#define CV_TUNABLE (1 << 1) - -#define CV_IS_TUNABLE( flags ) ( (flags) & CV_TUNABLE ) - - -/* classifier fields common to all classifiers */ -#define CV_CLASSIFIER_FIELDS() \ - int flags; \ - float(*eval)( struct CvClassifier*, CvMat* ); \ - void (*tune)( struct CvClassifier*, CvMat*, int flags, CvMat*, CvMat*, CvMat*, \ - CvMat*, CvMat* ); \ - int (*save)( struct CvClassifier*, const char* file_name ); \ - void (*release)( struct CvClassifier** ); - -typedef struct CvClassifier -{ - CV_CLASSIFIER_FIELDS() -} CvClassifier; - -#define CV_CLASSIFIER_TRAIN_PARAM_FIELDS() -typedef struct CvClassifierTrainParams -{ - CV_CLASSIFIER_TRAIN_PARAM_FIELDS() -} CvClassifierTrainParams; - - -/* - Common classifier constructor: - CvClassifier* cvCreateMyClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* typeMask, - CvMat* missedMeasurementsMask CV_DEFAULT(0), - CvCompIdx* compIdx CV_DEFAULT(0), - CvMat* sampleIdx CV_DEFAULT(0), - CvMat* weights CV_DEFAULT(0), - CvClassifierTrainParams* trainParams CV_DEFAULT(0) - ) - - */ - -typedef CvClassifier* (*CvClassifierConstructor)( CvMat*, int, CvMat*, CvMat*, CvMat*, - CvMat*, CvMat*, CvMat*, - CvClassifierTrainParams* ); - -typedef enum CvStumpType -{ - CV_CLASSIFICATION = 0, - CV_CLASSIFICATION_CLASS = 1, - CV_REGRESSION = 2 -} CvStumpType; - -typedef enum CvStumpError -{ - CV_MISCLASSIFICATION = 0, - CV_GINI = 1, - CV_ENTROPY = 2, - CV_SQUARE = 3 -} CvStumpError; - - -typedef struct CvStumpTrainParams -{ - CV_CLASSIFIER_TRAIN_PARAM_FIELDS() - CvStumpType type; - CvStumpError error; -} CvStumpTrainParams; - -typedef struct CvMTStumpTrainParams -{ - CV_CLASSIFIER_TRAIN_PARAM_FIELDS() - CvStumpType type; - CvStumpError error; - int portion; /* number of components calculated in each thread */ - int numcomp; /* total number of components */ - - /* callback which fills with components [first, first+num[ */ - void (*getTrainData)( CvMat* mat, CvMat* sampleIdx, CvMat* compIdx, - int first, int num, void* userdata ); - CvMat* sortedIdx; /* presorted samples indices */ - void* userdata; /* passed to callback */ -} CvMTStumpTrainParams; - -typedef struct CvStumpClassifier -{ - CV_CLASSIFIER_FIELDS() - int compidx; - - float lerror; /* impurity of the right node */ - float rerror; /* impurity of the left node */ - - float threshold; - float left; - float right; -} CvStumpClassifier; - -typedef struct CvCARTTrainParams -{ - CV_CLASSIFIER_TRAIN_PARAM_FIELDS() - /* desired number of internal nodes */ - int count; - CvClassifierTrainParams* stumpTrainParams; - CvClassifierConstructor stumpConstructor; - - /* - * Split sample indices - * on the "left" indices and "right" indices - * according to samples components values and . - * - * NOTE: Matrices and must be allocated using cvCreateMat function - * since they are freed using cvReleaseMat function - * - * If it is NULL then the default implementation which evaluates training - * samples from passed to classifier constructor is used - */ - void (*splitIdx)( int compidx, float threshold, - CvMat* idx, CvMat** left, CvMat** right, - void* userdata ); - void* userdata; -} CvCARTTrainParams; - -typedef struct CvCARTClassifier -{ - CV_CLASSIFIER_FIELDS() - /* number of internal nodes */ - int count; - - /* internal nodes (each array of elements) */ - int* compidx; - float* threshold; - int* left; - int* right; - - /* leaves (array of +1 elements) */ - float* val; -} CvCARTClassifier; - -CV_BOOST_API -void cvGetSortedIndices( CvMat* val, CvMat* idx, int sortcols CV_DEFAULT( 0 ) ); - -CV_BOOST_API -void cvReleaseStumpClassifier( CvClassifier** classifier ); - -CV_BOOST_API -float cvEvalStumpClassifier( CvClassifier* classifier, CvMat* sample ); - -CV_BOOST_API -CvClassifier* cvCreateStumpClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* typeMask, - CvMat* missedMeasurementsMask CV_DEFAULT(0), - CvMat* compIdx CV_DEFAULT(0), - CvMat* sampleIdx CV_DEFAULT(0), - CvMat* weights CV_DEFAULT(0), - CvClassifierTrainParams* trainParams CV_DEFAULT(0) ); - -/* - * cvCreateMTStumpClassifier - * - * Multithreaded stump classifier constructor - * Includes huge train data support through callback function - */ -CV_BOOST_API -CvClassifier* cvCreateMTStumpClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* typeMask, - CvMat* missedMeasurementsMask, - CvMat* compIdx, - CvMat* sampleIdx, - CvMat* weights, - CvClassifierTrainParams* trainParams ); - -/* - * cvCreateCARTClassifier - * - * CART classifier constructor - */ -CV_BOOST_API -CvClassifier* cvCreateCARTClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* typeMask, - CvMat* missedMeasurementsMask, - CvMat* compIdx, - CvMat* sampleIdx, - CvMat* weights, - CvClassifierTrainParams* trainParams ); - -CV_BOOST_API -void cvReleaseCARTClassifier( CvClassifier** classifier ); - -CV_BOOST_API -float cvEvalCARTClassifier( CvClassifier* classifier, CvMat* sample ); - -/****************************************************************************************\ -* Boosting * -\****************************************************************************************/ - -/* - * CvBoostType - * - * The CvBoostType enumeration specifies the boosting type. - * - * Remarks - * Four different boosting variants for 2 class classification problems are supported: - * Discrete AdaBoost, Real AdaBoost, LogitBoost and Gentle AdaBoost. - * The L2 (2 class classification problems) and LK (K class classification problems) - * algorithms are close to LogitBoost but more numerically stable than last one. - * For regression three different loss functions are supported: - * Least square, least absolute deviation and huber loss. - */ -typedef enum CvBoostType -{ - CV_DABCLASS = 0, /* 2 class Discrete AdaBoost */ - CV_RABCLASS = 1, /* 2 class Real AdaBoost */ - CV_LBCLASS = 2, /* 2 class LogitBoost */ - CV_GABCLASS = 3, /* 2 class Gentle AdaBoost */ - CV_L2CLASS = 4, /* classification (2 class problem) */ - CV_LKCLASS = 5, /* classification (K class problem) */ - CV_LSREG = 6, /* least squares regression */ - CV_LADREG = 7, /* least absolute deviation regression */ - CV_MREG = 8 /* M-regression (Huber loss) */ -} CvBoostType; - -/****************************************************************************************\ -* Iterative training functions * -\****************************************************************************************/ - -/* - * CvBoostTrainer - * - * The CvBoostTrainer structure represents internal boosting trainer. - */ -typedef struct CvBoostTrainer CvBoostTrainer; - -/* - * cvBoostStartTraining - * - * The cvBoostStartTraining function starts training process and calculates - * response values and weights for the first weak classifier training. - * - * Parameters - * trainClasses - * Vector of classes of training samples classes. Each element must be 0 or 1 and - * of type CV_32FC1. - * weakTrainVals - * Vector of response values for the first trained weak classifier. - * Must be of type CV_32FC1. - * weights - * Weight vector of training samples for the first trained weak classifier. - * Must be of type CV_32FC1. - * type - * Boosting type. CV_DABCLASS, CV_RABCLASS, CV_LBCLASS, CV_GABCLASS - * types are supported. - * - * Return Values - * The return value is a pointer to internal trainer structure which is used - * to perform next training iterations. - * - * Remarks - * weakTrainVals and weights must be allocated before calling the function - * and of the same size as trainingClasses. Usually weights should be initialized - * with 1.0 value. - * The function calculates response values and weights for the first weak - * classifier training and stores them into weakTrainVals and weights - * respectively. - * Note, the training of the weak classifier using weakTrainVals, weight, - * trainingData is outside of this function. - */ -CV_BOOST_API -CvBoostTrainer* cvBoostStartTraining( CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* weights, - CvMat* sampleIdx, - CvBoostType type ); -/* - * cvBoostNextWeakClassifier - * - * The cvBoostNextWeakClassifier function performs next training - * iteration and caluclates response values and weights for the next weak - * classifier training. - * - * Parameters - * weakEvalVals - * Vector of values obtained by evaluation of each sample with - * the last trained weak classifier (iteration i). Must be of CV_32FC1 type. - * trainClasses - * Vector of classes of training samples. Each element must be 0 or 1, - * and of type CV_32FC1. - * weakTrainVals - * Vector of response values for the next weak classifier training - * (iteration i+1). Must be of type CV_32FC1. - * weights - * Weight vector of training samples for the next weak classifier training - * (iteration i+1). Must be of type CV_32FC1. - * trainer - * A pointer to internal trainer returned by the cvBoostStartTraining - * function call. - * - * Return Values - * The return value is the coefficient for the last trained weak classifier. - * - * Remarks - * weakTrainVals and weights must be exactly the same vectors as used in - * the cvBoostStartTraining function call and should not be modified. - * The function calculates response values and weights for the next weak - * classifier training and stores them into weakTrainVals and weights - * respectively. - * Note, the training of the weak classifier of iteration i+1 using - * weakTrainVals, weight, trainingData is outside of this function. - */ -CV_BOOST_API -float cvBoostNextWeakClassifier( CvMat* weakEvalVals, - CvMat* trainClasses, - CvMat* weakTrainVals, - CvMat* weights, - CvBoostTrainer* trainer ); - -/* - * cvBoostEndTraining - * - * The cvBoostEndTraining function finishes training process and releases - * internally allocated memory. - * - * Parameters - * trainer - * A pointer to a pointer to internal trainer returned by the cvBoostStartTraining - * function call. - */ -CV_BOOST_API -void cvBoostEndTraining( CvBoostTrainer** trainer ); - -/****************************************************************************************\ -* Boosted tree models * -\****************************************************************************************/ - -/* - * CvBtClassifier - * - * The CvBtClassifier structure represents boosted tree model. - * - * Members - * flags - * Flags. If CV_IS_TUNABLE( flags ) != 0 then the model supports tuning. - * eval - * Evaluation function. Returns sample predicted class (0, 1, etc.) - * for classification or predicted value for regression. - * tune - * Tune function. If the model supports tuning then tune call performs - * one more boosting iteration if passed to the function flags parameter - * is CV_TUNABLE otherwise releases internally allocated for tuning memory - * and makes the model untunable. - * NOTE: Since tuning uses the pointers to parameters, - * passed to the cvCreateBtClassifier function, they should not be modified - * or released between tune calls. - * save - * This function stores the model into given file. - * release - * This function releases the model. - * type - * Boosted tree model type. - * numclasses - * Number of classes for CV_LKCLASS type or 1 for all other types. - * numiter - * Number of iterations. Number of weak classifiers is equal to number - * of iterations for all types except CV_LKCLASS. For CV_LKCLASS type - * number of weak classifiers is (numiter * numclasses). - * numfeatures - * Number of features in sample. - * trees - * Stores weak classifiers when the model does not support tuning. - * seq - * Stores weak classifiers when the model supports tuning. - * trainer - * Pointer to internal tuning parameters if the model supports tuning. - */ -typedef struct CvBtClassifier -{ - CV_CLASSIFIER_FIELDS() - - CvBoostType type; - int numclasses; - int numiter; - int numfeatures; - union - { - CvCARTClassifier** trees; - CvSeq* seq; - }; - void* trainer; -} CvBtClassifier; - -/* - * CvBtClassifierTrainParams - * - * The CvBtClassifierTrainParams structure stores training parameters for - * boosted tree model. - * - * Members - * type - * Boosted tree model type. - * numiter - * Desired number of iterations. - * param - * Parameter Model Type Parameter Meaning - * param[0] Any Shrinkage factor - * param[1] CV_MREG alpha. (1-alpha) determines "break-down" point of - * the training procedure, i.e. the fraction of samples - * that can be arbitrary modified without serious - * degrading the quality of the result. - * CV_DABCLASS, Weight trimming factor. - * CV_RABCLASS, - * CV_LBCLASS, - * CV_GABCLASS, - * CV_L2CLASS, - * CV_LKCLASS - * numsplits - * Desired number of splits in each tree. - */ -typedef struct CvBtClassifierTrainParams -{ - CV_CLASSIFIER_TRAIN_PARAM_FIELDS() - - CvBoostType type; - int numiter; - float param[2]; - int numsplits; -} CvBtClassifierTrainParams; - -/* - * cvCreateBtClassifier - * - * The cvCreateBtClassifier function creates boosted tree model. - * - * Parameters - * trainData - * Matrix of feature values. Must have CV_32FC1 type. - * flags - * Determines how samples are stored in trainData. - * One of CV_ROW_SAMPLE or CV_COL_SAMPLE. - * Optionally may be combined with CV_TUNABLE to make tunable model. - * trainClasses - * Vector of responses for regression or classes (0, 1, 2, etc.) for classification. - * typeMask, - * missedMeasurementsMask, - * compIdx - * Not supported. Must be NULL. - * sampleIdx - * Indices of samples used in training. If NULL then all samples are used. - * For CV_DABCLASS, CV_RABCLASS, CV_LBCLASS and CV_GABCLASS must be NULL. - * weights - * Not supported. Must be NULL. - * trainParams - * A pointer to CvBtClassifierTrainParams structure. Training parameters. - * See CvBtClassifierTrainParams description for details. - * - * Return Values - * The return value is a pointer to created boosted tree model of type CvBtClassifier. - * - * Remarks - * The function performs trainParams->numiter training iterations. - * If CV_TUNABLE flag is specified then created model supports tuning. - * In this case additional training iterations may be performed by - * tune function call. - */ -CV_BOOST_API -CvClassifier* cvCreateBtClassifier( CvMat* trainData, - int flags, - CvMat* trainClasses, - CvMat* typeMask, - CvMat* missedMeasurementsMask, - CvMat* compIdx, - CvMat* sampleIdx, - CvMat* weights, - CvClassifierTrainParams* trainParams ); - -/* - * cvCreateBtClassifierFromFile - * - * The cvCreateBtClassifierFromFile function restores previously saved - * boosted tree model from file. - * - * Parameters - * filename - * The name of the file with boosted tree model. - * - * Remarks - * The restored model does not support tuning. - */ -CV_BOOST_API -CvClassifier* cvCreateBtClassifierFromFile( const char* filename ); - -/****************************************************************************************\ -* Utility functions * -\****************************************************************************************/ - -/* - * cvTrimWeights - * - * The cvTrimWeights function performs weight trimming. - * - * Parameters - * weights - * Weights vector. - * idx - * Indices vector of weights that should be considered. - * If it is NULL then all weights are used. - * factor - * Weight trimming factor. Must be in [0, 1] range. - * - * Return Values - * The return value is a vector of indices. If all samples should be used then - * it is equal to idx. In other case the cvReleaseMat function should be called - * to release it. - * - * Remarks - */ -CV_BOOST_API -CvMat* cvTrimWeights( CvMat* weights, CvMat* idx, float factor ); - -/* - * cvReadTrainData - * - * The cvReadTrainData function reads feature values and responses from file. - * - * Parameters - * filename - * The name of the file to be read. - * flags - * One of CV_ROW_SAMPLE or CV_COL_SAMPLE. Determines how feature values - * will be stored. - * trainData - * A pointer to a pointer to created matrix with feature values. - * cvReleaseMat function should be used to destroy created matrix. - * trainClasses - * A pointer to a pointer to created matrix with response values. - * cvReleaseMat function should be used to destroy created matrix. - * - * Remarks - * File format: - * ============================================ - * m n - * value_1_1 value_1_2 ... value_1_n response_1 - * value_2_1 value_2_2 ... value_2_n response_2 - * ... - * value_m_1 value_m_2 ... value_m_n response_m - * ============================================ - * m - * Number of samples - * n - * Number of features in each sample - * value_i_j - * Value of j-th feature of i-th sample - * response_i - * Response value of i-th sample - * For classification problems responses represent classes (0, 1, etc.) - * All values and classes are integer or real numbers. - */ -CV_BOOST_API -void cvReadTrainData( const char* filename, - int flags, - CvMat** trainData, - CvMat** trainClasses ); - - -/* - * cvWriteTrainData - * - * The cvWriteTrainData function stores feature values and responses into file. - * - * Parameters - * filename - * The name of the file. - * flags - * One of CV_ROW_SAMPLE or CV_COL_SAMPLE. Determines how feature values - * are stored. - * trainData - * Feature values matrix. - * trainClasses - * Response values vector. - * sampleIdx - * Vector of idicies of the samples that should be stored. If it is NULL - * then all samples will be stored. - * - * Remarks - * See the cvReadTrainData function for file format description. - */ -CV_BOOST_API -void cvWriteTrainData( const char* filename, - int flags, - CvMat* trainData, - CvMat* trainClasses, - CvMat* sampleIdx ); - -/* - * cvRandShuffle - * - * The cvRandShuffle function perfroms random shuffling of given vector. - * - * Parameters - * vector - * Vector that should be shuffled. - * Must have CV_8UC1, CV_16SC1, CV_32SC1 or CV_32FC1 type. - */ -CV_BOOST_API -void cvRandShuffleVec( CvMat* vector ); - -#endif /* _CVCLASSIFIER_H_ */ diff --git a/apps/haartraining/cvcommon.cpp b/apps/haartraining/cvcommon.cpp deleted file mode 100644 index e23fab2..0000000 --- a/apps/haartraining/cvcommon.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include "_cvcommon.h" - -#include -#include - -#include -#include -#ifdef _WIN32 -#include -#endif /* _WIN32 */ - -int icvMkDir( const char* filename ) -{ - char path[PATH_MAX]; - char* p; - int pos; - -#ifdef _WIN32 - struct _stat st; -#else /* _WIN32 */ - struct stat st; - mode_t mode; - - mode = 0755; -#endif /* _WIN32 */ - - strcpy( path, filename ); - - p = path; - for( ; ; ) - { - pos = (int)strcspn( p, "/\\" ); - - if( pos == (int) strlen( p ) ) break; - if( pos != 0 ) - { - p[pos] = '\0'; - -#ifdef _WIN32 - if( p[pos-1] != ':' ) - { - if( _stat( path, &st ) != 0 ) - { - if( _mkdir( path ) != 0 ) return 0; - } - } -#else /* _WIN32 */ - if( stat( path, &st ) != 0 ) - { - if( mkdir( path, mode ) != 0 ) return 0; - } -#endif /* _WIN32 */ - } - - p[pos] = '/'; - - p += pos + 1; - } - - return 1; -} - -#if 0 -/* debug functions */ -void icvSave( const CvArr* ptr, const char* filename, int line ) -{ - CvFileStorage* fs; - char buf[PATH_MAX]; - const char* name; - - name = strrchr( filename, '\\' ); - if( !name ) name = strrchr( filename, '/' ); - if( !name ) name = filename; - else name++; /* skip '/' or '\\' */ - - sprintf( buf, "%s-%d-%d", name, line, time( NULL ) ); - fs = cvOpenFileStorage( buf, NULL, CV_STORAGE_WRITE_TEXT ); - if( !fs ) return; - cvWrite( fs, "debug", ptr ); - cvReleaseFileStorage( &fs ); -} -#endif // #if 0 - -/* End of file. */ diff --git a/apps/haartraining/cvhaarclassifier.cpp b/apps/haartraining/cvhaarclassifier.cpp deleted file mode 100644 index f217976..0000000 --- a/apps/haartraining/cvhaarclassifier.cpp +++ /dev/null @@ -1,835 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * cvhaarclassifier.cpp - * - * haar classifiers (stump, CART, stage, cascade) - */ - -#include "_cvhaartraining.h" - - -CvIntHaarClassifier* icvCreateCARTHaarClassifier( int count ) -{ - CvCARTHaarClassifier* cart; - size_t datasize; - - datasize = sizeof( *cart ) + - ( sizeof( int ) + - sizeof( CvTHaarFeature ) + sizeof( CvFastHaarFeature ) + - sizeof( float ) + sizeof( int ) + sizeof( int ) ) * count + - sizeof( float ) * (count + 1); - - cart = (CvCARTHaarClassifier*) cvAlloc( datasize ); - memset( cart, 0, datasize ); - - cart->feature = (CvTHaarFeature*) (cart + 1); - cart->fastfeature = (CvFastHaarFeature*) (cart->feature + count); - cart->threshold = (float*) (cart->fastfeature + count); - cart->left = (int*) (cart->threshold + count); - cart->right = (int*) (cart->left + count); - cart->val = (float*) (cart->right + count); - cart->compidx = (int*) (cart->val + count + 1 ); - cart->count = count; - cart->eval = icvEvalCARTHaarClassifier; - cart->save = icvSaveCARTHaarClassifier; - cart->release = icvReleaseHaarClassifier; - - return (CvIntHaarClassifier*) cart; -} - - -void icvReleaseHaarClassifier( CvIntHaarClassifier** classifier ) -{ - cvFree( classifier ); - *classifier = NULL; -} - - -void icvInitCARTHaarClassifier( CvCARTHaarClassifier* carthaar, CvCARTClassifier* cart, - CvIntHaarFeatures* intHaarFeatures ) -{ - int i; - - for( i = 0; i < cart->count; i++ ) - { - carthaar->feature[i] = intHaarFeatures->feature[cart->compidx[i]]; - carthaar->fastfeature[i] = intHaarFeatures->fastfeature[cart->compidx[i]]; - carthaar->threshold[i] = cart->threshold[i]; - carthaar->left[i] = cart->left[i]; - carthaar->right[i] = cart->right[i]; - carthaar->val[i] = cart->val[i]; - carthaar->compidx[i] = cart->compidx[i]; - } - carthaar->count = cart->count; - carthaar->val[cart->count] = cart->val[cart->count]; -} - - -float icvEvalCARTHaarClassifier( CvIntHaarClassifier* classifier, - sum_type* sum, sum_type* tilted, float normfactor ) -{ - int idx = 0; - - do - { - if( cvEvalFastHaarFeature( - ((CvCARTHaarClassifier*) classifier)->fastfeature + idx, sum, tilted ) - < (((CvCARTHaarClassifier*) classifier)->threshold[idx] * normfactor) ) - { - idx = ((CvCARTHaarClassifier*) classifier)->left[idx]; - } - else - { - idx = ((CvCARTHaarClassifier*) classifier)->right[idx]; - } - } while( idx > 0 ); - - return ((CvCARTHaarClassifier*) classifier)->val[-idx]; -} - - -CvIntHaarClassifier* icvCreateStageHaarClassifier( int count, float threshold ) -{ - CvStageHaarClassifier* stage; - size_t datasize; - - datasize = sizeof( *stage ) + sizeof( CvIntHaarClassifier* ) * count; - stage = (CvStageHaarClassifier*) cvAlloc( datasize ); - memset( stage, 0, datasize ); - - stage->count = count; - stage->threshold = threshold; - stage->classifier = (CvIntHaarClassifier**) (stage + 1); - - stage->eval = icvEvalStageHaarClassifier; - stage->save = icvSaveStageHaarClassifier; - stage->release = icvReleaseStageHaarClassifier; - - return (CvIntHaarClassifier*) stage; -} - - -void icvReleaseStageHaarClassifier( CvIntHaarClassifier** classifier ) -{ - int i; - - for( i = 0; i < ((CvStageHaarClassifier*) *classifier)->count; i++ ) - { - if( ((CvStageHaarClassifier*) *classifier)->classifier[i] != NULL ) - { - ((CvStageHaarClassifier*) *classifier)->classifier[i]->release( - &(((CvStageHaarClassifier*) *classifier)->classifier[i]) ); - } - } - - cvFree( classifier ); - *classifier = NULL; -} - - -float icvEvalStageHaarClassifier( CvIntHaarClassifier* classifier, - sum_type* sum, sum_type* tilted, float normfactor ) -{ - int i; - float stage_sum; - - stage_sum = 0.0F; - for( i = 0; i < ((CvStageHaarClassifier*) classifier)->count; i++ ) - { - stage_sum += - ((CvStageHaarClassifier*) classifier)->classifier[i]->eval( - ((CvStageHaarClassifier*) classifier)->classifier[i], - sum, tilted, normfactor ); - } - - return stage_sum; -} - - -CvIntHaarClassifier* icvCreateCascadeHaarClassifier( int count ) -{ - CvCascadeHaarClassifier* ptr; - size_t datasize; - - datasize = sizeof( *ptr ) + sizeof( CvIntHaarClassifier* ) * count; - ptr = (CvCascadeHaarClassifier*) cvAlloc( datasize ); - memset( ptr, 0, datasize ); - - ptr->count = count; - ptr->classifier = (CvIntHaarClassifier**) (ptr + 1); - - ptr->eval = icvEvalCascadeHaarClassifier; - ptr->save = NULL; - ptr->release = icvReleaseCascadeHaarClassifier; - - return (CvIntHaarClassifier*) ptr; -} - - -void icvReleaseCascadeHaarClassifier( CvIntHaarClassifier** classifier ) -{ - int i; - - for( i = 0; i < ((CvCascadeHaarClassifier*) *classifier)->count; i++ ) - { - if( ((CvCascadeHaarClassifier*) *classifier)->classifier[i] != NULL ) - { - ((CvCascadeHaarClassifier*) *classifier)->classifier[i]->release( - &(((CvCascadeHaarClassifier*) *classifier)->classifier[i]) ); - } - } - - cvFree( classifier ); - *classifier = NULL; -} - - -float icvEvalCascadeHaarClassifier( CvIntHaarClassifier* classifier, - sum_type* sum, sum_type* tilted, float normfactor ) -{ - int i; - - for( i = 0; i < ((CvCascadeHaarClassifier*) classifier)->count; i++ ) - { - if( ((CvCascadeHaarClassifier*) classifier)->classifier[i]->eval( - ((CvCascadeHaarClassifier*) classifier)->classifier[i], - sum, tilted, normfactor ) - < ( ((CvStageHaarClassifier*) - ((CvCascadeHaarClassifier*) classifier)->classifier[i])->threshold - - CV_THRESHOLD_EPS) ) - { - return 0.0; - } - } - - return 1.0; -} - - -void icvSaveHaarFeature( CvTHaarFeature* feature, FILE* file ) -{ - fprintf( file, "%d\n", ( ( feature->rect[2].weight == 0.0F ) ? 2 : 3) ); - fprintf( file, "%d %d %d %d %d %d\n", - feature->rect[0].r.x, - feature->rect[0].r.y, - feature->rect[0].r.width, - feature->rect[0].r.height, - 0, - (int) (feature->rect[0].weight) ); - fprintf( file, "%d %d %d %d %d %d\n", - feature->rect[1].r.x, - feature->rect[1].r.y, - feature->rect[1].r.width, - feature->rect[1].r.height, - 0, - (int) (feature->rect[1].weight) ); - if( feature->rect[2].weight != 0.0F ) - { - fprintf( file, "%d %d %d %d %d %d\n", - feature->rect[2].r.x, - feature->rect[2].r.y, - feature->rect[2].r.width, - feature->rect[2].r.height, - 0, - (int) (feature->rect[2].weight) ); - } - fprintf( file, "%s\n", &(feature->desc[0]) ); -} - - -void icvLoadHaarFeature( CvTHaarFeature* feature, FILE* file ) -{ - int nrect; - int j; - int tmp; - int weight; - - nrect = 0; - int values_read = fscanf( file, "%d", &nrect ); - CV_Assert(values_read == 1); - - assert( nrect <= CV_HAAR_FEATURE_MAX ); - - for( j = 0; j < nrect; j++ ) - { - values_read = fscanf( file, "%d %d %d %d %d %d", - &(feature->rect[j].r.x), - &(feature->rect[j].r.y), - &(feature->rect[j].r.width), - &(feature->rect[j].r.height), - &tmp, &weight ); - CV_Assert(values_read == 6); - feature->rect[j].weight = (float) weight; - } - for( j = nrect; j < CV_HAAR_FEATURE_MAX; j++ ) - { - feature->rect[j].r.x = 0; - feature->rect[j].r.y = 0; - feature->rect[j].r.width = 0; - feature->rect[j].r.height = 0; - feature->rect[j].weight = 0.0f; - } - values_read = fscanf( file, "%s", &(feature->desc[0]) ); - CV_Assert(values_read == 1); - feature->tilted = ( feature->desc[0] == 't' ); -} - - -void icvSaveCARTHaarClassifier( CvIntHaarClassifier* classifier, FILE* file ) -{ - int i; - int count; - - count = ((CvCARTHaarClassifier*) classifier)->count; - fprintf( file, "%d\n", count ); - for( i = 0; i < count; i++ ) - { - icvSaveHaarFeature( &(((CvCARTHaarClassifier*) classifier)->feature[i]), file ); - fprintf( file, "%e %d %d\n", - ((CvCARTHaarClassifier*) classifier)->threshold[i], - ((CvCARTHaarClassifier*) classifier)->left[i], - ((CvCARTHaarClassifier*) classifier)->right[i] ); - } - for( i = 0; i <= count; i++ ) - { - fprintf( file, "%e ", ((CvCARTHaarClassifier*) classifier)->val[i] ); - } - fprintf( file, "\n" ); -} - - -CvIntHaarClassifier* icvLoadCARTHaarClassifier( FILE* file, int step ) -{ - CvCARTHaarClassifier* ptr; - int i; - int count; - - ptr = NULL; - int values_read = fscanf( file, "%d", &count ); - CV_Assert(values_read == 1); - - if( count > 0 ) - { - ptr = (CvCARTHaarClassifier*) icvCreateCARTHaarClassifier( count ); - for( i = 0; i < count; i++ ) - { - icvLoadHaarFeature( &(ptr->feature[i]), file ); - values_read = fscanf( file, "%f %d %d", &(ptr->threshold[i]), &(ptr->left[i]), - &(ptr->right[i]) ); - CV_Assert(values_read == 3); - } - for( i = 0; i <= count; i++ ) - { - values_read = fscanf( file, "%f", &(ptr->val[i]) ); - CV_Assert(values_read == 1); - } - icvConvertToFastHaarFeature( ptr->feature, ptr->fastfeature, ptr->count, step ); - } - - return (CvIntHaarClassifier*) ptr; -} - - -void icvSaveStageHaarClassifier( CvIntHaarClassifier* classifier, FILE* file ) -{ - int count; - int i; - float threshold; - - count = ((CvStageHaarClassifier*) classifier)->count; - fprintf( file, "%d\n", count ); - for( i = 0; i < count; i++ ) - { - ((CvStageHaarClassifier*) classifier)->classifier[i]->save( - ((CvStageHaarClassifier*) classifier)->classifier[i], file ); - } - - threshold = ((CvStageHaarClassifier*) classifier)->threshold; - - /* to be compatible with the previous implementation */ - /* threshold = 2.0F * ((CvStageHaarClassifier*) classifier)->threshold - count; */ - - fprintf( file, "%e\n", threshold ); -} - - - -static CvIntHaarClassifier* icvLoadCARTStageHaarClassifierF( FILE* file, int step ) -{ - CvStageHaarClassifier* ptr = NULL; - - //CV_FUNCNAME( "icvLoadCARTStageHaarClassifierF" ); - - __BEGIN__; - - if( file != NULL ) - { - int count; - int i; - float threshold; - - count = 0; - int values_read = fscanf( file, "%d", &count ); - CV_Assert(values_read == 1); - if( count > 0 ) - { - ptr = (CvStageHaarClassifier*) icvCreateStageHaarClassifier( count, 0.0F ); - for( i = 0; i < count; i++ ) - { - ptr->classifier[i] = icvLoadCARTHaarClassifier( file, step ); - } - - values_read = fscanf( file, "%f", &threshold ); - CV_Assert(values_read == 1); - - ptr->threshold = threshold; - /* to be compatible with the previous implementation */ - /* ptr->threshold = 0.5F * (threshold + count); */ - } - if( feof( file ) ) - { - ptr->release( (CvIntHaarClassifier**) &ptr ); - ptr = NULL; - } - } - - __END__; - - return (CvIntHaarClassifier*) ptr; -} - - -CvIntHaarClassifier* icvLoadCARTStageHaarClassifier( const char* filename, int step ) -{ - CvIntHaarClassifier* ptr = NULL; - - CV_FUNCNAME( "icvLoadCARTStageHaarClassifier" ); - - __BEGIN__; - - FILE* file; - - file = fopen( filename, "r" ); - if( file ) - { - CV_CALL( ptr = icvLoadCARTStageHaarClassifierF( file, step ) ); - fclose( file ); - } - - __END__; - - return ptr; -} - -/* tree cascade classifier */ - -/* evaluates a tree cascade classifier */ - -float icvEvalTreeCascadeClassifier( CvIntHaarClassifier* classifier, - sum_type* sum, sum_type* tilted, float normfactor ) -{ - CvTreeCascadeNode* ptr; - - ptr = ((CvTreeCascadeClassifier*) classifier)->root; - - while( ptr ) - { - if( ptr->stage->eval( (CvIntHaarClassifier*) ptr->stage, - sum, tilted, normfactor ) - >= ptr->stage->threshold - CV_THRESHOLD_EPS ) - { - ptr = ptr->child; - } - else - { - while( ptr && ptr->next == NULL ) ptr = ptr->parent; - if( ptr == NULL ) return 0.0F; - ptr = ptr->next; - } - } - - return 1.0F; -} - -/* sets path int the tree form the root to the leaf node */ - -void icvSetLeafNode( CvTreeCascadeClassifier* tcc, CvTreeCascadeNode* leaf ) -{ - CV_FUNCNAME( "icvSetLeafNode" ); - - __BEGIN__; - - CvTreeCascadeNode* ptr; - - ptr = NULL; - while( leaf ) - { - leaf->child_eval = ptr; - ptr = leaf; - leaf = leaf->parent; - } - - leaf = tcc->root; - while( leaf && leaf != ptr ) leaf = leaf->next; - if( leaf != ptr ) - CV_ERROR( CV_StsError, "Invalid tcc or leaf node." ); - - tcc->root_eval = ptr; - - __END__; -} - -/* evaluates a tree cascade classifier. used in filtering */ - -float icvEvalTreeCascadeClassifierFilter( CvIntHaarClassifier* classifier, sum_type* sum, - sum_type* tilted, float normfactor ) -{ - CvTreeCascadeNode* ptr; - //CvTreeCascadeClassifier* tree; - - //tree = (CvTreeCascadeClassifier*) classifier; - - - - ptr = ((CvTreeCascadeClassifier*) classifier)->root_eval; - while( ptr ) - { - if( ptr->stage->eval( (CvIntHaarClassifier*) ptr->stage, - sum, tilted, normfactor ) - < ptr->stage->threshold - CV_THRESHOLD_EPS ) - { - return 0.0F; - } - ptr = ptr->child_eval; - } - - return 1.0F; -} - -/* creates tree cascade node */ - -CvTreeCascadeNode* icvCreateTreeCascadeNode() -{ - CvTreeCascadeNode* ptr = NULL; - - CV_FUNCNAME( "icvCreateTreeCascadeNode" ); - - __BEGIN__; - size_t data_size; - - data_size = sizeof( *ptr ); - CV_CALL( ptr = (CvTreeCascadeNode*) cvAlloc( data_size ) ); - memset( ptr, 0, data_size ); - - __END__; - - return ptr; -} - -/* releases all tree cascade nodes accessible via links */ - -void icvReleaseTreeCascadeNodes( CvTreeCascadeNode** node ) -{ - //CV_FUNCNAME( "icvReleaseTreeCascadeNodes" ); - - __BEGIN__; - - if( node && *node ) - { - CvTreeCascadeNode* ptr; - CvTreeCascadeNode* ptr_; - - ptr = *node; - - while( ptr ) - { - while( ptr->child ) ptr = ptr->child; - - if( ptr->stage ) ptr->stage->release( (CvIntHaarClassifier**) &ptr->stage ); - ptr_ = ptr; - - while( ptr && ptr->next == NULL ) ptr = ptr->parent; - if( ptr ) ptr = ptr->next; - - cvFree( &ptr_ ); - } - } - - __END__; -} - - -/* releases tree cascade classifier */ - -void icvReleaseTreeCascadeClassifier( CvIntHaarClassifier** classifier ) -{ - if( classifier && *classifier ) - { - icvReleaseTreeCascadeNodes( &((CvTreeCascadeClassifier*) *classifier)->root ); - cvFree( classifier ); - *classifier = NULL; - } -} - - -void icvPrintTreeCascade( CvTreeCascadeNode* root ) -{ - //CV_FUNCNAME( "icvPrintTreeCascade" ); - - __BEGIN__; - - CvTreeCascadeNode* node; - CvTreeCascadeNode* n; - char buf0[256]; - char buf[256]; - int level; - int i; - int max_level; - - node = root; - level = max_level = 0; - while( node ) - { - while( node->child ) { node = node->child; level++; } - if( level > max_level ) { max_level = level; } - while( node && !node->next ) { node = node->parent; level--; } - if( node ) node = node->next; - } - - printf( "\nTree Classifier\n" ); - printf( "Stage\n" ); - for( i = 0; i <= max_level; i++ ) printf( "+---" ); - printf( "+\n" ); - for( i = 0; i <= max_level; i++ ) printf( "|%3d", i ); - printf( "|\n" ); - for( i = 0; i <= max_level; i++ ) printf( "+---" ); - printf( "+\n\n" ); - - node = root; - - buf[0] = 0; - while( node ) - { - sprintf( buf + strlen( buf ), "%3d", node->idx ); - while( node->child ) - { - node = node->child; - sprintf( buf + strlen( buf ), - ((node->idx < 10) ? "---%d" : ((node->idx < 100) ? "--%d" : "-%d")), - node->idx ); - } - printf( " %s\n", buf ); - - while( node && !node->next ) { node = node->parent; } - if( node ) - { - node = node->next; - - n = node->parent; - buf[0] = 0; - while( n ) - { - if( n->next ) - sprintf( buf0, " | %s", buf ); - else - sprintf( buf0, " %s", buf ); - strcpy( buf, buf0 ); - n = n->parent; - } - printf( " %s |\n", buf ); - } - } - printf( "\n" ); - fflush( stdout ); - - __END__; -} - - - -CvIntHaarClassifier* icvLoadTreeCascadeClassifier( const char* filename, int step, - int* splits ) -{ - CvTreeCascadeClassifier* ptr = NULL; - CvTreeCascadeNode** nodes = NULL; - - CV_FUNCNAME( "icvLoadTreeCascadeClassifier" ); - - __BEGIN__; - - size_t data_size; - CvStageHaarClassifier* stage; - char stage_name[PATH_MAX]; - char* suffix; - int i, num; - FILE* f; - int result, parent=0, next=0; - int stub; - - if( !splits ) splits = &stub; - - *splits = 0; - - data_size = sizeof( *ptr ); - - CV_CALL( ptr = (CvTreeCascadeClassifier*) cvAlloc( data_size ) ); - memset( ptr, 0, data_size ); - - ptr->eval = icvEvalTreeCascadeClassifier; - ptr->release = icvReleaseTreeCascadeClassifier; - - sprintf( stage_name, "%s/", filename ); - suffix = stage_name + strlen( stage_name ); - - for( i = 0; ; i++ ) - { - sprintf( suffix, "%d/%s", i, CV_STAGE_CART_FILE_NAME ); - f = fopen( stage_name, "r" ); - if( !f ) break; - fclose( f ); - } - num = i; - - if( num < 1 ) EXIT; - - data_size = sizeof( *nodes ) * num; - CV_CALL( nodes = (CvTreeCascadeNode**) cvAlloc( data_size ) ); - - for( i = 0; i < num; i++ ) - { - sprintf( suffix, "%d/%s", i, CV_STAGE_CART_FILE_NAME ); - f = fopen( stage_name, "r" ); - CV_CALL( stage = (CvStageHaarClassifier*) - icvLoadCARTStageHaarClassifierF( f, step ) ); - - result = ( f && stage ) ? fscanf( f, "%d%d", &parent, &next ) : 0; - if( f ) fclose( f ); - - if( result != 2 ) - { - num = i; - break; - } - - printf( "Stage %d loaded\n", i ); - - if( parent >= i || (next != -1 && next != i + 1) ) - CV_ERROR( CV_StsError, "Invalid tree links" ); - - CV_CALL( nodes[i] = icvCreateTreeCascadeNode() ); - nodes[i]->stage = stage; - nodes[i]->idx = i; - nodes[i]->parent = (parent != -1 ) ? nodes[parent] : NULL; - nodes[i]->next = ( next != -1 ) ? nodes[i] : NULL; - nodes[i]->child = NULL; - } - for( i = 0; i < num; i++ ) - { - if( nodes[i]->next ) - { - (*splits)++; - nodes[i]->next = nodes[i+1]; - } - if( nodes[i]->parent && nodes[i]->parent->child == NULL ) - { - nodes[i]->parent->child = nodes[i]; - } - } - ptr->root = nodes[0]; - ptr->next_idx = num; - - __END__; - - cvFree( &nodes ); - - return (CvIntHaarClassifier*) ptr; -} - - -CvTreeCascadeNode* icvFindDeepestLeaves( CvTreeCascadeClassifier* tcc ) -{ - CvTreeCascadeNode* leaves; - - //CV_FUNCNAME( "icvFindDeepestLeaves" ); - - __BEGIN__; - - int level, cur_level; - CvTreeCascadeNode* ptr; - CvTreeCascadeNode* last; - - leaves = last = NULL; - - ptr = tcc->root; - level = -1; - cur_level = 0; - - /* find leaves with maximal level */ - while( ptr ) - { - if( ptr->child ) { ptr = ptr->child; cur_level++; } - else - { - if( cur_level == level ) - { - last->next_same_level = ptr; - ptr->next_same_level = NULL; - last = ptr; - } - if( cur_level > level ) - { - level = cur_level; - leaves = last = ptr; - ptr->next_same_level = NULL; - } - while( ptr && ptr->next == NULL ) { ptr = ptr->parent; cur_level--; } - if( ptr ) ptr = ptr->next; - } - } - - __END__; - - return leaves; -} - -/* End of file. */ diff --git a/apps/haartraining/cvhaartraining.cpp b/apps/haartraining/cvhaartraining.cpp deleted file mode 100644 index 2fcf76a..0000000 --- a/apps/haartraining/cvhaartraining.cpp +++ /dev/null @@ -1,3060 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * cvhaartraining.cpp - * - * training of cascade of boosted classifiers based on haar features - */ - -#include "cvhaartraining.h" -#include "_cvhaartraining.h" - -#include -#include -#include -#include -#include - -#include "highgui.h" - -#ifdef CV_VERBOSE -#include - -#ifdef _WIN32 -/* use clock() function insted of time() */ -#define TIME( arg ) (((double) clock()) / CLOCKS_PER_SEC) -#else -#define TIME( arg ) (time( arg )) -#endif /* _WIN32 */ - -#endif /* CV_VERBOSE */ - -#if defined CV_OPENMP && (defined _MSC_VER || defined CV_ICC) -#define CV_OPENMP 1 -#else -#undef CV_OPENMP -#endif - -typedef struct CvBackgroundData -{ - int count; - char** filename; - int last; - int round; - CvSize winsize; -} CvBackgroundData; - -typedef struct CvBackgroundReader -{ - CvMat src; - CvMat img; - CvPoint offset; - float scale; - float scalefactor; - float stepfactor; - CvPoint point; -} CvBackgroundReader; - -/* - * Background reader - * Created in each thread - */ -CvBackgroundReader* cvbgreader = NULL; - -#if defined CV_OPENMP -#pragma omp threadprivate(cvbgreader) -#endif - -CvBackgroundData* cvbgdata = NULL; - - -/* - * get sum image offsets for corner points - * step - row step (measured in image pixels!) of sum image - */ -#define CV_SUM_OFFSETS( p0, p1, p2, p3, rect, step ) \ - /* (x, y) */ \ - (p0) = (rect).x + (step) * (rect).y; \ - /* (x + w, y) */ \ - (p1) = (rect).x + (rect).width + (step) * (rect).y; \ - /* (x + w, y) */ \ - (p2) = (rect).x + (step) * ((rect).y + (rect).height); \ - /* (x + w, y + h) */ \ - (p3) = (rect).x + (rect).width + (step) * ((rect).y + (rect).height); - -/* - * get tilted image offsets for corner points - * step - row step (measured in image pixels!) of tilted image - */ -#define CV_TILTED_OFFSETS( p0, p1, p2, p3, rect, step ) \ - /* (x, y) */ \ - (p0) = (rect).x + (step) * (rect).y; \ - /* (x - h, y + h) */ \ - (p1) = (rect).x - (rect).height + (step) * ((rect).y + (rect).height);\ - /* (x + w, y + w) */ \ - (p2) = (rect).x + (rect).width + (step) * ((rect).y + (rect).width); \ - /* (x + w - h, y + w + h) */ \ - (p3) = (rect).x + (rect).width - (rect).height \ - + (step) * ((rect).y + (rect).width + (rect).height); - - -/* - * icvCreateIntHaarFeatures - * - * Create internal representation of haar features - * - * mode: - * 0 - BASIC = Viola - * 1 - CORE = All upright - * 2 - ALL = All features - */ -static -CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize, - int mode, - int symmetric ) -{ - CvIntHaarFeatures* features = NULL; - CvTHaarFeature haarFeature; - - CvMemStorage* storage = NULL; - CvSeq* seq = NULL; - CvSeqWriter writer; - - int s0 = 36; /* minimum total area size of basic haar feature */ - int s1 = 12; /* minimum total area size of tilted haar features 2 */ - int s2 = 18; /* minimum total area size of tilted haar features 3 */ - int s3 = 24; /* minimum total area size of tilted haar features 4 */ - - int x = 0; - int y = 0; - int dx = 0; - int dy = 0; - -#if 0 - float factor = 1.0F; - - factor = ((float) winsize.width) * winsize.height / (24 * 24); - - s0 = (int) (s0 * factor); - s1 = (int) (s1 * factor); - s2 = (int) (s2 * factor); - s3 = (int) (s3 * factor); -#else - s0 = 1; - s1 = 1; - s2 = 1; - s3 = 1; -#endif - - /* CV_VECTOR_CREATE( vec, CvIntHaarFeature, size, maxsize ) */ - storage = cvCreateMemStorage(); - cvStartWriteSeq( 0, sizeof( CvSeq ), sizeof( haarFeature ), storage, &writer ); - - for( x = 0; x < winsize.width; x++ ) - { - for( y = 0; y < winsize.height; y++ ) - { - for( dx = 1; dx <= winsize.width; dx++ ) - { - for( dy = 1; dy <= winsize.height; dy++ ) - { - // haar_x2 - if ( (x+dx*2 <= winsize.width) && (y+dy <= winsize.height) ) { - if (dx*2*dy < s0) continue; - if (!symmetric || (x+x+dx*2 <=winsize.width)) { - haarFeature = cvHaarFeature( "haar_x2", - x, y, dx*2, dy, -1, - x+dx, y, dx , dy, +2 ); - /* CV_VECTOR_PUSH( vec, CvIntHaarFeature, haarFeature, size, maxsize, step ) */ - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - // haar_y2 - if ( (x+dx <= winsize.width) && (y+dy*2 <= winsize.height) ) { - if (dx*2*dy < s0) continue; - if (!symmetric || (x+x+dx <= winsize.width)) { - haarFeature = cvHaarFeature( "haar_y2", - x, y, dx, dy*2, -1, - x, y+dy, dx, dy, +2 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - // haar_x3 - if ( (x+dx*3 <= winsize.width) && (y+dy <= winsize.height) ) { - if (dx*3*dy < s0) continue; - if (!symmetric || (x+x+dx*3 <=winsize.width)) { - haarFeature = cvHaarFeature( "haar_x3", - x, y, dx*3, dy, -1, - x+dx, y, dx, dy, +3 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - // haar_y3 - if ( (x+dx <= winsize.width) && (y+dy*3 <= winsize.height) ) { - if (dx*3*dy < s0) continue; - if (!symmetric || (x+x+dx <= winsize.width)) { - haarFeature = cvHaarFeature( "haar_y3", - x, y, dx, dy*3, -1, - x, y+dy, dx, dy, +3 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - if( mode != 0 /*BASIC*/ ) { - // haar_x4 - if ( (x+dx*4 <= winsize.width) && (y+dy <= winsize.height) ) { - if (dx*4*dy < s0) continue; - if (!symmetric || (x+x+dx*4 <=winsize.width)) { - haarFeature = cvHaarFeature( "haar_x4", - x, y, dx*4, dy, -1, - x+dx, y, dx*2, dy, +2 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - // haar_y4 - if ( (x+dx <= winsize.width ) && (y+dy*4 <= winsize.height) ) { - if (dx*4*dy < s0) continue; - if (!symmetric || (x+x+dx <=winsize.width)) { - haarFeature = cvHaarFeature( "haar_y4", - x, y, dx, dy*4, -1, - x, y+dy, dx, dy*2, +2 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - } - - // x2_y2 - if ( (x+dx*2 <= winsize.width) && (y+dy*2 <= winsize.height) ) { - if (dx*4*dy < s0) continue; - if (!symmetric || (x+x+dx*2 <=winsize.width)) { - haarFeature = cvHaarFeature( "haar_x2_y2", - x , y, dx*2, dy*2, -1, - x , y , dx , dy, +2, - x+dx, y+dy, dx , dy, +2 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - if (mode != 0 /*BASIC*/) { - // point - if ( (x+dx*3 <= winsize.width) && (y+dy*3 <= winsize.height) ) { - if (dx*9*dy < s0) continue; - if (!symmetric || (x+x+dx*3 <=winsize.width)) { - haarFeature = cvHaarFeature( "haar_point", - x , y, dx*3, dy*3, -1, - x+dx, y+dy, dx , dy , +9); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - } - - if (mode == 2 /*ALL*/) { - // tilted haar_x2 (x, y, w, h, b, weight) - if ( (x+2*dx <= winsize.width) && (y+2*dx+dy <= winsize.height) && (x-dy>= 0) ) { - if (dx*2*dy < s1) continue; - - if (!symmetric || (x <= (winsize.width / 2) )) { - haarFeature = cvHaarFeature( "tilted_haar_x2", - x, y, dx*2, dy, -1, - x, y, dx , dy, +2 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - // tilted haar_y2 (x, y, w, h, b, weight) - if ( (x+dx <= winsize.width) && (y+dx+2*dy <= winsize.height) && (x-2*dy>= 0) ) { - if (dx*2*dy < s1) continue; - - if (!symmetric || (x <= (winsize.width / 2) )) { - haarFeature = cvHaarFeature( "tilted_haar_y2", - x, y, dx, 2*dy, -1, - x, y, dx, dy, +2 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - // tilted haar_x3 (x, y, w, h, b, weight) - if ( (x+3*dx <= winsize.width) && (y+3*dx+dy <= winsize.height) && (x-dy>= 0) ) { - if (dx*3*dy < s2) continue; - - if (!symmetric || (x <= (winsize.width / 2) )) { - haarFeature = cvHaarFeature( "tilted_haar_x3", - x, y, dx*3, dy, -1, - x+dx, y+dx, dx , dy, +3 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - // tilted haar_y3 (x, y, w, h, b, weight) - if ( (x+dx <= winsize.width) && (y+dx+3*dy <= winsize.height) && (x-3*dy>= 0) ) { - if (dx*3*dy < s2) continue; - - if (!symmetric || (x <= (winsize.width / 2) )) { - haarFeature = cvHaarFeature( "tilted_haar_y3", - x, y, dx, 3*dy, -1, - x-dy, y+dy, dx, dy, +3 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - - // tilted haar_x4 (x, y, w, h, b, weight) - if ( (x+4*dx <= winsize.width) && (y+4*dx+dy <= winsize.height) && (x-dy>= 0) ) { - if (dx*4*dy < s3) continue; - - if (!symmetric || (x <= (winsize.width / 2) )) { - haarFeature = cvHaarFeature( "tilted_haar_x4", - - - x, y, dx*4, dy, -1, - x+dx, y+dx, dx*2, dy, +2 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - // tilted haar_y4 (x, y, w, h, b, weight) - if ( (x+dx <= winsize.width) && (y+dx+4*dy <= winsize.height) && (x-4*dy>= 0) ) { - if (dx*4*dy < s3) continue; - - if (!symmetric || (x <= (winsize.width / 2) )) { - haarFeature = cvHaarFeature( "tilted_haar_y4", - x, y, dx, 4*dy, -1, - x-dy, y+dy, dx, 2*dy, +2 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - - - /* - - // tilted point - if ( (x+dx*3 <= winsize.width - 1) && (y+dy*3 <= winsize.height - 1) && (x-3*dy>= 0)) { - if (dx*9*dy < 36) continue; - if (!symmetric || (x <= (winsize.width / 2) )) { - haarFeature = cvHaarFeature( "tilted_haar_point", - x, y, dx*3, dy*3, -1, - x, y+dy, dx , dy, +9 ); - CV_WRITE_SEQ_ELEM( haarFeature, writer ); - } - } - */ - } - } - } - } - } - - seq = cvEndWriteSeq( &writer ); - features = (CvIntHaarFeatures*) cvAlloc( sizeof( CvIntHaarFeatures ) + - ( sizeof( CvTHaarFeature ) + sizeof( CvFastHaarFeature ) ) * seq->total ); - features->feature = (CvTHaarFeature*) (features + 1); - features->fastfeature = (CvFastHaarFeature*) ( features->feature + seq->total ); - features->count = seq->total; - features->winsize = winsize; - cvCvtSeqToArray( seq, (CvArr*) features->feature ); - cvReleaseMemStorage( &storage ); - - icvConvertToFastHaarFeature( features->feature, features->fastfeature, - features->count, (winsize.width + 1) ); - - return features; -} - -static -void icvReleaseIntHaarFeatures( CvIntHaarFeatures** intHaarFeatures ) -{ - if( intHaarFeatures != NULL && (*intHaarFeatures) != NULL ) - { - cvFree( intHaarFeatures ); - (*intHaarFeatures) = NULL; - } -} - - -void icvConvertToFastHaarFeature( CvTHaarFeature* haarFeature, - CvFastHaarFeature* fastHaarFeature, - int size, int step ) -{ - int i = 0; - int j = 0; - - for( i = 0; i < size; i++ ) - { - fastHaarFeature[i].tilted = haarFeature[i].tilted; - if( !fastHaarFeature[i].tilted ) - { - for( j = 0; j < CV_HAAR_FEATURE_MAX; j++ ) - { - fastHaarFeature[i].rect[j].weight = haarFeature[i].rect[j].weight; - if( fastHaarFeature[i].rect[j].weight == 0.0F ) - { - break; - } - CV_SUM_OFFSETS( fastHaarFeature[i].rect[j].p0, - fastHaarFeature[i].rect[j].p1, - fastHaarFeature[i].rect[j].p2, - fastHaarFeature[i].rect[j].p3, - haarFeature[i].rect[j].r, step ) - } - - } - else - { - for( j = 0; j < CV_HAAR_FEATURE_MAX; j++ ) - { - fastHaarFeature[i].rect[j].weight = haarFeature[i].rect[j].weight; - if( fastHaarFeature[i].rect[j].weight == 0.0F ) - { - break; - } - CV_TILTED_OFFSETS( fastHaarFeature[i].rect[j].p0, - fastHaarFeature[i].rect[j].p1, - fastHaarFeature[i].rect[j].p2, - fastHaarFeature[i].rect[j].p3, - haarFeature[i].rect[j].r, step ) - } - } - } -} - - -/* - * icvCreateHaarTrainingData - * - * Create haar training data used in stage training - */ -static -CvHaarTrainigData* icvCreateHaarTrainingData( CvSize winsize, int maxnumsamples ) -{ - CvHaarTrainigData* data; - - CV_FUNCNAME( "icvCreateHaarTrainingData" ); - - __BEGIN__; - - data = NULL; - uchar* ptr = NULL; - size_t datasize = 0; - - datasize = sizeof( CvHaarTrainigData ) + - /* sum and tilted */ - ( 2 * (winsize.width + 1) * (winsize.height + 1) * sizeof( sum_type ) + - sizeof( float ) + /* normfactor */ - sizeof( float ) + /* cls */ - sizeof( float ) /* weight */ - ) * maxnumsamples; - - CV_CALL( data = (CvHaarTrainigData*) cvAlloc( datasize ) ); - memset( (void*)data, 0, datasize ); - data->maxnum = maxnumsamples; - data->winsize = winsize; - ptr = (uchar*)(data + 1); - data->sum = cvMat( maxnumsamples, (winsize.width + 1) * (winsize.height + 1), - CV_SUM_MAT_TYPE, (void*) ptr ); - ptr += sizeof( sum_type ) * maxnumsamples * (winsize.width+1) * (winsize.height+1); - data->tilted = cvMat( maxnumsamples, (winsize.width + 1) * (winsize.height + 1), - CV_SUM_MAT_TYPE, (void*) ptr ); - ptr += sizeof( sum_type ) * maxnumsamples * (winsize.width+1) * (winsize.height+1); - data->normfactor = cvMat( 1, maxnumsamples, CV_32FC1, (void*) ptr ); - ptr += sizeof( float ) * maxnumsamples; - data->cls = cvMat( 1, maxnumsamples, CV_32FC1, (void*) ptr ); - ptr += sizeof( float ) * maxnumsamples; - data->weights = cvMat( 1, maxnumsamples, CV_32FC1, (void*) ptr ); - - data->valcache = NULL; - data->idxcache = NULL; - - __END__; - - return data; -} - -static -void icvReleaseHaarTrainingDataCache( CvHaarTrainigData** haarTrainingData ) -{ - if( haarTrainingData != NULL && (*haarTrainingData) != NULL ) - { - if( (*haarTrainingData)->valcache != NULL ) - { - cvReleaseMat( &(*haarTrainingData)->valcache ); - (*haarTrainingData)->valcache = NULL; - } - if( (*haarTrainingData)->idxcache != NULL ) - { - cvReleaseMat( &(*haarTrainingData)->idxcache ); - (*haarTrainingData)->idxcache = NULL; - } - } -} - -static -void icvReleaseHaarTrainingData( CvHaarTrainigData** haarTrainingData ) -{ - if( haarTrainingData != NULL && (*haarTrainingData) != NULL ) - { - icvReleaseHaarTrainingDataCache( haarTrainingData ); - - cvFree( haarTrainingData ); - } -} - -static -void icvGetTrainingDataCallback( CvMat* mat, CvMat* sampleIdx, CvMat*, - int first, int num, void* userdata ) -{ - int i = 0; - int j = 0; - float val = 0.0F; - float normfactor = 0.0F; - - CvHaarTrainingData* training_data; - CvIntHaarFeatures* haar_features; - -#ifdef CV_COL_ARRANGEMENT - assert( mat->rows >= num ); -#else - assert( mat->cols >= num ); -#endif - - training_data = ((CvUserdata*) userdata)->trainingData; - haar_features = ((CvUserdata*) userdata)->haarFeatures; - if( sampleIdx == NULL ) - { - int num_samples; - -#ifdef CV_COL_ARRANGEMENT - num_samples = mat->cols; -#else - num_samples = mat->rows; -#endif - for( i = 0; i < num_samples; i++ ) - { - for( j = 0; j < num; j++ ) - { - val = cvEvalFastHaarFeature( - ( haar_features->fastfeature - + first + j ), - (sum_type*) (training_data->sum.data.ptr - + i * training_data->sum.step), - (sum_type*) (training_data->tilted.data.ptr - + i * training_data->tilted.step) ); - normfactor = training_data->normfactor.data.fl[i]; - val = ( normfactor == 0.0F ) ? 0.0F : (val / normfactor); - -#ifdef CV_COL_ARRANGEMENT - CV_MAT_ELEM( *mat, float, j, i ) = val; -#else - CV_MAT_ELEM( *mat, float, i, j ) = val; -#endif - } - } - } - else - { - uchar* idxdata = NULL; - size_t step = 0; - int numidx = 0; - int idx = 0; - - assert( CV_MAT_TYPE( sampleIdx->type ) == CV_32FC1 ); - - idxdata = sampleIdx->data.ptr; - if( sampleIdx->rows == 1 ) - { - step = sizeof( float ); - numidx = sampleIdx->cols; - } - else - { - step = sampleIdx->step; - numidx = sampleIdx->rows; - } - - for( i = 0; i < numidx; i++ ) - { - for( j = 0; j < num; j++ ) - { - idx = (int)( *((float*) (idxdata + i * step)) ); - val = cvEvalFastHaarFeature( - ( haar_features->fastfeature - + first + j ), - (sum_type*) (training_data->sum.data.ptr - + idx * training_data->sum.step), - (sum_type*) (training_data->tilted.data.ptr - + idx * training_data->tilted.step) ); - normfactor = training_data->normfactor.data.fl[idx]; - val = ( normfactor == 0.0F ) ? 0.0F : (val / normfactor); - -#ifdef CV_COL_ARRANGEMENT - CV_MAT_ELEM( *mat, float, j, idx ) = val; -#else - CV_MAT_ELEM( *mat, float, idx, j ) = val; -#endif - - } - } - } -#if 0 /*def CV_VERBOSE*/ - if( first % 5000 == 0 ) - { - fprintf( stderr, "%3d%%\r", (int) (100.0 * first / - haar_features->count) ); - fflush( stderr ); - } -#endif /* CV_VERBOSE */ -} - -static -void icvPrecalculate( CvHaarTrainingData* data, CvIntHaarFeatures* haarFeatures, - int numprecalculated ) -{ - CV_FUNCNAME( "icvPrecalculate" ); - - __BEGIN__; - - icvReleaseHaarTrainingDataCache( &data ); - - numprecalculated -= numprecalculated % CV_STUMP_TRAIN_PORTION; - numprecalculated = MIN( numprecalculated, haarFeatures->count ); - - if( numprecalculated > 0 ) - { - //size_t datasize; - int m; - CvUserdata userdata; - - /* private variables */ - #ifdef CV_OPENMP - CvMat t_data; - CvMat t_idx; - int first; - int t_portion; - int portion = CV_STUMP_TRAIN_PORTION; - #endif /* CV_OPENMP */ - - m = data->sum.rows; - -#ifdef CV_COL_ARRANGEMENT - CV_CALL( data->valcache = cvCreateMat( numprecalculated, m, CV_32FC1 ) ); -#else - CV_CALL( data->valcache = cvCreateMat( m, numprecalculated, CV_32FC1 ) ); -#endif - CV_CALL( data->idxcache = cvCreateMat( numprecalculated, m, CV_IDX_MAT_TYPE ) ); - - userdata = cvUserdata( data, haarFeatures ); - - #ifdef CV_OPENMP - #pragma omp parallel for private(t_data, t_idx, first, t_portion) - for( first = 0; first < numprecalculated; first += portion ) - { - t_data = *data->valcache; - t_idx = *data->idxcache; - t_portion = MIN( portion, (numprecalculated - first) ); - - /* indices */ - t_idx.rows = t_portion; - t_idx.data.ptr = data->idxcache->data.ptr + first * ((size_t)t_idx.step); - - /* feature values */ -#ifdef CV_COL_ARRANGEMENT - t_data.rows = t_portion; - t_data.data.ptr = data->valcache->data.ptr + - first * ((size_t) t_data.step ); -#else - t_data.cols = t_portion; - t_data.data.ptr = data->valcache->data.ptr + - first * ((size_t) CV_ELEM_SIZE( t_data.type )); -#endif - icvGetTrainingDataCallback( &t_data, NULL, NULL, first, t_portion, - &userdata ); -#ifdef CV_COL_ARRANGEMENT - cvGetSortedIndices( &t_data, &t_idx, 0 ); -#else - cvGetSortedIndices( &t_data, &t_idx, 1 ); -#endif - -#ifdef CV_VERBOSE - putc( '.', stderr ); - fflush( stderr ); -#endif /* CV_VERBOSE */ - - } - -#ifdef CV_VERBOSE - fprintf( stderr, "\n" ); - fflush( stderr ); -#endif /* CV_VERBOSE */ - - #else - icvGetTrainingDataCallback( data->valcache, NULL, NULL, 0, numprecalculated, - &userdata ); -#ifdef CV_COL_ARRANGEMENT - cvGetSortedIndices( data->valcache, data->idxcache, 0 ); -#else - cvGetSortedIndices( data->valcache, data->idxcache, 1 ); -#endif - #endif /* CV_OPENMP */ - } - - __END__; -} - -static -void icvSplitIndicesCallback( int compidx, float threshold, - CvMat* idx, CvMat** left, CvMat** right, - void* userdata ) -{ - CvHaarTrainingData* data; - CvIntHaarFeatures* haar_features; - int i; - int m; - CvFastHaarFeature* fastfeature; - - data = ((CvUserdata*) userdata)->trainingData; - haar_features = ((CvUserdata*) userdata)->haarFeatures; - fastfeature = &haar_features->fastfeature[compidx]; - - m = data->sum.rows; - *left = cvCreateMat( 1, m, CV_32FC1 ); - *right = cvCreateMat( 1, m, CV_32FC1 ); - (*left)->cols = (*right)->cols = 0; - if( idx == NULL ) - { - for( i = 0; i < m; i++ ) - { - if( cvEvalFastHaarFeature( fastfeature, - (sum_type*) (data->sum.data.ptr + i * data->sum.step), - (sum_type*) (data->tilted.data.ptr + i * data->tilted.step) ) - < threshold * data->normfactor.data.fl[i] ) - { - (*left)->data.fl[(*left)->cols++] = (float) i; - } - else - { - (*right)->data.fl[(*right)->cols++] = (float) i; - } - } - } - else - { - uchar* idxdata; - int idxnum; - size_t idxstep; - int index; - - idxdata = idx->data.ptr; - idxnum = (idx->rows == 1) ? idx->cols : idx->rows; - idxstep = (idx->rows == 1) ? CV_ELEM_SIZE( idx->type ) : idx->step; - for( i = 0; i < idxnum; i++ ) - { - index = (int) *((float*) (idxdata + i * idxstep)); - if( cvEvalFastHaarFeature( fastfeature, - (sum_type*) (data->sum.data.ptr + index * data->sum.step), - (sum_type*) (data->tilted.data.ptr + index * data->tilted.step) ) - < threshold * data->normfactor.data.fl[index] ) - { - (*left)->data.fl[(*left)->cols++] = (float) index; - } - else - { - (*right)->data.fl[(*right)->cols++] = (float) index; - } - } - } -} - -/* - * icvCreateCARTStageClassifier - * - * Create stage classifier with trees as weak classifiers - * data - haar training data. It must be created and filled before call - * minhitrate - desired min hit rate - * maxfalsealarm - desired max false alarm rate - * symmetric - if not 0 it is assumed that samples are vertically symmetric - * numprecalculated - number of features that will be precalculated. Each precalculated - * feature need (number_of_samples*(sizeof( float ) + sizeof( short ))) bytes of memory - * weightfraction - weight trimming parameter - * numsplits - number of binary splits in each tree - * boosttype - type of applied boosting algorithm - * stumperror - type of used error if Discrete AdaBoost algorithm is applied - * maxsplits - maximum total number of splits in all weak classifiers. - * If it is not 0 then NULL returned if total number of splits exceeds . - */ -static -CvIntHaarClassifier* icvCreateCARTStageClassifier( CvHaarTrainingData* data, - CvMat* sampleIdx, - CvIntHaarFeatures* haarFeatures, - float minhitrate, - float maxfalsealarm, - int symmetric, - float weightfraction, - int numsplits, - CvBoostType boosttype, - CvStumpError stumperror, - int maxsplits ) -{ - -#ifdef CV_COL_ARRANGEMENT - int flags = CV_COL_SAMPLE; -#else - int flags = CV_ROW_SAMPLE; -#endif - - CvStageHaarClassifier* stage = NULL; - CvBoostTrainer* trainer; - CvCARTClassifier* cart = NULL; - CvCARTTrainParams trainParams; - CvMTStumpTrainParams stumpTrainParams; - //CvMat* trainData = NULL; - //CvMat* sortedIdx = NULL; - CvMat eval; - int n = 0; - int m = 0; - int numpos = 0; - int numneg = 0; - int numfalse = 0; - float sum_stage = 0.0F; - float threshold = 0.0F; - float falsealarm = 0.0F; - - //CvMat* sampleIdx = NULL; - CvMat* trimmedIdx; - //float* idxdata = NULL; - //float* tempweights = NULL; - //int idxcount = 0; - CvUserdata userdata; - - int i = 0; - int j = 0; - int idx; - int numsamples; - int numtrimmed; - - CvCARTHaarClassifier* classifier; - CvSeq* seq = NULL; - CvMemStorage* storage = NULL; - CvMat* weakTrainVals; - float alpha; - float sumalpha; - int num_splits; /* total number of splits in all weak classifiers */ - -#ifdef CV_VERBOSE - printf( "+----+----+-+---------+---------+---------+---------+\n" ); - printf( "| N |%%SMP|F| ST.THR | HR | FA | EXP. ERR|\n" ); - printf( "+----+----+-+---------+---------+---------+---------+\n" ); -#endif /* CV_VERBOSE */ - - n = haarFeatures->count; - m = data->sum.rows; - numsamples = (sampleIdx) ? MAX( sampleIdx->rows, sampleIdx->cols ) : m; - - userdata = cvUserdata( data, haarFeatures ); - - stumpTrainParams.type = ( boosttype == CV_DABCLASS ) - ? CV_CLASSIFICATION_CLASS : CV_REGRESSION; - stumpTrainParams.error = ( boosttype == CV_LBCLASS || boosttype == CV_GABCLASS ) - ? CV_SQUARE : stumperror; - stumpTrainParams.portion = CV_STUMP_TRAIN_PORTION; - stumpTrainParams.getTrainData = icvGetTrainingDataCallback; - stumpTrainParams.numcomp = n; - stumpTrainParams.userdata = &userdata; - stumpTrainParams.sortedIdx = data->idxcache; - - trainParams.count = numsplits; - trainParams.stumpTrainParams = (CvClassifierTrainParams*) &stumpTrainParams; - trainParams.stumpConstructor = cvCreateMTStumpClassifier; - trainParams.splitIdx = icvSplitIndicesCallback; - trainParams.userdata = &userdata; - - eval = cvMat( 1, m, CV_32FC1, cvAlloc( sizeof( float ) * m ) ); - - storage = cvCreateMemStorage(); - seq = cvCreateSeq( 0, sizeof( *seq ), sizeof( classifier ), storage ); - - weakTrainVals = cvCreateMat( 1, m, CV_32FC1 ); - trainer = cvBoostStartTraining( &data->cls, weakTrainVals, &data->weights, - sampleIdx, boosttype ); - num_splits = 0; - sumalpha = 0.0F; - do - { - -#ifdef CV_VERBOSE - int v_wt = 0; - int v_flipped = 0; -#endif /* CV_VERBOSE */ - - trimmedIdx = cvTrimWeights( &data->weights, sampleIdx, weightfraction ); - numtrimmed = (trimmedIdx) ? MAX( trimmedIdx->rows, trimmedIdx->cols ) : m; - -#ifdef CV_VERBOSE - v_wt = 100 * numtrimmed / numsamples; - v_flipped = 0; - -#endif /* CV_VERBOSE */ - - cart = (CvCARTClassifier*) cvCreateCARTClassifier( data->valcache, - flags, - weakTrainVals, 0, 0, 0, trimmedIdx, - &(data->weights), - (CvClassifierTrainParams*) &trainParams ); - - classifier = (CvCARTHaarClassifier*) icvCreateCARTHaarClassifier( numsplits ); - icvInitCARTHaarClassifier( classifier, cart, haarFeatures ); - - num_splits += classifier->count; - - cart->release( (CvClassifier**) &cart ); - - if( symmetric && (seq->total % 2) ) - { - float normfactor = 0.0F; - CvStumpClassifier* stump; - - /* flip haar features */ - for( i = 0; i < classifier->count; i++ ) - { - if( classifier->feature[i].desc[0] == 'h' ) - { - for( j = 0; j < CV_HAAR_FEATURE_MAX && - classifier->feature[i].rect[j].weight != 0.0F; j++ ) - { - classifier->feature[i].rect[j].r.x = data->winsize.width - - classifier->feature[i].rect[j].r.x - - classifier->feature[i].rect[j].r.width; - } - } - else - { - int tmp = 0; - - /* (x,y) -> (24-x,y) */ - /* w -> h; h -> w */ - for( j = 0; j < CV_HAAR_FEATURE_MAX && - classifier->feature[i].rect[j].weight != 0.0F; j++ ) - { - classifier->feature[i].rect[j].r.x = data->winsize.width - - classifier->feature[i].rect[j].r.x; - CV_SWAP( classifier->feature[i].rect[j].r.width, - classifier->feature[i].rect[j].r.height, tmp ); - } - } - } - icvConvertToFastHaarFeature( classifier->feature, - classifier->fastfeature, - classifier->count, data->winsize.width + 1 ); - - stumpTrainParams.getTrainData = NULL; - stumpTrainParams.numcomp = 1; - stumpTrainParams.userdata = NULL; - stumpTrainParams.sortedIdx = NULL; - - for( i = 0; i < classifier->count; i++ ) - { - for( j = 0; j < numtrimmed; j++ ) - { - idx = icvGetIdxAt( trimmedIdx, j ); - - eval.data.fl[idx] = cvEvalFastHaarFeature( &classifier->fastfeature[i], - (sum_type*) (data->sum.data.ptr + idx * data->sum.step), - (sum_type*) (data->tilted.data.ptr + idx * data->tilted.step) ); - normfactor = data->normfactor.data.fl[idx]; - eval.data.fl[idx] = ( normfactor == 0.0F ) - ? 0.0F : (eval.data.fl[idx] / normfactor); - } - - stump = (CvStumpClassifier*) trainParams.stumpConstructor( &eval, - CV_COL_SAMPLE, - weakTrainVals, 0, 0, 0, trimmedIdx, - &(data->weights), - trainParams.stumpTrainParams ); - - classifier->threshold[i] = stump->threshold; - if( classifier->left[i] <= 0 ) - { - classifier->val[-classifier->left[i]] = stump->left; - } - if( classifier->right[i] <= 0 ) - { - classifier->val[-classifier->right[i]] = stump->right; - } - - stump->release( (CvClassifier**) &stump ); - - } - - stumpTrainParams.getTrainData = icvGetTrainingDataCallback; - stumpTrainParams.numcomp = n; - stumpTrainParams.userdata = &userdata; - stumpTrainParams.sortedIdx = data->idxcache; - -#ifdef CV_VERBOSE - v_flipped = 1; -#endif /* CV_VERBOSE */ - - } /* if symmetric */ - if( trimmedIdx != sampleIdx ) - { - cvReleaseMat( &trimmedIdx ); - trimmedIdx = NULL; - } - - for( i = 0; i < numsamples; i++ ) - { - idx = icvGetIdxAt( sampleIdx, i ); - - eval.data.fl[idx] = classifier->eval( (CvIntHaarClassifier*) classifier, - (sum_type*) (data->sum.data.ptr + idx * data->sum.step), - (sum_type*) (data->tilted.data.ptr + idx * data->tilted.step), - data->normfactor.data.fl[idx] ); - } - - alpha = cvBoostNextWeakClassifier( &eval, &data->cls, weakTrainVals, - &data->weights, trainer ); - sumalpha += alpha; - - for( i = 0; i <= classifier->count; i++ ) - { - if( boosttype == CV_RABCLASS ) - { - classifier->val[i] = cvLogRatio( classifier->val[i] ); - } - classifier->val[i] *= alpha; - } - - cvSeqPush( seq, (void*) &classifier ); - - numpos = 0; - for( i = 0; i < numsamples; i++ ) - { - idx = icvGetIdxAt( sampleIdx, i ); - - if( data->cls.data.fl[idx] == 1.0F ) - { - eval.data.fl[numpos] = 0.0F; - for( j = 0; j < seq->total; j++ ) - { - classifier = *((CvCARTHaarClassifier**) cvGetSeqElem( seq, j )); - eval.data.fl[numpos] += classifier->eval( - (CvIntHaarClassifier*) classifier, - (sum_type*) (data->sum.data.ptr + idx * data->sum.step), - (sum_type*) (data->tilted.data.ptr + idx * data->tilted.step), - data->normfactor.data.fl[idx] ); - } - /* eval.data.fl[numpos] = 2.0F * eval.data.fl[numpos] - seq->total; */ - numpos++; - } - } - std::sort(eval.data.fl, eval.data.fl + numpos); - threshold = eval.data.fl[(int) ((1.0F - minhitrate) * numpos)]; - - numneg = 0; - numfalse = 0; - for( i = 0; i < numsamples; i++ ) - { - idx = icvGetIdxAt( sampleIdx, i ); - - if( data->cls.data.fl[idx] == 0.0F ) - { - numneg++; - sum_stage = 0.0F; - for( j = 0; j < seq->total; j++ ) - { - classifier = *((CvCARTHaarClassifier**) cvGetSeqElem( seq, j )); - sum_stage += classifier->eval( (CvIntHaarClassifier*) classifier, - (sum_type*) (data->sum.data.ptr + idx * data->sum.step), - (sum_type*) (data->tilted.data.ptr + idx * data->tilted.step), - data->normfactor.data.fl[idx] ); - } - /* sum_stage = 2.0F * sum_stage - seq->total; */ - if( sum_stage >= (threshold - CV_THRESHOLD_EPS) ) - { - numfalse++; - } - } - } - falsealarm = ((float) numfalse) / ((float) numneg); - -#ifdef CV_VERBOSE - { - float v_hitrate = 0.0F; - float v_falsealarm = 0.0F; - /* expected error of stage classifier regardless threshold */ - float v_experr = 0.0F; - - for( i = 0; i < numsamples; i++ ) - { - idx = icvGetIdxAt( sampleIdx, i ); - - sum_stage = 0.0F; - for( j = 0; j < seq->total; j++ ) - { - classifier = *((CvCARTHaarClassifier**) cvGetSeqElem( seq, j )); - sum_stage += classifier->eval( (CvIntHaarClassifier*) classifier, - (sum_type*) (data->sum.data.ptr + idx * data->sum.step), - (sum_type*) (data->tilted.data.ptr + idx * data->tilted.step), - data->normfactor.data.fl[idx] ); - } - /* sum_stage = 2.0F * sum_stage - seq->total; */ - if( sum_stage >= (threshold - CV_THRESHOLD_EPS) ) - { - if( data->cls.data.fl[idx] == 1.0F ) - { - v_hitrate += 1.0F; - } - else - { - v_falsealarm += 1.0F; - } - } - if( ( sum_stage >= 0.0F ) != (data->cls.data.fl[idx] == 1.0F) ) - { - v_experr += 1.0F; - } - } - v_experr /= numsamples; - printf( "|%4d|%3d%%|%c|%9f|%9f|%9f|%9f|\n", - seq->total, v_wt, ( (v_flipped) ? '+' : '-' ), - threshold, v_hitrate / numpos, v_falsealarm / numneg, - v_experr ); - printf( "+----+----+-+---------+---------+---------+---------+\n" ); - fflush( stdout ); - } -#endif /* CV_VERBOSE */ - - } while( falsealarm > maxfalsealarm && (!maxsplits || (num_splits < maxsplits) ) ); - cvBoostEndTraining( &trainer ); - - if( falsealarm > maxfalsealarm ) - { - stage = NULL; - } - else - { - stage = (CvStageHaarClassifier*) icvCreateStageHaarClassifier( seq->total, - threshold ); - cvCvtSeqToArray( seq, (CvArr*) stage->classifier ); - } - - /* CLEANUP */ - cvReleaseMemStorage( &storage ); - cvReleaseMat( &weakTrainVals ); - cvFree( &(eval.data.ptr) ); - - return (CvIntHaarClassifier*) stage; -} - - -static -CvBackgroundData* icvCreateBackgroundData( const char* filename, CvSize winsize ) -{ - CvBackgroundData* data = NULL; - - const char* dir = NULL; - char full[PATH_MAX]; - char* imgfilename = NULL; - size_t datasize = 0; - int count = 0; - FILE* input = NULL; - char* tmp = NULL; - int len = 0; - - assert( filename != NULL ); - - dir = strrchr( filename, '\\' ); - if( dir == NULL ) - { - dir = strrchr( filename, '/' ); - } - if( dir == NULL ) - { - imgfilename = &(full[0]); - } - else - { - strncpy( &(full[0]), filename, (dir - filename + 1) ); - imgfilename = &(full[(dir - filename + 1)]); - } - - input = fopen( filename, "r" ); - if( input != NULL ) - { - count = 0; - datasize = 0; - - /* count */ - while( !feof( input ) ) - { - *imgfilename = '\0'; - if( !fgets( imgfilename, PATH_MAX - (int)(imgfilename - full) - 1, input )) - break; - len = (int)strlen( imgfilename ); - for( ; len > 0 && isspace(imgfilename[len-1]); len-- ) - imgfilename[len-1] = '\0'; - if( len > 0 ) - { - if( (*imgfilename) == '#' ) continue; /* comment */ - count++; - datasize += sizeof( char ) * (strlen( &(full[0]) ) + 1); - } - } - if( count > 0 ) - { - //rewind( input ); - fseek( input, 0, SEEK_SET ); - datasize += sizeof( *data ) + sizeof( char* ) * count; - data = (CvBackgroundData*) cvAlloc( datasize ); - memset( (void*) data, 0, datasize ); - data->count = count; - data->filename = (char**) (data + 1); - data->last = 0; - data->round = 0; - data->winsize = winsize; - tmp = (char*) (data->filename + data->count); - count = 0; - while( !feof( input ) ) - { - *imgfilename = '\0'; - if( !fgets( imgfilename, PATH_MAX - (int)(imgfilename - full) - 1, input )) - break; - len = (int)strlen( imgfilename ); - if( len > 0 && imgfilename[len-1] == '\n' ) - imgfilename[len-1] = 0, len--; - if( len > 0 ) - { - if( (*imgfilename) == '#' ) continue; /* comment */ - data->filename[count++] = tmp; - strcpy( tmp, &(full[0]) ); - tmp += strlen( &(full[0]) ) + 1; - } - } - } - fclose( input ); - } - - return data; -} - -static -void icvReleaseBackgroundData( CvBackgroundData** data ) -{ - assert( data != NULL && (*data) != NULL ); - - cvFree( data ); -} - -static -CvBackgroundReader* icvCreateBackgroundReader() -{ - CvBackgroundReader* reader = NULL; - - reader = (CvBackgroundReader*) cvAlloc( sizeof( *reader ) ); - memset( (void*) reader, 0, sizeof( *reader ) ); - reader->src = cvMat( 0, 0, CV_8UC1, NULL ); - reader->img = cvMat( 0, 0, CV_8UC1, NULL ); - reader->offset = cvPoint( 0, 0 ); - reader->scale = 1.0F; - reader->scalefactor = 1.4142135623730950488016887242097F; - reader->stepfactor = 0.5F; - reader->point = reader->offset; - - return reader; -} - -static -void icvReleaseBackgroundReader( CvBackgroundReader** reader ) -{ - assert( reader != NULL && (*reader) != NULL ); - - if( (*reader)->src.data.ptr != NULL ) - { - cvFree( &((*reader)->src.data.ptr) ); - } - if( (*reader)->img.data.ptr != NULL ) - { - cvFree( &((*reader)->img.data.ptr) ); - } - - cvFree( reader ); -} - -static -void icvGetNextFromBackgroundData( CvBackgroundData* data, - CvBackgroundReader* reader ) -{ - IplImage* img = NULL; - size_t datasize = 0; - int round = 0; - int i = 0; - CvPoint offset = cvPoint(0,0); - - assert( data != NULL && reader != NULL ); - - if( reader->src.data.ptr != NULL ) - { - cvFree( &(reader->src.data.ptr) ); - reader->src.data.ptr = NULL; - } - if( reader->img.data.ptr != NULL ) - { - cvFree( &(reader->img.data.ptr) ); - reader->img.data.ptr = NULL; - } - - #ifdef CV_OPENMP - #pragma omp critical(c_background_data) - #endif /* CV_OPENMP */ - { - for( i = 0; i < data->count; i++ ) - { - round = data->round; - -//#ifdef CV_VERBOSE -// printf( "Open background image: %s\n", data->filename[data->last] ); -//#endif /* CV_VERBOSE */ - - data->last = rand() % data->count; - data->last %= data->count; - img = cvLoadImage( data->filename[data->last], 0 ); - if( !img ) - continue; - data->round += data->last / data->count; - data->round = data->round % (data->winsize.width * data->winsize.height); - - offset.x = round % data->winsize.width; - offset.y = round / data->winsize.width; - - offset.x = MIN( offset.x, img->width - data->winsize.width ); - offset.y = MIN( offset.y, img->height - data->winsize.height ); - - if( img != NULL && img->depth == IPL_DEPTH_8U && img->nChannels == 1 && - offset.x >= 0 && offset.y >= 0 ) - { - break; - } - if( img != NULL ) - cvReleaseImage( &img ); - img = NULL; - } - } - if( img == NULL ) - { - /* no appropriate image */ - -#ifdef CV_VERBOSE - printf( "Invalid background description file.\n" ); -#endif /* CV_VERBOSE */ - - assert( 0 ); - exit( 1 ); - } - datasize = sizeof( uchar ) * img->width * img->height; - reader->src = cvMat( img->height, img->width, CV_8UC1, (void*) cvAlloc( datasize ) ); - cvCopy( img, &reader->src, NULL ); - cvReleaseImage( &img ); - img = NULL; - - //reader->offset.x = round % data->winsize.width; - //reader->offset.y = round / data->winsize.width; - reader->offset = offset; - reader->point = reader->offset; - reader->scale = MAX( - ((float) data->winsize.width + reader->point.x) / ((float) reader->src.cols), - ((float) data->winsize.height + reader->point.y) / ((float) reader->src.rows) ); - - reader->img = cvMat( (int) (reader->scale * reader->src.rows + 0.5F), - (int) (reader->scale * reader->src.cols + 0.5F), - CV_8UC1, (void*) cvAlloc( datasize ) ); - cvResize( &(reader->src), &(reader->img) ); -} - - -/* - * icvGetBackgroundImage - * - * Get an image from background - * must be allocated and have size, previously passed to icvInitBackgroundReaders - * - * Usage example: - * icvInitBackgroundReaders( "bg.txt", cvSize( 24, 24 ) ); - * ... - * #pragma omp parallel - * { - * ... - * icvGetBackgourndImage( cvbgdata, cvbgreader, img ); - * ... - * } - * ... - * icvDestroyBackgroundReaders(); - */ -static -void icvGetBackgroundImage( CvBackgroundData* data, - CvBackgroundReader* reader, - CvMat* img ) -{ - CvMat mat; - - assert( data != NULL && reader != NULL && img != NULL ); - assert( CV_MAT_TYPE( img->type ) == CV_8UC1 ); - assert( img->cols == data->winsize.width ); - assert( img->rows == data->winsize.height ); - - if( reader->img.data.ptr == NULL ) - { - icvGetNextFromBackgroundData( data, reader ); - } - - mat = cvMat( data->winsize.height, data->winsize.width, CV_8UC1 ); - cvSetData( &mat, (void*) (reader->img.data.ptr + reader->point.y * reader->img.step - + reader->point.x * sizeof( uchar )), reader->img.step ); - - cvCopy( &mat, img, 0 ); - if( (int) ( reader->point.x + (1.0F + reader->stepfactor ) * data->winsize.width ) - < reader->img.cols ) - { - reader->point.x += (int) (reader->stepfactor * data->winsize.width); - } - else - { - reader->point.x = reader->offset.x; - if( (int) ( reader->point.y + (1.0F + reader->stepfactor ) * data->winsize.height ) - < reader->img.rows ) - { - reader->point.y += (int) (reader->stepfactor * data->winsize.height); - } - else - { - reader->point.y = reader->offset.y; - reader->scale *= reader->scalefactor; - if( reader->scale <= 1.0F ) - { - reader->img = cvMat( (int) (reader->scale * reader->src.rows), - (int) (reader->scale * reader->src.cols), - CV_8UC1, (void*) (reader->img.data.ptr) ); - cvResize( &(reader->src), &(reader->img) ); - } - else - { - icvGetNextFromBackgroundData( data, reader ); - } - } - } -} - - -/* - * icvInitBackgroundReaders - * - * Initialize background reading process. - * and are initialized. - * Must be called before any usage of background - * - * filename - name of background description file - * winsize - size of images will be obtained from background - * - * return 1 on success, 0 otherwise. - */ -static -int icvInitBackgroundReaders( const char* filename, CvSize winsize ) -{ - if( cvbgdata == NULL && filename != NULL ) - { - cvbgdata = icvCreateBackgroundData( filename, winsize ); - } - - if( cvbgdata ) - { - - #ifdef CV_OPENMP - #pragma omp parallel - #endif /* CV_OPENMP */ - { - #ifdef CV_OPENMP - #pragma omp critical(c_create_bg_data) - #endif /* CV_OPENMP */ - { - if( cvbgreader == NULL ) - { - cvbgreader = icvCreateBackgroundReader(); - } - } - } - - } - - return (cvbgdata != NULL); -} - - -/* - * icvDestroyBackgroundReaders - * - * Finish backgournd reading process - */ -static -void icvDestroyBackgroundReaders() -{ - /* release background reader in each thread */ - #ifdef CV_OPENMP - #pragma omp parallel - #endif /* CV_OPENMP */ - { - #ifdef CV_OPENMP - #pragma omp critical(c_release_bg_data) - #endif /* CV_OPENMP */ - { - if( cvbgreader != NULL ) - { - icvReleaseBackgroundReader( &cvbgreader ); - cvbgreader = NULL; - } - } - } - - if( cvbgdata != NULL ) - { - icvReleaseBackgroundData( &cvbgdata ); - cvbgdata = NULL; - } -} - - -/* - * icvGetAuxImages - * - * Get sum, tilted, sqsum images and calculate normalization factor - * All images must be allocated. - */ -static -void icvGetAuxImages( CvMat* img, CvMat* sum, CvMat* tilted, - CvMat* sqsum, float* normfactor ) -{ - CvRect normrect; - int p0, p1, p2, p3; - sum_type valsum = 0; - sqsum_type valsqsum = 0; - double area = 0.0; - - cvIntegral( img, sum, sqsum, tilted ); - normrect = cvRect( 1, 1, img->cols - 2, img->rows - 2 ); - CV_SUM_OFFSETS( p0, p1, p2, p3, normrect, img->cols + 1 ) - - area = normrect.width * normrect.height; - valsum = ((sum_type*) (sum->data.ptr))[p0] - ((sum_type*) (sum->data.ptr))[p1] - - ((sum_type*) (sum->data.ptr))[p2] + ((sum_type*) (sum->data.ptr))[p3]; - valsqsum = ((sqsum_type*) (sqsum->data.ptr))[p0] - - ((sqsum_type*) (sqsum->data.ptr))[p1] - - ((sqsum_type*) (sqsum->data.ptr))[p2] - + ((sqsum_type*) (sqsum->data.ptr))[p3]; - - /* sqrt( valsqsum / area - ( valsum / are )^2 ) * area */ - (*normfactor) = (float) sqrt( (double) (area * valsqsum - (double)valsum * valsum) ); -} - - -/* consumed counter */ -typedef uint64 ccounter_t; - -#define CCOUNTER_MAX CV_BIG_UINT(0xffffffffffffffff) -#define CCOUNTER_SET_ZERO(cc) ((cc) = 0) -#define CCOUNTER_INC(cc) ( (CCOUNTER_MAX > (cc) ) ? (++(cc)) : (CCOUNTER_MAX) ) -#define CCOUNTER_ADD(cc0, cc1) ( ((CCOUNTER_MAX-(cc1)) > (cc0) ) ? ((cc0) += (cc1)) : ((cc0) = CCOUNTER_MAX) ) -#define CCOUNTER_DIV(cc0, cc1) ( ((cc1) == 0) ? 0 : ( ((double)(cc0))/(double)(int64)(cc1) ) ) - - - -/* - * icvGetHaarTrainingData - * - * Unified method that can now be used for vec file, bg file and bg vec file - * - * Fill with samples, passed - */ -static -int icvGetHaarTrainingData( CvHaarTrainingData* data, int first, int count, - CvIntHaarClassifier* cascade, - CvGetHaarTrainingDataCallback callback, void* userdata, - int* consumed, double* acceptance_ratio ) -{ - int i = 0; - ccounter_t getcount = 0; - ccounter_t thread_getcount = 0; - ccounter_t consumed_count; - ccounter_t thread_consumed_count; - - /* private variables */ - CvMat img; - CvMat sum; - CvMat tilted; - CvMat sqsum; - - sum_type* sumdata; - sum_type* tilteddata; - float* normfactor; - - /* end private variables */ - - assert( data != NULL ); - assert( first + count <= data->maxnum ); - assert( cascade != NULL ); - assert( callback != NULL ); - - // if( !cvbgdata ) return 0; this check needs to be done in the callback for BG - - CCOUNTER_SET_ZERO(getcount); - CCOUNTER_SET_ZERO(thread_getcount); - CCOUNTER_SET_ZERO(consumed_count); - CCOUNTER_SET_ZERO(thread_consumed_count); - - #ifdef CV_OPENMP - #pragma omp parallel private(img, sum, tilted, sqsum, sumdata, tilteddata, \ - normfactor, thread_consumed_count, thread_getcount) - #endif /* CV_OPENMP */ - { - sumdata = NULL; - tilteddata = NULL; - normfactor = NULL; - - CCOUNTER_SET_ZERO(thread_getcount); - CCOUNTER_SET_ZERO(thread_consumed_count); - int ok = 1; - - img = cvMat( data->winsize.height, data->winsize.width, CV_8UC1, - cvAlloc( sizeof( uchar ) * data->winsize.height * data->winsize.width ) ); - sum = cvMat( data->winsize.height + 1, data->winsize.width + 1, - CV_SUM_MAT_TYPE, NULL ); - tilted = cvMat( data->winsize.height + 1, data->winsize.width + 1, - CV_SUM_MAT_TYPE, NULL ); - sqsum = cvMat( data->winsize.height + 1, data->winsize.width + 1, CV_SQSUM_MAT_TYPE, - cvAlloc( sizeof( sqsum_type ) * (data->winsize.height + 1) - * (data->winsize.width + 1) ) ); - - #ifdef CV_OPENMP - #pragma omp for schedule(static, 1) - #endif /* CV_OPENMP */ - for( i = first; (i < first + count); i++ ) - { - if( !ok ) - continue; - for( ; ; ) - { - ok = callback( &img, userdata ); - if( !ok ) - break; - - CCOUNTER_INC(thread_consumed_count); - - sumdata = (sum_type*) (data->sum.data.ptr + i * data->sum.step); - tilteddata = (sum_type*) (data->tilted.data.ptr + i * data->tilted.step); - normfactor = data->normfactor.data.fl + i; - sum.data.ptr = (uchar*) sumdata; - tilted.data.ptr = (uchar*) tilteddata; - icvGetAuxImages( &img, &sum, &tilted, &sqsum, normfactor ); - if( cascade->eval( cascade, sumdata, tilteddata, *normfactor ) != 0.0F ) - { - CCOUNTER_INC(thread_getcount); - break; - } - } - -#ifdef CV_VERBOSE - if( (i - first) % 500 == 0 ) - { - fprintf( stderr, "%3d%%\r", (int) ( 100.0 * (i - first) / count ) ); - fflush( stderr ); - } -#endif /* CV_VERBOSE */ - } - - cvFree( &(img.data.ptr) ); - cvFree( &(sqsum.data.ptr) ); - - #ifdef CV_OPENMP - #pragma omp critical (c_consumed_count) - #endif /* CV_OPENMP */ - { - /* consumed_count += thread_consumed_count; */ - CCOUNTER_ADD(getcount, thread_getcount); - CCOUNTER_ADD(consumed_count, thread_consumed_count); - } - } /* omp parallel */ - - if( consumed != NULL ) - { - *consumed = (int)consumed_count; - } - - if( acceptance_ratio != NULL ) - { - /* *acceptance_ratio = ((double) count) / consumed_count; */ - *acceptance_ratio = CCOUNTER_DIV(count, consumed_count); - } - - return static_cast(getcount); -} - -/* - * icvGetHaarTrainingDataFromBG - * - * Fill with background samples, passed - * Background reading process must be initialized before call. - */ -//static -//int icvGetHaarTrainingDataFromBG( CvHaarTrainingData* data, int first, int count, -// CvIntHaarClassifier* cascade, double* acceptance_ratio ) -//{ -// int i = 0; -// ccounter_t consumed_count; -// ccounter_t thread_consumed_count; -// -// /* private variables */ -// CvMat img; -// CvMat sum; -// CvMat tilted; -// CvMat sqsum; -// -// sum_type* sumdata; -// sum_type* tilteddata; -// float* normfactor; -// -// /* end private variables */ -// -// assert( data != NULL ); -// assert( first + count <= data->maxnum ); -// assert( cascade != NULL ); -// -// if( !cvbgdata ) return 0; -// -// CCOUNTER_SET_ZERO(consumed_count); -// CCOUNTER_SET_ZERO(thread_consumed_count); -// -// #ifdef CV_OPENMP -// #pragma omp parallel private(img, sum, tilted, sqsum, sumdata, tilteddata, -// normfactor, thread_consumed_count) -// #endif /* CV_OPENMP */ -// { -// sumdata = NULL; -// tilteddata = NULL; -// normfactor = NULL; -// -// CCOUNTER_SET_ZERO(thread_consumed_count); -// -// img = cvMat( data->winsize.height, data->winsize.width, CV_8UC1, -// cvAlloc( sizeof( uchar ) * data->winsize.height * data->winsize.width ) ); -// sum = cvMat( data->winsize.height + 1, data->winsize.width + 1, -// CV_SUM_MAT_TYPE, NULL ); -// tilted = cvMat( data->winsize.height + 1, data->winsize.width + 1, -// CV_SUM_MAT_TYPE, NULL ); -// sqsum = cvMat( data->winsize.height + 1, data->winsize.width + 1, -// CV_SQSUM_MAT_TYPE, -// cvAlloc( sizeof( sqsum_type ) * (data->winsize.height + 1) -// * (data->winsize.width + 1) ) ); -// -// #ifdef CV_OPENMP -// #pragma omp for schedule(static, 1) -// #endif /* CV_OPENMP */ -// for( i = first; i < first + count; i++ ) -// { -// for( ; ; ) -// { -// icvGetBackgroundImage( cvbgdata, cvbgreader, &img ); -// -// CCOUNTER_INC(thread_consumed_count); -// -// sumdata = (sum_type*) (data->sum.data.ptr + i * data->sum.step); -// tilteddata = (sum_type*) (data->tilted.data.ptr + i * data->tilted.step); -// normfactor = data->normfactor.data.fl + i; -// sum.data.ptr = (uchar*) sumdata; -// tilted.data.ptr = (uchar*) tilteddata; -// icvGetAuxImages( &img, &sum, &tilted, &sqsum, normfactor ); -// if( cascade->eval( cascade, sumdata, tilteddata, *normfactor ) != 0.0F ) -// { -// break; -// } -// } -// -//#ifdef CV_VERBOSE -// if( (i - first) % 500 == 0 ) -// { -// fprintf( stderr, "%3d%%\r", (int) ( 100.0 * (i - first) / count ) ); -// fflush( stderr ); -// } -//#endif /* CV_VERBOSE */ -// -// } -// -// cvFree( &(img.data.ptr) ); -// cvFree( &(sqsum.data.ptr) ); -// -// #ifdef CV_OPENMP -// #pragma omp critical (c_consumed_count) -// #endif /* CV_OPENMP */ -// { -// /* consumed_count += thread_consumed_count; */ -// CCOUNTER_ADD(consumed_count, thread_consumed_count); -// } -// } /* omp parallel */ -// -// if( acceptance_ratio != NULL ) -// { -// /* *acceptance_ratio = ((double) count) / consumed_count; */ -// *acceptance_ratio = CCOUNTER_DIV(count, consumed_count); -// } -// -// return count; -//} - -int icvGetHaarTraininDataFromVecCallback( CvMat* img, void* userdata ) -{ - uchar tmp = 0; - int r = 0; - int c = 0; - - assert( img->rows * img->cols == ((CvVecFile*) userdata)->vecsize ); - - size_t elements_read = fread( &tmp, sizeof( tmp ), 1, ((CvVecFile*) userdata)->input ); - CV_Assert(elements_read == 1); - elements_read = fread( ((CvVecFile*) userdata)->vector, sizeof( short ), - ((CvVecFile*) userdata)->vecsize, ((CvVecFile*) userdata)->input ); - CV_Assert(elements_read == (size_t)((CvVecFile*) userdata)->vecsize); - - if( feof( ((CvVecFile*) userdata)->input ) || - (((CvVecFile*) userdata)->last)++ >= ((CvVecFile*) userdata)->count ) - { - return 0; - } - - for( r = 0; r < img->rows; r++ ) - { - for( c = 0; c < img->cols; c++ ) - { - CV_MAT_ELEM( *img, uchar, r, c ) = - (uchar) ( ((CvVecFile*) userdata)->vector[r * img->cols + c] ); - } - } - - return 1; -} - -static int icvGetHaarTrainingDataFromBGCallback ( CvMat* img, void* /*userdata*/ ) -{ - if (! cvbgdata) - return 0; - - if (! cvbgreader) - return 0; - - // just in case icvGetBackgroundImage is not thread-safe ... - #ifdef CV_OPENMP - #pragma omp critical (get_background_image_callback) - #endif /* CV_OPENMP */ - { - icvGetBackgroundImage( cvbgdata, cvbgreader, img ); - } - - return 1; -} - -/* - * icvGetHaarTrainingDataFromVec - * Get training data from .vec file - */ -static -int icvGetHaarTrainingDataFromVec( CvHaarTrainingData* data, int first, int count, - CvIntHaarClassifier* cascade, - const char* filename, - int* consumed ) -{ - int getcount = 0; - - CV_FUNCNAME( "icvGetHaarTrainingDataFromVec" ); - - __BEGIN__; - - CvVecFile file; - short tmp = 0; - - file.input = NULL; - if( filename ) file.input = fopen( filename, "rb" ); - - if( file.input != NULL ) - { - size_t elements_read1 = fread( &file.count, sizeof( file.count ), 1, file.input ); - size_t elements_read2 = fread( &file.vecsize, sizeof( file.vecsize ), 1, file.input ); - size_t elements_read3 = fread( &tmp, sizeof( tmp ), 1, file.input ); - size_t elements_read4 = fread( &tmp, sizeof( tmp ), 1, file.input ); - CV_Assert(elements_read1 == 1 && elements_read2 == 1 && elements_read3 == 1 && elements_read4 == 1); - - if( !feof( file.input ) ) - { - if( file.vecsize != data->winsize.width * data->winsize.height ) - { - fclose( file.input ); - CV_ERROR( CV_StsError, "Vec file sample size mismatch" ); - } - - file.last = 0; - file.vector = (short*) cvAlloc( sizeof( *file.vector ) * file.vecsize ); - getcount = icvGetHaarTrainingData( data, first, count, cascade, - icvGetHaarTraininDataFromVecCallback, &file, consumed, NULL); - cvFree( &file.vector ); - } - fclose( file.input ); - } - - __END__; - - return getcount; -} - -/* - * icvGetHaarTrainingDataFromBG - * - * Fill with background samples, passed - * Background reading process must be initialized before call, alternaly, a file - * name to a vec file may be passed, a NULL filename indicates old behaviour - */ -static -int icvGetHaarTrainingDataFromBG( CvHaarTrainingData* data, int first, int count, - CvIntHaarClassifier* cascade, double* acceptance_ratio, const char * filename = NULL ) -{ - CV_FUNCNAME( "icvGetHaarTrainingDataFromBG" ); - - __BEGIN__; - - if (filename) - { - CvVecFile file; - short tmp = 0; - - file.input = NULL; - if( filename ) file.input = fopen( filename, "rb" ); - - if( file.input != NULL ) - { - size_t elements_read1 = fread( &file.count, sizeof( file.count ), 1, file.input ); - size_t elements_read2 = fread( &file.vecsize, sizeof( file.vecsize ), 1, file.input ); - size_t elements_read3 = fread( &tmp, sizeof( tmp ), 1, file.input ); - size_t elements_read4 = fread( &tmp, sizeof( tmp ), 1, file.input ); - CV_Assert(elements_read1 == 1 && elements_read2 == 1 && elements_read3 == 1 && elements_read4 == 1); - if( !feof( file.input ) ) - { - if( file.vecsize != data->winsize.width * data->winsize.height ) - { - fclose( file.input ); - CV_ERROR( CV_StsError, "Vec file sample size mismatch" ); - } - - file.last = 0; - file.vector = (short*) cvAlloc( sizeof( *file.vector ) * file.vecsize ); - icvGetHaarTrainingData( data, first, count, cascade, - icvGetHaarTraininDataFromVecCallback, &file, NULL, acceptance_ratio); - cvFree( &file.vector ); - } - fclose( file.input ); - } - } - else - { - icvGetHaarTrainingData( data, first, count, cascade, - icvGetHaarTrainingDataFromBGCallback, NULL, NULL, acceptance_ratio); - } - - __END__; - - return count; -} - -void cvCreateCascadeClassifier( const char* dirname, - const char* vecfilename, - const char* bgfilename, - int npos, int nneg, int nstages, - int numprecalculated, - int numsplits, - float minhitrate, float maxfalsealarm, - float weightfraction, - int mode, int symmetric, - int equalweights, - int winwidth, int winheight, - int boosttype, int stumperror ) -{ - CvCascadeHaarClassifier* cascade = NULL; - CvHaarTrainingData* data = NULL; - CvIntHaarFeatures* haar_features; - CvSize winsize; - int i = 0; - int j = 0; - int poscount = 0; - int negcount = 0; - int consumed = 0; - double false_alarm = 0; - char stagename[PATH_MAX]; - float posweight = 1.0F; - float negweight = 1.0F; - FILE* file; - -#ifdef CV_VERBOSE - double proctime = 0.0F; -#endif /* CV_VERBOSE */ - - assert( dirname != NULL ); - assert( bgfilename != NULL ); - assert( vecfilename != NULL ); - assert( nstages > 0 ); - - winsize = cvSize( winwidth, winheight ); - - cascade = (CvCascadeHaarClassifier*) icvCreateCascadeHaarClassifier( nstages ); - cascade->count = 0; - - if( icvInitBackgroundReaders( bgfilename, winsize ) ) - { - data = icvCreateHaarTrainingData( winsize, npos + nneg ); - haar_features = icvCreateIntHaarFeatures( winsize, mode, symmetric ); - -#ifdef CV_VERBOSE - printf("Number of features used : %d\n", haar_features->count); -#endif /* CV_VERBOSE */ - - for( i = 0; i < nstages; i++, cascade->count++ ) - { - sprintf( stagename, "%s%d/%s", dirname, i, CV_STAGE_CART_FILE_NAME ); - cascade->classifier[i] = - icvLoadCARTStageHaarClassifier( stagename, winsize.width + 1 ); - - if( !icvMkDir( stagename ) ) - { - -#ifdef CV_VERBOSE - printf( "UNABLE TO CREATE DIRECTORY: %s\n", stagename ); -#endif /* CV_VERBOSE */ - - break; - } - if( cascade->classifier[i] != NULL ) - { - -#ifdef CV_VERBOSE - printf( "STAGE: %d LOADED.\n", i ); -#endif /* CV_VERBOSE */ - - continue; - } - -#ifdef CV_VERBOSE - printf( "STAGE: %d\n", i ); -#endif /* CV_VERBOSE */ - - poscount = icvGetHaarTrainingDataFromVec( data, 0, npos, - (CvIntHaarClassifier*) cascade, vecfilename, &consumed ); -#ifdef CV_VERBOSE - printf( "POS: %d %d %f\n", poscount, consumed, - ((float) poscount) / consumed ); -#endif /* CV_VERBOSE */ - - if( poscount <= 0 ) - { - -#ifdef CV_VERBOSE - printf( "UNABLE TO OBTAIN POS SAMPLES\n" ); -#endif /* CV_VERBOSE */ - - break; - } - -#ifdef CV_VERBOSE - proctime = -TIME( 0 ); -#endif /* CV_VERBOSE */ - - negcount = icvGetHaarTrainingDataFromBG( data, poscount, nneg, - (CvIntHaarClassifier*) cascade, &false_alarm ); -#ifdef CV_VERBOSE - printf( "NEG: %d %g\n", negcount, false_alarm ); - printf( "BACKGROUND PROCESSING TIME: %.2f\n", - (proctime + TIME( 0 )) ); -#endif /* CV_VERBOSE */ - - if( negcount <= 0 ) - { - -#ifdef CV_VERBOSE - printf( "UNABLE TO OBTAIN NEG SAMPLES\n" ); -#endif /* CV_VERBOSE */ - - break; - } - - data->sum.rows = data->tilted.rows = poscount + negcount; - data->normfactor.cols = data->weights.cols = data->cls.cols = - poscount + negcount; - - posweight = (equalweights) ? 1.0F / (poscount + negcount) : (0.5F / poscount); - negweight = (equalweights) ? 1.0F / (poscount + negcount) : (0.5F / negcount); - for( j = 0; j < poscount; j++ ) - { - data->weights.data.fl[j] = posweight; - data->cls.data.fl[j] = 1.0F; - - } - for( j = poscount; j < poscount + negcount; j++ ) - { - data->weights.data.fl[j] = negweight; - data->cls.data.fl[j] = 0.0F; - } - -#ifdef CV_VERBOSE - proctime = -TIME( 0 ); -#endif /* CV_VERBOSE */ - - icvPrecalculate( data, haar_features, numprecalculated ); - -#ifdef CV_VERBOSE - printf( "PRECALCULATION TIME: %.2f\n", (proctime + TIME( 0 )) ); -#endif /* CV_VERBOSE */ - -#ifdef CV_VERBOSE - proctime = -TIME( 0 ); -#endif /* CV_VERBOSE */ - - cascade->classifier[i] = icvCreateCARTStageClassifier( data, NULL, - haar_features, minhitrate, maxfalsealarm, symmetric, weightfraction, - numsplits, (CvBoostType) boosttype, (CvStumpError) stumperror, 0 ); - -#ifdef CV_VERBOSE - printf( "STAGE TRAINING TIME: %.2f\n", (proctime + TIME( 0 )) ); -#endif /* CV_VERBOSE */ - - file = fopen( stagename, "w" ); - if( file != NULL ) - { - cascade->classifier[i]->save( - (CvIntHaarClassifier*) cascade->classifier[i], file ); - fclose( file ); - } - else - { - -#ifdef CV_VERBOSE - printf( "FAILED TO SAVE STAGE CLASSIFIER IN FILE %s\n", stagename ); -#endif /* CV_VERBOSE */ - - } - - } - icvReleaseIntHaarFeatures( &haar_features ); - icvReleaseHaarTrainingData( &data ); - - if( i == nstages ) - { - char xml_path[1024]; - int len = (int)strlen(dirname); - CvHaarClassifierCascade* cascade1 = 0; - strcpy( xml_path, dirname ); - if( xml_path[len-1] == '\\' || xml_path[len-1] == '/' ) - len--; - strcpy( xml_path + len, ".xml" ); - cascade1 = cvLoadHaarClassifierCascade( dirname, cvSize(winwidth,winheight) ); - if( cascade1 ) - cvSave( xml_path, cascade1 ); - cvReleaseHaarClassifierCascade( &cascade1 ); - } - } - else - { -#ifdef CV_VERBOSE - printf( "FAILED TO INITIALIZE BACKGROUND READERS\n" ); -#endif /* CV_VERBOSE */ - } - - /* CLEAN UP */ - icvDestroyBackgroundReaders(); - cascade->release( (CvIntHaarClassifier**) &cascade ); -} - -/* tree cascade classifier */ - -static int icvNumSplits( CvStageHaarClassifier* stage ) -{ - int i; - int num; - - num = 0; - for( i = 0; i < stage->count; i++ ) - { - num += ((CvCARTHaarClassifier*) stage->classifier[i])->count; - } - - return num; -} - -static void icvSetNumSamples( CvHaarTrainingData* training_data, int num ) -{ - assert( num <= training_data->maxnum ); - - training_data->sum.rows = training_data->tilted.rows = num; - training_data->normfactor.cols = num; - training_data->cls.cols = training_data->weights.cols = num; -} - -static void icvSetWeightsAndClasses( CvHaarTrainingData* training_data, - int num1, float weight1, float cls1, - int num2, float weight2, float cls2 ) -{ - int j; - - assert( num1 + num2 <= training_data->maxnum ); - - for( j = 0; j < num1; j++ ) - { - training_data->weights.data.fl[j] = weight1; - training_data->cls.data.fl[j] = cls1; - } - for( j = num1; j < num1 + num2; j++ ) - { - training_data->weights.data.fl[j] = weight2; - training_data->cls.data.fl[j] = cls2; - } -} - -static CvMat* icvGetUsedValues( CvHaarTrainingData* training_data, - int start, int num, - CvIntHaarFeatures* haar_features, - CvStageHaarClassifier* stage ) -{ - CvMat* ptr = NULL; - CvMat* feature_idx = NULL; - - CV_FUNCNAME( "icvGetUsedValues" ); - - __BEGIN__; - - int num_splits; - int i, j; - int r; - int total, last; - - num_splits = icvNumSplits( stage ); - - CV_CALL( feature_idx = cvCreateMat( 1, num_splits, CV_32SC1 ) ); - - total = 0; - for( i = 0; i < stage->count; i++ ) - { - CvCARTHaarClassifier* cart; - - cart = (CvCARTHaarClassifier*) stage->classifier[i]; - for( j = 0; j < cart->count; j++ ) - { - feature_idx->data.i[total++] = cart->compidx[j]; - } - } - std::sort(feature_idx->data.i, feature_idx->data.i + total); - - last = 0; - for( i = 1; i < total; i++ ) - { - if( feature_idx->data.i[i] != feature_idx->data.i[last] ) - { - feature_idx->data.i[++last] = feature_idx->data.i[i]; - } - } - total = last + 1; - CV_CALL( ptr = cvCreateMat( num, total, CV_32FC1 ) ); - - - #ifdef CV_OPENMP - #pragma omp parallel for - #endif - for( r = start; r < start + num; r++ ) - { - int c; - - for( c = 0; c < total; c++ ) - { - float val, normfactor; - int fnum; - - fnum = feature_idx->data.i[c]; - - val = cvEvalFastHaarFeature( haar_features->fastfeature + fnum, - (sum_type*) (training_data->sum.data.ptr - + r * training_data->sum.step), - (sum_type*) (training_data->tilted.data.ptr - + r * training_data->tilted.step) ); - normfactor = training_data->normfactor.data.fl[r]; - val = ( normfactor == 0.0F ) ? 0.0F : (val / normfactor); - CV_MAT_ELEM( *ptr, float, r - start, c ) = val; - } - } - - __END__; - - cvReleaseMat( &feature_idx ); - - return ptr; -} - -/* possible split in the tree */ -typedef struct CvSplit -{ - CvTreeCascadeNode* parent; - CvTreeCascadeNode* single_cluster; - CvTreeCascadeNode* multiple_clusters; - int num_clusters; - float single_multiple_ratio; - - struct CvSplit* next; -} CvSplit; - - -void cvCreateTreeCascadeClassifier( const char* dirname, - const char* vecfilename, - const char* bgfilename, - int npos, int nneg, int nstages, - int numprecalculated, - int numsplits, - float minhitrate, float maxfalsealarm, - float weightfraction, - int mode, int symmetric, - int equalweights, - int winwidth, int winheight, - int boosttype, int stumperror, - int maxtreesplits, int minpos, bool bg_vecfile ) -{ - CvTreeCascadeClassifier* tcc = NULL; - CvIntHaarFeatures* haar_features = NULL; - CvHaarTrainingData* training_data = NULL; - CvMat* vals = NULL; - CvMat* cluster_idx = NULL; - CvMat* idx = NULL; - CvMat* features_idx = NULL; - - CV_FUNCNAME( "cvCreateTreeCascadeClassifier" ); - - __BEGIN__; - - int i, k; - CvTreeCascadeNode* leaves; - int best_num, cur_num; - CvSize winsize; - char stage_name[PATH_MAX]; - char buf[PATH_MAX]; - char* suffix; - int total_splits; - - int poscount; - int negcount; - int consumed; - double false_alarm; - double proctime; - - int nleaves; - double required_leaf_fa_rate; - float neg_ratio; - - int max_clusters; - - max_clusters = CV_MAX_CLUSTERS; - neg_ratio = (float) nneg / npos; - - nleaves = 1 + MAX( 0, maxtreesplits ); - required_leaf_fa_rate = pow( (double) maxfalsealarm, (double) nstages ) / nleaves; - - printf( "Required leaf false alarm rate: %g\n", required_leaf_fa_rate ); - - total_splits = 0; - - winsize = cvSize( winwidth, winheight ); - - CV_CALL( cluster_idx = cvCreateMat( 1, npos + nneg, CV_32SC1 ) ); - CV_CALL( idx = cvCreateMat( 1, npos + nneg, CV_32SC1 ) ); - - CV_CALL( tcc = (CvTreeCascadeClassifier*) - icvLoadTreeCascadeClassifier( dirname, winwidth + 1, &total_splits ) ); - CV_CALL( leaves = icvFindDeepestLeaves( tcc ) ); - - CV_CALL( icvPrintTreeCascade( tcc->root ) ); - - haar_features = icvCreateIntHaarFeatures( winsize, mode, symmetric ); - - printf( "Number of features used : %d\n", haar_features->count ); - - training_data = icvCreateHaarTrainingData( winsize, npos + nneg ); - - sprintf( stage_name, "%s/", dirname ); - suffix = stage_name + strlen( stage_name ); - - if (! bg_vecfile) - if( !icvInitBackgroundReaders( bgfilename, winsize ) && nstages > 0 ) - CV_ERROR( CV_StsError, "Unable to read negative images" ); - - if( nstages > 0 ) - { - /* width-first search in the tree */ - do - { - CvSplit* first_split; - CvSplit* last_split; - CvSplit* cur_split; - - CvTreeCascadeNode* parent; - CvTreeCascadeNode* cur_node; - CvTreeCascadeNode* last_node; - - first_split = last_split = cur_split = NULL; - parent = leaves; - leaves = NULL; - do - { - int best_clusters; /* best selected number of clusters */ - float posweight, negweight; - double leaf_fa_rate; - - if( parent ) sprintf( buf, "%d", parent->idx ); - else sprintf( buf, "NULL" ); - printf( "\nParent node: %s\n\n", buf ); - - printf( "*** 1 cluster ***\n" ); - - tcc->eval = icvEvalTreeCascadeClassifierFilter; - /* find path from the root to the node */ - icvSetLeafNode( tcc, parent ); - - /* load samples */ - consumed = 0; - poscount = icvGetHaarTrainingDataFromVec( training_data, 0, npos, - (CvIntHaarClassifier*) tcc, vecfilename, &consumed ); - - printf( "POS: %d %d %f\n", poscount, consumed, ((double) poscount)/consumed ); - - if( poscount <= 0 ) - CV_ERROR( CV_StsError, "Unable to obtain positive samples" ); - - fflush( stdout ); - - proctime = -TIME( 0 ); - - nneg = (int) (neg_ratio * poscount); - negcount = icvGetHaarTrainingDataFromBG( training_data, poscount, nneg, - (CvIntHaarClassifier*) tcc, &false_alarm, bg_vecfile ? bgfilename : NULL ); - printf( "NEG: %d %g\n", negcount, false_alarm ); - - printf( "BACKGROUND PROCESSING TIME: %.2f\n", (proctime + TIME( 0 )) ); - - if( negcount <= 0 ) - CV_ERROR( CV_StsError, "Unable to obtain negative samples" ); - - leaf_fa_rate = false_alarm; - if( leaf_fa_rate <= required_leaf_fa_rate ) - { - printf( "Required leaf false alarm rate achieved. " - "Branch training terminated.\n" ); - } - else if( nleaves == 1 && tcc->next_idx == nstages ) - { - printf( "Required number of stages achieved. " - "Branch training terminated.\n" ); - } - else - { - CvTreeCascadeNode* single_cluster; - CvTreeCascadeNode* multiple_clusters; - int single_num; - - icvSetNumSamples( training_data, poscount + negcount ); - posweight = (equalweights) ? 1.0F / (poscount + negcount) : (0.5F/poscount); - negweight = (equalweights) ? 1.0F / (poscount + negcount) : (0.5F/negcount); - icvSetWeightsAndClasses( training_data, - poscount, posweight, 1.0F, negcount, negweight, 0.0F ); - - fflush( stdout ); - - /* precalculate feature values */ - proctime = -TIME( 0 ); - icvPrecalculate( training_data, haar_features, numprecalculated ); - printf( "Precalculation time: %.2f\n", (proctime + TIME( 0 )) ); - - /* train stage classifier using all positive samples */ - CV_CALL( single_cluster = icvCreateTreeCascadeNode() ); - fflush( stdout ); - - proctime = -TIME( 0 ); - single_cluster->stage = - (CvStageHaarClassifier*) icvCreateCARTStageClassifier( - training_data, NULL, haar_features, - minhitrate, maxfalsealarm, symmetric, - weightfraction, numsplits, (CvBoostType) boosttype, - (CvStumpError) stumperror, 0 ); - printf( "Stage training time: %.2f\n", (proctime + TIME( 0 )) ); - - single_num = icvNumSplits( single_cluster->stage ); - best_num = single_num; - best_clusters = 1; - multiple_clusters = NULL; - - printf( "Number of used features: %d\n", single_num ); - - if( maxtreesplits >= 0 ) - { - max_clusters = MIN( max_clusters, maxtreesplits - total_splits + 1 ); - } - - /* try clustering */ - vals = NULL; - for( k = 2; k <= max_clusters; k++ ) - { - int cluster; - int stop_clustering; - - printf( "*** %d clusters ***\n", k ); - - /* check whether clusters are big enough */ - stop_clustering = ( k * minpos > poscount ); - if( !stop_clustering ) - { - int num[CV_MAX_CLUSTERS]; - - if( k == 2 ) - { - proctime = -TIME( 0 ); - CV_CALL( vals = icvGetUsedValues( training_data, 0, poscount, - haar_features, single_cluster->stage ) ); - printf( "Getting values for clustering time: %.2f\n", (proctime + TIME(0)) ); - printf( "Value matirx size: %d x %d\n", vals->rows, vals->cols ); - fflush( stdout ); - - cluster_idx->cols = vals->rows; - for( i = 0; i < negcount; i++ ) idx->data.i[i] = poscount + i; - } - - proctime = -TIME( 0 ); - - CV_CALL( cvKMeans2( vals, k, cluster_idx, CV_TERM_CRITERIA() ) ); - - printf( "Clustering time: %.2f\n", (proctime + TIME( 0 )) ); - - for( cluster = 0; cluster < k; cluster++ ) num[cluster] = 0; - for( i = 0; i < cluster_idx->cols; i++ ) - num[cluster_idx->data.i[i]]++; - for( cluster = 0; cluster < k; cluster++ ) - { - if( num[cluster] < minpos ) - { - stop_clustering = 1; - break; - } - } - } - - if( stop_clustering ) - { - printf( "Clusters are too small. Clustering aborted.\n" ); - break; - } - - cur_num = 0; - cur_node = last_node = NULL; - for( cluster = 0; (cluster < k) && (cur_num < best_num); cluster++ ) - { - CvTreeCascadeNode* new_node; - - int num_splits; - int last_pos; - int total_pos; - - printf( "Cluster: %d\n", cluster ); - - last_pos = negcount; - for( i = 0; i < cluster_idx->cols; i++ ) - { - if( cluster_idx->data.i[i] == cluster ) - { - idx->data.i[last_pos++] = i; - } - } - idx->cols = last_pos; - - total_pos = idx->cols - negcount; - printf( "# pos: %d of %d. (%d%%)\n", total_pos, poscount, - 100 * total_pos / poscount ); - - CV_CALL( new_node = icvCreateTreeCascadeNode() ); - if( last_node ) last_node->next = new_node; - else cur_node = new_node; - last_node = new_node; - - posweight = (equalweights) - ? 1.0F / (total_pos + negcount) : (0.5F / total_pos); - negweight = (equalweights) - ? 1.0F / (total_pos + negcount) : (0.5F / negcount); - - icvSetWeightsAndClasses( training_data, - poscount, posweight, 1.0F, negcount, negweight, 0.0F ); - - /* CV_DEBUG_SAVE( idx ); */ - - fflush( stdout ); - - proctime = -TIME( 0 ); - new_node->stage = (CvStageHaarClassifier*) - icvCreateCARTStageClassifier( training_data, idx, haar_features, - minhitrate, maxfalsealarm, symmetric, - weightfraction, numsplits, (CvBoostType) boosttype, - (CvStumpError) stumperror, best_num - cur_num ); - printf( "Stage training time: %.2f\n", (proctime + TIME( 0 )) ); - - if( !(new_node->stage) ) - { - printf( "Stage training aborted.\n" ); - cur_num = best_num + 1; - } - else - { - num_splits = icvNumSplits( new_node->stage ); - cur_num += num_splits; - - printf( "Number of used features: %d\n", num_splits ); - } - } /* for each cluster */ - - if( cur_num < best_num ) - { - icvReleaseTreeCascadeNodes( &multiple_clusters ); - best_num = cur_num; - best_clusters = k; - multiple_clusters = cur_node; - } - else - { - icvReleaseTreeCascadeNodes( &cur_node ); - } - } /* try different number of clusters */ - cvReleaseMat( &vals ); - - CvSplit* curSplit; - CV_CALL( curSplit = (CvSplit*) cvAlloc( sizeof( *curSplit ) ) ); - memset(curSplit, 0, sizeof(*curSplit)); - - if( last_split ) last_split->next = curSplit; - else first_split = curSplit; - last_split = curSplit; - - curSplit->single_cluster = single_cluster; - curSplit->multiple_clusters = multiple_clusters; - curSplit->num_clusters = best_clusters; - curSplit->parent = parent; - curSplit->single_multiple_ratio = (float) single_num / best_num; - } - - if( parent ) parent = parent->next_same_level; - } while( parent ); - - /* choose which nodes should be splitted */ - do - { - float max_single_multiple_ratio; - - cur_split = NULL; - max_single_multiple_ratio = 0.0F; - last_split = first_split; - while( last_split ) - { - if( last_split->single_cluster && last_split->multiple_clusters && - last_split->single_multiple_ratio > max_single_multiple_ratio ) - { - max_single_multiple_ratio = last_split->single_multiple_ratio; - cur_split = last_split; - } - last_split = last_split->next; - } - if( cur_split ) - { - if( maxtreesplits < 0 || - cur_split->num_clusters <= maxtreesplits - total_splits + 1 ) - { - cur_split->single_cluster = NULL; - total_splits += cur_split->num_clusters - 1; - } - else - { - icvReleaseTreeCascadeNodes( &(cur_split->multiple_clusters) ); - cur_split->multiple_clusters = NULL; - } - } - } while( cur_split ); - - /* attach new nodes to the tree */ - leaves = last_node = NULL; - last_split = first_split; - while( last_split ) - { - cur_node = (last_split->multiple_clusters) - ? last_split->multiple_clusters : last_split->single_cluster; - parent = last_split->parent; - if( parent ) parent->child = cur_node; - - /* connect leaves via next_same_level and save them */ - for( ; cur_node; cur_node = cur_node->next ) - { - FILE* file; - - if( last_node ) last_node->next_same_level = cur_node; - else leaves = cur_node; - last_node = cur_node; - cur_node->parent = parent; - - cur_node->idx = tcc->next_idx; - tcc->next_idx++; - sprintf( suffix, "%d/%s", cur_node->idx, CV_STAGE_CART_FILE_NAME ); - file = NULL; - if( icvMkDir( stage_name ) && (file = fopen( stage_name, "w" )) != 0 ) - { - cur_node->stage->save( (CvIntHaarClassifier*) cur_node->stage, file ); - fprintf( file, "\n%d\n%d\n", - ((parent) ? parent->idx : -1), - ((cur_node->next) ? tcc->next_idx : -1) ); - } - else - { - printf( "Failed to save classifier into %s\n", stage_name ); - } - if( file ) fclose( file ); - } - - if( parent ) sprintf( buf, "%d", parent->idx ); - else sprintf( buf, "NULL" ); - printf( "\nParent node: %s\n", buf ); - printf( "Chosen number of splits: %d\n\n", (last_split->multiple_clusters) - ? (last_split->num_clusters - 1) : 0 ); - - cur_split = last_split; - last_split = last_split->next; - cvFree( &cur_split ); - } /* for each split point */ - - printf( "Total number of splits: %d\n", total_splits ); - - if( !(tcc->root) ) tcc->root = leaves; - CV_CALL( icvPrintTreeCascade( tcc->root ) ); - - } while( leaves ); - - /* save the cascade to xml file */ - { - char xml_path[1024]; - int len = (int)strlen(dirname); - CvHaarClassifierCascade* cascade = 0; - strcpy( xml_path, dirname ); - if( xml_path[len-1] == '\\' || xml_path[len-1] == '/' ) - len--; - strcpy( xml_path + len, ".xml" ); - cascade = cvLoadHaarClassifierCascade( dirname, cvSize(winwidth,winheight) ); - if( cascade ) - cvSave( xml_path, cascade ); - cvReleaseHaarClassifierCascade( &cascade ); - } - - } /* if( nstages > 0 ) */ - - /* check cascade performance */ - printf( "\nCascade performance\n" ); - - tcc->eval = icvEvalTreeCascadeClassifier; - - /* load samples */ - consumed = 0; - poscount = icvGetHaarTrainingDataFromVec( training_data, 0, npos, - (CvIntHaarClassifier*) tcc, vecfilename, &consumed ); - - printf( "POS: %d %d %f\n", poscount, consumed, - (consumed > 0) ? (((float) poscount)/consumed) : 0 ); - - if( poscount <= 0 ) - fprintf( stderr, "Warning: unable to obtain positive samples\n" ); - - proctime = -TIME( 0 ); - - negcount = icvGetHaarTrainingDataFromBG( training_data, poscount, nneg, - (CvIntHaarClassifier*) tcc, &false_alarm, bg_vecfile ? bgfilename : NULL ); - - printf( "NEG: %d %g\n", negcount, false_alarm ); - - printf( "BACKGROUND PROCESSING TIME: %.2f\n", (proctime + TIME( 0 )) ); - - if( negcount <= 0 ) - fprintf( stderr, "Warning: unable to obtain negative samples\n" ); - - __END__; - - if (! bg_vecfile) - icvDestroyBackgroundReaders(); - - if( tcc ) tcc->release( (CvIntHaarClassifier**) &tcc ); - icvReleaseIntHaarFeatures( &haar_features ); - icvReleaseHaarTrainingData( &training_data ); - cvReleaseMat( &cluster_idx ); - cvReleaseMat( &idx ); - cvReleaseMat( &vals ); - cvReleaseMat( &features_idx ); -} - - - -void cvCreateTrainingSamples( const char* filename, - const char* imgfilename, int bgcolor, int bgthreshold, - const char* bgfilename, int count, - int invert, int maxintensitydev, - double maxxangle, double maxyangle, double maxzangle, - int showsamples, - int winwidth, int winheight ) -{ - CvSampleDistortionData data; - - assert( filename != NULL ); - assert( imgfilename != NULL ); - - if( !icvMkDir( filename ) ) - { - fprintf( stderr, "Unable to create output file: %s\n", filename ); - return; - } - if( icvStartSampleDistortion( imgfilename, bgcolor, bgthreshold, &data ) ) - { - FILE* output = NULL; - - output = fopen( filename, "wb" ); - if( output != NULL ) - { - int hasbg; - int i; - CvMat sample; - int inverse; - - hasbg = 0; - hasbg = (bgfilename != NULL && icvInitBackgroundReaders( bgfilename, - cvSize( winwidth,winheight ) ) ); - - sample = cvMat( winheight, winwidth, CV_8UC1, cvAlloc( sizeof( uchar ) * - winheight * winwidth ) ); - - icvWriteVecHeader( output, count, sample.cols, sample.rows ); - - if( showsamples ) - { - cvNamedWindow( "Sample", CV_WINDOW_AUTOSIZE ); - } - - inverse = invert; - for( i = 0; i < count; i++ ) - { - if( hasbg ) - { - icvGetBackgroundImage( cvbgdata, cvbgreader, &sample ); - } - else - { - cvSet( &sample, cvScalar( bgcolor ) ); - } - - if( invert == CV_RANDOM_INVERT ) - { - inverse = (rand() > (RAND_MAX/2)); - } - icvPlaceDistortedSample( &sample, inverse, maxintensitydev, - maxxangle, maxyangle, maxzangle, - 0 /* nonzero means placing image without cut offs */, - 0.0 /* nozero adds random shifting */, - 0.0 /* nozero adds random scaling */, - &data ); - - if( showsamples ) - { - cvShowImage( "Sample", &sample ); - if( cvWaitKey( 0 ) == 27 ) - { - showsamples = 0; - } - } - - icvWriteVecSample( output, &sample ); - -#ifdef CV_VERBOSE - if( i % 500 == 0 ) - { - printf( "\r%3d%%", 100 * i / count ); - } -#endif /* CV_VERBOSE */ - } - icvDestroyBackgroundReaders(); - cvFree( &(sample.data.ptr) ); - fclose( output ); - } /* if( output != NULL ) */ - - icvEndSampleDistortion( &data ); - } - -#ifdef CV_VERBOSE - printf( "\r \r" ); -#endif /* CV_VERBOSE */ - -} - -#define CV_INFO_FILENAME "info.dat" - - -void cvCreateTestSamples( const char* infoname, - const char* imgfilename, int bgcolor, int bgthreshold, - const char* bgfilename, int count, - int invert, int maxintensitydev, - double maxxangle, double maxyangle, double maxzangle, - int showsamples, - int winwidth, int winheight ) -{ - CvSampleDistortionData data; - - assert( infoname != NULL ); - assert( imgfilename != NULL ); - assert( bgfilename != NULL ); - - if( !icvMkDir( infoname ) ) - { - -#if CV_VERBOSE - fprintf( stderr, "Unable to create directory hierarchy: %s\n", infoname ); -#endif /* CV_VERBOSE */ - - return; - } - if( icvStartSampleDistortion( imgfilename, bgcolor, bgthreshold, &data ) ) - { - char fullname[PATH_MAX]; - char* filename; - CvMat win; - FILE* info; - - if( icvInitBackgroundReaders( bgfilename, cvSize( 10, 10 ) ) ) - { - int i; - int x, y, width, height; - float scale; - float maxscale; - int inverse; - - if( showsamples ) - { - cvNamedWindow( "Image", CV_WINDOW_AUTOSIZE ); - } - - info = fopen( infoname, "w" ); - strcpy( fullname, infoname ); - filename = strrchr( fullname, '\\' ); - if( filename == NULL ) - { - filename = strrchr( fullname, '/' ); - } - if( filename == NULL ) - { - filename = fullname; - } - else - { - filename++; - } - - count = MIN( count, cvbgdata->count ); - inverse = invert; - for( i = 0; i < count; i++ ) - { - icvGetNextFromBackgroundData( cvbgdata, cvbgreader ); - - maxscale = MIN( 0.7F * cvbgreader->src.cols / winwidth, - 0.7F * cvbgreader->src.rows / winheight ); - if( maxscale < 1.0F ) continue; - - scale = (maxscale - 1.0F) * rand() / RAND_MAX + 1.0F; - width = (int) (scale * winwidth); - height = (int) (scale * winheight); - x = (int) ((0.1+0.8 * rand()/RAND_MAX) * (cvbgreader->src.cols - width)); - y = (int) ((0.1+0.8 * rand()/RAND_MAX) * (cvbgreader->src.rows - height)); - - cvGetSubArr( &cvbgreader->src, &win, cvRect( x, y ,width, height ) ); - if( invert == CV_RANDOM_INVERT ) - { - inverse = (rand() > (RAND_MAX/2)); - } - icvPlaceDistortedSample( &win, inverse, maxintensitydev, - maxxangle, maxyangle, maxzangle, - 1, 0.0, 0.0, &data ); - - - sprintf( filename, "%04d_%04d_%04d_%04d_%04d.jpg", - (i + 1), x, y, width, height ); - - if( info ) - { - fprintf( info, "%s %d %d %d %d %d\n", - filename, 1, x, y, width, height ); - } - - cvSaveImage( fullname, &cvbgreader->src ); - if( showsamples ) - { - cvShowImage( "Image", &cvbgreader->src ); - if( cvWaitKey( 0 ) == 27 ) - { - showsamples = 0; - } - } - } - if( info ) fclose( info ); - icvDestroyBackgroundReaders(); - } - icvEndSampleDistortion( &data ); - } -} - - -/* End of file. */ diff --git a/apps/haartraining/cvhaartraining.h b/apps/haartraining/cvhaartraining.h deleted file mode 100644 index 5a57e17..0000000 --- a/apps/haartraining/cvhaartraining.h +++ /dev/null @@ -1,192 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * cvhaartraining.h - * - * haar training functions - */ - -#ifndef _CVHAARTRAINING_H_ -#define _CVHAARTRAINING_H_ - -/* - * cvCreateTrainingSamples - * - * Create training samples applying random distortions to sample image and - * store them in .vec file - * - * filename - .vec file name - * imgfilename - sample image file name - * bgcolor - background color for sample image - * bgthreshold - background color threshold. Pixels those colors are in range - * [bgcolor-bgthreshold, bgcolor+bgthreshold] are considered as transparent - * bgfilename - background description file name. If not NULL samples - * will be put on arbitrary background - * count - desired number of samples - * invert - if not 0 sample foreground pixels will be inverted - * if invert == CV_RANDOM_INVERT then samples will be inverted randomly - * maxintensitydev - desired max intensity deviation of foreground samples pixels - * maxxangle - max rotation angles - * maxyangle - * maxzangle - * showsamples - if not 0 samples will be shown - * winwidth - desired samples width - * winheight - desired samples height - */ -#define CV_RANDOM_INVERT 0x7FFFFFFF - -void cvCreateTrainingSamples( const char* filename, - const char* imgfilename, int bgcolor, int bgthreshold, - const char* bgfilename, int count, - int invert = 0, int maxintensitydev = 40, - double maxxangle = 1.1, - double maxyangle = 1.1, - double maxzangle = 0.5, - int showsamples = 0, - int winwidth = 24, int winheight = 24 ); - -void cvCreateTestSamples( const char* infoname, - const char* imgfilename, int bgcolor, int bgthreshold, - const char* bgfilename, int count, - int invert, int maxintensitydev, - double maxxangle, double maxyangle, double maxzangle, - int showsamples, - int winwidth, int winheight ); - -/* - * cvCreateTrainingSamplesFromInfo - * - * Create training samples from a set of marked up images and store them into .vec file - * infoname - file in which marked up image descriptions are stored - * num - desired number of samples - * showsamples - if not 0 samples will be shown - * winwidth - sample width - * winheight - sample height - * - * Return number of successfully created samples - */ -int cvCreateTrainingSamplesFromInfo( const char* infoname, const char* vecfilename, - int num, - int showsamples, - int winwidth, int winheight ); - -/* - * cvShowVecSamples - * - * Shows samples stored in .vec file - * - * filename - * .vec file name - * winwidth - * sample width - * winheight - * sample height - * scale - * the scale each sample is adjusted to - */ -void cvShowVecSamples( const char* filename, int winwidth, int winheight, double scale ); - - -/* - * cvCreateCascadeClassifier - * - * Create cascade classifier - * dirname - directory name in which cascade classifier will be created. - * It must exist and contain subdirectories 0, 1, 2, ... (nstages-1). - * vecfilename - name of .vec file with object's images - * bgfilename - name of background description file - * bg_vecfile - true if bgfilename represents a vec file with discrete negatives - * npos - number of positive samples used in training of each stage - * nneg - number of negative samples used in training of each stage - * nstages - number of stages - * numprecalculated - number of features being precalculated. Each precalculated feature - * requires (number_of_samples*(sizeof( float ) + sizeof( short ))) bytes of memory - * numsplits - number of binary splits in each weak classifier - * 1 - stumps, 2 and more - trees. - * minhitrate - desired min hit rate of each stage - * maxfalsealarm - desired max false alarm of each stage - * weightfraction - weight trimming parameter - * mode - 0 - BASIC = Viola - * 1 - CORE = All upright - * 2 - ALL = All features - * symmetric - if not 0 vertical symmetry is assumed - * equalweights - if not 0 initial weights of all samples will be equal - * winwidth - sample width - * winheight - sample height - * boosttype - type of applied boosting algorithm - * 0 - Discrete AdaBoost - * 1 - Real AdaBoost - * 2 - LogitBoost - * 3 - Gentle AdaBoost - * stumperror - type of used error if Discrete AdaBoost algorithm is applied - * 0 - misclassification error - * 1 - gini error - * 2 - entropy error - */ -void cvCreateCascadeClassifier( const char* dirname, - const char* vecfilename, - const char* bgfilename, - int npos, int nneg, int nstages, - int numprecalculated, - int numsplits, - float minhitrate = 0.995F, float maxfalsealarm = 0.5F, - float weightfraction = 0.95F, - int mode = 0, int symmetric = 1, - int equalweights = 1, - int winwidth = 24, int winheight = 24, - int boosttype = 3, int stumperror = 0 ); - -void cvCreateTreeCascadeClassifier( const char* dirname, - const char* vecfilename, - const char* bgfilename, - int npos, int nneg, int nstages, - int numprecalculated, - int numsplits, - float minhitrate, float maxfalsealarm, - float weightfraction, - int mode, int symmetric, - int equalweights, - int winwidth, int winheight, - int boosttype, int stumperror, - int maxtreesplits, int minpos, bool bg_vecfile = false ); - -#endif /* _CVHAARTRAINING_H_ */ diff --git a/apps/haartraining/cvsamples.cpp b/apps/haartraining/cvsamples.cpp deleted file mode 100644 index b477b92..0000000 --- a/apps/haartraining/cvsamples.cpp +++ /dev/null @@ -1,953 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * cvsamples.cpp - * - * support functions for training and test samples creation. - */ - -#include "cvhaartraining.h" -#include "_cvhaartraining.h" - -/* if ipl.h file is included then iplWarpPerspectiveQ function - is used for image transformation during samples creation; - otherwise internal cvWarpPerspective function is used */ - -//#include - -#include "cv.h" -#include "highgui.h" - -/* Calculates coefficients of perspective transformation - * which maps into rectangle ((0,0), (w,0), (w,h), (h,0)): - * - * c00*xi + c01*yi + c02 - * ui = --------------------- - * c20*xi + c21*yi + c22 - * - * c10*xi + c11*yi + c12 - * vi = --------------------- - * c20*xi + c21*yi + c22 - * - * Coefficients are calculated by solving linear system: - * / x0 y0 1 0 0 0 -x0*u0 -y0*u0 \ /c00\ /u0\ - * | x1 y1 1 0 0 0 -x1*u1 -y1*u1 | |c01| |u1| - * | x2 y2 1 0 0 0 -x2*u2 -y2*u2 | |c02| |u2| - * | x3 y3 1 0 0 0 -x3*u3 -y3*u3 |.|c10|=|u3|, - * | 0 0 0 x0 y0 1 -x0*v0 -y0*v0 | |c11| |v0| - * | 0 0 0 x1 y1 1 -x1*v1 -y1*v1 | |c12| |v1| - * | 0 0 0 x2 y2 1 -x2*v2 -y2*v2 | |c20| |v2| - * \ 0 0 0 x3 y3 1 -x3*v3 -y3*v3 / \c21/ \v3/ - * - * where: - * (xi, yi) = (quad[i][0], quad[i][1]) - * cij - coeffs[i][j], coeffs[2][2] = 1 - * (ui, vi) - rectangle vertices - */ -static void cvGetPerspectiveTransform( CvSize src_size, double quad[4][2], - double coeffs[3][3] ) -{ - //CV_FUNCNAME( "cvWarpPerspective" ); - - __BEGIN__; - - double a[8][8]; - double b[8]; - - CvMat A = cvMat( 8, 8, CV_64FC1, a ); - CvMat B = cvMat( 8, 1, CV_64FC1, b ); - CvMat X = cvMat( 8, 1, CV_64FC1, coeffs ); - - int i; - for( i = 0; i < 4; ++i ) - { - a[i][0] = quad[i][0]; a[i][1] = quad[i][1]; a[i][2] = 1; - a[i][3] = a[i][4] = a[i][5] = a[i][6] = a[i][7] = 0; - b[i] = 0; - } - for( i = 4; i < 8; ++i ) - { - a[i][3] = quad[i-4][0]; a[i][4] = quad[i-4][1]; a[i][5] = 1; - a[i][0] = a[i][1] = a[i][2] = a[i][6] = a[i][7] = 0; - b[i] = 0; - } - - int u = src_size.width - 1; - int v = src_size.height - 1; - - a[1][6] = -quad[1][0] * u; a[1][7] = -quad[1][1] * u; - a[2][6] = -quad[2][0] * u; a[2][7] = -quad[2][1] * u; - b[1] = b[2] = u; - - a[6][6] = -quad[2][0] * v; a[6][7] = -quad[2][1] * v; - a[7][6] = -quad[3][0] * v; a[7][7] = -quad[3][1] * v; - b[6] = b[7] = v; - - cvSolve( &A, &B, &X ); - - coeffs[2][2] = 1; - - __END__; -} - -/* Warps source into destination by a perspective transform */ -static void cvWarpPerspective( CvArr* src, CvArr* dst, double quad[4][2] ) -{ - CV_FUNCNAME( "cvWarpPerspective" ); - - __BEGIN__; - -#ifdef __IPL_H__ - IplImage src_stub, dst_stub; - IplImage* src_img; - IplImage* dst_img; - CV_CALL( src_img = cvGetImage( src, &src_stub ) ); - CV_CALL( dst_img = cvGetImage( dst, &dst_stub ) ); - iplWarpPerspectiveQ( src_img, dst_img, quad, IPL_WARP_R_TO_Q, - IPL_INTER_CUBIC | IPL_SMOOTH_EDGE ); -#else - - int fill_value = 0; - - double c[3][3]; /* transformation coefficients */ - double q[4][2]; /* rearranged quad */ - - int left = 0; - int right = 0; - int next_right = 0; - int next_left = 0; - double y_min = 0; - double y_max = 0; - double k_left, b_left, k_right, b_right; - - uchar* src_data; - int src_step; - CvSize src_size; - - uchar* dst_data; - int dst_step; - CvSize dst_size; - - double d = 0; - int direction = 0; - int i; - - if( !src || (!CV_IS_IMAGE( src ) && !CV_IS_MAT( src )) || - cvGetElemType( src ) != CV_8UC1 || - cvGetDims( src ) != 2 ) - { - CV_ERROR( CV_StsBadArg, - "Source must be two-dimensional array of CV_8UC1 type." ); - } - if( !dst || (!CV_IS_IMAGE( dst ) && !CV_IS_MAT( dst )) || - cvGetElemType( dst ) != CV_8UC1 || - cvGetDims( dst ) != 2 ) - { - CV_ERROR( CV_StsBadArg, - "Destination must be two-dimensional array of CV_8UC1 type." ); - } - - CV_CALL( cvGetRawData( src, &src_data, &src_step, &src_size ) ); - CV_CALL( cvGetRawData( dst, &dst_data, &dst_step, &dst_size ) ); - - CV_CALL( cvGetPerspectiveTransform( src_size, quad, c ) ); - - /* if direction > 0 then vertices in quad follow in a CW direction, - otherwise they follow in a CCW direction */ - direction = 0; - for( i = 0; i < 4; ++i ) - { - int ni = i + 1; if( ni == 4 ) ni = 0; - int pi = i - 1; if( pi == -1 ) pi = 3; - - d = (quad[i][0] - quad[pi][0])*(quad[ni][1] - quad[i][1]) - - (quad[i][1] - quad[pi][1])*(quad[ni][0] - quad[i][0]); - int cur_direction = CV_SIGN(d); - if( direction == 0 ) - { - direction = cur_direction; - } - else if( direction * cur_direction < 0 ) - { - direction = 0; - break; - } - } - if( direction == 0 ) - { - CV_ERROR( CV_StsBadArg, "Quadrangle is nonconvex or degenerated." ); - } - - /* is the index of the topmost quad vertice - if there are two such vertices is the leftmost one */ - left = 0; - for( i = 1; i < 4; ++i ) - { - if( (quad[i][1] < quad[left][1]) || - ((quad[i][1] == quad[left][1]) && (quad[i][0] < quad[left][0])) ) - { - left = i; - } - } - /* rearrange vertices in such way that they follow in a CW - direction and the first vertice is the topmost one and put them - into */ - if( direction > 0 ) - { - for( i = left; i < 4; ++i ) - { - q[i-left][0] = quad[i][0]; - q[i-left][1] = quad[i][1]; - } - for( i = 0; i < left; ++i ) - { - q[4-left+i][0] = quad[i][0]; - q[4-left+i][1] = quad[i][1]; - } - } - else - { - for( i = left; i >= 0; --i ) - { - q[left-i][0] = quad[i][0]; - q[left-i][1] = quad[i][1]; - } - for( i = 3; i > left; --i ) - { - q[4+left-i][0] = quad[i][0]; - q[4+left-i][1] = quad[i][1]; - } - } - - left = right = 0; - /* if there are two topmost points, is the index of the rightmost one - otherwise */ - if( q[left][1] == q[left+1][1] ) - { - right = 1; - } - - /* follows in a CCW direction */ - next_left = 3; - /* follows in a CW direction */ - next_right = right + 1; - - /* subtraction of 1 prevents skipping of the first row */ - y_min = q[left][1] - 1; - - /* left edge equation: y = k_left * x + b_left */ - k_left = (q[left][0] - q[next_left][0]) / - (q[left][1] - q[next_left][1]); - b_left = (q[left][1] * q[next_left][0] - - q[left][0] * q[next_left][1]) / - (q[left][1] - q[next_left][1]); - - /* right edge equation: y = k_right * x + b_right */ - k_right = (q[right][0] - q[next_right][0]) / - (q[right][1] - q[next_right][1]); - b_right = (q[right][1] * q[next_right][0] - - q[right][0] * q[next_right][1]) / - (q[right][1] - q[next_right][1]); - - for(;;) - { - int x, y; - - y_max = MIN( q[next_left][1], q[next_right][1] ); - - int iy_min = MAX( cvRound(y_min), 0 ) + 1; - int iy_max = MIN( cvRound(y_max), dst_size.height - 1 ); - - double x_min = k_left * iy_min + b_left; - double x_max = k_right * iy_min + b_right; - - /* walk through the destination quadrangle row by row */ - for( y = iy_min; y <= iy_max; ++y ) - { - int ix_min = MAX( cvRound( x_min ), 0 ); - int ix_max = MIN( cvRound( x_max ), dst_size.width - 1 ); - - for( x = ix_min; x <= ix_max; ++x ) - { - /* calculate coordinates of the corresponding source array point */ - double div = (c[2][0] * x + c[2][1] * y + c[2][2]); - double src_x = (c[0][0] * x + c[0][1] * y + c[0][2]) / div; - double src_y = (c[1][0] * x + c[1][1] * y + c[1][2]) / div; - - int isrc_x = cvFloor( src_x ); - int isrc_y = cvFloor( src_y ); - double delta_x = src_x - isrc_x; - double delta_y = src_y - isrc_y; - - uchar* s = src_data + isrc_y * src_step + isrc_x; - - int i00, i10, i01, i11; - i00 = i10 = i01 = i11 = (int) fill_value; - - /* linear interpolation using 2x2 neighborhood */ - if( isrc_x >= 0 && isrc_x <= src_size.width && - isrc_y >= 0 && isrc_y <= src_size.height ) - { - i00 = s[0]; - } - if( isrc_x >= -1 && isrc_x < src_size.width && - isrc_y >= 0 && isrc_y <= src_size.height ) - { - i10 = s[1]; - } - if( isrc_x >= 0 && isrc_x <= src_size.width && - isrc_y >= -1 && isrc_y < src_size.height ) - { - i01 = s[src_step]; - } - if( isrc_x >= -1 && isrc_x < src_size.width && - isrc_y >= -1 && isrc_y < src_size.height ) - { - i11 = s[src_step+1]; - } - - double i0 = i00 + (i10 - i00)*delta_x; - double i1 = i01 + (i11 - i01)*delta_x; - - ((uchar*)(dst_data + y * dst_step))[x] = (uchar) (i0 + (i1 - i0)*delta_y); - } - x_min += k_left; - x_max += k_right; - } - - if( (next_left == next_right) || - (next_left+1 == next_right && q[next_left][1] == q[next_right][1]) ) - { - break; - } - - if( y_max == q[next_left][1] ) - { - left = next_left; - next_left = left - 1; - - k_left = (q[left][0] - q[next_left][0]) / - (q[left][1] - q[next_left][1]); - b_left = (q[left][1] * q[next_left][0] - - q[left][0] * q[next_left][1]) / - (q[left][1] - q[next_left][1]); - } - if( y_max == q[next_right][1] ) - { - right = next_right; - next_right = right + 1; - - k_right = (q[right][0] - q[next_right][0]) / - (q[right][1] - q[next_right][1]); - b_right = (q[right][1] * q[next_right][0] - - q[right][0] * q[next_right][1]) / - (q[right][1] - q[next_right][1]); - } - y_min = y_max; - } -#endif /* #ifndef __IPL_H__ */ - - __END__; -} - -static -void icvRandomQuad( int width, int height, double quad[4][2], - double maxxangle, - double maxyangle, - double maxzangle ) -{ - double distfactor = 3.0; - double distfactor2 = 1.0; - - double halfw, halfh; - int i; - - double rotVectData[3]; - double vectData[3]; - double rotMatData[9]; - - CvMat rotVect; - CvMat rotMat; - CvMat vect; - - double d; - - rotVect = cvMat( 3, 1, CV_64FC1, &rotVectData[0] ); - rotMat = cvMat( 3, 3, CV_64FC1, &rotMatData[0] ); - vect = cvMat( 3, 1, CV_64FC1, &vectData[0] ); - - rotVectData[0] = maxxangle * (2.0 * rand() / RAND_MAX - 1.0); - rotVectData[1] = ( maxyangle - fabs( rotVectData[0] ) ) - * (2.0 * rand() / RAND_MAX - 1.0); - rotVectData[2] = maxzangle * (2.0 * rand() / RAND_MAX - 1.0); - d = (distfactor + distfactor2 * (2.0 * rand() / RAND_MAX - 1.0)) * width; - -/* - rotVectData[0] = maxxangle; - rotVectData[1] = maxyangle; - rotVectData[2] = maxzangle; - - d = distfactor * width; -*/ - - cvRodrigues2( &rotVect, &rotMat ); - - halfw = 0.5 * width; - halfh = 0.5 * height; - - quad[0][0] = -halfw; - quad[0][1] = -halfh; - quad[1][0] = halfw; - quad[1][1] = -halfh; - quad[2][0] = halfw; - quad[2][1] = halfh; - quad[3][0] = -halfw; - quad[3][1] = halfh; - - for( i = 0; i < 4; i++ ) - { - rotVectData[0] = quad[i][0]; - rotVectData[1] = quad[i][1]; - rotVectData[2] = 0.0; - cvMatMulAdd( &rotMat, &rotVect, 0, &vect ); - quad[i][0] = vectData[0] * d / (d + vectData[2]) + halfw; - quad[i][1] = vectData[1] * d / (d + vectData[2]) + halfh; - - /* - quad[i][0] += halfw; - quad[i][1] += halfh; - */ - } -} - - -int icvStartSampleDistortion( const char* imgfilename, int bgcolor, int bgthreshold, - CvSampleDistortionData* data ) -{ - memset( data, 0, sizeof( *data ) ); - data->src = cvLoadImage( imgfilename, 0 ); - if( data->src != NULL && data->src->nChannels == 1 - && data->src->depth == IPL_DEPTH_8U ) - { - int r, c; - uchar* pmask; - uchar* psrc; - uchar* perode; - uchar* pdilate; - uchar dd, de; - - data->dx = data->src->width / 2; - data->dy = data->src->height / 2; - data->bgcolor = bgcolor; - - data->mask = cvCloneImage( data->src ); - data->erode = cvCloneImage( data->src ); - data->dilate = cvCloneImage( data->src ); - - /* make mask image */ - for( r = 0; r < data->mask->height; r++ ) - { - for( c = 0; c < data->mask->width; c++ ) - { - pmask = ( (uchar*) (data->mask->imageData + r * data->mask->widthStep) - + c ); - if( bgcolor - bgthreshold <= (int) (*pmask) && - (int) (*pmask) <= bgcolor + bgthreshold ) - { - *pmask = (uchar) 0; - } - else - { - *pmask = (uchar) 255; - } - } - } - - /* extend borders of source image */ - cvErode( data->src, data->erode, 0, 1 ); - cvDilate( data->src, data->dilate, 0, 1 ); - for( r = 0; r < data->mask->height; r++ ) - { - for( c = 0; c < data->mask->width; c++ ) - { - pmask = ( (uchar*) (data->mask->imageData + r * data->mask->widthStep) - + c ); - if( (*pmask) == 0 ) - { - psrc = ( (uchar*) (data->src->imageData + r * data->src->widthStep) - + c ); - perode = - ( (uchar*) (data->erode->imageData + r * data->erode->widthStep) - + c ); - pdilate = - ( (uchar*)(data->dilate->imageData + r * data->dilate->widthStep) - + c ); - de = (uchar)(bgcolor - (*perode)); - dd = (uchar)((*pdilate) - bgcolor); - if( de >= dd && de > bgthreshold ) - { - (*psrc) = (*perode); - } - if( dd > de && dd > bgthreshold ) - { - (*psrc) = (*pdilate); - } - } - } - } - - data->img = cvCreateImage( cvSize( data->src->width + 2 * data->dx, - data->src->height + 2 * data->dy ), - IPL_DEPTH_8U, 1 ); - data->maskimg = cvCloneImage( data->img ); - - return 1; - } - - return 0; -} - -void icvPlaceDistortedSample( CvArr* background, - int inverse, int maxintensitydev, - double maxxangle, double maxyangle, double maxzangle, - int inscribe, double maxshiftf, double maxscalef, - CvSampleDistortionData* data ) -{ - double quad[4][2]; - int r, c; - uchar* pimg; - uchar* pbg; - uchar* palpha; - uchar chartmp; - int forecolordev; - float scale; - IplImage* img; - IplImage* maskimg; - CvMat stub; - CvMat* bgimg; - - CvRect cr; - CvRect roi; - - double xshift, yshift, randscale; - - icvRandomQuad( data->src->width, data->src->height, quad, - maxxangle, maxyangle, maxzangle ); - quad[0][0] += (double) data->dx; - quad[0][1] += (double) data->dy; - quad[1][0] += (double) data->dx; - quad[1][1] += (double) data->dy; - quad[2][0] += (double) data->dx; - quad[2][1] += (double) data->dy; - quad[3][0] += (double) data->dx; - quad[3][1] += (double) data->dy; - - cvSet( data->img, cvScalar( data->bgcolor ) ); - cvSet( data->maskimg, cvScalar( 0.0 ) ); - - cvWarpPerspective( data->src, data->img, quad ); - cvWarpPerspective( data->mask, data->maskimg, quad ); - - cvSmooth( data->maskimg, data->maskimg, CV_GAUSSIAN, 3, 3 ); - - bgimg = cvGetMat( background, &stub ); - - cr.x = data->dx; - cr.y = data->dy; - cr.width = data->src->width; - cr.height = data->src->height; - - if( inscribe ) - { - /* quad's circumscribing rectangle */ - cr.x = (int) MIN( quad[0][0], quad[3][0] ); - cr.y = (int) MIN( quad[0][1], quad[1][1] ); - cr.width = (int) (MAX( quad[1][0], quad[2][0] ) + 0.5F ) - cr.x; - cr.height = (int) (MAX( quad[2][1], quad[3][1] ) + 0.5F ) - cr.y; - } - - xshift = maxshiftf * rand() / RAND_MAX; - yshift = maxshiftf * rand() / RAND_MAX; - - cr.x -= (int) ( xshift * cr.width ); - cr.y -= (int) ( yshift * cr.height ); - cr.width = (int) ((1.0 + maxshiftf) * cr.width ); - cr.height = (int) ((1.0 + maxshiftf) * cr.height); - - randscale = maxscalef * rand() / RAND_MAX; - cr.x -= (int) ( 0.5 * randscale * cr.width ); - cr.y -= (int) ( 0.5 * randscale * cr.height ); - cr.width = (int) ((1.0 + randscale) * cr.width ); - cr.height = (int) ((1.0 + randscale) * cr.height); - - scale = MAX( ((float) cr.width) / bgimg->cols, ((float) cr.height) / bgimg->rows ); - - roi.x = (int) (-0.5F * (scale * bgimg->cols - cr.width) + cr.x); - roi.y = (int) (-0.5F * (scale * bgimg->rows - cr.height) + cr.y); - roi.width = (int) (scale * bgimg->cols); - roi.height = (int) (scale * bgimg->rows); - - img = cvCreateImage( cvSize( bgimg->cols, bgimg->rows ), IPL_DEPTH_8U, 1 ); - maskimg = cvCreateImage( cvSize( bgimg->cols, bgimg->rows ), IPL_DEPTH_8U, 1 ); - - cvSetImageROI( data->img, roi ); - cvResize( data->img, img ); - cvResetImageROI( data->img ); - cvSetImageROI( data->maskimg, roi ); - cvResize( data->maskimg, maskimg ); - cvResetImageROI( data->maskimg ); - - forecolordev = (int) (maxintensitydev * (2.0 * rand() / RAND_MAX - 1.0)); - - for( r = 0; r < img->height; r++ ) - { - for( c = 0; c < img->width; c++ ) - { - pimg = (uchar*) img->imageData + r * img->widthStep + c; - pbg = (uchar*) bgimg->data.ptr + r * bgimg->step + c; - palpha = (uchar*) maskimg->imageData + r * maskimg->widthStep + c; - chartmp = (uchar) MAX( 0, MIN( 255, forecolordev + (*pimg) ) ); - if( inverse ) - { - chartmp ^= 0xFF; - } - *pbg = (uchar) (( chartmp*(*palpha )+(255 - (*palpha) )*(*pbg) ) / 255); - } - } - - cvReleaseImage( &img ); - cvReleaseImage( &maskimg ); -} - -void icvEndSampleDistortion( CvSampleDistortionData* data ) -{ - if( data->src ) - { - cvReleaseImage( &data->src ); - } - if( data->mask ) - { - cvReleaseImage( &data->mask ); - } - if( data->erode ) - { - cvReleaseImage( &data->erode ); - } - if( data->dilate ) - { - cvReleaseImage( &data->dilate ); - } - if( data->img ) - { - cvReleaseImage( &data->img ); - } - if( data->maskimg ) - { - cvReleaseImage( &data->maskimg ); - } -} - -void icvWriteVecHeader( FILE* file, int count, int width, int height ) -{ - int vecsize; - short tmp; - - /* number of samples */ - fwrite( &count, sizeof( count ), 1, file ); - /* vector size */ - vecsize = width * height; - fwrite( &vecsize, sizeof( vecsize ), 1, file ); - /* min/max values */ - tmp = 0; - fwrite( &tmp, sizeof( tmp ), 1, file ); - fwrite( &tmp, sizeof( tmp ), 1, file ); -} - -void icvWriteVecSample( FILE* file, CvArr* sample ) -{ - CvMat* mat, stub; - int r, c; - short tmp; - uchar chartmp; - - mat = cvGetMat( sample, &stub ); - chartmp = 0; - fwrite( &chartmp, sizeof( chartmp ), 1, file ); - for( r = 0; r < mat->rows; r++ ) - { - for( c = 0; c < mat->cols; c++ ) - { - tmp = (short) (CV_MAT_ELEM( *mat, uchar, r, c )); - fwrite( &tmp, sizeof( tmp ), 1, file ); - } - } -} - - -int cvCreateTrainingSamplesFromInfo( const char* infoname, const char* vecfilename, - int num, - int showsamples, - int winwidth, int winheight ) -{ - char fullname[PATH_MAX]; - char* filename; - - FILE* info; - FILE* vec; - IplImage* src=0; - IplImage* sample; - int line; - int error; - int i; - int x, y, width, height; - int total; - - assert( infoname != NULL ); - assert( vecfilename != NULL ); - - total = 0; - if( !icvMkDir( vecfilename ) ) - { - -#if CV_VERBOSE - fprintf( stderr, "Unable to create directory hierarchy: %s\n", vecfilename ); -#endif /* CV_VERBOSE */ - - return total; - } - - info = fopen( infoname, "r" ); - if( info == NULL ) - { - -#if CV_VERBOSE - fprintf( stderr, "Unable to open file: %s\n", infoname ); -#endif /* CV_VERBOSE */ - - return total; - } - - vec = fopen( vecfilename, "wb" ); - if( vec == NULL ) - { - -#if CV_VERBOSE - fprintf( stderr, "Unable to open file: %s\n", vecfilename ); -#endif /* CV_VERBOSE */ - - fclose( info ); - - return total; - } - - sample = cvCreateImage( cvSize( winwidth, winheight ), IPL_DEPTH_8U, 1 ); - - icvWriteVecHeader( vec, num, sample->width, sample->height ); - - if( showsamples ) - { - cvNamedWindow( "Sample", CV_WINDOW_AUTOSIZE ); - } - - strcpy( fullname, infoname ); - filename = strrchr( fullname, '\\' ); - if( filename == NULL ) - { - filename = strrchr( fullname, '/' ); - } - if( filename == NULL ) - { - filename = fullname; - } - else - { - filename++; - } - - for( line = 1, error = 0, total = 0; total < num ;line++ ) - { - int count; - - error = ( fscanf( info, "%s %d", filename, &count ) != 2 ); - if( !error ) - { - src = cvLoadImage( fullname, 0 ); - error = ( src == NULL ); - if( error ) - { - -#if CV_VERBOSE - fprintf( stderr, "Unable to open image: %s\n", fullname ); -#endif /* CV_VERBOSE */ - - } - } - for( i = 0; (i < count) && (total < num); i++, total++ ) - { - error = ( fscanf( info, "%d %d %d %d", &x, &y, &width, &height ) != 4 ); - if( error ) break; - cvSetImageROI( src, cvRect( x, y, width, height ) ); - cvResize( src, sample, width >= sample->width && - height >= sample->height ? CV_INTER_AREA : CV_INTER_LINEAR ); - - if( showsamples ) - { - cvShowImage( "Sample", sample ); - if( cvWaitKey( 0 ) == 27 ) - { - showsamples = 0; - } - } - icvWriteVecSample( vec, sample ); - } - - if( src ) - { - cvReleaseImage( &src ); - } - - if( error ) - { - -#if CV_VERBOSE - fprintf( stderr, "%s(%d) : parse error", infoname, line ); -#endif /* CV_VERBOSE */ - - break; - } - } - - if( sample ) - { - cvReleaseImage( &sample ); - } - - fclose( vec ); - fclose( info ); - - return total; -} - - -void cvShowVecSamples( const char* filename, int winwidth, int winheight, - double scale ) -{ - CvVecFile file; - short tmp; - int i; - CvMat* sample; - - tmp = 0; - file.input = fopen( filename, "rb" ); - - if( file.input != NULL ) - { - size_t elements_read1 = fread( &file.count, sizeof( file.count ), 1, file.input ); - size_t elements_read2 = fread( &file.vecsize, sizeof( file.vecsize ), 1, file.input ); - size_t elements_read3 = fread( &tmp, sizeof( tmp ), 1, file.input ); - size_t elements_read4 = fread( &tmp, sizeof( tmp ), 1, file.input ); - CV_Assert(elements_read1 == 1 && elements_read2 == 1 && elements_read3 == 1 && elements_read4 == 1); - - if( file.vecsize != winwidth * winheight ) - { - int guessed_w = 0; - int guessed_h = 0; - - fprintf( stderr, "Warning: specified sample width=%d and height=%d " - "does not correspond to .vec file vector size=%d.\n", - winwidth, winheight, file.vecsize ); - if( file.vecsize > 0 ) - { - guessed_w = cvFloor( sqrt( (float) file.vecsize ) ); - if( guessed_w > 0 ) - { - guessed_h = file.vecsize / guessed_w; - } - } - - if( guessed_w <= 0 || guessed_h <= 0 || guessed_w * guessed_h != file.vecsize) - { - fprintf( stderr, "Error: failed to guess sample width and height\n" ); - fclose( file.input ); - - return; - } - else - { - winwidth = guessed_w; - winheight = guessed_h; - fprintf( stderr, "Guessed width=%d, guessed height=%d\n", - winwidth, winheight ); - } - } - - if( !feof( file.input ) && scale > 0 ) - { - CvMat* scaled_sample = 0; - - file.last = 0; - file.vector = (short*) cvAlloc( sizeof( *file.vector ) * file.vecsize ); - sample = scaled_sample = cvCreateMat( winheight, winwidth, CV_8UC1 ); - if( scale != 1.0 ) - { - scaled_sample = cvCreateMat( MAX( 1, cvCeil( scale * winheight ) ), - MAX( 1, cvCeil( scale * winwidth ) ), - CV_8UC1 ); - } - cvNamedWindow( "Sample", CV_WINDOW_AUTOSIZE ); - for( i = 0; i < file.count; i++ ) - { - icvGetHaarTraininDataFromVecCallback( sample, &file ); - if( scale != 1.0 ) cvResize( sample, scaled_sample, CV_INTER_LINEAR); - cvShowImage( "Sample", scaled_sample ); - if( cvWaitKey( 0 ) == 27 ) break; - } - if( scaled_sample && scaled_sample != sample ) cvReleaseMat( &scaled_sample ); - cvReleaseMat( &sample ); - cvFree( &file.vector ); - } - fclose( file.input ); - } -} - - -/* End of file. */ diff --git a/apps/haartraining/haartraining.cpp b/apps/haartraining/haartraining.cpp deleted file mode 100644 index f85a3c1..0000000 --- a/apps/haartraining/haartraining.cpp +++ /dev/null @@ -1,284 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * haartraining.cpp - * - * Train cascade classifier - */ - -#include -#include -#include - -using namespace std; - -#include "cvhaartraining.h" - -int main( int argc, char* argv[] ) -{ - int i = 0; - char* nullname = (char*)"(NULL)"; - - char* vecname = NULL; - char* dirname = NULL; - char* bgname = NULL; - - bool bg_vecfile = false; - int npos = 2000; - int nneg = 2000; - int nstages = 14; - int mem = 200; - int nsplits = 1; - float minhitrate = 0.995F; - float maxfalsealarm = 0.5F; - float weightfraction = 0.95F; - int mode = 0; - int symmetric = 1; - int equalweights = 0; - int width = 24; - int height = 24; - const char* boosttypes[] = { "DAB", "RAB", "LB", "GAB" }; - int boosttype = 3; - const char* stumperrors[] = { "misclass", "gini", "entropy" }; - int stumperror = 0; - int maxtreesplits = 0; - int minpos = 500; - - if( argc == 1 ) - { - printf( "Usage: %s\n -data \n" - " -vec \n" - " -bg \n" - " [-bg-vecfile]\n" - " [-npos ]\n" - " [-nneg ]\n" - " [-nstages ]\n" - " [-nsplits ]\n" - " [-mem ]\n" - " [-sym (default)] [-nonsym]\n" - " [-minhitrate ]\n" - " [-maxfalsealarm ]\n" - " [-weighttrimming ]\n" - " [-eqw]\n" - " [-mode ]\n" - " [-w ]\n" - " [-h ]\n" - " [-bt ]\n" - " [-err ]\n" - " [-maxtreesplits ]\n" - " [-minpos ]\n", - argv[0], npos, nneg, nstages, nsplits, mem, - minhitrate, maxfalsealarm, weightfraction, width, height, - maxtreesplits, minpos ); - - return 0; - } - - for( i = 1; i < argc; i++ ) - { - if( !strcmp( argv[i], "-data" ) ) - { - dirname = argv[++i]; - } - else if( !strcmp( argv[i], "-vec" ) ) - { - vecname = argv[++i]; - } - else if( !strcmp( argv[i], "-bg" ) ) - { - bgname = argv[++i]; - } - else if( !strcmp( argv[i], "-bg-vecfile" ) ) - { - bg_vecfile = true; - } - else if( !strcmp( argv[i], "-npos" ) ) - { - npos = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-nneg" ) ) - { - nneg = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-nstages" ) ) - { - nstages = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-nsplits" ) ) - { - nsplits = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-mem" ) ) - { - mem = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-sym" ) ) - { - symmetric = 1; - } - else if( !strcmp( argv[i], "-nonsym" ) ) - { - symmetric = 0; - } - else if( !strcmp( argv[i], "-minhitrate" ) ) - { - minhitrate = (float) atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-maxfalsealarm" ) ) - { - maxfalsealarm = (float) atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-weighttrimming" ) ) - { - weightfraction = (float) atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-eqw" ) ) - { - equalweights = 1; - } - else if( !strcmp( argv[i], "-mode" ) ) - { - char* tmp = argv[++i]; - - if( !strcmp( tmp, "CORE" ) ) - { - mode = 1; - } - else if( !strcmp( tmp, "ALL" ) ) - { - mode = 2; - } - else - { - mode = 0; - } - } - else if( !strcmp( argv[i], "-w" ) ) - { - width = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-h" ) ) - { - height = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-bt" ) ) - { - i++; - if( !strcmp( argv[i], boosttypes[0] ) ) - { - boosttype = 0; - } - else if( !strcmp( argv[i], boosttypes[1] ) ) - { - boosttype = 1; - } - else if( !strcmp( argv[i], boosttypes[2] ) ) - { - boosttype = 2; - } - else - { - boosttype = 3; - } - } - else if( !strcmp( argv[i], "-err" ) ) - { - i++; - if( !strcmp( argv[i], stumperrors[0] ) ) - { - stumperror = 0; - } - else if( !strcmp( argv[i], stumperrors[1] ) ) - { - stumperror = 1; - } - else - { - stumperror = 2; - } - } - else if( !strcmp( argv[i], "-maxtreesplits" ) ) - { - maxtreesplits = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-minpos" ) ) - { - minpos = atoi( argv[++i] ); - } - } - - printf( "Data dir name: %s\n", ((dirname == NULL) ? nullname : dirname ) ); - printf( "Vec file name: %s\n", ((vecname == NULL) ? nullname : vecname ) ); - printf( "BG file name: %s, is a vecfile: %s\n", ((bgname == NULL) ? nullname : bgname ), bg_vecfile ? "yes" : "no" ); - printf( "Num pos: %d\n", npos ); - printf( "Num neg: %d\n", nneg ); - printf( "Num stages: %d\n", nstages ); - printf( "Num splits: %d (%s as weak classifier)\n", nsplits, - (nsplits == 1) ? "stump" : "tree" ); - printf( "Mem: %d MB\n", mem ); - printf( "Symmetric: %s\n", (symmetric) ? "TRUE" : "FALSE" ); - printf( "Min hit rate: %f\n", minhitrate ); - printf( "Max false alarm rate: %f\n", maxfalsealarm ); - printf( "Weight trimming: %f\n", weightfraction ); - printf( "Equal weights: %s\n", (equalweights) ? "TRUE" : "FALSE" ); - printf( "Mode: %s\n", ( (mode == 0) ? "BASIC" : ( (mode == 1) ? "CORE" : "ALL") ) ); - printf( "Width: %d\n", width ); - printf( "Height: %d\n", height ); - //printf( "Max num of precalculated features: %d\n", numprecalculated ); - printf( "Applied boosting algorithm: %s\n", boosttypes[boosttype] ); - printf( "Error (valid only for Discrete and Real AdaBoost): %s\n", - stumperrors[stumperror] ); - - printf( "Max number of splits in tree cascade: %d\n", maxtreesplits ); - printf( "Min number of positive samples per cluster: %d\n", minpos ); - - cvCreateTreeCascadeClassifier( dirname, vecname, bgname, - npos, nneg, nstages, mem, - nsplits, - minhitrate, maxfalsealarm, weightfraction, - mode, symmetric, - equalweights, width, height, - boosttype, stumperror, - maxtreesplits, minpos, bg_vecfile ); - - return 0; -} diff --git a/apps/haartraining/performance.cpp b/apps/haartraining/performance.cpp deleted file mode 100644 index cb8dda1..0000000 --- a/apps/haartraining/performance.cpp +++ /dev/null @@ -1,377 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// Intel License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000, Intel Corporation, all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of Intel Corporation may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -/* - * performance.cpp - * - * Measure performance of classifier - */ -#include "opencv2/core.hpp" - -#include "cv.h" -#include "highgui.h" - -#include -#include -#include - -#ifdef _WIN32 -/* use clock() function insted of time() */ -#define time( arg ) (((double) clock()) / CLOCKS_PER_SEC) -#endif /* _WIN32 */ - -#ifndef PATH_MAX -#define PATH_MAX 512 -#endif /* PATH_MAX */ - -typedef struct HidCascade -{ - int size; - int count; -} HidCascade; - -typedef struct ObjectPos -{ - float x; - float y; - float width; - int found; /* for reference */ - int neghbors; -} ObjectPos; - -int main( int argc, char* argv[] ) -{ - int i, j; - char* classifierdir = NULL; - //char* samplesdir = NULL; - - int saveDetected = 1; - double scale_factor = 1.2; - float maxSizeDiff = 1.5F; - float maxPosDiff = 0.3F; - - /* number of stages. if <=0 all stages are used */ - int nos = -1, nos0; - - int width = 24; - int height = 24; - - int rocsize; - - FILE* info; - char* infoname; - char fullname[PATH_MAX]; - char detfilename[PATH_MAX]; - char* filename; - char detname[] = "det-"; - - CvHaarClassifierCascade* cascade; - CvMemStorage* storage; - CvSeq* objects; - - double totaltime; - - infoname = (char*)""; - rocsize = 40; - if( argc == 1 ) - { - printf( "Usage: %s\n -data \n" - " -info \n" - " [-maxSizeDiff ]\n" - " [-maxPosDiff ]\n" - " [-sf ]\n" - " [-ni]\n" - " [-nos ]\n" - " [-rs ]\n" - " [-w ]\n" - " [-h ]\n", - argv[0], maxSizeDiff, maxPosDiff, scale_factor, nos, rocsize, - width, height ); - - return 0; - } - - for( i = 1; i < argc; i++ ) - { - if( !strcmp( argv[i], "-data" ) ) - { - classifierdir = argv[++i]; - } - else if( !strcmp( argv[i], "-info" ) ) - { - infoname = argv[++i]; - } - else if( !strcmp( argv[i], "-maxSizeDiff" ) ) - { - maxSizeDiff = (float) atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-maxPosDiff" ) ) - { - maxPosDiff = (float) atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-sf" ) ) - { - scale_factor = atof( argv[++i] ); - } - else if( !strcmp( argv[i], "-ni" ) ) - { - saveDetected = 0; - } - else if( !strcmp( argv[i], "-nos" ) ) - { - nos = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-rs" ) ) - { - rocsize = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-w" ) ) - { - width = atoi( argv[++i] ); - } - else if( !strcmp( argv[i], "-h" ) ) - { - height = atoi( argv[++i] ); - } - } - - cascade = cvLoadHaarClassifierCascade( classifierdir, cvSize( width, height ) ); - if( cascade == NULL ) - { - printf( "Unable to load classifier from %s\n", classifierdir ); - - return 1; - } - - int* numclassifiers = new int[cascade->count]; - numclassifiers[0] = cascade->stage_classifier[0].count; - for( i = 1; i < cascade->count; i++ ) - { - numclassifiers[i] = numclassifiers[i-1] + cascade->stage_classifier[i].count; - } - - storage = cvCreateMemStorage(); - - nos0 = cascade->count; - if( nos <= 0 ) - nos = nos0; - - strcpy( fullname, infoname ); - filename = strrchr( fullname, '\\' ); - if( filename == NULL ) - { - filename = strrchr( fullname, '/' ); - } - if( filename == NULL ) - { - filename = fullname; - } - else - { - filename++; - } - - info = fopen( infoname, "r" ); - totaltime = 0.0; - if( info != NULL ) - { - int x, y; - IplImage* img; - int hits, missed, falseAlarms; - int totalHits, totalMissed, totalFalseAlarms; - int found; - float distance; - - int refcount; - ObjectPos* ref; - int detcount; - ObjectPos* det; - int error=0; - - int* pos; - int* neg; - - pos = (int*) cvAlloc( rocsize * sizeof( *pos ) ); - neg = (int*) cvAlloc( rocsize * sizeof( *neg ) ); - for( i = 0; i < rocsize; i++ ) { pos[i] = neg[i] = 0; } - - printf( "+================================+======+======+======+\n" ); - printf( "| File Name | Hits |Missed| False|\n" ); - printf( "+================================+======+======+======+\n" ); - - totalHits = totalMissed = totalFalseAlarms = 0; - while( !feof( info ) ) - { - if( fscanf( info, "%s %d", filename, &refcount ) != 2 || refcount <= 0 ) break; - - img = cvLoadImage( fullname ); - if( !img ) continue; - - ref = (ObjectPos*) cvAlloc( refcount * sizeof( *ref ) ); - for( i = 0; i < refcount; i++ ) - { - int w, h; - error = (fscanf( info, "%d %d %d %d", &x, &y, &w, &h ) != 4); - if( error ) break; - ref[i].x = 0.5F * w + x; - ref[i].y = 0.5F * h + y; - ref[i].width = sqrtf( 0.5F * (w * w + h * h) ); - ref[i].found = 0; - ref[i].neghbors = 0; - } - if( !error ) - { - cvClearMemStorage( storage ); - - cascade->count = nos; - totaltime -= time( 0 ); - objects = cvHaarDetectObjects( img, cascade, storage, scale_factor, 1 ); - totaltime += time( 0 ); - cascade->count = nos0; - - detcount = ( objects ? objects->total : 0); - det = (detcount > 0) ? - ( (ObjectPos*)cvAlloc( detcount * sizeof( *det )) ) : NULL; - hits = missed = falseAlarms = 0; - for( i = 0; i < detcount; i++ ) - { - CvAvgComp r = *((CvAvgComp*) cvGetSeqElem( objects, i )); - det[i].x = 0.5F * r.rect.width + r.rect.x; - det[i].y = 0.5F * r.rect.height + r.rect.y; - det[i].width = sqrtf( 0.5F * (r.rect.width * r.rect.width + - r.rect.height * r.rect.height) ); - det[i].neghbors = r.neighbors; - - if( saveDetected ) - { - cvRectangle( img, cvPoint( r.rect.x, r.rect.y ), - cvPoint( r.rect.x + r.rect.width, r.rect.y + r.rect.height ), - CV_RGB( 255, 0, 0 ), 3 ); - } - - found = 0; - for( j = 0; j < refcount; j++ ) - { - distance = sqrtf( (det[i].x - ref[j].x) * (det[i].x - ref[j].x) + - (det[i].y - ref[j].y) * (det[i].y - ref[j].y) ); - if( (distance < ref[j].width * maxPosDiff) && - (det[i].width > ref[j].width / maxSizeDiff) && - (det[i].width < ref[j].width * maxSizeDiff) ) - { - ref[j].found = 1; - ref[j].neghbors = MAX( ref[j].neghbors, det[i].neghbors ); - found = 1; - } - } - if( !found ) - { - falseAlarms++; - neg[MIN(det[i].neghbors, rocsize - 1)]++; - } - } - for( j = 0; j < refcount; j++ ) - { - if( ref[j].found ) - { - hits++; - pos[MIN(ref[j].neghbors, rocsize - 1)]++; - } - else - { - missed++; - } - } - - totalHits += hits; - totalMissed += missed; - totalFalseAlarms += falseAlarms; - printf( "|%32.32s|%6d|%6d|%6d|\n", filename, hits, missed, falseAlarms ); - printf( "+--------------------------------+------+------+------+\n" ); - fflush( stdout ); - - if( saveDetected ) - { - strcpy( detfilename, detname ); - strcat( detfilename, filename ); - strcpy( filename, detfilename ); - cvvSaveImage( fullname, img ); - } - - if( det ) { cvFree( &det ); det = NULL; } - } /* if( !error ) */ - - cvReleaseImage( &img ); - cvFree( &ref ); - } - fclose( info ); - - printf( "|%32.32s|%6d|%6d|%6d|\n", "Total", - totalHits, totalMissed, totalFalseAlarms ); - printf( "+================================+======+======+======+\n" ); - printf( "Number of stages: %d\n", nos ); - printf( "Number of weak classifiers: %d\n", numclassifiers[nos - 1] ); - printf( "Total time: %f\n", totaltime ); - - /* print ROC to stdout */ - for( i = rocsize - 1; i > 0; i-- ) - { - pos[i-1] += pos[i]; - neg[i-1] += neg[i]; - } - fprintf( stderr, "%d\n", nos ); - for( i = 0; i < rocsize; i++ ) - { - fprintf( stderr, "\t%d\t%d\t%f\t%f\n", pos[i], neg[i], - ((float)pos[i]) / (totalHits + totalMissed), - ((float)neg[i]) / (totalHits + totalMissed) ); - } - - cvFree( &pos ); - cvFree( &neg ); - } - - delete[] numclassifiers; - - cvReleaseHaarClassifierCascade( &cascade ); - cvReleaseMemStorage( &storage ); - - return 0; -} diff --git a/apps/sft/CMakeLists.txt b/apps/sft/CMakeLists.txt deleted file mode 100644 index 05bd337..0000000 --- a/apps/sft/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -set(name sft) -set(the_target opencv_${name}) - -set(OPENCV_${the_target}_DEPS opencv_core opencv_softcascade opencv_highgui opencv_imgproc opencv_ml) -ocv_check_dependencies(${OPENCV_${the_target}_DEPS}) - -if(NOT OCV_DEPENDENCIES_FOUND) - return() -endif() - -project(${the_target}) - -ocv_include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include" "${OpenCV_SOURCE_DIR}/include/opencv") -ocv_include_modules(${OPENCV_${the_target}_DEPS}) - -file(GLOB ${the_target}_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) - -add_executable(${the_target} ${${the_target}_SOURCES}) - -target_link_libraries(${the_target} ${OPENCV_${the_target}_DEPS}) - -set_target_properties(${the_target} PROPERTIES - DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" - ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} - RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} - INSTALL_NAME_DIR lib - OUTPUT_NAME "opencv_trainsoftcascade") - -if(ENABLE_SOLUTION_FOLDERS) - set_target_properties(${the_target} PROPERTIES FOLDER "applications") -endif() - -install(TARGETS ${the_target} RUNTIME DESTINATION bin COMPONENT main) diff --git a/apps/sft/config.cpp b/apps/sft/config.cpp deleted file mode 100644 index 9157575..0000000 --- a/apps/sft/config.cpp +++ /dev/null @@ -1,162 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include -#include - -sft::Config::Config(): seed(0) {} - -void sft::Config::write(cv::FileStorage& fs) const -{ - fs << "{" - << "trainPath" << trainPath - << "testPath" << testPath - - << "modelWinSize" << modelWinSize - << "offset" << offset - << "octaves" << octaves - - << "positives" << positives - << "negatives" << negatives - << "btpNegatives" << btpNegatives - - << "shrinkage" << shrinkage - - << "treeDepth" << treeDepth - << "weaks" << weaks - << "poolSize" << poolSize - - << "cascadeName" << cascadeName - << "outXmlPath" << outXmlPath - - << "seed" << seed - << "featureType" << featureType - << "}"; -} - -void sft::Config::read(const cv::FileNode& node) -{ - trainPath = (string)node["trainPath"]; - testPath = (string)node["testPath"]; - - cv::FileNodeIterator nIt = node["modelWinSize"].end(); - modelWinSize = cv::Size((int)*(--nIt), (int)*(--nIt)); - - nIt = node["offset"].end(); - offset = cv::Point2i((int)*(--nIt), (int)*(--nIt)); - - node["octaves"] >> octaves; - - positives = (int)node["positives"]; - negatives = (int)node["negatives"]; - btpNegatives = (int)node["btpNegatives"]; - - shrinkage = (int)node["shrinkage"]; - - treeDepth = (int)node["treeDepth"]; - weaks = (int)node["weaks"]; - poolSize = (int)node["poolSize"]; - - cascadeName = (std::string)node["cascadeName"]; - outXmlPath = (std::string)node["outXmlPath"]; - - seed = (int)node["seed"]; - featureType = (std::string)node["featureType"]; -} - -void sft::write(cv::FileStorage& fs, const string&, const Config& x) -{ - x.write(fs); -} - -void sft::read(const cv::FileNode& node, Config& x, const Config& default_value) -{ - x = default_value; - - if(!node.empty()) - x.read(node); -} - -namespace { - -struct Out -{ - Out(std::ostream& _out): out(_out) {} - template - void operator ()(const T a) const {out << a << " ";} - - std::ostream& out; -private: - Out& operator=(Out const& other); -}; -} - -std::ostream& sft::operator<<(std::ostream& out, const Config& m) -{ - out << std::setw(14) << std::left << "trainPath" << m.trainPath << std::endl - << std::setw(14) << std::left << "testPath" << m.testPath << std::endl - - << std::setw(14) << std::left << "modelWinSize" << m.modelWinSize << std::endl - << std::setw(14) << std::left << "offset" << m.offset << std::endl - << std::setw(14) << std::left << "octaves"; - - Out o(out); - for_each(m.octaves.begin(), m.octaves.end(), o); - - out << std::endl - << std::setw(14) << std::left << "positives" << m.positives << std::endl - << std::setw(14) << std::left << "negatives" << m.negatives << std::endl - << std::setw(14) << std::left << "btpNegatives" << m.btpNegatives << std::endl - - << std::setw(14) << std::left << "shrinkage" << m.shrinkage << std::endl - - << std::setw(14) << std::left << "treeDepth" << m.treeDepth << std::endl - << std::setw(14) << std::left << "weaks" << m.weaks << std::endl - << std::setw(14) << std::left << "poolSize" << m.poolSize << std::endl - - << std::setw(14) << std::left << "cascadeName" << m.cascadeName << std::endl - << std::setw(14) << std::left << "outXmlPath" << m.outXmlPath << std::endl - << std::setw(14) << std::left << "seed" << m.seed << std::endl - << std::setw(14) << std::left << "featureType" << m.featureType << std::endl; - - return out; -} diff --git a/apps/sft/dataset.cpp b/apps/sft/dataset.cpp deleted file mode 100644 index dd4ba59..0000000 --- a/apps/sft/dataset.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#include -#include - -#include -#include - -// in the default case data folders should be aligned as following: -// 1. positives: /octave_/pos/*.png -// 2. negatives: /octave_/neg/*.png -sft::ScaledDataset::ScaledDataset(const string& path, const int oct) -{ - dprintf("%s\n", "get dataset file names..."); - dprintf("%s\n", "Positives globing..."); - cv::glob(path + "/pos/octave_" + cv::format("%d", oct) + "/*.png", pos); - - dprintf("%s\n", "Negatives globing..."); - cv::glob(path + "/neg/octave_" + cv::format("%d", oct) + "/*.png", neg); - - // Check: files not empty - CV_Assert(pos.size() != size_t(0)); - CV_Assert(neg.size() != size_t(0)); -} - -cv::Mat sft::ScaledDataset::get(SampleType type, int idx) const -{ - const std::string& src = (type == POSITIVE)? pos[idx]: neg[idx]; - return cv::imread(src); -} - -int sft::ScaledDataset::available(SampleType type) const -{ - return (int)((type == POSITIVE)? pos.size():neg.size()); -} - -sft::ScaledDataset::~ScaledDataset(){} diff --git a/apps/sft/include/sft/common.hpp b/apps/sft/include/sft/common.hpp deleted file mode 100644 index 5c142a7..0000000 --- a/apps/sft/include/sft/common.hpp +++ /dev/null @@ -1,74 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __SFT_COMMON_HPP__ -#define __SFT_COMMON_HPP__ - -#include -#include -#include - -namespace cv {using namespace softcascade;} -namespace sft -{ - - using cv::Mat; - struct ICF; - - typedef cv::String string; - - typedef std::vector Icfvector; - typedef std::vector svector; - typedef std::vector ivector; -} - -// used for noisy printfs -//#define WITH_DEBUG_OUT - -#if defined WITH_DEBUG_OUT -# include -# define dprintf(format, ...) printf(format, ##__VA_ARGS__) -#else -# define dprintf(format, ...) -#endif - -#endif diff --git a/apps/sft/include/sft/config.hpp b/apps/sft/include/sft/config.hpp deleted file mode 100644 index c6e85b2..0000000 --- a/apps/sft/include/sft/config.hpp +++ /dev/null @@ -1,138 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __SFT_CONFIG_HPP__ -#define __SFT_CONFIG_HPP__ - -#include - -#include - -namespace sft { - -struct Config -{ - Config(); - - void write(cv::FileStorage& fs) const; - - void read(const cv::FileNode& node); - - // Scaled and shrunk model size. - cv::Size model(ivector::const_iterator it) const - { - float octave = powf(2.f, (float)(*it)); - return cv::Size( cvRound(modelWinSize.width * octave) / shrinkage, - cvRound(modelWinSize.height * octave) / shrinkage ); - } - - // Scaled but, not shrunk bounding box for object in sample image. - cv::Rect bbox(ivector::const_iterator it) const - { - float octave = powf(2.f, (float)(*it)); - return cv::Rect( cvRound(offset.x * octave), cvRound(offset.y * octave), - cvRound(modelWinSize.width * octave), cvRound(modelWinSize.height * octave)); - } - - string resPath(ivector::const_iterator it) const - { - return cv::format("%s%d.xml",cascadeName.c_str(), *it); - } - - // Paths to a rescaled data - string trainPath; - string testPath; - - // Original model size. - cv::Size modelWinSize; - - // example offset into positive image - cv::Point2i offset; - - // List of octaves for which have to be trained cascades (a list of powers of two) - ivector octaves; - - // Maximum number of positives that should be used during training - int positives; - - // Initial number of negatives used during training. - int negatives; - - // Number of weak negatives to add each bootstrapping step. - int btpNegatives; - - // Inverse of scale for feature resizing - int shrinkage; - - // Depth on weak classifier's decision tree - int treeDepth; - - // Weak classifiers number in resulted cascade - int weaks; - - // Feature random pool size - int poolSize; - - // file name to store cascade - string cascadeName; - - // path to resulting cascade - string outXmlPath; - - // seed for random generation - int seed; - - // channel feature type - string featureType; - - // // bounding rectangle for actual example into example window - // cv::Rect exampleWindow; -}; - -// required for cv::FileStorage serialization -void write(cv::FileStorage& fs, const string&, const Config& x); -void read(const cv::FileNode& node, Config& x, const Config& default_value); -std::ostream& operator<<(std::ostream& out, const Config& m); - -} - -#endif diff --git a/apps/sft/include/sft/dataset.hpp b/apps/sft/include/sft/dataset.hpp deleted file mode 100644 index 7504f40..0000000 --- a/apps/sft/include/sft/dataset.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -#ifndef __SFT_OCTAVE_HPP__ -#define __SFT_OCTAVE_HPP__ - -#include -namespace sft -{ - -using cv::softcascade::Dataset; - -class ScaledDataset : public Dataset -{ -public: - ScaledDataset(const sft::string& path, const int octave); - - virtual cv::Mat get(SampleType type, int idx) const; - virtual int available(SampleType type) const; - virtual ~ScaledDataset(); - -private: - svector pos; - svector neg; -}; -} - -#endif diff --git a/apps/sft/sft.cpp b/apps/sft/sft.cpp deleted file mode 100644 index 79d4103..0000000 --- a/apps/sft/sft.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/*M/////////////////////////////////////////////////////////////////////////////////////// -// -// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING. -// -// By downloading, copying, installing or using the software you agree to this license. -// If you do not agree to this license, do not download, install, -// copy or use the software. -// -// -// License Agreement -// For Open Source Computer Vision Library -// -// Copyright (C) 2000-2008, Intel Corporation, all rights reserved. -// Copyright (C) 2008-2012, Willow Garage Inc., all rights reserved. -// Third party copyrights are property of their respective owners. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// * Redistribution's of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// * Redistribution's in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// * The name of the copyright holders may not be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// This software is provided by the copyright holders and contributors "as is" and -// any express or implied warranties, including, but not limited to, the implied -// warranties of merchantability and fitness for a particular purpose are disclaimed. -// In no event shall the Intel Corporation or contributors be liable for any direct, -// indirect, incidental, special, exemplary, or consequential damages -// (including, but not limited to, procurement of substitute goods or services; -// loss of use, data, or profits; or business interruption) however caused -// and on any theory of liability, whether in contract, strict liability, -// or tort (including negligence or otherwise) arising in any way out of -// the use of this software, even if advised of the possibility of such damage. -// -//M*/ - -// Training application for Soft Cascades. - -#include -#include -#include -#include - -#include - -int main(int argc, char** argv) -{ - using namespace sft; - - const string keys = - "{help h usage ? | | print this message }" - "{config c | | path to configuration xml }" - ; - - cv::CommandLineParser parser(argc, argv, keys); - parser.about("Soft cascade training application."); - - if (parser.has("help")) - { - parser.printMessage(); - return 0; - } - - if (!parser.check()) - { - parser.printErrors(); - return 1; - } - - string configPath = parser.get("config"); - if (configPath.empty()) - { - std::cout << "Configuration file is missing or empty. Could not start training." << std::endl; - return 0; - } - - std::cout << "Read configuration from file " << configPath << std::endl; - cv::FileStorage fs(configPath, cv::FileStorage::READ); - if(!fs.isOpened()) - { - std::cout << "Configuration file " << configPath << " can't be opened." << std::endl; - return 1; - } - - // 1. load config - sft::Config cfg; - fs["config"] >> cfg; - std::cout << std::endl << "Training will be executed for configuration:" << std::endl << cfg << std::endl; - - // 2. check and open output file - cv::FileStorage fso(cfg.outXmlPath, cv::FileStorage::WRITE); - if(!fso.isOpened()) - { - std::cout << "Training stopped. Output classifier Xml file " << cfg.outXmlPath << " can't be opened." << std::endl; - return 1; - } - - fso << cfg.cascadeName - << "{" - << "stageType" << "BOOST" - << "featureType" << cfg.featureType - << "octavesNum" << (int)cfg.octaves.size() - << "width" << cfg.modelWinSize.width - << "height" << cfg.modelWinSize.height - << "shrinkage" << cfg.shrinkage - << "octaves" << "["; - - // 3. Train all octaves - for (ivector::const_iterator it = cfg.octaves.begin(); it != cfg.octaves.end(); ++it) - { - // a. create random feature pool - int nfeatures = cfg.poolSize; - cv::Size model = cfg.model(it); - std::cout << "Model " << model << std::endl; - - int nchannels = (cfg.featureType == "HOG6MagLuv") ? 10: 8; - - std::cout << "number of feature channels is " << nchannels << std::endl; - - cv::Ptr pool = cv::FeaturePool::create(model, nfeatures, nchannels); - nfeatures = pool->size(); - - - int npositives = cfg.positives; - int nnegatives = cfg.negatives; - int shrinkage = cfg.shrinkage; - cv::Rect boundingBox = cfg.bbox(it); - std::cout << "Object bounding box" << boundingBox << std::endl; - - typedef cv::Octave Octave; - - cv::Ptr builder = cv::ChannelFeatureBuilder::create(cfg.featureType); - std::cout << "Channel builder " << builder->info()->name() << std::endl; - cv::Ptr boost = Octave::create(boundingBox, npositives, nnegatives, *it, shrinkage, builder); - - std::string path = cfg.trainPath; - sft::ScaledDataset dataset(path, *it); - - if (boost->train(&dataset, pool, cfg.weaks, cfg.treeDepth)) - { - CvFileStorage* fout = cvOpenFileStorage(cfg.resPath(it).c_str(), 0, CV_STORAGE_WRITE); - boost->write(fout, cfg.cascadeName); - - cvReleaseFileStorage( &fout); - - cv::Mat thresholds; - boost->setRejectThresholds(thresholds); - - boost->write(fso, pool, thresholds); - - cv::FileStorage tfs(("thresholds." + cfg.resPath(it)).c_str(), cv::FileStorage::WRITE); - tfs << "thresholds" << thresholds; - - std::cout << "Octave " << *it << " was successfully trained..." << std::endl; - } - } - - fso << "]" << "}"; - fso.release(); - std::cout << "Training complete..." << std::endl; - return 0; -} diff --git a/apps/traincascade/CMakeLists.txt b/apps/traincascade/CMakeLists.txt index f36e4b2..e560ed8 100644 --- a/apps/traincascade/CMakeLists.txt +++ b/apps/traincascade/CMakeLists.txt @@ -1,4 +1,4 @@ -set(OPENCV_TRAINCASCADE_DEPS opencv_core opencv_ml opencv_imgproc opencv_photo opencv_objdetect opencv_highgui opencv_calib3d opencv_video opencv_features2d opencv_flann opencv_legacy) +set(OPENCV_TRAINCASCADE_DEPS opencv_core opencv_ml opencv_imgproc opencv_photo opencv_objdetect opencv_highgui opencv_calib3d opencv_video opencv_features2d) ocv_check_dependencies(${OPENCV_TRAINCASCADE_DEPS}) if(NOT OCV_DEPENDENCIES_FOUND) @@ -20,7 +20,7 @@ set(traincascade_files traincascade.cpp set(the_target opencv_traincascade) add_executable(${the_target} ${traincascade_files}) -target_link_libraries(${the_target} ${OPENCV_TRAINCASCADE_DEPS} opencv_haartraining_engine) +target_link_libraries(${the_target} ${OPENCV_TRAINCASCADE_DEPS}) set_target_properties(${the_target} PROPERTIES DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" diff --git a/include/opencv/cv.h b/include/opencv/cv.h index 1ed020a..0aefc6d 100644 --- a/include/opencv/cv.h +++ b/include/opencv/cv.h @@ -65,8 +65,6 @@ #include "opencv2/photo/photo_c.h" #include "opencv2/video/tracking_c.h" #include "opencv2/objdetect/objdetect_c.h" -#include "opencv2/legacy.hpp" -#include "opencv2/legacy/compat.hpp" #if !defined(CV_IMPL) #define CV_IMPL extern "C" diff --git a/include/opencv2/opencv.hpp b/include/opencv2/opencv.hpp index 020a453..b7c290a 100644 --- a/include/opencv2/opencv.hpp +++ b/include/opencv2/opencv.hpp @@ -51,7 +51,6 @@ #include "opencv2/objdetect.hpp" #include "opencv2/calib3d.hpp" #include "opencv2/highgui.hpp" -#include "opencv2/contrib.hpp" #include "opencv2/ml.hpp" #endif diff --git a/modules/contrib/CMakeLists.txt b/modules/contrib/CMakeLists.txt deleted file mode 100644 index 120301b..0000000 --- a/modules/contrib/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -ocv_define_module(contrib opencv_imgproc opencv_calib3d opencv_ml opencv_video opencv_objdetect OPTIONAL opencv_highgui opencv_nonfree) diff --git a/modules/contrib/doc/contrib.rst b/modules/contrib/doc/contrib.rst deleted file mode 100644 index de14d33..0000000 --- a/modules/contrib/doc/contrib.rst +++ /dev/null @@ -1,12 +0,0 @@ -*************************************** -contrib. Contributed/Experimental Stuff -*************************************** - -The module contains some recently added functionality that has not been stabilized, or functionality that is considered optional. - -.. toctree:: - :maxdepth: 2 - - stereo - FaceRecognizer Documentation - openfabmap diff --git a/modules/contrib/doc/facerec/colormaps.rst b/modules/contrib/doc/facerec/colormaps.rst deleted file mode 100644 index 95750ab..0000000 --- a/modules/contrib/doc/facerec/colormaps.rst +++ /dev/null @@ -1,107 +0,0 @@ -ColorMaps in OpenCV -=================== - -applyColorMap ---------------------- - -Applies a GNU Octave/MATLAB equivalent colormap on a given image. - -.. ocv:function:: void applyColorMap(InputArray src, OutputArray dst, int colormap) - - :param src: The source image, grayscale or colored does not matter. - :param dst: The result is the colormapped source image. Note: :ocv:func:`Mat::create` is called on dst. - :param colormap: The colormap to apply, see the list of available colormaps below. - -Currently the following GNU Octave/MATLAB equivalent colormaps are implemented: - -.. code-block:: cpp - - enum - { - COLORMAP_AUTUMN = 0, - COLORMAP_BONE = 1, - COLORMAP_JET = 2, - COLORMAP_WINTER = 3, - COLORMAP_RAINBOW = 4, - COLORMAP_OCEAN = 5, - COLORMAP_SUMMER = 6, - COLORMAP_SPRING = 7, - COLORMAP_COOL = 8, - COLORMAP_HSV = 9, - COLORMAP_PINK = 10, - COLORMAP_HOT = 11 - } - - -Description ------------ - -The human perception isn't built for observing fine changes in grayscale images. Human eyes are more sensitive to observing changes between colors, so you often need to recolor your grayscale images to get a clue about them. OpenCV now comes with various colormaps to enhance the visualization in your computer vision application. - -In OpenCV 2.4 you only need :ocv:func:`applyColorMap` to apply a colormap on a given image. The following sample code reads the path to an image from command line, applies a Jet colormap on it and shows the result: - -.. code-block:: cpp - - #include - #include - #include - - using namespace cv; - - int main(int argc, const char *argv[]) { - // Get the path to the image, if it was given - // if no arguments were given. - String filename; - if (argc > 1) { - filename = String(argv[1]); - } - // The following lines show how to apply a colormap on a given image - // and show it with cv::imshow example with an image. An exception is - // thrown if the path to the image is invalid. - if(!filename.empty()) { - Mat img0 = imread(filename); - // Throw an exception, if the image can't be read: - if(img0.empty()) { - CV_Error(CV_StsBadArg, "Sample image is empty. Please adjust your path, so it points to a valid input image!"); - } - // Holds the colormap version of the image: - Mat cm_img0; - // Apply the colormap: - applyColorMap(img0, cm_img0, COLORMAP_JET); - // Show the result: - imshow("cm_img0", cm_img0); - waitKey(0); - } - - return 0; - } - -And here are the color scales for each of the available colormaps: - -+-----------------------+---------------------------------------------------+ -| Class | Scale | -+=======================+===================================================+ -| COLORMAP_AUTUMN | .. image:: img/colormaps/colorscale_autumn.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_BONE | .. image:: img/colormaps/colorscale_bone.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_COOL | .. image:: img/colormaps/colorscale_cool.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_HOT | .. image:: img/colormaps/colorscale_hot.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_HSV | .. image:: img/colormaps/colorscale_hsv.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_JET | .. image:: img/colormaps/colorscale_jet.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_OCEAN | .. image:: img/colormaps/colorscale_ocean.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_PINK | .. image:: img/colormaps/colorscale_pink.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_RAINBOW | .. image:: img/colormaps/colorscale_rainbow.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_SPRING | .. image:: img/colormaps/colorscale_spring.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_SUMMER | .. image:: img/colormaps/colorscale_summer.jpg | -+-----------------------+---------------------------------------------------+ -| COLORMAP_WINTER | .. image:: img/colormaps/colorscale_winter.jpg | -+-----------------------+---------------------------------------------------+ diff --git a/modules/contrib/doc/facerec/etc/at.txt b/modules/contrib/doc/facerec/etc/at.txt deleted file mode 100644 index 3d76326..0000000 --- a/modules/contrib/doc/facerec/etc/at.txt +++ /dev/null @@ -1,400 +0,0 @@ -/home/philipp/facerec/data/at/s13/2.pgm;12 -/home/philipp/facerec/data/at/s13/7.pgm;12 -/home/philipp/facerec/data/at/s13/6.pgm;12 -/home/philipp/facerec/data/at/s13/9.pgm;12 -/home/philipp/facerec/data/at/s13/5.pgm;12 -/home/philipp/facerec/data/at/s13/3.pgm;12 -/home/philipp/facerec/data/at/s13/4.pgm;12 -/home/philipp/facerec/data/at/s13/10.pgm;12 -/home/philipp/facerec/data/at/s13/8.pgm;12 -/home/philipp/facerec/data/at/s13/1.pgm;12 -/home/philipp/facerec/data/at/s17/2.pgm;16 -/home/philipp/facerec/data/at/s17/7.pgm;16 -/home/philipp/facerec/data/at/s17/6.pgm;16 -/home/philipp/facerec/data/at/s17/9.pgm;16 -/home/philipp/facerec/data/at/s17/5.pgm;16 -/home/philipp/facerec/data/at/s17/3.pgm;16 -/home/philipp/facerec/data/at/s17/4.pgm;16 -/home/philipp/facerec/data/at/s17/10.pgm;16 -/home/philipp/facerec/data/at/s17/8.pgm;16 -/home/philipp/facerec/data/at/s17/1.pgm;16 -/home/philipp/facerec/data/at/s32/2.pgm;31 -/home/philipp/facerec/data/at/s32/7.pgm;31 -/home/philipp/facerec/data/at/s32/6.pgm;31 -/home/philipp/facerec/data/at/s32/9.pgm;31 -/home/philipp/facerec/data/at/s32/5.pgm;31 -/home/philipp/facerec/data/at/s32/3.pgm;31 -/home/philipp/facerec/data/at/s32/4.pgm;31 -/home/philipp/facerec/data/at/s32/10.pgm;31 -/home/philipp/facerec/data/at/s32/8.pgm;31 -/home/philipp/facerec/data/at/s32/1.pgm;31 -/home/philipp/facerec/data/at/s10/2.pgm;9 -/home/philipp/facerec/data/at/s10/7.pgm;9 -/home/philipp/facerec/data/at/s10/6.pgm;9 -/home/philipp/facerec/data/at/s10/9.pgm;9 -/home/philipp/facerec/data/at/s10/5.pgm;9 -/home/philipp/facerec/data/at/s10/3.pgm;9 -/home/philipp/facerec/data/at/s10/4.pgm;9 -/home/philipp/facerec/data/at/s10/10.pgm;9 -/home/philipp/facerec/data/at/s10/8.pgm;9 -/home/philipp/facerec/data/at/s10/1.pgm;9 -/home/philipp/facerec/data/at/s27/2.pgm;26 -/home/philipp/facerec/data/at/s27/7.pgm;26 -/home/philipp/facerec/data/at/s27/6.pgm;26 -/home/philipp/facerec/data/at/s27/9.pgm;26 -/home/philipp/facerec/data/at/s27/5.pgm;26 -/home/philipp/facerec/data/at/s27/3.pgm;26 -/home/philipp/facerec/data/at/s27/4.pgm;26 -/home/philipp/facerec/data/at/s27/10.pgm;26 -/home/philipp/facerec/data/at/s27/8.pgm;26 -/home/philipp/facerec/data/at/s27/1.pgm;26 -/home/philipp/facerec/data/at/s5/2.pgm;4 -/home/philipp/facerec/data/at/s5/7.pgm;4 -/home/philipp/facerec/data/at/s5/6.pgm;4 -/home/philipp/facerec/data/at/s5/9.pgm;4 -/home/philipp/facerec/data/at/s5/5.pgm;4 -/home/philipp/facerec/data/at/s5/3.pgm;4 -/home/philipp/facerec/data/at/s5/4.pgm;4 -/home/philipp/facerec/data/at/s5/10.pgm;4 -/home/philipp/facerec/data/at/s5/8.pgm;4 -/home/philipp/facerec/data/at/s5/1.pgm;4 -/home/philipp/facerec/data/at/s20/2.pgm;19 -/home/philipp/facerec/data/at/s20/7.pgm;19 -/home/philipp/facerec/data/at/s20/6.pgm;19 -/home/philipp/facerec/data/at/s20/9.pgm;19 -/home/philipp/facerec/data/at/s20/5.pgm;19 -/home/philipp/facerec/data/at/s20/3.pgm;19 -/home/philipp/facerec/data/at/s20/4.pgm;19 -/home/philipp/facerec/data/at/s20/10.pgm;19 -/home/philipp/facerec/data/at/s20/8.pgm;19 -/home/philipp/facerec/data/at/s20/1.pgm;19 -/home/philipp/facerec/data/at/s30/2.pgm;29 -/home/philipp/facerec/data/at/s30/7.pgm;29 -/home/philipp/facerec/data/at/s30/6.pgm;29 -/home/philipp/facerec/data/at/s30/9.pgm;29 -/home/philipp/facerec/data/at/s30/5.pgm;29 -/home/philipp/facerec/data/at/s30/3.pgm;29 -/home/philipp/facerec/data/at/s30/4.pgm;29 -/home/philipp/facerec/data/at/s30/10.pgm;29 -/home/philipp/facerec/data/at/s30/8.pgm;29 -/home/philipp/facerec/data/at/s30/1.pgm;29 -/home/philipp/facerec/data/at/s39/2.pgm;38 -/home/philipp/facerec/data/at/s39/7.pgm;38 -/home/philipp/facerec/data/at/s39/6.pgm;38 -/home/philipp/facerec/data/at/s39/9.pgm;38 -/home/philipp/facerec/data/at/s39/5.pgm;38 -/home/philipp/facerec/data/at/s39/3.pgm;38 -/home/philipp/facerec/data/at/s39/4.pgm;38 -/home/philipp/facerec/data/at/s39/10.pgm;38 -/home/philipp/facerec/data/at/s39/8.pgm;38 -/home/philipp/facerec/data/at/s39/1.pgm;38 -/home/philipp/facerec/data/at/s35/2.pgm;34 -/home/philipp/facerec/data/at/s35/7.pgm;34 -/home/philipp/facerec/data/at/s35/6.pgm;34 -/home/philipp/facerec/data/at/s35/9.pgm;34 -/home/philipp/facerec/data/at/s35/5.pgm;34 -/home/philipp/facerec/data/at/s35/3.pgm;34 -/home/philipp/facerec/data/at/s35/4.pgm;34 -/home/philipp/facerec/data/at/s35/10.pgm;34 -/home/philipp/facerec/data/at/s35/8.pgm;34 -/home/philipp/facerec/data/at/s35/1.pgm;34 -/home/philipp/facerec/data/at/s23/2.pgm;22 -/home/philipp/facerec/data/at/s23/7.pgm;22 -/home/philipp/facerec/data/at/s23/6.pgm;22 -/home/philipp/facerec/data/at/s23/9.pgm;22 -/home/philipp/facerec/data/at/s23/5.pgm;22 -/home/philipp/facerec/data/at/s23/3.pgm;22 -/home/philipp/facerec/data/at/s23/4.pgm;22 -/home/philipp/facerec/data/at/s23/10.pgm;22 -/home/philipp/facerec/data/at/s23/8.pgm;22 -/home/philipp/facerec/data/at/s23/1.pgm;22 -/home/philipp/facerec/data/at/s4/2.pgm;3 -/home/philipp/facerec/data/at/s4/7.pgm;3 -/home/philipp/facerec/data/at/s4/6.pgm;3 -/home/philipp/facerec/data/at/s4/9.pgm;3 -/home/philipp/facerec/data/at/s4/5.pgm;3 -/home/philipp/facerec/data/at/s4/3.pgm;3 -/home/philipp/facerec/data/at/s4/4.pgm;3 -/home/philipp/facerec/data/at/s4/10.pgm;3 -/home/philipp/facerec/data/at/s4/8.pgm;3 -/home/philipp/facerec/data/at/s4/1.pgm;3 -/home/philipp/facerec/data/at/s9/2.pgm;8 -/home/philipp/facerec/data/at/s9/7.pgm;8 -/home/philipp/facerec/data/at/s9/6.pgm;8 -/home/philipp/facerec/data/at/s9/9.pgm;8 -/home/philipp/facerec/data/at/s9/5.pgm;8 -/home/philipp/facerec/data/at/s9/3.pgm;8 -/home/philipp/facerec/data/at/s9/4.pgm;8 -/home/philipp/facerec/data/at/s9/10.pgm;8 -/home/philipp/facerec/data/at/s9/8.pgm;8 -/home/philipp/facerec/data/at/s9/1.pgm;8 -/home/philipp/facerec/data/at/s37/2.pgm;36 -/home/philipp/facerec/data/at/s37/7.pgm;36 -/home/philipp/facerec/data/at/s37/6.pgm;36 -/home/philipp/facerec/data/at/s37/9.pgm;36 -/home/philipp/facerec/data/at/s37/5.pgm;36 -/home/philipp/facerec/data/at/s37/3.pgm;36 -/home/philipp/facerec/data/at/s37/4.pgm;36 -/home/philipp/facerec/data/at/s37/10.pgm;36 -/home/philipp/facerec/data/at/s37/8.pgm;36 -/home/philipp/facerec/data/at/s37/1.pgm;36 -/home/philipp/facerec/data/at/s24/2.pgm;23 -/home/philipp/facerec/data/at/s24/7.pgm;23 -/home/philipp/facerec/data/at/s24/6.pgm;23 -/home/philipp/facerec/data/at/s24/9.pgm;23 -/home/philipp/facerec/data/at/s24/5.pgm;23 -/home/philipp/facerec/data/at/s24/3.pgm;23 -/home/philipp/facerec/data/at/s24/4.pgm;23 -/home/philipp/facerec/data/at/s24/10.pgm;23 -/home/philipp/facerec/data/at/s24/8.pgm;23 -/home/philipp/facerec/data/at/s24/1.pgm;23 -/home/philipp/facerec/data/at/s19/2.pgm;18 -/home/philipp/facerec/data/at/s19/7.pgm;18 -/home/philipp/facerec/data/at/s19/6.pgm;18 -/home/philipp/facerec/data/at/s19/9.pgm;18 -/home/philipp/facerec/data/at/s19/5.pgm;18 -/home/philipp/facerec/data/at/s19/3.pgm;18 -/home/philipp/facerec/data/at/s19/4.pgm;18 -/home/philipp/facerec/data/at/s19/10.pgm;18 -/home/philipp/facerec/data/at/s19/8.pgm;18 -/home/philipp/facerec/data/at/s19/1.pgm;18 -/home/philipp/facerec/data/at/s8/2.pgm;7 -/home/philipp/facerec/data/at/s8/7.pgm;7 -/home/philipp/facerec/data/at/s8/6.pgm;7 -/home/philipp/facerec/data/at/s8/9.pgm;7 -/home/philipp/facerec/data/at/s8/5.pgm;7 -/home/philipp/facerec/data/at/s8/3.pgm;7 -/home/philipp/facerec/data/at/s8/4.pgm;7 -/home/philipp/facerec/data/at/s8/10.pgm;7 -/home/philipp/facerec/data/at/s8/8.pgm;7 -/home/philipp/facerec/data/at/s8/1.pgm;7 -/home/philipp/facerec/data/at/s21/2.pgm;20 -/home/philipp/facerec/data/at/s21/7.pgm;20 -/home/philipp/facerec/data/at/s21/6.pgm;20 -/home/philipp/facerec/data/at/s21/9.pgm;20 -/home/philipp/facerec/data/at/s21/5.pgm;20 -/home/philipp/facerec/data/at/s21/3.pgm;20 -/home/philipp/facerec/data/at/s21/4.pgm;20 -/home/philipp/facerec/data/at/s21/10.pgm;20 -/home/philipp/facerec/data/at/s21/8.pgm;20 -/home/philipp/facerec/data/at/s21/1.pgm;20 -/home/philipp/facerec/data/at/s1/2.pgm;0 -/home/philipp/facerec/data/at/s1/7.pgm;0 -/home/philipp/facerec/data/at/s1/6.pgm;0 -/home/philipp/facerec/data/at/s1/9.pgm;0 -/home/philipp/facerec/data/at/s1/5.pgm;0 -/home/philipp/facerec/data/at/s1/3.pgm;0 -/home/philipp/facerec/data/at/s1/4.pgm;0 -/home/philipp/facerec/data/at/s1/10.pgm;0 -/home/philipp/facerec/data/at/s1/8.pgm;0 -/home/philipp/facerec/data/at/s1/1.pgm;0 -/home/philipp/facerec/data/at/s7/2.pgm;6 -/home/philipp/facerec/data/at/s7/7.pgm;6 -/home/philipp/facerec/data/at/s7/6.pgm;6 -/home/philipp/facerec/data/at/s7/9.pgm;6 -/home/philipp/facerec/data/at/s7/5.pgm;6 -/home/philipp/facerec/data/at/s7/3.pgm;6 -/home/philipp/facerec/data/at/s7/4.pgm;6 -/home/philipp/facerec/data/at/s7/10.pgm;6 -/home/philipp/facerec/data/at/s7/8.pgm;6 -/home/philipp/facerec/data/at/s7/1.pgm;6 -/home/philipp/facerec/data/at/s16/2.pgm;15 -/home/philipp/facerec/data/at/s16/7.pgm;15 -/home/philipp/facerec/data/at/s16/6.pgm;15 -/home/philipp/facerec/data/at/s16/9.pgm;15 -/home/philipp/facerec/data/at/s16/5.pgm;15 -/home/philipp/facerec/data/at/s16/3.pgm;15 -/home/philipp/facerec/data/at/s16/4.pgm;15 -/home/philipp/facerec/data/at/s16/10.pgm;15 -/home/philipp/facerec/data/at/s16/8.pgm;15 -/home/philipp/facerec/data/at/s16/1.pgm;15 -/home/philipp/facerec/data/at/s36/2.pgm;35 -/home/philipp/facerec/data/at/s36/7.pgm;35 -/home/philipp/facerec/data/at/s36/6.pgm;35 -/home/philipp/facerec/data/at/s36/9.pgm;35 -/home/philipp/facerec/data/at/s36/5.pgm;35 -/home/philipp/facerec/data/at/s36/3.pgm;35 -/home/philipp/facerec/data/at/s36/4.pgm;35 -/home/philipp/facerec/data/at/s36/10.pgm;35 -/home/philipp/facerec/data/at/s36/8.pgm;35 -/home/philipp/facerec/data/at/s36/1.pgm;35 -/home/philipp/facerec/data/at/s25/2.pgm;24 -/home/philipp/facerec/data/at/s25/7.pgm;24 -/home/philipp/facerec/data/at/s25/6.pgm;24 -/home/philipp/facerec/data/at/s25/9.pgm;24 -/home/philipp/facerec/data/at/s25/5.pgm;24 -/home/philipp/facerec/data/at/s25/3.pgm;24 -/home/philipp/facerec/data/at/s25/4.pgm;24 -/home/philipp/facerec/data/at/s25/10.pgm;24 -/home/philipp/facerec/data/at/s25/8.pgm;24 -/home/philipp/facerec/data/at/s25/1.pgm;24 -/home/philipp/facerec/data/at/s14/2.pgm;13 -/home/philipp/facerec/data/at/s14/7.pgm;13 -/home/philipp/facerec/data/at/s14/6.pgm;13 -/home/philipp/facerec/data/at/s14/9.pgm;13 -/home/philipp/facerec/data/at/s14/5.pgm;13 -/home/philipp/facerec/data/at/s14/3.pgm;13 -/home/philipp/facerec/data/at/s14/4.pgm;13 -/home/philipp/facerec/data/at/s14/10.pgm;13 -/home/philipp/facerec/data/at/s14/8.pgm;13 -/home/philipp/facerec/data/at/s14/1.pgm;13 -/home/philipp/facerec/data/at/s34/2.pgm;33 -/home/philipp/facerec/data/at/s34/7.pgm;33 -/home/philipp/facerec/data/at/s34/6.pgm;33 -/home/philipp/facerec/data/at/s34/9.pgm;33 -/home/philipp/facerec/data/at/s34/5.pgm;33 -/home/philipp/facerec/data/at/s34/3.pgm;33 -/home/philipp/facerec/data/at/s34/4.pgm;33 -/home/philipp/facerec/data/at/s34/10.pgm;33 -/home/philipp/facerec/data/at/s34/8.pgm;33 -/home/philipp/facerec/data/at/s34/1.pgm;33 -/home/philipp/facerec/data/at/s11/2.pgm;10 -/home/philipp/facerec/data/at/s11/7.pgm;10 -/home/philipp/facerec/data/at/s11/6.pgm;10 -/home/philipp/facerec/data/at/s11/9.pgm;10 -/home/philipp/facerec/data/at/s11/5.pgm;10 -/home/philipp/facerec/data/at/s11/3.pgm;10 -/home/philipp/facerec/data/at/s11/4.pgm;10 -/home/philipp/facerec/data/at/s11/10.pgm;10 -/home/philipp/facerec/data/at/s11/8.pgm;10 -/home/philipp/facerec/data/at/s11/1.pgm;10 -/home/philipp/facerec/data/at/s26/2.pgm;25 -/home/philipp/facerec/data/at/s26/7.pgm;25 -/home/philipp/facerec/data/at/s26/6.pgm;25 -/home/philipp/facerec/data/at/s26/9.pgm;25 -/home/philipp/facerec/data/at/s26/5.pgm;25 -/home/philipp/facerec/data/at/s26/3.pgm;25 -/home/philipp/facerec/data/at/s26/4.pgm;25 -/home/philipp/facerec/data/at/s26/10.pgm;25 -/home/philipp/facerec/data/at/s26/8.pgm;25 -/home/philipp/facerec/data/at/s26/1.pgm;25 -/home/philipp/facerec/data/at/s18/2.pgm;17 -/home/philipp/facerec/data/at/s18/7.pgm;17 -/home/philipp/facerec/data/at/s18/6.pgm;17 -/home/philipp/facerec/data/at/s18/9.pgm;17 -/home/philipp/facerec/data/at/s18/5.pgm;17 -/home/philipp/facerec/data/at/s18/3.pgm;17 -/home/philipp/facerec/data/at/s18/4.pgm;17 -/home/philipp/facerec/data/at/s18/10.pgm;17 -/home/philipp/facerec/data/at/s18/8.pgm;17 -/home/philipp/facerec/data/at/s18/1.pgm;17 -/home/philipp/facerec/data/at/s29/2.pgm;28 -/home/philipp/facerec/data/at/s29/7.pgm;28 -/home/philipp/facerec/data/at/s29/6.pgm;28 -/home/philipp/facerec/data/at/s29/9.pgm;28 -/home/philipp/facerec/data/at/s29/5.pgm;28 -/home/philipp/facerec/data/at/s29/3.pgm;28 -/home/philipp/facerec/data/at/s29/4.pgm;28 -/home/philipp/facerec/data/at/s29/10.pgm;28 -/home/philipp/facerec/data/at/s29/8.pgm;28 -/home/philipp/facerec/data/at/s29/1.pgm;28 -/home/philipp/facerec/data/at/s33/2.pgm;32 -/home/philipp/facerec/data/at/s33/7.pgm;32 -/home/philipp/facerec/data/at/s33/6.pgm;32 -/home/philipp/facerec/data/at/s33/9.pgm;32 -/home/philipp/facerec/data/at/s33/5.pgm;32 -/home/philipp/facerec/data/at/s33/3.pgm;32 -/home/philipp/facerec/data/at/s33/4.pgm;32 -/home/philipp/facerec/data/at/s33/10.pgm;32 -/home/philipp/facerec/data/at/s33/8.pgm;32 -/home/philipp/facerec/data/at/s33/1.pgm;32 -/home/philipp/facerec/data/at/s12/2.pgm;11 -/home/philipp/facerec/data/at/s12/7.pgm;11 -/home/philipp/facerec/data/at/s12/6.pgm;11 -/home/philipp/facerec/data/at/s12/9.pgm;11 -/home/philipp/facerec/data/at/s12/5.pgm;11 -/home/philipp/facerec/data/at/s12/3.pgm;11 -/home/philipp/facerec/data/at/s12/4.pgm;11 -/home/philipp/facerec/data/at/s12/10.pgm;11 -/home/philipp/facerec/data/at/s12/8.pgm;11 -/home/philipp/facerec/data/at/s12/1.pgm;11 -/home/philipp/facerec/data/at/s6/2.pgm;5 -/home/philipp/facerec/data/at/s6/7.pgm;5 -/home/philipp/facerec/data/at/s6/6.pgm;5 -/home/philipp/facerec/data/at/s6/9.pgm;5 -/home/philipp/facerec/data/at/s6/5.pgm;5 -/home/philipp/facerec/data/at/s6/3.pgm;5 -/home/philipp/facerec/data/at/s6/4.pgm;5 -/home/philipp/facerec/data/at/s6/10.pgm;5 -/home/philipp/facerec/data/at/s6/8.pgm;5 -/home/philipp/facerec/data/at/s6/1.pgm;5 -/home/philipp/facerec/data/at/s22/2.pgm;21 -/home/philipp/facerec/data/at/s22/7.pgm;21 -/home/philipp/facerec/data/at/s22/6.pgm;21 -/home/philipp/facerec/data/at/s22/9.pgm;21 -/home/philipp/facerec/data/at/s22/5.pgm;21 -/home/philipp/facerec/data/at/s22/3.pgm;21 -/home/philipp/facerec/data/at/s22/4.pgm;21 -/home/philipp/facerec/data/at/s22/10.pgm;21 -/home/philipp/facerec/data/at/s22/8.pgm;21 -/home/philipp/facerec/data/at/s22/1.pgm;21 -/home/philipp/facerec/data/at/s15/2.pgm;14 -/home/philipp/facerec/data/at/s15/7.pgm;14 -/home/philipp/facerec/data/at/s15/6.pgm;14 -/home/philipp/facerec/data/at/s15/9.pgm;14 -/home/philipp/facerec/data/at/s15/5.pgm;14 -/home/philipp/facerec/data/at/s15/3.pgm;14 -/home/philipp/facerec/data/at/s15/4.pgm;14 -/home/philipp/facerec/data/at/s15/10.pgm;14 -/home/philipp/facerec/data/at/s15/8.pgm;14 -/home/philipp/facerec/data/at/s15/1.pgm;14 -/home/philipp/facerec/data/at/s2/2.pgm;1 -/home/philipp/facerec/data/at/s2/7.pgm;1 -/home/philipp/facerec/data/at/s2/6.pgm;1 -/home/philipp/facerec/data/at/s2/9.pgm;1 -/home/philipp/facerec/data/at/s2/5.pgm;1 -/home/philipp/facerec/data/at/s2/3.pgm;1 -/home/philipp/facerec/data/at/s2/4.pgm;1 -/home/philipp/facerec/data/at/s2/10.pgm;1 -/home/philipp/facerec/data/at/s2/8.pgm;1 -/home/philipp/facerec/data/at/s2/1.pgm;1 -/home/philipp/facerec/data/at/s31/2.pgm;30 -/home/philipp/facerec/data/at/s31/7.pgm;30 -/home/philipp/facerec/data/at/s31/6.pgm;30 -/home/philipp/facerec/data/at/s31/9.pgm;30 -/home/philipp/facerec/data/at/s31/5.pgm;30 -/home/philipp/facerec/data/at/s31/3.pgm;30 -/home/philipp/facerec/data/at/s31/4.pgm;30 -/home/philipp/facerec/data/at/s31/10.pgm;30 -/home/philipp/facerec/data/at/s31/8.pgm;30 -/home/philipp/facerec/data/at/s31/1.pgm;30 -/home/philipp/facerec/data/at/s28/2.pgm;27 -/home/philipp/facerec/data/at/s28/7.pgm;27 -/home/philipp/facerec/data/at/s28/6.pgm;27 -/home/philipp/facerec/data/at/s28/9.pgm;27 -/home/philipp/facerec/data/at/s28/5.pgm;27 -/home/philipp/facerec/data/at/s28/3.pgm;27 -/home/philipp/facerec/data/at/s28/4.pgm;27 -/home/philipp/facerec/data/at/s28/10.pgm;27 -/home/philipp/facerec/data/at/s28/8.pgm;27 -/home/philipp/facerec/data/at/s28/1.pgm;27 -/home/philipp/facerec/data/at/s40/2.pgm;39 -/home/philipp/facerec/data/at/s40/7.pgm;39 -/home/philipp/facerec/data/at/s40/6.pgm;39 -/home/philipp/facerec/data/at/s40/9.pgm;39 -/home/philipp/facerec/data/at/s40/5.pgm;39 -/home/philipp/facerec/data/at/s40/3.pgm;39 -/home/philipp/facerec/data/at/s40/4.pgm;39 -/home/philipp/facerec/data/at/s40/10.pgm;39 -/home/philipp/facerec/data/at/s40/8.pgm;39 -/home/philipp/facerec/data/at/s40/1.pgm;39 -/home/philipp/facerec/data/at/s3/2.pgm;2 -/home/philipp/facerec/data/at/s3/7.pgm;2 -/home/philipp/facerec/data/at/s3/6.pgm;2 -/home/philipp/facerec/data/at/s3/9.pgm;2 -/home/philipp/facerec/data/at/s3/5.pgm;2 -/home/philipp/facerec/data/at/s3/3.pgm;2 -/home/philipp/facerec/data/at/s3/4.pgm;2 -/home/philipp/facerec/data/at/s3/10.pgm;2 -/home/philipp/facerec/data/at/s3/8.pgm;2 -/home/philipp/facerec/data/at/s3/1.pgm;2 -/home/philipp/facerec/data/at/s38/2.pgm;37 -/home/philipp/facerec/data/at/s38/7.pgm;37 -/home/philipp/facerec/data/at/s38/6.pgm;37 -/home/philipp/facerec/data/at/s38/9.pgm;37 -/home/philipp/facerec/data/at/s38/5.pgm;37 -/home/philipp/facerec/data/at/s38/3.pgm;37 -/home/philipp/facerec/data/at/s38/4.pgm;37 -/home/philipp/facerec/data/at/s38/10.pgm;37 -/home/philipp/facerec/data/at/s38/8.pgm;37 -/home/philipp/facerec/data/at/s38/1.pgm;37 diff --git a/modules/contrib/doc/facerec/facerec_api.rst b/modules/contrib/doc/facerec/facerec_api.rst deleted file mode 100644 index d8fdde6..0000000 --- a/modules/contrib/doc/facerec/facerec_api.rst +++ /dev/null @@ -1,377 +0,0 @@ -FaceRecognizer -============== - -.. highlight:: cpp - -.. Sample code:: - - * An example using the FaceRecognizer class can be found at opencv_source_code/samples/cpp/facerec_demo.cpp - - * (Python) An example using the FaceRecognizer class can be found at opencv_source_code/samples/python2/facerec_demo.py - -FaceRecognizer --------------- - -.. ocv:class:: FaceRecognizer : public Algorithm - -All face recognition models in OpenCV are derived from the abstract base class :ocv:class:`FaceRecognizer`, which provides -a unified access to all face recongition algorithms in OpenCV. :: - - class FaceRecognizer : public Algorithm - { - public: - //! virtual destructor - virtual ~FaceRecognizer() {} - - // Trains a FaceRecognizer. - virtual void train(InputArray src, InputArray labels) = 0; - - // Updates a FaceRecognizer. - virtual void update(InputArrayOfArrays src, InputArray labels); - - // Gets a prediction from a FaceRecognizer. - virtual int predict(InputArray src) const = 0; - - // Predicts the label and confidence for a given sample. - virtual void predict(InputArray src, int &label, double &confidence) const = 0; - - // Serializes this object to a given filename. - virtual void save(const String& filename) const; - - // Deserializes this object from a given filename. - virtual void load(const String& filename); - - // Serializes this object to a given cv::FileStorage. - virtual void save(FileStorage& fs) const = 0; - - // Deserializes this object from a given cv::FileStorage. - virtual void load(const FileStorage& fs) = 0; - }; - - -Description -+++++++++++ - -I'll go a bit more into detail explaining :ocv:class:`FaceRecognizer`, because it doesn't look like a powerful interface at first sight. But: Every :ocv:class:`FaceRecognizer` is an :ocv:class:`Algorithm`, so you can easily get/set all model internals (if allowed by the implementation). :ocv:class:`Algorithm` is a relatively new OpenCV concept, which is available since the 2.4 release. I suggest you take a look at its description. - -:ocv:class:`Algorithm` provides the following features for all derived classes: - -* So called “virtual constructor”. That is, each Algorithm derivative is registered at program start and you can get the list of registered algorithms and create instance of a particular algorithm by its name (see :ocv:func:`Algorithm::create`). If you plan to add your own algorithms, it is good practice to add a unique prefix to your algorithms to distinguish them from other algorithms. - -* Setting/Retrieving algorithm parameters by name. If you used video capturing functionality from OpenCV highgui module, you are probably familar with :ocv:cfunc:`cvSetCaptureProperty`, :ocv:cfunc:`cvGetCaptureProperty`, :ocv:func:`VideoCapture::set` and :ocv:func:`VideoCapture::get`. :ocv:class:`Algorithm` provides similar method where instead of integer id's you specify the parameter names as text Strings. See :ocv:func:`Algorithm::set` and :ocv:func:`Algorithm::get` for details. - -* Reading and writing parameters from/to XML or YAML files. Every Algorithm derivative can store all its parameters and then read them back. There is no need to re-implement it each time. - -Moreover every :ocv:class:`FaceRecognizer` supports the: - -* **Training** of a :ocv:class:`FaceRecognizer` with :ocv:func:`FaceRecognizer::train` on a given set of images (your face database!). - -* **Prediction** of a given sample image, that means a face. The image is given as a :ocv:class:`Mat`. - -* **Loading/Saving** the model state from/to a given XML or YAML. - -.. note:: When using the FaceRecognizer interface in combination with Python, please stick to Python 2. Some underlying scripts like create_csv will not work in other versions, like Python 3. - -Setting the Thresholds -+++++++++++++++++++++++ - -Sometimes you run into the situation, when you want to apply a threshold on the prediction. A common scenario in face recognition is to tell, whether a face belongs to the training dataset or if it is unknown. You might wonder, why there's no public API in :ocv:class:`FaceRecognizer` to set the threshold for the prediction, but rest assured: It's supported. It just means there's no generic way in an abstract class to provide an interface for setting/getting the thresholds of *every possible* :ocv:class:`FaceRecognizer` algorithm. The appropriate place to set the thresholds is in the constructor of the specific :ocv:class:`FaceRecognizer` and since every :ocv:class:`FaceRecognizer` is a :ocv:class:`Algorithm` (see above), you can get/set the thresholds at runtime! - -Here is an example of setting a threshold for the Eigenfaces method, when creating the model: - -.. code-block:: cpp - - // Let's say we want to keep 10 Eigenfaces and have a threshold value of 10.0 - int num_components = 10; - double threshold = 10.0; - // Then if you want to have a cv::FaceRecognizer with a confidence threshold, - // create the concrete implementation with the appropiate parameters: - Ptr model = createEigenFaceRecognizer(num_components, threshold); - -Sometimes it's impossible to train the model, just to experiment with threshold values. Thanks to :ocv:class:`Algorithm` it's possible to set internal model thresholds during runtime. Let's see how we would set/get the prediction for the Eigenface model, we've created above: - -.. code-block:: cpp - - // The following line reads the threshold from the Eigenfaces model: - double current_threshold = model->getDouble("threshold"); - // And this line sets the threshold to 0.0: - model->set("threshold", 0.0); - -If you've set the threshold to ``0.0`` as we did above, then: - -.. code-block:: cpp - - // - Mat img = imread("person1/3.jpg", CV_LOAD_IMAGE_GRAYSCALE); - // Get a prediction from the model. Note: We've set a threshold of 0.0 above, - // since the distance is almost always larger than 0.0, you'll get -1 as - // label, which indicates, this face is unknown - int predicted_label = model->predict(img); - // ... - -is going to yield ``-1`` as predicted label, which states this face is unknown. - -Getting the name of a FaceRecognizer -+++++++++++++++++++++++++++++++++++++ - -Since every :ocv:class:`FaceRecognizer` is a :ocv:class:`Algorithm`, you can use :ocv:func:`Algorithm::name` to get the name of a :ocv:class:`FaceRecognizer`: - -.. code-block:: cpp - - // Create a FaceRecognizer: - Ptr model = createEigenFaceRecognizer(); - // And here's how to get its name: - String name = model->name(); - - -FaceRecognizer::train ---------------------- - -Trains a FaceRecognizer with given data and associated labels. - -.. ocv:function:: void FaceRecognizer::train( InputArrayOfArrays src, InputArray labels ) = 0 - - :param src: The training images, that means the faces you want to learn. The data has to be given as a ``vector``. - - :param labels: The labels corresponding to the images have to be given either as a ``vector`` or a - -The following source code snippet shows you how to learn a Fisherfaces model on a given set of images. The images are read with :ocv:func:`imread` and pushed into a ``std::vector``. The labels of each image are stored within a ``std::vector`` (you could also use a :ocv:class:`Mat` of type `CV_32SC1`). Think of the label as the subject (the person) this image belongs to, so same subjects (persons) should have the same label. For the available :ocv:class:`FaceRecognizer` you don't have to pay any attention to the order of the labels, just make sure same persons have the same label: - -.. code-block:: cpp - - // holds images and labels - vector images; - vector labels; - // images for first person - images.push_back(imread("person0/0.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(0); - images.push_back(imread("person0/1.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(0); - images.push_back(imread("person0/2.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(0); - // images for second person - images.push_back(imread("person1/0.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(1); - images.push_back(imread("person1/1.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(1); - images.push_back(imread("person1/2.jpg", CV_LOAD_IMAGE_GRAYSCALE)); labels.push_back(1); - -Now that you have read some images, we can create a new :ocv:class:`FaceRecognizer`. In this example I'll create a Fisherfaces model and decide to keep all of the possible Fisherfaces: - -.. code-block:: cpp - - // Create a new Fisherfaces model and retain all available Fisherfaces, - // this is the most common usage of this specific FaceRecognizer: - // - Ptr model = createFisherFaceRecognizer(); - -And finally train it on the given dataset (the face images and labels): - -.. code-block:: cpp - - // This is the common interface to train all of the available cv::FaceRecognizer - // implementations: - // - model->train(images, labels); - -FaceRecognizer::update ----------------------- - -Updates a FaceRecognizer with given data and associated labels. - -.. ocv:function:: void FaceRecognizer::update( InputArrayOfArrays src, InputArray labels ) - - :param src: The training images, that means the faces you want to learn. The data has to be given as a ``vector``. - - :param labels: The labels corresponding to the images have to be given either as a ``vector`` or a - -This method updates a (probably trained) :ocv:class:`FaceRecognizer`, but only if the algorithm supports it. The Local Binary Patterns Histograms (LBPH) recognizer (see :ocv:func:`createLBPHFaceRecognizer`) can be updated. For the Eigenfaces and Fisherfaces method, this is algorithmically not possible and you have to re-estimate the model with :ocv:func:`FaceRecognizer::train`. In any case, a call to train empties the existing model and learns a new model, while update does not delete any model data. - -.. code-block:: cpp - - // Create a new LBPH model (it can be updated) and use the default parameters, - // this is the most common usage of this specific FaceRecognizer: - // - Ptr model = createLBPHFaceRecognizer(); - // This is the common interface to train all of the available cv::FaceRecognizer - // implementations: - // - model->train(images, labels); - // Some containers to hold new image: - vector newImages; - vector newLabels; - // You should add some images to the containers: - // - // ... - // - // Now updating the model is as easy as calling: - model->update(newImages,newLabels); - // This will preserve the old model data and extend the existing model - // with the new features extracted from newImages! - -Calling update on an Eigenfaces model (see :ocv:func:`createEigenFaceRecognizer`), which doesn't support updating, will throw an error similar to: - -.. code-block:: none - - OpenCV Error: The function/feature is not implemented (This FaceRecognizer (FaceRecognizer.Eigenfaces) does not support updating, you have to use FaceRecognizer::train to update it.) in update, file /home/philipp/git/opencv/modules/contrib/src/facerec.cpp, line 305 - terminate called after throwing an instance of 'cv::Exception' - -Please note: The :ocv:class:`FaceRecognizer` does not store your training images, because this would be very memory intense and it's not the responsibility of te :ocv:class:`FaceRecognizer` to do so. The caller is responsible for maintaining the dataset, he want to work with. - -FaceRecognizer::predict ------------------------ - -.. ocv:function:: int FaceRecognizer::predict( InputArray src ) const = 0 -.. ocv:function:: void FaceRecognizer::predict( InputArray src, int & label, double & confidence ) const = 0 - - Predicts a label and associated confidence (e.g. distance) for a given input image. - - :param src: Sample image to get a prediction from. - :param label: The predicted label for the given image. - :param confidence: Associated confidence (e.g. distance) for the predicted label. - -The suffix ``const`` means that prediction does not affect the internal model -state, so the method can be safely called from within different threads. - -The following example shows how to get a prediction from a trained model: - -.. code-block:: cpp - - using namespace cv; - // Do your initialization here (create the cv::FaceRecognizer model) ... - // ... - // Read in a sample image: - Mat img = imread("person1/3.jpg", CV_LOAD_IMAGE_GRAYSCALE); - // And get a prediction from the cv::FaceRecognizer: - int predicted = model->predict(img); - -Or to get a prediction and the associated confidence (e.g. distance): - -.. code-block:: cpp - - using namespace cv; - // Do your initialization here (create the cv::FaceRecognizer model) ... - // ... - Mat img = imread("person1/3.jpg", CV_LOAD_IMAGE_GRAYSCALE); - // Some variables for the predicted label and associated confidence (e.g. distance): - int predicted_label = -1; - double predicted_confidence = 0.0; - // Get the prediction and associated confidence from the model - model->predict(img, predicted_label, predicted_confidence); - -FaceRecognizer::save --------------------- - -Saves a :ocv:class:`FaceRecognizer` and its model state. - -.. ocv:function:: void FaceRecognizer::save(const String& filename) const - - Saves this model to a given filename, either as XML or YAML. - - :param filename: The filename to store this :ocv:class:`FaceRecognizer` to (either XML/YAML). - -.. ocv:function:: void FaceRecognizer::save(FileStorage& fs) const - - Saves this model to a given :ocv:class:`FileStorage`. - - :param fs: The :ocv:class:`FileStorage` to store this :ocv:class:`FaceRecognizer` to. - - -Every :ocv:class:`FaceRecognizer` overwrites ``FaceRecognizer::save(FileStorage& fs)`` -to save the internal model state. ``FaceRecognizer::save(const String& filename)`` saves -the state of a model to the given filename. - -The suffix ``const`` means that prediction does not affect the internal model -state, so the method can be safely called from within different threads. - -FaceRecognizer::load --------------------- - -Loads a :ocv:class:`FaceRecognizer` and its model state. - -.. ocv:function:: void FaceRecognizer::load( const String& filename ) -.. ocv:function:: void FaceRecognizer::load( const FileStorage& fs ) = 0 - -Loads a persisted model and state from a given XML or YAML file . Every -:ocv:class:`FaceRecognizer` has to overwrite ``FaceRecognizer::load(FileStorage& fs)`` -to enable loading the model state. ``FaceRecognizer::load(FileStorage& fs)`` in -turn gets called by ``FaceRecognizer::load(const String& filename)``, to ease -saving a model. - -createEigenFaceRecognizer -------------------------- - -.. ocv:function:: Ptr createEigenFaceRecognizer(int num_components = 0, double threshold = DBL_MAX) - - :param num_components: The number of components (read: Eigenfaces) kept for this Prinicpal Component Analysis. As a hint: There's no rule how many components (read: Eigenfaces) should be kept for good reconstruction capabilities. It is based on your input data, so experiment with the number. Keeping 80 components should almost always be sufficient. - - :param threshold: The threshold applied in the prediciton. - -Notes: -++++++ - -* Training and prediction must be done on grayscale images, use :ocv:func:`cvtColor` to convert between the color spaces. -* **THE EIGENFACES METHOD MAKES THE ASSUMPTION, THAT THE TRAINING AND TEST IMAGES ARE OF EQUAL SIZE.** (caps-lock, because I got so many mails asking for this). You have to make sure your input data has the correct shape, else a meaningful exception is thrown. Use :ocv:func:`resize` to resize the images. -* This model does not support updating. - -Model internal data: -++++++++++++++++++++ - -* ``num_components`` see :ocv:func:`createEigenFaceRecognizer`. -* ``threshold`` see :ocv:func:`createEigenFaceRecognizer`. -* ``eigenvalues`` The eigenvalues for this Principal Component Analysis (ordered descending). -* ``eigenvectors`` The eigenvectors for this Principal Component Analysis (ordered by their eigenvalue). -* ``mean`` The sample mean calculated from the training data. -* ``projections`` The projections of the training data. -* ``labels`` The threshold applied in the prediction. If the distance to the nearest neighbor is larger than the threshold, this method returns -1. - -createFisherFaceRecognizer --------------------------- - -.. ocv:function:: Ptr createFisherFaceRecognizer(int num_components = 0, double threshold = DBL_MAX) - - :param num_components: The number of components (read: Fisherfaces) kept for this Linear Discriminant Analysis with the Fisherfaces criterion. It's useful to keep all components, that means the number of your classes ``c`` (read: subjects, persons you want to recognize). If you leave this at the default (``0``) or set it to a value less-equal ``0`` or greater ``(c-1)``, it will be set to the correct number ``(c-1)`` automatically. - - :param threshold: The threshold applied in the prediction. If the distance to the nearest neighbor is larger than the threshold, this method returns -1. - -Notes: -++++++ - -* Training and prediction must be done on grayscale images, use :ocv:func:`cvtColor` to convert between the color spaces. -* **THE FISHERFACES METHOD MAKES THE ASSUMPTION, THAT THE TRAINING AND TEST IMAGES ARE OF EQUAL SIZE.** (caps-lock, because I got so many mails asking for this). You have to make sure your input data has the correct shape, else a meaningful exception is thrown. Use :ocv:func:`resize` to resize the images. -* This model does not support updating. - -Model internal data: -++++++++++++++++++++ - -* ``num_components`` see :ocv:func:`createFisherFaceRecognizer`. -* ``threshold`` see :ocv:func:`createFisherFaceRecognizer`. -* ``eigenvalues`` The eigenvalues for this Linear Discriminant Analysis (ordered descending). -* ``eigenvectors`` The eigenvectors for this Linear Discriminant Analysis (ordered by their eigenvalue). -* ``mean`` The sample mean calculated from the training data. -* ``projections`` The projections of the training data. -* ``labels`` The labels corresponding to the projections. - - -createLBPHFaceRecognizer -------------------------- - -.. ocv:function:: Ptr createLBPHFaceRecognizer(int radius=1, int neighbors=8, int grid_x=8, int grid_y=8, double threshold = DBL_MAX) - - :param radius: The radius used for building the Circular Local Binary Pattern. The greater the radius, the - :param neighbors: The number of sample points to build a Circular Local Binary Pattern from. An appropriate value is to use `` 8`` sample points. Keep in mind: the more sample points you include, the higher the computational cost. - :param grid_x: The number of cells in the horizontal direction, ``8`` is a common value used in publications. The more cells, the finer the grid, the higher the dimensionality of the resulting feature vector. - :param grid_y: The number of cells in the vertical direction, ``8`` is a common value used in publications. The more cells, the finer the grid, the higher the dimensionality of the resulting feature vector. - :param threshold: The threshold applied in the prediction. If the distance to the nearest neighbor is larger than the threshold, this method returns -1. - -Notes: -++++++ - -* The Circular Local Binary Patterns (used in training and prediction) expect the data given as grayscale images, use :ocv:func:`cvtColor` to convert between the color spaces. -* This model supports updating. - -Model internal data: -++++++++++++++++++++ - -* ``radius`` see :ocv:func:`createLBPHFaceRecognizer`. -* ``neighbors`` see :ocv:func:`createLBPHFaceRecognizer`. -* ``grid_x`` see :ocv:func:`createLBPHFaceRecognizer`. -* ``grid_y`` see :ocv:func:`createLBPHFaceRecognizer`. -* ``threshold`` see :ocv:func:`createLBPHFaceRecognizer`. -* ``histograms`` Local Binary Patterns Histograms calculated from the given training data (empty if none was given). -* ``labels`` Labels corresponding to the calculated Local Binary Patterns Histograms. diff --git a/modules/contrib/doc/facerec/facerec_changelog.rst b/modules/contrib/doc/facerec/facerec_changelog.rst deleted file mode 100644 index 1071358..0000000 --- a/modules/contrib/doc/facerec/facerec_changelog.rst +++ /dev/null @@ -1,86 +0,0 @@ -Changelog -========= - -Release 0.05 ------------- - -This library is now included in the official OpenCV distribution (from 2.4 on). -The :ocv:class`FaceRecognizer` is now an :ocv:class:`Algorithm`, which better fits into the overall -OpenCV API. - -To reduce the confusion on user side and minimize my work, libfacerec and OpenCV -have been synchronized and are now based on the same interfaces and implementation. - -The library now has an extensive documentation: - -* The API is explained in detail and with a lot of code examples. -* The face recognition guide I had written for Python and GNU Octave/MATLAB has been adapted to the new OpenCV C++ ``cv::FaceRecognizer``. -* A tutorial for gender classification with Fisherfaces. -* A tutorial for face recognition in videos (e.g. webcam). - - -Release highlights -++++++++++++++++++ - -* There are no single highlights to pick from, this release is a highlight itself. - -Release 0.04 ------------- - -This version is fully Windows-compatible and works with OpenCV 2.3.1. Several -bugfixes, but none influenced the recognition rate. - -Release highlights -++++++++++++++++++ - -* A whole lot of exceptions with meaningful error messages. -* A tutorial for Windows users: `http://bytefish.de/blog/opencv_visual_studio_and_libfacerec `_ - - -Release 0.03 ------------- - -Reworked the library to provide separate implementations in cpp files, because -it's the preferred way of contributing OpenCV libraries. This means the library -is not header-only anymore. Slight API changes were done, please see the -documentation for details. - -Release highlights -++++++++++++++++++ - -* New Unit Tests (for LBP Histograms) make the library more robust. -* Added more documentation. - - -Release 0.02 ------------- - -Reworked the library to provide separate implementations in cpp files, because -it's the preferred way of contributing OpenCV libraries. This means the library -is not header-only anymore. Slight API changes were done, please see the -documentation for details. - -Release highlights -++++++++++++++++++ - -* New Unit Tests (for LBP Histograms) make the library more robust. -* Added a documentation and changelog in reStructuredText. - -Release 0.01 ------------- - -Initial release as header-only library. - -Release highlights -++++++++++++++++++ - -* Colormaps for OpenCV to enhance the visualization. -* Face Recognition algorithms implemented: - - * Eigenfaces [TP91]_ - * Fisherfaces [BHK97]_ - * Local Binary Patterns Histograms [AHP04]_ - -* Added persistence facilities to store the models with a common API. -* Unit Tests (using `gtest `_). -* Providing a CMakeLists.txt to enable easy cross-platform building. diff --git a/modules/contrib/doc/facerec/facerec_tutorial.rst b/modules/contrib/doc/facerec/facerec_tutorial.rst deleted file mode 100644 index cbfb417..0000000 --- a/modules/contrib/doc/facerec/facerec_tutorial.rst +++ /dev/null @@ -1,628 +0,0 @@ -Face Recognition with OpenCV -############################ - -.. contents:: Table of Contents - :depth: 3 - -Introduction -============ - -`OpenCV (Open Source Computer Vision) `_ is a popular computer vision library started by `Intel `_ in 1999. The cross-platform library sets its focus on real-time image processing and includes patent-free implementations of the latest computer vision algorithms. In 2008 `Willow Garage `_ took over support and OpenCV 2.3.1 now comes with a programming interface to C, C++, `Python `_ and `Android `_. OpenCV is released under a BSD license so it is used in academic projects and commercial products alike. - -OpenCV 2.4 now comes with the very new :ocv:class:`FaceRecognizer` class for face recognition, so you can start experimenting with face recognition right away. This document is the guide I've wished for, when I was working myself into face recognition. It shows you how to perform face recognition with :ocv:class:`FaceRecognizer` in OpenCV (with full source code listings) and gives you an introduction into the algorithms behind. I'll also show how to create the visualizations you can find in many publications, because a lot of people asked for. - -The currently available algorithms are: - -* Eigenfaces (see :ocv:func:`createEigenFaceRecognizer`) -* Fisherfaces (see :ocv:func:`createFisherFaceRecognizer`) -* Local Binary Patterns Histograms (see :ocv:func:`createLBPHFaceRecognizer`) - -You don't need to copy and paste the source code examples from this page, because they are available in the ``src`` folder coming with this documentation. If you have built OpenCV with the samples turned on, chances are good you have them compiled already! Although it might be interesting for very advanced users, I've decided to leave the implementation details out as I am afraid they confuse new users. - -All code in this document is released under the `BSD license `_, so feel free to use it for your projects. - -Face Recognition -================ - -Face recognition is an easy task for humans. Experiments in [Tu06]_ have shown, that even one to three day old babies are able to distinguish between known faces. So how hard could it be for a computer? It turns out we know little about human recognition to date. Are inner features (eyes, nose, mouth) or outer features (head shape, hairline) used for a successful face recognition? How do we analyze an image and how does the brain encode it? It was shown by `David Hubel `_ and `Torsten Wiesel `_, that our brain has specialized nerve cells responding to specific local features of a scene, such as lines, edges, angles or movement. Since we don't see the world as scattered pieces, our visual cortex must somehow combine the different sources of information into useful patterns. Automatic face recognition is all about extracting those meaningful features from an image, putting them into a useful representation and performing some kind of classification on them. - -Face recognition based on the geometric features of a face is probably the most intuitive approach to face recognition. One of the first automated face recognition systems was described in [Kanade73]_: marker points (position of eyes, ears, nose, ...) were used to build a feature vector (distance between the points, angle between them, ...). The recognition was performed by calculating the euclidean distance between feature vectors of a probe and reference image. Such a method is robust against changes in illumination by its nature, but has a huge drawback: the accurate registration of the marker points is complicated, even with state of the art algorithms. Some of the latest work on geometric face recognition was carried out in [Bru92]_. A 22-dimensional feature vector was used and experiments on large datasets have shown, that geometrical features alone my not carry enough information for face recognition. - -The Eigenfaces method described in [TP91]_ took a holistic approach to face recognition: A facial image is a point from a high-dimensional image space and a lower-dimensional representation is found, where classification becomes easy. The lower-dimensional subspace is found with Principal Component Analysis, which identifies the axes with maximum variance. While this kind of transformation is optimal from a reconstruction standpoint, it doesn't take any class labels into account. Imagine a situation where the variance is generated from external sources, let it be light. The axes with maximum variance do not necessarily contain any discriminative information at all, hence a classification becomes impossible. So a class-specific projection with a Linear Discriminant Analysis was applied to face recognition in [BHK97]_. The basic idea is to minimize the variance within a class, while maximizing the variance between the classes at the same time. - -Recently various methods for a local feature extraction emerged. To avoid the high-dimensionality of the input data only local regions of an image are described, the extracted features are (hopefully) more robust against partial occlusion, illumation and small sample size. Algorithms used for a local feature extraction are Gabor Wavelets ([Wiskott97]_), Discrete Cosinus Transform ([Messer06]_) and Local Binary Patterns ([AHP04]_). It's still an open research question what's the best way to preserve spatial information when applying a local feature extraction, because spatial information is potentially useful information. - -Face Database -============== - -Let's get some data to experiment with first. I don't want to do a toy example here. We are doing face recognition, so you'll need some face images! You can either create your own dataset or start with one of the available face databases, `http://face-rec.org/databases/ `_ gives you an up-to-date overview. Three interesting databases are (parts of the description are quoted from `http://face-rec.org `_): - -* `AT&T Facedatabase `_ The AT&T Facedatabase, sometimes also referred to as *ORL Database of Faces*, contains ten different images of each of 40 distinct subjects. For some subjects, the images were taken at different times, varying the lighting, facial expressions (open / closed eyes, smiling / not smiling) and facial details (glasses / no glasses). All the images were taken against a dark homogeneous background with the subjects in an upright, frontal position (with tolerance for some side movement). - -* `Yale Facedatabase A `_, also known as Yalefaces. The AT&T Facedatabase is good for initial tests, but it's a fairly easy database. The Eigenfaces method already has a 97% recognition rate on it, so you won't see any great improvements with other algorithms. The Yale Facedatabase A (also known as Yalefaces) is a more appropriate dataset for initial experiments, because the recognition problem is harder. The database consists of 15 people (14 male, 1 female) each with 11 grayscale images sized :math:`320 \times 243` pixel. There are changes in the light conditions (center light, left light, right light), facial expressions (happy, normal, sad, sleepy, surprised, wink) and glasses (glasses, no-glasses). - - The original images are not cropped and aligned. Please look into the :ref:`appendixft` for a Python script, that does the job for you. - -* `Extended Yale Facedatabase B `_ The Extended Yale Facedatabase B contains 2414 images of 38 different people in its cropped version. The focus of this database is set on extracting features that are robust to illumination, the images have almost no variation in emotion/occlusion/... . I personally think, that this dataset is too large for the experiments I perform in this document. You better use the `AT&T Facedatabase `_ for intial testing. A first version of the Yale Facedatabase B was used in [BHK97]_ to see how the Eigenfaces and Fisherfaces method perform under heavy illumination changes. [Lee05]_ used the same setup to take 16128 images of 28 people. The Extended Yale Facedatabase B is the merge of the two databases, which is now known as Extended Yalefacedatabase B. - -Preparing the data -------------------- - -Once we have acquired some data, we'll need to read it in our program. In the demo applications I have decided to read the images from a very simple CSV file. Why? Because it's the simplest platform-independent approach I can think of. However, if you know a simpler solution please ping me about it. Basically all the CSV file needs to contain are lines composed of a ``filename`` followed by a ``;`` followed by the ``label`` (as *integer number*), making up a line like this: - -.. code-block:: none - - /path/to/image.ext;0 - -Let's dissect the line. ``/path/to/image.ext`` is the path to an image, probably something like this if you are in Windows: ``C:/faces/person0/image0.jpg``. Then there is the separator ``;`` and finally we assign the label ``0`` to the image. Think of the label as the subject (the person) this image belongs to, so same subjects (persons) should have the same label. - -Download the AT&T Facedatabase from AT&T Facedatabase and the corresponding CSV file from at.txt, which looks like this (file is without ... of course): - -.. code-block:: none - - ./at/s1/1.pgm;0 - ./at/s1/2.pgm;0 - ... - ./at/s2/1.pgm;1 - ./at/s2/2.pgm;1 - ... - ./at/s40/1.pgm;39 - ./at/s40/2.pgm;39 - -Imagine I have extracted the files to ``D:/data/at`` and have downloaded the CSV file to ``D:/data/at.txt``. Then you would simply need to Search & Replace ``./`` with ``D:/data/``. You can do that in an editor of your choice, every sufficiently advanced editor can do this. Once you have a CSV file with valid filenames and labels, you can run any of the demos by passing the path to the CSV file as parameter: - -.. code-block:: none - - facerec_demo.exe D:/data/at.txt - -Creating the CSV File -+++++++++++++++++++++ - -You don't really want to create the CSV file by hand. I have prepared you a little Python script ``create_csv.py`` (you find it at ``src/create_csv.py`` coming with this tutorial) that automatically creates you a CSV file. If you have your images in hierarchie like this (``/basepath//``): - -.. code-block:: none - - philipp@mango:~/facerec/data/at$ tree - . - |-- s1 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - |-- s2 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - ... - |-- s40 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - - -Then simply call create_csv.py with the path to the folder, just like this and you could save the output: - -.. code-block:: none - - philipp@mango:~/facerec/data$ python create_csv.py - at/s13/2.pgm;0 - at/s13/7.pgm;0 - at/s13/6.pgm;0 - at/s13/9.pgm;0 - at/s13/5.pgm;0 - at/s13/3.pgm;0 - at/s13/4.pgm;0 - at/s13/10.pgm;0 - at/s13/8.pgm;0 - at/s13/1.pgm;0 - at/s17/2.pgm;1 - at/s17/7.pgm;1 - at/s17/6.pgm;1 - at/s17/9.pgm;1 - at/s17/5.pgm;1 - at/s17/3.pgm;1 - [...] - -Please see the :ref:`appendixft` for additional informations. - -Eigenfaces -========== - -The problem with the image representation we are given is its high dimensionality. Two-dimensional :math:`p \times q` grayscale images span a :math:`m = pq`-dimensional vector space, so an image with :math:`100 \times 100` pixels lies in a :math:`10,000`-dimensional image space already. The question is: Are all dimensions equally useful for us? We can only make a decision if there's any variance in data, so what we are looking for are the components that account for most of the information. The Principal Component Analysis (PCA) was independently proposed by `Karl Pearson `_ (1901) and `Harold Hotelling `_ (1933) to turn a set of possibly correlated variables into a smaller set of uncorrelated variables. The idea is, that a high-dimensional dataset is often described by correlated variables and therefore only a few meaningful dimensions account for most of the information. The PCA method finds the directions with the greatest variance in the data, called principal components. - -Algorithmic Description ------------------------ - -Let :math:`X = \{ x_{1}, x_{2}, \ldots, x_{n} \}` be a random vector with observations :math:`x_i \in R^{d}`. - -1. Compute the mean :math:`\mu` - - .. math:: - - \mu = \frac{1}{n} \sum_{i=1}^{n} x_{i} - -2. Compute the the Covariance Matrix `S` - - .. math:: - - S = \frac{1}{n} \sum_{i=1}^{n} (x_{i} - \mu) (x_{i} - \mu)^{T}` - -3. Compute the eigenvalues :math:`\lambda_{i}` and eigenvectors :math:`v_{i}` of :math:`S` - - .. math:: - - S v_{i} = \lambda_{i} v_{i}, i=1,2,\ldots,n - -4. Order the eigenvectors descending by their eigenvalue. The :math:`k` principal components are the eigenvectors corresponding to the :math:`k` largest eigenvalues. - -The :math:`k` principal components of the observed vector :math:`x` are then given by: - -.. math:: - - y = W^{T} (x - \mu) - - -where :math:`W = (v_{1}, v_{2}, \ldots, v_{k})`. - -The reconstruction from the PCA basis is given by: - -.. math:: - - x = W y + \mu - -where :math:`W = (v_{1}, v_{2}, \ldots, v_{k})`. - - -The Eigenfaces method then performs face recognition by: - -* Projecting all training samples into the PCA subspace. -* Projecting the query image into the PCA subspace. -* Finding the nearest neighbor between the projected training images and the projected query image. - -Still there's one problem left to solve. Imagine we are given :math:`400` images sized :math:`100 \times 100` pixel. The Principal Component Analysis solves the covariance matrix :math:`S = X X^{T}`, where :math:`{size}(X) = 10000 \times 400` in our example. You would end up with a :math:`10000 \times 10000` matrix, roughly :math:`0.8 GB`. Solving this problem isn't feasible, so we'll need to apply a trick. From your linear algebra lessons you know that a :math:`M \times N` matrix with :math:`M > N` can only have :math:`N - 1` non-zero eigenvalues. So it's possible to take the eigenvalue decomposition :math:`S = X^{T} X` of size :math:`N \times N` instead: - -.. math:: - - X^{T} X v_{i} = \lambda_{i} v{i} - - -and get the original eigenvectors of :math:`S = X X^{T}` with a left multiplication of the data matrix: - -.. math:: - - X X^{T} (X v_{i}) = \lambda_{i} (X v_{i}) - -The resulting eigenvectors are orthogonal, to get orthonormal eigenvectors they need to be normalized to unit length. I don't want to turn this into a publication, so please look into [Duda01]_ for the derivation and proof of the equations. - -Eigenfaces in OpenCV --------------------- - -For the first source code example, I'll go through it with you. I am first giving you the whole source code listing, and after this we'll look at the most important lines in detail. Please note: every source code listing is commented in detail, so you should have no problems following it. - -.. literalinclude:: src/facerec_eigenfaces.cpp - :language: cpp - :linenos: - -The source code for this demo application is also available in the ``src`` folder coming with this documentation: - -* :download:`src/facerec_eigenfaces.cpp ` - - -I've used the jet colormap, so you can see how the grayscale values are distributed within the specific Eigenfaces. You can see, that the Eigenfaces do not only encode facial features, but also the illumination in the images (see the left light in Eigenface \#4, right light in Eigenfaces \#5): - -.. image:: img/eigenfaces_opencv.png - :align: center - -We've already seen, that we can reconstruct a face from its lower dimensional approximation. So let's see how many Eigenfaces are needed for a good reconstruction. I'll do a subplot with :math:`10,30,\ldots,310` Eigenfaces: - -.. code-block:: cpp - - // Display or save the image reconstruction at some predefined steps: - for(int num_components = 10; num_components < 300; num_components+=15) { - // slice the eigenvectors from the model - Mat evs = Mat(W, Range::all(), Range(0, num_components)); - Mat projection = subspaceProject(evs, mean, images[0].reshape(1,1)); - Mat reconstruction = subspaceReconstruct(evs, mean, projection); - // Normalize the result: - reconstruction = norm_0_255(reconstruction.reshape(1, images[0].rows)); - // Display or save: - if(argc == 2) { - imshow(format("eigenface_reconstruction_%d", num_components), reconstruction); - } else { - imwrite(format("%s/eigenface_reconstruction_%d.png", output_folder.c_str(), num_components), reconstruction); - } - } - -10 Eigenvectors are obviously not sufficient for a good image reconstruction, 50 Eigenvectors may already be sufficient to encode important facial features. You'll get a good reconstruction with approximately 300 Eigenvectors for the AT&T Facedatabase. There are rule of thumbs how many Eigenfaces you should choose for a successful face recognition, but it heavily depends on the input data. [Zhao03]_ is the perfect point to start researching for this: - -.. image:: img/eigenface_reconstruction_opencv.png - :align: center - - -Fisherfaces -============ - -The Principal Component Analysis (PCA), which is the core of the Eigenfaces method, finds a linear combination of features that maximizes the total variance in data. While this is clearly a powerful way to represent data, it doesn't consider any classes and so a lot of discriminative information *may* be lost when throwing components away. Imagine a situation where the variance in your data is generated by an external source, let it be the light. The components identified by a PCA do not necessarily contain any discriminative information at all, so the projected samples are smeared together and a classification becomes impossible (see `http://www.bytefish.de/wiki/pca_lda_with_gnu_octave `_ for an example). - -The Linear Discriminant Analysis performs a class-specific dimensionality reduction and was invented by the great statistician `Sir R. A. Fisher `_. He successfully used it for classifying flowers in his 1936 paper *The use of multiple measurements in taxonomic problems* [Fisher36]_. In order to find the combination of features that separates best between classes the Linear Discriminant Analysis maximizes the ratio of between-classes to within-classes scatter, instead of maximizing the overall scatter. The idea is simple: same classes should cluster tightly together, while different classes are as far away as possible from each other in the lower-dimensional representation. This was also recognized by `Belhumeur `_, `Hespanha `_ and `Kriegman `_ and so they applied a Discriminant Analysis to face recognition in [BHK97]_. - -Algorithmic Description ------------------------ - -Let :math:`X` be a random vector with samples drawn from :math:`c` classes: - - -.. math:: - :nowrap: - - \begin{align*} - X & = & \{X_1,X_2,\ldots,X_c\} \\ - X_i & = & \{x_1, x_2, \ldots, x_n\} - \end{align*} - - -The scatter matrices :math:`S_{B}` and `S_{W}` are calculated as: - -.. math:: - :nowrap: - - \begin{align*} - S_{B} & = & \sum_{i=1}^{c} N_{i} (\mu_i - \mu)(\mu_i - \mu)^{T} \\ - S_{W} & = & \sum_{i=1}^{c} \sum_{x_{j} \in X_{i}} (x_j - \mu_i)(x_j - \mu_i)^{T} - \end{align*} - -, where :math:`\mu` is the total mean: - -.. math:: - - \mu = \frac{1}{N} \sum_{i=1}^{N} x_i - -And :math:`\mu_i` is the mean of class :math:`i \in \{1,\ldots,c\}`: - -.. math:: - - \mu_i = \frac{1}{|X_i|} \sum_{x_j \in X_i} x_j - -Fisher's classic algorithm now looks for a projection :math:`W`, that maximizes the class separability criterion: - -.. math:: - - W_{opt} = \operatorname{arg\,max}_{W} \frac{|W^T S_B W|}{|W^T S_W W|} - - -Following [BHK97]_, a solution for this optimization problem is given by solving the General Eigenvalue Problem: - -.. math:: - :nowrap: - - \begin{align*} - S_{B} v_{i} & = & \lambda_{i} S_w v_{i} \nonumber \\ - S_{W}^{-1} S_{B} v_{i} & = & \lambda_{i} v_{i} - \end{align*} - -There's one problem left to solve: The rank of :math:`S_{W}` is at most :math:`(N-c)`, with :math:`N` samples and :math:`c` classes. In pattern recognition problems the number of samples :math:`N` is almost always samller than the dimension of the input data (the number of pixels), so the scatter matrix :math:`S_{W}` becomes singular (see [RJ91]_). In [BHK97]_ this was solved by performing a Principal Component Analysis on the data and projecting the samples into the :math:`(N-c)`-dimensional space. A Linear Discriminant Analysis was then performed on the reduced data, because :math:`S_{W}` isn't singular anymore. - -The optimization problem can then be rewritten as: - -.. math:: - :nowrap: - - \begin{align*} - W_{pca} & = & \operatorname{arg\,max}_{W} |W^T S_T W| \\ - W_{fld} & = & \operatorname{arg\,max}_{W} \frac{|W^T W_{pca}^T S_{B} W_{pca} W|}{|W^T W_{pca}^T S_{W} W_{pca} W|} - \end{align*} - -The transformation matrix :math:`W`, that projects a sample into the :math:`(c-1)`-dimensional space is then given by: - -.. math:: - - W = W_{fld}^{T} W_{pca}^{T} - -Fisherfaces in OpenCV ---------------------- - -.. literalinclude:: src/facerec_fisherfaces.cpp - :language: cpp - :linenos: - -The source code for this demo application is also available in the ``src`` folder coming with this documentation: - -* :download:`src/facerec_fisherfaces.cpp ` - - -For this example I am going to use the Yale Facedatabase A, just because the plots are nicer. Each Fisherface has the same length as an original image, thus it can be displayed as an image. The demo shows (or saves) the first, at most 16 Fisherfaces: - -.. image:: img/fisherfaces_opencv.png - :align: center - -The Fisherfaces method learns a class-specific transformation matrix, so the they do not capture illumination as obviously as the Eigenfaces method. The Discriminant Analysis instead finds the facial features to discriminate between the persons. It's important to mention, that the performance of the Fisherfaces heavily depends on the input data as well. Practically said: if you learn the Fisherfaces for well-illuminated pictures only and you try to recognize faces in bad-illuminated scenes, then method is likely to find the wrong components (just because those features may not be predominant on bad illuminated images). This is somewhat logical, since the method had no chance to learn the illumination. - -The Fisherfaces allow a reconstruction of the projected image, just like the Eigenfaces did. But since we only identified the features to distinguish between subjects, you can't expect a nice reconstruction of the original image. For the Fisherfaces method we'll project the sample image onto each of the Fisherfaces instead. So you'll have a nice visualization, which feature each of the Fisherfaces describes: - -.. code-block:: cpp - - // Display or save the image reconstruction at some predefined steps: - for(int num_component = 0; num_component < min(16, W.cols); num_component++) { - // Slice the Fisherface from the model: - Mat ev = W.col(num_component); - Mat projection = subspaceProject(ev, mean, images[0].reshape(1,1)); - Mat reconstruction = subspaceReconstruct(ev, mean, projection); - // Normalize the result: - reconstruction = norm_0_255(reconstruction.reshape(1, images[0].rows)); - // Display or save: - if(argc == 2) { - imshow(format("fisherface_reconstruction_%d", num_component), reconstruction); - } else { - imwrite(format("%s/fisherface_reconstruction_%d.png", output_folder.c_str(), num_component), reconstruction); - } - } - -The differences may be subtle for the human eyes, but you should be able to see some differences: - -.. image:: img/fisherface_reconstruction_opencv.png - :align: center - - -Local Binary Patterns Histograms -================================ - -Eigenfaces and Fisherfaces take a somewhat holistic approach to face recognition. You treat your data as a vector somewhere in a high-dimensional image space. We all know high-dimensionality is bad, so a lower-dimensional subspace is identified, where (probably) useful information is preserved. The Eigenfaces approach maximizes the total scatter, which can lead to problems if the variance is generated by an external source, because components with a maximum variance over all classes aren't necessarily useful for classification (see `http://www.bytefish.de/wiki/pca_lda_with_gnu_octave `_). So to preserve some discriminative information we applied a Linear Discriminant Analysis and optimized as described in the Fisherfaces method. The Fisherfaces method worked great... at least for the constrained scenario we've assumed in our model. - -Now real life isn't perfect. You simply can't guarantee perfect light settings in your images or 10 different images of a person. So what if there's only one image for each person? Our covariance estimates for the subspace *may* be horribly wrong, so will the recognition. Remember the Eigenfaces method had a 96% recognition rate on the AT&T Facedatabase? How many images do we actually need to get such useful estimates? Here are the Rank-1 recognition rates of the Eigenfaces and Fisherfaces method on the AT&T Facedatabase, which is a fairly easy image database: - -.. image:: img/at_database_small_sample_size.png - :scale: 60% - :align: center - -So in order to get good recognition rates you'll need at least 8(+-1) images for each person and the Fisherfaces method doesn't really help here. The above experiment is a 10-fold cross validated result carried out with the facerec framework at: `https://github.com/bytefish/facerec `_. This is not a publication, so I won't back these figures with a deep mathematical analysis. Please have a look into [KM01]_ for a detailed analysis of both methods, when it comes to small training datasets. - -So some research concentrated on extracting local features from images. The idea is to not look at the whole image as a high-dimensional vector, but describe only local features of an object. The features you extract this way will have a low-dimensionality implicitly. A fine idea! But you'll soon observe the image representation we are given doesn't only suffer from illumination variations. Think of things like scale, translation or rotation in images - your local description has to be at least a bit robust against those things. Just like :ocv:class:`SIFT`, the Local Binary Patterns methodology has its roots in 2D texture analysis. The basic idea of Local Binary Patterns is to summarize the local structure in an image by comparing each pixel with its neighborhood. Take a pixel as center and threshold its neighbors against. If the intensity of the center pixel is greater-equal its neighbor, then denote it with 1 and 0 if not. You'll end up with a binary number for each pixel, just like 11001111. So with 8 surrounding pixels you'll end up with 2^8 possible combinations, called *Local Binary Patterns* or sometimes referred to as *LBP codes*. The first LBP operator described in literature actually used a fixed 3 x 3 neighborhood just like this: - -.. image:: img/lbp/lbp.png - :scale: 80% - :align: center - -Algorithmic Description ------------------------ - -A more formal description of the LBP operator can be given as: - -.. math:: - - LBP(x_c, y_c) = \sum_{p=0}^{P-1} 2^p s(i_p - i_c) - -, with :math:`(x_c, y_c)` as central pixel with intensity :math:`i_c`; and :math:`i_n` being the intensity of the the neighbor pixel. :math:`s` is the sign function defined as: - -.. math:: - :nowrap: - - \begin{equation} - s(x) = - \begin{cases} - 1 & \text{if $x \geq 0$}\\ - 0 & \text{else} - \end{cases} - \end{equation} - -This description enables you to capture very fine grained details in images. In fact the authors were able to compete with state of the art results for texture classification. Soon after the operator was published it was noted, that a fixed neighborhood fails to encode details differing in scale. So the operator was extended to use a variable neighborhood in [AHP04]_. The idea is to align an abritrary number of neighbors on a circle with a variable radius, which enables to capture the following neighborhoods: - -.. image:: img/lbp/patterns.png - :scale: 80% - :align: center - -For a given Point :math:`(x_c,y_c)` the position of the neighbor :math:`(x_p,y_p), p \in P` can be calculated by: - -.. math:: - :nowrap: - - \begin{align*} - x_{p} & = & x_c + R \cos({\frac{2\pi p}{P}})\\ - y_{p} & = & y_c - R \sin({\frac{2\pi p}{P}}) - \end{align*} - -Where :math:`R` is the radius of the circle and :math:`P` is the number of sample points. - -The operator is an extension to the original LBP codes, so it's sometimes called *Extended LBP* (also referred to as *Circular LBP*) . If a points coordinate on the circle doesn't correspond to image coordinates, the point get's interpolated. Computer science has a bunch of clever interpolation schemes, the OpenCV implementation does a bilinear interpolation: - -.. math:: - :nowrap: - - \begin{align*} - f(x,y) \approx \begin{bmatrix} - 1-x & x \end{bmatrix} \begin{bmatrix} - f(0,0) & f(0,1) \\ - f(1,0) & f(1,1) \end{bmatrix} \begin{bmatrix} - 1-y \\ - y \end{bmatrix}. - \end{align*} - -By definition the LBP operator is robust against monotonic gray scale transformations. We can easily verify this by looking at the LBP image of an artificially modified image (so you see what an LBP image looks like!): - -.. image:: img/lbp/lbp_yale.jpg - :scale: 60% - :align: center - -So what's left to do is how to incorporate the spatial information in the face recognition model. The representation proposed by Ahonen et. al [AHP04]_ is to divide the LBP image into :math:`m` local regions and extract a histogram from each. The spatially enhanced feature vector is then obtained by concatenating the local histograms (**not merging them**). These histograms are called *Local Binary Patterns Histograms*. - -Local Binary Patterns Histograms in OpenCV ------------------------------------------- - -.. literalinclude:: src/facerec_lbph.cpp - :language: cpp - :linenos: - -The source code for this demo application is also available in the ``src`` folder coming with this documentation: - -* :download:`src/facerec_lbph.cpp ` - -Conclusion -========== - -You've learned how to use the new :ocv:class:`FaceRecognizer` in real applications. After reading the document you also know how the algorithms work, so now it's time for you to experiment with the available algorithms. Use them, improve them and let the OpenCV community participate! - -Credits -======= - -This document wouldn't be possible without the kind permission to use the face images of the *AT&T Database of Faces* and the *Yale Facedatabase A/B*. - -The Database of Faces ---------------------- - -** Important: when using these images, please give credit to "AT&T Laboratories, Cambridge." ** - -The Database of Faces, formerly *The ORL Database of Faces*, contains a set of face images taken between April 1992 and April 1994. The database was used in the context of a face recognition project carried out in collaboration with the Speech, Vision and Robotics Group of the Cambridge University Engineering Department. - -There are ten different images of each of 40 distinct subjects. For some subjects, the images were taken at different times, varying the lighting, facial expressions (open / closed eyes, smiling / not smiling) and facial details (glasses / no glasses). All the images were taken against a dark homogeneous background with the subjects in an upright, frontal position (with tolerance for some side movement). - -The files are in PGM format. The size of each image is 92x112 pixels, with 256 grey levels per pixel. The images are organised in 40 directories (one for each subject), which have names of the form sX, where X indicates the subject number (between 1 and 40). In each of these directories, there are ten different images of that subject, which have names of the form Y.pgm, where Y is the image number for that subject (between 1 and 10). - -A copy of the database can be retrieved from: `http://www.cl.cam.ac.uk/research/dtg/attarchive/pub/data/att_faces.zip `_. - -Yale Facedatabase A -------------------- - -*With the permission of the authors I am allowed to show a small number of images (say subject 1 and all the variations) and all images such as Fisherfaces and Eigenfaces from either Yale Facedatabase A or the Yale Facedatabase B.* - -The Yale Face Database A (size 6.4MB) contains 165 grayscale images in GIF format of 15 individuals. There are 11 images per subject, one per different facial expression or configuration: center-light, w/glasses, happy, left-light, w/no glasses, normal, right-light, sad, sleepy, surprised, and wink. (Source: `http://cvc.yale.edu/projects/yalefaces/yalefaces.html `_) - -Yale Facedatabase B --------------------- - -*With the permission of the authors I am allowed to show a small number of images (say subject 1 and all the variations) and all images such as Fisherfaces and Eigenfaces from either Yale Facedatabase A or the Yale Facedatabase B.* - -The extended Yale Face Database B contains 16128 images of 28 human subjects under 9 poses and 64 illumination conditions. The data format of this database is the same as the Yale Face Database B. Please refer to the homepage of the Yale Face Database B (or one copy of this page) for more detailed information of the data format. - -You are free to use the extended Yale Face Database B for research purposes. All publications which use this database should acknowledge the use of "the Exteded Yale Face Database B" and reference Athinodoros Georghiades, Peter Belhumeur, and David Kriegman's paper, "From Few to Many: Illumination Cone Models for Face Recognition under Variable Lighting and Pose", PAMI, 2001, `[bibtex] `_. - -The extended database as opposed to the original Yale Face Database B with 10 subjects was first reported by Kuang-Chih Lee, Jeffrey Ho, and David Kriegman in "Acquiring Linear Subspaces for Face Recognition under Variable Lighting, PAMI, May, 2005 `[pdf] `_." All test image data used in the experiments are manually aligned, cropped, and then re-sized to 168x192 images. If you publish your experimental results with the cropped images, please reference the PAMI2005 paper as well. (Source: `http://vision.ucsd.edu/~leekc/ExtYaleDatabase/ExtYaleB.html `_) - -Literature -========== - -.. [AHP04] Ahonen, T., Hadid, A., and Pietikainen, M. *Face Recognition with Local Binary Patterns.* Computer Vision - ECCV 2004 (2004), 469–481. - -.. [BHK97] Belhumeur, P. N., Hespanha, J., and Kriegman, D. *Eigenfaces vs. Fisherfaces: Recognition Using Class Specific Linear Projection.* IEEE Transactions on Pattern Analysis and Machine Intelligence 19, 7 (1997), 711–720. - -.. [Bru92] Brunelli, R., Poggio, T. *Face Recognition through Geometrical Features.* European Conference on Computer Vision (ECCV) 1992, S. 792–800. - -.. [Duda01] Duda, Richard O. and Hart, Peter E. and Stork, David G., *Pattern Classification* (2nd Edition) 2001. - -.. [Fisher36] Fisher, R. A. *The use of multiple measurements in taxonomic problems.* Annals Eugen. 7 (1936), 179–188. - -.. [GBK01] Georghiades, A.S. and Belhumeur, P.N. and Kriegman, D.J., *From Few to Many: Illumination Cone Models for Face Recognition under Variable Lighting and Pose* IEEE Transactions on Pattern Analysis and Machine Intelligence 23, 6 (2001), 643-660. - -.. [Kanade73] Kanade, T. *Picture processing system by computer complex and recognition of human faces.* PhD thesis, Kyoto University, November 1973 - -.. [KM01] Martinez, A and Kak, A. *PCA versus LDA* IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 23, No.2, pp. 228-233, 2001. - -.. [Lee05] Lee, K., Ho, J., Kriegman, D. *Acquiring Linear Subspaces for Face Recognition under Variable Lighting.* In: IEEE Transactions on Pattern Analysis and Machine Intelligence (PAMI) 27 (2005), Nr. 5 - -.. [Messer06] Messer, K. et al. *Performance Characterisation of Face Recognition Algorithms and Their Sensitivity to Severe Illumination Changes.* In: In: ICB, 2006, S. 1–11. - -.. [RJ91] S. Raudys and A.K. Jain. *Small sample size effects in statistical pattern recognition: Recommendations for practitioneers.* - IEEE Transactions on Pattern Analysis and Machine Intelligence 13, 3 (1991), 252-264. - -.. [Tan10] Tan, X., and Triggs, B. *Enhanced local texture feature sets for face recognition under difficult lighting conditions.* IEEE Transactions on Image Processing 19 (2010), 1635–650. - -.. [TP91] Turk, M., and Pentland, A. *Eigenfaces for recognition.* Journal of Cognitive Neuroscience 3 (1991), 71–86. - -.. [Tu06] Chiara Turati, Viola Macchi Cassia, F. S., and Leo, I. *Newborns face recognition: Role of inner and outer facial features. Child Development* 77, 2 (2006), 297–311. - -.. [Wiskott97] Wiskott, L., Fellous, J., Krüger, N., Malsburg, C. *Face Recognition By Elastic Bunch Graph Matching.* IEEE Transactions on Pattern Analysis and Machine Intelligence 19 (1997), S. 775–779 - -.. [Zhao03] Zhao, W., Chellappa, R., Phillips, P., and Rosenfeld, A. Face recognition: A literature survey. ACM Computing Surveys (CSUR) 35, 4 (2003), 399–458. - -.. _appendixft: - -Appendix -======== - -Creating the CSV File ---------------------- - -You don't really want to create the CSV file by hand. I have prepared you a little Python script ``create_csv.py`` (you find it at ``/src/create_csv.py`` coming with this tutorial) that automatically creates you a CSV file. If you have your images in hierarchie like this (``/basepath//``): - -.. code-block:: none - - philipp@mango:~/facerec/data/at$ tree - . - |-- s1 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - |-- s2 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - ... - |-- s40 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - - -Then simply call ``create_csv.py`` with the path to the folder, just like this and you could save the output: - -.. code-block:: none - - philipp@mango:~/facerec/data$ python create_csv.py - at/s13/2.pgm;0 - at/s13/7.pgm;0 - at/s13/6.pgm;0 - at/s13/9.pgm;0 - at/s13/5.pgm;0 - at/s13/3.pgm;0 - at/s13/4.pgm;0 - at/s13/10.pgm;0 - at/s13/8.pgm;0 - at/s13/1.pgm;0 - at/s17/2.pgm;1 - at/s17/7.pgm;1 - at/s17/6.pgm;1 - at/s17/9.pgm;1 - at/s17/5.pgm;1 - at/s17/3.pgm;1 - [...] - -Here is the script, if you can't find it: - -.. literalinclude:: ./src/create_csv.py - :language: python - :linenos: - -Aligning Face Images ---------------------- - -An accurate alignment of your image data is especially important in tasks like emotion detection, were you need as much detail as possible. Believe me... You don't want to do this by hand. So I've prepared you a tiny Python script. The code is really easy to use. To scale, rotate and crop the face image you just need to call *CropFace(image, eye_left, eye_right, offset_pct, dest_sz)*, where: - -* *eye_left* is the position of the left eye -* *eye_right* is the position of the right eye -* *offset_pct* is the percent of the image you want to keep next to the eyes (horizontal, vertical direction) -* *dest_sz* is the size of the output image - -If you are using the same *offset_pct* and *dest_sz* for your images, they are all aligned at the eyes. - -.. literalinclude:: ./src/crop_face.py - :language: python - :linenos: - -Imagine we are given `this photo of Arnold Schwarzenegger `_, which is under a Public Domain license. The (x,y)-position of the eyes is approximately *(252,364)* for the left and *(420,366)* for the right eye. Now you only need to define the horizontal offset, vertical offset and the size your scaled, rotated & cropped face should have. - -Here are some examples: - -+---------------------------------+----------------------------------------------------------------------------+ -| Configuration | Cropped, Scaled, Rotated Face | -+=================================+============================================================================+ -| 0.1 (10%), 0.1 (10%), (200,200) | .. image:: ./img/tutorial/gender_classification/arnie_10_10_200_200.jpg | -+---------------------------------+----------------------------------------------------------------------------+ -| 0.2 (20%), 0.2 (20%), (200,200) | .. image:: ./img/tutorial/gender_classification/arnie_20_20_200_200.jpg | -+---------------------------------+----------------------------------------------------------------------------+ -| 0.3 (30%), 0.3 (30%), (200,200) | .. image:: ./img/tutorial/gender_classification/arnie_30_30_200_200.jpg | -+---------------------------------+----------------------------------------------------------------------------+ -| 0.2 (20%), 0.2 (20%), (70,70) | .. image:: ./img/tutorial/gender_classification/arnie_20_20_70_70.jpg | -+---------------------------------+----------------------------------------------------------------------------+ - -CSV for the AT&T Facedatabase ------------------------------- - -.. literalinclude:: etc/at.txt - :language: none - :linenos: diff --git a/modules/contrib/doc/facerec/img/at_database_small_sample_size.png b/modules/contrib/doc/facerec/img/at_database_small_sample_size.png deleted file mode 100644 index 92143c10613267dfafb3cc23a58830d3cdfbaa03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33673 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 diff --git a/modules/contrib/doc/facerec/img/colormaps/colorscale_autumn.jpg b/modules/contrib/doc/facerec/img/colormaps/colorscale_autumn.jpg deleted file mode 100644 index 0c1c8a29b8de2a44d6fe6e646dfd039dd26bcb24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmbVKZ)_7~7{BYacWpN_I$-KPP#J704Ida=)s2i4bjYbSMc26-S;BC`<75epmTqPt zFh$W13*Ze{QyI>BV^Ejb-f+u^B1L4-2<>P`Cs8V!`)k&@&e<62^R}xbh7am;8Y4i6R^!ZuD5L~hWl||2C1oTTe<_8Wq!biM z%2VVDB?|aTO;M(zA9P9Ls6<8(G9^V)@sj_v#J<8*a%>rn5qK6RQQ?FNkGU~5;FQJT z0oX*~5<)5?DS(jz1>z!rPY?iF28f}$0roMeN|wHSjgDMw*hXdTUXpv@$Z7eC4P6(P zZn-(Va&6_Fg9>HF!;d_gnVs|a6Hl(n%hx{j^fLt;pM9=))AO6@S6(eKmcCZTY=6C~ zddC~=&f2{u^FB*medF8j9D4V?!|xwG_95SV{KUzYkJ~=6e=4+}>G<5~61&fT(bN0& zCHLiTu6%p7-|HK=a%=h3n8@XW8Xk-6XIe~%(wh-We$$V&yhB*+5_ z@xmqh;3ZU2+441Hy3Rmt+r2m|_keuKh9jrDE-F^6-7>wja?ed=#>%|A*t56eJO0SGqm1^ud5-qAM@#wgGoe7!~s!kn3)HYV}(ypfT9sylP0}QRNHR|V2O$Ye$ zTDLpXY=d&hR0*^Xff+WATSQM`McV{iuF(eCp;(}2xHm04WN!(q-?{oN015qSEGHWE zfz~Me8D`I2t7sf!%(hM5zK%ODXY|-Xp2-+?$ho?}Z-Z{f%D1~eV}mAjqRoO%tvirb zi1VJPvG8-%cI2)`FIth8G;+5Wbwpzzpj2*Bh0dJrD~Gqng|q_iF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI9*!ngS(g~{BTD3>?tsMG6EDw1it;=4SM_zRQ&3_G@-zX4}n z^)Hm3Cd+J5Y0$|2?|)G|++CVv=Y z->YTn8!u$;UA^d1_T0nPqE?ez)UC&MKUA_1+z9fvlcviaeGLWrb z&UME;n+bH-;>%XLiOTcR-Ita4uPuqn&w5^RuJh}P4W*b1&O{ z`m4PNXt>R}$h?v$Ux?aSFSgvf+R~RfS8ne2X}e^NSNsaMU0(ZiUAxaKyQ$qbcDXw) z`?jvx_ifBSpj&v&x2EczcLSRGSNvrx-^{CaQ_mxqQ~G|z^0oWEjb)pCYv*6{ttC?V zSx4Vgne;y>0|wr;Z?kW0$N`2MT0_k14tOG@pYq-6|em}U5F`{|2?|)wB7ORx*a*5I}`tyf@72a;o7(6 zTT6q5Z@d5nVW#Q1m!L4tdX{Y42MnQDxvAe>i)ZC$z4)?zmp1#(v&IWAgDkB|cU@QP z19aBKmvhB7OgwK43}p3dyL8RB7Vk=T`E}hDm{L-TJzi`%zh}P}C;-pBgaz}wbe-*1 zx@r)$;4nVqZgQ^Q@Aqk7cwMR0o_BfQr|ZtkO69$dzKK;{0E`Y$0M|o8ZPT>pi-D&8 e>;3`?|M_0e5zJHWwR-K&sBw|>%~s0&|4jgO{5tOd diff --git a/modules/contrib/doc/facerec/img/colormaps/colorscale_cool.jpg b/modules/contrib/doc/facerec/img/colormaps/colorscale_cool.jpg deleted file mode 100644 index 4253efb99d463ed63e4d70c09ddd09522315d9d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1325 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 Mt}!SmyB+QL3w;MAcmMzZ diff --git a/modules/contrib/doc/facerec/img/colormaps/colorscale_jet.jpg b/modules/contrib/doc/facerec/img/colormaps/colorscale_jet.jpg deleted file mode 100644 index ea273a570528421024a2fc720876e2a50892adfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1579 zcmbV~ZBP?e6oz;62?2`{qE@Ypf>?+hihv*k?kE*BRT+&C0ZB%oB7~2kfCxiUrD%mw z{Aem*O+*c-F>X;2Welk(ppJ?OhCmq9fJBm@O(b9p3F&SW>yQ4hJv;Z@v$N;yecySm zz1#jAm`aOU9R+|O0D#B?*n5FU00W|dW(*oQESm8+92Q5w69|q)bao;Torwg3lZ%rx z2@Rxjbs@Q;FX&I+k7DpxES^Lp5FIW5DcS!7$WFjq5Ws@-0Sp<$l0o|&z!TAlcgRD; zz7G(C#o-A=M1~8}&@dH|kHsRQ@rYuiyBPTn;K=xC^8%I=+}Cd*&d>2!yyr-blh=y+ zTa*nlgLmN89ebTg(`U^5a@GQ$g=vAv}^o_A`j7{+g$tgc< zOWmH9zB4y3e^v9r@9Y?bs> zD0`Tnlz9klkudbk=D7qwrg7VbfD{`x^ zN)qTeC{?{qp>-T%6@}_J3k6w^9u*)j=UYzPQC=38 z`?aHKfyIX5gqMn)7f9aqJ{@%!lvnZYFi4;!H;f#t9Bg;4utl>~6pf*Y1rvo;+&k#p(_%HW|;jxP51`XeD z=o!rF3~;PPDKy7iu;Ghtv^_Apj^`JqmO>>4m}Y=iS{T)4 zx)~ywV3LU?mYJrGd2Xf3tyCF@_ikIx6KmqKKK}8K zNJk)2KD@?p%wT*w-55TepPwJm%&Sj*TuhxiiJ1%K?2|{V^LXkb;bp|fMIedsMlkc0 zmxW#$asW>5)hAAmXl|&OEUe%xm(udxRu zDZ8a*cA&xt2Ra~YKb_E3g+z{B++V;)?vHpB4l**LEXa))iHg|>Z&@?XQoHstlzumC z&JvVbm4c(abRtg2;XTkvbCpA(-^esZf7Q~HiRUeh08uWKpdHPs({64PKen-Te#D diff --git a/modules/contrib/doc/facerec/img/colormaps/colorscale_mkpj1.jpg b/modules/contrib/doc/facerec/img/colormaps/colorscale_mkpj1.jpg deleted file mode 100644 index d7e936397f1f5a4b96e4a4783bcbc02ca7a12fb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1569 zcmbV~e^ioJ7{_0Ji)Khxu2pi<%58M!DN9RBj=5~H(o-#&Oy$%{My^d$!Zh&oL!o(A zYt5Q#>Z~y`2b@x}KxGBhma_!bF7Fed( zkN>{^ArwYW+mHsKP!NOy59EIUr9x;F63C230*gUr92Seg;&FIf>o^Y8daUu575 zjW8e}zEEf$7#K1Zw_quLM#^Tw_QLR}We0<1u07Fk@ftBYZp+xL9eeKu&tAA3UgSWm z1)TjmV~75ivzNwR`7%P&Fem^ILxyOOmo1dQ%uw2zdTib`y@G0!n`e*hyOKfTvcx>W{Hact{BF^v{>i*TRg#=kj^ouuj;QGmy=%O) z%q3+PK>7fZ9#FZgiKeT%4vUXkIX1D)50$EFLu|2n_3EyD>?c=SZ+>cYQs{ccv#iVQ z1bvINjA6;%)Z^)xZ{=k9p-_&o_@_=9EKN$U_D*O`8K#xI1_?*U&!-!{_hjyoq`0Ki z+{44HJKjyrv|`v?Su5G>lv2|bXE;54D!p4;o?IBO4=B|Vy1sQvXw8rB7IQxIX`Cy( z<63n%jSI49A_44S5G`-JOm3l#A}*+lvga<&()o_Z^v{bGDHDKsGQUq|*XGO}&5jXu zj54gNa;?4$AjgPQhEPl77cSY5HfOZbK}z!&tozxiu8s9O3j|S9((G6ft!g;OfMkVO zNEQ#nItP)@>@28T@H`P-oqDgMQl$>_L-WCgbug86c2_N_=aN8pJ?tgUWs&t2oMG1J zjq=`OTfNcGOA0AOV+qeD<>dk%*|9>wh=B_awkd}4%HqbK4mO(HMdv+W%UtD@MZAJ6 z;MH(x)Gkl$pin8-tJI(uJO(0cYjVo$8ufmGV$#M@(U#mvU~^&nL)o~-#2C(|2-SyF zcMeW=Iq(aO*@#Lk$EWV@Q){d$~krV%-M7K1sB8@C6_K=xn5FQR$g)Aro38p_g>BY zUmrYF*EcjaHMg|3X*yqbb-(H9)xI?h4jE0uW{cJ4;Bs(I=pVTVFc;F10nWjNKyu)N zBA_vImtd!osko?}?(>%J$4^^z;=JsRlb7#C{q*RhXU;R``)L*!9BAWY{|@ZH|04SX z>`$&X;EF=P;h_kC1V+SqQp8xkBK!8Jm(AHwi!x=u^=TP#QtoOas>pIhA*I%mFu2HjY<6~?h4(tEL^7(` zWaDh8F7|^!m5*S()(g}X`!AS=wPTkw zi5cGM(s%_fvHDWmaADo<5g)7l3(Hyi@lbvK3$|Lw8M~6}VZ7K5fh*D{GIkAV_3eG$ z!4NRe!h3>@S2sbRv#9WCrj|KvS)j-@hM7X5Jg(F+I7~Nn$s${`EF}4b%ILepCKAWA z8?SzKOQMbB@O>KdcxN_y+m-6#vPGs!eup-Kahf|^{9Hs%YoA?SX`ZEJ2|5Sl5IDxg z{&nJ?3Nv^O46=_AGk?M9hz)d^g?K?gW(B-Tm5m1Ti2H3J#_14<{W+)s0v^jHmvy%Y zy-JEvI!Q2Tuk;{yv0CAyVyoCk-$1~fBpPaOeZEBz(j-^-^dIi_o5*n=)<1c0-Vy;cA^<y+CO$U*PPiv8y2<|rwmjD=2w)yY#cgM&?OU=5d6D015dS0J}J~X`7;A@^O)CAv9ikA(HhObzx4XuPgI9nL4Jer#IgXQZZ6QMCG zAaE~|p6jNTFWkltocU1Ro0@Z$(^T3oCyHa4CTaBXo|~DyvF#=j>UO`6u`jA3FbyXU*v{$qS69IgckF_Ir*YEXM*Am{&XA5Sr6&n$ F{T;Jd&d2}& diff --git a/modules/contrib/doc/facerec/img/colormaps/colorscale_ocean.jpg b/modules/contrib/doc/facerec/img/colormaps/colorscale_ocean.jpg deleted file mode 100644 index 11d771f71d269bd399032ce6a01a2d2d234d23dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1430 zcmex=iF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI9iYRn{1cCr zTJf51|M_(tQ1)MK_I$AL3zK{IpI@70=Pr8%!rTQ>Qx8_N0IVkcogElYOz@>%EQj_pp8S zLbcQ4cUj-(D~VqL)Ej>osMSjUN_geN^$*w2KQceP@kRMQkbSYw+pX4L2xotIZuJ+@ zdlkj2{<1<%{>OfK{lg&jd!kaMf3$#6v7D!BlZyWy&DU3IGdsVx+E(?it!0xq`OY&a zq*N8iI{L=8ihrrc{F0FD3$;KEi}p41qypn`(Y(3#Qc1NJ{r%?mf;D*OfB(-Qb^CI4 znCkxff3ov^-^N|B6RG^Mz5y7HS1)AlT@4K2aK~leR@p^^!}jXlW#9fY*llfI_HFH3 zP&_R7DU%)y31LXk1EUZgJ(-K26oTUs7*h~6&%c0T3KBibYUWw51lqCx{MwRR;=c}l z{kQeZOJtt$5C7>a{{-*)aQ(yeN^qzg{E_`5d(VgGp})937OL+BhTJ{bSNo%Y0e!V@ z>%kx8tNsFI--rIXe*TgF<^wr>-w*EwiPAKvT!0u2BCrPiF;N$`UAd82aiwDF383NJD#LCRf%Eivc4pu@E@&5pWAP0jSBLg#|5(ASU zBeNjm|04|YKzFi&odL?6mQqXwbzED#l4gO`Kd};u4Zls%q*Qnp!5NX66=_R?aT2 zZtfnQUcn)uVc`*xQOPN(Y3Ui6S;Zx#W#tu>Rn0A}ZS5VMU6UqHnL2IyjG40*Enc#8 z+42=DS8dw7W$U)>J9h3mboj{8W5-XNJay^vm8;jT-?(|};iJb-o<4j2;^nK4pFV&2 z`tAFVpT9u<0{IgLu=-07=r1Nv9I%7@#mH0+#LR*$tcr$gLXLs#iG{*SMvWXIP7@by zJjkhR9P~jnspuk?n2O0m)sG;rfqh1t$C}9U8QfzCf8Ao>VP*tI9_ri<3Ku7&&LU+njK zv&HXzV9X}Fw$5vrw(gg9#i}p(b=`EyS9!0OCG(nJ$9%H&V)tHJdoh-6?&S~b>b-t1 z+Qn(cA5O)=&1axqZ|H7-MU;I z7G$0ICO>no|D|2B*4r=bd~3Y&SGe=?vR~n*&ODC$mwlBFj^0&&SF{z*IvVhCbzWXX ziG0*;pb>}UvLn9z3fns0|JbIS>RRon^UEJccs!c-=JJ-``+MWJzWfo&?Z5lS)!%XR zTgwvrJjEBh()wdtFSU?8F#O@`AJ_LfFPzhTZ7=(!^-*8{um)~@VK=qv`uYdjw-%&) z*E@Xq!|DqqqHc2YTjQD+tdHw^;$8eB8Bg$s+9}^ZP{Z+lkNw5EsW&s`?pw6uKL3~a zrDaj-`772%$~(KfHkr5hWvt%h3$@v^E>-m}E!pMo_;p>S+*0PHm-f9_*X;N5N4PyK z9@ac5zij^HKf{i#yAy#Lxcz^3M{kp5zqYA*?v=B<`5&%bYrYj6K$&}2YszlTz%WjN zMZ=SsPp+Ej*tcz4^Piz@V-A$Db4lga?WS+4YqOIsFHMHV!n29bu9&WY2708K?Y^mN z(=UHqqf+Q!mU*l8{;~D9zWmW@U4HjZ*5CF1hjtqrSLwb`Dq1JEzc-+H#p(}V|771= zc;TGu>$v8Z;cKh@F|D}uMc!*~_Vo{m4tIuXis}-TD6} E04&UFH2?qr diff --git a/modules/contrib/doc/facerec/img/colormaps/colorscale_rainbow.jpg b/modules/contrib/doc/facerec/img/colormaps/colorscale_rainbow.jpg deleted file mode 100644 index 9565527aecdc16f4e7fe559c2168a5b0fb6edf9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1524 zcmbV}e^AqP7{|ZccR%LbECw}n$D)RV(H)P&!8ih*Kv-TxTN?t=mPjDj z*xT6Jp$0q$dpig8fHqmVip9e)-i}BhE|>hL&H58WvVpc>AQ-a^!jdpB31htrQNWz| zP$E0{ozj3aJKb=iG}UuxsA zx30zYpkijbZ+u#gt)1Jt^&8whU-f$Jb#FiaHv-<=^H#{d(6IO3-+$oHM^Vw#!$)Yx zj-NAettIZ+!y%;7cPEP{B_AUf^W;puU1r6U90~7hZ{Ggx9S@j zWp`Tdw%u#*`1zNf`wx1Rs=j{p(D2BUKSrO9jZf%i=k$j81*6G~>OytCuz%D=0=lp$ z10t#mgFOWnOv2%}?jkq`M-t;w$=i0Hv2oeUFRg2__3%A7;~Jl)uyfn)H{_{9r7bJ_ zcfxZ1m$Fr1f9X;~4loA5gGmqqnaH7ILB)MZ&29~rbyv*PxH3I$X-~TW8JPUFS~VuD z5qDdmyvEIBDO*jMQMDa2i!LW{!&^g^+$a5zAu;mYkrcL5(8Q0Rom4s2?AEvwv{S`^ zcE;YLeN`|DMeX^^|_nm(5Hc=@XSa;1#^(@m+prB!#w)9UOEqGFxbjG%)>r!_jJG_%dBXmLo4mT{y+j|hzQ zQ=548j~gs0%^B{4oDqZEFyEgYV#+S$DcUt$%~@Ta zTJP~&U{tSMI?D5&7^LaDT-hnLS)u}2z4CTrpx+|JV|vz6F?xB2Ha2ls{H0#gxQY%E+X%H{Ge3IyipCJR0psc&Ta$cPK;ndNk zOKO>8fRwA;QH_Sj{2upqCpXuK?te-RuAG-#YGWg;j*NUXb_K+cm1~TEf(f4Lyp|mC zcYan#@F@F`Wlg6{$jevDrkso{KKSW$Fp%TvXr$USn)qND9!haU4=AFJu_+ZzXl};l zYUrO7Dp(g39H&~g%qJ9}qFf%Ohu_{eMbFDuH(1Eh40kW4@j9>b*_`iyFt4zi%c@my ziYn4*KEVcYedt6`vF`BPTxVCcGFdbc(Q}POcj}Rhuex$hiB4c*IA_~_mnZG5Ij>w) zF>2Y&C;oDSK>$FBo`Wg^iMZMYF#^bb49J$eAj@#E+!JeJv`2jkcq7#DP5w(JvgzS& zE5y$Uyx&HT(V&284FC`|+N=^7YihWx#fz;Gb+bX*R|d8u56caJ@z~%2z<5F8tD}aQ zsb<%qsy-9t*71$yozJ2a^5PaIMK?Q0)1H3mV1?ezge|?GYO_5jg^AMY8ebtZ5HAyf v@EQP>PPn9Qv;;`g-BXyRChDR2rgKR`5JN$qG_PEn%M@2lWv$U6*8V>MZbHuy diff --git a/modules/contrib/doc/facerec/img/colormaps/colorscale_spring.jpg b/modules/contrib/doc/facerec/img/colormaps/colorscale_spring.jpg deleted file mode 100644 index ada03a160deff66b1f19022dad4e429580a94a6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1254 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%0AVjeO~XM+A(Wp{VCmhjm4={AF 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 Eg3+MjkpKVy diff --git a/modules/contrib/doc/facerec/img/eigenfaces_opencv.png b/modules/contrib/doc/facerec/img/eigenfaces_opencv.png deleted file mode 100644 index a1ff4dcede8db5e1f5277cb595b3370baa9bfd34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110206 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%0A5;8z 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 diff --git a/modules/contrib/doc/facerec/img/lbp/lbp_yale.jpg b/modules/contrib/doc/facerec/img/lbp/lbp_yale.jpg deleted file mode 100644 index b4129216f86d39dfe6b8a332e1d4a5037c0d4faf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85132 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%0D22}Bw%2lSJTOCF!vWE3*MFK2xa$YUT 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 diff --git a/modules/contrib/doc/facerec/img/lbp/patterns.png b/modules/contrib/doc/facerec/img/lbp/patterns.png deleted file mode 100644 index 0142bb15a99bfc74bfbb4e0c8db74dd5af55d2f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18178 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 LBdux;yNLe-@gd9S diff --git a/modules/contrib/doc/facerec/img/tutorial/facerec_video/facerec_video.png b/modules/contrib/doc/facerec/img/tutorial/facerec_video/facerec_video.png deleted file mode 100644 index 6481882117a711810cc43eb8e2eb1f1339461dca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296717 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%0DTHn2V(^#oCjLJ}3hj{Qd|NU^W zT+Ut&9gjm(>1)&srph5@rJBmAzh3dhb~kdQ&`EqWYi)sD83T{6+aB5qL8&t`ZCe68 zSQB&AtlKh62#M!2a+5hqFaxz=emhY~Iw%`uto*gTl@2=1mL#I}>bM+Nr0jjzP=YKe zuuz0r(^z7l!q1v!`4pQXlR8GPVt~>xQw9W8K{K9){Cy3zW0J2{OlpV*>{3NosVc_k zyUA+uAO`>#rlyebv2dZP0CM~(YiKjriohq&=0&QWVj>4AHG?i2ucZy8u|X>YGa48e z$XPI&4Zwu2-hYM1=SMjICy?DhdBF897zZEDCsaNi{Jm<-{JbrI~j0RnPzmQLb+)YrgU~UanJM|u#uhCZ zZY4LdwJNE_Cut)Meyfg7*-b|kFdD`NIRSw*9IfefNZBtGaL&Vy29~e!?&i1n{(HjX z<0I}T2QdbML-u2{!w@Fh&qo-!#yE~RO}8+{fMDT{9%>ZZ?H1mh@#A0qjNKo88>Wq| z!08FX0yYfMBTlCi486;(O|7!nYu`I&hGB*^1`HFDQG{S(!DWoe(RB=hA;v%qLkz1P zRvDu(M)4R0uwJntg&~0qLjctrvYI7kZ~J&(h?(N`4fmbz_JfkVQvv+y`B=^1&ilzZ z*aF3S-_U^P;|V|g`M=^n{h$8_zIwZZdWRch!-V(#fQ>44hJn)&o;VMXYV4fUK$Zua z|4q6*MODFGF47%I5=1MuW&X5{_qp#{r{VaAv}BNL8TNQ%4*sgyEsNh@e0|BUFC{2J z8x!+!%Hi1E^Y1$n!MBWTuD5(Fj5u?2s==8-REybId_E0abG)3N%hW-#EpZ_MptF>* zue8rB6%n>I6Xbx8K7U&aYWS%CK2J+F+&{ z{9vhLKQ!A;g~F{G_UeYwh)rxSO9RBT7h_PZsjH&v@;E{KJG1FRyx7L;*vz%N=$I)pEnsVeHbtZAkJg3>5fhl)*dPfPZOL2gd9kN@i{@@gfRIDhsnc1@x#v_@c#XKynTNK zV+u!aQ>S9I!xPID zUT?GJXPtz|kO?)mKWUigytWB;Q+7O?P7dd1F!bsNVlk`Nj>}H&+_%?CTdiG?+M$*t zrcZ#-+D+5a=>JyH#4d>Nft++8*$>cUMkO$K$lAeL0$^xa^HTo}W}B~{<_vDh$q3<_ zBuv+_E2^Z z39lhd*PkbkVHhxp;&eP=Gg|!i-Fy7@`|t6a@4kbvAz#*uKoR`oQk#>AAfAGNpE?V# zGUEjA z!i!8`#~>k9XuI9QdykVm!=FzuWH70~MV8g4PL`fQP&ji&;KD7`3kG87q+lVK>5Th_ zTl~&>@Hk+%vzVgsG7mvh==I!a(TW>{??8>@q@u9y$1Ldt5c804_`0X~HD-XdfJ%-! zOY%@^4ZoMn=lc#(%A}rYExz#Wd_Kc_kL`8~V+=li{23oV{*2q(TR7)nQU@lkADKZ* z45ad^UC*!awp5HYe~VmupLbD(+9kHAbRD*My$WM0-DBgL=L9Mdf$^)F^s@w(1whz? zaM5c zhb0`}*lch;ptTXu)loj7#T=6qa#W*cMzQ8KjLpa}w#wT3*yRZBb~uE!JATCsj2dHL zZ5xFoV!B0xYT0C(dWiQ`1dz}?oFMS<;^AD13Ue^V;B-3Su;1h3hoA6pe~0t=3{t@R zQZ+uweN@4x#SeD(etnDZSJ9?nk@3`)~x^(ych zK&%oVCPlZ!*WKA?DBAPI*#@*PkW9x|m0#1u6mstqmh7NR)mp31al3xCMTpKYK6ATa zErG(8QN(Oox-LlaN0OCiNER6uo<#z+T0c$aC1su_pTitT(7Q>bv&GriIp82#-1w8< zA9YM+Ucd4*w`p42u%XGP1en2Mr&~Z2r?bO!IAWrZkIUlYbhFD@@!p3God|Fg+GZ!V za6aH)BEr+dJ!srwd;JDq@c@`1wkioA3)NGz5%+*1uX&8h(y4Vp2t0%4LYBBNifn@K zq8JJ9#1M)RYfO3lepv&^IRdUBK7KJEJcc2$!GK7y-|zAB&p+e-{w@sRr0L`MTvKeC z7KxK|8c1!P8+87f^N%n4B=*0*25l0DQdD}s&|bUF%T5^CMy{~B;kig1n_dRO@fr26 zKF75y#f<5s6{i1{1*8#fBJEhY3~mL5M?+}j;T>87gfp*+O2t}vN5PAuM^~npo z24+gYc{n1i=#(^2)Y(u_Of({GpUspUg!vR`1Gti=M_2CamBsfZv*5L<^(Da9gT&>c zmlmZpdEF%GfMB^tL-%nx3NxRdoDdc}8`8^r+N@_LZ8walpQ4z^Br&8s z>rM92?0sZAV3_PN6a=ycJ8VFr*l!Lv48af2t3u@*$ORr_!+(NkxVKayBQJ_Ge2mWv z=ltM3?w+5qz5N6oHn_RDfwcp?diY5&n0|VI8h^U5Uzj+h$@4WJdL}OU7=vRciaAWP zbD3Tb|8}vI?wCQFJ#xeS|LZV><2d4cKI8fM8IO;T_{aa}AMo>sA0g`T?&d8HkGByZ z`Di-ro99#&i`uwf^KF$KY}U)mb~W|)H&!$xUCTK6fKtO4veuFST~j=M_FK_|b7nNN zRn4o;XEG3d<+*>s2icY#ooB7h`h*l?Q{OUjA`9%-(jv*rx+xkiYilx4Ftdd-5Czo@ zQE84C+736&02MdDfcrKL^|w{{eRY7ILSeXH%v&Iqj=QhGvz`jH&YaScku)z>@?|Pp zn)8(z!aNnO)zn{=;L-t+>;uQ#Fuk+PYCXTi`LELdfqCsGK+BY6xW1+V^5y4aYZWD% zwLUIJn`o0-V7(TKD!`g5zgD>^6(F4#HDYR!Mg`<^%aNKEW$i~d3?r8mSa z*A8$=SAbWouc}~BW1Ha#p0%*30KBU6z+8@5MYGX5O;vPOWs{Q_^TgnkRl4m!B}40+ zmu*bQ#5Pw`?yUw3_~s&mkT6m0xIUTaik7yqchPO zzxUCXXg;5@g7Do-TmJVP$*X1mFZ=fAfxwy|n+F|emmPjtdpsjlsGndi_A=VM{@2;l z+1U%%mg%BOBe!J3lK*hF0x?a=Tk6}YThw)5(_?fp|%5v7GoOr3!WaH=?yUshh| zOr}(GVg%Y`le7?a+2?skfKd5(r9~`dGNQdfc@}g{4G`2Cz*ROXl&S5$m0-&BBXnkX zEB%67;k>Yjr{k1{ZM5AKnh(Uh#$tEH(gIVJv4k8Zw{S%&^o^W?}2Wu_-bdD+qh4(I+MH5)UM;oVgQ!AdufXHIE z+u(QKev9wF{R(fk1JoTb`6Dbs%UNV<1n91671tK1DSoc^$=CcGB>?V<7Oet=rPbRN zP+B?|i;Jk*+@flSO_sYCvuVJEN#nL<{bem<#qtnH&-k?!pw5A-c0j92DhT&aHOP~E z>;eVdFs#W_#vX*jCYR)CC7L(W(Im zLQPD*DxYi2=LXx%0Cqjs`FFftn`A35QhoM^;(P0odLpGGE2(tO_eii(;6%O zZ@xJpWlxum>7r(kxq!oTLg&4H0##J6X*6uLwkl~`vd#x}l$fkkL>16fz-r96WNI`< zS(B!-xud3H;8KR?zZ-nMsAZ@+HN{di#zixBvHKQQ|DGWxWb5@DvU3A0`6?#pW#MiU2d7oU;Y37z| zZR}Y~g;*OVkgBZh8oW~FN>ejA%t@mdU%RyJ!NTmK)l@|dA?dO{Hbs<4jtG<7;%-{g zpv(q__cNRiLUHFDo}QlY@bG|#hX-6;U4e-(j$@e&K9p8po|>itWXEv>Yc0P1<}Lo_ zci-XrZ@2*d;<(zki3wTyk-w|^dhVc7aX-)ycraRvlaE?kmNJ1KeF;?q zADyBii4>EGdCu_xw}#$ zSa-HKGlhsCFnu2GoBCa5(yAq5iMUe$5(GrjRvYr6*R+WlST21 zY%X|QFq7>}yi0sCr_9GYbQ^~@6_(-{r|GBwSfc#>B3RW_%@&G!qb+wu9+Ri)Jf&$c zwx(+dw%WaoqZMsL()MX%Thsr2=f@04YCw-Vhex zFf=YNDJ7#l_@Gsq6JrdfX~OY%#C{5PGUK2a#}T9sVjLVEuz$M6@#!Pve8g_25P8Dk z1bFq>pC$l=lX(+$js)i%PU$h>01({tjCWV>;8ieeModZ=uik`+F#yI65DnsfrwZ>C zUaA2a35>fD21%KwHu1i5Nkb^}jzWE2vt1OX__er>cv|dmq$&6UT6|n6Pw`nl$Cmr1 zNm9}nr6`?!mQ<8Gf#4D_%31E6y-E{R8C%QUz*k_pp0i}71!~&dX9=jQh6E3Faaz{c z=6Ua>Bw1r9z5=X8Qh~}iIQ)Bz6jYz5-D|0Yk8yya;mJJ>ALHvy{;Zq$dc*7TQkb*) zxirZK4o^@~kRL#5;B*HO1G0k6m4zSg@wh)h^ax_W_#-S4EM14es7>%oV6`AI@Y4u} zfXyasre}jIJ7Q3e)1%_)!wK)V2D_WE?jP+Q#uzwvf{0)oO^{k>n7mc>VF2DvP!p!C z#R$CdfHAP@K`bCn47H2X#R@VCrU6Wv-${|0&;k5f4#n`0s?8~!aAU)B$*yCPViJ;! zuadA8rdzVfeCQ;^{nu>p@%9e?Dl>&ilX9y}Lcz+cP~QvAZQwB&+fx0&w3Sa3BCgL}nIQ>OD)HI;A4( zBP#*{xSN@q*%02;81mkWu%CxxQL@1&~ma#=7Z z_4!l@fAY#RH;3%&ITqkb?Yt-k+qERC9#UzB{-wB`%LX<)!~-Nm$LELFG9<6uy$L!)p@kjUh_mC;no;DFBV|)^|U@s*K2+PYXj9r ztJ{QEn4W708eP}lH6Cl!<}UY11hqDCO9!%m`&Y}U^{%Ei>iqUUok6B@Lt(Ayv0gXg zPBsP!T&u|hEfAQ-0DA)+>aYK|L|=svFilfIK4Xj+r!&Usk|Yf(km-!^d@jh~>6i?7 z&trPMQ*a1Di>O~H8OBCQ6T!;K0Nlp=ad>#Zn|E)q+aKU}J3Kr*V7J@h6w~ywhV=ue zo;0p0+G1S+eZ}?D_r0$lf%yN`pRMQf-aOqkw6bO>B*@BPi;|QxYlf*L?r6yZuBo(n znz;0>G)HCiRP6k`3~A3LpETKy;T*xa5#B2vhBt6-0O1TKz?lY;;NW-wP*3O!I0}@L zHkOGHjgl4-gb-2_bv)v6=i$8vJ58YnoX#H43{piDO*A#qdq`$uoPMMOBAP8L!30hh}K86nCD*_pIaj{Lp{x zGeoykbNw_lH&0!k5Y*c%eeLxT4l6?~D|@QYYEX$%yzl-i?mCCOtDV5LHrVwYrRW-? zSV;PK^z9IXWdxOiK}sg57!69z)SKhj*!e9WQI%#`K)Q#IRU6=Jfj~)XlhY5r^b2)u zLh#z3(V^0Oq0r%i7Ljs&rS($kXyf7PDapDZeC^`tYN7nK)L5ZHdaa{^4oP+a<%jpaL`O7DqPA8n7KBf+Jyx_~1FSuML zjN^zfrA917Kqf*?br++Xr@ZkyUnU}%8Sb#d@OVgmkDlT8J17&TafE+(FeHGXLXemW z;55vFlzFTNiI09Z`AiLO1~%w8{58{)0q8KmbB7|Udvky!e1^fzjqDxzM0=r z5TZj|>+e@1fb;99;>A{wy)0wM`#6*9dRJ;1sWN3>41uN5NU048C8olnyBy%%0Z@=LROrT%7w!)U{+en-nlWL$&Ub=2-ek(FG`*aG;lyH8l5xGsH;TIHy{pV?-)D6B=v`S+b+bsfbV@Nq?vqVLeti&!{yBo_@^bs?> zSX@Nwn?DgD`1WJz7AG$#oc0`wPH%LSH#&@Lt3q1`9Tv7EP2TGbgm8xLmq_8)7PS3N z*b4f2^XD|zr3)i}%?+iQ{#w{4(bZvtE$fkQK?xTD@koZU=kpn&7d$E8n(20@q%B@uxL%~5ZZ3qotWvhlFlX82*iZokJsjNNXB!>~(hI3`*mRA^u> zFhqbD5`CQiP0FSwRm{~Z6oifD=WDL9-Y5+Fp%4CD4zg7pDdx=B-i|95TcY=^pB^Dv zN9b$6Sl>jrsi3-V^WntKwT)s%+%?-og|u}@Hq%D4?@BiM&%Tms!x(M?DdX|rupbT> zc)-8|0{e7k2&Kq4SkAE|8k=-Nq?EXj2I-PU&bcK2xLhuHdV0dUw-4Ao?4TOJP&m(E zQg}yDW>5%l#2}7H-r31fBFB*y+IPj9b?xINqm`vQ33E&~S6Q=2AndG4blv{LFWx({ z4z1opvhMiPr%(9!@gt^b!hXMpTt#arzS-U;GD*!k5=M_ZqT0=JvPD}eWWvFGYM~YokZA34b8gIWpLmNP-P|ul>)pp2t z1uyN84s-G+P}^~5e;jQO?&Te7jfG2iy!260v|0#Kch1+t7m53yb$&Jr*W5TM>oSW# z^UtyA;yi7;$VQ&6FSJ1xGNP%CT}@9p7MCz;&9)2hl0Q4!AL=&R_mZM(rX>482EE#$ zelt4wO2}jHuT?YXHMQ{jQN~y|PB$$KEqn@dW_HBC;?Lo5SeQLuE*Jdz>#z9r*Iyy= zg45{)CgA(;zsJLlF-;TVdBjCWK%^XAB3h=2MF|oGa7pJUVi9*LhWsR>;N8Oke!s)_ z`$zovhad1}f56^(Jh%ZnFwPN%4EAsNHRs}CM&1Z>!Toy?M|UH$)ImT!^1O-|Qa^6~ zst94<2xKI;c?Q0gdhXskp7#zi&E)KIpjA$7{{Pq^C*Jns*d_?&%y@Jiv9`@=$kcP3 zhe{MVyF3-WyWJl9y=BS=3k9&v-Z2&1ne;jnWh@~=K!`L!nGsBz^duALGvnbfz&VHg zL;9VW)7i#6`y?jgeGlerBg3{Y&{Z1vp10CKX1_vk(yQk)2OdNW$r|sXW$j!lUibiI zL~|TR9FIr*`OkmG-~ax1#LJ~v&BPd?lssOut=J;6j%eAC>-G!k6FU}mf&T)^c&(A2 z&*7d~=&o-bmhFN#bnE%Lmom;X3Pg=jyv~_>?OvgEV%BnYV4E_Y6WV&6c2^KubeKWK z1oN2U?jlmKLTP9#QmLi{wQ~Dkh%v43lNi5vu0A#$>dRLZp&8=H>&_hGAZpez=p zP6NPALV)U8LI_nFkBm^Zbaj(0TuCKj?|)iuaNCW14SG~lbL;W`c4?*`&*Imfxuu)TWqTZ1BxGtq($1ef@0;`kL|aJ=Z-WMfHaM{QQjFFo0;l z&ZQ!3iVg@7o(CLu4|p1nAaZGJuwlpj`$)ectxc0gD`tANIGQj*o1K&jfNdFRq@ScLU z9niXOEtN*1KhT@?Um@;5)$k}(VnGTUgt1KF+ks|g^{B|w5eeA4A*AJrHm&gUbZo;xLiA_WcSQ$=TN`W8(gTd@ZGA< zc2;ut9#Y#M9goM-RHmeo!G=K7z*-2Qy#6(<^!&biOuFY>J3E-)E!ytJKCt=srO;~; zPRHxDJ>QcL*lkwfFdF z8V)IFZZOeo9+C)cLDBgX&IMtn@}eOC(p0*+kVHqpP90&vU13#6f7LfMmvMu(AvO8y zTouVwe}0L$sq89xL*%?6?pj_5cdUdyF%|e7&eOv)r~IobYW=cNK(Ri*AMxn&N<&lTX_)V87qv-NPSn zxm=)e#M9{spFTZd97jCt(&xo-DjR#k7m{5GNrZ+AKm(it12YD8WvcBk?C{;2w>a$6 z6z-32-r?WB{{iP;K0s*1P6?Ou1>#YtVG)^aW^|ckke{23#1j!>_|}^iR;eKEvrV_R zWVF^ZwgXc6rp$VyDGMg{b;w3o8C$cdc48^p#kNFwR&D$1|Xq}Pi z2OT7Z^clc0*kr63saKMwmm-37W1y-CA>i}p&v^g-J;rgwpnl%&e3|GpaxLUk`=y`XT_@e7jCJ3> zK8?i>G(VrI+-ecZ9Hkp$$8h%hRaKzR4A=JXofo9(t{h@c%m6XSk{P5J^Gbu_!(4{wLIA?gSa9TQ?NX}Z(1L$pJ0zuV#Q;Q?L7`{=4t+!yo>D zUq5_;2Vrmn#(16+N4mG=M$8?8La%ZkiL{}kme*QdX_36HW_4@*t$Dw#9dvZ(P>xnY z`PDUO1+`{^So`}Kn`WpOi05I!=+M86oSB^V*R|)p+ShIUP#qO!xuC>Ah$Dub!vpVe zxtu^OaAXMCsM)7Gv0AwyCvBb=W=_#->OqpG^N+_P_WM1)KYS03oP0!;LCPteN2hX5 zv2uAMIFO{GkYPE@8-9Ija-FqQs`mYyY(!M)JHK*>uHLhAQ5a*y^Yb%4e*B0}pFZL7 z@e$Mcj1U68e@xTYGI4qzrW>dm-}RhbZEpTWf7Y{%>%Bw4DpldC)%h%|4UEceb1?P3 zKdyN`sWJf1=X3g=_V3vjx-e)h&8>^QquWCY1MAi)W2Mig-K#-GK@=M-$;P`(9UN*e zEKUpCm-Obk4Ro*telT_*A%;8i;p*Uo`A2b=RoL6qxQ99RhzQKtnLBM{-o~;$w25pg z#;E2)w;R{Xf!adNb^t?l zKvatDQn1bF&^k3Aav|S|O-rE&G)U{>Jd9X03NN8Y$x}O(RoNS*DRj3)0xJ(5$EU6D zyeP<2>n?salJ38z9voS-?WqfHT{!@@4)(S0BR4ks7$a1ZhZwQL`849U&(D}5@cj>e z0?CxODzqr<%+q+?Kt@hV;t9IaD|5FIaO?SGT(=o{H%Lc|EK2d^ zSwB#slj6@-7q+tn7F86GRuok}e8%~JXjXE5oRTubiD% zR4Cp2+vWq7s_Q1%*Rot6Z_i!!E&Ku|f@hnS)YRyZo&Xi7OmG^&LGa)P{P5-tPNx%2 zmnZBw;E6`l0L4H$zm^Zi)I6GPQnF3CAZcbPdMFQY(Wv8*Fr5`YfBX&f@QDBR@NXD) z2Lw4GNQ9$^7zKx2x*lmC;1rGL9K?VVI1hC+M;wt)2_!NA;^F-c45ORHC&ZEzjs;E$ z6dXJloFaOV< z@u#PF7;UCQGb3xvQNGK5>?9##fVjn&W@#AGnVz%C8S5H& zzw6KSeEMpUem4tHDVqpqAG4ucxIVM5Zfq$3e-W354bT#IX#onQX2lbm|J8hC^oK~W zI)a;|f?Gd-%l1XHf#kiN$(pr99o1D88q1Dx8>!MQ^tWg)Z&1#%-qqaO>D~r!;v7e!2qe#}U&s!K2soCFDFJ z9dtnnL6g&a(GIhNAJ}X-G!-+dc=Py(!4am*$q+_Gm`qvPW<2H9v z{p8-}3fPFvT4a}ROdv~>qO^wKW0PK4Wu$3qm0qKwb^9CKCAq*Np``f7Y3uH=XuiL8 z9g}tun}Yf>&j|a{{vuP+X&rkTCNV@2oX!&V0BqQa((sF8fpZGx$rvoP_cYrWt+600 zYch&p3IT&5XEDZP<7Cek6JK=*c*(wZuSem0pQ!UATp||t;@slecpeG4em z5T+=d9ZMGJQZ=OsnnlH(!82unCXLMn^WS)!N8;)+qInv+AOSifPC2@!8kX@l&1|I+ zX=Y7?_LM8G9}H^`hN@b=c^7nzdDvlDD7Hdh#r0{|*|uVRIGwg{|j#;&d5#n0;!Q8I<4UBq5T4KIBiQPyw6kmz7D@j2at0Ty_F z!7vDhN#R`pbJDhZ<}$`(K2Dbk3{DCe@GMe-D9{;V8%HnRApAEjmq{ow7M{ z&uy%+ZM&In4U(8l%VO^Ac4R-oo8zS!N5 z-F?mjJ}FB?v~}@NQS?f+E#vFg$TnUp{%#e7*O;2y9bJF!Y&`!NdCTh$wM|up;O8Q& z`Mz5G7`$~*-I6NxHHp%=4vk+wD*nt?<& zbQ>Nu+7ss4sI*<%(I9aDRR~H+Z!lCsa-thqr&Ba|-0gd90t-aexzK(nqw*z7zG~e8 zx7jhF6xbPYN)oh{T+t3OZ2!I8xC=tKb#PTkEtQy{POq250mZ^+w%w_-74yQ|>af0T zXrfSJSf^&UG=;CJ4eKZ3YVmxXRlBC))NGdlY9>F+b-$)L)0vuo$>x~v{WMKbVw_HA zoX;bsDOv{yZs(N{_zLwyu<1F z2?M9iZ@Qd}mWeizDwW=>dd<=`T-|e18qn@wX&nyMZC(^Q`*5OdM)(F&Q;Yg*>c5EO zwbv4_Kj-mALpDDjZoL3(I(wa|+N!wTUjGW{&c01-qzjuqZ1ypM3s+w^#t3qoOwM6~m((@xeJ zIwHa(5qde}-`uP@Paf)Ix%Mr?q*Z+9TH%))$9kCL9>Z!i%QCJT6onP`GXT&V3G1Eh z=;?GS)5F=W>cfW*IG@kfY>L^P1k72~GxEziBU5V`-yd)cF zGtKI&;RX^2Ns}0xpOZ#%f!U=auX`y}b4Kj2nD#Ax&soYQ(iMO$5~y9lx*SUN>j)uw zd%*h|2p@BVm1(SmmNqM?sIkH;bMN+W6o0Ie+|bcIT052V%zl>w%ij$duOl?lz@W8t z$@&7>sQ78UgRMvP=K`hX?D@WfyfZD@t zUaz|g9cl|=l8poL_eBi9h8o`b|JM*tCk^3p$~c68fua$_IUM)Opbq^}1Pg=NIcVd4Y0j4vV%t ziPa0Bk*AI4TP1g`ujJ#n!|D8tzy0lR`17CtjDP;~pYYz}@$nJy^G91d`94f3t`Dsw zfW*8*s0A5bLe+kaZP`7ax5jMUziGViJn0a^dDzSvnFiU{W~d{dYk7ZJGr*oT%N;eH z3&r1Wwk;Ke7n_o;YZ5~0lGX|@whJhY2B_^s(}wKYf=Od;vtClLZWb2hq2k#8L+R{N zSK1;7%YsrjHvAqf(uL7#`u0Kv?4k4t@uy^r5^^2QP&k>cO2cpIASASe39+&^> z+;FK@;yf&oI_-w?-$Dq#QOkF&aBQbgrGxmTLteg~l3osg)UT~x547l3)3DT)`#paA;g8tw4oO?3Tn*n@Lnr|v5uyR2p*ZWWCt_4PnQ}vc)tbM$;K*oo zGibH4_O=Fl3M#RIXb4)Zs1^eXHq`ujVMn*J(rK%ZtiE2akVY$+sqJS4GydB zzjL!r<+e}lbx0>{G$eXoF}YF@D#;3R$z_nGLG*fxJU>58++U55XGvWwY}{s_h^{}IEEQgT9p-)Zy3f#>rlHr6^c34N>Muop zrH#?G|L*Qbu+|<9Bd^I-BA z{2o94`0rreK_$Ss9Y~VqkdaVI(SRsnMhaCR8X?l7#J#5Fdh*OmuHhmMY{QRiT}!)$ z0P0FXwo%yKw4>qc2OQ}VA#8>ymPZ4h= z=znJppTHgY0BcGnI?;h34m4RS`ReV)4^-{glgpKXOE){p_xbZZspbHB@r3 z1?93$iFL=tW(Da7I+~3VK?JU&sHp1T3;NV`=H~IV07JhK`ece_2YYG+XV)WiyZQkg#p=6YJ{lQo%pmpOn{gx@? zTT@@stuBB#BA-kUTf&LJxQzNlp7D&O${cl54GI7 z53(YkmFE2J9_6y!bEa^(dR?~Za=Y$bK`45?FyuwqbORyOI@`FHEi9jT|A47k+zf%n z*%;9|YK*5jIog!38NwS|u%vYEd0eQbI%o;L)z+$@+Be!h$un`meM zZpbBB)DSE&rHZ~&6-3HIA$ic^a@{D@WzjMUN|!p-q_LVZVrRN3$=1|%J;;oG6gzwM zyNXf=A|J2TN6hG;>d^fDUM5>8_WP9SK0|7qw}qd5x(qqBgOI~CQ!=1Jl~C69^oavy z=*6bA&0mRfD``fzWoodza5Fg4p`t_pxY?&I9l(?2lu9Xx()Y=}mf5$_rr&YiIPkkd zx$=3FirVs(Ve*jhVxx)xHAFMo_pxhp`%z0xTA@Kx+Gg!`ez=Ss( zang?%_=4#&A_8C;!E%I-7dTaL3?NnP?X?BI*c!3vOSi|{w~xjCrlv+)#)R?=lu}P(_RTWHFeg~#PPa=1ZL9MH) zWBcm8B2<)f7RR&sh1T^~u;(G>DSi8gUGSR+768N$uQn>;Wfk$L{Scdb-gV|tj9Fo` z`7-z^NE?SmLeBEt*2AgWmLls@u=@~O(X^cxr`yc{M?+O#c0Mw;QFL0J7Ws`LV9S#@<#;5}* zFl0JIC}4~MQ%n>q(+;8n#sKd<#*olOacO!uIKf#*><5P5AMoMhCw%woN4$CP_|u>M zgdcx!a1KyC!3{gebcAybo(yOpZ)cfCkQ$f6wzA*v-ZO9_}SKDe1p%xmA5K5VVQD#&z37<1EH zQP#=tm1m}vX1~R_NQg2Ymd=G`Q4q3|<)Nj;EPlB~m$sRk4m)XpY3YBHqm1e_J=G1L z?5}}$xP6UklW?3nUsOEf;-VsI(n;l|WLuh4lq+jq0Uuh>x2S z2J%(tAH**0VI>=K_2=Id6vId6;2ZAe^@ew2f zW&ueov~FU*wY;gM-*vy=TfXtx^n?e9L}(bH0_@z%d802w4zCTIXz{;Hk$FP*g+LW5 z(Xxk$sQfOM%ccChpMLt^`01yg@bTlvMC&tfKA%BxOemqQH#5{NW7Q309K8Ms-7~A5 zv|11MNy)#2fm(asGjo#*yn25s1>i#`_ zK-7x*YeU`i^{pS{f{0dLEr_?ME}cEsyD4MZC?vZAPOo2|wd++6?YuVKyr490Xe=vD z#U>J!HG|VMVY~#4V*ro_K`>q5h%pKW|c|ostD%oA;uwNRZ3`2pTu+&OTy|wP;?W zv(FEezgd0YQtfe?j~Xq7-;%~dgZN~F=Gpf${rn+MW6zai%jlHfJ{H68bk5i?o6L+; z`H9W%%~kelTD|FOl9XW>4hTUpV1g(i*p#e;fK(7=OrMKg!F9-NG&H7dNmTK0IAEG4 zeE$3y@7}!w@CarHAy-YHJ41HdUF+f=b|If7LPIK4$fW^6GW$2;)n;_@^f-s}`HW#0 zFbo6E=W{XH4k6(E`}g?u*I#kDT(H~iuw%jTcm%6rx7%Sn>)jHdSNYTJb1dKb^Qoh2 zTlWvDrn1$h)my29Z0rHDAqDB91m!Ned+Qvy*JS%@JGvqZqkgS*Qs=FoVsFpC)^@_UWsl*J%E@Mo=4QRICu;ZyO3ARFtC5Q0@{%lNrURUa#m)fUua6 zqAE9Y7bCSey8=-QWm_}>^R#tC8Qqw&-LiGLzhH?Aw6pg2BZ;jB)WH3vCtoWPpDWoL z2A;I#lb8$BI{Jw2*l^oIbTQ4nX+f}Fu*r&6q-h{;J*3^g*R*CX=3aLHWPJ@3q$E*N z%pSYl0g!;e3{pk3f-wdy1!0+F&Kn_|6@)$=x=|9%D1cMKju?AC;BhzL;9ZGeQcB2U zR6$U|q$$0P)j>;BWDOEkg-I0qdT9z^DWdiLVoJMhyy6OxTs!SchrlN?GgGtDX_~1} z*3_-TugqGl8=gvZuk#pSDtr_RD;xlD61xV|y8K)l7KF}q&0czobV)=A$D|*mIujM} zBcAFhT<6<+f&nh`K15;SMRr}we<%qM!+CHDz zLGpDZf_H?$2TU$v?>vMiL#-7;Ny|zYpfQ46PQ)@_LrK)E1O+)DQpA@pUl7M)t+H{YErj3sixrR_x)@G+BftsdVWhTUHe_*@80pP&^xEEj?f1w@V~t+A-uLrEa0MZ(BRLyQCZS?c zsIgEgKX2u=d8udwstLG>hre^#!(Y{(p&8 z(Mn;qyxFFqS#%(MA(azO!p$!7T30cD-7QF43li7c-V~@}RkYuCO;kb7bt4crkk*Yt z@Gc5&#n5@fC-Pe<`1Q8%if*8|urXvOkL#E^pC?Tf75z#`S zh(*^4JcwLE3W*^y74J|H0YTD%OA4p4Ao@^A6UJQvK?bxWr|H_WQl=#fc*q4Q%+vBc z>b`Y|ZXso9IcZgbX_a`931M!f0sXe|twU`aPfQ~MH~kzD6>4PuJ=&?m92uHBOU^#A z)b3*`^(p$DcSjT~P|Fe&Z@%z$aTm7Gl*ukV}7P6lAwHe*i+jMaMbBfV8 zty9LGsCTAe>OzpJaPdC6Yik3#etqZ$Lb#gY zBrhyd5Tl5ei%~LhD?_k@uTYScF@5b+ked(QGL$aYXGXq=2$V(YoRzY!ecq`ZDp}Y_ zy|9_kI*YV^ZWrsX!1K-O^;STMg~Vs~hDfeEINAam!qxMWuCtPqsogT;Rqa?rXg$*E zLy+2%HoG=Rr)Y3xcr6n=T1iP(4)x-r*(P63?w(k}oh z4B1eq;(9w!TJIP0>YYR|3`2^ioTg%0|I07G;QjmeczSxm;c$RgMF;`VkcLg*F^=PG z3%8PNb*+Ht0gt6?NbDM)uB4?rjM7rGx~f0Ea>~)rO-FNMieDrultC_P*56DK^;T6K zWvpBFQSoZ1LvCW$z?~Usr$q!qqYqpM2-D|CYk}ocLGSar_x9AtUf3c!4sdNl2 zbvb8!miKog0jwc~GsR=sj_hq0b@RqsbuhDbP+Q8D{gO_v{=ZDwel=y>wo2Mj)^nC9 zwGm>p{`I1_jJ>xgV_7ZaN$Gn}Vn{L3lKlEnNy zvRGdf64HB!nr)6IN|+*qOfP7q2vt+usm5!KsJE;=`t`qc%}HHTOqMD6Z0l4$)i;Pl zna1ZkpPx<2D0UTJ2N6nlzq{v$OUjklA;zVUtB3H4$Xqfio9}BXxS5hoN*=0l`R7L| z3{AbaL_}*)=WRP@{?@;p*p&5bchMGvWqnImXxc%Qhm!JyZCx0o!~eSN5^)4Ovh!#v z00nUbD8TPL+~7bXCq0<;{n50^(GbFDc4UCJ(5%@|`fxZPKykTTa6Fz7qr&mN%7u2w z!b9qcgRLyxYsF&Ozi9SOlnl&d7mO;>@18$-z-$->eE9GIfBoxU@!`V<48u^GN9PL!GZMY)$^xnhzmiXu9$|ww(pYdFUWh6jX?F zyRlK5jg_+|ts9=K{c|iY6+2U~bLe{YfcM#z()usnzfs((SUV^_BSxig?-DK= zE!4MD#&Q!Nq?;O&dy0s!iEYY%rfDj4kcYELVx)sh6l_2vSJ6q^uiLypZK}}?48Pl_ z=h2W0cFycBBx&w)2B##Q8nl|$M5wecVttp)hp8RNdHS?yYm1e_^}>tj#zd#ig>$+e zp%GEfk{Z{%N6~@FH{K&@nxlf3P;~&Ib#Q33vU#dl(*27a($eH=cRpun-}8myniDjG()lZ{-sf`d{!GvCTWrJ_BvGllUY1%5s#0L2q7SZfG?k)a5;|%yB$<08DN9I>ZH2q zQApLG3V$7EmbHU1#^Nvd@#9DQ{PWMaT#_Zt>2yMzrbI1+%9Qai46}iFrypE+_HK+B z>z&u2DTJ$rso*$YOBq-1b0MgvnXQ>fMVoCs6V~em?E)!WAcOZ$A74EWxT+_5q_M6~ zHZ+7wtv}lO1TQoG_g>GIZErqGn#AViV5TJS6=z~>wy8tYz)3b{)VVWP04|4Pd&`=% zUp!b>mMLhKH@3E-Y1^h5L8DqMZbqRxG>ItrJ_;GVWDi!z5ntLlI-2jIT4%~}s2a8k z)@NjRqQFe5U}{qMWFbsC?<-?e3}K9ul?R^a9CUc?eeRN%b_ zhXB1?;HMLIyB!7%_%c01FGuW%a56HN)PXsD zf5(rIAlMuA79%CkH}VKUaUMhQ_aq_=%wSb8B7}e;GC~Z=ug?%nXG#;1G}Wh>(#+fd z&29xs8yT%xTgF(w{snR0mjW|=-+i-5GIN8BmG&b)C*}jGoSGf!!sTOZ5wiaMg6Po} zfyl<=1@VM7jpMW1wbQyQ2YzN+(sLH77%X52q4|CDzXf|Hhn;EYboMC(2<+1j9I3UR zB8$M|sLfPne$Lby@5w$-@XoGh+OL^Si<+rgR4Udh%w@S z{g3~JAHMqm|LqTd1c4AvBY5Wlm$ZbDrldzC0=WTuI5_4K+~6tM;4nupOY$y+B9ez= zhv*M*!w%yxq++i46J zXvEGlcnDCvR1tLRO>Ut)drf%;bf}kZv~Ct<{dSC9@#*Y_?j&oC4as!oqZ_l=A8{9* z=*#QT+0@FKQk{M0bJB{o6z*hoPXTI*1Y~N@4{MwlrF8|N2PfxcWxue$#|5tDJHtjrJ$qW*N=F2wKO7YsC4oCcCTr}o`pIjT{7~yGF^TTlC+ihut`HPHC}PW22$n&roJwsy$h){ z&nt0CJDGii^0f9m9HRA5%L?L9-~U|j<%5~&7V?|5h;jAzFM}E6;aK6^WVyi}s!5>0 z%wTKO@-tN$X7lJw!7f@1;b$8d;1VWW#xYTugKQ~N@5hGf=sI+hW^3H=CXzg6?^NPHZj4 zW!t`_D++Q!Ri-BU4X?}GrS{|c#*&#f6q|~g@*=uX&a6khl};SJMlp~74-Lgte45Zx zL%jOa_^xaFHHF^2tNmWvqV0n4+Wqe%1b?qTb3rIglEdY4N$BA|Az!C>#QA(iF!R}` zFQ2gA?*Ts`%_t_Zyt1Y2WQx`bqsS=+j6FaDK|MnprAP_SP{)X5&#h-nhP0qU3Ze=^ z877gYsbIE4*oup?eHR2f6--RaX}z{#uyvR@rH%v6gK*4rbFKAKi$>(n+$@LQhG>pZ z>!>o-YQv_=pt*hS=2xBl0q2SSTPDU^&r`iN)m3`wJZV`CkCnDrx_z-6KrLks^KQ)= za3hGyz?o=kYm*yD$q|FO__p=tO41M(hPml?=#0ZN@ zoX;Z;`vJ$}5&!eAf5pdNf5mr?dpn;aKr#nS^!FRDtEax^|GM^Z280&nW{EMBN?Vv+ z19Z`d^@Si+5(b0vIwnp!35jg%@%`&<&vljS1>sUchQiRbOjcJ2wpGKDp+MX4ErwEh zXYoZLtM?X!86lJ#J%N2TuQGY%h1Z2(E)2=28KN|0*CKoER8m>A=7TsRU9nXD^FdQP zd~4@zM_qxr@f_aZ{udi}wXxPzNH4w6-uZk(JL5X%++trr)Ka-O3c>n*tl6B*_I$c= z{ky5^)dT!Cr2**b$8;rp`(@Z0-}(2niWp}5pUnl%^?B^A%-Bfm?vuheL*X=+pqd*yXr0s}@e4v!Qp`e;nhD&B` z>_$OY8Y*3U-xd&X<#{Kfg%3VKt~Q$ed%fXPD)0*mC`D~**@qL=mMJk5q_{?2S=+)L z9TKjbhlHr?`;Gsgt{`2N4M^5lOF43qwumunIa{r1Ho~@pROSXeBZAHWOuNO7Mp_3!#Md3U}y|UnvtnZ0#27RK0QC-@w;~zd}@$5C&T2%$1HwoDay6tzC_m9 zTWJW&lzso6yFy~!Re_oCa5&&}ddB4f*mu$DJ3P7q5QrapAyP7on()G7~ql1yI z5S&HHw0a$y3U;OAnlo!#1i6$#oo|(zt%3AYq)d&5=p`uDoQp_zlp|7pZ)#=(UH|Bm zj;Q{btkB&C0zdd%Z6q) z3&T6(Q)Ol%K6+y-{Tx~F_f?(g&;9Rie}mpVsBhDWGF{cHi({)z%7doiMUCp zUPA=83N7ji!lG4P6o%9mgqjmG@>H&CHb5>&yD!TwY4herM62gbRlaGxNM~h389lTg zC!&o}cT*I@Y-Co<-RG&q_VerGr%*i=BADaB@}QzUmHYovQ zdU7_C=u}K_D#pbIO3Yt|O`}Z3@6IJB2-sV0OxPyg33$Go@!Rtk{3!p1fp-8C^4z?` zb-&EDHC%fS77s$|fr@^3Zh60(g5U1QG+prS-8=mCFMr4X{pbIV@qEJ0J6xWR2;+od zkmMl>vBVccfgy%&xmVl6zK$~Pubpf6--SUmw-!+igV`2>HA0<{XxHr-(hY@GS$5Zf zBBd9>7Mloahv@ZnV*c3adZDNr2%*&2SG8`0R*Ku}2w`U+xCAd(ahSSbP8;nU*#uoT zh9&#W6k4bUt$YJpYStcsf+%FMH&+x%ZBmKOhpe9rB?OLo9K1F-EX$XnDvXgpekWhXJQ4;OQa= zK@n_pwJ;V}-%-7BDW!TBDDSYbI4qlAC+AMH@E}C#inP+~m`zS4WmupRm?t6$v}k6~MNKx-on=^~)!1qkfwxr< zX8V-hGp$BCOGYcqCy-;=4-+N2-9#6`tlj)@q#yR4+$N&fh2Eh%E6lR8wg>2f9s+!Bjgaj ze!do4q^)%zrLZOij!&QQ+lOBe!wBabWIW^XVGo&}R!fC)EpI_oH#CHFqu`N_Qe9BU zG_;_E=A;{LwYs`werlzAp~NBGaHdh~6=T=z35`~MY2Si!y3FgoF0$N~7Pj}f#k#Fd z_MsH4A78Eu1X;LZSY5CnygOHe@9YtL(uG{cy z>XFpi8YG8H|Ibrj_Gp%~hANqwXqHW0%5G=Vn@!dH+M z7D0P4@ugx&Jxw;PX&rC=yId@uK)6K3MSv+PLZ*ntBSwO%2RjExhW=49Yjz57WDMX` zB!V%J!$1tDfD>Q^45z+MR7t1B~_5N(j*lI&1Pr^I`Z$C?oWuZthZKU zm9L9yizDSOyHgg2&9$}H>$q5}1dr+t3Ym4T$5!kRW|Uo zXJ*UiuHFOcC{6CDFDlcW$kMFlS*JW@iAqD5rxL3QQ)roWu28tGsfDcda;+aLXT)^j zxV#m~=93jy<(TDI56HmoGS; z&-f$#!6XpXUiiYMu&0b$gpfDhQ&TACY4v_x3_FMa`M1B~?|=V0hG7801PyVf!EM@q zwk0Z+Id~;F@N3cPuceH&VhC#6X!AWZ%a)f^$BY=<)AtTD-;CnI-^)e z&EXDwwb!8cQL3S9$b_y}-c(8P(&vW)qF>|B>LH@FMs^z^ER=C)nA;$R71g7)LIkA) zg?wEZKq#a@(<^rQ&Df+S#^ZVf=}uvGS5Gl&cH)r4N5E+MJ`B?;FFQ z8-?=y6l%91Y2#t;3QoyW-n|2T`9ATRHjZn*(^sKyJ(67-9N#@q{q&f-YXiF`{C|yt zaBYIJP9n+3MJ^a~As9k{h~Vj*G=>v7OeB~>?*7f1$tW_90gfD$lNXy)O7=6B56ecU zkfw(-f1DrGBJNjBR!CxRyp9e~g~0blv03Dw5YPGft`E-qeVpTl@>`;+)R_GCT0(ZN z`IJSX(@|8o%Sdrs)A4~t6MRKfYarS^LQ!R$y!(?NW+k{f&||4@i*;vD}Vm;KmQZ& z|MyQg91d`r5=$Hco}a(qz}Fctxz{ds<74;Dl<`_LTUm#XuR@&B0!o~vAXjW>GNKjA;`Gf+D+ZMv z@1KFGA!cov`RZ}H2vg^5pGCpL)FEFkR6<}v_6eloGv~UEpnaf6_tbX$?285^9ishY zp;1LrCvPm%K+-{~)?sR~uE^b8?)1i-l+t~D7H{@bLdX=Wz5Y;;in-V||7s9X@)N6( zgo4abQ>QVipKz=RP~snX(|SlQse{Q|kUk(gI&Ys!6ef z05MHWzI}Ye=ciBD?RNN&fBOM{|M_q59@y_aPM^NmG_k{%(-AZ{oQ@-=_<#@umjH;k zLP3Pm$>z!7G+^T6E?IV{2StJt;KA>3@D2zQ*eM?N4{%;^zI;K@a}xF!f4i7Gr4B%@xhxzqa z(irA^i24S(S6mA6sj6^;O9+`6!!sSql%j}Wv<Gp%&{j#ia5n1EQo!%_>FC|<5Jj-_7pMyW-q`XufMtLe2hSda346bX z+wTEpTrBq+`Un-pg%9ggaV{9b#Tq1m#E2*t+gH-S)1UwAuXuir7|#(JN9g^J&S2?)F|1xMp&*%efMT}jojWYWmCM$khiEs8b;o}~iCZYuZ| zz{%^-)>m#0i%(-mxjGrU;*Yx`kQ($mNA>0gH2QPV1orRq{m9gO@-b}vGsPe0GPcsj zYG=+8EFw1+_kr~N58=Fmtk(xon~D?B0%e0{pV2Uz!ebtCr`j&kSZ86eYR4lck0HRI=vVhQEj-<8M_*RR%rgqtYOg9jkv~KxT zyZW_PDQ4WNLM5s$rw_1qh$^^Tk`JMTh%p2R#k9#DgXbl<9MM)lhVPkM*nj@^t*j5C;E^|S|cF>QJ_&~l-U}|c$pv} zfK=h^d*&!Y(pJ8+<>%KAJu!JRxaQmXJ5DqaoJvDcSvuNLzM(a^;w+10dSrwFTfoFQ|pqDC4au&s*OpcIR@omC>%a z;+}fZ^$T@xQ8&{{ZWWfFi-xxF=qci@NwHqoy+s+WO_Vi0VS1lv_iO+3Q_ENsYWX2a z2P2oo!;NTvxe)t8YQx@Ufzah?@U4xcL)6s0=#X1zR&J>{^hQB=!{M`tqM2UxzSSLI zPJ|Fav3)t7M?@u)M5N;9a=GB?c*J=eA!A4$YC|%jPWXvbS=Gs2AyO!*KOlyqA^jUW zIM1bM6KZuXK?GBbDfuBm`7M>2kvCyWI!Z-f6hjL`GBeD>3?iJUZBd9QN<^}r)~~O9 zd>L~=zAOflR?O%^^^ItsIos~!>3?Z8C*%_4U3@pGTfx#CIJ57bZz!5M@}!;|t|RP< zUH6<3o~N0~eosTxiz=y3s!&bEG-iaZHv8vl7@^&3v@|j^I+AQWYJ?>F$L2z?&ud@H zSa0?kGQ=@Q7#cJpDbJ%Q6ss#@OnqpPcbyX-5~7-uic%q%t^u2E5?O)6@aizYV<3+p z6Id8546limkUaTb5E255A#7Dan5|ig6hH*wGGe-%0g1)m)7jLFQw7A*SE#b#VtXTj zl0Xn4Bq`yC8Oq)UrhKtjxle9m1+XE5&(F{J@Zkgg{*Qm)csfA{h%taIx)IJ}5-sT& ztZf0BHTV6L`_`oX?Q_Ty$`%QCE!q-6uKSw3J!O2K59Ev- zQrn2?oN$&Jk<6sVwvZ*+LsqYb>(zS9M!PXimFAI_$A(X}W zN!wb4D-fZmEc8|N&ui@o>?U`UthJ3qeJ$!vyp5aE6(p*CIOl(N^W-7sqBsA{ddjL^ zgs+7(X?OjX3#9WewCT=V5E7>Kg`~A6qv}AY`&fsSg`Fu~s*G>tE^W#+WOedgsGq6tyY*Zl!!q~)-sVR6QUB5KWq$Q-&>$O z7u=18QnIba)D(mvgy!=G-X)EthGL!L-~dTzVT@u2v2=}IqKvcFv~TP*Yv*#*WBoW) z8oC^Dr94Yxicxbd?SM@-ca3V9!s`rd3BJl^Cv#({fqp52K5Oe+*;!#_sGq16eMTiY znG;?rU1!u(d{L(OqfvdaZKQKUJ{iJG8V#|N>ebYgpZ(m7Y;Z;_EgG*Wyw#c;qwYav z-Kjc5y{3eO0q|~~mWK+M2+lH#wG0>JeNW-YtZSe^3}98bJg8#pP-4J%Ib%AVfeiA>KHZq%Fwud1T1vjH{#~oV!eKDq7o4+sB=1u=gv*7BI6t zY<4Xd`c`JNUo+nQJ^j~+I{zNkum2uZ5mv9%zMyN1iS}ZM=w??`YZ&^1RBsdr|0)l= zby4oxf~q}1Xl*%+n+~@CXIVhkI9{-;JuXb|G)p_J%hkd0oXgRb2uNT zq=Oqgq9rm+Q^aM8P;!tsfqB-qMzjLwa+jRxvnWk^5mG)ZNDU$6)Kpc4UM?hpL`0?5 zbzf^oIx0r5oTo4)K;r}n0*yek5>5aBAOJ~3K~yn)Uop?KD3G9#pa_x+j;TQe%kQJo zJippaX;Kvl6=MX6D+QtVi7v}upALd9t;8rtt)k1y1Sl|5&D~m8sw`Gip*hRF44cfu z9JTKk_o1=W`Vr35ux}bll{Cd&?43v(-!X1{5OZ3I6hr1j2PdD_C}LEdmO3@73?oP24Kvbx(nLaKvVFmt}Pu3XZan`bmMMoiNM&(BW?VZyM}Sq)<;Jfx{n zqpB$_$RI0(3FK4HQP!3fgODM0TsH^~=5#%B-nsXT)9HlYe)|nS|NJwiF=7}7I2H&+ zKqmu91R|kmM+r;Ylbf-KFFKobrLbyQhs;#fk*Tl2ury8ns$X)4{OMK!SWP!KrLAtC zi)eu}MjLIpBn0&;!ns5Uw-Ri$Ww35g#J38;nKCw83F6s>9kwB~HYDpWQM>V%%!+LN zTBPk1q7W7uzIsrwPQsi2zMc&1G%jevwhQ{V$V{#Z$Zlh9{Dz8QZT2qH#U;Fk`Vrlq zP5D*NLt*{5qU~ne7^?I-Afpy_J#%^fJ{cO<)$hOb6Qgy?KzqaPdojWrl=01t<=Zrb z3q<<0?;oXM2y%=NLZWsAcz%91&%yNf1jS_<5rV+`9WFQ}1X`V)naPqvz)h2s50v76 zmeC-x!$=cik?dXAkPAjsO2uHaQ6*GCRBYc;a5W`LIzh$W3}&3HunRFyO(!qKTwqK& zYu0pYF`EBkOjFeR{XQM0-kF|~z?|Mv)^kh(>X39owg`Ytn77aB;Fa45~0ixyUqn!lb9yP zrQPTy(u}^U;bTe&8Qm?K&NMuhjmN2@h0CP!6dKBT7Nn&8a*ClsN>C!>*b-z|-Rz~x zoHVWkh!sd)WASCo2x4k1Dhk^^PCqDs48?>Bgk7>8;|Kw#p_oj?^HMi0Bp^=b9XL%% zGpE5TDK;1h;hkc@m-7)932@FAs-1~!=m~`~&Nr4=?H;AV(+v)8a48Llsc_0ler4}m z-+xkq5t|+~;&?pb`S}^sG+~DbCjzDbj|jp9k^s^R93q^?a{eh4u|mA(Wvi<)sfHTV zt^ErHbyF+@JhCJpYel0W-dRFG-@Jder4}`X-#pBwYM3zP^WM#rZo>lUods|DGv)0h z<1n#fD5(Qf7OpDpI?z)Wh?QFd7It!d)_R}Wd|#38waTV!QLy_CYS+(6ORpiU@B~WJ z$y9aBGp8Np&Km@-vLc@*gv|)r)7IaU!y44P9Q3#fWK7JczeA5PJBWdT(p_E)4D6L2O zeKWpm1sk(ZXbUT*FyYgeCrs0XFP}f*d_H5Rj4z*`aT!OmKAFAL(q`vUp(ZZ!UdvQitgcIhVnUQlDpH{clT8VmhEO5^k$K1@ z&`iiECw-wXBr;-DoFybm*aI>oU&J(FX^o|5p@j2(;GDt-g7<>BL-A2;R;g(bllL5f zBt`d$9TrM?#yK0+@a#WUdwDSxt#|DQCS8Ol0o6e~=MKjlhXyT!5cTt+WCJ2^0S?b%loafr-=)7 zM?{EBB}z0q4KQ&@sv#=~9i;-5C8T0dQqz!-JE@RIM$Gp?1s66~13y67C6@)G)P*Ts zhk7?lj{%fZQzPcdDwIsrqcu)J11{l$)8&XMj!_@Yaik3f~M7yrj zX(@LFhUzO7XzgEQdnR;7@UOr*wm&XU*%y}yYNl`Nq?7eTte3s6*a1?G=M5lz+}YrD zg<+Yp-emr`eQnxm-^8Z+w+h0on9NPexKzj4Z;UHlP-oP-b_@Cp<%|$6m`dt=3h8B+ zf6Lp*DI4(_8;xG=-hXTAm%ai0(Hx?#GoR3+ST}s^5WcZR>Jh^H{o)2y+!l(Y!)C$U zG&p^Ibrm6;wH%G1@Y+JBd$02rW&EuO;e7?6;P;`Z$+79(jM|KZ7zL-(2_k}DfBhAw z(+LlLhtE%6FkUX$@AuVpb>?wproDzn6?-Le7C+`n^ORgka_%Lyi5}!^LNG^=^{azT z*Q<>^NTg^32GaPwP19(D5p0K>6@~@TvVzP|KPClJg!AbjJfF|WIw=wYk_`&8mi4_K zl5ugFRwaRR0?|}ZMneu^ex-97OwtfOzDbQynr2lqss^aCXw8LSt*H`fvw$lXzm0{| z8q2SpyZOM(qWG*)PMXTN+5qL`8p)HwhQQ{6aGcE6r5gSa5duV@~sqjFeSRS zd>3nIgixsLT$uF^ZIbOcERiXi-Y*+ZXIt?|ib*3b(}W<>8uBxx=e9zPq>qlUNXOiG zWQjnY=9iW8Y^xwlUZlx+;N!=S`01yg@ZrM;gb?5c#WapUxR?QbfJy)%z&j5K!3x1_ z`;uQ}n~c&A6Wz;bm7yu^_lbMCWa#CPuBw*Zm;OmEXy%D}qvazJ$TccbftVLvlr z`$VMPkx*AHRFvA+&5QGgH!AF&>ejA~>FXZ-Dmj3Uetk+O`^a5AV*xPlnhQlGvr@_i zmJW_7AyWAOu`BdYMyYKY&}b7ezo6J9fY>LL>vW#xh@V1c5CLpdh%+deWp$B@?w17{ zFRSXPtyf;27~JtSx_BKOtp9$Oq3f0S=o+b%?gr)q!13n>A?z16S5UL6O?l~z*g2X^ z1mD@`5I04*b_kyqyOI`JZjcfarRRgR^_$F;87&8f>V@5{%l$EUDwPO1CJmTHEcc2ilqXBzW9M2VDldv(vZP8j<#Q@BaixfB;<%w19L*vooi+ zw{K*Vb;-;KcQgGka}W2($g1L{d-gya5Itm(tjx#=ck}N$Kr{fnb1i9dbIIh_{S4%c zn9o2;*bzgM0_hPE9}wcno&yDx&Y*ZOc|sojJ?`vqD$yi-!Eb77a@+-IZMKEI^lFWS>B)@2BaPe%PXWY)$kqyS&K7@D2A&uQ!!Te!ju>Ku&Q0_O8`5X78%BYPSU7mC z1q|8IzTgzNyJN+MsVs^>0mw_x{gV_`(P*uy8odIkuYX(mSgwMoR3MOL(eIV!4Ouq5 zb*^JE)fFw~?lZZv=Du_r2`i}-;p4ivWyKU$jqQfyOt+TX z4TWE42U+Rp*1smui}%}W@4wscw4a=+XF~g-j_bggR`>UMUMUNOUx9V=7S_#Bw0ZrD z#N;_xI)1hW3f#Q|YT{sw21^$Ye2Y9)vGfW;*9-S-dxaN7r;1{)=tHI_gXIxBR_Nad%9#m=}cq-f2AOWX$`a4^Jw7_fsO zUZp81IOCAThPZHZV+h#M2IMR=B+t-U5hUSN+(8-0t_h=J{tCedhXuW(c4KkvTJi;) z%Ty_g2%d;AcyKjqPpj1dPGpm+d8rnr9>~l0SusVLX0MzpJ<=Wt+nM&;7%);q~j+ zczC$O_uqeyySw*(h{;RC)eHV11^2NtU0mDcF!5r_whX)OP$>hDTpN_Nhuq5Ys8y4< z%_LXT3bqHxmx3x6`|p)~>*e!L=$c(vr3l9spbP}66_ngnN|s^|zM#&zlcuoCbd*+= zzTr}OWzUKB60z$f@0UdgsmZOg4THOXscLS@4N@kdR>;@ID=7nLDgD+y z7K3=vMpAofT#Mo~_Yds~-6PN@%C`)TdG+f{z2F+c?r+feNdw6;MDu4tg!;vYrL6(` z>fhIGgz!>>N{cL`X?S>A5Axd~p!IX4OX_eN5!$Ao1#S)6Vrs@L(tQkR*BZSFO6LiRZrHEXoH>Zr0 z-BnBk4TFVkyXHeVLYU2t7udf}xY_Rlx7%W zrFv?oaSeK=((&b;x1oubDUA$fw$dV-aGF=DuCrekLKzHYIdJy(f!6BDZgaWvm=#l= zkgRB}609qA12F2d$v0C)lGHVfC^AxR`>wN_dFF}&7DN;P9`m^ldFD1(uSm1+6U+KZ zZ0IXI(#M}cO@>mY^5>%G-~|Fl#w^MHE#%s;!B7a<%0Dy@zBcaSHps4x^C`_6!h^|* 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�LzzV9Mr6gvSe7!?{_&*@ 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 diff --git a/modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_10_10_200_200.jpg b/modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_10_10_200_200.jpg deleted file mode 100644 index 96320876175cb508f98f50be9d55721d0550b297..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5517 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 aDIFIb#?l5j_&W_tXeTVTQ=j{5@;?Baa1#~) diff --git a/modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_20_20_200_200.jpg b/modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_20_20_200_200.jpg deleted file mode 100644 index 2fe6633158942b2ecc0fded08a55b3d0857a1f99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6325 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 diff --git a/modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_20_20_70_70.jpg b/modules/contrib/doc/facerec/img/tutorial/gender_classification/arnie_20_20_70_70.jpg deleted file mode 100644 index d8464ea620df95518e447741ae176bd1b687cf42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1813 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 Lth+h%Z~A`#@W#D5 diff --git a/modules/contrib/doc/facerec/img/tutorial/gender_classification/clooney_set.png b/modules/contrib/doc/facerec/img/tutorial/gender_classification/clooney_set.png deleted file mode 100644 index f05e447b52bf8b6501bac6056deb263564e31c25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93647 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

T7YGuP`_r1&sK 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 HPS5@i?F9N2 diff --git a/modules/contrib/doc/facerec/img/tutorial/gender_classification/fisherface_0.png b/modules/contrib/doc/facerec/img/tutorial/gender_classification/fisherface_0.png deleted file mode 100644 index 672a1972adc675154af1e1436d165124e3160e2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36841 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 diff --git a/modules/contrib/doc/facerec/img/tutorial/gender_classification/fisherface_reconstruction_0.png b/modules/contrib/doc/facerec/img/tutorial/gender_classification/fisherface_reconstruction_0.png deleted file mode 100644 index 168acadc017cdf0b22698657a01e5346a4b05953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10518 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 diff --git a/modules/contrib/doc/facerec/img/tutorial/gender_classification/mean.png b/modules/contrib/doc/facerec/img/tutorial/gender_classification/mean.png deleted file mode 100644 index f853694274c496156f6d24692589c5e36892a6c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10188 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 lqqvudl1s-5OJA(5CmR)Q3Lc57{rWY%pgqC` in detail and it will give you a lot of help to get started (full source code examples). :doc:`Face Recognition with OpenCV ` is the definite guide to the new :ocv:class:`FaceRecognizer`. There's also a :doc:`tutorial on gender classification `, a :doc:`tutorial for face recognition in videos ` and it's shown :doc:`how to load & save your results `. - -These documents are the help I have wished for, when I was working myself into face recognition. I hope you also think the new :ocv:class:`FaceRecognizer` is a useful addition to OpenCV. - -Please issue any feature requests and/or bugs on the official OpenCV bug tracker at: - - * http://code.opencv.org/projects/opencv/issues - -Contents -======== - - -.. toctree:: - :maxdepth: 1 - - FaceRecognizer API - Guide to Face Recognition with OpenCV - Tutorial on Gender Classification - Tutorial on Face Recognition in Videos - Tutorial On Saving & Loading a FaceRecognizer - How to use Colormaps in OpenCV - Changelog - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/modules/contrib/doc/facerec/src/CMakeLists.txt b/modules/contrib/doc/facerec/src/CMakeLists.txt deleted file mode 100644 index 94aa36f..0000000 --- a/modules/contrib/doc/facerec/src/CMakeLists.txt +++ /dev/null @@ -1,25 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) - -set(name "facerec") -project(facerec_cpp_samples) - -#SET(OpenCV_DIR /path/to/your/opencv/installation) - -# packages -find_package(OpenCV REQUIRED) # http://opencv.org - -# probably you should loop through the sample files here -add_executable(facerec_demo facerec_demo.cpp) -target_link_libraries(facerec_demo opencv_core opencv_contrib opencv_imgproc opencv_highgui) - -add_executable(facerec_video facerec_video.cpp) -target_link_libraries(facerec_video opencv_contrib opencv_core opencv_imgproc opencv_highgui opencv_objdetect opencv_imgproc) - -add_executable(facerec_eigenfaces facerec_eigenfaces.cpp) -target_link_libraries(facerec_eigenfaces opencv_contrib opencv_core opencv_imgproc opencv_highgui) - -add_executable(facerec_fisherfaces facerec_fisherfaces.cpp) -target_link_libraries(facerec_fisherfaces opencv_contrib opencv_core opencv_imgproc opencv_highgui) - -add_executable(facerec_lbph facerec_lbph.cpp) -target_link_libraries(facerec_lbph opencv_contrib opencv_core opencv_imgproc opencv_highgui) diff --git a/modules/contrib/doc/facerec/src/create_csv.py b/modules/contrib/doc/facerec/src/create_csv.py deleted file mode 100755 index c4de778..0000000 --- a/modules/contrib/doc/facerec/src/create_csv.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python - -import sys -import os.path - -# This is a tiny script to help you creating a CSV file from a face -# database with a similar hierarchie: -# -# philipp@mango:~/facerec/data/at$ tree -# . -# |-- README -# |-- s1 -# | |-- 1.pgm -# | |-- ... -# | |-- 10.pgm -# |-- s2 -# | |-- 1.pgm -# | |-- ... -# | |-- 10.pgm -# ... -# |-- s40 -# | |-- 1.pgm -# | |-- ... -# | |-- 10.pgm -# - -if __name__ == "__main__": - - if len(sys.argv) != 2: - print "usage: create_csv " - sys.exit(1) - - BASE_PATH=sys.argv[1] - SEPARATOR=";" - - label = 0 - for dirname, dirnames, filenames in os.walk(BASE_PATH): - for subdirname in dirnames: - subject_path = os.path.join(dirname, subdirname) - for filename in os.listdir(subject_path): - abs_path = "%s/%s" % (subject_path, filename) - print "%s%s%d" % (abs_path, SEPARATOR, label) - label = label + 1 diff --git a/modules/contrib/doc/facerec/src/crop_face.py b/modules/contrib/doc/facerec/src/crop_face.py deleted file mode 100755 index 11472a9..0000000 --- a/modules/contrib/doc/facerec/src/crop_face.py +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env python -# Software License Agreement (BSD License) -# -# Copyright (c) 2012, Philipp Wagner -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of the author nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -import sys, math, Image - -def Distance(p1,p2): - dx = p2[0] - p1[0] - dy = p2[1] - p1[1] - return math.sqrt(dx*dx+dy*dy) - -def ScaleRotateTranslate(image, angle, center = None, new_center = None, scale = None, resample=Image.BICUBIC): - if (scale is None) and (center is None): - return image.rotate(angle=angle, resample=resample) - nx,ny = x,y = center - sx=sy=1.0 - if new_center: - (nx,ny) = new_center - if scale: - (sx,sy) = (scale, scale) - cosine = math.cos(angle) - sine = math.sin(angle) - a = cosine/sx - b = sine/sx - c = x-nx*a-ny*b - d = -sine/sy - e = cosine/sy - f = y-nx*d-ny*e - return image.transform(image.size, Image.AFFINE, (a,b,c,d,e,f), resample=resample) - -def CropFace(image, eye_left=(0,0), eye_right=(0,0), offset_pct=(0.2,0.2), dest_sz = (70,70)): - # calculate offsets in original image - offset_h = math.floor(float(offset_pct[0])*dest_sz[0]) - offset_v = math.floor(float(offset_pct[1])*dest_sz[1]) - # get the direction - eye_direction = (eye_right[0] - eye_left[0], eye_right[1] - eye_left[1]) - # calc rotation angle in radians - rotation = -math.atan2(float(eye_direction[1]),float(eye_direction[0])) - # distance between them - dist = Distance(eye_left, eye_right) - # calculate the reference eye-width - reference = dest_sz[0] - 2.0*offset_h - # scale factor - scale = float(dist)/float(reference) - # rotate original around the left eye - image = ScaleRotateTranslate(image, center=eye_left, angle=rotation) - # crop the rotated image - crop_xy = (eye_left[0] - scale*offset_h, eye_left[1] - scale*offset_v) - crop_size = (dest_sz[0]*scale, dest_sz[1]*scale) - image = image.crop((int(crop_xy[0]), int(crop_xy[1]), int(crop_xy[0]+crop_size[0]), int(crop_xy[1]+crop_size[1]))) - # resize it - image = image.resize(dest_sz, Image.ANTIALIAS) - return image - -def readFileNames(): - try: - inFile = open('path_to_created_csv_file.csv') - except: - raise IOError('There is no file named path_to_created_csv_file.csv in current directory.') - return False - - picPath = [] - picIndex = [] - - for line in inFile.readlines(): - if line != '': - fields = line.rstrip().split(';') - picPath.append(fields[0]) - picIndex.append(int(fields[1])) - - return (picPath, picIndex) - - -if __name__ == "__main__": - [images, indexes]=readFileNames() -if not os.path.exists("modified"): - os.makedirs("modified") -for img in images: - image = Image.open(img) - CropFace(image, eye_left=(252,364), eye_right=(420,366), offset_pct=(0.1,0.1), dest_sz=(200,200)).save("modified/"+img.rstrip().split('/')[1]+"_10_10_200_200.jpg") - CropFace(image, eye_left=(252,364), eye_right=(420,366), offset_pct=(0.2,0.2), dest_sz=(200,200)).save("modified/"+img.rstrip().split('/')[1]+"_20_20_200_200.jpg") - CropFace(image, eye_left=(252,364), eye_right=(420,366), offset_pct=(0.3,0.3), dest_sz=(200,200)).save("modified/"+img.rstrip().split('/')[1]+"_30_30_200_200.jpg") - CropFace(image, eye_left=(252,364), eye_right=(420,366), offset_pct=(0.2,0.2)).save("modified/"+img.rstrip().split('/')[1]+"_20_20_70_70.jpg") diff --git a/modules/contrib/doc/facerec/src/facerec_demo.cpp b/modules/contrib/doc/facerec/src/facerec_demo.cpp deleted file mode 100644 index e3d82b6..0000000 --- a/modules/contrib/doc/facerec/src/facerec_demo.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright (c) 2011. Philipp Wagner . - * Released to public domain under terms of the BSD Simplified license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the organization nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * See - */ - -#include "opencv2/core.hpp" -#include "opencv2/contrib.hpp" -#include "opencv2/highgui.hpp" - - -#include -#include -#include - -using namespace cv; -using namespace std; - -static Mat norm_0_255(InputArray _src) { - Mat src = _src.getMat(); - // Create and return normalized image: - Mat dst; - switch(src.channels()) { - case 1: - cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC1); - break; - case 3: - cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC3); - break; - default: - src.copyTo(dst); - break; - } - return dst; -} - -static void read_csv(const string& filename, vector& images, vector& labels, char separator = ';') { - std::ifstream file(filename.c_str(), ifstream::in); - if (!file) { - string error_message = "No valid input file was given, please check the given filename."; - CV_Error(CV_StsBadArg, error_message); - } - string line, path, classlabel; - while (getline(file, line)) { - stringstream liness(line); - getline(liness, path, separator); - getline(liness, classlabel); - if(!path.empty() && !classlabel.empty()) { - images.push_back(imread(path, 0)); - labels.push_back(atoi(classlabel.c_str())); - } - } -} - -int main(int argc, const char *argv[]) { - // Check for valid command line arguments, print usage - // if no arguments were given. - if (argc != 2) { - cout << "usage: " << argv[0] << " " << endl; - exit(1); - } - // Get the path to your CSV. - string fn_csv = string(argv[1]); - // These vectors hold the images and corresponding labels. - vector images; - vector labels; - // Read in the data. This can fail if no valid - // input filename is given. - try { - read_csv(fn_csv, images, labels); - } catch (cv::Exception& e) { - cerr << "Error opening file \"" << fn_csv << "\". Reason: " << e.msg << endl; - // nothing more we can do - exit(1); - } - // Quit if there are not enough images for this demo. - if(images.size() <= 1) { - string error_message = "This demo needs at least 2 images to work. Please add more images to your data set!"; - CV_Error(CV_StsError, error_message); - } - // Get the height from the first image. We'll need this - // later in code to reshape the images to their original - // size: - int height = images[0].rows; - // The following lines simply get the last images from - // your dataset and remove it from the vector. This is - // done, so that the training data (which we learn the - // cv::FaceRecognizer on) and the test data we test - // the model with, do not overlap. - Mat testSample = images[images.size() - 1]; - int testLabel = labels[labels.size() - 1]; - images.pop_back(); - labels.pop_back(); - // The following lines create an Eigenfaces model for - // face recognition and train it with the images and - // labels read from the given CSV file. - // This here is a full PCA, if you just want to keep - // 10 principal components (read Eigenfaces), then call - // the factory method like this: - // - // cv::createEigenFaceRecognizer(10); - // - // If you want to create a FaceRecognizer with a - // confidennce threshold, call it with: - // - // cv::createEigenFaceRecognizer(10, 123.0); - // - Ptr model = createFisherFaceRecognizer(); - model->train(images, labels); - // The following line predicts the label of a given - // test image: - int predictedLabel = model->predict(testSample); - // - // To get the confidence of a prediction call the model with: - // - // int predictedLabel = -1; - // double confidence = 0.0; - // model->predict(testSample, predictedLabel, confidence); - // - string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel); - cout << result_message << endl; - // Sometimes you'll need to get/set internal model data, - // which isn't exposed by the public cv::FaceRecognizer. - // Since each cv::FaceRecognizer is derived from a - // cv::Algorithm, you can query the data. - // - // First we'll use it to set the threshold of the FaceRecognizer - // to 0.0 without retraining the model. This can be useful if - // you are evaluating the model: - // - model->set("threshold", 0.0); - // Now the threshold of this model is set to 0.0. A prediction - // now returns -1, as it's impossible to have a distance below - // it - predictedLabel = model->predict(testSample); - cout << "Predicted class = " << predictedLabel << endl; - // Here is how to get the eigenvalues of this Eigenfaces model: - Mat eigenvalues = model->getMat("eigenvalues"); - // And we can do the same to display the Eigenvectors (read Eigenfaces): - Mat W = model->getMat("eigenvectors"); - // From this we will display the (at most) first 10 Eigenfaces: - for (int i = 0; i < min(10, W.cols); i++) { - string msg = format("Eigenvalue #%d = %.5f", i, eigenvalues.at(i)); - cout << msg << endl; - // get eigenvector #i - Mat ev = W.col(i).clone(); - // Reshape to original size & normalize to [0...255] for imshow. - Mat grayscale = norm_0_255(ev.reshape(1, height)); - // Show the image & apply a Jet colormap for better sensing. - Mat cgrayscale; - applyColorMap(grayscale, cgrayscale, COLORMAP_JET); - imshow(format("%d", i), cgrayscale); - } - waitKey(0); - - return 0; -} diff --git a/modules/contrib/doc/facerec/src/facerec_eigenfaces.cpp b/modules/contrib/doc/facerec/src/facerec_eigenfaces.cpp deleted file mode 100644 index 8115467..0000000 --- a/modules/contrib/doc/facerec/src/facerec_eigenfaces.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2011. Philipp Wagner . - * Released to public domain under terms of the BSD Simplified license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the organization nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * See - */ - -#include "opencv2/core.hpp" -#include "opencv2/contrib.hpp" -#include "opencv2/highgui.hpp" - -#include -#include -#include - -using namespace cv; -using namespace std; - -static Mat norm_0_255(InputArray _src) { - Mat src = _src.getMat(); - // Create and return normalized image: - Mat dst; - switch(src.channels()) { - case 1: - cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC1); - break; - case 3: - cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC3); - break; - default: - src.copyTo(dst); - break; - } - return dst; -} - -static void read_csv(const string& filename, vector& images, vector& labels, char separator = ';') { - std::ifstream file(filename.c_str(), ifstream::in); - if (!file) { - string error_message = "No valid input file was given, please check the given filename."; - CV_Error(CV_StsBadArg, error_message); - } - string line, path, classlabel; - while (getline(file, line)) { - stringstream liness(line); - getline(liness, path, separator); - getline(liness, classlabel); - if(!path.empty() && !classlabel.empty()) { - images.push_back(imread(path, 0)); - labels.push_back(atoi(classlabel.c_str())); - } - } -} - -int main(int argc, const char *argv[]) { - // Check for valid command line arguments, print usage - // if no arguments were given. - if (argc < 2) { - cout << "usage: " << argv[0] << " " << endl; - exit(1); - } - string output_folder = "."; - if (argc == 3) { - output_folder = string(argv[2]); - } - // Get the path to your CSV. - string fn_csv = string(argv[1]); - // These vectors hold the images and corresponding labels. - vector images; - vector labels; - // Read in the data. This can fail if no valid - // input filename is given. - try { - read_csv(fn_csv, images, labels); - } catch (cv::Exception& e) { - cerr << "Error opening file \"" << fn_csv << "\". Reason: " << e.msg << endl; - // nothing more we can do - exit(1); - } - // Quit if there are not enough images for this demo. - if(images.size() <= 1) { - string error_message = "This demo needs at least 2 images to work. Please add more images to your data set!"; - CV_Error(CV_StsError, error_message); - } - // Get the height from the first image. We'll need this - // later in code to reshape the images to their original - // size: - int height = images[0].rows; - // The following lines simply get the last images from - // your dataset and remove it from the vector. This is - // done, so that the training data (which we learn the - // cv::FaceRecognizer on) and the test data we test - // the model with, do not overlap. - Mat testSample = images[images.size() - 1]; - int testLabel = labels[labels.size() - 1]; - images.pop_back(); - labels.pop_back(); - // The following lines create an Eigenfaces model for - // face recognition and train it with the images and - // labels read from the given CSV file. - // This here is a full PCA, if you just want to keep - // 10 principal components (read Eigenfaces), then call - // the factory method like this: - // - // cv::createEigenFaceRecognizer(10); - // - // If you want to create a FaceRecognizer with a - // confidence threshold (e.g. 123.0), call it with: - // - // cv::createEigenFaceRecognizer(10, 123.0); - // - // If you want to use _all_ Eigenfaces and have a threshold, - // then call the method like this: - // - // cv::createEigenFaceRecognizer(0, 123.0); - // - Ptr model = createEigenFaceRecognizer(); - model->train(images, labels); - // The following line predicts the label of a given - // test image: - int predictedLabel = model->predict(testSample); - // - // To get the confidence of a prediction call the model with: - // - // int predictedLabel = -1; - // double confidence = 0.0; - // model->predict(testSample, predictedLabel, confidence); - // - string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel); - cout << result_message << endl; - // Here is how to get the eigenvalues of this Eigenfaces model: - Mat eigenvalues = model->getMat("eigenvalues"); - // And we can do the same to display the Eigenvectors (read Eigenfaces): - Mat W = model->getMat("eigenvectors"); - // Get the sample mean from the training data - Mat mean = model->getMat("mean"); - // Display or save: - if(argc == 2) { - imshow("mean", norm_0_255(mean.reshape(1, images[0].rows))); - } else { - imwrite(format("%s/mean.png", output_folder.c_str()), norm_0_255(mean.reshape(1, images[0].rows))); - } - // Display or save the Eigenfaces: - for (int i = 0; i < min(10, W.cols); i++) { - string msg = format("Eigenvalue #%d = %.5f", i, eigenvalues.at(i)); - cout << msg << endl; - // get eigenvector #i - Mat ev = W.col(i).clone(); - // Reshape to original size & normalize to [0...255] for imshow. - Mat grayscale = norm_0_255(ev.reshape(1, height)); - // Show the image & apply a Jet colormap for better sensing. - Mat cgrayscale; - applyColorMap(grayscale, cgrayscale, COLORMAP_JET); - // Display or save: - if(argc == 2) { - imshow(format("eigenface_%d", i), cgrayscale); - } else { - imwrite(format("%s/eigenface_%d.png", output_folder.c_str(), i), norm_0_255(cgrayscale)); - } - } - - // Display or save the image reconstruction at some predefined steps: - for(int num_components = min(W.cols, 10); num_components < min(W.cols, 300); num_components+=15) { - // slice the eigenvectors from the model - Mat evs = Mat(W, Range::all(), Range(0, num_components)); - Mat projection = subspaceProject(evs, mean, images[0].reshape(1,1)); - Mat reconstruction = subspaceReconstruct(evs, mean, projection); - // Normalize the result: - reconstruction = norm_0_255(reconstruction.reshape(1, images[0].rows)); - // Display or save: - if(argc == 2) { - imshow(format("eigenface_reconstruction_%d", num_components), reconstruction); - } else { - imwrite(format("%s/eigenface_reconstruction_%d.png", output_folder.c_str(), num_components), reconstruction); - } - } - // Display if we are not writing to an output folder: - if(argc == 2) { - waitKey(0); - } - return 0; -} diff --git a/modules/contrib/doc/facerec/src/facerec_fisherfaces.cpp b/modules/contrib/doc/facerec/src/facerec_fisherfaces.cpp deleted file mode 100644 index 0b20789..0000000 --- a/modules/contrib/doc/facerec/src/facerec_fisherfaces.cpp +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright (c) 2011. Philipp Wagner . - * Released to public domain under terms of the BSD Simplified license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the organization nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * See - */ - -#include "opencv2/core.hpp" -#include "opencv2/contrib.hpp" -#include "opencv2/highgui.hpp" - -#include -#include -#include - -using namespace cv; -using namespace std; - -static Mat norm_0_255(InputArray _src) { - Mat src = _src.getMat(); - // Create and return normalized image: - Mat dst; - switch(src.channels()) { - case 1: - cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC1); - break; - case 3: - cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC3); - break; - default: - src.copyTo(dst); - break; - } - return dst; -} - -static void read_csv(const string& filename, vector& images, vector& labels, char separator = ';') { - std::ifstream file(filename.c_str(), ifstream::in); - if (!file) { - string error_message = "No valid input file was given, please check the given filename."; - CV_Error(CV_StsBadArg, error_message); - } - string line, path, classlabel; - while (getline(file, line)) { - stringstream liness(line); - getline(liness, path, separator); - getline(liness, classlabel); - if(!path.empty() && !classlabel.empty()) { - images.push_back(imread(path, 0)); - labels.push_back(atoi(classlabel.c_str())); - } - } -} - -int main(int argc, const char *argv[]) { - // Check for valid command line arguments, print usage - // if no arguments were given. - if (argc < 2) { - cout << "usage: " << argv[0] << " " << endl; - exit(1); - } - string output_folder = "."; - if (argc == 3) { - output_folder = string(argv[2]); - } - // Get the path to your CSV. - string fn_csv = string(argv[1]); - // These vectors hold the images and corresponding labels. - vector images; - vector labels; - // Read in the data. This can fail if no valid - // input filename is given. - try { - read_csv(fn_csv, images, labels); - } catch (cv::Exception& e) { - cerr << "Error opening file \"" << fn_csv << "\". Reason: " << e.msg << endl; - // nothing more we can do - exit(1); - } - // Quit if there are not enough images for this demo. - if(images.size() <= 1) { - string error_message = "This demo needs at least 2 images to work. Please add more images to your data set!"; - CV_Error(CV_StsError, error_message); - } - // Get the height from the first image. We'll need this - // later in code to reshape the images to their original - // size: - int height = images[0].rows; - // The following lines simply get the last images from - // your dataset and remove it from the vector. This is - // done, so that the training data (which we learn the - // cv::FaceRecognizer on) and the test data we test - // the model with, do not overlap. - Mat testSample = images[images.size() - 1]; - int testLabel = labels[labels.size() - 1]; - images.pop_back(); - labels.pop_back(); - // The following lines create an Fisherfaces model for - // face recognition and train it with the images and - // labels read from the given CSV file. - // If you just want to keep 10 Fisherfaces, then call - // the factory method like this: - // - // cv::createFisherFaceRecognizer(10); - // - // However it is not useful to discard Fisherfaces! Please - // always try to use _all_ available Fisherfaces for - // classification. - // - // If you want to create a FaceRecognizer with a - // confidence threshold (e.g. 123.0) and use _all_ - // Fisherfaces, then call it with: - // - // cv::createFisherFaceRecognizer(0, 123.0); - // - Ptr model = createFisherFaceRecognizer(); - model->train(images, labels); - // The following line predicts the label of a given - // test image: - int predictedLabel = model->predict(testSample); - // - // To get the confidence of a prediction call the model with: - // - // int predictedLabel = -1; - // double confidence = 0.0; - // model->predict(testSample, predictedLabel, confidence); - // - string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel); - cout << result_message << endl; - // Here is how to get the eigenvalues of this Eigenfaces model: - Mat eigenvalues = model->getMat("eigenvalues"); - // And we can do the same to display the Eigenvectors (read Eigenfaces): - Mat W = model->getMat("eigenvectors"); - // Get the sample mean from the training data - Mat mean = model->getMat("mean"); - // Display or save: - if(argc == 2) { - imshow("mean", norm_0_255(mean.reshape(1, images[0].rows))); - } else { - imwrite(format("%s/mean.png", output_folder.c_str()), norm_0_255(mean.reshape(1, images[0].rows))); - } - // Display or save the first, at most 16 Fisherfaces: - for (int i = 0; i < min(16, W.cols); i++) { - string msg = format("Eigenvalue #%d = %.5f", i, eigenvalues.at(i)); - cout << msg << endl; - // get eigenvector #i - Mat ev = W.col(i).clone(); - // Reshape to original size & normalize to [0...255] for imshow. - Mat grayscale = norm_0_255(ev.reshape(1, height)); - // Show the image & apply a Bone colormap for better sensing. - Mat cgrayscale; - applyColorMap(grayscale, cgrayscale, COLORMAP_BONE); - // Display or save: - if(argc == 2) { - imshow(format("fisherface_%d", i), cgrayscale); - } else { - imwrite(format("%s/fisherface_%d.png", output_folder.c_str(), i), norm_0_255(cgrayscale)); - } - } - // Display or save the image reconstruction at some predefined steps: - for(int num_component = 0; num_component < min(16, W.cols); num_component++) { - // Slice the Fisherface from the model: - Mat ev = W.col(num_component); - Mat projection = subspaceProject(ev, mean, images[0].reshape(1,1)); - Mat reconstruction = subspaceReconstruct(ev, mean, projection); - // Normalize the result: - reconstruction = norm_0_255(reconstruction.reshape(1, images[0].rows)); - // Display or save: - if(argc == 2) { - imshow(format("fisherface_reconstruction_%d", num_component), reconstruction); - } else { - imwrite(format("%s/fisherface_reconstruction_%d.png", output_folder.c_str(), num_component), reconstruction); - } - } - // Display if we are not writing to an output folder: - if(argc == 2) { - waitKey(0); - } - return 0; -} diff --git a/modules/contrib/doc/facerec/src/facerec_lbph.cpp b/modules/contrib/doc/facerec/src/facerec_lbph.cpp deleted file mode 100644 index 1477777..0000000 --- a/modules/contrib/doc/facerec/src/facerec_lbph.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2011. Philipp Wagner . - * Released to public domain under terms of the BSD Simplified license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the organization nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * See - */ - -#include "opencv2/core.hpp" -#include "opencv2/contrib.hpp" -#include "opencv2/highgui.hpp" - -#include -#include -#include - -using namespace cv; -using namespace std; - -static void read_csv(const string& filename, vector& images, vector& labels, char separator = ';') { - std::ifstream file(filename.c_str(), ifstream::in); - if (!file) { - string error_message = "No valid input file was given, please check the given filename."; - CV_Error(CV_StsBadArg, error_message); - } - string line, path, classlabel; - while (getline(file, line)) { - stringstream liness(line); - getline(liness, path, separator); - getline(liness, classlabel); - if(!path.empty() && !classlabel.empty()) { - images.push_back(imread(path, 0)); - labels.push_back(atoi(classlabel.c_str())); - } - } -} - -int main(int argc, const char *argv[]) { - // Check for valid command line arguments, print usage - // if no arguments were given. - if (argc != 2) { - cout << "usage: " << argv[0] << " " << endl; - exit(1); - } - // Get the path to your CSV. - string fn_csv = string(argv[1]); - // These vectors hold the images and corresponding labels. - vector images; - vector labels; - // Read in the data. This can fail if no valid - // input filename is given. - try { - read_csv(fn_csv, images, labels); - } catch (cv::Exception& e) { - cerr << "Error opening file \"" << fn_csv << "\". Reason: " << e.msg << endl; - // nothing more we can do - exit(1); - } - // Quit if there are not enough images for this demo. - if(images.size() <= 1) { - string error_message = "This demo needs at least 2 images to work. Please add more images to your data set!"; - CV_Error(CV_StsError, error_message); - } - // Get the height from the first image. We'll need this - // later in code to reshape the images to their original - // size: - int height = images[0].rows; - // The following lines simply get the last images from - // your dataset and remove it from the vector. This is - // done, so that the training data (which we learn the - // cv::FaceRecognizer on) and the test data we test - // the model with, do not overlap. - Mat testSample = images[images.size() - 1]; - int testLabel = labels[labels.size() - 1]; - images.pop_back(); - labels.pop_back(); - // The following lines create an LBPH model for - // face recognition and train it with the images and - // labels read from the given CSV file. - // - // The LBPHFaceRecognizer uses Extended Local Binary Patterns - // (it's probably configurable with other operators at a later - // point), and has the following default values - // - // radius = 1 - // neighbors = 8 - // grid_x = 8 - // grid_y = 8 - // - // So if you want a LBPH FaceRecognizer using a radius of - // 2 and 16 neighbors, call the factory method with: - // - // cv::createLBPHFaceRecognizer(2, 16); - // - // And if you want a threshold (e.g. 123.0) call it with its default values: - // - // cv::createLBPHFaceRecognizer(1,8,8,8,123.0) - // - Ptr model = createLBPHFaceRecognizer(); - model->train(images, labels); - // The following line predicts the label of a given - // test image: - int predictedLabel = model->predict(testSample); - // - // To get the confidence of a prediction call the model with: - // - // int predictedLabel = -1; - // double confidence = 0.0; - // model->predict(testSample, predictedLabel, confidence); - // - string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel); - cout << result_message << endl; - // Sometimes you'll need to get/set internal model data, - // which isn't exposed by the public cv::FaceRecognizer. - // Since each cv::FaceRecognizer is derived from a - // cv::Algorithm, you can query the data. - // - // First we'll use it to set the threshold of the FaceRecognizer - // to 0.0 without retraining the model. This can be useful if - // you are evaluating the model: - // - model->set("threshold", 0.0); - // Now the threshold of this model is set to 0.0. A prediction - // now returns -1, as it's impossible to have a distance below - // it - predictedLabel = model->predict(testSample); - cout << "Predicted class = " << predictedLabel << endl; - // Show some informations about the model, as there's no cool - // Model data to display as in Eigenfaces/Fisherfaces. - // Due to efficiency reasons the LBP images are not stored - // within the model: - cout << "Model Information:" << endl; - string model_info = format("\tLBPH(radius=%i, neighbors=%i, grid_x=%i, grid_y=%i, threshold=%.2f)", - model->getInt("radius"), - model->getInt("neighbors"), - model->getInt("grid_x"), - model->getInt("grid_y"), - model->getDouble("threshold")); - cout << model_info << endl; - // We could get the histograms for example: - vector histograms = model->getMatVector("histograms"); - // But should I really visualize it? Probably the length is interesting: - cout << "Size of the histograms: " << histograms[0].total() << endl; - return 0; -} diff --git a/modules/contrib/doc/facerec/src/facerec_save_load.cpp b/modules/contrib/doc/facerec/src/facerec_save_load.cpp deleted file mode 100644 index 4db2d66..0000000 --- a/modules/contrib/doc/facerec/src/facerec_save_load.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Copyright (c) 2011. Philipp Wagner . - * Released to public domain under terms of the BSD Simplified license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the organization nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * See - */ - -#include "opencv2/contrib.hpp" -#include "opencv2/core.hpp" -#include "opencv2/highgui.hpp" - -#include -#include -#include - -using namespace cv; -using namespace std; - -static Mat norm_0_255(InputArray _src) { - Mat src = _src.getMat(); - // Create and return normalized image: - Mat dst; - switch(src.channels()) { - case 1: - cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC1); - break; - case 3: - cv::normalize(_src, dst, 0, 255, NORM_MINMAX, CV_8UC3); - break; - default: - src.copyTo(dst); - break; - } - return dst; -} - -static void read_csv(const string& filename, vector& images, vector& labels, char separator = ';') { - std::ifstream file(filename.c_str(), ifstream::in); - if (!file) { - string error_message = "No valid input file was given, please check the given filename."; - CV_Error(CV_StsBadArg, error_message); - } - string line, path, classlabel; - while (getline(file, line)) { - stringstream liness(line); - getline(liness, path, separator); - getline(liness, classlabel); - if(!path.empty() && !classlabel.empty()) { - images.push_back(imread(path, 0)); - labels.push_back(atoi(classlabel.c_str())); - } - } -} - -int main(int argc, const char *argv[]) { - // Check for valid command line arguments, print usage - // if no arguments were given. - if (argc < 2) { - cout << "usage: " << argv[0] << " " << endl; - exit(1); - } - string output_folder = "."; - if (argc == 3) { - output_folder = string(argv[2]); - } - // Get the path to your CSV. - string fn_csv = string(argv[1]); - // These vectors hold the images and corresponding labels. - vector images; - vector labels; - // Read in the data. This can fail if no valid - // input filename is given. - try { - read_csv(fn_csv, images, labels); - } catch (cv::Exception& e) { - cerr << "Error opening file \"" << fn_csv << "\". Reason: " << e.msg << endl; - // nothing more we can do - exit(1); - } - // Quit if there are not enough images for this demo. - if(images.size() <= 1) { - string error_message = "This demo needs at least 2 images to work. Please add more images to your data set!"; - CV_Error(CV_StsError, error_message); - } - // Get the height from the first image. We'll need this - // later in code to reshape the images to their original - // size: - int height = images[0].rows; - // The following lines simply get the last images from - // your dataset and remove it from the vector. This is - // done, so that the training data (which we learn the - // cv::FaceRecognizer on) and the test data we test - // the model with, do not overlap. - Mat testSample = images[images.size() - 1]; - int testLabel = labels[labels.size() - 1]; - images.pop_back(); - labels.pop_back(); - // The following lines create an Eigenfaces model for - // face recognition and train it with the images and - // labels read from the given CSV file. - // This here is a full PCA, if you just want to keep - // 10 principal components (read Eigenfaces), then call - // the factory method like this: - // - // cv::createEigenFaceRecognizer(10); - // - // If you want to create a FaceRecognizer with a - // confidence threshold (e.g. 123.0), call it with: - // - // cv::createEigenFaceRecognizer(10, 123.0); - // - // If you want to use _all_ Eigenfaces and have a threshold, - // then call the method like this: - // - // cv::createEigenFaceRecognizer(0, 123.0); - // - Ptr model0 = createEigenFaceRecognizer(); - model0->train(images, labels); - // save the model to eigenfaces_at.yaml - model0->save("eigenfaces_at.yml"); - // - // - // Now create a new Eigenfaces Recognizer - // - Ptr model1 = createEigenFaceRecognizer(); - model1->load("eigenfaces_at.yml"); - // The following line predicts the label of a given - // test image: - int predictedLabel = model1->predict(testSample); - // - // To get the confidence of a prediction call the model with: - // - // int predictedLabel = -1; - // double confidence = 0.0; - // model->predict(testSample, predictedLabel, confidence); - // - string result_message = format("Predicted class = %d / Actual class = %d.", predictedLabel, testLabel); - cout << result_message << endl; - // Here is how to get the eigenvalues of this Eigenfaces model: - Mat eigenvalues = model1->getMat("eigenvalues"); - // And we can do the same to display the Eigenvectors (read Eigenfaces): - Mat W = model1->getMat("eigenvectors"); - // Get the sample mean from the training data - Mat mean = model1->getMat("mean"); - // Display or save: - if(argc == 2) { - imshow("mean", norm_0_255(mean.reshape(1, images[0].rows))); - } else { - imwrite(format("%s/mean.png", output_folder.c_str()), norm_0_255(mean.reshape(1, images[0].rows))); - } - // Display or save the Eigenfaces: - for (int i = 0; i < min(10, W.cols); i++) { - string msg = format("Eigenvalue #%d = %.5f", i, eigenvalues.at(i)); - cout << msg << endl; - // get eigenvector #i - Mat ev = W.col(i).clone(); - // Reshape to original size & normalize to [0...255] for imshow. - Mat grayscale = norm_0_255(ev.reshape(1, height)); - // Show the image & apply a Jet colormap for better sensing. - Mat cgrayscale; - applyColorMap(grayscale, cgrayscale, COLORMAP_JET); - // Display or save: - if(argc == 2) { - imshow(format("eigenface_%d", i), cgrayscale); - } else { - imwrite(format("%s/eigenface_%d.png", output_folder.c_str(), i), norm_0_255(cgrayscale)); - } - } - // Display or save the image reconstruction at some predefined steps: - for(int num_components = 10; num_components < 300; num_components+=15) { - // slice the eigenvectors from the model - Mat evs = Mat(W, Range::all(), Range(0, num_components)); - Mat projection = subspaceProject(evs, mean, images[0].reshape(1,1)); - Mat reconstruction = subspaceReconstruct(evs, mean, projection); - // Normalize the result: - reconstruction = norm_0_255(reconstruction.reshape(1, images[0].rows)); - // Display or save: - if(argc == 2) { - imshow(format("eigenface_reconstruction_%d", num_components), reconstruction); - } else { - imwrite(format("%s/eigenface_reconstruction_%d.png", output_folder.c_str(), num_components), reconstruction); - } - } - // Display if we are not writing to an output folder: - if(argc == 2) { - waitKey(0); - } - return 0; -} diff --git a/modules/contrib/doc/facerec/src/facerec_video.cpp b/modules/contrib/doc/facerec/src/facerec_video.cpp deleted file mode 100644 index c22e416..0000000 --- a/modules/contrib/doc/facerec/src/facerec_video.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 2011. Philipp Wagner . - * Released to public domain under terms of the BSD Simplified license. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the organization nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * See - */ - -#include "opencv2/core.hpp" -#include "opencv2/contrib.hpp" -#include "opencv2/highgui.hpp" -#include "opencv2/imgproc.hpp" -#include "opencv2/objdetect.hpp" - -#include -#include -#include - -using namespace cv; -using namespace std; - -static void read_csv(const string& filename, vector& images, vector& labels, char separator = ';') { - std::ifstream file(filename.c_str(), ifstream::in); - if (!file) { - string error_message = "No valid input file was given, please check the given filename."; - CV_Error(CV_StsBadArg, error_message); - } - string line, path, classlabel; - while (getline(file, line)) { - stringstream liness(line); - getline(liness, path, separator); - getline(liness, classlabel); - if(!path.empty() && !classlabel.empty()) { - images.push_back(imread(path, 0)); - labels.push_back(atoi(classlabel.c_str())); - } - } -} - -int main(int argc, const char *argv[]) { - // Check for valid command line arguments, print usage - // if no arguments were given. - if (argc != 4) { - cout << "usage: " << argv[0] << " " << endl; - cout << "\t -- Path to the Haar Cascade for face detection." << endl; - cout << "\t -- Path to the CSV file with the face database." << endl; - cout << "\t -- The webcam device id to grab frames from." << endl; - exit(1); - } - // Get the path to your CSV: - string fn_haar = string(argv[1]); - string fn_csv = string(argv[2]); - int deviceId = atoi(argv[3]); - // These vectors hold the images and corresponding labels: - vector images; - vector labels; - // Read in the data (fails if no valid input filename is given, but you'll get an error message): - try { - read_csv(fn_csv, images, labels); - } catch (cv::Exception& e) { - cerr << "Error opening file \"" << fn_csv << "\". Reason: " << e.msg << endl; - // nothing more we can do - exit(1); - } - // Get the height from the first image. We'll need this - // later in code to reshape the images to their original - // size AND we need to reshape incoming faces to this size: - int im_width = images[0].cols; - int im_height = images[0].rows; - // Create a FaceRecognizer and train it on the given images: - Ptr model = createFisherFaceRecognizer(); - model->train(images, labels); - // That's it for learning the Face Recognition model. You now - // need to create the classifier for the task of Face Detection. - // We are going to use the haar cascade you have specified in the - // command line arguments: - // - CascadeClassifier haar_cascade; - haar_cascade.load(fn_haar); - // Get a handle to the Video device: - VideoCapture cap(deviceId); - // Check if we can use this device at all: - if(!cap.isOpened()) { - cerr << "Capture Device ID " << deviceId << "cannot be opened." << endl; - return -1; - } - // Holds the current frame from the Video device: - Mat frame; - for(;;) { - cap >> frame; - // Clone the current frame: - Mat original = frame.clone(); - // Convert the current frame to grayscale: - Mat gray; - cvtColor(original, gray, CV_BGR2GRAY); - // Find the faces in the frame: - vector< Rect_ > faces; - haar_cascade.detectMultiScale(gray, faces); - // At this point you have the position of the faces in - // faces. Now we'll get the faces, make a prediction and - // annotate it in the video. Cool or what? - for(int i = 0; i < faces.size(); i++) { - // Process face by face: - Rect face_i = faces[i]; - // Crop the face from the image. So simple with OpenCV C++: - Mat face = gray(face_i); - // Resizing the face is necessary for Eigenfaces and Fisherfaces. You can easily - // verify this, by reading through the face recognition tutorial coming with OpenCV. - // Resizing IS NOT NEEDED for Local Binary Patterns Histograms, so preparing the - // input data really depends on the algorithm used. - // - // I strongly encourage you to play around with the algorithms. See which work best - // in your scenario, LBPH should always be a contender for robust face recognition. - // - // Since I am showing the Fisherfaces algorithm here, I also show how to resize the - // face you have just found: - Mat face_resized; - cv::resize(face, face_resized, Size(im_width, im_height), 1.0, 1.0, INTER_CUBIC); - // Now perform the prediction, see how easy that is: - int prediction = model->predict(face_resized); - // And finally write all we've found out to the original image! - // First of all draw a green rectangle around the detected face: - rectangle(original, face_i, CV_RGB(0, 255,0), 1); - // Create the text we will annotate the box with: - string box_text = format("Prediction = %d", prediction); - // Calculate the position for annotated text (make sure we don't - // put illegal values in there): - int pos_x = std::max(face_i.tl().x - 10, 0); - int pos_y = std::max(face_i.tl().y - 10, 0); - // And now put it into the image: - putText(original, box_text, Point(pos_x, pos_y), FONT_HERSHEY_PLAIN, 1.0, CV_RGB(0,255,0), 2.0); - } - // Show the result: - imshow("face_recognizer", original); - // And display it: - char key = (char) waitKey(20); - // Exit this loop on escape: - if(key == 27) - break; - } - return 0; -} diff --git a/modules/contrib/doc/facerec/tutorial/facerec_gender_classification.rst b/modules/contrib/doc/facerec/tutorial/facerec_gender_classification.rst deleted file mode 100644 index 95c8212..0000000 --- a/modules/contrib/doc/facerec/tutorial/facerec_gender_classification.rst +++ /dev/null @@ -1,233 +0,0 @@ -Gender Classification with OpenCV -================================= - -.. contents:: Table of Contents - :depth: 3 - -Introduction ------------- - -A lot of people interested in face recognition, also want to know how to perform image classification tasks like: - -* Gender Classification (Gender Detection) -* Emotion Classification (Emotion Detection) -* Glasses Classification (Glasses Detection) -* ... - -This is has become very, very easy with the new :ocv:class:`FaceRecognizer` class. In this tutorial I'll show you how to perform gender classification with OpenCV on a set of face images. You'll also learn how to align your images to enhance the recognition results. If you want to do emotion classification instead of gender classification, all you need to do is to update is your training data and the configuration you pass to the demo. - -Prerequisites --------------- - -For gender classification of faces, you'll need some images of male and female faces first. I've decided to search faces of celebrities using `Google Images `_ with the faces filter turned on (my god, they have great algorithms at `Google `_!). My database has 8 male and 5 female subjects, each with 10 images. Here are the names, if you don't know who to search: - -* Angelina Jolie -* Arnold Schwarzenegger -* Brad Pitt -* Emma Watson -* George Clooney -* Jennifer Lopez -* Johnny Depp -* Justin Timberlake -* Katy Perry -* Keanu Reeves -* Naomi Watts -* Patrick Stewart -* Tom Cruise - -Once you have acquired some images, you'll need to read them. In the demo application I have decided to read the images from a very simple CSV file. Why? Because it's the simplest platform-independent approach I can think of. However, if you know a simpler solution please ping me about it. Basically all the CSV file needs to contain are lines composed of a ``filename`` followed by a ``;`` followed by the ``label`` (as *integer number*), making up a line like this: - -.. code-block:: none - - /path/to/image.ext;0 - -Let's dissect the line. ``/path/to/image.ext`` is the path to an image, probably something like this if you are in Windows: ``C:/faces/person0/image0.jpg``. Then there is the separator ``;`` and finally we assign a label ``0`` to the image. Think of the label as the subject (the person, the gender or whatever comes to your mind). In the gender classification scenario, the label is the gender the person has. I'll give the label ``0`` to *male* persons and the label ``1`` is for *female* subjects. So my CSV file looks like this: - -.. code-block:: none - - /home/philipp/facerec/data/gender/male/keanu_reeves/keanu_reeves_01.jpg;0 - /home/philipp/facerec/data/gender/male/keanu_reeves/keanu_reeves_02.jpg;0 - /home/philipp/facerec/data/gender/male/keanu_reeves/keanu_reeves_03.jpg;0 - ... - /home/philipp/facerec/data/gender/female/katy_perry/katy_perry_01.jpg;1 - /home/philipp/facerec/data/gender/female/katy_perry/katy_perry_02.jpg;1 - /home/philipp/facerec/data/gender/female/katy_perry/katy_perry_03.jpg;1 - ... - /home/philipp/facerec/data/gender/male/brad_pitt/brad_pitt_01.jpg;0 - /home/philipp/facerec/data/gender/male/brad_pitt/brad_pitt_02.jpg;0 - /home/philipp/facerec/data/gender/male/brad_pitt/brad_pitt_03.jpg;0 - ... - /home/philipp/facerec/data/gender/female/emma_watson/emma_watson_08.jpg;1 - /home/philipp/facerec/data/gender/female/emma_watson/emma_watson_02.jpg;1 - /home/philipp/facerec/data/gender/female/emma_watson/emma_watson_03.jpg;1 - -All images for this example were chosen to have a frontal face perspective. They have been cropped, scaled and rotated to be aligned at the eyes, just like this set of George Clooney images: - -.. image:: ../img/tutorial/gender_classification/clooney_set.png - :align: center - -You really don't want to create the CSV file by hand. And you really don't want scale, rotate & translate the images manually. I have prepared you two Python scripts ``create_csv.py`` and ``crop_face.py``, you can find them in the ``src`` folder coming with this documentation. You'll see how to use them in the :ref:`appendixfgc`. - -Fisherfaces for Gender Classification --------------------------------------- - -If you want to decide whether a person is *male* or *female*, you have to learn the discriminative features of both classes. The Eigenfaces method is based on the Principal Component Analysis, which is an unsupervised statistical model and not suitable for this task. Please see the Face Recognition tutorial for insights into the algorithms. The Fisherfaces instead yields a class-specific linear projection, so it is much better suited for the gender classification task. `http://www.bytefish.de/blog/gender_classification `_ shows the recognition rate of the Fisherfaces method for gender classification. - -The Fisherfaces method achieves a 98% recognition rate in a subject-independent cross-validation. A subject-independent cross-validation means *images of the person under test are never used for learning the model*. And could you believe it: you can simply use the facerec_fisherfaces demo, that's inlcuded in OpenCV. - -Fisherfaces in OpenCV ---------------------- - -The source code for this demo application is also available in the ``src`` folder coming with this documentation: - -* :download:`src/facerec_fisherfaces.cpp <../src/facerec_fisherfaces.cpp>` - -.. literalinclude:: ../src/facerec_fisherfaces.cpp - :language: cpp - :linenos: - -Running the Demo ----------------- - -If you are in Windows, then simply start the demo by running (from command line): - -.. code-block:: none - - facerec_fisherfaces.exe C:/path/to/your/csv.ext - -If you are in Linux, then simply start the demo by running: - -.. code-block:: none - - ./facerec_fisherfaces /path/to/your/csv.ext - -If you don't want to display the images, but save them, then pass the desired path to the demo. It works like this in Windows: - -.. code-block:: none - - facerec_fisherfaces.exe C:/path/to/your/csv.ext C:/path/to/store/results/at - -And in Linux: - -.. code-block:: none - - ./facerec_fisherfaces /path/to/your/csv.ext /path/to/store/results/at - -Results -------- - -If you run the program with your CSV file as parameter, you'll see the Fisherface that separates between male and female images. I've decided to apply a Jet colormap in this demo, so you can see which features the method identifies: - -.. image:: ../img/tutorial/gender_classification/fisherface_0.png - -The demo also shows the average face of the male and female training images you have passed: - -.. image:: ../img/tutorial/gender_classification/mean.png - -Moreover it the demo should yield the prediction for the correct gender: - -.. code-block:: none - - Predicted class = 1 / Actual class = 1. - -And for advanced users I have also shown the Eigenvalue for the Fisherface: - -.. code-block:: none - - Eigenvalue #0 = 152.49493 - -And the Fisherfaces reconstruction: - -.. image:: ../img/tutorial/gender_classification/fisherface_reconstruction_0.png - -I hope this gives you an idea how to approach gender classification and the other image classification tasks. - -.. _appendixfgc: - -Appendix --------- - -Creating the CSV File -+++++++++++++++++++++ - -You don't really want to create the CSV file by hand. I have prepared you a little Python script ``create_csv.py`` (you find it at ``/src/create_csv.py`` coming with this tutorial) that automatically creates you a CSV file. If you have your images in hierarchie like this (``/basepath//``): - -.. code-block:: none - - philipp@mango:~/facerec/data/at$ tree - . - |-- s1 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - |-- s2 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - ... - |-- s40 - | |-- 1.pgm - | |-- ... - | |-- 10.pgm - - -Then simply call ``create_csv.py`` with the path to the folder, just like this and you could save the output: - -.. code-block:: none - - philipp@mango:~/facerec/data$ python create_csv.py - at/s13/2.pgm;0 - at/s13/7.pgm;0 - at/s13/6.pgm;0 - at/s13/9.pgm;0 - at/s13/5.pgm;0 - at/s13/3.pgm;0 - at/s13/4.pgm;0 - at/s13/10.pgm;0 - at/s13/8.pgm;0 - at/s13/1.pgm;0 - at/s17/2.pgm;1 - at/s17/7.pgm;1 - at/s17/6.pgm;1 - at/s17/9.pgm;1 - at/s17/5.pgm;1 - at/s17/3.pgm;1 - [...] - -Here is the script, if you can't find it: - -.. literalinclude:: ../src/create_csv.py - :language: python - :linenos: - -Aligning Face Images -++++++++++++++++++++ - -An accurate alignment of your image data is especially important in tasks like emotion detection, were you need as much detail as possible. Believe me... You don't want to do this by hand. So I've prepared you a tiny Python script. The code is really easy to use. To scale, rotate and crop the face image you just need to call *CropFace(image, eye_left, eye_right, offset_pct, dest_sz)*, where: - -* *eye_left* is the position of the left eye -* *eye_right* is the position of the right eye -* *offset_pct* is the percent of the image you want to keep next to the eyes (horizontal, vertical direction) -* *dest_sz* is the size of the output image - -If you are using the same *offset_pct* and *dest_sz* for your images, they are all aligned at the eyes. - -.. literalinclude:: ../src/crop_face.py - :language: python - :linenos: - -Imagine we are given `this photo of Arnold Schwarzenegger `_, which is under a Public Domain license. The (x,y)-position of the eyes is approximately *(252,364)* for the left and *(420,366)* for the right eye. Now you only need to define the horizontal offset, vertical offset and the size your scaled, rotated & cropped face should have. - -Here are some examples: - -+---------------------------------+----------------------------------------------------------------------------+ -| Configuration | Cropped, Scaled, Rotated Face | -+=================================+============================================================================+ -| 0.1 (10%), 0.1 (10%), (200,200) | .. image:: ../img/tutorial/gender_classification/arnie_10_10_200_200.jpg | -+---------------------------------+----------------------------------------------------------------------------+ -| 0.2 (20%), 0.2 (20%), (200,200) | .. image:: ../img/tutorial/gender_classification/arnie_20_20_200_200.jpg | -+---------------------------------+----------------------------------------------------------------------------+ -| 0.3 (30%), 0.3 (30%), (200,200) | .. image:: ../img/tutorial/gender_classification/arnie_30_30_200_200.jpg | -+---------------------------------+----------------------------------------------------------------------------+ -| 0.2 (20%), 0.2 (20%), (70,70) | .. image:: ../img/tutorial/gender_classification/arnie_20_20_70_70.jpg | -+---------------------------------+----------------------------------------------------------------------------+ diff --git a/modules/contrib/doc/facerec/tutorial/facerec_save_load.rst b/modules/contrib/doc/facerec/tutorial/facerec_save_load.rst deleted file mode 100644 index 2d0b65d..0000000 --- a/modules/contrib/doc/facerec/tutorial/facerec_save_load.rst +++ /dev/null @@ -1,46 +0,0 @@ -Saving and Loading a FaceRecognizer -=================================== - -Introduction ------------- - -Saving and loading a :ocv:class:`FaceRecognizer` is very important. Training a FaceRecognizer can be a very time-intense task, plus it's often impossible to ship the whole face database to the user of your product. The task of saving and loading a FaceRecognizer is easy with :ocv:class:`FaceRecognizer`. You only have to call :ocv:func:`FaceRecognizer::load` for loading and :ocv:func:`FaceRecognizer::save` for saving a :ocv:class:`FaceRecognizer`. - -I'll adapt the Eigenfaces example from the :doc:`../facerec_tutorial`: Imagine we want to learn the Eigenfaces of the `AT&T Facedatabase `_, store the model to a YAML file and then load it again. - -From the loaded model, we'll get a prediction, show the mean, Eigenfaces and the image reconstruction. - -Using FaceRecognizer::save and FaceRecognizer::load ------------------------------------------------------ - -The source code for this demo application is also available in the ``src`` folder coming with this documentation: - -* :download:`src/facerec_save_load.cpp <../src/facerec_save_load.cpp>` - -.. literalinclude:: ../src/facerec_save_load.cpp - :language: cpp - :linenos: - -Results -------- - -``eigenfaces_at.yml`` then contains the model state, we'll simply look at the first 10 lines with ``head eigenfaces_at.yml``: - -.. code-block:: none - - philipp@mango:~/github/libfacerec-build$ head eigenfaces_at.yml - %YAML:1.0 - num_components: 399 - mean: !!opencv-matrix - rows: 1 - cols: 10304 - dt: d - data: [ 8.5558897243107765e+01, 8.5511278195488714e+01, - 8.5854636591478695e+01, 8.5796992481203006e+01, - 8.5952380952380949e+01, 8.6162907268170414e+01, - 8.6082706766917283e+01, 8.5776942355889716e+01, - -And here is the Reconstruction, which is the same as the original: - -.. image:: ../img/eigenface_reconstruction_opencv.png - :align: center diff --git a/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.rst b/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.rst deleted file mode 100644 index 76e76ee..0000000 --- a/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.rst +++ /dev/null @@ -1,207 +0,0 @@ -Face Recognition in Videos with OpenCV -======================================= - -.. contents:: Table of Contents - :depth: 3 - -Introduction ------------- - -Whenever you hear the term *face recognition*, you instantly think of surveillance in videos. So performing face recognition in videos (e.g. webcam) is one of the most requested features I have got. I have heard your cries, so here it is. An application, that shows you how to do face recognition in videos! For the face detection part we'll use the awesome :ocv:class:`CascadeClassifier` and we'll use :ocv:class:`FaceRecognizer` for face recognition. This example uses the Fisherfaces method for face recognition, because it is robust against large changes in illumination. - -Here is what the final application looks like. As you can see I am only writing the id of the recognized person above the detected face (by the way this id is Arnold Schwarzenegger for my data set): - -.. image:: ../img/tutorial/facerec_video/facerec_video.png - :align: center - :scale: 70% - -This demo is a basis for your research and it shows you how to implement face recognition in videos. You probably want to extend the application and make it more sophisticated: You could combine the id with the name, then show the confidence of the prediction, recognize the emotion... and and and. But before you send mails, asking what these Haar-Cascade thing is or what a CSV is: Make sure you have read the entire tutorial. It's all explained in here. If you just want to scroll down to the code, please note: - -* The available Haar-Cascades for face detection are located in the ``data`` folder of your OpenCV installation! One of the available Haar-Cascades for face detection is for example ``/path/to/opencv/data/haarcascades/haarcascade_frontalface_default.xml``. - -I encourage you to experiment with the application. Play around with the available :ocv:class:`FaceRecognizer` implementations, try the available cascades in OpenCV and see if you can improve your results! - -Prerequisites --------------- - -You want to do face recognition, so you need some face images to learn a :ocv:class:`FaceRecognizer` on. I have decided to reuse the images from the gender classification example: :doc:`facerec_gender_classification`. - -I have the following celebrities in my training data set: - -* Angelina Jolie -* Arnold Schwarzenegger -* Brad Pitt -* George Clooney -* Johnny Depp -* Justin Timberlake -* Katy Perry -* Keanu Reeves -* Patrick Stewart -* Tom Cruise - -In the demo I have decided to read the images from a very simple CSV file. Why? Because it's the simplest platform-independent approach I can think of. However, if you know a simpler solution please ping me about it. Basically all the CSV file needs to contain are lines composed of a ``filename`` followed by a ``;`` followed by the ``label`` (as *integer number*), making up a line like this: - -.. code-block:: none - - /path/to/image.ext;0 - -Let's dissect the line. ``/path/to/image.ext`` is the path to an image, probably something like this if you are in Windows: ``C:/faces/person0/image0.jpg``. Then there is the separator ``;`` and finally we assign a label ``0`` to the image. Think of the label as the subject (the person, the gender or whatever comes to your mind). In the face recognition scenario, the label is the person this image belongs to. In the gender classification scenario, the label is the gender the person has. So my CSV file looks like this: - -.. code-block:: none - - /home/philipp/facerec/data/c/keanu_reeves/keanu_reeves_01.jpg;0 - /home/philipp/facerec/data/c/keanu_reeves/keanu_reeves_02.jpg;0 - /home/philipp/facerec/data/c/keanu_reeves/keanu_reeves_03.jpg;0 - ... - /home/philipp/facerec/data/c/katy_perry/katy_perry_01.jpg;1 - /home/philipp/facerec/data/c/katy_perry/katy_perry_02.jpg;1 - /home/philipp/facerec/data/c/katy_perry/katy_perry_03.jpg;1 - ... - /home/philipp/facerec/data/c/brad_pitt/brad_pitt_01.jpg;2 - /home/philipp/facerec/data/c/brad_pitt/brad_pitt_02.jpg;2 - /home/philipp/facerec/data/c/brad_pitt/brad_pitt_03.jpg;2 - ... - /home/philipp/facerec/data/c1/crop_arnold_schwarzenegger/crop_08.jpg;6 - /home/philipp/facerec/data/c1/crop_arnold_schwarzenegger/crop_05.jpg;6 - /home/philipp/facerec/data/c1/crop_arnold_schwarzenegger/crop_02.jpg;6 - /home/philipp/facerec/data/c1/crop_arnold_schwarzenegger/crop_03.jpg;6 - -All images for this example were chosen to have a frontal face perspective. They have been cropped, scaled and rotated to be aligned at the eyes, just like this set of George Clooney images: - -.. image:: ../img/tutorial/gender_classification/clooney_set.png - :align: center - -Face Recongition from Videos ------------------------------ - -The source code for the demo is available in the ``src`` folder coming with this documentation: - -* :download:`src/facerec_video.cpp <../src/facerec_video.cpp>` - -This demo uses the :ocv:class:`CascadeClassifier`: - -.. literalinclude:: ../src/facerec_video.cpp - :language: cpp - :linenos: - -Running the Demo ----------------- - -You'll need: - -* The path to a valid Haar-Cascade for detecting a face with a :ocv:class:`CascadeClassifier`. -* The path to a valid CSV File for learning a :ocv:class:`FaceRecognizer`. -* A webcam and its device id (you don't know the device id? Simply start from 0 on and see what happens). - -If you are in Windows, then simply start the demo by running (from command line): - -.. code-block:: none - - facerec_video.exe

2*k$z?PW}WWsQPs_@#E|! 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�exH#o;3E;STvRSsSUamNR2oUA0 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 FV1l++?#loG diff --git a/modules/contrib/doc/facerec/img/fisherfaces_opencv.png b/modules/contrib/doc/facerec/img/fisherfaces_opencv.png deleted file mode 100644 index 0b416501719bea2b450752f44c4449d2867028aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287827 zcmWh!c_5SjA9v==6*)^&DpdOjeQIF#PMFt zO0uyB}Z>%GwIK2FkF@TecO-cvtu49s=>cxps8|{kLf4 z$ufCx9Qtmkp~~_V$Ytb$RBZ-yPHr>ot(7rWL&+dk3e~AdgQ5f{tvoId z&f=s|K{;cma!$p!uJsx9dc`>>R}8*0g{qih6Zvn1VU7kc`z-pBk?P*SW+@}*h9nGm zS{2`J+PsR{Sjs^**G7afcUkyJMkX;0xi+VxmZztCT`8~V$I-u|4NU0X#!Efc&{13S z!Oqb}YmofJ;h|^E618yM=lSkzif*Fr;rJ1A^^kG2cocH2kva1cv*&%-b+li2^rx_J zr?B}bCt{N_$?ECvr?gH3cd&nHNwRg|1FloUg0Z;1-lLO)PR3T)dq9Snb+&$9ir{p_ z+71E^NgvEWx7gWqDiWnp1~~MW>U(fs)tFQRYq%Kfmp$5?AP{C!Oj;&iq0p!22VTj_ zoz6>DDExaY=-)vS|6T_kIYw*T?GT`2clhwIHpdIvT5_%83GMQ>9RHK)TW z`R&!o@HglcChOnw=Crn8`z@v6WeUAAZ&?L(QFVRm&_AShcUYN-NN`SuCAKa*2a&b1 zTi%KyGHJY^Z*prnFkV&YSt^$m+yt!6Al~hWMLQxAL4GuH|HxBNFbRt;z^W3zgEOrC zI>C6jjZ#bOS5Q6@*GE~(mL;S{qaFP~3Z3HNyry#U?L*DsthF^mUSH(-{ zsZVhclZB}nz7>skKs}6*Yj^O>&8*30)}OAUgE>4VAe^<~bTo(A^**E=&Hr(?z=kt> zCr4WLeD~(%n~s~-vKF?73wu8~Au;|zo0smaI!-n-TSw!srU1(qEHH?I_Trx& z-|L2A!gMSw`dgQnE?epDn1%h;uh3rT5TdnD~JUVG{_wVkag`P}V zIxMUfx#Fa^+d;`*+PNXBf_J%g2gXbN9rnJ7)$YCOq<68a2-o!d-@&HS(d_Yk{c`yrklZuokk*?TkwWK3pi6`-o9H}mK-4XX2a{SB< z?t9dXI=JOonHk)MXx(9m%)5o|uT78Imy%f#7<4%6hx+)`1^x*>DqRJV8wuzv!kDuAP#ChYxJiwhg5niv3zp#=JIUTUy=SkNMxEP|8ig=X_;xgF`n)yVQm4FXkK^NMe9PG%@$b^;qqg zUDoQ6D%D4O%)#M?-s#ottIs{H&F2n+ujK&i$Iip1Q=JMt7%a!4=20j0= z{ulRsbW?Z41~^@KG9vhJcyoNfTqzgJZ#tENG+v)`3a=yJSv`ks7LJ1PEn%L2YW_`6 z|GShO*d9*$=Tp1PYz5#_t!ek4(*fnkXJ>sp-dhisR=@HifU@rQZ3%~Py3s5nbin8T zK@_)EY$rVWHl1fyVZfzJ%|!6$=%TO!$p$p&)ohLI*Y^7z_evn=K-{Q{vEuW0JxJE3 zG|0So+A>L+B83l;lXukfrwH9ntgautcHp-ed3X#R7Zxj((WHSK>i&hmf9)W-l9sHPV>S9SP@#oW~H z#lPiuIISA7fvuRnf)3*PhkCheb_iq9fYlrQgHbef+Ey4o_NWN4nEp;uA49cWpwm1LYlgP!Tb2- zo@QQ2W#jDtW9#vSgW1CV-TBfQtj5(^$*cF8_jggHxHP|78Jy*W#m>$o9lNjAEos`?M7Dvhaj;{lftdeHI&nzjtvdlm!29MZx3Q- zg(sP~5wZ3(Q~r+L3IFY3BQ*~dVPOC{oKom{J8#I@i2a@*CsXjMSF%Aq?k51Vh)-h^ z{~wg+f8WC}2bN1m^$vqDe#|}<#=-c|Dz#le;@a40-NU(dY(G%+NTQC+uv}@m%jjy6s(o7N{gl$p!0+P+|m9{b9TZrMT$9lausgcq_*O2sIY{ zi9C%oE>85Lz1H}In@5US(&`4^7JU~%cY85#wg~>tOF4yUkV3ied@}&V(cMF8pQy=hI|3zTG&la3%fJ3?8cvK*cw^x>Ul&(R`PeYhcr5I+$_Y)D_ zyHASqe|82w(N%*!shH>c-XdakTMe5*D@6G!cStsZRn|iDRyxvin z2#d8diP=3o-9Zn-6qv!4SE{bO$|`9m-RjEV)4WzWgz>2G_cwy3Yj09a zvAR@|bVU6BiKseqxmLVa?|HJ3On6ur^D)nm{JyumyfAHkw^oaldx zFLzui-$D9>1=8t7q?Neb$(3ndCQ(m`#2CJVs>1?W#6z+u&Tx*Eg@>{1Ak3zZ)C` zAxWXYlHV`+^O0?ph`8>$Oa>aBi%SC@^_RY+a6P%unx(*d6#BSEAvWy8E1^m~j5aWI zZ7Jix=;&oIrE&n0-;ndlm(}DN9e&h1Ib?sdakT3l z!Rk^|oxto_IOXUPVsOkX*1uAZ&NueLz0T^tnVKDUS*aay^n3f>}~@LvS06T%jbEj zeH{3F&Nnfv7FhD5Ld;)gDkCjFyi_sjhv;AIR0(mGe%@sHrTd&A5=@9BcU zPVOOF`kh=4_6=$L5B{^@b)Faygj=#f4CG;3QukOX7CuL?1X&3(!lq3j+!92Dm?vDY zB0nuG3B++x0`_|%1L4=5UV{5}T=gP*i)#DWG9`O#`BNZsG`zzlOpY~MSh!f)%>2Wu zS*17(tv+As?%7;&I-FBe6~+UTy2}MRc3LQi$3KAjcJY$f>nlkbHO=D!kf#0rubFm? zpmRNiIonpKcE`0>o|Ym%5uyjJnOsgD|5Vvn(Wvi+@VNchDC4Ig9_bDO1)Br-k5z@> z5$>d~!oNcOluC`+M%=&N*Hco1ncs&eCdKfl;~;OU>-7Yw_b)vd3?$CtX7<8*p+-ih z^*c54>bf;-J`%qCf-6C@+wBw4E6C=_$zZ+HLRZzC!dC)64esym?qd!x2f|QSFtNTd z{9juy=HK6bSB5Y{ZZqd7UhhclaG+VL@#t_le%<$ytto`u4^E#v+7{k)`_gzr_j({j z^DJRya-VdKJ-=%0V=;0FQh_m+(v`{ohdhNMl?^K8 z-vzx&LDeiJ_a;LM7B6M5_5!m`+SNA^>O!1d9Pi)NcGRt7J7FYVJ*YyL%fkc*hu7(h zO+;*M%t>CoT27Fq?N~Sga?QeG6o9x zt`c4%{DzkA<_dtS0_`76_0`@+@ZF3UQT%9cHDIfpH^M2(ap!)`DttuLa)WR6p0QU{$dAWCeQ5KW2mdB9ti5vG ztJ#afET79}g}&0RtFEYvj01WK2Ev8eWDda+Ec94!oV9_Wf|!)|et+Wx{6i~+xw{e^ zwDl%O4V^6gInw&)ahks&yaSqtOmI&!;f>nhKP3wX(L(qwjrru1wuIQ^?*Q|<_Nc*UiZmx^k zv0MrBFMAzdO*DtFoTVk{*imSMltTcg4I)|BP~IaKVaz*y>;gF-HuAJn{7KHELBoMg zgc*$A(U=#M?*D>BjssU4f9IF{h-mrnQb1fpr|@EQ5jg{~Cd^);;55@~Kx)2~oML&aP^tL0do_Sk(4A}!i-wZ4<6;mCA^dU%(j(&$)N&p&;t&Ec;!R zI$lsr+U0ZN??#@|peM>QM$BIhbQal{;;vD_#7L#b(vnwydkwv%;jH1E^nUShSpS*y zZjBo^BF?~;dt*~I;zH{GehS2F;G1pddnXR3msbymCQC|7CFL>OZRLkuPPui=Hm8FF z%x3wafyv%KKo*T#k;sqJ;5ghQW^;NY7{DP%)|Q0(+Pd$v7q7d_^V~f=L$Lo5o;%8XX@G-{@oH@Pna@p&_;WU-7M^pYQnD+ZoXP)&V?G>CYjMtg#PY|0>JB8kL zF9?y)RmFCeoZTjPrjTG|=un5%?ar0Z$MQjNmWm~a1Z#IY*oKB1cLLvJ0h?jG+QPHd)8gcZm z+-k)!;4|lzlVAKwg0~#+hHygNcw2>k}P+hcLpZbb0{ko;@%a&@ylo2`p z9-Harx(+x+wNE|lO-$KEr&&Sr(JAp+`sVkIbIB60iOFWijCHl6oulmypF~q@_>lb_ z*ZuI-K%rg&e0is}r%RSN;Q#L1EXsI9kuE3dmRC0woE>RYBqB+e!%k9IUCFaNFNIvJTAm*kvyzzA~ zII~4hoOTB04IDE5sni0qLOn_S#i(UReHI91IUG#C;%Dz4u zMJ~uJPOYdPt(!V4b{cl_i7?=93Fg#?U$~rOjw1ev%eMYFi^}AD{%FDimO!DT%lYC=CF^)fLNP4NU?U9Qm;z(^OS^9iVYcl#@r} zn3G?3r=qI1%ZQ9KHIw_|N_PswUN$tD`i5UZN%0-xX=_oMA4V=8_w}Tit9TqS8UUp< zLglpkLu-HoNcbJM`F`P6tY4=NnrdhNa?oCx`gEZ=RYfQ$UT$+Pw>4J9{{3OMBS^}5s+L-{Zo4P` zB4P*4f%FRjW~2$w&D?B)vy{E~grmwDA$jM7GAv<9a0!d|{Bxj2eb4c9dx%_ndzb%JcKp#yO2jY*y}Lre>~D`^bak%}+UKP} zU4J!u`LLRf06bOa869QyOdMD32JJ5tp23O074TZLHSaemqtD)GC5Qcet5#RFh)nnj z&hT~2FvXt!b%t0)ZWIw)hS7>`5uIlg3*V{7+^nV(v`WZ>;+vYPybmH3dP37I^Kw_; ztD#MX{WExy_v!Ka6YdYh5PogzxAN8*_>j7bT?;8eMr&|JSJ=J}@YD|$@V*r?G{O@_|3j!*kkHjghOXr@>V*F4;m4qh|6U`~g#lK+hpl{oulF8D{% z$COcLMWSL}q>${WX3?@|(87;aKJa7D06P*n!(MZmZz^6fk8LATzi;If17~XYvHD!P z!P+?Wi8gHav4Aq)`p=pi@CVt z#40Q|b7jrOPC@b)-3|_On&sOIOP5>$)kl1%n~(6rzQm0%Uu$HbzYI#F!)u$qG|my& zZyK@l7d%VW+iL23dPWJ+WqWKRT>a$TYzx3g?TL8MYosjQt_{8_aEjjxZ+lB zx~0QlZQr$JgVV)x9tkO#?`FY_$wTOuZTUWk{nh+S5JH3Yu1bcyy( zt-2yJ7Flbs=8UsEBXP#?E@(=fY`r%9MF>y-WW$uK{)Qj`p+^uqj$wdvso5r5FccO-H~AeTZ!i+lv+Xrnae*Gug1`z}w{& z6s|KdKGuM+SKCyKd5kp~{&vmBaO|?WGh3M!wLXFo%Gmxixl`mDS@baU^&^;#BJput zt}?9k_ce(Uwg(x$x9VJL>oT?gxeH5JpttS_N34%5luF)P zMpuOfH7@M{`N2UgmweQ~)6!Ux%muFxBx^B}AWU7cvMXf$O-diC-oyYBOF&^?ij>%P zLZh!^r7F%pAK_0HNASPapvJO2dXILbLK(kxB}+x$^<^oS);q*Up-nuGogs?bMjA}c z+$*-{bGv-ZJhOkM4dwHSCT0dlz4{4v`?s}Xq7=fK+0Szd+d7ydO&we^?+@WvSPczY zs7H3n(On3)QeCin;N6ZFQv#=Rb6T&o!}#0P(hwYlXi87I&3REeY(RLk^P$P%lPOlPCfAjK0} zf|D6Am}zzx9MprCmbwvY1mc>SgiD;W7fi)!m3?`2C8YZ^-dntsQbICiK@FZISM#9o94>U`aL2n57HN zl!@sVExp`hEnND6HuiDQDYdAIscg2sz{b|GCqd+;?Nf$kucY$lY)z@)M{tu^KQrx} zguhhajUIh4bbTuKq5Ro#^7p5g-x+;(`GHk;Y^@S`6_&|)H}*@X2KF*S+0sKL|5aSo zxjnm1QIX$%j^D&)#DKKAuz?~oMgzQyWIjX!;mc^i=B4_^P01r5IR;qK;p`hH-RIlI z%gb|%9ZWv))vT<0SA*1U@xGWh=IvX)w(PH5ng~~doTp|E+QPYid>9S#@@aKe&t^~I zZjBpsD*v8B-5E;rr9yWqc|Jw+0|7#{__^wtGT!3BdddWJ36}wWbH!dMk#KxH`6vHB zHRF4-IWg#4Lv7nZ?hTyjV_?evw zj*I)QTN^a1S729SBNaGZ{Y_k zT5VN`ku8s-6icH@an@gJNwJwzSoea9T&~f~jyz6tP&y*8oqdK4#9b5WN+wZwyRE%v~sV zC*76a?Z~U*5_j}y3<>chs1VHx-GEr;yo*0(p;jbfT0H%SeCV(IBAKm`b>}qB zuQh|$bdxt-yly8?br{j4siITbBeZw4OScL#iWF|08L;)X60pvL@k79p91>AWDwYE4 zQek=dp6CO6cC)i4ziAw=4IU&#SUtFrQy{mwdue#WuLZC}H$#ReSIB+fbVg1?eMrdW zlaM!QldI*J{eDaU;0muVx9T`al?Dan_>Zpy2V9qn+tbvd;sy~NUPI32cl{ucA^ToB zM@Id!oVL2>Zv~l`;;!7*&1p%gI{Uw5YBC?hnpz|7(>BBIBNAG8NUu`m;6;d=4J8Ou zRDg=L-!Q-Oqs%&%Bs< z95g{S`d-PMQrK-?;^og}BTwmRoaMjORjqq)rjT>w66>o2mr!M5>FGl+qhy8ht<%hI zIdHg$Ff?NQLmG5m_Ez;5RE{jxe(!3X10q!b&+mSnXlTfQH#KA4nOh~fVaUpLvzdtQ z$jXeanF~(v>FCi3*m1T6TS(h=M*$O3Tq&@GP9PMBQGb%k&XZy9oUv}Mk3kC~aHTR^ zz+@R$IS4=+cW@io#83OY!E-)!6yUxqkzj1ygcZmnM~?qUlkvz;H%_gt`GA^pt;0Qf ze*MOs&5&f%tx8wyap#4=@qw46wJ}m3onT4DqyGRs;1qVqF|ft-p5R`kcr`a)^XahE zesmL@&Zc4b;1oUqbkg2Nut^>ic{0FQ8-uh?y-cuAT}P7}&~~!Q2dcuO`gsqVv906EQ0$_I3UnT)xITEz(2o z_cY59kVHzqK=|v{@N>t=(WHY-3HtB}HeDpFL2Pi!-_W{PB*BSQA(@6ZEBauGiyDo5 zU6a#b{nI~CS~4W<;l;*-8JC*XnaTD~qtKesNx6gBoc9y$+Ck$HKvk>t(`%o>lx3eF z;JjLRcq`-IQ*6%@1NB|6mu6G{0Z|b2K{sqo9K9yGBl6_C5K9YoTf;ZJ94DW=sHMvOw1+X=f}Xr>_Lz;;9kK5e?o-JJLe68>`*?yum!!}_o}V5b zkL%Dl*8ri*4Cm!XUt+VC`C?E(3;zE37#Y{Ke~B$&T9bn&5xr@f>f0vH84HmRshSb1 z(wd6@`zeS*Us+#1`(y+9cs|Xkk@-XaqPvIE)FjntT%r`{RKsW~+}&8T;Vya{b{C&fB43n^TO3 zWi6KNKlu2j{_G6^*}P@2AfLV%A)@&b>A2_}3!s5ixNtUR-dU)&-q>oyU47GXLij#K*Fe zh}vu`!`z%sjpa`})iu6}tR~F%qE^Fv{Em0F?BRmb0Z{N*+L>%vWi}#4M!bT?g0Azt zzEEE`KCt5R{D&G_ za|#x*D^SB6gaP7yE+=2bg5P~5n`Idz*-YUL<&Tky1Yh&FcZcxEB5_&>+!{`U2(*wd zkNlbbk+V8J_pBiY7#*RL;}QPMMS08<0&68}vMHPuZ?8A%wCZa@+j0FG6x`s;*HvrA z5DoP}-Ld1)T!v zg_6sOUvFnTT!Mp(#i@J8S_B}s?haondYY^4dPfYz<@56&lbcuKl}naDlc(udSc13} z7;YGJ{X$twjIC_!m-<=3>o}l@nw7&U&B^^7@S;)Y|Ftu~ron2p`YP7lycN9yit`n~ zZ@L}ZO}rAMEi~fZS%o#VgC!6D8~n?hcE4Hn7z>uq6Yg4|i~V3ntz6c9)m0m5_ewn4 zRt)F)pHN!H!$BF>eSP7;i>UXTLcwRW|7Egp2!s72>C2q8?UC>J+r-!{-Lpi$nC1q* zyNmQF-JwJ@bx*Z9yf-%>PA=~ZF6x_9LvLa8L8Z>%e!a0%2%GH;ngdyA;8_kW}fsPPSeC zFrUV1l7yEX3L@QzB!Kk6l9X)hsld^1NhTJs$0+GNuR#}Wt!u}KRae>qKu&bOmgjIH z=v>ZSse&}PBH6koh$@5p?|4T=BgvYGOIW1ST`-kETbwmZaWIMn$_~@(>&q4q8%w}z zqQ(}$eswkII^C?}m%$$cAnWTXm30x1p=^eDUHeCnGLSPzDZCqeT^}fO!=BXrFT*Bd z#@dwhMXB(s^UVirWrPHvu4t#A1eT>^eId73+od>B&uSOT^=YEyshtYs$FCgchD-Nd0AO>bF2cV?Y%;c;^4Mc^8w%oo#^p z_%hrCOiaiv68QqCbLWCnVYemJh|%Zu-G&o>+bd+STa&DBRDJQJ^H~Rh`2~a z+meKH)mk4qP?krZ%JjSkf474dkz@c+m7Ba5p| z2NAlxh%Of3c`h1x6GYRjK)GD=JkESwE^pP)TOi^?v!RDoh%@<}kZCVJnyJaIDQff~ z(ml%U^V0bAN@VEkK&~|&>u0Jm3o%yw-lbP;XXQeRNV&rcf&}!ES&4-2#r?+wZY~Eu zb{A8(Hg4DQ`_MTlNzkm1R9tE9;Gg;NFI9V15TH8oN((TEsNfPQNn&?tukMRyuDZQh zzdH5y*Vj3~=a2!~^k7*8TqJSrM4s?dhVvvkq!xKv6~-6#^Z03JK{8)-8SZDG?StiG zlpEr-`yJe!(P^5WNqd^{(68&9$05BsF9q|RC_)SFd z|GA)=r_EvHt=;YQgXxRp$LYBN3Low7Z!MqC&y3h?KKQ4t8?j!PvlAZ?*6<-frPvsp zZc~&Xjq>sV=;-*=2ja2Kr~&@wb74<{L#=ru^g9(j#XDV%Z@+WqyvYV(_keXLYC(u! zXwpm3PG|PZ$*Nu4nG_rx-blOsVAEqdE^1UUOZ-ii;rtw-uEj>dR@zJ8`sGLgc_)$$ zd^)to*Ie5b>eBQX9`Jj)ece~Cw@Wj6DCTta;5E5;Pxx5Cb#V`8A=u?-r|xmg0w&)= z;3>A_F5-Ffr#ZifoKfp0!bP6@~fH zymjk=P-ud6=(z!j+55A-?GyAh_-o4P6C-goPw#7*sK|Ov31Uy1b^>)Ps5&*SblT@R z+r1JT2Tc9<%EG|c6f+H?xYY(0n#=XaNUrNMSIBF?IiSnctBc$Y9J>Dfos>d^`1emz z*Vsy;{ZB};2Png`#Qd%sgIyb{)A)ItdP%k@A|KN`{5~pa)#V}Muviw`kt4S-V@L!(n5LG?kJ@bmS@&v*oTbQGTmL0 zAh}g;$KGJIeEec0U`bw#?IDWz&r9hd1?wFX;bA<_hwMGDru>PP$I;ptZBlyDm7re7 z8%KYkjDz)Mx~3`+P9oGOatqtn09s&%#-KI{7Wq{-hf#wG7WiQ}WXR;y z_yCYD2iIXG%RXC%HSUR^juMTXR(e<&2QSM6q z3&G8+Rtb037{(Rp@M!ub1 zc{c3Kql8XHLDoTSI~)8TCRYstWh;^0NSvP1>0H3ackVW+#XBr;o*;MPn!jGinZG{Zi*>ucZ*vO9p7aUs7Ysh;6_U|l3{|5Q2d3NN>O#Tp zI0<=WQOk1DAqe5o=I%1}R=uDqdOr&N-t^X4N00Q}x0{)?YWAk7Oawydnc zZ&$5>{OL(uUs|y^gt$cVJyt~va%vvcezwa6SS8MU>J=>lk>k$Uqz3ZSS6x`YEA;r6Ja0VK=_`LaF`v89$bT4wuk_+ZH}0yw0Mww4}2wpkZ$AB zU-}UmjYxf?zWMvVWGRDO5oN5XB?QhJ^@klQk+f;=F?`WyXgE)VAP{9DtW9ClNRYf* zOSz|3?;sg|ur|&U)0~y!H8$nfZ8NZt_ltl2g!O;5^Q|-~G)1USFRltXzwqX#dr)KR zthC{?zV;pn?`K^(o7W9_DR5;a&Z_vxKHuV7G2SLmdzyknp8n?tL}Nf6(;2bwiPv^|75>2e+&By5WpiL7@qp&r|6f?}r4!M9!IM=}&Qozgx|1 z;B$f5Ki##rx?H4l3Fk7P0wlb8glke_^I~xc47IomX=uu>3~{jZOaqE?TjMbqX7os z5SeOttIFLuWSm8rl^?2P3FKM-6gv6y^uu)(lek&eoJa1PE@15Cr*>;mCXiRL?FA3( zJA5*_qOC0vStA-$1RN(|)`zpKzFL$Px%~D0qwp}nUmUV3AE&Pv^q@~7*22|rWyEE< zhgd$Fni3z`xY^9qSI>Z;^48yf=mgWR>uYfugX5)=hzU*XaG?B~rvVm4Euyh~>uDyrPlR))L?Jjqbkef97bU#_+q zqU4wc-^4i@`CGW`rO31!VJW62SYOg{e3-QB?iZMD<*SWbwPS3Tus+0$>=mCIsVP~b zw_J8#uva`2diX*yud13nNI1Jtk zyH@pqtpv5g^lk>v5ws@kco3%dXQ|YFL(Afu%Vm`<<=gSF4;;S_PgKq+2&_odh89#x zK`#}tc>2$JUB{#62}1}=1-A88NxqM%H;Z|UKMeo! z8sba*me6uT^uyBv!NK@y8G<=cVns4A^5)kH%7}@I#_6#lIE>#e=)O( z>=weX1v}TR-%Y4rg5M>+8S?(;>=iXzi2d_w@f9CbP2;0n%ZXB=AML&;RnS^Iy;B>H z&~#MNxh4?xt-R`Q3TGTq=Se0qni4IV?Mr2f*6Yy)Edeq8+5K3(QnaB0UQX+r9=1X~ zUL*|ObmvZ06b6t1D0ZKgdpsB9a;{5oWV8R{`ju-JES6!|zxF1+Q`{!R9BKh{G0QZv zV^8wESc0c(uYWV`EF0h{7JrNICmX3hYm*yDljT00X^|}L#q*G|;wDTQ{DQ@|zmz2` zWnU@L69P!=`r?Vcuy+HM7OPUI%@9Mk`d3Ej_9K|0B#nO#OkD27^T=-}&F3AC~!kFqOFMMrt4cX%n z#w|E;EF>?xG7TuBiIItJo}DFJ796@@btdNr0!k@%?d4bFsLE!|P^&07*kQHvU(;+_ z*teGDn zjNZf|1=~v(D0cWR1@fgqb=tSTptd4wX$`mhyB~21MW-(O`g;aleiEV(XN_nPsICU4 z5fHB}SqV&*e zeae{j5R9_5Vr!2{I{&41x$_ng>DN)WejZ|F%PoH)v^Py)3i>b`aarp)D7eG3Q6Iu3 zS8)6b@#d!$p;HlEVQ*v8F6LVFTD^bf?bLKIv*{FWZrv)kudkNRYs$7N()J8U>BEg; z6(xUMHB}}5tiHqHCTDgo!L&jm_he^Tu5=m6>O9Q`CnyxFT@b9yjUQ9>aca#?DH z>OXkR;2Pi`=Hg;GHQOei99 z?{pQS)92%A&gf`R^Y3PbTvqf7PRla2KzdMZAkNp1_}JoFG|S`RYH*sQ61SGiwb% zP)Hk?k>oK*m`^SGonrPeKh0PW>Qbumhm&g888WYPLIu*(&v9R{8v}IK{zuVSI5gR| zQJn4=Jwgcq8RbToNDCu`(WSto2BQXuh)9=1!qFY0htz1598!}80g(m;6hu_4_j|to z;d$=+y03H2?@U-mCrNbplS4b#!ffE*AlB#Bh_vT&m1l|EqT%zrqtxDf&J7yb!Z`yO}2w6i{a*Z&H9znFkB@<$}clE||mLJGpTSegzO5q~<>k`)Zp#lP-8rguH!@+jC^gT3_20DB;J_K_>*Bx~+E z`zAPpuC<6+yUhDreqBv$GWoz!nzDiMl@|5}ZX}=fRUs?w^U7SNIIYk>Z4*M)UOlmj zFAd2wd_Ibk|1Mr%PHv%o4nO%f99r1>I1ky}qEnUjG_qTBfL^ll&s!U~7nZu#0~@>K z8m!1{+n~oNsrH>AE@rTT(QCz_B zV{lW7UX-!s+20D`GNbz4pu-=k^lQ#K^fN5OtV{A86y4=h!v zXx$ssH)1Jm%um18hk@Yiz|eqaGySLLQ=@i`!RvENo5^7P%7xA?rSwJ+s}YySHD>=D zR{N-<0wxt#9ad+CTLsK_nZtfJmn8`)HuPtI4J}RZd9M#lULhx+5)cHa!PohC(gn;e zPw(6p4g;LbOzo;XM=cx!HSI-B5_cCBwm165oGshKw)1hJ5%)_AFJroqVnYWl#}~DJW(gyr@cUL#z|l&Aye)9&v6ln zs;Sj)ltsGEc)IBF`}cEvYx~^uYpfaOqY7QU&(4QA{puMWFjdW7{y%1O9u*ugU?-`n zMk+c$J!h`S=cHQHO(T2*{4yzi#3kt1rNXs_xL3W|LJFTV7Nn1+z*Xzfk^(EetJ~$e zYa`q_sLF)ARy(tvUA=r8V82R0aMikxVpN=_At^+ga z;C@X8NGBc#U2Z1+`}6im_^+Vo-^pFKBsI_BdO;!&pi0k7bzscDrOAedd3>vPc|>Uh zs6=TED0J$!*(HYO#A(&VbOuzx7Re4heTj-BFzGX1Tx^KR4v&RhG5%1D@#}NS@&$j2 z)W%5T*M5X4i%>86JF8JBcec_^dBk{G`idD3vWtwdR8mc#k66-vOzzOKehe*i=P?vv`szwh?4(zbb(DB;+XQ z&b7XN=ST1`17sxM0y1FRJb&obs28RP^+oGS5j))`z)!W4#t&SoakFDfTu9jPr}N&$ z3W%4G)yhyy*b~vrG@PO}(_7IoS-Zw>LhX51Jv}f@T*Zn;iIDu4n)CgI{LkT3#j)Kq zd>ChonG>Nu_dvE_WQ=?3jvyv6w}pApY3r<(FnF_ps53CtV>uz^+3Tv9G*xjDJ@7HE z;4o+%_|rIetzjjx13AHLZX*u<3(wKXhp15}KO#9z7tlY8=&37tbBm27)C0Zti_Q}xSH%uh*H&^HfBm%GTB0I|dDEtBgR}q9Y zhF1CaHedJmP0Q5{olcFC+HClf!@iO=*ON>}XLw7yrC_%{RVhlk z>M^w{u~Umi2R%!;fp|U_RulH5X8=`;{u;I;pk+7GN83^Iq6^=ia5Iu$$ixfDnKc7PcZjD4YeW zAOdEP@rollD3u^=JRI8!l5_(MXK3yRMnRN^RWMwA+#|ln9qYz&fcp|k-@nf)G4^A( zm{N%N)O`UegsKns_9GOxUr;MgdXgIaTpB!`EIZ(YI!i`cQe_KU$=h?f7Zos+l7dr0 zcFOHZPf@Xf+b%(9?ymK>lrI^AD!OTAJN0C^cMerhp0l^@z>yD)T|q5DS#(wI4kOa@ zc0ZD@I`ylF$tWkKDAP?yRi$TAS$vyT@$+n}qM3vgk^P;ia%NZegr2X3VPVi0n==Er z-Qrlq39$a#>p7d*%T5pu9tA+-4u28Qj0b(Wk@rzaRMkzMm|GBLz1EgPW;WFHvWWI) zZrN0bla6RC`@|V5zwI=NH*w}it`-UbU;1Y5H`72(W>?eaTuifC>$Gkld7_#0UOv>E zr_IsAJt5|jsdV?7l1JdhKd%=Z0>U@WABu|Y$c9iHZa^illo(pdN4ric^p;7e7bYNu zjM=fn^k4+aPjjc~fZ9*Duw+1=^Sw!jsC-Zt+$1goqqeLP~;$d8$ZV`cCb3sjK4|* zLFL}4+gE#oBJhTXkB`tk zIqy^b5Pf-ZalRJ)q3WPg4^$Du($4n6No|Mrc5 zlU5K2EVEiv-+LlLKuMVbQlr@1eOalOZ#oVo-N$mku&KS#$yT@JxclFKpErdRxcNXV zXRq<%%zPNnW(ED~KwSOJAlB~SDB`a{O9mG<61d6~H1Ja?h-Db|9Gi-p$H z`MX7G3ekP9LKm_k>T;N4%R5cPKJ|VJE~+0IU(C1*f2T`iV@_}x;+)S9vbY<4_O+_) z2}>z^NQJ`>TKAe&?d@;WlEYwTcgNhUIw?FM>~Hiy+C(QsuA-E17WVQJf{Y(f&=O4) z^zZs&4`KYlHC&tFWnrA^-fhW=+^XqPo$$@;E7lvDr^}ZoHsPh0h1{LUKmD7Va1qu@v&FsHHUX{lOp06BKyY+8M$>mr9)C`i+RA`dY99reWC_L*ESeeSR}nVM zzY}*p5zIT7xRO+NI)^ZFKL@}!C!5eD!1Aw$b+C{~P{&K*IrUl#Ao%?(Uv$n=1jx95 zd<@+Oe8RO^9kxeYUU5YTBem5nlOkVxf=DssLjQIm>0#Qxh(2`t~6oj(Iox z#U*653B# z(I1el==u9F$pnfa$i5@Bz6DieuSc`KA;L zzH$&_yYCX@c>fvWny-zbr*)GwLmq(YxO@G0ZO*RNtpcR7)H0E6f2+ zYimF<={daNqY}sL)@OedP}P#Lwx{k$_$?R&touOD{tG|jYr!0Z4j z)O^qN-mShly<(5=Kq8x2o(|4vW5lzubW}k(iS`qK-h2bOQ8iX$T~j>=hm6wZIlXIU zMb@9xFik2XZQ57B<6=`maJVlzFnjo5MEwQ$vC>31+94fORCU$42c*X&s-{K1_3) zu|5QXw-gu232~)eHVcbdr%{%LX_;-Z&m@LG3O%bfK{Nq_9Qn?Q%vG$-iT&<8nx>_rmeX4}|0)OMC`HThme!*zLpf#UCF& zsNOwqK#o*90fsbbg<73%fz02+ff;Yv>AlU2KlaP!C7b5!yDIDE=egac`L0meK0->& zW)k;BOn#nO8x*||i;Qy{R`*`f*0o`VFj69EIos4{{i<3MD1I7!t4EB!@Z0CAAK+4Z z!L{03c;7@qhQt0=cmBYW2-`Y5H2J$!b&PRzWMSRR^?Uu1QEFRtF^91{NzObgUN*h; z+?c8P(6m_@&*G!xEuTlszHzw9RIu7u9KB>WsFF8Lv?3_j?N{t$wM!=%qnQ&Qcd5B? z^di)NqRvVnM@q8A>0myp=QR$2RhD~ZVg<+4y500MZ7cS&{32N5;nA-k9ks|A5P7BJ zic1h44^v6V#>CA5p2UyeODqwC9_dUsN9dvF&?cX1Hwi<*&E~N#xfvfONm*Ue!5CO` z{TK+O2}cg*-|^Kj2g3W8TGtwK5z!7JYx}0tHEEbeg;beS);FvickJ_-*A0#G%ODtUH3 z>1qNmLV>K~ID52zYa~wC=m(%GUrzjeK^$V`9_zi&8CSGXKwcpJ^1@nCvNR-cuh@b0 zsS<0lf;#kmq-%>zGbRrJm45(U5N zxC9N-JZE{ho!nG^|LC55N6XrSH+lJ5?x!u&S9K;y9wPX~f06%v4O&sp3(=OF+?fZE zgU+w1(s{xWrgE)a^J-}NLUrz>r->-a zZ;CSHy57-JH_M3g`LkAR$|Vr>XIoY28r+ zXwC5_<8K@ph?#2TnAyB3yZLF9lp}_URkj|NNKDy#N>YQ^E?-Iddv%AG1V%qit+R5c zrRS)k0w7#s5`KQti`gc|cM*_!f7>g3R6o^fZn&{iHHtR?w!naSp%Xt_CrUO-8gXXy zV>)Mk7eb}<8d<10-41?vC_1M?W{}7VAS%NQAcOUJfClmie5CFh33GkxRU8&?Xyx{Zf?Mnvhfp~>adEGW?Xw@P{X(b_LuspmhEVaa#l4worTjwi?8_xX|0jCa_-AXyCfW0aGUTLh9zQkHm=t`QZcqE2U}t6Jpp zOxc|CJJ~W{@L0+-z#v{wrf16!`i`#bHXWYDT6qYx_Sl;eP=s^e(u2u1mz339B6?w1 z{krr^UzA??SbYI?Hl>^oL=uco6~P8UOhR3eyG01cxpK zr`o_3mz#KwrkhLeT_m%`-K}P-7f%suYAa^iF^4>>hxEo8iEpAM9(>EP;&Jk=!nPN| zjg7NHr15S&x6gxdw~lRZyU|*=Bg~0-saFlAP63l6ver)T!ZM#FC(T$dhXoS^p9*PE zIDC#t9k_o!PWi4YMBdX}qT)&5qOh%KBBJ3mTd%#;3;Vvm|6$~hj^G3pJ{{b7#F>sl z-{S{eAN=qZ=UR!UTOmL^dPP#?L7eNxm*43(96})cBQvC-4F_`c*TJ`7j^Tg0##vEt z*i+$jBb{}s&o_wc_r3rwjyd`epU{_UoMTf8;5xi-aFJp{u;ds`tqMRKq1^p3A;O~K z&IsQ6HC{v>Ii+rQ_FX)AbW0u};r{yg9wIAx=^(?5k%A}=a!3rg6Kry95#xt4NRO^Q zy&z2U?T<70ADx&)q2kGQ#ri#+2FF@M`YG*+Ym{E>65bIgk24qEhlyVY;_y&<|JUcw z?~xU?Z2lY$3svW$ttF9bq^G^nR`m#|4x;Em)R8fQE-w{B_c3g(+&Ap?7etE8X!~Qc z=x>)AGBGZ|f{Om|%i6DVWnYo(n#^i$H;_k!5B>FOw;pwe03w}TUb<H3eI$!?BVN-YQX($Wj=PW>10(m+_O5=$t z2o#c4=m&AW$ORn19O7W*nR8W~1QwF&`pq7@{Ta3VrEk;o%FRr32)>i9?6X~q4w|DX zgF};Y0d5ums0!eNI1Dhu{{83G)fWNXj@}IiRHm@JjEj#7TIuIz=W!le`W$URDMO}XlI$=13t z-MFC-DYjp%>v|ZJmA@6Mf%rHBFlw16TD*LU+QSz)Th&J62(O$9JY34_^Qru<0caT0AOlcKn5i+8`;uzDmolvKg znCVSEPn!ghfXDaH!|cGK9B{(y!0!3VVOtOX4gvXzpn4dy9Nv~RW1<|{h%5Tbe^6{I z$*D9&>%txt3|V!51H-3T#t%s4bi}Xm#C=Z1B(ZZm%a@)KJ&1~Y!i3Rj@v9mQYktWl zRJ|59>`viKeI(yyNz1}v@~ZhA`@{UYfWC-TU2cE$uIU;82=u3;)JlAlNYNf4NFBE( zkJE9D_c;px{PQ?JYCHSd_5VLuAC~eU(gq35_!c>kK}~%W<~>@mne$dzAr-6@OT@iwc_Wv3Gi(Ln7p2kpW*V!z(gEn z%oU*|Xwa&zYFfQOh(3#zlzTC)T{)rirRQ-sL~izbt_^97qg_(zr=TGFKai9t9>>u3 zbIT>ZsbeE&yDg|2yyN$^>S8HDzL4vgOxT zz8wOv6knsB&}G(P1)Awvo!D^2?jO`juE!u90EM3H8S1Z*1{)gGCM)(JAvCTmv-?6!WP5(Ia<&pnWBcHYJy)i1i59Mqc zR*d4ZIDbXFl*brFkCKVsdtxkd9Zu5?n5k!R{WvC+g9P^w^PHKe2PA$FVjoBG^I61M z-TL2MQLTklc>VBp?WFpFR07qPb%$kt8z>$G#FA^)+9X7s+Z zdbjh4g{XG_L(7zk^N0J{NXDCFrW_BANjuZ3fDaG)$gFlvTu{(}=y0lOrqiHYVHnRd zi&a#a!dR7*E0@VxRd z2b`in_eC9!G(b^qaJ~njomle{gpBr9GQ_XPN%ZUBJJ2K43^L#YqUCwu-1P70ojNM+ zoyKEhIO`bA6pytTZ>F^+=^uXJCeDL3uBT|Mmhb;M~U;i0#i zZ=z&$ZPk1URt`ch9P2ku8?HemaG(fl>^m|559S2;>1`rtaASeb&99woEE0>IjHbRh z_g8cMt_=o}(cWTrb{RJ_R5WBMSDy(t{j1Xxa&F5hRIM!aHyudKo`%iVk;8tF%Z=Fsf-FaCYSZOy=8Ooq|FjuiT8#T zV=dzq=myc9ERqasNEqIl$FL>j+~>rUZafUKqr^OCcG z)z2*HEU)!{>hg4r3lzktpfzd+&Fj$I2EkJQ1@BT;P@Vctsmm=+Ozt)Yv0a^3_mZbo zfLakGUbGr5ge~PElh%YMkCQ#F4*_@|SlmZp6-a0sbODS|_wHQw3yQ_*!KU zy4smq$4*2@(BIl1sEiPJvlS&xIG^6KTv7?GEP)Q|`={n*!H^+ZJCk#sJ+#%N^w(BhYV2Jy@6 z^^Q*rFY1?SQaGlm04hCd5urfxAU`ZQt5mAcTd}&Hv!W7LPwYqrM??wm5d{8-dD@}} z?-z3B8%Kmn@cmTFb;)i01p!bDyPX)HaM%@PwwKrD?Sy+R7%3m|YdzO9KsOYeroMQi z;5%Q_z&%(PneGc2lE6!1t&(4wHtwV> z8{iO|#eQf^cFrfJW#f7S2H!#pJ%$;H#LVHK&;Tj?0vsqwu>NE9!^nono1buP5b2l` zPGB=^&JpQnVq=o8+pk)!Jl)7H`!|x4bV^MI=}HZ4htbiq|c|o@py^i zmA|`0-?f*j!g=QCQbp@?&#PrdO`9__7)Y%cAzOS&TXK)`E>r2Y*@R6vj_~2h1CQ;Z|z4?Y8>q&}m5R>wZ zxs92i5Xv;%+M5KomkgIAB#K5l%a;3ENqYVflD08Tq!y-I#kRH$?MdtjHJ%&?3Aw#X zIg_N}#wy|^{AYT&Td1q`B$gu!V5^4zyhn0_DRpQNiXo`tYbt?0h%?}#3$#^7673F>fPL_TWzGDyZN0dwS8Y}(_@`KU?*>{p=SYJkp+>iv z*iDbzJW>wNS2A7=*of*!zh~^J!_GTI^=M<(O6><;R@^DSKE!g9NSJ^tGDxo8<(6>PuH5S6AUZ^K1B z$dCgxuCn9LVA##P?56-9h48Vdm9B3ywT|0EcDO2vpD&YPFtFL6Wo4LwM)OZhrrWK; za3^4f;5ohp%NoX-GrALV@ggIpqF6-9k}3SlTW_7af`XimjIs`9JFB@e5;!|khZeh* zHDq7?7|3|Q>9)y8ZZ>moGojtP7`?%mf5!vbYCDY=M{0jti)gaFr|r@D-1 zb91S+C}6)?Wh>O;iF>mSPNsO1LJ7%2$OoIiLdfWYneFn|_A93J$v13(o(MFz<+E;s zmS=X0>^nBC>m>y3O^CQBZadAi)I;ypd#SGUI}n3r5I-R1nJ;^D3kh!KJ-v2S|9;{i z`wc?CLp{bS))glPrOkdt)Xs~c9vg*3-2AFi@Lf|LIKaJ!V3old|LGWS3ULbvZLen8 zOkAkQ>k5|W#d(iLij9XZWn8rvX#Y~&o|WV-7vgF8fx@5CA<3`41K>zm>Um*5((r*) z+rV=njx)o0v+;xz!dnIDQUBhWcJxt*LacZ)rPEr?mBM*uf?(R;-9g|6@IiJg=6~AM z8Q+Ax+EJi>vCsKETOoXqS`dZmf>ZhuJvnUoq>n6p zp?fs%3D+KCymA}=@pWOBuD`+w4z_Mo!NhDNpZGcg-End}|GTzWVPJQEsRuzPSYpK> znc(sOra(%tEH;hlcPK4Ih)--*yMK|lnq7r>TE`_eEUfB1Oy1_XXkG}>o_1icc3&2y zmDUpn|GXX-+Go*DgOvRV$_38+#-rXVr(#&?)&%tf?xA`BJ{|Np1LgGkd}Kt08D z5h7-F(A%KVAVxnzG+W0r5zsZ%T5}f1F82q0@knsXD;cp8~C9)=` zJ=VMfo_JoJJu^@UcyH?Fnea6_jp})wPZ03rvBv-Cf4(IRY zrQVZ?0oFWtF3vA@+$Qq!vhnkbG95Ep2*d`Cz5C{B*lmVVDbsp^TQrJ-HKy`z4vJ({ z^QKE&)rohRu*>Gg>ybla6DkBsrh#nyVqea}!Yp}Ck? z4shKbYjEPk0)Q|?mhk%&Mt@B=M4P*QxnWnjt&9W-#LtN8{&zwBb>A3Ok29)&CId+j zpE&QQpt%F7;m+jaI84mMhZ3{HuKYnKY~n$5HW3YLQjKzgZ_rE)_C~DECouvnF()J0 z?MzoK44p+1hI(m{y~Wn>tChuI>H{iSNiT;Y6R^Kd!r`6Ojo7S2Bj`o_ZroBe&So4g zm$TKNEZ`*OQ|W%tw)G3ah%{%(TC|H|lt9(D1o%XYR2uQBAB0^zUQd&(_OM(%Q_GKw z$S^zb|Kg^zLX`l5%iR0R&TRj1$HpH+*V=aG)aUlCcic=i+I_^%>o@sI=(%98-7)2?`lqo9OxzVwxvpKZLo%U^j+wURU-~8 zY~g2-H;||6EAcxTgdSLNeiZ6HP%&Mp<`TS>fVn#%x#xe%yz5`tstx_rROeiAAArsU z90kQ%TFW=-%2e!f?r`pi>HKFCf_$&6&~3Llpd*m}i!C%FG~KL)fZ8vv!p?OP?hKwW zo4QfBueLPm^ezG(-xP-Ff8k*}oLxC%YuwDOEa@W7dtoc+49Soq(F9zIi-fYEVFC|S z6|tbc{|TF^Roj#w_x>t!DwKDdJ;s0F(CVzaWWef!Tb&Dhs;8QY+Xu;IBGL8u%1pQZ z=5u7W)1LeePAq-;fZr5$gPjkpoT3EOBN@sq2uDUJ?dMy|s^?ADnMzUGMXU|a7pG+_ z2pHXw;5rVsHk*HSE3|~-CY%X>--@=uH9-J%GjhbD)hGo%nqjKNf>61`psCjMLH`@Q zA1ys+6%}4$Ug1}GOlv(H@*Kl?}%%JN<^y^~Z0X1*gIP~#PqPa2Ksk&WriKmkF8=im|LgJ!#-dkQ2J+DlD`yAFq- z(L4K82&v8u4_ZlkX1_-97gTj!^jlJuG#*#hk6`LM11UW*gVyRnysnCB!}XYKgwR_L zJj>0Lctw1`PL#jgh;bck`pPsv0uBb?$KS7X-b|3#Y&SXj8sW0vX%s>mwdL^a2jhV! zZV@s}e z3B_BDk=BBVDA*JwpppEyCTcww-nj;Z&ylQrF5hy~nR{794d+>#)t`i=Hc0G&_8-ch ziic>bYMWEYTkabOTTi*1z7GcIY(k30OA}Jd?|4)7P*LF!GjE;!L7C)R%2P)WzEm^{ zoQ?D%uSRc3)|8Vj_1*MvBL!QHFj+M;*oLB_GKXLcmXj<)tRakWIiIk~3@D*!YCi;} zL&4cwq>PGckG0|eWkD^%#4w>+fAU-TxrbkX>6DWexSbJVSa`jtxQk!6k)xL^HQsmc znH34ubyWU)?7crv@1{dJQ`t99mt5xKr$wo?nYDsTN!k?!xtxYp60aW181b&;n|cIUtOi{;IP>JLsWz*{s`x9Foc$Rvak@wXUg;fT5+ zZR3X#(UGFD-n+g00x0b19SAJ?GF(cjX?517%07uuSPfsl<6tOIyY;!cgNmQ~XGpOa zir3$p731K1>Q$jtcEHWq^yyvi%V_Gt?oBsG7%BW~_aa-gOG~mqjnk?WIL@!?*D%Fr zkv~$Sa^Rc58r_J5uhW1Nt8XHth)3YG`i|@ zf+W%WyU@WuoS9JL4*W_C;rX5Fx}}CjBYOcw0;|EK24Z|pFN(G_#yShxjHl{mcR!2X zF6KJPdYuS@hlo)rGu-K0QwQ<4W{S#+j?uW+IxN@MBABeE9wLQ8$N;ePy>I*hR+u^G z#x*;IM4`^~Y_|_J`Sz&iZy@P+uE`r0=M}eUnRe`_C-0jP7T-p%C8c~6BQWP$4Ksr7 zq;^;l+qkn;GzK}`OF(v07U`RZ0?fKbBE*pax2v}+w<8bO?>e(qA%6l*k#bir#87dU#I>+F-mjodWwTz-oiW5G_i_eiaa>{v>^@5z`Cu>U9 zKODDKIr!54@a;OvyaYjY<#^_r{rG&ZwNu|Kys;4JSqY{}>LM$@XkG)02=r-LYzKn{mI7F8t z*`NI-3-5Jz-h{2BV1Nv)Xlo`pYq>eTsZH@^b)avzsw}Q73VT&kHNldI0KlBrq>KW> zBB^}nZgO}|^r-j$eiy_BR?5pJ0-Xx^mR$w4xYfew4}F6QgL`78(yOS`C>3U%C0-$G zEWb9*3LndJhwhLa`(>xI)laDV099A(S!a9D#)?26_~w*-B53A?G+@eI_BxJxanpBN zo7%~>l}bKr-oymLG2a!-x{|3TE!f2r9j<3mVZhddkdRjQ%1+pOIDk%9DaOzQ|0zyd z4Za&feYdbIc2k5cfQ#YPyC=hQ;V-Y%MN@d-To7N?ZzET~y7y~I+8ciX;i*E90 zd?>>Nymv6+e<(x9D1j~Yl?u}RW)+Kj-1SB%{b^>Db)eV->1*!(2O3Wel_sRx2w+rH z1%ih0k0VL~KOp|PI_?(oIVLfX-EW?+1)1JHdAPhdA`~xW6RpQ^Oxc`+8RUmmQpGRg zw&55WaSvU2kls>Z2-*EC%9Fj%b*Xv24c$Kk3e&iQ`Wq^;H2Pn{589q762p)&JFiwOMZ}^{E)!CX3liW@43a8uhCQnEuJ@|bF5XfT{(XNJ=*2Z!fDl%IwO; zeD`*%D!qq)+|O4#9pivf!u`fXYKFiS>E#&n#i+`bx6JPtN|YM0bsjMpO4!?Sf|gfJ zrMvfk`n0?+A|RiT3lIYG44bt~qPSe5VzihjD5gd2s+uo{Ue`ZiS7o4ZVi~%c((m&X zba*zKJbvd60F-#&yyj2JneFpiFp0!3PTFz~CUV0Jv${`QSU84jJzau|;1f9CQj#aX zyEL%KO>6;L(e&!sHmiAm`oKvj2JK%AQ9Kz}=&8ZTzHBN`zc*H9?Oit9LCnW?rHm>x zEJ_IIMM}@Owk~G1?C(GyB;#1*E*klXb%{H>OIn%Fvx9-L$at%ScR%RWEoO-+_SIhr zK7Nm6a068zcI#8jjhEr3qCE<9V+>1=8Nvb35vHNYbR31MmdK=+7B5_k9gc}xDq+XM z(v+XF@W=q2V7|SQM`I$~Dtj&aKDzzI!&+n-inV24Q>C;M;rsBuNu3dO-dK}pI5eN0BZ5y zire(pXxO!D@{4S40872Hp}mjTGCCD-sqjJNTWU!q{4O_F&7JN!(4ZjxnyGSAwxL|Q zqRUscvgAA32P~;{C<&19N|OH2{<2h$7sG&cj;)T2`o8#c!D1VacB1dl zWY}s3rLBd!;Zze&1#V16j5?Bgf&)_+j>=Tz6@_AdJ!a1j7PPdtBF-AOj^+tH52w@j z%0$c*zH#cAS(#n;sjmn6;NA?BQ+)BTVcu=O#n#zA@9Tl>DbakQmW~#-GS^r2yoU#*q1ip0KT|}4;5^@0=tfJV0Q*A*9#a6@jQ;Zpiza*J-HVpU+*&%pX zNmw&cGjTI{P`#@J((~6_j_2-WQ1AdZK{Ir%_61?X^@~b0(}aNDeKqs{6J(L#9<%v2 z7dM0TAM_CmjG~FV2mx%?0F@;?t9<&2VM;#I3vDG#{dt5o`Q`hO8g9jFxyYo;o}t3! zFq10M0j1FQ;UE8JW&8@(MJ-zV7xb^iXtCC*4xv1?nN(imhOM}h>@8R~xE@qtAcv+@ z$A%>hyZtuWHd5`vGJg(#U&q&22HoVV=WY=}D(?tMePYsvudNB2Zt)`>M3NzT`8QAh z3bn7PdzMhJ`+25XR!%cH6nUk`&{3^(3QgO6$VqxDA~yz}dF+Rtq1NqA=#@NZI;2-& zHk#JC4vSte`qCUe@4H>BIN0afm9+(J0&-LLCn%n*Ox&hwsUvOyx&w+JlF>JK()>V# zZ)RA&2zkZ5!7 zmSL{ZFC^Q6LKyJWp1bI*)`g7TXfHd!iJ4{R%q{hFN_Q%*ls%&oDji?brBY4R7_QIR zAffVI^$SGvEsa9F2h6Jx)rgw*_pkU6Nzk|LD|N%!+-%pQvU9lqRse`GV3*${H26?n zW~+Obs++~G(D>8z9I!o7sQyk66^Y}YQ~+8yEv-byO(447P`d}ouM|layi2fEANdjB zlCh497W-(g981Hw6 zRq&siNK^6@cx$~GD7~yueThzB9^_g;_auzh=KuHF?63E8S(8G1D#U(=9OqJ4U|9H; zQ`U~xL5Jqnm9{uqyBOO0u?3}{KQ@1AAWuw9iVYQ5?WM7g4K?o18=Hi$GdxgS%mY&B z5A#nvD5Nvt!Gk9r4}$Yn4ZyxC=2m=lo`AU8=;`7TP7#aEJ6p^6aLSdLtol|TKKtmY z{nVqU-p}TWtliCXNhQe--A=6@CbD7sKMzCvCgF zZSt{kl>6SH)|7G2a4c;D-Ttwjj{|R}KSj%6;rp|R1g8f({wFp|f zf6*d)QR9@?XbDQcuV9_@st7T`Z{%Hm9YJpB#5rAtDHA=^LngE(jNYIhGO+w=VR;(t z)s}DffhHsYq}QYv&2xffCb{%lwmvh1nswO6E*%*U2zEW|oI@EWfvBsVxD-G^EARG; zt8F3-W-UEVN2@knprpx~)phhIG(pByMdDk;IkfCm@%|_+-?2yT!|(uIhas&Ol_(aL zmlwv-eDG#R;bM>BL2x|V_McFv+*kzsO`5(XJkN8u#~30up96HB(qEx02kV7!$SC20 zxRLv34WSO#u^Sqnq-5Qm(3JqQ@*PN1VQ9SsO_3Dx#Q(s(K>oQa%hi%fd7RyVmTpi( z2i0%BcdicFh~8&&bBzy#Zav}8V=?A+mSAklOyHz3*z}}u`M9rZNSp3EC4iiEwBp-{ z5L~)5C=Y;g4<81Nlsg;z7i&w8Prz6xK}=H1Qg44C%ad$Ua@M(B-n^sv@8HZYNVGxO zjh3gk0NZ5&XXQ9Jxi##QgVD=Iu2N9MP?#9#+BAm|;G_3!9m8AIjNEJ4?or7WVs6p% zi9C5W`&wgD9jQgi#4rsapHOx7!MOhANrtZ&evlPxiHwv<*hMt*Y%t#pBM;K*kcNet z^JJvW`@r?~W)Dx#ByIBGOGUkPPwNB6&Y>*Vk^4A=>w{uuJTq3?Zn{ol<%1snsc23_ zNkw8y4a=)v?~NHY9^HoIwAD2u@;-97Roy;GQy8gX;%Xm@?BsmY}m zVnLR&l~()b=%E+lXZL$8vKDHet|naBcV8+-YAj1#=wB*R**A5@sx`m4&F(fnGg=&q=C+ zIdM$m*UIZ};jLiDq!yIvj8+`I+Y}Cyi!dE8&-}3=D&P#Kb!owPIg&swaM7d_^uszP z;-hu*yx^<63$+mwa>NAC)LEeSYsKSk48BE z-v!|t2s?qlUdP&wLKi&GMfgA1an!{1EX5rw$g7e|h?rL(zn^c-JnVJ5`+fh^c^Nr~b~&;9-g` zU8@%X-D>sy%Lio#-s-+*U$E((#*7djoxy{~VZMXq2XDgq8I*M5Mj^hQRu*y}R7MSx zU~a>q^)&F!RG*sPpi8kk)k>R`cTbwaU|UVw(uyu@_5z>v$vChEPR;_M@%UwEjQE!b z?w1cgnTH2mo@{okVu!g@rkBVcgbWpeVETl7CINY?Zc%pG9>*yrX4c%8mF1g-2b!R} z5$rVCocB4~Q2A}na$6?~9_pmPv0P4zor^3Po)8-p<-eqM(RS82Su5d(;-!sBeRhxj zaX4R6LM?S6>6b+9Vga4^pn>au1?B$lI)#r690AiAYM~wRE$rJ;N)(rFVnT^f z-LKbSY--?^71vwiX0`0tIH;ay<CINQO{&ge6pFHm9{#$%^r2?#RJq*_;?l$Ta zHMvpn+G)qv-crbAGY;)^Y?<`SPWN)+Jx@jZpc4{V-Io13#djE6=s(?Kf%py~*GkmR zBP^E}-=XT$MMIbuweT<6X$KP2H-}ufyK-wkbZj*WruF4z$G2fAMy0}Q=}~_o*giKh zs&BQrYkegn;0>-V9aV=e898k7#WIZ51)SgFzuDR2q}KyN9)qnAc*4?HAX$)Ern|N1 zh5W}P*ZMcPP!#RwmonaIgc5n1eD;wRSQy7g3wX0!1Sf0obJWoQ6Lf?4-)yq*1zTB+`oO zl)8M+N_*A!bG|&KEXlvEboEfT1KLW9^**^DRf2w8u|ZJef5%%azihpBT&2#@X2}s% zC&_(7Q>FIry<#8q%q8=rEjP37cG@oyPv^@M3o%o*4=HkzX*&w$VSO2mzwo+n!XPZ# zDp`Odw4C?cPz$(TbP6Jxi7j#yS)TgF-z4y6$dBX2h@0abj#UNqTbn)Rq&v4hth4x6 zdHz-Od;JTMq|=6#_!0Ta^Rd7a6N|9&=A6$r{O`2j61l+{%0Id|EV{uA;1MMR$7bW# zYBgKhR5f~m7YyGWQOkH?SDWmhq}OzOub$<3)Sh&|b)!rjtSs>yA$=M?e>Krr-Lycc z7gpQt7pFT$moE#I?SgR*$x!czuoMK|vz_xYx6|ox_$BAdCedj>Y?c8mWGqmF)3vgd z#a#XJ81wau0UVcJti(?G=>G6oN%FmJR+XdrT;F+_xbJOcbg4KhuG2J-{syA`;I*B= z+t>y?r`XFRBC~hRIs;OC-Er{W!CQ|krvg0e-;C-gM)(K#KK6s7YO!Qiyykr zmCV8>rGA3%b1rjQJb&-x?MU44KyBJ6@3Meu*GirUCQH`QUYpK1#v_)D?9fC; zP#|YaZ>=N??Yjb9c@K@8iT>6CQmPF({5n`MC8Oz*pR5y7i11zZ#DN99T)oOQnr7(x z5=zE^Up_Z)bqgN)tQ(yTe^}=~k&Efr-aKRm+-Lq2Q^RQaW-f$G#2}U%Du>_N3nN*o ze_Vcu6R)QDgsDDFhzGL8&~EP3Fei7s{-v`m^47s_=UAPsS4BLcaGZ|b{TBB4#Iq>W zs(CNS+lQzUB%hx7alj+CKWfHh_%7RR*=yYwe||T1!- z2&2L4oSXE`u#6|@8&xXJmU7Z%ZF&)ZustKAw=!W94U-&5ovIps*8t*8fzD1hFYSAd^zrxu)N(ZTWXJpvf_-sI*-&@TFcGC{P2{H zBTw|Ux{7Zr1TJ5{UGiQ3_+M8^-GBd_h912oiT8y_$LQapiosdx_#uI z?z^}@NZL3G@CCy)1_MC-zAN>zq;8TXNfWVLJ&7Em`;)?{O8)_bF90g1wjASUjhjWR zo)~42wjjN$U(1YCS=obLDy74s*&HyEi8H`(XD59p zx#Wk(FVT`Wsp8deaPy(dN9Z~l`MLn%J6FHWtfCaK?>!xw`^M%n&Z{3Im>nK}sE{S| z`==a1Ris&!|zA|ntM{4HO zk67S&fa*$VThxulk}FD_UsZ7;qJ5Q^sd*OkB`fReDpMQ0-d4I8$B1_2NC!E;$n6;v z;GatWp<4#Uw$HawH}mJe8!+*O)LeT?!9%-=hv9!`xb;#6!m$z zz0pJ~-Ah;wm?izcVMgVzR>liKZlpPWRcP(PHV(bv#Kj>wzTSsK;l78dKc*MB_YCpF z&QZD_0!%owcU(@oRe<>crQu^(V5p_WgC3!BXQjloMt^>)0eX>M@IA%xB3(+GrZqte zp@DqZ?5WGpO4AGLE!UsouXuQ8jcR_^V#~_IFFg1dK&wuA)3LITL_SRTbRsyG2 z;Zzui^0w*(KYB4h7JtK2KbDTRKnsaV!)Re{F~nJVFs}BQX;KMI)JWI%mci8n&YNxb z5bs2ovWaoZz|_+#E8TpA#jwqSRmQPzBe$eGWX!9#F8)8ao={lm;LR`1*a~Leq$}Fg znXm*$K~r57XB@-eH-gX%q&}4T>QDA7f}UI-wBX&kmKw5(P5r;x+eub!ia1Yj&b@Gh zN;#X0rb5f#Mr97l4bRdis%JTlX$-4v!@7A8a;= zyOO+KqF6sE*|L?D*7B9a*PAU{^0v!5DRTSm!l>xSdb*H?g@2aF{3V6mj>b_LqO4+3 zp!l|$!O?-7R$&x^ED?>a6rLc?7+{ zirCzeMhX650>NN~+Y2MkK?lq#9#Ky9Xt5@x%*KrV^{;lD!{ei(12ln5Z3vQP61fu5 zZtXr@?JsaBw-XpVNYE@8D6cP%tu+Sy`_F_=T06CTOXeMeKzAz!Awqt|rqFJgIBIys z^{8;u7Wzf!^+iGEm)Vuq!z~N`o^~9s_g$R44s>ej7{q&mc|cXjjlWxwoT}c7M;6R4 zEjE<_?UXJ)Wb=COo$q{9=Oj*59jU1OsJP%`*L~|N$n}8qQn3-s&q8`bNa$1f{|tX3 zuW|j^J%rQyo}6v1IZrul$hO+5nB*1kY2}p;c(f!-P~R3Csy$Wy-TuZj)(=W;;}nag zyCc6bDG~RZPsIF*(Zct+Fk(9%;lG02B8!iYNJ;Cp$mZSQn1I->miEbrQ^d`yW7yyq z6eB+7t>Kf z3638=RR|$B%^E2Ny>!$kglBR@yoZkc@99m5Mcp+htefxh( z8Nb^#M>@OR(NEx$w+U-=)st1Hwq=!*kJgtRUmzMAjZ1q2DZcyGBkQSkg(bZszC1k+ zpx9Vz%j2?G<&36u(;(liDWu~g>=np?3r`r68j&sv_L>HLgIyx0`1{QNhwBqww_}q= zHAff%-1P4_4U)qsHVfd+X{+l+audsg!?*R|Pi{UVKE1YmTOvp~Os_g)oWVgxHb z?OHJNqIA29Sqb1wh`U%PwPzGVeFZs{jCUzEny(RX;N;dsRcU;IC!!3ikp6E!QT)!l z)Gyx)A0*VjxOLvWEvXCmzz-X{Nv8Pnz+9l}U?l4QY4!0`tmJ?dcd06+z*e!IKy|k1 zh5%n8H8X==z?*M<-+3QhVPz1hyHT`HO7qR2@@5ZtP2aie?cS7y-t9O$+1)xEs2NyV zQDEC4`Kvux#&Sj8wSa*|t#nw~u8Zgmw9xvSBwBe;d`u-ty3v6D0rAsoLVMSbZ-X-k z@tVl=#)@CVtF{myLw#$L?us3;K%J$E!meCn60O#kTSSA00#%I4q{X_wn&O+m;%Qo7 z20>&&SMI}Q7+C(=_SV4GKaZBJ#pZ3G0N^0#{e1q9GTvFlqszBy+2@|@%B9st@seZ4 z=*0hch?~qRtf{Kuop&4s{IU)KE5J@Jj!S)>@2cDf93tZTpRo#JbPU{56mAWwahpF1;VAB2JCqo%|-&Wr0|mKjj03QPpaeH@6GkJMGg2u00>D) zgzKddMrEK+`>=1eRF~c{a7GFs3VoCH`OE%lC$YZJsX=aBsWCVoLjrryywimSB_R29 z6Xw~>)^LMxU>e;T{ojZLM85PA4TTmSWV7bOtNVN?H*B}TPGgnCf2HCV2*za;V>`(8 zCo%e&$$ym;02;u21`)>eCQ*Q(+RC^@Y@`BQ_r|L{iMj%WLU6;e%l_VobNJ^YrS<7G z{XGS0;RRt9_jdG9h9qapE?WOlI$GGAP8Cy@!e&;23Stq`(CMGgvq_S<$ z4qr2_!wlHE_CJGgvP@`NE5(t;-6@`V$urh6Q+_qSx0LSKv&uT^aGYuc@6VRlbya{j zR3_Lwq1ebX+`e*SwCo*&z>0W`P+5RjM>axjRBvzqbZHKa38tHfnkif7fFV5xZWDS= zBQ@63dsF^mWANI1gJdx=QKeM$Xh3+hU@T++(Tv0P#S(XjO z?*HG11|6mcU&D@NI1E;ooLG8^h{ z2+Uaj45b&)RY`oIW+;GomGI+9Na$}-Bor4et%!Td#vOP8Cly}RFc(Hm26>(e-9n{r zS&il+LR)EZB5xb)u{kqf(yW5=>5j*lpGlPzR(f2WjZuDVlktt~ql^yUE#L_QgH&v|HsRM$?xmY{yw>7# z*j-pBQXrcq2W&0nRGqwg%JqfIG@>8v(xUddpC0;D;Hme>Y?vX*YALClbLGWt)%Rw! zykF&7^;6s-YMPJ;HQQ~ zBS<(nk~MHO?oqu&{5=ov$=DP0A!j(0^BD^)$0W`fwVeEG@TIOwb|@t6o1BM_YuThR z38%7`S88+e{eWAj;z*AsDkuJ4So;A!-Sgt{uS11A(ClkFFCY!A*gM*2n4TU4XQd1N z&?KdP)@YH8Q9kZ(m=@nWgT$o% z>}wCN@~QD}`Ow)PAG}x+BW7Y#bfe)3Rt3?yZB?tqBM}ub4N53TZxSoQC2M7Us{VX^ zD=JF1$xrwmUnu~k&H5z5={RNz+?}8?pAl7SyzDGg5x?&hU=o?t`0=I*T*tP`_qR}q z+kLP#DH%ex9{+y)Dru~H0bu>m@cQHLjM z6HPm6y3N;LOW`0)_8i~@=$9%D!)owCM-Xm+%t2v*)RE2F53imhm2CQy|xl^7jyfd(0jD_Y~aZML3y)z5~HOQG{FF}FG@F|>P$^7qkCzjid! zvGD?@p|p2|^RB~p+#-C_9wC!+O;9?H;BNTh^6 zdc5h;8-YAHEz_eQVF5jzLBcQj1>a;Y8#Uy;O&Q9ZNBZ&$l-}!+b{{TN_b$23cKS5| zdH-ilU4mg?*DmcIn53PJDe0ilp~T8e$=?!^$oo8;_j+>&)b~O z;5I9%pI3f@B}rQ$=HKqzQ>ky#fCAyC9?g_gKUo#;g&qO$Syj90-96VD!0hXL6}x$b zmkhhE%G+O5vngcjuue+*wdMMuUQ^bM$*J?gXBVdy=1(8l_~d(_$tL2NKORSwtfXIfNdV_30)ln zwq^-N$?n7QeR&hD`UuNjido_5#hBDBl`Bp2*#7`%$ilil@qNd5!=x((SrCnXIQ}nj z@$FiDqo*;jVpLF`{G0<4IKJ#Rg540l2Pu8?p8(X){x^1#5$w=c|hFux|x&d%m8M@u8$uHHmuaZ<^( z#&S6HMGp64nHvZJ%$pBO6;F5il|IS~-Wzt>zD)h$KjL}3UgjwCg5Hdv`54;~Kitj5 zm$zcMb~D=s4Mu{I^a47pcQK5AfcYhh_hpn8NK7G=+Rdqtp9vFSN^)Zix6_i33^!Jg z9Pje`?FE3H80zp<8R7Swb>Ced3xgiHGzg1Tk)80weyeSB^=D{xfza8f z^u~-tGo1)VWo>n2!FV9CZkpcszK_V`0Fx{fH0R#8xREmnR9@5upGUzOkc;(U&s(Ih zx8sZW%g2mVuyhp&$kIfw&s)7LLWxtFot?&CCl(k`)nO|Qiws4Q6``bp%rK@YMVIG~ z;h|SAUrT@8p-A@OO7}F_8%D)qbUsUz&D2y(cHb|4g+$2UgxF5KGD;=eR0i0Qkj5Vs1YC;8m^LL|LERc`}Xv9`===I^=-YmWk@S1wrFMFv6$=amV@J~7l@n-#c=00O4Ce6gv{LK^ zaVpKmx&mo*NB4Y*IxUPG0*1>{a>+`jTr6t+E-fRL?igq2PKR=&0p|6JTgLIX{F(Fw=2q;!lQkyuGu{3cgVRIFEgW7bTo|HRDu9+UhoOBzPl;KX8_eAIcB?rE`=A+{V$OTi(m3}tG6 zSlk1rSltQl!S!Ox4d#m@pd|S#e3;pb#L>I8to>Jr1_e2l>wXG#w4uDey4mfd zz`JLgKLy1+M;+2wRMH!H#CjjVo_kOKS6p^cX!+7AEAnm805#|i=Et@0?%y+EklnL2 zUK5#_U*eCOn_^g}-(03|wU5N7U|kXaz1BtM+v$Rfb5|@mh{JsHg?6zP39n5uOWy~Z zVUeh+z~95;+#U0HWaWCU+r{fNgj&wKXc4(nv(=}kADf%Lfve-jw`;byw_i@Fm}XWd z&&*@NHZ>A5KADJmrA!8(L)@tGzGbgp?5)Gm-!ZH7=DCkA0X^~wgz(hO+fYTR@3plnhZMB*&A4VpI&&5!mkdCN#jNpakS9*AQjx0JqJ z7Uu4d+a_HM<-pc#r}A8ApmPwc&`y5+jL(dydZU%L7wjq+adS$+USIJ6$rQ$jS~{*i zEgMg7R0KpG!wFf;_LjWae_nwE)ZOH+x$OHm$KbIg10$I#4X5j^>#kJvEy`uc1){d$ zLx^vKVL{M<6^$Rxp$lgk{dzwy6ktxf*4LceYg)Rq9HNio_R*DRxM%Ms`268ZgD-^A182N5wUR|67zJ zMUD6clwwxfguT53+?BUu26%YZ0|l_t<))+Ap3><(vD4o3BS~KQ3j^h92BZimrA{x} z7PVXvqRid@)jnss@M#Yd?UYr665N$KO7 zD1cTN7{(ytr)jCmMLLse1^b?l6!&+@!S zh>7rcXKQDk<`WTuB-(H0O_r%ZpV~YEO+0V-iZL-QIW6DFECtVh14qMIV2Nf6u;$y5 z$KYE2g!~#$!)mew2p$8E0%gbD0}Z-NDNrH?;X>f=A#uOZ0BvLcrh$oK0BLjK{+MY> zFEE+)uK36rWRzR55m%b{7}y|dOyZPFvQClb7>3OGcsbcZ6uZvwQ^U6h^Ai$dTGy(0 z;lp|HW3r;kJaQMz(Q{QDJ1VtbqxILNB<|{lNw7V9{9O#3%fn)!$A%xTQPa(h&kd@G zd3Vp2YbkantRmL|kQ{W?ff*OQy1&nSX&F*BdC-5GfG>6eoNbzpJ(Pkje)=~R;E*fI z9pLf)w7>?9i+4*uIHfB#-fZa^CQ3_P*Pugj*p>HptZeTd9L|qtHaf1$9?KH(h0sC3 zjijPh{P%6GQy1POtIa8fEPQT%g1SW&I!1EuD8P|9z3<1ZI1DrLIo8!ng5rnF2eM#S z^~97Ty?{I1r35Z|@hV)Ppm=P``5_K;p1m^rnG9oBy=a^?h)D25(rR~^#Ll3%nod>D z*2K>LZP)N+&NxR_nQy+|QxepU2+jwuW)ZF$9C2CkSy$w`CqVJp9;KLe|E%!Lgcoye8^4Zb#z9Mb`hg!P#;O z?p;|TOkmT>`_yo&q2a=nltMzV9HZ!B#N zXaUD3QB?)a2cE+(Ptom{_Y&h*k~?Rzb#Z&728Dc6mhN{oUZl>C%4q16Q#GO!=uL%& z0JL#jEHgF*@{(hbSj)QdJjC|-y&lVtrY0uJD(Ow>06xJ}psNx~oeemv9-Vk+1F5>C z?xPepNX^Q!NtwosV>76Q%;lQ&KXECu%G#7&aadJ*+pD*|{&Dv;ubn2C$ z&%ZMMsxMq(Ea9DRr8q5s!o{X2#nF4D>e!2SVN1!x6w>N?aK_h2Ja&nrnmn9MkAvhU zlgKA0Ye|hN^Vns-%S14mGUuBwQ-#8&u5G{U^^!5BUxn$^qB2U7^2p=U^{49_jfJUh z8HwKp`ME$aj{^J)QMt@WF1P;mzLZXEQ+nQtfu}U9mJbjija^W9qeb!RS=a~8)4BaP zYjNuePRr5JI}CtIuu-MN?F|kmvRvKH+%2DGRqb^@+?6ukvo~iNEQU!g9dO}BXy%pX zd5xrYzKK;b&68~kIzDK<%jxK@(rQ85Za{R#C7%AtCGY%OV^Vqw7TgeBxLnhd#dYoe z0W^na0I-el%*8k|M|n-V2_WE;D1A@1L0ouz`NmYheg=aKz(2a7a=GHEtY0d5?QL+c zmc=YI3%-dc#)lSG3lVQ_Jjl2HO3ed6zys&azbbQB5&?~*ManXq7YOwkH0na~S-p)j?ks<-}h?{Udlr&11Xdo%t z|Lp$3p6h;E)D@1oEZb$r*q;y3A)W;f1qZCcecAldW?JW$J|l*2#S%7-+~$X(?K@%{ z{U_KQp*&ZvPVjrQJP^Y?eenoO_ch!_#@88{m4;eDyALx7BnZ{)r%lf7Ej&mq(G6Y( z&#USDh&FV#Z=UA@7Q}n><|BG6*Bm@?X}OTpicx7t6axOt;wT6XPH)Q4LHn=ZU-ZZw z?;JAl`(#-XIgH($l^{aSJRl~xa6yicR1((bGvak*iiVCSl2T_Ui~}?b{L<3I-1vWs z+1^u{iJ-9j6)OY6vD3Mi7#GobJo(o|@4@hJAEzh+K2__RtT;4;x^41=81Ju|!EA^D z8S9sMi&8{a48>?I9ORf!%b6*Kh=kJqxNy)L&NtxbQZJg{eXkcHwxVJ)`HM+JQH z96*qG#Nm=Qqr}29{uFYsbm)6%JF&(KfJU62-L0BOnhzr`4^oCT6W!=e)xd%_nr<1A zTa@X)+6GLI~`}+e9ES#6rd(LZXItO;cH4A6*(=^Kn|*TFOs%7!;DB)1WFIZXC*H4 zV{Ipcz=0)sp_F$zNY+>kN?KV8FMDr2;=>XC_b34|gX%-}ua8%NqXss2r<=~2&hyR> zeNJ|m^Uk*?de<5Q&kng<8Y{p@Ny^~|d$P{wM@?rv#HiNoD$__>#(3x8BkKp1{*^#` z^!5QidhWA6O0+7BYmECDedtyoS5k#A!0sGijxBlxrzad&9b&oCE0f4IL?ZKxff6oA zW%?16s>gcGqTa61&nUAgJ@{~-iAz$tr)1?iS>j|tb~^Q zl=K%A!-VBcV1A`JN80exiL{M~)zuX-66fQ0BS~im^AQL?AAfx*THMZ3ULLjA^n9=B z{1{&teA29d_{44=+VnofY09}sNe<^$3b`ycyjdm_CTi(F+FrSKOeAz%Q$B@owViB}YjY*zQr zH!tIM_Rq&Rpv4(S1yjRoC83FiJT%tcun$oiyk+pie^Fwmhj+rGZ}n&=xhTRj_I*(w$rCYRke?<`;p+@D<^;hTa}9@sn5 zFFwd!0dRY#eMh46N{I<+-upar`pK`zDm!6)L^4;83vah&nfH^9$WGp{m{Us<`T2;Y z)M&x=%iiisBc>T~nQ_!o>Wr%QNWu$X=6vua!1;~gc@}8jNPsLy)XlCrS%R%3A%wxT ztb~Y@y*XK%KziPH;@!2IhELcQifuI8IP13_4*;_nmbI+E^+WvnfZ6n zNZQf-HUJf`HuZ|LEg>u<7!vN0JtJl7$+*62wBQoN~h z69%=r-E<<=drBtf9UpIS+O*n+7;@POQLkEP>K}WJf3;XPO(ky+rQ(Y0S9hWb`LeMk zOiv}25hH1-mJ+Dkfuw)A~4x#@Z7xg_;OHh7=;WmCYTbY^bB;9L*qUo-VRU32*VAqJjAa26(VhOk~XInCSw zRKvhYWOn9VpSqos2&g8O6jD3QhkegZZd#li=&N{m-=g;{ECHyk8Qi6vYxTgV^HgF! z)rdoP0PN_=?#X--U%KRm%31X?o>ljLU4D#L<)eBcvC%mAaNc`-tpPe9ml1q;xDQ@9 zB?bj-UOYD_O!-XeJdPDIro3 z)mPnhmiOl7$i2PpO*DLNltm8U=`{;Wq4N07x8smTLuq)GYp3PCP#osQN5Fjy>sKRZ z_}pf~hquR4JJD&Q2GB=A)oyD6U{Ph=c);;MjmjASFyVrC`GP8giPX&K=%9s>4a#8Wr~Fhth`5P`S1Xf?7&yeIir=-N%7)Z@Z}xr@$zqqD5n+YVtou_ zdL8+4~(q>o!jV7V$1I2~`U9lYFTQ0|Q$tO~H?XfO%2v zFD4l!KBp@s%0bEtn5d@X_v$<%XRHYNmdtdato!kx7jFdiQ!DNuy0P0mr*!wdo@N#z zE{46JzZiA{N;Y;OjZDmVCXwGVGW=neOtD?;*b)gJbK-+-5=6Y>h!x=Dq^V?Af>zow z&@crZiKzr0tT4w-s|1~l#|59n1p~Cf`#%1$b<+|r*WZ>UUsvN3eG?Jxbtab=A1usX zh|+N}tEUX~>2?+7PEI%zh+0CvflEndp=`N|9vkOJr_Mvpb$>NfR8CJe52uyI=6=YV zUd|E>z(LeNeLSjLUXIkbNj-7%WxJoH;Oqyvn8rRRNzP8_M{O+ZU691qCD>R z?dms-anvl8J&FQJjw65=_*>bbdVl;I#N}28=YsFSA#xcB&Rar~cyd3wdx-9v@l z0f2=b@VEgBEvRmoUY}ksEcyHzGUpc9*jRt^YhMiW59pbnf+w3sbtu|5R^WyfVA@hS z*pQ?t)i=dEPO)oge#zX%o@4yB0x(IYq1nS}!zsOt$ZTvd{@dnUC|e(YFWjZP^Yuq+e=>vC9Ra;b>G2NHr|TdTy&zCE;Z$ zR&h>?dX+%=mU|+YuR-l!sn`zk&PMP-FVO7F&i2f%JqkFKw*iOaJzSo(}DZ@Uez7F9W$zo3_Nc{WcWF6QQmnAZs<;-L3_U>VqoGNpc@Z>5t(cnU*xUX1R7zie>x_3*U?MhsP z3Qh1P=a0QGxlrqoMTGb9bs+}lK;oocTI#*9$skJ3s5GJz1Pflx3;MC5#BFh3(&QQF zp*|sRS5N?>(`7iCxKTY0D=7VgsABVd7XBBh-`g5+<_D;rvYC_eVo*gwdOG$tk6y7_ zOa1H|z(s~#@Xy^+ScYYVLdXm3`XMLYwFHrxsiO)94_vyZwUq3W>jL-MdFoZu{4H#Y zZ6m+}eYxYjW2jrIn27N21&_X41miILSr_j%_O!BdB%mBdS(9blTROIV0tw6TmVIXq zdyZDljq8)^u2(w22tN8SxmD(71u%6|hp$OkRcZDwST_-(giLld6fHP2v_pwmJhvK1JdDu#P@mSyk6Mb3U>N!s>jGG}6 z-`A5H$_;4aV`q(rQ7Gq?3h;QK5%2@@5C;T?2GkjI@IjtaDn#XMAa43}(%VztnXg)0 z!5z|gJY-rE#U8;X^X<6i7yyhKg_|TRxq2-aKWRsEUwle~d{_{kQfwrmjjPo#xw4fl z>2zFny1{q;GWc}*Br55pSU!;&B=H4_drg|3pHFgC8rj`jBbu&FuZRDoI&(Z$DpThu z<;rWWH+%N%C*0-i&@^a0ZiKUSeO9{)$;iMW`}{2~@z~oRgPJ1R5}az79sPgGi;*{X zc35Nz!{hPGUPM_noh1WSPgn2#Co7Cz59D5jvn$w^$phtBYe8_((Zqf)Swh()=wS2I zxvPSqMb)~D&VgiUt;*E{HH#i=+DXbQtc2j+-{3XeHa}5f22_?++XDj)7`w_kn?J2* zJ-jM*HU3!YMNTy;`#ps__hf2a0_!qf_V)Iwn3nbqczmh=!OTC{bx-U+yEnP&73bU( z+)Lvf@8)~7nYItA1Ay3xUW71BS0DS50b)vB{zzJ%_% zgOd{=-9I=GWsa(Wo-8Ncwzj#2&CG*RjVrGY)R8@nNl2GdAS`6l%hf+Rd3VAm>zxMr zap3!%^aDD0TV}1~wirNPbK3N(JevHG1cf%gZd}Hn0~p`2BZ`^)PYf_L-cmU~25|DC z9)ZPQ(}2}&^o?Jn^}ZG{f`4VHtn|}FOy!|MD=Q$z?l5-5ubq1Bd+qP(19?VFMI{eI zBwqit_0Z3wAPsdlB!biWv!n%vVLkTBFN$I&j7RIT7fjxUbm);z+BT?4(1Y1UczL;f zL>#Ruu)?8jTO2i@aYZ-1p{5VBo?6v}FNrJnL?rX-ox}1le4F%&U z_eXnVsU*)TG&vw0Y-0$9mP9ULPRvkleR!{&fW3w{g%(I_>~+ZTa_( zM;rkcI4bSNTE|sg%m`YOS-QB?<3m7yp=J8fIwgY8%J>MUS2d&tEG1x#MIGvUmizuz z4%m0uUoZ2z3amj(45BmDeS0H25A#H4Zzs<=Z?0xU#SCg)Q3<5q zlP?1?x!NXm?O8<_xLkJqu6%BgA*crNyg=jHn@H(l;#Wqbv;8N8TTHu>a4kOoSG^{F zAMcrrQe6D+!t)g`qpyWEaYmZK-L*XBj58-|rBk`_%BRP1fFB?2j^F2sU{ABbal&Mc zcC`-NvtXl%cz&?rT{Ya{+Q!d-W{OYpEO-*LQ==(IT$a_p(YWo>Ekh)6?Qc#7p8wJS zrU?)JD4!l|bj&5S&Q5lio&&8|El7K}r?sB3nbz5>u$aI@QFo7&$ z4=MA+QOy<*4mJB~I$|27p6Twuq5S>A$bLfX{3vFyBA;=iUh?`ET{%PGfennXj3Fcq z?RomRh?BQqKYB*#95yzE-zO#< zJ&?wkCBZp*LQ81HAm!_Mz$-y63rUC@YF84mt^lOZ`@y?YnpggHJ=Bko_;PsSoC!rd zhxTlXf3&g4?O8aRoh1TqQl;aO#k46!Ost6~F0*6nv%3h{$xz)Qx9e5kkKFhoC`l9c z9QI!5?=P`d+vMZA{O^N|@kn}Ka<0p8+(PS*52o8+t$=hI!I4v+G zkz!f*a)V#!1pHp3yjEdueF?J!*^VLXQebvou_E{AB-C&>&eiEh8%9qzUCv(!3)D$Y z-D1WJ^$f(NYg?qw)Ti`Zd*Exdw~XNM4858?ki^2TMSz5}l54wLF98uy8FgPWh4YtE zH@NNWx9V`WVAHt|^Vpwqz7lgtPQCqjiO3WCX+5^{wWwBNYqZG6!hct|r%$+lxdb*+ zTCXN*^kWFxU@PSEdP!v^SLv53CaSsIwbsV=C&q(?l7$MW} z)?I7r#`PQ%5Rm0dn$D!(9_csexB@NF_NXv|yL{8tR$%agVnwk{g>*bvL#LGh=q3MC zv*Syr%pc+TA$kShn4$MBa3%FC1uDLRKXQ_Zz*y-nTy;lykOY`tbpv`7X0TNoX$jx# zt?fOu-t+OVaW#;)iH?N8LU^$T4o+Kd2uH_DKgH+A0MJA2Uw)TZ>WziF5MNy{sQLjw zf0s-R5<37O1PEdtjX|gTr4+e>`S~TclYq9OS1qEp=#(Pw(131v8=`@MW`FaYR?sar z6nk6~zBz$z>0okS#X)9Y4W$%x{{F>vEgC7~dn`7$uUgAh&U^`j|0DA?0b-ePpm#KU zIDV7s(RSI4&V~D-AVd{T``hUEUC+DWk)OleA>la~SID?m&G@5X$1AK)uIdP-=*|~4 z=mf=^0)~#&k{vmWp88X&O@hN#{eOy^lucuDL&ER3hx3ZcrXUndsb@YtK!;C1d)u$G zC#b2ZDHs?|0N9Yz+)*h21dIaAxG>FCdLy?ezVsKFcU&4yPQ(m3xE&!v; zmFo!h!1DlwK%o0(`Rr`O)s>HU4M%|ih}UsMDs2Hkb{=XsF!eoSe_`mHhTUFTv6W+f z-lP!xD3p~x1>m(JK!1w1heuH9?j^FGqnNkw3vQP_{M53RiyIb!FMZ1|#80kG1stR? zuQj&sUzhK4+RrVK{W{93CK}%6KkktB4YCkqEoPjg=KuCxoLHvmn`=a^NKjaV0x5kn zCU!&smjn2z;PLC#((Tut1EcdH91dJI23T!}v$qpxytxk>E5 z?3(N51I(IX^dFQXdE)bFYl?p{e(amMRN=Ab%xqoJ5;4N6amlbD-rUoN5~wq%Rz8wI zvT#sWb<=_>GPT=1ZY~8e?)m6l#=4(4!2spXr|~3r3iR%Mki}m>I}Ot9N+XKqTh95? zATSyqjUUC6z&6Q(J9#G0%l#*Y(~g{)Y{%_-?nqNK)#0L;3(kgib$om}75v$knz?)e z<2UHoz~b%~N(2-+P>QS%r)sTO0j0C+2sn2eha#5jjwfxP^BKMNn4yETe)O-1TUwop5F$siSdvBvquei!v z1M9R(4n73lANjg=CqD0%h?RkMNUnoWfmKxjGVALVddTl~Y2vUbyQk?8k~1#{6B5HD zP}cT1c{Z$7a;?|~TTN8Ai-7X%$iNs6#A9W{L2_A}TcI-m&mM0Uf2*o)`ne!>>wKr_ zgt~FIcbw})ua@Wt8kdL0Y~3gk5i3zFP~JNQmG&3QLr55zYxxpk+|4kq>~9L zy0*}HrAFu@?xyj7oT+hp?+GT;_RgmP>G6e8|Ek|IN=Y3&e$&<~FCQhZ++mohn^9UR zgps5`*q>mKM#WFk>$~LR=HzLT5I133svC|Mze`QUvhm}DzgB_FZiWGyRX~jQV;1kS zGrz0C{&F;AcPxJ~Zl_zC^ykm2r3315WTv}JHkVd|w38C^SE8QhU5s)6?64~Yv<1m| zgB@$1Y)+)eDW>=uM6R?ae*k^c13pImY0o$?w+j2PGQc+SAIdpg`;93+ zYdX8yVSD~7`^UlV{>IsJ<#z|a*Z+TsDW4g~2-e-)y-HS`-d}luAvAQo1AV6Ju zn%0045g9H^EiM0w`Ie&|eSv0vrP-xi`#l~p$8ve{;u3MYHo(G1dU%2PEV!QIPQAJC z*F6?E2{iNOUibkrs7)^mml$IE7o%1Q$Lqc?)o#^vvksGNks1iU@%dHmSBNyr)mA^$ z@~o1%vb!$`%MNLq!1TvA%kqhB)oRfDBNUqtR5(ebQ2cK2C9bkSoB)m7hr5P%F| z5rc%b^+AdkK?|(@T>{Z*B+oEiUnNO}tw_*x)X}uI$$xQYkMRH?-;Dm>e-zEph8F)( zo=aS+HGs$dV_DqBN`7>p(Eg93^Zuv$@uN6Gwrh`sTahd4k}Y&)bVFQwMXsH__uj6N zu6=FS3?X|bSJsuRY_hkKlKFjqzW=~|+#l}yeP6HFIp=v$FD5*v+NRt1hnp&mzX-)l z5Y#*dug{-WMjeygp&t=+wh?Pty{dZ&L4r|61CwJ~^~il>VjWHdhfP)1`(giCO~c{2 zXc#t_jm5E}PNnZhHlnR{c_E}@3#0TV-;zHb4xvWz+>3LeGhPv=hXKxl<&ch$>wo{4 z`xW`Lu|v?_g4^-uGK{H~ST_<{T~e$rSucr+te{|~MehacEjz*C$7SfDrVe>?WUPqV z8eiacTkYb;zb#v_?9rf@TO_|nG42gc9VhbGSz{KYdYtIwPQ4?X(a?^9E;Y$bgNnT5 z4Nf|Ct2`G{wpjQmn@Bt3`xpZ(a%FuARP~5@KN#<~TjsrdI^#s-D+Ia5AO*Q!#g8wTo0eoocaSXkx`2g%0s$R`cf>6Gqu`D%1Eo z=#ay$9Z|nMPqR?cFj*93FZPS{Ll_(!U;4h?Uy53d;q$m)L3RqTC9tQM*qSct!3K+j zhOnmAeo(5$_?4-j5caD?B@$W~yz`RRD6=%B#=z$sO&fxyd;6ADU z#=>Y&5hZmL!#PAqnuY2Gzlguk#04NL~7x_&+K^_=#|+U<9MQorzBELu1?WnuYDMuW{uUgD=9T%@mW%D zK{azl2fw=bL_5$4^5G%hWyQ7i5D$(Jxb9XiBeTS-e9bZh530^hrc{1}#zbK~xmX z%63GvW_{P_5MkR?mw1@_PYPz`T7mZ|a4no=?3q=3DZznw=@es@r6uNvRA19OD;TS? z*r*gT{KBA}Jg>9Jj<3uWBidV(9LLLR7%z?Ejs(a9u(i7(QTl#*_GWxIdkQE{{FseF z0X+zR^ijAr#^lvlB*v}uRwXJHWs=b+MTt+IDao%rt4Hg%A(YKV`hbC7fha{2&aiHtzD-Fr)lxgM{LA~9xw#rkl%YK)kL!P4QC?oLq&Z3M4%39flc zS}t5^&44Ly0;`-~-#TxaC%jFkHM+u;xrWk#l&zcJw{KZTkn^&uH$%tbp{1GoR)`_I z6xEDpg*(1&vTbsIit`{h10mi{>f!3h4isz#ZoGx!3D|I3KdSqp2~}TH4YCPe?ZT}w z^`BFI#=hlf1Apa9({KBxjLlj>)%6REtELtHm^m%2nRD=ZF;@E)m3riz+@cAPf|{O@ z3ZcbLOXU@wZ|OHABdp<1A=U7yefA3C^y^3TWm5+=f;r*U`bi&AFEnTII6>x$fUiLr z8m&PKMF&0ZR0~pplu+Ij0c32CbtSU+lr*k0 zr1W9Q#7;|^1tJ|g+gQ`#4ugL8T zdgdCqjepN@itBq6ZKzA)-se>qo_x|{Ni{8m7p!HJzD-$!Cb2qghNpN`cnuovT%G68 z4y*#NU^Oj*HAch(ycL+TCMs2{M0$;zRkiRxnZM|fG4?a&L%5}XXe(RB0wUm!6j_)Z zXWBR3tr6)A_!rn~&jbn;cp~16FU$xaO~3~X&h9;p*QpjSu_mkZN?>sB5BB8>CB?)O zO-sWeuP0@b&z^Uzhg0J0zOZ>3vAVI@qQLCUJ#{qh5#o>Dv*K-m=))jg%n`KTj<=8a z9efwz!X>fhr)c=ylP$w-5CYXCyy1@Qxy%1RH3kkb8ml!puSg-XA3u}x81k+g{_uU4 zsFFkJ-h5bWmPPE@`)Oa{N!NExjA3NSN5Jl84?FA{D6o0t&KX; zIfu15MD+^R0KO_gh^=?iw)ey4@0C?6{eYL+Z6)(B$rhAErD8wC01b zbiyRj_d487M$Zd5Tf+^KLN*4tINyq= z-T5AMPe`c+ntKXyhb9WO^3R2qDg$j9VND@HcaUw&bxZ$-ZKQ{&-j#|5}Qbu;+);qydtkh z@Ja5KZ-hjmj$HW(XETnS@t!%~h($ZltyevJd$M`!CedmNy_8mh62*^tE{Q{e!6 zG$-3#-%Ae|nBN^FKY{BWg|lU_TB5EuHdw$9urW3>1WYFAY!PD#EQrHtXyK)e(fKuS zJSMd!1fGPbug-u&Z~o8|+xb(3t7s|AQ#hJ{LBX9iGL<#$hh@(t;l4YL%_11~tLWSI ziQ;=fBS^vND*;X<=331w9ga4Oa$&Z41pDHd1$q^mK?avUO8hG{fLcwz_2Xv8(&pr% z*1X$PNO}t}$}zH1M-1G)Oh9}y^68?n5&bT$bmw-O0p5r|Op;5~0rSB$zDOw2cw_j3 zdU02l&_tzJA(1V#^yUjD;uAYLykH;L*3_7vIS^a!MV#2wgZfq;DH%m8u|0bFV5V7b zmXX9(pmbfSMToM;O4?TLyVgc&Cc+e`?)?mIv_ggJm^WehCl?oE&@k=C!%{l%oV&uh zbU~iudS+4SntV@hMXl->u)A|R-bKc~?I_LBKaW0+q=*6mfsWP31l(kY3_|n-@&}Gl zsr4zq_VOy?&RS)EPee?ZH{OWJnE$ybp_EvcX4nD{-G@!rXc57s8EX;4jFxb=7rdys z))k0#%GJ&ufssR8I!_q~!hO1R7Ju@!CHh5OlSX7Js3Yq@Q~)ttG>K}sYJVa_XSU-% zpV`lQ=PKI{QkNzLfH{<8z3ZW>iY#dc9+O z+t(=4RL%&sAy&?y^5PFbCFN^Iq>32r$+t1}V_;X4Orn2^@<*Y?aI?N_KV7-m?_pcy z>)+U_VCf+bAYR(K(ze)-;yBr4s$8?ys<}#q=}aA^x1XeAl==D@P4`e{o3nFSP%suI zLtmhr86SRNUESKJUp*lFRey~&$60gQfS-}|qHsog zolo++8xOipOj6@&etYKfWgwn|TWTnb_)wK(;9-Qtv@o$wB{5Z`2N)|f-1Pnt!Tq>< zAY2c(#NUaHe?JoQYZy{ZJS%!vB1c`Ys|=r{d~B+{n?OoUuHb#_wx-gkWkhn z*Wmn+0SLQ#zI(5aK6ee7s7`08U|zpmMR_Fo-iMQK?4OPZel>?ZTub!9x%cuFV_eN3 zg%4oL9j9%RIqjM=$`m{L`Q$viqx=>+Skbj_hbBE|JV9We06pnO`Y30YVUQHOwc+ZJ#3D~L)1*Ek*OuP)uN5?U=!b2T}A7-l51e2DLA?;Xcx37Ceu!E@##hWr;AL3Z4;;&O z*pYnkbJ7gqCTYJA$A~R;7@1j%hjUoYKL;&P3n{NPNy^(L%xgCkwz`V~b>;@`_bJ}D*7Ypwn4FVR#5L?XX6+5jctr*LK zQNmU-fUX_l%P<}i7c<_gRIDSl^P(Ehrtx6KwV+A1OyOp_JipwWm8=Vi&B%yaMn4ia zB>l1&5B)&M%(;-;d)vj-Uqjh2S{loN1ol*~3fd!DJ(DOFaC!mWa6OSZJpn||F za;a1rD|I2(g;v_NbOkX!F_P^EZX5>LfndNYaU$p0UM>FT_pd2wK#tOqJdfRks2nj5 zkx+t5K-$B|C+#T8wf&|+fc%6ElCpQTz0Kui#Ml^}LUm0l2*jP<>!lv{X|D9mQnJ}C8S-v9ttGJX&?YX0-&d5rM%-Zxn zJrrKbY?o0?uFT@J$6|k>{`at`06<;{^rs)Ksq-e~+x=6Gth^Isdd?=vlr0~bTZ&GN zv%9A?{gmlWkSngZ!e<(r^3@Xbl&=`}>$73BOnd{7#B6!WlTgXkci%JVE3#0q05y7& zg7AN@kU87d@5Cj6I@yj8U@X<%R?)5oNZGfj+oc@WMXqdXS8nta){wvHVoBa`XgL8V z-T9|#+CEd8!6)ABK@GE)*9un+(;FAdfidNX_d4!FXsA%;B>mr*EYvqZzqs~|dfabh zpv!JT7ns)^#xBDexwMPeQ2*tSm$VH7GO;{1kH4q-xzGUt(|eKYBb$K3IV>%#!g@-- z&yQQ00iiL0?Z%9HHn%Q6o+rKGkhtyaHX;^zYSA1)yoIUv;gqJ$G_&xXa(p8;>(|9e za}?j!lQbzE@q^maI`z33v+>Z)#gPJ-1r6-=%JgC5q{=?plb93#dBx(!kN`t#^1XWx zt6*5(#H}y{#exKvor)4wFuLYSKoO8B&LFd&5i~ zyE`&W8g(*fe-EltZ?P_z&{mjGyd_WaVt;HVIZuaY<7KTQzV+(&5I2omZ=2HJ#lJ4y z-R(%!Q_k~EgXHC#n4>-a2EXrs;d#s)V}kJl$R;y7{Di%aGO#8KasqlL_|CrK@G?5% zcH-BM`?kaAd!6tCZh|EAFM7IRI~FV#zjpcq5+al{*x3pBlH5nU>v{v=Y%ClzdOx*@ zw_e{@G>K@i%!{!uTxzQX{bbR%*$h;O?*e&&@s;OoU&J<4`okV!e z{h9Db!ZXTb8>d6t62g*9ASZ0K865rcb3lXT$#my-Hfu~G*T)(giLY&diB&2CFE}u! zDwP>YFLFT#QxUaf=o$)>R{ELgk^Tw?GO~QY5I51J>vME?y>|1PYu-D=Hz4M-W|y~P zZzlPva>y>N%U>*_`{LzI%X}vg^cK?mL>6T2;DJvlQX#Txci9TAk!;igjCfKn0Z+FG zU|U6yrce%WZL>*l{gY98m*P>1`SggJGLBr2%09|ch;(_8-ETFVU$4PlcXhRgAnu*c z(qTI$fR{D1r_Wx|=95EymLOcr*Xp>aNTsTco`2N~x>uZws`Q*iyRL)10Q){P?1EN0 z3Cg>W04rZ>p77<&2#(Gs_{yYCA4&for>9+MW`Az=@iqdOnADPVu1kxQl%iQ|(_oO- zyb&geU6#Ung^}x#+DcR`Z@zlOKUe$Dc3(XW?gAlV)9WzqnzKwaFV|ezzs9QZJij+p zYKgK8g0m_6Nt)Zb1kR>4^YLA(W2n9wtvu$ALpzb!GdvDxo6MxEfE&Q=A@fB96u*IF zLvOF2seaJN4W+w1rLkz47_X=t)QZvsI13xW@ zntO}jkNT1Y;EynV)Y3l)NGvHRJhRPEpdq|IbLtBk7dmhxG~FH#L9TKjKj8fKEMrfb zRuL=hea93G-e+ww4ISW8I>}M2p_e`s0Y~6_m8|p7>Aiq)VvDt}FQ(aACv(O)-HPb; z*tx@q5>%qkb@!rpI~kDamU663BN+jsk(p`x8*6X`EsRVy%R$G5>&i20^EHiOP|13A zevLzOPC zwFI31gkXPfw)?0b|C1>$<&AU|(t$6vVe>tPpjg<@+E1}xaaQ0~Mp5hL77Sg-D;%p1 zMW6jPO|B3V^8KttrLK(#n3y=bm|r;M6gl%e7Ql8hz|>OX$bpiO7!r*;>HnI&kD0Bu ztNT3E$ab|iYx1UAJkH5z@zFa@@Fi0o|)2?cXP)TqY-!nyjK-> ztB_c1VXCaS#D^0Z#QWWqJ$g7T#dCs8X03o)%!VG0>Ba!I=+BuVK`IbcNFw;doi}X| zx1%2~Giy9LD-_KJzSvER!7K|!ZD8fFx2RGhZr7jULq?mJ=l5(x7u-_Guq8{A%4TXj z+*2fWB6LNKmY66IbnvrjzfhCH>Deu)lyWW}`xTu%YpF?H`S`koasjcBN-$Dzl6t6%@VJg&_6V z>Q$Ku=1)R^xPhN7DtC4S#;79xUsXT!_7G${ot->FWQCs>7Y8u!Cf)zGMErUX*+cXK z?1tZZy@~)l4?4yaJT+q(|4!3mq5fN=E$=_&CRv;$e0hc{()w3ap8~gRDSeR$3pkwV zf8wX{1SipBlA*(_y$#=k{i~d8jUCS)Th<&~K9pbBK$q^>u{=zRWVowvBM~G1u66d< zeMH(CM$SM*qtszxSJX@Kce)Ce=0yI9KlKX$T>3B6pR0rJH}%w4KO-unri}V22+2e4eHD4Ry;o}0%~rH0S?Dx!R|vXMrC^?k2(Vub}E&; z%b^}*G;W#`o@VKV_TG9^nk?xscN{qwuu7Xb*u@+zFT3GmCP2tcAqJbn<7_vGWvmEu z&BG)w6f~6_TwhLkBu7k6U?P0=>vW(NUbUEWB{!lj!po{|0vN95gW!HGC=d-E|GWZ5 zX8Ox{IeQkcF#-6E2!t|RyP}9M`=q&npAls*y=61OeRS-I7on(tx#7bpLCw!A=oE4- zI~Jcu((m62-R{lcM54YNO>q}i%StvIzQHgP?Niuo(RoiC$m;OPnk@YMatB=dg%Eu_ z9+M*yq7fX@*k8SB>jVVl)Co%H?fhzm4c<`W5O}F=cI~&T#OtYl2f7x4JC^r{LVFWD0VIGcLohiTW`KSdG>QX%@zdv0-@xAQ8mxyztHAq zvivAdlh8LSh%Ijiyl#LNm=OsH%N;3VvevbaGkRx&(IWb1C)KNMtinazEa^p|GB0i0 z_DOy)yAvbEL3JV$LHF&B5}6y++pLqLZF?bS8Dbkpx7X2HSpH$}Y#}IVM{1G6A8uK==#k$i^b~imxEk!s2oh%~qyo0)9AWbQ=<7rq6NL#zW-UN}O&~ zygWi;D-#^l;Oz&jc*owg6i;69im`78dsYlJg>Oo>e4u(k1(nLTw87vq)p%RHA}CX& z=VuQ&o3~#4!l{2}-nGDk$JIhlD-6Ld3k6f*&s%q%TK$CyVMNO{l9KTv@X z9nSLyr`Y@&VCxUQ=~MWBqTy!v=G?qQe#Lm?<$ID z@{a(+m?*xnG`7x{rsRbL0|+x&Pd$S@gc5RQKf4~1Ti56Jd%6nVeBs@N*Mf+sAk~}e z+);El`B-z;&l3hhaW$UpM_-3}s-vMR($CtzpJa%Y$GaMU-Cg>(oJg#GIoI{c3HAMW ze_uMrp#Adv<^1;hK8U%*#%A!up|Mn)XGI1GQaoX=24+%b3V#7@>nDe3$tA5>XA7D6 zs6n!N`KmuyKh5+)(S;MO%jb7vbkxe{KFBA!ZG0&9d3LSo%Grd&h&kXKbe`^q+GU^- zhho4%P5UFs`n*)hbZQE;R~o#27Wh=MJ7_^4OA3&v@v58ei=RCA3gbx>YUF?5t!yXb z=GFUv4D~2G8C~zQ6x?uJW1e4gA_CBjF(=lB7H`^su+gTYPxlmT(zv<3iT~7%gPf;6 z1@cVD5Jd>ZsJZ<})lqF-0TzTO$?(th&h~)7_3YZ@=F<^XytGh6&L584M@UBM z+k?*xNU)wAG;6*$)S`_T7%%0Zp@7JU~-|8w?7vDU25*-o4aKd;s> zz>DaJuL*COM{6o1Po4fzk>G*MSZIC0r7}%b+qefxai)e_Z~U2cN(5 z%Ld|t)Iklc%dWj;!&Vt|J7ePm_Sx6JUn)GgJ~n*3$ME4B7D6rmDNBW{5Je7-WUlfO z!+8}_ke8*Rb@=o|(5epsnKLkV-~7xCf`zG_Mbiy68V~9qDpBKOeZMbcR$bC zur%0x`s$~`H5hAm@KOEvFN^fMlZ=x;!BwDn#v&8Ux5^!f;m6?gb#HCp+n!z5E-k;0 zX!{2IFR)E^>6vV*cTi5Z{F6yuOY`WOJpz&~W;?5Lm@W+NM3IcJ+$xQDz+%L+vx`xA z4HZ@ADn$#Uuu4qYa=WovzAIz4`%`YNf6nbEt~ut9gjAQ2M_sxn4hzESpEfyrQ*T|C z-Tay;TMlu@?=N#yHvO7@s?sO`fPVF+IxTNy3VES+ejUId2W@?F<~e2!*ZMPnbgeg4 z!*q{DEA;!IKyhJU$;~y%;RkC|5k<7I`23uZP+7+uoMo6eChGRP4RN?K1)8Mo+m6?8 z;;Ddx>rnY{(hE){qH9;SjJ1s7X3jh8XHQGg^$frbEHmENU9{+*Er>PBu4O&8N8(-9 z*3&(Ak7j^QEAjVEkKTs`4;(g@Hx7WG!iVKDoT8{F?Ig|Y{^nfbqmKBSQ4SG;ol-Bb6J4eQsxCbbsD2>cy+Q)gVt zm_ikS>No88dL{dFabm~Cg46FdvLYsOuh=b=|4Vd45& ze^3sIrYDmbwc{(UOj#k~%yZD%@h)Kj2*L8Hv^I{^BOSRENbbVghFS%}&3HCUQ~qi!*rtkIx1YE1a*^jsa% z8FB)UZ|`2Wtq^T}ZIuB`E*3h!c^3}e|ePblPa zCZsFS)aaD3P z9NLRb#miW6&h>*ohPjcZD`XdY9TYQVaI|u?ys$)p-$Mj32^r?Eq9=~`ZZ>BCnGPBI zUkn)8?(H@|P|eS1D%Kpj{O{O2VZX!9P_q&#VzA)GNqLoh{U;C0fQ2 zv~PYsu|o+qs)$c&D+Y~5!{7+!`Z--l$*Nol`lC=?CgF19QSz{; zTE(l^hvRpWqxdt3D(iP-B4(od*l{UngeG~aR*M)ncb_FQc3KpV8_{U*O@d-eBE!E> z5v}_fT0AksVP_@u3>Ixd+rFJi^DS^^M7nI82li6~86nu+$nd)!$2+2lTZMHR4Nh%J z22DI8vQjzj>dtQXw(SVE|5(@bfw9)6xa;%Zzb63GD+?GsEzWH%oS#3Z@G+--bZDgK z@_~x&U7#ati7TK2Ah%Z4&?A1=-1fBoF9VzQ&1?H z5T_UmFfw}yZG71X_ZsYeA{}Dk_nd3`Yb{dUEG?LE$hCLg1>2*?sSRw@YabmSeT{%x zwMfflxEVzQWXn{Ku7HpX56+~%M3A)Emfrm;MXuLqM7xxjiEI|@glCrg&HO`=ilyu0 zO@o`MTIYxW$6wsX8OEi+p=MX(E^-9Ql0!t$!lBbx@ly}qhvFPIae0We9k8%v;P6oE zXf+SHoXf9`Ooq4?wzZ# zgv%og*rh@l={b$ncM0@w-777p)Z>>m@wIk`Ly3o2m*fSo$AS?l6V6Q+0~gDeN5MK0 z8w1_f+`s|vc(HGyOt|*~n?EpoR<#`H+Zxbo)aqOZL_B~n;l)J3i|Q8}``N;H=`m;_ z2NLrZ6G02*wOtSuifu(y3(Uir+}VKqs&)1Bg*3JV&V)3Lo@Fmi2nYRe;-9ZCPhkAP zPIwsD>7(aV{9=A4?zq+2t;acKY;@Z_X{k20T65CKS-(2~%{LQ}Oh}9~2 zr34ell(L!cT3K*B81{g`2(bOziO-pN_=a#ty7rRsOn3qDNRC?NanG1)Nlrn22C8pK z|75bpS;h2W|^!3ekH!6#htJ@_T7w``8eot_V=xLBf!=oGrk8U>MHP_wF6YyDCSw4QN zb{ZcP!Vzt*5PbHba~Z&<*|cKv2Tp=Lnh9%3PtEXIV;+&|i`R3qR=IpoSsub+{%Y~cWYVtB^?JiR z#1BaREjHVT_W1#tQO9{hNV(t-Z6^^KMGz