From ba994f4404b6eadcab4e0ead46ef4d3ffeceb024 Mon Sep 17 00:00:00 2001 From: Antoine Villeret Date: Thu, 10 Jul 2014 14:39:22 +0000 Subject: lots of changes ! 1. switch to a new build system based on automake (because we need to check for some lib on ./configure before make) 2. sort files in different directory 3. add some new features (some of them need OpenCV >= 2.4.5) svn path=/trunk/externals/pix_opencv/; revision=17324 --- AUTHORS | 0 COPYING.txt | 36 + ChangeLog | 0 INSTALL | 370 ++ Makefile | 475 -- Makefile.am | 17 + NEWS | 0 README.txt | 56 +- TODO | 6 - acinclude.m4 | 136 - aclocal.m4 | 5198 +++++--------------- autogen.sh | 2 + blobtrack.h | 121 - .../00_opencv_haarcascade+pix_image.pd | 13 + .../01_boundingrect+pmpd_ambient.pd | 739 +++ examples/01_boundingrect+pmpd_ambient/pd_link.pd | 21 + examples/01_boundingrect+pmpd_ambient/pd_mass.pd | 46 + ...1_opencv_contrours_boundingrect+pmpd_ambient.pd | 668 --- .../pd_link.pd | 21 - .../pd_mass.pd | 46 - .../02_opencv_motempl+particle_system.pd | 13 + .../04_opencv_colorfilt+video_projector.pd | 291 ++ .../05_opencv_colorfilt+video_projector.pd | 291 -- .../05_perspective_correction.pd | 30 + examples/07_shape_extractor/07_shape_extractor.pd | 72 + .../09_vp_calibration/01.flat_projection-help.pd | 30 + .../09_vp_calibration/09_vp_calibration_gpu.pd | 363 ++ examples/09_vp_calibration/flat_projection.pd | 456 ++ examples/09_vp_calibration/soft_edge.frag | 62 + examples/09_vp_calibration/temp2.JPG | Bin 0 -> 18421 bytes .../10-fast_blobtracker/10-fast_blob_tracker.pd | 165 + examples/11-blobtracker2/11-blobtracker2.pd | 235 + examples/Makefile.am | 39 + examples/test-contours.bmp | Bin 0 -> 921654 bytes help/Makefile.am | 47 + help/model | 1 + help/pix_opencv_athreshold-help.pd | 188 + help/pix_opencv_backgroundsubtractor-help.pd | 455 ++ help/pix_opencv_bgstats-help.pd | 150 + help/pix_opencv_bgsubstract-help.pd | 158 + help/pix_opencv_blobtrack-help.pd | 279 ++ help/pix_opencv_calibration-help.pd | 258 + help/pix_opencv_camshift-help.pd | 207 + help/pix_opencv_clahe-help.pd | 139 + help/pix_opencv_colorfilt-help.pd | 164 + help/pix_opencv_contours-help.pd | 731 +++ help/pix_opencv_contours_boundingrect-help.pd | 255 + help/pix_opencv_contours_convexhull-help.pd | 181 + help/pix_opencv_contours_convexity-help.pd | 191 + help/pix_opencv_dft-help.pd | 157 + help/pix_opencv_distrans-help.pd | 162 + help/pix_opencv_edge-help.pd | 144 + help/pix_opencv_facetracker-help.pd | 415 ++ help/pix_opencv_findchessboardcorners-help.pd | 185 + help/pix_opencv_floodfill-help.pd | 209 + help/pix_opencv_haarcascade-help.pd | 204 + help/pix_opencv_hist_compare-help.pd | 168 + help/pix_opencv_hough_circles-help.pd | 191 + help/pix_opencv_hough_lines-help.pd | 213 + help/pix_opencv_hu_compare-help.pd | 240 + help/pix_opencv_hu_moments-help.pd | 147 + help/pix_opencv_knear-help.pd | 94 + help/pix_opencv_laplace-help.pd | 153 + help/pix_opencv_lk-help.pd | 242 + help/pix_opencv_matchshape-help.pd | 103 + help/pix_opencv_morphology-help.pd | 163 + help/pix_opencv_motempl-help.pd | 231 + help/pix_opencv_of_bm-help.pd | 214 + help/pix_opencv_of_hs-help.pd | 207 + help/pix_opencv_of_lk-help.pd | 205 + help/pix_opencv_opticalflow-help.pd | 91 + help/pix_opencv_pgh_compare-help.pd | 225 + help/pix_opencv_surf-help.pd | 220 + help/pix_opencv_threshold-help.pd | 169 + help/pix_opencv_trackKnn-help.pd | 275 ++ help/pix_opencv_warpperspective-help.pd | 119 + install-sh | 251 - model/face.con | 64 + model/face.tracker | 1 + model/face.tri | 94 + model/face2.tracker | 1 + pix_opencv-meta.pd | 9 - pix_opencv_athreshold-help.pd | 188 - pix_opencv_athreshold.cc | 258 - pix_opencv_athreshold.h | 95 - pix_opencv_bgstats-help.pd | 150 - pix_opencv_bgstats.cc | 251 - pix_opencv_bgstats.h | 100 - pix_opencv_bgsubstract-help.pd | 158 - pix_opencv_bgsubstract.cc | 258 - pix_opencv_bgsubstract.h | 86 - pix_opencv_blobtrack-help.pd | 273 - pix_opencv_blobtrack.cc | 692 --- pix_opencv_blobtrack.h | 106 - pix_opencv_calibration-help.pd | 258 - pix_opencv_calibration.cc | 547 -- pix_opencv_calibration.h | 120 - pix_opencv_camshift-help.pd | 190 - pix_opencv_camshift.cc | 450 -- pix_opencv_camshift.h | 110 - pix_opencv_colorfilt-help.pd | 164 - pix_opencv_colorfilt.cc | 299 -- pix_opencv_colorfilt.h | 103 - pix_opencv_contours-help.pd | 594 --- pix_opencv_contours.cc | 532 -- pix_opencv_contours.h | 88 - pix_opencv_contours_boundingrect-help.pd | 255 - pix_opencv_contours_boundingrect.cc | 772 --- pix_opencv_contours_boundingrect.h | 124 - pix_opencv_contours_convexhull-help.pd | 181 - pix_opencv_contours_convexhull.cc | 572 --- pix_opencv_contours_convexhull.h | 88 - pix_opencv_contours_convexity-help.pd | 191 - pix_opencv_contours_convexity.cc | 685 --- pix_opencv_contours_convexity.h | 88 - pix_opencv_dft-help.pd | 157 - pix_opencv_dft.cc | 462 -- pix_opencv_dft.h | 88 - pix_opencv_distrans-help.pd | 162 - pix_opencv_distrans.cc | 420 -- pix_opencv_distrans.h | 86 - pix_opencv_edge-help.pd | 144 - pix_opencv_edge.cc | 234 - pix_opencv_edge.h | 82 - pix_opencv_findchessboardcorners-help.pd | 185 - pix_opencv_findchessboardcorners.cc | 222 - pix_opencv_findchessboardcorners.h | 98 - pix_opencv_floodfill-help.pd | 209 - pix_opencv_floodfill.cc | 442 -- pix_opencv_floodfill.h | 111 - pix_opencv_haarcascade-help.pd | 204 - pix_opencv_haarcascade.cc | 526 -- pix_opencv_haarcascade.h | 113 - pix_opencv_hist_compare-help.pd | 168 - pix_opencv_hist_compare.cc | 533 -- pix_opencv_hist_compare.h | 90 - pix_opencv_hough_circles-help.pd | 191 - pix_opencv_hough_circles.cc | 315 -- pix_opencv_hough_circles.h | 102 - pix_opencv_hough_lines-help.pd | 213 - pix_opencv_hough_lines.cc | 600 --- pix_opencv_hough_lines.h | 110 - pix_opencv_hu_compare-help.pd | 240 - pix_opencv_hu_compare.cc | 468 -- pix_opencv_hu_compare.h | 93 - pix_opencv_hu_moments-help.pd | 147 - pix_opencv_hu_moments.cc | 207 - pix_opencv_hu_moments.h | 86 - pix_opencv_knear-help.pd | 90 - pix_opencv_knear.cc | 494 -- pix_opencv_knear.h | 103 - pix_opencv_laplace-help.pd | 153 - pix_opencv_laplace.cc | 228 - pix_opencv_laplace.h | 83 - pix_opencv_lk-help.pd | 242 - pix_opencv_lk.cc | 1170 ----- pix_opencv_lk.h | 131 - pix_opencv_matchshape-help.pd | 103 - pix_opencv_matchshape.cc | 221 - pix_opencv_matchshape.h | 73 - pix_opencv_morphology-help.pd | 163 - pix_opencv_morphology.cc | 291 -- pix_opencv_morphology.h | 87 - pix_opencv_motempl-help.pd | 231 - pix_opencv_motempl.cc | 708 --- pix_opencv_motempl.h | 132 - pix_opencv_of_bm-help.pd | 214 - pix_opencv_of_bm.cc | 576 --- pix_opencv_of_bm.h | 103 - pix_opencv_of_hs-help.pd | 207 - pix_opencv_of_hs.cc | 531 -- pix_opencv_of_hs.h | 100 - pix_opencv_of_lk-help.pd | 205 - pix_opencv_of_lk.cc | 516 -- pix_opencv_of_lk.h | 96 - pix_opencv_opticalflow-help.pd | 95 - pix_opencv_opticalflow.cc | 229 - pix_opencv_opticalflow.h | 96 - pix_opencv_pgh_compare-help.pd | 225 - pix_opencv_pgh_compare.cc | 481 -- pix_opencv_pgh_compare.h | 90 - pix_opencv_surf-help.pd | 220 - pix_opencv_surf.cc | 1049 ---- pix_opencv_surf.h | 120 - pix_opencv_threshold-help.pd | 169 - pix_opencv_threshold.cc | 262 - pix_opencv_threshold.h | 89 - pix_opencv_warpperspective-help.pd | 119 - pix_opencv_warpperspective.cc | 330 -- pix_opencv_warpperspective.h | 95 - plus/000.png | Bin 0 -> 367 bytes plus/001.png | Bin 0 -> 436 bytes plus/002.png | Bin 0 -> 407 bytes plus/003.png | Bin 0 -> 454 bytes plus/004.png | Bin 0 -> 421 bytes plus/005.png | Bin 0 -> 416 bytes plus/006.png | Bin 0 -> 429 bytes plus/007.png | Bin 0 -> 408 bytes plus/008.png | Bin 0 -> 373 bytes plus/009.png | Bin 0 -> 390 bytes plus/010.png | Bin 0 -> 406 bytes plus/011.png | Bin 0 -> 429 bytes plus/012.png | Bin 0 -> 460 bytes plus/013.png | Bin 0 -> 546 bytes plus/014.png | Bin 0 -> 486 bytes plus/015.png | Bin 0 -> 459 bytes plus/016.png | Bin 0 -> 440 bytes plus/017.png | Bin 0 -> 372 bytes plus/018.png | Bin 0 -> 434 bytes plus/019.png | Bin 0 -> 370 bytes plus/020.png | Bin 0 -> 399 bytes plus/021.png | Bin 0 -> 374 bytes plus/022.png | Bin 0 -> 452 bytes plus/023.png | Bin 0 -> 434 bytes plus/024.png | Bin 0 -> 417 bytes plus/025.png | Bin 0 -> 374 bytes plus/026.png | Bin 0 -> 381 bytes plus/027.png | Bin 0 -> 373 bytes plus/028.png | Bin 0 -> 412 bytes plus/029.png | Bin 0 -> 446 bytes plus/030.png | Bin 0 -> 373 bytes plus/031.png | Bin 0 -> 487 bytes plus/032.png | Bin 0 -> 410 bytes plus/033.png | Bin 0 -> 390 bytes plus/034.png | Bin 0 -> 454 bytes plus/035.png | Bin 0 -> 373 bytes plus/036.png | Bin 0 -> 406 bytes plus/037.png | Bin 0 -> 390 bytes plus/038.png | Bin 0 -> 381 bytes plus/039.png | Bin 0 -> 400 bytes plus/040.png | Bin 0 -> 413 bytes plus/041.png | Bin 0 -> 370 bytes plus/042.png | Bin 0 -> 447 bytes plus/043.png | Bin 0 -> 411 bytes plus/044.png | Bin 0 -> 502 bytes plus/045.png | Bin 0 -> 406 bytes plus/046.png | Bin 0 -> 417 bytes plus/047.png | Bin 0 -> 463 bytes plus/048.png | Bin 0 -> 438 bytes plus/049.png | Bin 0 -> 457 bytes src/Blob.hpp | 56 + src/Makefile.am | 129 + src/blobtrack.h | 121 + src/pix_opencv.cc | 38 + src/pix_opencv_athreshold.cc | 261 + src/pix_opencv_athreshold.h | 95 + src/pix_opencv_backgroundsubtractor.cc | 374 ++ src/pix_opencv_backgroundsubtractor.h | 96 + src/pix_opencv_bgstats.cc | 251 + src/pix_opencv_bgstats.h | 100 + src/pix_opencv_bgsubstract.cc | 258 + src/pix_opencv_bgsubstract.h | 86 + src/pix_opencv_blobtrack.cc | 693 +++ src/pix_opencv_blobtrack.h | 106 + src/pix_opencv_calibration.cc | 547 ++ src/pix_opencv_calibration.h | 120 + src/pix_opencv_camshift.cc | 450 ++ src/pix_opencv_camshift.h | 110 + src/pix_opencv_clahe.cc | 171 + src/pix_opencv_clahe.h | 84 + src/pix_opencv_colorfilt.cc | 299 ++ src/pix_opencv_colorfilt.h | 103 + src/pix_opencv_contours.cc | 591 +++ src/pix_opencv_contours.h | 89 + src/pix_opencv_contours_boundingrect.cc | 772 +++ src/pix_opencv_contours_boundingrect.h | 124 + src/pix_opencv_contours_convexhull.cc | 582 +++ src/pix_opencv_contours_convexhull.h | 88 + src/pix_opencv_contours_convexity.cc | 685 +++ src/pix_opencv_contours_convexity.h | 88 + src/pix_opencv_dft.cc | 462 ++ src/pix_opencv_dft.h | 88 + src/pix_opencv_distrans.cc | 420 ++ src/pix_opencv_distrans.h | 86 + src/pix_opencv_edge.cc | 234 + src/pix_opencv_edge.h | 82 + src/pix_opencv_facetracker.cc | 302 ++ src/pix_opencv_facetracker.h | 107 + src/pix_opencv_findchessboardcorners.cc | 220 + src/pix_opencv_findchessboardcorners.h | 98 + src/pix_opencv_floodfill.cc | 442 ++ src/pix_opencv_floodfill.h | 111 + src/pix_opencv_haarcascade.cc | 526 ++ src/pix_opencv_haarcascade.h | 113 + src/pix_opencv_hist_compare.cc | 279 ++ src/pix_opencv_hist_compare.h | 88 + src/pix_opencv_hough_circles.cc | 315 ++ src/pix_opencv_hough_circles.h | 102 + src/pix_opencv_hough_lines.cc | 600 +++ src/pix_opencv_hough_lines.h | 110 + src/pix_opencv_hu_compare.cc | 468 ++ src/pix_opencv_hu_compare.h | 93 + src/pix_opencv_hu_moments.cc | 207 + src/pix_opencv_hu_moments.h | 86 + src/pix_opencv_knear.cc | 502 ++ src/pix_opencv_knear.h | 108 + src/pix_opencv_laplace.cc | 228 + src/pix_opencv_laplace.h | 83 + src/pix_opencv_lk.cc | 1170 +++++ src/pix_opencv_lk.h | 132 + src/pix_opencv_matchshape.cc | 226 + src/pix_opencv_matchshape.h | 74 + src/pix_opencv_morphology.cc | 291 ++ src/pix_opencv_morphology.h | 87 + src/pix_opencv_motempl.cc | 708 +++ src/pix_opencv_motempl.h | 132 + src/pix_opencv_of_bm.cc | 326 ++ src/pix_opencv_of_bm.h | 101 + src/pix_opencv_of_hs.cc | 531 ++ src/pix_opencv_of_hs.h | 100 + src/pix_opencv_of_lk.cc | 516 ++ src/pix_opencv_of_lk.h | 96 + src/pix_opencv_opticalflow.cc | 229 + src/pix_opencv_opticalflow.h | 96 + src/pix_opencv_patreco.h | 95 + src/pix_opencv_pgh_compare.cc | 481 ++ src/pix_opencv_pgh_compare.h | 91 + src/pix_opencv_surf.cc | 1054 ++++ src/pix_opencv_surf.h | 122 + src/pix_opencv_template.cc | 63 + src/pix_opencv_template.h | 57 + src/pix_opencv_threshold.cc | 262 + src/pix_opencv_threshold.h | 88 + src/pix_opencv_trackKnn.cc | 602 +++ src/pix_opencv_trackKnn.h | 93 + src/pix_opencv_warpperspective.cc | 313 ++ src/pix_opencv_warpperspective.h | 100 + 327 files changed, 35283 insertions(+), 33522 deletions(-) create mode 100644 AUTHORS create mode 100644 COPYING.txt create mode 100644 ChangeLog create mode 100644 INSTALL delete mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 NEWS delete mode 100644 TODO delete mode 100755 acinclude.m4 create mode 100755 autogen.sh delete mode 100644 blobtrack.h create mode 100755 examples/01_boundingrect+pmpd_ambient/01_boundingrect+pmpd_ambient.pd create mode 100755 examples/01_boundingrect+pmpd_ambient/pd_link.pd create mode 100755 examples/01_boundingrect+pmpd_ambient/pd_mass.pd delete mode 100755 examples/01_opencv_contrours_boundingrect+pmpd_ambient/01_opencv_contrours_boundingrect+pmpd_ambient.pd delete mode 100755 examples/01_opencv_contrours_boundingrect+pmpd_ambient/pd_link.pd delete mode 100755 examples/01_opencv_contrours_boundingrect+pmpd_ambient/pd_mass.pd create mode 100644 examples/04_opencv_colorfilt+video_projector/04_opencv_colorfilt+video_projector.pd delete mode 100644 examples/04_opencv_colorfilt+video_projector/05_opencv_colorfilt+video_projector.pd create mode 100644 examples/07_shape_extractor/07_shape_extractor.pd create mode 100644 examples/09_vp_calibration/01.flat_projection-help.pd create mode 100644 examples/09_vp_calibration/09_vp_calibration_gpu.pd create mode 100644 examples/09_vp_calibration/flat_projection.pd create mode 100644 examples/09_vp_calibration/soft_edge.frag create mode 100644 examples/09_vp_calibration/temp2.JPG create mode 100644 examples/10-fast_blobtracker/10-fast_blob_tracker.pd create mode 100644 examples/11-blobtracker2/11-blobtracker2.pd create mode 100644 examples/Makefile.am create mode 100644 examples/test-contours.bmp create mode 100644 help/Makefile.am create mode 120000 help/model create mode 100644 help/pix_opencv_athreshold-help.pd create mode 100644 help/pix_opencv_backgroundsubtractor-help.pd create mode 100644 help/pix_opencv_bgstats-help.pd create mode 100644 help/pix_opencv_bgsubstract-help.pd create mode 100644 help/pix_opencv_blobtrack-help.pd create mode 100644 help/pix_opencv_calibration-help.pd create mode 100644 help/pix_opencv_camshift-help.pd create mode 100644 help/pix_opencv_clahe-help.pd create mode 100644 help/pix_opencv_colorfilt-help.pd create mode 100644 help/pix_opencv_contours-help.pd create mode 100644 help/pix_opencv_contours_boundingrect-help.pd create mode 100644 help/pix_opencv_contours_convexhull-help.pd create mode 100644 help/pix_opencv_contours_convexity-help.pd create mode 100644 help/pix_opencv_dft-help.pd create mode 100644 help/pix_opencv_distrans-help.pd create mode 100644 help/pix_opencv_edge-help.pd create mode 100644 help/pix_opencv_facetracker-help.pd create mode 100644 help/pix_opencv_findchessboardcorners-help.pd create mode 100644 help/pix_opencv_floodfill-help.pd create mode 100644 help/pix_opencv_haarcascade-help.pd create mode 100644 help/pix_opencv_hist_compare-help.pd create mode 100644 help/pix_opencv_hough_circles-help.pd create mode 100644 help/pix_opencv_hough_lines-help.pd create mode 100644 help/pix_opencv_hu_compare-help.pd create mode 100644 help/pix_opencv_hu_moments-help.pd create mode 100644 help/pix_opencv_knear-help.pd create mode 100644 help/pix_opencv_laplace-help.pd create mode 100644 help/pix_opencv_lk-help.pd create mode 100644 help/pix_opencv_matchshape-help.pd create mode 100644 help/pix_opencv_morphology-help.pd create mode 100644 help/pix_opencv_motempl-help.pd create mode 100644 help/pix_opencv_of_bm-help.pd create mode 100644 help/pix_opencv_of_hs-help.pd create mode 100644 help/pix_opencv_of_lk-help.pd create mode 100644 help/pix_opencv_opticalflow-help.pd create mode 100644 help/pix_opencv_pgh_compare-help.pd create mode 100644 help/pix_opencv_surf-help.pd create mode 100644 help/pix_opencv_threshold-help.pd create mode 100644 help/pix_opencv_trackKnn-help.pd create mode 100644 help/pix_opencv_warpperspective-help.pd delete mode 100755 install-sh create mode 100644 model/face.con create mode 100644 model/face.tracker create mode 100644 model/face.tri create mode 100644 model/face2.tracker delete mode 100644 pix_opencv-meta.pd delete mode 100644 pix_opencv_athreshold-help.pd delete mode 100644 pix_opencv_athreshold.cc delete mode 100644 pix_opencv_athreshold.h delete mode 100644 pix_opencv_bgstats-help.pd delete mode 100644 pix_opencv_bgstats.cc delete mode 100644 pix_opencv_bgstats.h delete mode 100644 pix_opencv_bgsubstract-help.pd delete mode 100644 pix_opencv_bgsubstract.cc delete mode 100644 pix_opencv_bgsubstract.h delete mode 100644 pix_opencv_blobtrack-help.pd delete mode 100644 pix_opencv_blobtrack.cc delete mode 100644 pix_opencv_blobtrack.h delete mode 100644 pix_opencv_calibration-help.pd delete mode 100644 pix_opencv_calibration.cc delete mode 100644 pix_opencv_calibration.h delete mode 100644 pix_opencv_camshift-help.pd delete mode 100644 pix_opencv_camshift.cc delete mode 100644 pix_opencv_camshift.h delete mode 100644 pix_opencv_colorfilt-help.pd delete mode 100644 pix_opencv_colorfilt.cc delete mode 100644 pix_opencv_colorfilt.h delete mode 100644 pix_opencv_contours-help.pd delete mode 100644 pix_opencv_contours.cc delete mode 100644 pix_opencv_contours.h delete mode 100644 pix_opencv_contours_boundingrect-help.pd delete mode 100644 pix_opencv_contours_boundingrect.cc delete mode 100644 pix_opencv_contours_boundingrect.h delete mode 100644 pix_opencv_contours_convexhull-help.pd delete mode 100644 pix_opencv_contours_convexhull.cc delete mode 100644 pix_opencv_contours_convexhull.h delete mode 100644 pix_opencv_contours_convexity-help.pd delete mode 100644 pix_opencv_contours_convexity.cc delete mode 100644 pix_opencv_contours_convexity.h delete mode 100644 pix_opencv_dft-help.pd delete mode 100644 pix_opencv_dft.cc delete mode 100644 pix_opencv_dft.h delete mode 100644 pix_opencv_distrans-help.pd delete mode 100644 pix_opencv_distrans.cc delete mode 100644 pix_opencv_distrans.h delete mode 100644 pix_opencv_edge-help.pd delete mode 100644 pix_opencv_edge.cc delete mode 100644 pix_opencv_edge.h delete mode 100644 pix_opencv_findchessboardcorners-help.pd delete mode 100644 pix_opencv_findchessboardcorners.cc delete mode 100644 pix_opencv_findchessboardcorners.h delete mode 100644 pix_opencv_floodfill-help.pd delete mode 100644 pix_opencv_floodfill.cc delete mode 100644 pix_opencv_floodfill.h delete mode 100644 pix_opencv_haarcascade-help.pd delete mode 100644 pix_opencv_haarcascade.cc delete mode 100644 pix_opencv_haarcascade.h delete mode 100644 pix_opencv_hist_compare-help.pd delete mode 100644 pix_opencv_hist_compare.cc delete mode 100644 pix_opencv_hist_compare.h delete mode 100644 pix_opencv_hough_circles-help.pd delete mode 100644 pix_opencv_hough_circles.cc delete mode 100644 pix_opencv_hough_circles.h delete mode 100644 pix_opencv_hough_lines-help.pd delete mode 100644 pix_opencv_hough_lines.cc delete mode 100644 pix_opencv_hough_lines.h delete mode 100644 pix_opencv_hu_compare-help.pd delete mode 100644 pix_opencv_hu_compare.cc delete mode 100644 pix_opencv_hu_compare.h delete mode 100644 pix_opencv_hu_moments-help.pd delete mode 100644 pix_opencv_hu_moments.cc delete mode 100644 pix_opencv_hu_moments.h delete mode 100644 pix_opencv_knear-help.pd delete mode 100644 pix_opencv_knear.cc delete mode 100644 pix_opencv_knear.h delete mode 100644 pix_opencv_laplace-help.pd delete mode 100644 pix_opencv_laplace.cc delete mode 100644 pix_opencv_laplace.h delete mode 100644 pix_opencv_lk-help.pd delete mode 100644 pix_opencv_lk.cc delete mode 100644 pix_opencv_lk.h delete mode 100644 pix_opencv_matchshape-help.pd delete mode 100644 pix_opencv_matchshape.cc delete mode 100644 pix_opencv_matchshape.h delete mode 100644 pix_opencv_morphology-help.pd delete mode 100644 pix_opencv_morphology.cc delete mode 100644 pix_opencv_morphology.h delete mode 100644 pix_opencv_motempl-help.pd delete mode 100644 pix_opencv_motempl.cc delete mode 100644 pix_opencv_motempl.h delete mode 100644 pix_opencv_of_bm-help.pd delete mode 100644 pix_opencv_of_bm.cc delete mode 100644 pix_opencv_of_bm.h delete mode 100644 pix_opencv_of_hs-help.pd delete mode 100644 pix_opencv_of_hs.cc delete mode 100644 pix_opencv_of_hs.h delete mode 100644 pix_opencv_of_lk-help.pd delete mode 100644 pix_opencv_of_lk.cc delete mode 100644 pix_opencv_of_lk.h delete mode 100644 pix_opencv_opticalflow-help.pd delete mode 100644 pix_opencv_opticalflow.cc delete mode 100644 pix_opencv_opticalflow.h delete mode 100644 pix_opencv_pgh_compare-help.pd delete mode 100644 pix_opencv_pgh_compare.cc delete mode 100644 pix_opencv_pgh_compare.h delete mode 100644 pix_opencv_surf-help.pd delete mode 100644 pix_opencv_surf.cc delete mode 100644 pix_opencv_surf.h delete mode 100644 pix_opencv_threshold-help.pd delete mode 100644 pix_opencv_threshold.cc delete mode 100644 pix_opencv_threshold.h delete mode 100644 pix_opencv_warpperspective-help.pd delete mode 100644 pix_opencv_warpperspective.cc delete mode 100644 pix_opencv_warpperspective.h create mode 100644 plus/000.png create mode 100644 plus/001.png create mode 100644 plus/002.png create mode 100644 plus/003.png create mode 100644 plus/004.png create mode 100644 plus/005.png create mode 100644 plus/006.png create mode 100644 plus/007.png create mode 100644 plus/008.png create mode 100644 plus/009.png create mode 100644 plus/010.png create mode 100644 plus/011.png create mode 100644 plus/012.png create mode 100644 plus/013.png create mode 100644 plus/014.png create mode 100644 plus/015.png create mode 100644 plus/016.png create mode 100644 plus/017.png create mode 100644 plus/018.png create mode 100644 plus/019.png create mode 100644 plus/020.png create mode 100644 plus/021.png create mode 100644 plus/022.png create mode 100644 plus/023.png create mode 100644 plus/024.png create mode 100644 plus/025.png create mode 100644 plus/026.png create mode 100644 plus/027.png create mode 100644 plus/028.png create mode 100644 plus/029.png create mode 100644 plus/030.png create mode 100644 plus/031.png create mode 100644 plus/032.png create mode 100644 plus/033.png create mode 100644 plus/034.png create mode 100644 plus/035.png create mode 100644 plus/036.png create mode 100644 plus/037.png create mode 100644 plus/038.png create mode 100644 plus/039.png create mode 100644 plus/040.png create mode 100644 plus/041.png create mode 100644 plus/042.png create mode 100644 plus/043.png create mode 100644 plus/044.png create mode 100644 plus/045.png create mode 100644 plus/046.png create mode 100644 plus/047.png create mode 100644 plus/048.png create mode 100644 plus/049.png create mode 100644 src/Blob.hpp create mode 100644 src/Makefile.am create mode 100644 src/blobtrack.h create mode 100644 src/pix_opencv.cc create mode 100644 src/pix_opencv_athreshold.cc create mode 100644 src/pix_opencv_athreshold.h create mode 100644 src/pix_opencv_backgroundsubtractor.cc create mode 100644 src/pix_opencv_backgroundsubtractor.h create mode 100644 src/pix_opencv_bgstats.cc create mode 100644 src/pix_opencv_bgstats.h create mode 100644 src/pix_opencv_bgsubstract.cc create mode 100644 src/pix_opencv_bgsubstract.h create mode 100644 src/pix_opencv_blobtrack.cc create mode 100644 src/pix_opencv_blobtrack.h create mode 100644 src/pix_opencv_calibration.cc create mode 100644 src/pix_opencv_calibration.h create mode 100644 src/pix_opencv_camshift.cc create mode 100644 src/pix_opencv_camshift.h create mode 100644 src/pix_opencv_clahe.cc create mode 100644 src/pix_opencv_clahe.h create mode 100644 src/pix_opencv_colorfilt.cc create mode 100644 src/pix_opencv_colorfilt.h create mode 100644 src/pix_opencv_contours.cc create mode 100644 src/pix_opencv_contours.h create mode 100644 src/pix_opencv_contours_boundingrect.cc create mode 100644 src/pix_opencv_contours_boundingrect.h create mode 100644 src/pix_opencv_contours_convexhull.cc create mode 100644 src/pix_opencv_contours_convexhull.h create mode 100644 src/pix_opencv_contours_convexity.cc create mode 100644 src/pix_opencv_contours_convexity.h create mode 100644 src/pix_opencv_dft.cc create mode 100644 src/pix_opencv_dft.h create mode 100644 src/pix_opencv_distrans.cc create mode 100644 src/pix_opencv_distrans.h create mode 100644 src/pix_opencv_edge.cc create mode 100644 src/pix_opencv_edge.h create mode 100644 src/pix_opencv_facetracker.cc create mode 100644 src/pix_opencv_facetracker.h create mode 100644 src/pix_opencv_findchessboardcorners.cc create mode 100644 src/pix_opencv_findchessboardcorners.h create mode 100644 src/pix_opencv_floodfill.cc create mode 100644 src/pix_opencv_floodfill.h create mode 100644 src/pix_opencv_haarcascade.cc create mode 100644 src/pix_opencv_haarcascade.h create mode 100644 src/pix_opencv_hist_compare.cc create mode 100644 src/pix_opencv_hist_compare.h create mode 100644 src/pix_opencv_hough_circles.cc create mode 100644 src/pix_opencv_hough_circles.h create mode 100644 src/pix_opencv_hough_lines.cc create mode 100644 src/pix_opencv_hough_lines.h create mode 100644 src/pix_opencv_hu_compare.cc create mode 100644 src/pix_opencv_hu_compare.h create mode 100644 src/pix_opencv_hu_moments.cc create mode 100644 src/pix_opencv_hu_moments.h create mode 100644 src/pix_opencv_knear.cc create mode 100644 src/pix_opencv_knear.h create mode 100644 src/pix_opencv_laplace.cc create mode 100644 src/pix_opencv_laplace.h create mode 100644 src/pix_opencv_lk.cc create mode 100644 src/pix_opencv_lk.h create mode 100644 src/pix_opencv_matchshape.cc create mode 100644 src/pix_opencv_matchshape.h create mode 100644 src/pix_opencv_morphology.cc create mode 100644 src/pix_opencv_morphology.h create mode 100644 src/pix_opencv_motempl.cc create mode 100644 src/pix_opencv_motempl.h create mode 100644 src/pix_opencv_of_bm.cc create mode 100644 src/pix_opencv_of_bm.h create mode 100644 src/pix_opencv_of_hs.cc create mode 100644 src/pix_opencv_of_hs.h create mode 100644 src/pix_opencv_of_lk.cc create mode 100644 src/pix_opencv_of_lk.h create mode 100644 src/pix_opencv_opticalflow.cc create mode 100644 src/pix_opencv_opticalflow.h create mode 100644 src/pix_opencv_patreco.h create mode 100644 src/pix_opencv_pgh_compare.cc create mode 100644 src/pix_opencv_pgh_compare.h create mode 100644 src/pix_opencv_surf.cc create mode 100644 src/pix_opencv_surf.h create mode 100644 src/pix_opencv_template.cc create mode 100644 src/pix_opencv_template.h create mode 100644 src/pix_opencv_threshold.cc create mode 100644 src/pix_opencv_threshold.h create mode 100644 src/pix_opencv_trackKnn.cc create mode 100644 src/pix_opencv_trackKnn.h create mode 100644 src/pix_opencv_warpperspective.cc create mode 100644 src/pix_opencv_warpperspective.h diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 0000000..98efdb1 --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,36 @@ +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, 2001, 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. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e69de29 diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..2099840 --- /dev/null +++ b/INSTALL @@ -0,0 +1,370 @@ +Installation Instructions +************************* + +Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, +Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell command `./configure && make && make install' +should configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf limitation. Until the limitation is lifted, you can use +this workaround: + + CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. diff --git a/Makefile b/Makefile deleted file mode 100644 index a7f1205..0000000 --- a/Makefile +++ /dev/null @@ -1,475 +0,0 @@ -## Pd library template version 1.0.14 -# For instructions on how to use this template, see: -# http://puredata.info/docs/developer/MakefileTemplate -LIBRARY_NAME = pix_opencv - -# add your .cc source files, one object per file, to the SOURCES -# variable, help files will be included automatically, and for GUI -# objects, the matching .tcl file too -SOURCES = pix_opencv_edge.cc pix_opencv_laplace.cc pix_opencv_morphology.cc pix_opencv_distrans.cc pix_opencv_motempl.cc pix_opencv_haarcascade.cc pix_opencv_contours_boundingrect.cc pix_opencv_bgsubstract.cc pix_opencv_contours_convexity.cc pix_opencv_dft.cc pix_opencv_lk.cc pix_opencv_hist_compare.cc pix_opencv_knear.cc pix_opencv_threshold.cc pix_opencv_floodfill.cc pix_opencv_athreshold.cc pix_opencv_bgstats.cc pix_opencv_camshift.cc pix_opencv_hu_compare.cc pix_opencv_pgh_compare.cc pix_opencv_hough_circles.cc pix_opencv_hough_lines.cc pix_opencv_hu_moments.cc pix_opencv_contours_convexhull.cc pix_opencv_colorfilt.cc pix_opencv_of_bm.cc pix_opencv_of_hs.cc pix_opencv_of_lk.cc pix_opencv_calibration.cc pix_opencv_warpperspective.cc pix_opencv_findchessboardcorners.cc pix_opencv_blobtrack.cc pix_opencv_contours.cc pix_opencv_matchshape.cc pix_opencv_opticalflow.cc - -# list all pd objects (i.e. myobject.pd) files here, and their helpfiles will -# be included automatically -PDOBJECTS = - -# example patches and related files, in the 'examples' subfolder -EXAMPLES = - -# manuals and related files, in the 'manual' subfolder -MANUAL = - -# if you want to include any other files in the source and binary tarballs, -# list them here. This can be anything from header files, test patches, -# documentation, etc. README.txt and LICENSE.txt are required and therefore -# automatically included -EXTRA_DIST = dessin.tif blobtrack.h pix_opencv_athreshold.h pix_opencv_bgstats.h pix_opencv_bgsubstract.h pix_opencv_blobtrack.h pix_opencv_calibration.h pix_opencv_camshift.h pix_opencv_colorfilt.h pix_opencv_contours.h pix_opencv_contours_boundingrect.h pix_opencv_contours_convexhull.h pix_opencv_contours_convexity.h pix_opencv_dft.h pix_opencv_distrans.h pix_opencv_edge.h pix_opencv_findchessboardcorners.h pix_opencv_floodfill.h pix_opencv_haarcascade.h pix_opencv_hist_compare.h pix_opencv_hough_circles.h pix_opencv_hough_lines.h pix_opencv_hu_compare.h pix_opencv_hu_moments.h pix_opencv_knear.h pix_opencv_laplace.h pix_opencv_lk.h pix_opencv_matchshape.h pix_opencv_morphology.h pix_opencv_motempl.h pix_opencv_of_bm.h pix_opencv_of_hs.h pix_opencv_of_lk.h pix_opencv_pgh_compare.h pix_opencv_surf.h pix_opencv_threshold.h pix_opencv_warpperspective.h - -# unit tests and related files here, in the 'unittests' subfolder -UNITTESTS = - - - -#------------------------------------------------------------------------------# -# -# things you might need to edit if you are using other C libraries -# -#------------------------------------------------------------------------------# - -ALL_CFLAGS = -I"$(PD_INCLUDE)" `pkg-config --cflags opencv` -CFLAGS_linux = `pkg-config --cflags Gem` `pkg-config --cflags pd` -CFLAGS_macosx = -I$(PD_PATH)/include/Gem -I$(PD_PATH)/include -ALL_LDFLAGS = -SHARED_LDFLAGS = -ALL_LIBS = `pkg-config --libs opencv` - -#------------------------------------------------------------------------------# -# -# you shouldn't need to edit anything below here, if we did it right :) -# -#------------------------------------------------------------------------------# - -# these can be set from outside without (usually) breaking the build -CFLAGS = -Wall -W -g -LDFLAGS = -LIBS = - -# get library version from meta file -LIBRARY_VERSION = $(shell sed -n 's|^\#X text [0-9][0-9]* [0-9][0-9]* VERSION \(.*\);|\1|p' $(LIBRARY_NAME)-meta.pd) - -ALL_CFLAGS += -DPD -DVERSION='"$(LIBRARY_VERSION)"' - -PD_INCLUDE = $(PD_PATH)/include/pd -# where to install the library, overridden below depending on platform -prefix = /usr/local -libdir = $(prefix)/lib -pkglibdir = $(libdir)/pd-externals -objectsdir = $(pkglibdir) - -INSTALL = install -INSTALL_PROGRAM = $(INSTALL) -p -m 644 -INSTALL_DATA = $(INSTALL) -p -m 644 -INSTALL_DIR = $(INSTALL) -p -m 755 -d - -ALLSOURCES := $(SOURCES) $(SOURCES_android) $(SOURCES_cygwin) $(SOURCES_macosx) \ - $(SOURCES_iphoneos) $(SOURCES_linux) $(SOURCES_windows) - -DISTDIR=$(LIBRARY_NAME)-$(LIBRARY_VERSION) -ORIGDIR=pd-$(LIBRARY_NAME:~=)_$(LIBRARY_VERSION) - -UNAME := $(shell uname -s) -ifeq ($(UNAME),Darwin) - CPU := $(shell uname -p) - ifeq ($(CPU),arm) # iPhone/iPod Touch - SOURCES += $(SOURCES_iphoneos) - EXTENSION = pd_darwin - SHARED_EXTENSION = dylib - OS = iphoneos - PD_PATH = /Applications/Pd-extended.app/Contents/Resources - IPHONE_BASE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin - CC=$(IPHONE_BASE)/gcc - CPP=$(IPHONE_BASE)/cpp - CXX=$(IPHONE_BASE)/g++ - ISYSROOT = -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk - IPHONE_CFLAGS = -miphoneos-version-min=3.0 $(ISYSROOT) -arch armv6 - OPT_CFLAGS = -fast -funroll-loops -fomit-frame-pointer - ALL_CFLAGS := $(IPHONE_CFLAGS) $(ALL_CFLAGS) - ALL_LDFLAGS += -arch armv6 -bundle -undefined dynamic_lookup $(ISYSROOT) - SHARED_LDFLAGS += -arch armv6 -dynamiclib -undefined dynamic_lookup $(ISYSROOT) - ALL_LIBS += -lc $(LIBS_iphoneos) - STRIP = strip -x - DISTBINDIR=$(DISTDIR)-$(OS) - else # Mac OS X - SOURCES += $(SOURCES_macosx) - EXTENSION = pd_darwin - SHARED_EXTENSION = dylib - OS = macosx - PD_PATH = /Applications/Pd-extended.app/Contents/Resources - OPT_CFLAGS = -ftree-vectorize -ftree-vectorizer-verbose=2 -fast -# build universal 32-bit on 10.4 and 32/64 on newer - ifeq ($(shell uname -r | sed 's|\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*|\1|'), 8) -# FAT_FLAGS = -arch ppc -arch i386 -mmacosx-version-min=10.4 - else - SOURCES += $(SOURCES_iphoneos) -# Starting with Xcode 4.0, the PowerPC compiler is not installed by default - ifeq ($(wildcard /usr/llvm-gcc-4.2/libexec/gcc/powerpc*), ) -# FAT_FLAGS = -arch i386 -arch x86_64 -mmacosx-version-min=10.5 - else -# FAT_FLAGS = -arch ppc -arch i386 -arch x86_64 -mmacosx-version-min=10.4 - endif - endif - ALL_CFLAGS += $(FAT_FLAGS) -fPIC -I/sw/include $(CFLAGS_macosx) - # if the 'pd' binary exists, check the linking against it to aid with stripping - BUNDLE_LOADER = $(shell test ! -e $(PD_PATH)/bin/pd || echo -bundle_loader $(PD_PATH)/bin/pd) - ALL_LDFLAGS += $(FAT_FLAGS) -headerpad_max_install_names -bundle $(BUNDLE_LOADER) \ - -undefined dynamic_lookup -L/sw/lib - SHARED_LDFLAGS += $(FAT_FLAGS) -dynamiclib -undefined dynamic_lookup \ - -install_name @loader_path/$(SHARED_LIB) -compatibility_version 1 -current_version 1.0 - ALL_LIBS += -lc $(LIBS_macosx) - STRIP = strip -x - DISTBINDIR=$(DISTDIR)-$(OS) -# install into ~/Library/Pd on Mac OS X since /usr/local isn't used much - pkglibdir=$(HOME)/Library/Pd - endif -endif -# Tho Android uses Linux, we use this fake uname to provide an easy way to -# setup all this things needed to cross-compile for Android using the NDK -ifeq ($(UNAME),ANDROID) - CPU := arm - SOURCES += $(SOURCES_android) - EXTENSION = so - SHARED_EXTENSION = so - OS = android - PD_PATH = /usr - NDK_BASE := /usr/local/android-ndk - NDK_PLATFORM_LEVEL ?= 5 - NDK_ABI=arm - NDK_SYSROOT=$(NDK_BASE)/platforms/android-$(NDK_PLATFORM_LEVEL)/arch-$(NDK_ABI) - NDK_UNAME := $(shell uname -s | tr '[A-Z]' '[a-z]') - NDK_COMPILER_VERSION=4.6 - NDK_TOOLCHAIN=$(wildcard \ - $(NDK_BASE)/toolchains/$(NDK_ABI)*-$(NDK_COMPILER_VERSION)/prebuilt/$(NDK_UNAME)-x86) - CC := $(wildcard $(NDK_TOOLCHAIN)/bin/*-linux-android*-gcc) --sysroot=$(NDK_SYSROOT) - OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer - CFLAGS += - LDFLAGS += -rdynamic -shared - SHARED_LDFLAGS += -Wl,-soname,$(SHARED_LIB) -shared - LIBS += -lc $(LIBS_android) - STRIP := $(wildcard $(NDK_TOOLCHAIN)/bin/$(NDK_ABI)-linux-android*-strip) \ - --strip-unneeded -R .note -R .comment - DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m) -endif -ifeq ($(UNAME),Linux) - CPU := $(shell uname -m) - EXTENSION = pd_linux - ifeq ($(findstring arm,$(CPU)),arm) - EXTENSION = l_arm - endif - ifeq ($(CPU),i386) - EXTENSION = l_i386 - endif - ifeq ($(CPU),i486) - EXTENSION = l_i386 - endif - ifeq ($(CPU),i586) - EXTENSION = l_i386 - endif - ifeq ($(CPU),i686) - EXTENSION = l_i386 - endif - ifeq ($(CPU),amd64) - # amd64 and ia64 aren't the same thing, but that's how its done in pd... - EXTENSION = l_ia64 - endif - ifeq ($(CPU),x86_64) - # x86_64 and ia64 aren't the same thing, but that's how its done in pd... - EXTENSION = l_ia64 - endif - SOURCES += $(SOURCES_linux) - SHARED_EXTENSION = so - OS = linux - PD_PATH = /usr - OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer - ALL_CFLAGS += -fPIC $(CFLAGS_linux) - ALL_LDFLAGS += -rdynamic -shared -fPIC -Wl,-rpath,"\$$ORIGIN",--enable-new-dtags - SHARED_LDFLAGS += -Wl,-soname,$(SHARED_LIB) -shared - ALL_LIBS += -lc $(LIBS_linux) - STRIP = strip --strip-unneeded -R .note -R .comment - DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m) -endif -ifeq ($(UNAME),GNU) - # GNU/Hurd, should work like GNU/Linux for basically all externals - CPU := $(shell uname -m) - SOURCES += $(SOURCES_linux) - EXTENSION = pd_linux - SHARED_EXTENSION = so - OS = linux - PD_PATH = /usr - OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer - ALL_CFLAGS += -fPIC - ALL_LDFLAGS += -rdynamic -shared -fPIC -Wl,-rpath,"\$$ORIGIN",--enable-new-dtags - SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB) - ALL_LIBS += -lc $(LIBS_linux) - STRIP = strip --strip-unneeded -R .note -R .comment - DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m) -endif -ifeq ($(UNAME),GNU/kFreeBSD) - # Debian GNU/kFreeBSD, should work like GNU/Linux for basically all externals - CPU := $(shell uname -m) - SOURCES += $(SOURCES_linux) - EXTENSION = pd_linux - SHARED_EXTENSION = so - OS = linux - PD_PATH = /usr - OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer - ALL_CFLAGS += -fPIC - ALL_LDFLAGS += -rdynamic -shared -fPIC -Wl,-rpath,"\$$ORIGIN",--enable-new-dtags - SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB) - ALL_LIBS += -lc $(LIBS_linux) - STRIP = strip --strip-unneeded -R .note -R .comment - DISTBINDIR=$(DISTDIR)-$(OS)-$(shell uname -m) -endif -ifeq (CYGWIN,$(findstring CYGWIN,$(UNAME))) - CPU := $(shell uname -m) - SOURCES += $(SOURCES_cygwin) - EXTENSION = dll - SHARED_EXTENSION = dll - OS = cygwin - PD_PATH = $(shell cygpath $$PROGRAMFILES)/pd - OPT_CFLAGS = -O6 -funroll-loops -fomit-frame-pointer - ALL_CFLAGS += - ALL_LDFLAGS += -rdynamic -shared -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin" - SHARED_LDFLAGS += -shared -Wl,-soname,$(SHARED_LIB) - ALL_LIBS += -lc -lpd $(LIBS_cygwin) - STRIP = strip --strip-unneeded -R .note -R .comment - DISTBINDIR=$(DISTDIR)-$(OS) -endif -ifeq (MINGW,$(findstring MINGW,$(UNAME))) - CPU := $(shell uname -m) - SOURCES += $(SOURCES_windows) - EXTENSION = dll - SHARED_EXTENSION = dll - OS = windows - PD_PATH = $(shell cd "$$PROGRAMFILES/pd" && pwd) - # MinGW doesn't seem to include cc so force gcc - CC=gcc - OPT_CFLAGS = -O3 -funroll-loops -fomit-frame-pointer - ALL_CFLAGS += -mms-bitfields - ALL_LDFLAGS += -s -shared -Wl,--enable-auto-import - SHARED_LDFLAGS += -shared - ALL_LIBS += -L"$(PD_PATH)/src" -L"$(PD_PATH)/bin" -L"$(PD_PATH)/obj" \ - -lpd -lwsock32 -lkernel32 -luser32 -lgdi32 -liberty $(LIBS_windows) - STRIP = strip --strip-unneeded -R .note -R .comment - DISTBINDIR=$(DISTDIR)-$(OS) -endif - -# in case somebody manually set the HELPPATCHES above -HELPPATCHES ?= $(SOURCES:.cc=-help.pd) $(PDOBJECTS:.pd=-help.pd) - -ALL_CFLAGS := $(ALL_CFLAGS) $(CFLAGS) $(OPT_CFLAGS) -ALL_LDFLAGS := $(LDFLAGS) $(ALL_LDFLAGS) -ALL_LIBS := $(LIBS) $(ALL_LIBS) - -SHARED_SOURCE ?= $(wildcard lib$(LIBRARY_NAME).cc) -SHARED_HEADER ?= $(shell test ! -e $(LIBRARY_NAME).h || echo $(LIBRARY_NAME).h) -SHARED_LIB ?= $(SHARED_SOURCE:.cc=.$(SHARED_EXTENSION)) -SHARED_TCL_LIB = $(wildcard lib$(LIBRARY_NAME).tcl) - -.PHONY = install libdir_install single_install install-doc install-examples install-manual install-unittests clean distclean dist etags $(LIBRARY_NAME) - -all: $(SOURCES:.cc=.$(EXTENSION)) $(SHARED_LIB) - -%.o: %.cc - $(CXX) $(ALL_CFLAGS) -o "$*.o" -c "$*.cc" - -%.$(EXTENSION): %.o $(SHARED_LIB) - $(CC) $(ALL_LDFLAGS) -o "$*.$(EXTENSION)" "$*.o" $(ALL_LIBS) $(SHARED_LIB) - chmod a-x "$*.$(EXTENSION)" - -# this links everything into a single binary file -$(LIBRARY_NAME): $(SOURCES:.cc=.o) $(LIBRARY_NAME).o lib$(LIBRARY_NAME).o - $(CC) $(ALL_LDFLAGS) -o $(LIBRARY_NAME).$(EXTENSION) $(SOURCES:.cc=.o) \ - $(LIBRARY_NAME).o lib$(LIBRARY_NAME).o $(ALL_LIBS) - chmod a-x $(LIBRARY_NAME).$(EXTENSION) - -$(SHARED_LIB): $(SHARED_SOURCE:.cc=.o) - $(CC) $(SHARED_LDFLAGS) -o $(SHARED_LIB) $(SHARED_SOURCE:.cc=.o) $(ALL_LIBS) - -install: libdir_install - -# The meta and help files are explicitly installed to make sure they are -# actually there. Those files are not optional, then need to be there. -libdir_install: $(SOURCES:.cc=.$(EXTENSION)) $(SHARED_LIB) install-doc install-examples install-manual install-unittests - $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd \ - $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - test -z "$(strip $(SOURCES))" || (\ - $(INSTALL_PROGRAM) $(SOURCES:.cc=.$(EXTENSION)) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) && \ - $(STRIP) $(addprefix $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/,$(SOURCES:.cc=.$(EXTENSION)))) - test -z "$(strip $(SHARED_LIB))" || \ - $(INSTALL_DATA) $(SHARED_LIB) \ - $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - test -z "$(strip $(wildcard $(SOURCES:.cc=.tcl)))" || \ - $(INSTALL_DATA) $(wildcard $(SOURCES:.cc=.tcl)) \ - $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - test -z "$(strip $(PDOBJECTS))" || \ - $(INSTALL_DATA) $(PDOBJECTS) \ - $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - test -z "$(strip $(SHARED_TCL_LIB))" || \ - $(INSTALL_DATA) $(SHARED_TCL_LIB) \ - $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - -# install library linked as single binary -single_install: $(LIBRARY_NAME) install-doc install-examples install-manual install-unittests - $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - $(INSTALL_PROGRAM) $(LIBRARY_NAME).$(EXTENSION) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - $(STRIP) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/$(LIBRARY_NAME).$(EXTENSION) - -install-doc: - $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - test -z "$(strip $(SOURCES) $(PDOBJECTS))" || \ - $(INSTALL_DATA) $(HELPPATCHES) \ - $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME) - $(INSTALL_DATA) README.txt $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/README.txt - $(INSTALL_DATA) LICENSE.txt $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/LICENSE.txt - -install-examples: - test -z "$(strip $(EXAMPLES))" || \ - $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/examples && \ - for file in $(EXAMPLES); do \ - $(INSTALL_DATA) examples/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/examples; \ - done - -install-manual: - test -z "$(strip $(MANUAL))" || \ - $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/manual && \ - for file in $(MANUAL); do \ - $(INSTALL_DATA) manual/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/manual; \ - done - -install-unittests: - test -z "$(strip $(UNITTESTS))" || \ - $(INSTALL_DIR) $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/unittests && \ - for file in $(UNITTESTS); do \ - $(INSTALL_DATA) unittests/$$file $(DESTDIR)$(objectsdir)/$(LIBRARY_NAME)/unittests; \ - done - -clean: - -rm -f -- $(SOURCES:.cc=.o) $(SOURCES_LIB:.cc=.o) $(SHARED_SOURCE:.cc=.o) - -rm -f -- $(SOURCES:.cc=.$(EXTENSION)) - -rm -f -- $(LIBRARY_NAME).o - -rm -f -- $(LIBRARY_NAME).$(EXTENSION) - -rm -f -- $(SHARED_LIB) - -distclean: clean - -rm -f -- $(DISTBINDIR).tar.gz - -rm -rf -- $(DISTBINDIR) - -rm -f -- $(DISTDIR).tar.gz - -rm -rf -- $(DISTDIR) - -rm -f -- $(ORIGDIR).tar.gz - -rm -rf -- $(ORIGDIR) - - -$(DISTBINDIR): - $(INSTALL_DIR) $(DISTBINDIR) - -libdir: all $(DISTBINDIR) - $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTBINDIR) - $(INSTALL_DATA) $(SOURCES) $(SHARED_SOURCE) $(SHARED_HEADER) $(DISTBINDIR) - $(INSTALL_DATA) $(HELPPATCHES) $(DISTBINDIR) - test -z "$(strip $(EXTRA_DIST))" || \ - $(INSTALL_DATA) $(EXTRA_DIST) $(DISTBINDIR) -# tar --exclude-vcs -czpf $(DISTBINDIR).tar.gz $(DISTBINDIR) - -$(DISTDIR): - $(INSTALL_DIR) $(DISTDIR) - -$(ORIGDIR): - $(INSTALL_DIR) $(ORIGDIR) - -dist: $(DISTDIR) - $(INSTALL_DATA) Makefile $(DISTDIR) - $(INSTALL_DATA) README.txt $(DISTDIR) - $(INSTALL_DATA) LICENSE.txt $(DISTDIR) - $(INSTALL_DATA) $(LIBRARY_NAME)-meta.pd $(DISTDIR) - test -z "$(strip $(ALLSOURCES))" || \ - $(INSTALL_DATA) $(ALLSOURCES) $(DISTDIR) - test -z "$(strip $(wildcard $(ALLSOURCES:.cc=.tcl)))" || \ - $(INSTALL_DATA) $(wildcard $(ALLSOURCES:.cc=.tcl)) $(DISTDIR) - test -z "$(strip $(wildcard $(LIBRARY_NAME).cc))" || \ - $(INSTALL_DATA) $(LIBRARY_NAME).cc $(DISTDIR) - test -z "$(strip $(SHARED_HEADER))" || \ - $(INSTALL_DATA) $(SHARED_HEADER) $(DISTDIR) - test -z "$(strip $(SHARED_SOURCE))" || \ - $(INSTALL_DATA) $(SHARED_SOURCE) $(DISTDIR) - test -z "$(strip $(SHARED_TCL_LIB))" || \ - $(INSTALL_DATA) $(SHARED_TCL_LIB) $(DISTDIR) - test -z "$(strip $(PDOBJECTS))" || \ - $(INSTALL_DATA) $(PDOBJECTS) $(DISTDIR) - test -z "$(strip $(HELPPATCHES))" || \ - $(INSTALL_DATA) $(HELPPATCHES) $(DISTDIR) - test -z "$(strip $(EXTRA_DIST))" || \ - $(INSTALL_DATA) $(EXTRA_DIST) $(DISTDIR) - test -z "$(strip $(EXAMPLES))" || \ - $(INSTALL_DIR) $(DISTDIR)/examples && \ - for file in $(EXAMPLES); do \ - $(INSTALL_DATA) examples/$$file $(DISTDIR)/examples; \ - done - test -z "$(strip $(MANUAL))" || \ - $(INSTALL_DIR) $(DISTDIR)/manual && \ - for file in $(MANUAL); do \ - $(INSTALL_DATA) manual/$$file $(DISTDIR)/manual; \ - done - test -z "$(strip $(UNITTESTS))" || \ - $(INSTALL_DIR) $(DISTDIR)/unittests && \ - for file in $(UNITTESTS); do \ - $(INSTALL_DATA) unittests/$$file $(DISTDIR)/unittests; \ - done - tar --exclude-vcs -czpf $(DISTDIR).tar.gz $(DISTDIR) - -# make a Debian source package -dpkg-source: - debclean - make distclean dist - mv $(DISTDIR) $(ORIGDIR) - tar --exclude-vcs -czpf ../$(ORIGDIR).orig.tar.gz $(ORIGDIR) - rm -f -- $(DISTDIR).tar.gz - rm -rf -- $(DISTDIR) $(ORIGDIR) - cd .. && dpkg-source -b $(LIBRARY_NAME) - -etags: TAGS - -TAGS: $(wildcard $(PD_INCLUDE)/*.h) $(SOURCES) $(SHARED_SOURCE) $(SHARED_HEADER) - etags $(wildcard $(PD_INCLUDE)/*.h) - etags -a *.h $(SOURCES) $(SHARED_SOURCE) $(SHARED_HEADER) - etags -a --language=none --regex="/proc[ \t]+\([^ \t]+\)/\1/" *.tcl - -showsetup: - @echo "CC: $(CC)" - @echo "CFLAGS: $(CFLAGS)" - @echo "LDFLAGS: $(LDFLAGS)" - @echo "LIBS: $(LIBS)" - @echo "ALL_CFLAGS: $(ALL_CFLAGS)" - @echo "ALL_LDFLAGS: $(ALL_LDFLAGS)" - @echo "ALL_LIBS: $(ALL_LIBS)" - @echo "PD_INCLUDE: $(PD_INCLUDE)" - @echo "PD_PATH: $(PD_PATH)" - @echo "objectsdir: $(objectsdir)" - @echo "LIBRARY_NAME: $(LIBRARY_NAME)" - @echo "LIBRARY_VERSION: $(LIBRARY_VERSION)" - @echo "SOURCES: $(SOURCES)" - @echo "EXTENSION: $(EXTENSION)" - @echo "SHARED_HEADER: $(SHARED_HEADER)" - @echo "SHARED_SOURCE: $(SHARED_SOURCE)" - @echo "SHARED_LIB: $(SHARED_LIB)" - @echo "SHARED_TCL_LIB: $(SHARED_TCL_LIB)" - @echo "PDOBJECTS: $(PDOBJECTS)" - @echo "ALLSOURCES: $(ALLSOURCES)" - @echo "ALLSOURCES TCL: $(wildcard $(ALLSOURCES:.cc=.tcl))" - @echo "UNAME: $(UNAME)" - @echo "CPU: $(CPU)" - @echo "pkglibdir: $(pkglibdir)" - @echo "DISTDIR: $(DISTDIR)" - @echo "ORIGDIR: $(ORIGDIR)" - @echo "NDK_TOOLCHAIN: $(NDK_TOOLCHAIN)" - @echo "NDK_BASE: $(NDK_BASE)" - @echo "NDK_SYSROOT: $(NDK_SYSROOT)" diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..cbb0350 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,17 @@ +AUTOMAKE_OPTIONS = foreign +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = src help examples + +ALL_CFLAGS = -I"$(PD_INCLUDE)" + +pix_opencvdir=$(pkglibdir) + +dist_pix_opencv_DATA = \ + pix_opencv-meta.pd \ + COPYING.txt \ + LICENSE.txt \ + README.txt \ + pix_opencv-help.pd + +EXTRA_DIST = autogen.sh diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/README.txt b/README.txt index c0360c5..ffb1b40 100644 --- a/README.txt +++ b/README.txt @@ -1,51 +1,15 @@ -1. Prepare you machine -You need to have puredata and Gem installed on your system. -And you need to know where they are… +`pix_opencv` is a Puredata library for real-time video processing : blob tracking, contours extracting, motion flow computation... It is based on work by Yves Degoyon and Lluis Gomez i Bigorda and uses `OpenCV` and `Gem` -You also need a compiling toolchain, e.g. GCC on Linux/Mac or Microsoft Visual C++ on Windows. +I'm trying to improve `pix_opencv` library since 2012. I add new objects as needed in my projects. -2. Get the sources : -Download the pix_opencv sources from Puredata external repository : -svn co svn://svn.code.sf.net/p/pure-data/svn/trunk/externals/pix_opencv -or if you don't have svnl, can get a "snapshot",i.e. a zip file with the current code, here : -https://sourceforge.net/p/pure-data/svn/HEAD/tree/trunk/externals/pix_opencv/ +`pix_opencv` is open and you can find the sources here : https://github.com/avilleret/pix_opencv -3. Get opencv : -Ubuntu/Linux -The easiest way to get it is to install it from the repository : -sudo apt-get install libopencv-* +You can also find binaries for Windows, Ubuntu and Mac OS X here : https://github.com/avilleret/pix_opencv/releases +For more informations, please check the Wiki : https://github.com/avilleret/pix_opencv/wiki +Please report bugs through Github interface : https://github.com/avilleret/pix_opencv/issues -Mac OSX : -The easiest way is to get from some packaging repository like Macports, fink or homebrew. -with fink : -sudo fink install opencv-dev -with macport : -sudo port install opencv +Also you can start with `pix_opencv-overview.pd` which shows all availalbe objects. +Each external has also its own help file. +There are severals examples also the `examples` folder. -Windows : -Download the binary release on opencv.org -You can follow the quickstart guide on opencv.org to setup environment variables. - -4. Build the Sources : - -Ubuntu/Linux & MacOSX -Go to the fresh created folder, i.e. « pix_opencv » and build the things : -cd pix_opencv -make - -If you see something like « can’t find m_pd.h », you need to tweak pd’s path with this command : -make CFLAGS=-I/path/to/pd -If you see something like « can’t find Base/GemPixObj.h », you need to tweak Gem’s path with this command : -make CFLAGS=-I/path/to/gem -You can combine options like : -make CFLAGS=-I/path/to/pd CFLAGS=-I/path/to/gem - -Windows -You need Visual C++ (at least the free express edition) to build pix_opencv on Windows. -There is a solution in build/vs2010 folder. -It was made with Visual C++ Express 2010 and surely need some tweaks before producing any DLL. -You need to change the include and the library paths. -The include must contain the following : - - puredata include (pd-extended) or src (vanilla) folder : path\to\pd\src or path\to\pd-extended\include - - Gem include folder : path\to\Gem - - OpenCV include path, wich is ususally $(OPENCV_DIR)\..\..\include if you setup OPENCV_DIR according to Windows quickstart guide on opencv.org. +To use `pix_opencv` in your project, add the folder to the pd search path. \ No newline at end of file diff --git a/TODO b/TODO deleted file mode 100644 index b36c38c..0000000 --- a/TODO +++ /dev/null @@ -1,6 +0,0 @@ -TODO list : - -- improve pix_opencv_warpperspective help patch (and others) -- remove opencv 1.x dependency -- update optical flow tools -... diff --git a/acinclude.m4 b/acinclude.m4 deleted file mode 100755 index ba9cb5d..0000000 --- a/acinclude.m4 +++ /dev/null @@ -1,136 +0,0 @@ -dnl @synopsis AC_PATH_GENERIC(LIBRARY [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl -dnl Runs a LIBRARY-config script and defines LIBRARY_CFLAGS and LIBRARY_LIBS -dnl -dnl The script must support `--cflags' and `--libs' args. -dnl If MINIMUM-VERSION is specified, the script must also support the -dnl `--version' arg. -dnl If the `--with-library-[exec-]prefix' arguments to ./configure are given, -dnl it must also support `--prefix' and `--exec-prefix'. -dnl (In other words, it must be like gtk-config.) -dnl -dnl For example: -dnl -dnl AC_PATH_GENERIC(Foo, 1.0.0) -dnl -dnl would run `foo-config --version' and check that it is at least 1.0.0 -dnl -dnl If so, the following would then be defined: -dnl -dnl FOO_CFLAGS to `foo-config --cflags` -dnl FOO_LIBS to `foo-config --libs` -dnl -dnl At present there is no support for additional "MODULES" (see AM_PATH_GTK) -dnl (shamelessly stolen from gtk.m4 and then hacked around a fair amount) -dnl -dnl @author Angus Lees -dnl @version $Id: acinclude.m4,v 1.1 2001/08/08 20:26:49 gilbertt Exp $ - -AC_DEFUN(AC_PATH_GENERIC, -[dnl -dnl we're going to need uppercase, lowercase and user-friendly versions of the -dnl string `LIBRARY' -pushdef([UP], translit([$1], [a-z], [A-Z]))dnl -pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl - -dnl -dnl Get the cflags and libraries from the LIBRARY-config script -dnl -AC_ARG_WITH(DOWN-prefix,[ --with-]DOWN[-prefix=PFX Prefix where $1 is installed (optional)], - DOWN[]_config_prefix="$withval", DOWN[]_config_prefix="") -AC_ARG_WITH(DOWN-exec-prefix,[ --with-]DOWN[-exec-prefix=PFX Exec prefix where $1 is installed (optional)], - DOWN[]_config_exec_prefix="$withval", DOWN[]_config_exec_prefix="") - - if test x$DOWN[]_config_exec_prefix != x ; then - DOWN[]_config_args="$DOWN[]_config_args --exec-prefix=$DOWN[]_config_exec_prefix" - if test x${UP[]_CONFIG+set} != xset ; then - UP[]_CONFIG=$DOWN[]_config_exec_prefix/bin/DOWN-config - fi - fi - if test x$DOWN[]_config_prefix != x ; then - DOWN[]_config_args="$DOWN[]_config_args --prefix=$DOWN[]_config_prefix" - if test x${UP[]_CONFIG+set} != xset ; then - UP[]_CONFIG=$DOWN[]_config_prefix/bin/DOWN-config - fi - fi - - AC_PATH_PROG(UP[]_CONFIG, DOWN-config, no) - ifelse([$2], , - AC_MSG_CHECKING(for $1), - AC_MSG_CHECKING(for $1 - version >= $2) - ) - no_[]DOWN="" - if test "$UP[]_CONFIG" = "no" ; then - no_[]DOWN=yes - else - UP[]_CFLAGS="`$UP[]_CONFIG $DOWN[]_config_args --cflags`" - UP[]_LIBS="`$UP[]_CONFIG $DOWN[]_config_args --libs`" - ifelse([$2], , ,[ - DOWN[]_config_major_version=`$UP[]_CONFIG $DOWN[]_config_args \ - --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - DOWN[]_config_minor_version=`$UP[]_CONFIG $DOWN[]_config_args \ - --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - DOWN[]_config_micro_version=`$UP[]_CONFIG $DOWN[]_config_args \ - --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - DOWN[]_wanted_major_version="regexp($2, [\<\([0-9]*\)], [\1])" - DOWN[]_wanted_minor_version="regexp($2, [\<\([0-9]*\)\.\([0-9]*\)], [\2])" - DOWN[]_wanted_micro_version="regexp($2, [\<\([0-9]*\).\([0-9]*\).\([0-9]*\)], [\3])" - - # Compare wanted version to what config script returned. - # If I knew what library was being run, i'd probably also compile - # a test program at this point (which also extracted and tested - # the version in some library-specific way) - if test "$DOWN[]_config_major_version" -lt \ - "$DOWN[]_wanted_major_version" \ - -o \( "$DOWN[]_config_major_version" -eq \ - "$DOWN[]_wanted_major_version" \ - -a "$DOWN[]_config_minor_version" -lt \ - "$DOWN[]_wanted_minor_version" \) \ - -o \( "$DOWN[]_config_major_version" -eq \ - "$DOWN[]_wanted_major_version" \ - -a "$DOWN[]_config_minor_version" -eq \ - "$DOWN[]_wanted_minor_version" \ - -a "$DOWN[]_config_micro_version" -lt \ - "$DOWN[]_wanted_micro_version" \) ; then - # older version found - no_[]DOWN=yes - echo -n "*** An old version of $1 " - echo -n "($DOWN[]_config_major_version" - echo -n ".$DOWN[]_config_minor_version" - echo ".$DOWN[]_config_micro_version) was found." - echo -n "*** You need a version of $1 newer than " - echo -n "$DOWN[]_wanted_major_version" - echo -n ".$DOWN[]_wanted_minor_version" - echo ".$DOWN[]_wanted_micro_version." - echo "***" - echo "*** If you have already installed a sufficiently new version, this error" - echo "*** probably means that the wrong copy of the DOWN-config shell script is" - echo "*** being found. The easiest way to fix this is to remove the old version" - echo "*** of $1, but you can also set the UP[]_CONFIG environment to point to the" - echo "*** correct copy of DOWN-config. (In this case, you will have to" - echo "*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf" - echo "*** so that the correct libraries are found at run-time)" - fi - ]) - fi - if test "x$no_[]DOWN" = x ; then - AC_MSG_RESULT(yes) - ifelse([$3], , :, [$3]) - else - AC_MSG_RESULT(no) - if test "$UP[]_CONFIG" = "no" ; then - echo "*** The DOWN-config script installed by $1 could not be found" - echo "*** If $1 was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the UP[]_CONFIG environment variable to the" - echo "*** full path to DOWN-config." - fi - UP[]_CFLAGS="" - UP[]_LIBS="" - ifelse([$4], , :, [$4]) - fi - AC_SUBST(UP[]_CFLAGS) - AC_SUBST(UP[]_LIBS) - - popdef([UP]) - popdef([DOWN]) -]) diff --git a/aclocal.m4 b/aclocal.m4 index 6f4b296..b43c427 100755 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,2984 +1,29 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p4 - -dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. - -dnl @synopsis AC_PATH_GENERIC(LIBRARY [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl -dnl Runs a LIBRARY-config script and defines LIBRARY_CFLAGS and LIBRARY_LIBS -dnl -dnl The script must support `--cflags' and `--libs' args. -dnl If MINIMUM-VERSION is specified, the script must also support the -dnl `--version' arg. -dnl If the `--with-library-[exec-]prefix' arguments to ./configure are given, -dnl it must also support `--prefix' and `--exec-prefix'. -dnl (In other words, it must be like gtk-config.) -dnl -dnl For example: -dnl -dnl AC_PATH_GENERIC(Foo, 1.0.0) -dnl -dnl would run `foo-config --version' and check that it is at least 1.0.0 -dnl -dnl If so, the following would then be defined: -dnl -dnl FOO_CFLAGS to `foo-config --cflags` -dnl FOO_LIBS to `foo-config --libs` -dnl -dnl At present there is no support for additional "MODULES" (see AM_PATH_GTK) -dnl (shamelessly stolen from gtk.m4 and then hacked around a fair amount) -dnl -dnl @author Angus Lees -dnl @version $Id: acinclude.m4,v 1.1 2001/08/08 20:26:49 gilbertt Exp $ - -AC_DEFUN(AC_PATH_GENERIC, -[dnl -dnl we're going to need uppercase, lowercase and user-friendly versions of the -dnl string `LIBRARY' -pushdef([UP], translit([$1], [a-z], [A-Z]))dnl -pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl - -dnl -dnl Get the cflags and libraries from the LIBRARY-config script -dnl -AC_ARG_WITH(DOWN-prefix,[ --with-]DOWN[-prefix=PFX Prefix where $1 is installed (optional)], - DOWN[]_config_prefix="$withval", DOWN[]_config_prefix="") -AC_ARG_WITH(DOWN-exec-prefix,[ --with-]DOWN[-exec-prefix=PFX Exec prefix where $1 is installed (optional)], - DOWN[]_config_exec_prefix="$withval", DOWN[]_config_exec_prefix="") - - if test x$DOWN[]_config_exec_prefix != x ; then - DOWN[]_config_args="$DOWN[]_config_args --exec-prefix=$DOWN[]_config_exec_prefix" - if test x${UP[]_CONFIG+set} != xset ; then - UP[]_CONFIG=$DOWN[]_config_exec_prefix/bin/DOWN-config - fi - fi - if test x$DOWN[]_config_prefix != x ; then - DOWN[]_config_args="$DOWN[]_config_args --prefix=$DOWN[]_config_prefix" - if test x${UP[]_CONFIG+set} != xset ; then - UP[]_CONFIG=$DOWN[]_config_prefix/bin/DOWN-config - fi - fi - - AC_PATH_PROG(UP[]_CONFIG, DOWN-config, no) - ifelse([$2], , - AC_MSG_CHECKING(for $1), - AC_MSG_CHECKING(for $1 - version >= $2) - ) - no_[]DOWN="" - if test "$UP[]_CONFIG" = "no" ; then - no_[]DOWN=yes - else - UP[]_CFLAGS="`$UP[]_CONFIG $DOWN[]_config_args --cflags`" - UP[]_LIBS="`$UP[]_CONFIG $DOWN[]_config_args --libs`" - ifelse([$2], , ,[ - DOWN[]_config_major_version=`$UP[]_CONFIG $DOWN[]_config_args \ - --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - DOWN[]_config_minor_version=`$UP[]_CONFIG $DOWN[]_config_args \ - --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - DOWN[]_config_micro_version=`$UP[]_CONFIG $DOWN[]_config_args \ - --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - DOWN[]_wanted_major_version="regexp($2, [\<\([0-9]*\)], [\1])" - DOWN[]_wanted_minor_version="regexp($2, [\<\([0-9]*\)\.\([0-9]*\)], [\2])" - DOWN[]_wanted_micro_version="regexp($2, [\<\([0-9]*\).\([0-9]*\).\([0-9]*\)], [\3])" - - # Compare wanted version to what config script returned. - # If I knew what library was being run, i'd probably also compile - # a test program at this point (which also extracted and tested - # the version in some library-specific way) - if test "$DOWN[]_config_major_version" -lt \ - "$DOWN[]_wanted_major_version" \ - -o \( "$DOWN[]_config_major_version" -eq \ - "$DOWN[]_wanted_major_version" \ - -a "$DOWN[]_config_minor_version" -lt \ - "$DOWN[]_wanted_minor_version" \) \ - -o \( "$DOWN[]_config_major_version" -eq \ - "$DOWN[]_wanted_major_version" \ - -a "$DOWN[]_config_minor_version" -eq \ - "$DOWN[]_wanted_minor_version" \ - -a "$DOWN[]_config_micro_version" -lt \ - "$DOWN[]_wanted_micro_version" \) ; then - # older version found - no_[]DOWN=yes - echo -n "*** An old version of $1 " - echo -n "($DOWN[]_config_major_version" - echo -n ".$DOWN[]_config_minor_version" - echo ".$DOWN[]_config_micro_version) was found." - echo -n "*** You need a version of $1 newer than " - echo -n "$DOWN[]_wanted_major_version" - echo -n ".$DOWN[]_wanted_minor_version" - echo ".$DOWN[]_wanted_micro_version." - echo "***" - echo "*** If you have already installed a sufficiently new version, this error" - echo "*** probably means that the wrong copy of the DOWN-config shell script is" - echo "*** being found. The easiest way to fix this is to remove the old version" - echo "*** of $1, but you can also set the UP[]_CONFIG environment to point to the" - echo "*** correct copy of DOWN-config. (In this case, you will have to" - echo "*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf" - echo "*** so that the correct libraries are found at run-time)" - fi - ]) - fi - if test "x$no_[]DOWN" = x ; then - AC_MSG_RESULT(yes) - ifelse([$3], , :, [$3]) - else - AC_MSG_RESULT(no) - if test "$UP[]_CONFIG" = "no" ; then - echo "*** The DOWN-config script installed by $1 could not be found" - echo "*** If $1 was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the UP[]_CONFIG environment variable to the" - echo "*** full path to DOWN-config." - fi - UP[]_CFLAGS="" - UP[]_LIBS="" - ifelse([$4], , :, [$4]) - fi - AC_SUBST(UP[]_CFLAGS) - AC_SUBST(UP[]_LIBS) - - popdef([UP]) - popdef([DOWN]) -]) - -# Configure paths for GTK+ -# Owen Taylor 97-11-3 - -dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) -dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS -dnl -AC_DEFUN(AM_PATH_GTK, -[dnl -dnl Get the cflags and libraries from the gtk-config script -dnl -AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], - gtk_config_prefix="$withval", gtk_config_prefix="") -AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], - gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") -AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], - , enable_gtktest=yes) - - for module in . $4 - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - AC_PATH_PROG(GTK_CONFIG, gtk-config, no) - min_gtk_version=ifelse([$1], ,0.99.7,$1) - AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" -dnl -dnl Now check if the installed GTK is sufficiently new. (Also sanity -dnl checks the results of gtk-config to some extent -dnl - rm -f conf.gtktest - AC_TRY_RUN([ -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} -],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, you'll need to set your" - echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" - echo "*** to the installed location Also, make sure you have run ldconfig if that" - echo "*** is required on your system" - echo "***" - echo "*** If you have an old version installed, it is best to remove it, although" - echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" - echo "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" ], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GTK_CFLAGS) - AC_SUBST(GTK_LIBS) - rm -f conf.gtktest -]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. - -AC_DEFUN(AM_CONFIG_HEADER, -[AC_PREREQ([2.12]) -AC_CONFIG_HEADER([$1]) -dnl When config.status generates a header, we must update the stamp-h file. -dnl This file resides in the same directory as the config header -dnl that is generated. We must strip everything past the first ":", -dnl and everything past the last "/". -AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl -ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, -<>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, -<>; do - case " <<$>>CONFIG_HEADERS " in - *" <<$>>am_file "*<<)>> - echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx - ;; - esac - am_indx=`expr "<<$>>am_indx" + 1` -done<<>>dnl>>) -changequote([,]))]) - -# Do all the work for Automake. This macro actually does too much -- -# some checks are only needed if your package does certain things. -# But this isn't really a big deal. - -# serial 1 - -dnl Usage: -dnl AM_INIT_AUTOMAKE(package,version, [no-define]) - -AC_DEFUN(AM_INIT_AUTOMAKE, -[AC_REQUIRE([AC_PROG_INSTALL]) -PACKAGE=[$1] -AC_SUBST(PACKAGE) -VERSION=[$2] -AC_SUBST(VERSION) -dnl test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi -ifelse([$3],, -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) -AC_REQUIRE([AM_SANITY_CHECK]) -AC_REQUIRE([AC_ARG_PROGRAM]) -dnl FIXME This is truly gross. -missing_dir=`cd $ac_aux_dir && pwd` -AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) -AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) -AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) -AC_REQUIRE([AC_PROG_MAKE_SET])]) - -# -# Check to make sure that the build environment is sane. -# - -AC_DEFUN(AM_SANITY_CHECK, -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftestfile -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` - if test "[$]*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "[$]*" != "X $srcdir/configure conftestfile" \ - && test "[$]*" != "X conftestfile $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "[$]2" = conftestfile - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -rm -f conftest* -AC_MSG_RESULT(yes)]) - -dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) -dnl The program must properly implement --version. -AC_DEFUN(AM_MISSING_PROG, -[AC_MSG_CHECKING(for working $2) -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if ($2 --version) < /dev/null > /dev/null 2>&1; then - $1=$2 - AC_MSG_RESULT(found) -else - $1="$3/missing $2" - AC_MSG_RESULT(missing) -fi -AC_SUBST($1)]) - -#serial 1 -# This test replaces the one in autoconf. -# Currently this macro should have the same name as the autoconf macro -# because gettext's gettext.m4 (distributed in the automake package) -# still uses it. Otherwise, the use in gettext.m4 makes autoheader -# give these diagnostics: -# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX - -undefine([AC_ISC_POSIX]) - -AC_DEFUN([AC_ISC_POSIX], - [ - dnl This test replaces the obsolescent AC_ISC_POSIX kludge. - AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) - ] -) - - -# serial 1 - -# @defmac AC_PROG_CC_STDC -# @maindex PROG_CC_STDC -# @ovindex CC -# If the C compiler in not in ANSI C mode by default, try to add an option -# to output variable @code{CC} to make it so. This macro tries various -# options that select ANSI C on some system or another. It considers the -# compiler to be in ANSI C mode if it handles function prototypes correctly. -# -# If you use this macro, you should check after calling it whether the C -# compiler has been set to accept ANSI C; if not, the shell variable -# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source -# code in ANSI C, you can make an un-ANSIfied copy of it by using the -# program @code{ansi2knr}, which comes with Ghostscript. -# @end defmac - -AC_DEFUN(AM_PROG_CC_STDC, -[AC_REQUIRE([AC_PROG_CC]) -AC_BEFORE([$0], [AC_C_INLINE]) -AC_BEFORE([$0], [AC_C_CONST]) -dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require -dnl a magic option to avoid problems with ANSI preprocessor commands -dnl like #elif. -dnl FIXME: can't do this because then AC_AIX won't work due to a -dnl circular dependency. -dnl AC_BEFORE([$0], [AC_PROG_CPP]) -AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) -AC_CACHE_VAL(am_cv_prog_cc_stdc, -[am_cv_prog_cc_stdc=no -ac_save_CC="$CC" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - AC_TRY_COMPILE( -[#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -], [ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -], -[am_cv_prog_cc_stdc="$ac_arg"; break]) -done -CC="$ac_save_CC" -]) -if test -z "$am_cv_prog_cc_stdc"; then - AC_MSG_RESULT([none needed]) -else - AC_MSG_RESULT($am_cv_prog_cc_stdc) -fi -case "x$am_cv_prog_cc_stdc" in - x|xno) ;; - *) CC="$CC $am_cv_prog_cc_stdc" ;; -esac -]) - -# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- - -# serial 46 AC_PROG_LIBTOOL - -AC_DEFUN([AC_PROG_LIBTOOL], -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Prevent multiple expansion -define([AC_PROG_LIBTOOL], []) -]) - -AC_DEFUN([AC_LIBTOOL_SETUP], -[AC_PREREQ(2.13)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -AC_REQUIRE([AC_PROG_NM])dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -AC_REQUIRE([AC_OBJEXT])dnl -AC_REQUIRE([AC_EXEEXT])dnl -dnl - -_LT_AC_PROG_ECHO_BACKSLASH -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - AC_PATH_MAGIC - fi - ;; -esac - -AC_CHECK_TOOL(RANLIB, ranlib, :) -AC_CHECK_TOOL(STRIP, strip, :) - -ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) -ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], -enable_win32_dll=yes, enable_win32_dll=no) - -AC_ARG_ENABLE(libtool-lock, - [ --disable-libtool-lock avoid locking (might break parallel builds)]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_SAVE - AC_LANG_C - AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_RESTORE]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; - -ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw* | *-*-pw32*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - - # recent cygwin and mingw systems supply a stub DllMain which the user - # can override, but on older systems we have to supply one - AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, - [AC_TRY_LINK([], - [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); - DllMain (0, 0, 0);], - [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) - - case $host/$CC in - *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) - # old mingw systems require "-dll" to link a DLL, while more recent ones - # require "-mdll" - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -mdll" - AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, - [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) - CFLAGS="$SAVE_CFLAGS" ;; - *-*-cygwin* | *-*-pw32*) - # cygwin systems need to pass --dll to the linker, and not link - # crt.o which will require a WinMain@16 definition. - lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; - esac - ;; - ]) -esac - -_LT_AC_LTCONFIG_HACK - -]) - -# AC_LIBTOOL_HEADER_ASSERT -# ------------------------ -AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], -[AC_CACHE_CHECK([whether $CC supports assert without backlinking], - [lt_cv_func_assert_works], - [case $host in - *-*-solaris*) - if test "$GCC" = yes && test "$with_gnu_ld" != yes; then - case `$CC --version 2>/dev/null` in - [[12]].*) lt_cv_func_assert_works=no ;; - *) lt_cv_func_assert_works=yes ;; - esac - fi - ;; - esac]) - -if test "x$lt_cv_func_assert_works" = xyes; then - AC_CHECK_HEADERS(assert.h) -fi -])# AC_LIBTOOL_HEADER_ASSERT - -# _LT_AC_CHECK_DLFCN -# -------------------- -AC_DEFUN([_LT_AC_CHECK_DLFCN], -[AC_CHECK_HEADERS(dlfcn.h) -])# _LT_AC_CHECK_DLFCN - -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -# --------------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_REQUIRE([AC_PROG_NM]) -AC_REQUIRE([AC_OBJEXT]) -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) # Its linker distinguishes data from code symbols - lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -solaris* | sysv5*) - symcode='[[BDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $host_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then - symcode='[[ABCDGISTW]]' -fi - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. -lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - rm -f conftest* - cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if egrep ' nm_test_var$' "$nlist" >/dev/null; then - if egrep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' - - cat <> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr void * -#else -# define lt_ptr char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr address; -} -lt_preloaded_symbols[[]] = -{ -EOF - sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$no_builtin_flag" - if AC_TRY_EVAL(ac_link) && test -s conftest; then - pipe_works=yes - fi - LIBS="$save_LIBS" - CFLAGS="$save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AC_FD_CC - fi - else - echo "cannot find nm_test_var in $nlist" >&AC_FD_CC - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC - fi - else - echo "$progname: failed program was:" >&AC_FD_CC - cat conftest.$ac_ext >&5 - fi - rm -f conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" -if test -z "$lt_cv_sys_global_symbol_pipe"; then - global_symbol_to_cdecl= - global_symbol_to_c_name_address= -else - global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" - global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" -fi -if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; -then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE - -# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR -# --------------------------------- -AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], -[# Find the correct PATH separator. Usually this is `:', but -# DJGPP uses `;' like DOS. -if test "X${PATH_SEPARATOR+set}" != Xset; then - UNAME=${UNAME-`uname 2>/dev/null`} - case X$UNAME in - *-DOS) lt_cv_sys_path_separator=';' ;; - *) lt_cv_sys_path_separator=':' ;; - esac - PATH_SEPARATOR=$lt_cv_sys_path_separator -fi -])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR - -# _LT_AC_PROG_ECHO_BACKSLASH -# -------------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], -[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -echo=${ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(ECHO) -AC_DIVERT_POP -])# _LT_AC_PROG_ECHO_BACKSLASH - -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ------------------------------------------------------------------ -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -[if test "$cross_compiling" = yes; then : - [$4] -else - AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -}] -EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_unknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_AC_TRY_DLOPEN_SELF - -# AC_LIBTOOL_DLOPEN_SELF -# ------------------- -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -[if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - cygwin* | mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -])# AC_LIBTOOL_DLOPEN_SELF - -AC_DEFUN([_LT_AC_LTCONFIG_HACK], -[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -sed_quote_subst='s/\([[\\"\\`$\\\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([[\\"\\`\\\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" -need_locks="$enable_libtool_lock" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o - -if test x"$host" != x"$build"; then - ac_tool_prefix=${host_alias}- -else - ac_tool_prefix= -fi - -# Transform linux* to *-*-linux-gnu*, to support old configure scripts. -case $host_os in -linux-gnu*) ;; -linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` -esac - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -# Allow CC to be a program name with arguments. -set dummy $CC -compiler="[$]2" - -AC_MSG_CHECKING([for objdir]) -rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - objdir=_libs -fi -rmdir .libs 2>/dev/null -AC_MSG_RESULT($objdir) - - -AC_ARG_WITH(pic, -[ --with-pic try to use only PIC/non-PIC objects [default=use both]], -pic_mode="$withval", pic_mode=default) -test -z "$pic_mode" && pic_mode=default - -# We assume here that the value for lt_cv_prog_cc_pic will not be cached -# in isolation, and that seeing it set (from the cache) indicates that -# the associated values are set (in the cache) correctly too. -AC_MSG_CHECKING([for $compiler option to produce PIC]) -AC_CACHE_VAL(lt_cv_prog_cc_pic, -[ lt_cv_prog_cc_pic= - lt_cv_prog_cc_shlib= - lt_cv_prog_cc_wl= - lt_cv_prog_cc_static= - lt_cv_prog_cc_no_builtin= - lt_cv_prog_cc_can_build_shared=$can_build_shared - - if test "$GCC" = yes; then - lt_cv_prog_cc_wl='-Wl,' - lt_cv_prog_cc_static='-static' - - case $host_os in - aix*) - # Below there is a dirty hack to force normal static linking with -ldl - # The problem is because libdl dynamically linked with both libc and - # libC (AIX C++ library), which obviously doesn't included in libraries - # list by gcc. This cause undefined symbols with -static flags. - # This hack allows C programs to be linked with "-static -ldl", but - # not sure about C++ programs. - lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_cv_prog_cc_pic='-fno-common' - ;; - cygwin* | mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_cv_prog_cc_pic='-DDLL_EXPORT' - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_cv_prog_cc_pic=-Kconform_pic - fi - ;; - *) - lt_cv_prog_cc_pic='-fPIC' - ;; - esac - else - # PORTME Check for PIC flags for the system compiler. - case $host_os in - aix3* | aix4* | aix5*) - lt_cv_prog_cc_wl='-Wl,' - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_cv_prog_cc_static='-Bstatic' - else - lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - hpux9* | hpux10* | hpux11*) - # Is there a better lt_cv_prog_cc_static that works with the bundled CC? - lt_cv_prog_cc_wl='-Wl,' - lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" - lt_cv_prog_cc_pic='+Z' - ;; - - irix5* | irix6* | nonstopux*) - lt_cv_prog_cc_wl='-Wl,' - lt_cv_prog_cc_static='-non_shared' - # PIC (with -KPIC) is the default. - ;; - - cygwin* | mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_cv_prog_cc_pic='-DDLL_EXPORT' - ;; - - newsos6) - lt_cv_prog_cc_pic='-KPIC' - lt_cv_prog_cc_static='-Bstatic' - ;; - - osf3* | osf4* | osf5*) - # All OSF/1 code is PIC. - lt_cv_prog_cc_wl='-Wl,' - lt_cv_prog_cc_static='-non_shared' - ;; - - sco3.2v5*) - lt_cv_prog_cc_pic='-Kpic' - lt_cv_prog_cc_static='-dn' - lt_cv_prog_cc_shlib='-belf' - ;; - - solaris*) - lt_cv_prog_cc_pic='-KPIC' - lt_cv_prog_cc_static='-Bstatic' - lt_cv_prog_cc_wl='-Wl,' - ;; - - sunos4*) - lt_cv_prog_cc_pic='-PIC' - lt_cv_prog_cc_static='-Bstatic' - lt_cv_prog_cc_wl='-Qoption ld ' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - lt_cv_prog_cc_pic='-KPIC' - lt_cv_prog_cc_static='-Bstatic' - if test "x$host_vendor" = xsni; then - lt_cv_prog_cc_wl='-LD' - else - lt_cv_prog_cc_wl='-Wl,' - fi - ;; - - uts4*) - lt_cv_prog_cc_pic='-pic' - lt_cv_prog_cc_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_cv_prog_cc_pic='-Kconform_pic' - lt_cv_prog_cc_static='-Bstatic' - fi - ;; - - *) - lt_cv_prog_cc_can_build_shared=no - ;; - esac - fi -]) -if test -z "$lt_cv_prog_cc_pic"; then - AC_MSG_RESULT([none]) -else - AC_MSG_RESULT([$lt_cv_prog_cc_pic]) - - # Check to make sure the pic_flag actually works. - AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) - AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" - AC_TRY_COMPILE([], [], [dnl - case $host_os in - hpux9* | hpux10* | hpux11*) - # On HP-UX, both CC and GCC only warn that PIC is supported... then - # they create non-PIC objects. So, if there were any warnings, we - # assume that PIC is not supported. - if test -s conftest.err; then - lt_cv_prog_cc_pic_works=no - else - lt_cv_prog_cc_pic_works=yes - fi - ;; - *) - lt_cv_prog_cc_pic_works=yes - ;; - esac - ], [dnl - lt_cv_prog_cc_pic_works=no - ]) - CFLAGS="$save_CFLAGS" - ]) - - if test "X$lt_cv_prog_cc_pic_works" = Xno; then - lt_cv_prog_cc_pic= - lt_cv_prog_cc_can_build_shared=no - else - lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" - fi - - AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) -fi - -# Check for any special shared library compilation flags. -if test -n "$lt_cv_prog_cc_shlib"; then - AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) - lt_cv_prog_cc_can_build_shared=no - fi -fi - -AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) -AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl - lt_cv_prog_cc_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" - AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) - LDFLAGS="$save_LDFLAGS" -]) - -# Belt *and* braces to stop my trousers falling down: -test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= -AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) - -pic_flag="$lt_cv_prog_cc_pic" -special_shlib_compile_flags="$lt_cv_prog_cc_shlib" -wl="$lt_cv_prog_cc_wl" -link_static_flag="$lt_cv_prog_cc_static" -no_builtin_flag="$lt_cv_prog_cc_no_builtin" -can_build_shared="$lt_cv_prog_cc_can_build_shared" - - -# Check to see if options -o and -c are simultaneously supported by compiler -AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) -AC_CACHE_VAL([lt_cv_compiler_c_o], [ -$rm -r conftest 2>/dev/null -mkdir conftest -cd conftest -echo "int some_variable = 0;" > conftest.$ac_ext -mkdir out -# According to Tom Tromey, Ian Lance Taylor reported there are C compilers -# that will create temporary files in the current directory regardless of -# the output directory. Thus, making CWD read-only will cause this test -# to fail, enabling locking or at least warning the user not to do parallel -# builds. -chmod -w . -save_CFLAGS="$CFLAGS" -CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" -compiler_c_o=no -if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s out/conftest.err; then - lt_cv_compiler_c_o=no - else - lt_cv_compiler_c_o=yes - fi -else - # Append any errors to the config.log. - cat out/conftest.err 1>&AC_FD_CC - lt_cv_compiler_c_o=no -fi -CFLAGS="$save_CFLAGS" -chmod u+w . -$rm conftest* out/* -rmdir out -cd .. -rmdir conftest -$rm -r conftest 2>/dev/null -]) -compiler_c_o=$lt_cv_compiler_c_o -AC_MSG_RESULT([$compiler_c_o]) - -if test x"$compiler_c_o" = x"yes"; then - # Check to see if we can write to a .lo - AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) - AC_CACHE_VAL([lt_cv_compiler_o_lo], [ - lt_cv_compiler_o_lo=no - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -c -o conftest.lo" - save_objext="$ac_objext" - ac_objext=lo - AC_TRY_COMPILE([], [int some_variable = 0;], [dnl - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - lt_cv_compiler_o_lo=no - else - lt_cv_compiler_o_lo=yes - fi - ]) - ac_objext="$save_objext" - CFLAGS="$save_CFLAGS" - ]) - compiler_o_lo=$lt_cv_compiler_o_lo - AC_MSG_RESULT([$compiler_o_lo]) -else - compiler_o_lo=no -fi - -# Check to see if we can do hard links to lock some files if needed -hard_links="nottested" -if test "$compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([\`$CC' does not support \`-c -o', so \`make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi - -if test "$GCC" = yes; then - # Check to see if options -fno-rtti -fno-exceptions are supported by compiler - AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) - echo "int some_variable = 0;" > conftest.$ac_ext - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" - compiler_rtti_exceptions=no - AC_TRY_COMPILE([], [int some_variable = 0;], [dnl - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - compiler_rtti_exceptions=no - else - compiler_rtti_exceptions=yes - fi - ]) - CFLAGS="$save_CFLAGS" - AC_MSG_RESULT([$compiler_rtti_exceptions]) - - if test "$compiler_rtti_exceptions" = "yes"; then - no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' - else - no_builtin_flag=' -fno-builtin' - fi -fi - -# See if the linker supports building shared libraries. -AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) - -allow_undefined_flag= -no_undefined_flag= -need_lib_prefix=unknown -need_version=unknown -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -archive_cmds= -archive_expsym_cmds= -old_archive_from_new_cmds= -old_archive_from_expsyms_cmds= -export_dynamic_flag_spec= -whole_archive_flag_spec= -thread_safe_flag_spec= -hardcode_into_libs=no -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no -hardcode_shlibpath_var=unsupported -runpath_var= -link_all_deplibs=unknown -always_export_symbols=no -export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' -# include_expsyms should be a list of space-separated symbols to be *always* -# included in the symbol list -include_expsyms= -# exclude_expsyms can be an egrep regular expression of symbols to exclude -# it will be wrapped by ` (' and `)$', so one must not match beginning or -# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', -# as well as any symbol that contains `d'. -exclude_expsyms="_GLOBAL_OFFSET_TABLE_" -# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out -# platforms (ab)use it in PIC code, but their linkers get confused if -# the symbol is explicitly referenced. Since portable code cannot -# rely on this symbol name, it's probably fine to never include it in -# preloaded symbol tables. -extract_expsyms_cmds= - -case $host_os in -cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; -openbsd*) - with_gnu_ld=no - ;; -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX, the GNU linker is very broken - # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. - ld_shlibs=no - cat <&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - ;; - - amigaos*) - archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can use - # them. - ld_shlibs=no - ;; - - beos*) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32*) - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - allow_undefined_flag=unsupported - always_export_symbols=yes - - extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ - sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ - test -f $output_objdir/impgen.exe || (cd $output_objdir && \ - if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ - else $CC -o impgen impgen.c ; fi)~ - $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' - - old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' - - # cygwin and mingw dlls have different entry points and sets of symbols - # to exclude. - # FIXME: what about values for MSVC? - dll_entry=__cygwin_dll_entry@12 - dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ - case $host_os in - mingw*) - # mingw values - dll_entry=_DllMainCRTStartup@12 - dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ - ;; - esac - - # mingw and cygwin differ, and it's simplest to just exclude the union - # of the two symbol sets. - dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 - - # recent cygwin and mingw systems supply a stub DllMain which the user - # can override, but on older systems we have to supply one (in ltdll.c) - if test "x$lt_cv_need_dllmain" = "xyes"; then - ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " - ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ - test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' - else - ltdll_obj= - ltdll_cmds= - fi - - # Extract the symbol export list from an `--export-all' def file, - # then regenerate the def file from the symbol export list, so that - # the compiled dll only exports the symbol export list. - # Be careful not to strip the DATA tag left be newer dlltools. - export_symbols_cmds="$ltdll_cmds"' - $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ - sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' - - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is. - # If DATA tags from a recent dlltool are present, honour them! - archive_expsym_cmds='if test "x`head -1 $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname-def; - else - echo EXPORTS > $output_objdir/$soname-def; - _lt_hint=1; - cat $export_symbols | while read symbol; do - set dummy \$symbol; - case \[$]# in - 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; - *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; - esac; - _lt_hint=`expr 1 + \$_lt_hint`; - done; - fi~ - '"$ltdll_cmds"' - $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ - $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ - $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ - $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - case $host_os in - cygwin* | mingw* | pw32*) - # dlltool doesn't understand --whole-archive et. al. - whole_archive_flag_spec= - ;; - *) - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - ;; - esac - fi -else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - hardcode_direct=yes - archive_cmds='' - hardcode_libdir_separator=':' - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - esac - - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - shared_flag='${wl}-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall can do strange things, so it is better to - # generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' - archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='${wl}-berok' - # This is a bit strange, but is similar to how AIX traditionally builds - # it's shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' - fi - fi - ;; - - amigaos*) - archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - ;; - - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[[012]]) - allow_undefined_flag='-undefined suppress' - ;; - *) # Darwin 1.3 on - allow_undefined_flag='-flat_namespace -undefined suppress' - ;; - esac - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. Also zsh mangles - # `"' quotes if we put them in here... so don't! - archive_cmds='$nonopt $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' - # We need to add '_' to the symbols in $export_symbols first - #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' - hardcode_direct=yes - hardcode_shlibpath_var=no - whole_archive_flag_spec='-all_load $convenience' - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9* | hpux10* | hpux11*) - case $host_os in - hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; - *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; - esac - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_minus_L=yes # Not in the search PATH, but as the default - # location of the library. - export_dynamic_flag_spec='${wl}-E' - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - openbsd*) - hardcode_direct=yes - hardcode_shlibpath_var=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case "$host_os" in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' - - #Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - hardcode_libdir_separator=: - ;; - - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - export_dynamic_flag_spec='${wl}-Bexport' - ;; - - solaris*) - # gcc --version < 3.0 without binutils cannot create self contained - # shared libraries reliably, requiring libgcc.a to resolve some of - # the object symbols generated in some cases. Libraries that use - # assert need libgcc.a to resolve __eprintf, for example. Linking - # a copy of libgcc.a into every shared library to guarantee resolving - # such symbols causes other problems: According to Tim Van Holder - # , C++ libraries end up with a separate - # (to the application) exception stack for one thing. - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - case `$CC --version 2>/dev/null` in - [[12]].*) - cat <&2 - -*** Warning: Releases of GCC earlier than version 3.0 cannot reliably -*** create self contained shared libraries on Solaris systems, without -*** introducing a dependency on libgcc.a. Therefore, libtool is disabling -*** -no-undefined support, which will at least allow you to build shared -*** libraries. However, you may find that when you link such libraries -*** into an application without using GCC, you have to manually add -*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to -*** upgrade to a newer version of GCC. Another option is to rebuild your -*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. - -EOF - no_undefined_flag= - ;; - esac - fi - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - if test "x$host_vendor" = xsno; then - archive_cmds='$LD -G -Bsymbolic -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - else - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv5*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec= - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4.2uw2*) - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5uw7* | unixware7*) - no_undefined_flag='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac -fi -AC_MSG_RESULT([$ld_shlibs]) -test "$ld_shlibs" = no && can_build_shared=no - -# Check hardcoding attributes. -AC_MSG_CHECKING([how to hardcode library paths into programs]) -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var"; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$hardcode_shlibpath_var" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -AC_MSG_RESULT([$hardcode_action]) - -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi - -reload_cmds='$LD$reload_flag -o $output$reload_objs' -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -# PORTME Fill in your ld.so characteristics -AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}.so$major' - ;; - -aix4* | aix5*) - version_type=linux - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can - # not hardcode correct soname into executable. Probably we can - # add versioning support to collect2, so additional links can - # be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}.so$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}.so' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - export_dynamic_flag_spec=-rdynamic - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - need_version=no - need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin*) - library_names_spec='$libname.dll.a' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' - postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog .libs/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - ;; - yes,mingw*) - library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g"` - ;; - yes,pw32*) - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' - ;; - *) - library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - # FIXME: Relying on posixy $() will cause problems for - # cross-compilation, but unfortunately the echo tests do not - # yet detect zsh echo's removal of \ escapes. - library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' - soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - *) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - dynamic_linker="$host_os dld.sl" - version_type=sunos - need_lib_prefix=no - need_version=no - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' - soname_spec='${libname}${release}.sl$major' - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) version_type=irix ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}.so$major' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux-gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' - soname_spec='${libname}${release}.so$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case "$host_os" in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -os2*) - libname_spec='$name' - need_lib_prefix=no - library_names_spec='$libname.dll $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_version=no - need_lib_prefix=no - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}.so$major' - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' - soname_spec='${libname}${release}.so$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' - soname_spec='$libname.so.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -# Report the final consequences. -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -if test "$hardcode_action" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -AC_LIBTOOL_DLOPEN_SELF - -if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], - [$rm conftest* - echo 'static int dummy;' > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile); then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_cv_prog_cc_wl - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi]) - AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) - ;; - esac -fi -need_lc=${lt_cv_archive_cmds_need_lc-yes} - -# The second clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - : -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - test -f Makefile && make "$ltmain" -fi - -if test -f "$ltmain"; then - trap "$rm \"${ofile}T\"; exit 1" 1 2 15 - $rm -f "${ofile}T" - - echo creating $ofile - - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS \ - AR AR_FLAGS CC LD LN_S NM SHELL \ - reload_flag reload_cmds wl \ - pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ - thread_safe_flag_spec whole_archive_flag_spec libname_spec \ - library_names_spec soname_spec \ - RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ - old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ - postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ - old_striplib striplib file_magic_cmd export_symbols_cmds \ - deplibs_check_method allow_undefined_flag no_undefined_flag \ - finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ - global_symbol_to_c_name_address \ - hardcode_libdir_flag_spec hardcode_libdir_separator \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do - - case $var in - reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ - extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - cat <<__EOF__ > "${ofile}T" -#! $SHELL - -# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996-2000 Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 +# generated automatically by aclocal 1.14.1 -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -2996,1117 +41,1274 @@ if test -f "$ltmain"; then # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="sed -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -# ### BEGIN LIBTOOL CONFIG - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$need_lc - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# The default C compiler. -CC=$lt_CC - -# Is the compiler the GNU C compiler? -with_gcc=$GCC - -# The linker used to build libraries. -LD=$lt_LD - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_wl - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_pic_flag -pic_mode=$pic_mode - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_compiler_c_o - -# Can we write directly to a .lo ? -compiler_o_lo=$lt_compiler_o_lo - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_link_static_flag - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_no_builtin_flag - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path" +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: -# ### END LIBTOOL CONFIG +$$1_PKG_ERRORS -__EOF__ +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. - case $host_os in - aix3*) - cat <<\EOF >> "${ofile}T" +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac +_PKG_TEXT - case $host_os in - cygwin* | mingw* | pw32* | os2*) - cat <<'EOF' >> "${ofile}T" - # This is a source program that is used to create dlls on Windows - # Don't remove nor modify the starting and closing comments -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ - # This is a source program that is used to create import libraries - # on Windows for dlls which lack them. Don't remove nor modify the - # starting and closing comments -# /* impgen.c starts here */ -# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. -# -# This file is part of GNU libtool. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# */ -# -# #include /* for printf() */ -# #include /* for open(), lseek(), read() */ -# #include /* for O_RDONLY, O_BINARY */ -# #include /* for strdup() */ -# -# /* O_BINARY isn't required (or even defined sometimes) under Unix */ -# #ifndef O_BINARY -# #define O_BINARY 0 -# #endif -# -# static unsigned int -# pe_get16 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[2]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 2); -# return b[0] + (b[1]<<8); -# } -# -# static unsigned int -# pe_get32 (fd, offset) -# int fd; -# int offset; -# { -# unsigned char b[4]; -# lseek (fd, offset, SEEK_SET); -# read (fd, b, 4); -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# static unsigned int -# pe_as32 (ptr) -# void *ptr; -# { -# unsigned char *b = ptr; -# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); -# } -# -# int -# main (argc, argv) -# int argc; -# char *argv[]; -# { -# int dll; -# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; -# unsigned long export_rva, export_size, nsections, secptr, expptr; -# unsigned long name_rvas, nexp; -# unsigned char *expdata, *erva; -# char *filename, *dll_name; -# -# filename = argv[1]; -# -# dll = open(filename, O_RDONLY|O_BINARY); -# if (dll < 1) -# return 1; -# -# dll_name = filename; -# -# for (i=0; filename[i]; i++) -# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') -# dll_name = filename + i +1; -# -# pe_header_offset = pe_get32 (dll, 0x3c); -# opthdr_ofs = pe_header_offset + 4 + 20; -# num_entries = pe_get32 (dll, opthdr_ofs + 92); +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES + +# Copyright (C) 2002-2013 Free Software Foundation, Inc. # -# if (num_entries < 1) /* no exports */ -# return 1; +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.14' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.14.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.14.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # -# export_rva = pe_get32 (dll, opthdr_ofs + 96); -# export_size = pe_get32 (dll, opthdr_ofs + 100); -# nsections = pe_get16 (dll, pe_header_offset + 4 +2); -# secptr = (pe_header_offset + 4 + 20 + -# pe_get16 (dll, pe_header_offset + 4 + 16)); +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. # -# expptr = 0; -# for (i = 0; i < nsections; i++) -# { -# char sname[8]; -# unsigned long secptr1 = secptr + 40 * i; -# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); -# unsigned long vsize = pe_get32 (dll, secptr1 + 16); -# unsigned long fptr = pe_get32 (dll, secptr1 + 20); -# lseek(dll, secptr1, SEEK_SET); -# read(dll, sname, 8); -# if (vaddr <= export_rva && vaddr+vsize > export_rva) -# { -# expptr = fptr + (export_rva - vaddr); -# if (export_rva + export_size > vaddr + vsize) -# export_size = vsize - (export_rva - vaddr); -# break; -# } -# } +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. # -# expdata = (unsigned char*)malloc(export_size); -# lseek (dll, expptr, SEEK_SET); -# read (dll, expdata, export_size); -# erva = expdata - export_rva; +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir # -# nexp = pe_as32 (expdata+24); -# name_rvas = pe_as32 (expdata+32); +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. # -# printf ("EXPORTS\n"); -# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. - mv -f "${ofile}T" "$ofile" || \ - (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") - chmod +x "$ofile" +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -])# _LT_AC_LTCONFIG_HACK -# AC_LIBTOOL_DLOPEN - enable checks for dlopen support -AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... -# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's -AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) -# AC_ENABLE_SHARED - implement the --enable-shared flag -# Usage: AC_ENABLE_SHARED[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN([AC_ENABLE_SHARED], -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(shared, -changequote(<<, >>)dnl -<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], -changequote([, ])dnl -[p=${PACKAGE-default} -case $enableval in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi fi done - IFS="$ac_save_ifs" - ;; -esac], -enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) -# AC_DISABLE_SHARED - set the default shared flag to --disable-shared -AC_DEFUN([AC_DISABLE_SHARED], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_SHARED(no)]) -# AC_ENABLE_STATIC - implement the --enable-static flag -# Usage: AC_ENABLE_STATIC[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN([AC_ENABLE_STATIC], -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(static, -changequote(<<, >>)dnl -<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], -changequote([, ])dnl -[p=${PACKAGE-default} -case $enableval in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) -# AC_DISABLE_STATIC - set the default static flag to --disable-static -AC_DEFUN([AC_DISABLE_STATIC], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no)]) +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- -# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag -# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN([AC_ENABLE_FAST_INSTALL], -[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(fast-install, -changequote(<<, >>)dnl -<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], -changequote([, ])dnl -[p=${PACKAGE-default} -case $enableval in -yes) enable_fast_install=yes ;; -no) enable_fast_install=no ;; -*) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_fast_install=yes +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done done - IFS="$ac_save_ifs" - ;; -esac], -enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl -]) +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS -# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install -AC_DEFUN([AC_DISABLE_FAST_INSTALL], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_FAST_INSTALL(no)]) -# AC_LIBTOOL_PICMODE - implement the --with-pic flag -# Usage: AC_LIBTOOL_PICMODE[(MODE)] -# Where MODE is either `yes' or `no'. If omitted, it defaults to -# `both'. -AC_DEFUN([AC_LIBTOOL_PICMODE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -pic_mode=ifelse($#,1,$1,default)]) +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) +# Do all the work for Automake. -*- Autoconf -*- -# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library -AC_DEFUN([AC_PATH_TOOL_PREFIX], -[AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in - /*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; - ?:/*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. - ;; - *) - ac_save_MAGIC_CMD="$MAGIC_CMD" - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="ifelse([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - egrep "$file_magic_regex" > /dev/null; then - : - else - cat <&2 +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. -EOF - fi ;; - esac - fi - break - fi - done - IFS="$ac_save_ifs" - MAGIC_CMD="$ac_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O ]) +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi -# AC_PATH_MAGIC - find a file program which can recognise a shared library -AC_DEFUN([AC_PATH_MAGIC], -[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl -AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' else - MAGIC_CMD=: + CYGPATH_W=echo fi fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . -# AC_PROG_LD - find the path to the GNU or non-GNU linker -AC_DEFUN([AC_PROG_LD], -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | [[A-Za-z]]:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the path of ld - ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; + install_sh="\${SHELL} $am_aux_dir/install-sh" esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$lt_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_PROG_LD_GNU -]) +AC_SUBST([install_sh])]) -# AC_PROG_LD_GNU - -AC_DEFUN([AC_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - lt_cv_prog_gnu_ld=yes +# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. else - lt_cv_prog_gnu_ld=no -fi]) -with_gnu_ld=$lt_cv_prog_gnu_ld -]) - -# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker -# -- PORTME Some linkers may need a different reload flag. -AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], -[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, -[lt_cv_ld_reload_flag='-r']) -reload_flag=$lt_cv_ld_reload_flag -test -n "$reload_flag" && reload_flag=" $reload_flag" -]) - -# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], -[AC_CACHE_CHECK([how to recognise dependant libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given egrep regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) -case $host_os in -aix4* | aix5*) - lt_cv_deplibs_check_method=pass_all - ;; +# Check to see how 'make' treats includes. -*- Autoconf -*- -beos*) - lt_cv_deplibs_check_method=pass_all +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) -bsdi4*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -cygwin* | mingw* | pw32*) - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) -darwin* | rhapsody*) - lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' - lt_cv_file_magic_cmd='/usr/bin/file -L' - case "$host_os" in - rhapsody* | darwin1.[[012]]) - lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` - ;; - *) # Darwin 1.3 on - lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' - ;; +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; esac - ;; - -freebsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) -hpux10.20*|hpux11*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; +# Helper functions for option handling. -*- Autoconf -*- -irix5* | irix6* | nonstopux*) - case $host_os in - irix5* | nonstopux*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" - ;; - *) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" - ;; - esac - lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` - lt_cv_deplibs_check_method=pass_all - ;; +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# This must be Linux ELF. -linux-gnu*) - lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' - fi - ;; +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) -openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' - else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' - fi - ;; +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -osf3* | osf4* | osf5*) - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' - lt_cv_file_magic_test_file=/shlib/libc.so - lt_cv_deplibs_check_method=pass_all - ;; +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -solaris*) - lt_cv_deplibs_check_method=pass_all - lt_cv_file_magic_test_file=/lib/libc.so - ;; +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -sysv5uw[[78]]* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - esac - ;; +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file ]) +# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# AC_PROG_NM - find the path to a BSD-compatible name lister -AC_DEFUN([AC_PROG_NM], -[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl -AC_MSG_CHECKING([for BSD-compatible nm]) -AC_CACHE_VAL(lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/${ac_tool_prefix}nm - if test -f $tmp_nm || test -f $tmp_nm$ac_exeext ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then - lt_cv_path_NM="$tmp_nm -B" - break - elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - lt_cv_path_NM="$tmp_nm -p" - break - else - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - fi - fi - done - IFS="$ac_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm + am_cv_make_support_nested_variables=no fi]) -NM="$lt_cv_path_NM" -AC_MSG_RESULT([$NM]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# AC_CHECK_LIBM - check for math library -AC_DEFUN([AC_CHECK_LIBM], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32*) - # These system don't have libm - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, main, LIBM="-lm") - ;; -esac -]) +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for -# the libltdl convenience library and LTDLINCL to the include flags for -# the libltdl header and adds --enable-ltdl-convenience to the -# configure arguments. Note that LIBLTDL and LTDLINCL are not -# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not -# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed -# with '${top_builddir}/' and LTDLINCL will be prefixed with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. -AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case $enable_ltdl_convenience in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -]) +# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for -# the libltdl installable library and LTDLINCL to the include flags for -# the libltdl header and adds --enable-ltdl-install to the configure -# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is -# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed -# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will -# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed -# with '${top_srcdir}/' (note the single quotes!). If your package is -# not flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - AC_CHECK_LIB(ltdl, main, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - LTDLINCL= - fi - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -]) +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) -# old names -AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) -AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) -AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) -# This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL]) +# Check how to create a tarball. -*- Autoconf -*- -# Add --enable-maintainer-mode option to configure. -# From Jim Meyering +# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. -# serial 1 +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], -AC_DEFUN(AM_MAINTAINER_MODE, -[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -[ --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - USE_MAINTAINER_MODE=$enableval, - USE_MAINTAINER_MODE=no) - AC_MSG_RESULT($USE_MAINTAINER_MODE) - AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST(MAINT)dnl -] -) + [pax], + [], -# Define a conditional. + [m4_fatal([Unknown tar format])]) -AC_DEFUN(AM_CONDITIONAL, -[AC_SUBST($1_TRUE) -AC_SUBST($1_FALSE) -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi]) + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir -# serial 1 + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_DEFUN(AM_WITH_DMALLOC, -[AC_MSG_CHECKING(if malloc debugging is wanted) -AC_ARG_WITH(dmalloc, -[ --with-dmalloc use dmalloc, as in - ftp://ftp.letters.com/src/dmalloc/dmalloc.tar.gz], -[if test "$withval" = yes; then - AC_MSG_RESULT(yes) - AC_DEFINE(WITH_DMALLOC,1, - [Define if using the dmalloc debugging malloc package]) - LIBS="$LIBS -ldmalloc" - LDFLAGS="$LDFLAGS -g" -else - AC_MSG_RESULT(no) -fi], [AC_MSG_RESULT(no)]) -]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..fd0be89 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,2 @@ +#!/bin/sh +autoreconf --force --install -I config -I m4 diff --git a/blobtrack.h b/blobtrack.h deleted file mode 100644 index e95feed..0000000 --- a/blobtrack.h +++ /dev/null @@ -1,121 +0,0 @@ -#include "opencv2/video/background_segm.hpp" -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/blobtrack.hpp" -#include -#include - -/* Select appropriate case insensitive string comparison function: */ -#if defined WIN32 || defined _MSC_VER - #define MY_STRNICMP strnicmp - #define MY_STRICMP stricmp -#else - #define MY_STRNICMP strncasecmp - #define MY_STRICMP strcasecmp -#endif - -/* List of foreground (FG) DETECTION modules: */ -static CvFGDetector* cvCreateFGDetector0 () { return cvCreateFGDetectorBase(CV_BG_MODEL_FGD, NULL); } -static CvFGDetector* cvCreateFGDetector0Simple() { return cvCreateFGDetectorBase(CV_BG_MODEL_FGD_SIMPLE, NULL); } -static CvFGDetector* cvCreateFGDetector1 () { return cvCreateFGDetectorBase(CV_BG_MODEL_MOG, NULL); } - -typedef struct DefModule_FGDetector -{ - CvFGDetector* (*create)(); - const char* nickname; - const char* description; -} DefModule_FGDetector; - -DefModule_FGDetector FGDetector_Modules[] = -{ - {cvCreateFGDetector0,"FG_0","Foreground Object Detection from Videos Containing Complex Background. ACM MM2003."}, - {cvCreateFGDetector0Simple,"FG_0S","Simplified version of FG_0"}, - {cvCreateFGDetector1,"FG_1","Adaptive background mixture models for real-time tracking. CVPR1999"}, - {NULL,NULL,NULL} -}; - -/* List of BLOB DETECTION modules: */ -typedef struct DefModule_BlobDetector -{ - CvBlobDetector* (*create)(); - const char* nickname; - const char* description; -} DefModule_BlobDetector; - -DefModule_BlobDetector BlobDetector_Modules[] = -{ - {cvCreateBlobDetectorCC,"BD_CC","Detect new blob by tracking CC of FG mask"}, - {cvCreateBlobDetectorSimple,"BD_Simple","Detect new blob by uniform moving of connected components of FG mask"}, - {NULL,NULL,NULL} -}; - -/* List of BLOB TRACKING modules: */ -typedef struct DefModule_BlobTracker -{ - CvBlobTracker* (*create)(); - const char* nickname; - const char* description; -} DefModule_BlobTracker; - -DefModule_BlobTracker BlobTracker_Modules[] = -{ - {cvCreateBlobTrackerCCMSPF,"CCMSPF","connected component tracking and MSPF resolver for collision"}, - {cvCreateBlobTrackerCC,"CC","Simple connected component tracking"}, - {cvCreateBlobTrackerMS,"MS","Mean shift algorithm "}, - {cvCreateBlobTrackerMSFG,"MSFG","Mean shift algorithm with FG mask using"}, - {cvCreateBlobTrackerMSPF,"MSPF","Particle filtering based on MS weight"}, - {NULL,NULL,NULL} -}; - -/* List of BLOB TRAJECTORY GENERATION modules: */ -typedef struct DefModule_BlobTrackGen -{ - CvBlobTrackGen* (*create)(); - const char* nickname; - const char* description; -} DefModule_BlobTrackGen; - -DefModule_BlobTrackGen BlobTrackGen_Modules[] = -{ - {cvCreateModuleBlobTrackGenYML,"YML","Generate track record in YML format as synthetic video data"}, - {cvCreateModuleBlobTrackGen1,"RawTracks","Generate raw track record (x,y,sx,sy),()... in each line"}, - {NULL,NULL,NULL} -}; - -/* List of BLOB TRAJECTORY POST PROCESSING modules: */ -typedef struct DefModule_BlobTrackPostProc -{ - CvBlobTrackPostProc* (*create)(); - const char* nickname; - const char* description; -} DefModule_BlobTrackPostProc; - -DefModule_BlobTrackPostProc BlobTrackPostProc_Modules[] = -{ - {cvCreateModuleBlobTrackPostProcKalman,"Kalman","Kalman filtering of blob position and size"}, - {NULL,"None","No post processing filter"}, -// {cvCreateModuleBlobTrackPostProcTimeAverRect,"TimeAverRect","Average by time using rectangle window"}, -// {cvCreateModuleBlobTrackPostProcTimeAverExp,"TimeAverExp","Average by time using exponential window"}, - {NULL,NULL,NULL} -}; - -/* List of BLOB TRAJECTORY ANALYSIS modules: */ -CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisDetector(); - -typedef struct DefModule_BlobTrackAnalysis -{ - CvBlobTrackAnalysis* (*create)(); - const char* nickname; - const char* description; -} DefModule_BlobTrackAnalysis; - -DefModule_BlobTrackAnalysis BlobTrackAnalysis_Modules[] = -{ - {cvCreateModuleBlobTrackAnalysisHistPVS,"HistPVS","Histogram of 5D feature vector analysis (x,y,vx,vy,state)"}, - {NULL,"None","No trajectory analiser"}, - {cvCreateModuleBlobTrackAnalysisHistP,"HistP","Histogram of 2D feature vector analysis (x,y)"}, - {cvCreateModuleBlobTrackAnalysisHistPV,"HistPV","Histogram of 4D feature vector analysis (x,y,vx,vy)"}, - {cvCreateModuleBlobTrackAnalysisHistSS,"HistSS","Histogram of 4D feature vector analysis (startpos,endpos)"}, - {cvCreateModuleBlobTrackAnalysisTrackDist,"TrackDist","Compare tracks directly"}, - {cvCreateModuleBlobTrackAnalysisIOR,"IOR","Integrator (by OR operation) of several analysers "}, - {NULL,NULL,NULL} -}; diff --git a/examples/00_opencv_haarcascade+pix_image/00_opencv_haarcascade+pix_image.pd b/examples/00_opencv_haarcascade+pix_image/00_opencv_haarcascade+pix_image.pd index 8220f35..17184cb 100644 --- a/examples/00_opencv_haarcascade+pix_image/00_opencv_haarcascade+pix_image.pd +++ b/examples/00_opencv_haarcascade+pix_image/00_opencv_haarcascade+pix_image.pd @@ -1,4 +1,9 @@ +<<<<<<< HEAD #N canvas 52 71 946 685 8; +======= +#N canvas 563 174 946 685 8; +#X declare -path ../../; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X obj 277 1021 pix_texture; #X obj 277 1048 rectangle 4 3; #X obj 277 347 pix_rgba; @@ -41,7 +46,11 @@ #X connect 6 0 0 0; #X connect 7 0 0 0; #X restore 304 94 pd gemwin; +<<<<<<< HEAD #X msg 304 61 create; +======= +#X msg 304 61 destroy; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X obj -190 155 cnv 15 600 180 empty empty empty 20 12 0 14 -260097 -66577 0; #X text -167 194 2.- Setup your camera; @@ -123,6 +132,10 @@ change the size of the image accorrding; #X obj 394 860 translateXYZ 0 0 0.2; #X obj 454 629 -; #X obj 484 626 * 2; +<<<<<<< HEAD +======= +#X obj 503 87 declare -path ../../; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X connect 0 0 1 0; #X connect 2 0 14 0; #X connect 3 0 8 0; diff --git a/examples/01_boundingrect+pmpd_ambient/01_boundingrect+pmpd_ambient.pd b/examples/01_boundingrect+pmpd_ambient/01_boundingrect+pmpd_ambient.pd new file mode 100755 index 0000000..08bd136 --- /dev/null +++ b/examples/01_boundingrect+pmpd_ambient/01_boundingrect+pmpd_ambient.pd @@ -0,0 +1,739 @@ +<<<<<<< HEAD +#N canvas 556 25 1099 664 12; +======= +#N canvas 556 80 1099 664 12; +#X declare -path ../..; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 +#N canvas 310 102 970 684 structure 0; +#X obj 124 43 pd_mass -0.7 0.7 \$0; +#X obj 189 113 pd_link \$0; +#X obj 27 290 pd_mass -1 0 \$0; +#X obj 123 558 pd_mass -0.7 -0.7 \$0; +#X obj 399 624 pd_mass 0 -1 \$0; +#X obj 436 16 pd_mass 0 1 \$0; +#X obj 680 64 pd_mass 0.7 0.7 \$0; +#X obj 766 285 pd_mass 1 0 \$0; +#X obj 748 552 pd_mass 0.7 -0.7 \$0; +#X obj 407 274 pd_mass 0 0 \$0; +#X obj 124 314 pd_link \$0; +#X obj 49 445 pd_link \$0; +#X obj 198 502 pd_link \$0; +#X obj 69 161 pd_link \$0; +#X obj 201 187 pd_link \$0; +#X obj 213 373 pd_link \$0; +#X obj 279 598 pd_link \$0; +#X obj 410 562 pd_link \$0; +#X obj 580 585 pd_link \$0; +#X obj 310 327 pd_link \$0; +#X obj 388 330 pd_link \$0; +#X obj 468 330 pd_link \$0; +#X obj 338 427 pd_link \$0; +#X obj 509 422 pd_link \$0; +#X obj 304 26 pd_link \$0; +#X obj 441 57 pd_link \$0; +#X obj 347 129 pd_link \$0; +#X obj 308 231 pd_link \$0; +#X obj 304 280 pd_link \$0; +#X obj 393 227 pd_link \$0; +#X obj 475 227 pd_link \$0; +#X obj 529 278 pd_link \$0; +#X obj 604 358 pd_link \$0; +#X obj 678 291 pd_link \$0; +#X obj 604 221 pd_link \$0; +#X obj 499 135 pd_link \$0; +#X obj 571 43 pd_link \$0; +#X obj 612 101 pd_link \$0; +#X obj 749 179 pd_link \$0; +#X obj 763 429 pd_link \$0; +#X obj 671 510 pd_link \$0; +#X connect 0 0 10 0; +#X connect 0 0 13 1; +#X connect 0 0 15 0; +#X connect 0 0 24 0; +#X connect 0 0 25 0; +#X connect 0 0 27 0; +#X connect 0 0 35 0; +#X connect 1 0 2 0; +#X connect 1 1 5 0; +#X connect 2 0 1 0; +#X connect 2 0 11 0; +#X connect 2 0 12 0; +#X connect 2 0 13 0; +#X connect 2 0 22 0; +#X connect 2 0 26 0; +#X connect 2 0 28 0; +#X connect 3 0 10 1; +#X connect 3 0 11 1; +#X connect 3 0 14 1; +#X connect 3 0 16 0; +#X connect 3 0 17 0; +#X connect 3 0 19 0; +#X connect 3 0 23 0; +#X connect 4 0 12 1; +#X connect 4 0 15 1; +#X connect 4 0 16 1; +#X connect 4 0 18 0; +#X connect 4 0 20 1; +#X connect 4 0 32 0; +#X connect 4 0 40 0; +#X connect 5 0 1 1; +#X connect 5 0 14 0; +#X connect 5 0 24 1; +#X connect 5 0 29 1; +#X connect 5 0 34 0; +#X connect 5 0 36 0; +#X connect 5 0 37 0; +#X connect 6 0 25 1; +#X connect 6 0 26 1; +#X connect 6 0 30 1; +#X connect 6 0 32 1; +#X connect 6 0 33 1; +#X connect 6 0 36 1; +#X connect 6 0 38 0; +#X connect 7 0 23 1; +#X connect 7 0 31 1; +#X connect 7 0 35 1; +#X connect 7 0 37 1; +#X connect 7 0 38 1; +#X connect 7 0 39 0; +#X connect 7 0 40 1; +#X connect 8 0 17 1; +#X connect 8 0 18 1; +#X connect 8 0 21 1; +#X connect 8 0 22 1; +#X connect 8 0 33 0; +#X connect 8 0 34 1; +#X connect 8 0 39 1; +#X connect 9 0 19 1; +#X connect 9 0 20 0; +#X connect 9 0 21 0; +#X connect 9 0 27 1; +#X connect 9 0 28 1; +#X connect 9 0 29 0; +#X connect 9 0 30 0; +#X connect 9 0 31 0; +#X connect 10 0 0 0; +#X connect 10 1 3 0; +#X connect 11 0 2 0; +#X connect 11 1 3 0; +#X connect 12 0 2 0; +#X connect 12 1 4 0; +#X connect 13 0 2 0; +#X connect 13 1 0 0; +#X connect 14 0 5 0; +#X connect 14 1 3 0; +#X connect 15 0 0 0; +#X connect 15 1 4 0; +#X connect 16 0 3 0; +#X connect 16 1 4 0; +#X connect 17 0 3 0; +#X connect 17 1 8 0; +#X connect 18 0 4 0; +#X connect 18 1 8 0; +#X connect 19 0 3 0; +#X connect 19 1 9 0; +#X connect 20 0 9 0; +#X connect 20 1 4 0; +#X connect 21 0 9 0; +#X connect 21 1 8 0; +#X connect 22 0 2 0; +#X connect 22 1 8 0; +#X connect 23 0 3 0; +#X connect 23 1 7 0; +#X connect 24 0 0 0; +#X connect 24 1 5 0; +#X connect 25 0 0 0; +#X connect 25 1 6 0; +#X connect 26 0 2 0; +#X connect 26 1 6 0; +#X connect 27 0 0 0; +#X connect 27 1 9 0; +#X connect 28 0 2 0; +#X connect 28 1 9 0; +#X connect 29 0 9 0; +#X connect 29 1 5 0; +#X connect 30 0 9 0; +#X connect 30 1 6 0; +#X connect 31 0 9 0; +#X connect 31 1 7 0; +#X connect 32 0 4 0; +#X connect 32 1 6 0; +#X connect 33 0 8 0; +#X connect 33 1 6 0; +#X connect 34 0 5 0; +#X connect 34 1 8 0; +#X connect 35 0 0 0; +#X connect 35 1 7 0; +#X connect 36 0 5 0; +#X connect 36 1 6 0; +#X connect 37 0 5 0; +#X connect 37 1 7 0; +#X connect 38 0 6 0; +#X connect 38 1 7 0; +#X connect 39 0 7 0; +#X connect 39 1 8 0; +#X connect 40 0 4 0; +#X connect 40 1 7 0; +#X restore 272 322 pd structure; +#N canvas 623 135 504 293 init 0; +#X msg 200 169 setK \$1; +#X msg 274 143 setD \$1; +#X msg 416 115 setM \$1; +#X floatatom 200 94 5 -10 200 0 - - -; +#X floatatom 274 92 5 0 0 0 - - -; +#X floatatom 416 92 5 0 0 0 - - -; +#X obj 200 143 / 10; +#X obj 200 117 + 1; +#X obj 274 116 / 10; +#X msg 200 67 100; +#X msg 274 68 25; +#X msg 416 66 50; +#X floatatom 341 92 5 0 0 0 - - -; +#X obj 341 116 / 10; +#X msg 341 143 setD2 \$1; +#X msg 341 68 1; +#X obj 200 201 s \$0-link; +#X obj 416 143 s \$0-mass; +#X obj 42 50 loadbang; +#X obj 44 202 s \$0-mass; +#X msg 44 84 setXmin -3.8; +#X msg 57 109 setXmax 3.8; +#X msg 75 133 setYmin -3.8; +#X msg 88 159 setYmax 3.8; +#X connect 0 0 16 0; +#X connect 1 0 16 0; +#X connect 2 0 17 0; +#X connect 3 0 7 0; +#X connect 4 0 8 0; +#X connect 5 0 2 0; +#X connect 6 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 1 0; +#X connect 9 0 3 0; +#X connect 10 0 4 0; +#X connect 11 0 5 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 14 0 16 0; +#X connect 15 0 12 0; +#X connect 18 0 20 0; +#X connect 18 0 21 0; +#X connect 18 0 22 0; +#X connect 18 0 23 0; +#X connect 20 0 19 0; +#X connect 21 0 19 0; +#X connect 22 0 19 0; +#X connect 23 0 19 0; +#X restore 272 295 pd init; +#X obj 287 1761 pix_texture; +#X obj 287 1789 square 4; +#X obj 287 831 pix_separator; +#X obj 492 804 pix_separator; +#X obj 492 1748 pix_texture; +#X obj 492 1776 square 4; +#X obj 665 798 r reset; +#X obj 18 27 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X text 41 66 1.- Create the Gem Window; +#X msg 526 62 0 \, destroy; +#X msg 492 37 reset \, create \, 1; +#X obj 492 90 gemwin; +#X text 627 38 <- 1; +#X obj 18 131 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 447 222 t b b; +#X obj 447 138 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X obj 525 153 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 548 170 loadbang; +#X obj 479 299 s \$0-link; +#X obj 447 327 s \$0-mass; +#X msg 576 226 reset; +#X msg 550 250 resetL; +#X msg 525 271 resetF; +#X obj 525 199 t b b b; +#X obj 447 195 metro 50; +#X obj 479 356 iAmbient2D \$0-mass 0 -1; +#X obj 571 302 s reset; +#X obj 458 255 s metro; +#X text 471 136 <- 2; +#X text 27 233 inside init and structure subpatches you have all the +pmpd magics \, Thanks to Cyrille Henry for the models !!!; +#X text 72 308 You don't need to open them.; +#X obj 24 440 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X msg 483 449 force2D 0 5; +#X msg 539 475 force2D 5 0; +#X msg 485 503 force2D 0 -5; +#X msg 384 476 force2D -5 0; +#X obj 484 535 s \$0-mass; +#X obj 539 420 loadbang; +#X text 576 449 <- UP; +#X text 578 505 <- DOWN; +#X text 625 477 <- RIGHT; +#X text 476 476 <- LEFT; +#X text 24 181 IMPORTANT :: for this to work you must have the pd_mass +and pd_link abstraction patches in same folder as this one.; +#X text 40 155 2.- Start the Physical Modeling rendering; +#X text 46 461 3.- Test the Physical Modeling interaction; +#X text 75 482 ( move the structure ); +#X obj 493 774 pix_rgba; +#X obj 26 589 cnv 15 600 180 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X text 49 628 2.- Setup your camera; +#X obj 493 732 pix_video; +#X obj 493 616 gemhead; +#X msg 384 680 colorspace RGBA; +#X msg 636 619 dialog; +#X msg 636 684 device /dev/dv1394-0; +#X msg 636 661 driver 1; +#X text 633 644 only linuxDV; +#X text 635 603 MACOSX; +#X text 634 704 video 4 linux; +#X msg 637 721 driver 0; +#X msg 637 744 device /dev/video0; +#X text 244 798 resize video input to save CPU ->; +#X text 546 147 <- here you can RESET ALL; +#X obj 24 863 cnv 15 650 250 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X floatatom 602 1047 5 0 0 0 - - -; +#X obj 493 1083 pix_opencv_contours_boundingrect; +#X floatatom 657 893 5 0 0 0 - - -; +#X obj 493 893 pix_opencv_bgsubstract; +#X msg 665 830 set; +#X obj 493 942 pix_opencv_morphology; +#X floatatom 658 943 5 0 0 0 - - -; +#X obj 493 988 pix_opencv_morphology; +#X floatatom 658 989 5 0 0 0 - - -; +#X msg 602 1024 1000; +#X obj 647 1023 loadbang; +#X msg 657 869 24; +#X msg 658 918 -2; +#X msg 659 965 2; +#X obj 689 869 loadbang; +#X obj 689 917 loadbang; +#X obj 690 964 loadbang; +#X msg 930 1448 setXmin \$1; +#X msg 930 1470 setXmax \$1; +#X msg 1012 1473 setYmin \$1; +#X msg 1013 1447 setYmax \$1; +#X floatatom 996 1235 5 0 0 0 - - -; +#X floatatom 1054 1234 5 0 0 0 - - -; +#X floatatom 1104 1234 5 0 0 0 - - -; +#X floatatom 1155 1233 5 0 0 0 - - -; +#X floatatom 996 1336 5 0 0 0 - - -; +#X floatatom 1055 1338 5 0 0 0 - - -; +#X floatatom 1104 1326 5 0 0 0 - - -; +#X floatatom 1155 1326 5 0 0 0 - - -; +#X obj 994 1367 +; +#X floatatom 994 1395 5 0 0 0 - - -; +#X floatatom 1055 1393 5 0 0 0 - - -; +#X obj 1055 1313 * -1; +#X obj 1055 1366 -; +#X obj 1054 1260 - 72; +#X obj 996 1260 - 90; +#X obj 1054 1289 / 18; +#X obj 996 1293 / 22.5; +#X obj 1104 1283 / 22.5; +#X obj 1155 1283 / 18; +#X msg 1089 1175 0 0 0 0 0; +#X obj 916 1502 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2; +#X obj 916 1419 r metro; +#X text 1103 1205 Xorigin Yorigin Width Height; +#X obj 1166 1175 r reset; +#X obj 996 1205 unpack 0 0 0 0; +#X obj 603 1127 route 0 1 2 3 4; +#X msg 1292 1450 setXmin \$1; +#X msg 1292 1472 setXmax \$1; +#X msg 1374 1475 setYmin \$1; +#X msg 1375 1449 setYmax \$1; +#X floatatom 1358 1237 5 0 0 0 - - -; +#X floatatom 1416 1236 5 0 0 0 - - -; +#X floatatom 1466 1236 5 0 0 0 - - -; +#X floatatom 1517 1235 5 0 0 0 - - -; +#X floatatom 1358 1340 5 0 0 0 - - -; +#X floatatom 1417 1340 5 0 0 0 - - -; +#X floatatom 1466 1328 5 0 0 0 - - -; +#X floatatom 1517 1328 5 0 0 0 - - -; +#X obj 1356 1369 +; +#X floatatom 1356 1397 5 0 0 0 - - -; +#X floatatom 1417 1395 5 0 0 0 - - -; +#X obj 1417 1315 * -1; +#X obj 1417 1368 -; +#X obj 1416 1262 - 72; +#X obj 1358 1262 - 90; +#X obj 1416 1291 / 18; +#X obj 1358 1295 / 22.5; +#X obj 1466 1285 / 22.5; +#X obj 1517 1285 / 18; +#X msg 1451 1177 0 0 0 0 0; +#X obj 1278 1504 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2; +#X obj 1278 1421 r metro; +#X text 1465 1207 Xorigin Yorigin Width Height; +#X obj 1528 1177 r reset; +#X obj 1358 1207 unpack 0 0 0 0; +#X msg 1685 1446 setXmin \$1; +#X msg 1685 1468 setXmax \$1; +#X msg 1767 1471 setYmin \$1; +#X msg 1768 1445 setYmax \$1; +#X floatatom 1751 1233 5 0 0 0 - - -; +#X floatatom 1809 1232 5 0 0 0 - - -; +#X floatatom 1859 1232 5 0 0 0 - - -; +#X floatatom 1910 1231 5 0 0 0 - - -; +#X floatatom 1751 1334 5 0 0 0 - - -; +#X floatatom 1810 1336 5 0 0 0 - - -; +#X floatatom 1859 1324 5 0 0 0 - - -; +#X floatatom 1910 1324 5 0 0 0 - - -; +#X obj 1749 1365 +; +#X floatatom 1749 1393 5 0 0 0 - - -; +#X floatatom 1810 1391 5 0 0 0 - - -; +#X obj 1810 1311 * -1; +#X obj 1810 1364 -; +#X obj 1809 1258 - 72; +#X obj 1751 1258 - 90; +#X obj 1809 1287 / 18; +#X obj 1751 1291 / 22.5; +#X obj 1859 1281 / 22.5; +#X obj 1910 1281 / 18; +#X msg 1844 1173 0 0 0 0 0; +#X obj 1671 1500 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2; +#X obj 1671 1417 r metro; +#X text 1858 1203 Xorigin Yorigin Width Height; +#X obj 1921 1173 r reset; +#X obj 1751 1203 unpack 0 0 0 0; +#X obj 698 894 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577 +0; +<<<<<<< HEAD +#X text 698 893 <- threshold fo the background substraction; +======= +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 +#X obj 699 941 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X obj 700 987 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 700 941 <- erode to avoid noise (negative values); +#X text 701 987 <- dilate contours (positive values); +#X obj 698 830 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X text 698 829 <- set the background; +#X obj 700 1047 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 +-66577 0; +#X text 701 1047 <- set minimal area to detect to avoid noisy things +; +#X obj 22 1182 cnv 15 800 250 empty empty empty 20 12 0 14 -261234 +-66577 0; +#X floatatom 603 1239 5 0 0 0 - - -; +#X floatatom 661 1238 5 0 0 0 - - -; +#X floatatom 711 1238 5 0 0 0 - - -; +#X floatatom 762 1237 5 0 0 0 - - -; +#X floatatom 603 1342 5 0 0 0 - - -; +#X floatatom 662 1342 5 0 0 0 - - -; +#X floatatom 711 1330 5 0 0 0 - - -; +#X floatatom 762 1330 5 0 0 0 - - -; +#X obj 601 1371 +; +#X floatatom 601 1399 5 0 0 0 - - -; +#X floatatom 662 1397 5 0 0 0 - - -; +#X obj 662 1317 * -1; +#X obj 662 1370 -; +#X obj 661 1264 - 72; +#X obj 603 1264 - 90; +#X obj 661 1293 / 18; +#X obj 603 1297 / 22.5; +#X obj 711 1287 / 22.5; +#X obj 762 1287 / 18; +#X msg 696 1179 0 0 0 0 0; +#X obj 523 1423 r metro; +#X text 710 1209 Xorigin Yorigin Width Height; +#X obj 773 1179 r reset; +#X obj 603 1209 unpack 0 0 0 0; +#X text 44 1205 this is coordinate conversions maths to pass from pix +coordinates to gem coordinates.; +#X obj 23 1448 cnv 15 800 150 empty empty empty 20 12 0 14 -261234 +-66577 0; +#X msg 537 1452 setXmin \$1; +#X msg 537 1474 setXmax \$1; +#X msg 619 1477 setYmin \$1; +#X msg 620 1451 setYmax \$1; +#X obj 523 1506 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2; +#X text 41 1461 iAmbient2D defines a place with force from bottom to +top. like a ball in wather. With the setX/Ymax/min we define a rectangle +where this force is applied for each of our detected contours.; +#X text 45 1543 think also in possible uses of; +#X obj 265 1543 iLine2D; +#X obj 329 1544 iSeg2D; +#X obj 385 1545 iCircle2D; +#X text 918 1546 We do the same for so many contours as the number +of them we want to be able to interact with our structure; +#X obj 22 1631 cnv 15 650 60 empty empty empty 20 12 0 14 -258113 -66577 +0; +#X obj 287 1668 spigot; +#X obj 326 1643 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 +<<<<<<< HEAD +1 1; +======= +0 1; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 +#X text 46 886 4.- Setup the parameters for your analysis; +#X text 44 1654 5.- hide the analysis; +#X text 347 1641 <- click here to chow the original video image; +#X obj 492 1719 translateXYZ 0 0 -0.1; +#X obj 491 1695 separator; +#X obj 287 1697 separator; +#X floatatom 654 1718 5 0 0 0 - - -; +#X obj 288 1724 translateXYZ 0 0 -0.05; +#X obj 492 834 pix_resize 180 144; +<<<<<<< HEAD +#X connect 2 0 3 0; +#X connect 4 0 219 0; +#X connect 5 0 229 0; +======= +#X obj 764 243 declare -path ../..; +#X text 698 893 <- threshold of the background substraction; +#X connect 2 0 3 0; +#X connect 4 0 218 0; +#X connect 5 0 228 0; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 +#X connect 6 0 7 0; +#X connect 8 0 69 0; +#X connect 11 0 13 0; +#X connect 12 0 13 0; +#X connect 16 0 21 0; +#X connect 16 1 20 0; +#X connect 16 1 27 0; +#X connect 16 1 29 0; +#X connect 17 0 26 0; +#X connect 18 0 25 0; +#X connect 19 0 25 0; +#X connect 22 0 21 0; +#X connect 23 0 20 0; +#X connect 24 0 20 0; +#X connect 25 0 24 0; +#X connect 25 1 23 0; +#X connect 25 2 22 0; +#X connect 25 2 28 0; +#X connect 26 0 16 0; +#X connect 34 0 38 0; +#X connect 35 0 38 0; +#X connect 36 0 38 0; +#X connect 37 0 38 0; +#X connect 39 0 35 0; +#X connect 48 0 5 0; +#X connect 48 0 4 0; +#X connect 51 0 48 0; +#X connect 52 0 51 0; +#X connect 53 0 51 0; +#X connect 54 0 51 0; +#X connect 55 0 51 0; +#X connect 56 0 51 0; +#X connect 60 0 51 0; +#X connect 61 0 51 0; +#X connect 65 0 66 1; +<<<<<<< HEAD +#X connect 66 0 225 0; +======= +#X connect 66 0 224 0; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 +#X connect 66 1 111 0; +#X connect 67 0 68 1; +#X connect 68 0 70 0; +#X connect 69 0 68 0; +#X connect 70 0 72 0; +#X connect 71 0 70 1; +#X connect 72 0 66 0; +#X connect 73 0 72 1; +#X connect 74 0 65 0; +#X connect 75 0 74 0; +#X connect 76 0 67 0; +#X connect 77 0 71 0; +#X connect 78 0 73 0; +#X connect 79 0 76 0; +#X connect 80 0 77 0; +#X connect 81 0 78 0; +#X connect 82 0 106 0; +#X connect 83 0 106 0; +#X connect 84 0 106 0; +#X connect 85 0 106 0; +#X connect 86 0 100 0; +#X connect 87 0 99 0; +#X connect 88 0 103 0; +#X connect 89 0 104 0; +#X connect 90 0 82 0; +#X connect 90 0 94 0; +#X connect 91 0 98 0; +#X connect 91 0 85 0; +#X connect 92 0 94 1; +#X connect 93 0 98 1; +#X connect 94 0 83 0; +#X connect 94 0 95 0; +#X connect 97 0 91 0; +#X connect 98 0 96 0; +#X connect 98 0 84 0; +#X connect 99 0 101 0; +#X connect 100 0 102 0; +#X connect 101 0 97 0; +#X connect 102 0 90 0; +#X connect 103 0 92 0; +#X connect 104 0 93 0; +#X connect 105 0 110 0; +#X connect 107 0 106 0; +#X connect 109 0 105 0; +#X connect 110 0 86 0; +#X connect 110 1 87 0; +#X connect 110 2 88 0; +#X connect 110 3 89 0; +<<<<<<< HEAD +#X connect 111 0 204 0; +======= +#X connect 111 0 203 0; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 +#X connect 111 1 110 0; +#X connect 111 2 140 0; +#X connect 111 3 169 0; +#X connect 112 0 136 0; +#X connect 113 0 136 0; +#X connect 114 0 136 0; +#X connect 115 0 136 0; +#X connect 116 0 130 0; +#X connect 117 0 129 0; +#X connect 118 0 133 0; +#X connect 119 0 134 0; +#X connect 120 0 112 0; +#X connect 120 0 124 0; +#X connect 121 0 128 0; +#X connect 121 0 115 0; +#X connect 122 0 124 1; +#X connect 123 0 128 1; +#X connect 124 0 113 0; +#X connect 124 0 125 0; +#X connect 127 0 121 0; +#X connect 128 0 126 0; +#X connect 128 0 114 0; +#X connect 129 0 131 0; +#X connect 130 0 132 0; +#X connect 131 0 127 0; +#X connect 132 0 120 0; +#X connect 133 0 122 0; +#X connect 134 0 123 0; +#X connect 135 0 140 0; +#X connect 137 0 136 0; +#X connect 139 0 135 0; +#X connect 140 0 116 0; +#X connect 140 1 117 0; +#X connect 140 2 118 0; +#X connect 140 3 119 0; +#X connect 141 0 165 0; +#X connect 142 0 165 0; +#X connect 143 0 165 0; +#X connect 144 0 165 0; +#X connect 145 0 159 0; +#X connect 146 0 158 0; +#X connect 147 0 162 0; +#X connect 148 0 163 0; +#X connect 149 0 141 0; +#X connect 149 0 153 0; +#X connect 150 0 157 0; +#X connect 150 0 144 0; +#X connect 151 0 153 1; +#X connect 152 0 157 1; +#X connect 153 0 142 0; +#X connect 153 0 154 0; +#X connect 156 0 150 0; +#X connect 157 0 155 0; +#X connect 157 0 143 0; +#X connect 158 0 160 0; +#X connect 159 0 161 0; +#X connect 160 0 156 0; +#X connect 161 0 149 0; +#X connect 162 0 151 0; +#X connect 163 0 152 0; +#X connect 164 0 169 0; +#X connect 166 0 165 0; +#X connect 168 0 164 0; +#X connect 169 0 145 0; +#X connect 169 1 146 0; +#X connect 169 2 147 0; +#X connect 169 3 148 0; +<<<<<<< HEAD +#X connect 181 0 195 0; +#X connect 182 0 194 0; +#X connect 183 0 198 0; +#X connect 184 0 199 0; +#X connect 185 0 189 0; +#X connect 185 0 207 0; +#X connect 186 0 193 0; +#X connect 186 0 210 0; +#X connect 187 0 189 1; +#X connect 188 0 193 1; +#X connect 189 0 190 0; +#X connect 189 0 208 0; +#X connect 192 0 186 0; +#X connect 193 0 191 0; +#X connect 193 0 209 0; +#X connect 194 0 196 0; +#X connect 195 0 197 0; +#X connect 196 0 192 0; +#X connect 197 0 185 0; +#X connect 198 0 187 0; +#X connect 199 0 188 0; +#X connect 200 0 204 0; +#X connect 201 0 211 0; +#X connect 203 0 200 0; +#X connect 204 0 181 0; +#X connect 204 1 182 0; +#X connect 204 2 183 0; +#X connect 204 3 184 0; +#X connect 207 0 211 0; +#X connect 208 0 211 0; +#X connect 209 0 211 0; +#X connect 210 0 211 0; +#X connect 219 0 226 0; +#X connect 220 0 219 1; +#X connect 224 0 6 0; +#X connect 225 0 224 0; +#X connect 226 0 228 0; +#X connect 227 0 224 3; +#X connect 228 0 2 0; +#X connect 229 0 68 0; +======= +#X connect 180 0 194 0; +#X connect 181 0 193 0; +#X connect 182 0 197 0; +#X connect 183 0 198 0; +#X connect 184 0 188 0; +#X connect 184 0 206 0; +#X connect 185 0 192 0; +#X connect 185 0 209 0; +#X connect 186 0 188 1; +#X connect 187 0 192 1; +#X connect 188 0 189 0; +#X connect 188 0 207 0; +#X connect 191 0 185 0; +#X connect 192 0 190 0; +#X connect 192 0 208 0; +#X connect 193 0 195 0; +#X connect 194 0 196 0; +#X connect 195 0 191 0; +#X connect 196 0 184 0; +#X connect 197 0 186 0; +#X connect 198 0 187 0; +#X connect 199 0 203 0; +#X connect 200 0 210 0; +#X connect 202 0 199 0; +#X connect 203 0 180 0; +#X connect 203 1 181 0; +#X connect 203 2 182 0; +#X connect 203 3 183 0; +#X connect 206 0 210 0; +#X connect 207 0 210 0; +#X connect 208 0 210 0; +#X connect 209 0 210 0; +#X connect 218 0 225 0; +#X connect 219 0 218 1; +#X connect 223 0 6 0; +#X connect 224 0 223 0; +#X connect 225 0 227 0; +#X connect 226 0 223 3; +#X connect 227 0 2 0; +#X connect 228 0 68 0; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 diff --git a/examples/01_boundingrect+pmpd_ambient/pd_link.pd b/examples/01_boundingrect+pmpd_ambient/pd_link.pd new file mode 100755 index 0000000..288fb93 --- /dev/null +++ b/examples/01_boundingrect+pmpd_ambient/pd_link.pd @@ -0,0 +1,21 @@ +#N canvas 587 514 328 282 12; +#X obj 177 35 inlet; +#X obj 171 96 outlet; +#X obj 12 32 inlet; +#X obj 6 93 outlet; +#X msg 56 156 \$1 \$2 0; +#X obj 24 186 gemhead; +#X msg 134 155 \$1 \$2 0; +#X obj 45 61 link2D \$1-link 0 10 2.5 0.001; +#X obj 26 243 curve 2; +#X obj 24 211 colorRGB 1 0 1; +#X connect 0 0 6 0; +#X connect 0 0 7 1; +#X connect 2 0 4 0; +#X connect 2 0 7 0; +#X connect 4 0 8 1; +#X connect 5 0 9 0; +#X connect 6 0 8 2; +#X connect 7 0 3 0; +#X connect 7 1 1 0; +#X connect 9 0 8 0; diff --git a/examples/01_boundingrect+pmpd_ambient/pd_mass.pd b/examples/01_boundingrect+pmpd_ambient/pd_mass.pd new file mode 100755 index 0000000..a1083a9 --- /dev/null +++ b/examples/01_boundingrect+pmpd_ambient/pd_mass.pd @@ -0,0 +1,46 @@ +#N canvas 624 0 656 389 12; +#X obj 26 38 inlet; +#X obj 11 137 outlet; +#X obj 25 104 unpack s f f; +#X obj 68 146 gemhead; +#X obj 59 206 translateXYZ; +#X obj 25 71 mass2D \$3-mass 50 \$1 \$2 -3.8 3.8 -3.8 3.8; +#X obj 257 105 unpack s f f f; +#X obj 438 233 osc~; +#X obj 438 208 mtof; +#X obj 438 133 loadbang; +#X obj 364 275 *~; +#X msg 364 209 \$1 50; +#X obj 364 234 line~; +#X obj 364 305 dac~; +#X obj 438 183 + 30; +#X obj 438 159 random 60; +#X obj 442 29 inlet; +#X msg 442 53 0; +#X obj 364 183 min 0.1; +#X obj 364 130 * 0.03; +#X obj 56 248 sphere 0.1; +#X obj 65 171 colorRGB 1 0 1; +#X connect 0 0 5 0; +#X connect 2 1 4 1; +#X connect 2 2 4 2; +#X connect 3 0 21 0; +#X connect 4 0 20 0; +#X connect 5 0 2 0; +#X connect 5 0 1 0; +#X connect 5 1 6 0; +#X connect 6 3 19 0; +#X connect 7 0 10 1; +#X connect 8 0 7 0; +#X connect 9 0 15 0; +#X connect 10 0 13 0; +#X connect 10 0 13 1; +#X connect 11 0 12 0; +#X connect 12 0 10 0; +#X connect 14 0 8 0; +#X connect 15 0 14 0; +#X connect 16 0 17 0; +#X connect 17 0 18 1; +#X connect 18 0 11 0; +#X connect 19 0 18 0; +#X connect 21 0 4 0; diff --git a/examples/01_opencv_contrours_boundingrect+pmpd_ambient/01_opencv_contrours_boundingrect+pmpd_ambient.pd b/examples/01_opencv_contrours_boundingrect+pmpd_ambient/01_opencv_contrours_boundingrect+pmpd_ambient.pd deleted file mode 100755 index 8e06b97..0000000 --- a/examples/01_opencv_contrours_boundingrect+pmpd_ambient/01_opencv_contrours_boundingrect+pmpd_ambient.pd +++ /dev/null @@ -1,668 +0,0 @@ -#N canvas 556 25 1099 664 12; -#N canvas 310 102 970 684 structure 0; -#X obj 124 43 pd_mass -0.7 0.7 \$0; -#X obj 189 113 pd_link \$0; -#X obj 27 290 pd_mass -1 0 \$0; -#X obj 123 558 pd_mass -0.7 -0.7 \$0; -#X obj 399 624 pd_mass 0 -1 \$0; -#X obj 436 16 pd_mass 0 1 \$0; -#X obj 680 64 pd_mass 0.7 0.7 \$0; -#X obj 766 285 pd_mass 1 0 \$0; -#X obj 748 552 pd_mass 0.7 -0.7 \$0; -#X obj 407 274 pd_mass 0 0 \$0; -#X obj 124 314 pd_link \$0; -#X obj 49 445 pd_link \$0; -#X obj 198 502 pd_link \$0; -#X obj 69 161 pd_link \$0; -#X obj 201 187 pd_link \$0; -#X obj 213 373 pd_link \$0; -#X obj 279 598 pd_link \$0; -#X obj 410 562 pd_link \$0; -#X obj 580 585 pd_link \$0; -#X obj 310 327 pd_link \$0; -#X obj 388 330 pd_link \$0; -#X obj 468 330 pd_link \$0; -#X obj 338 427 pd_link \$0; -#X obj 509 422 pd_link \$0; -#X obj 304 26 pd_link \$0; -#X obj 441 57 pd_link \$0; -#X obj 347 129 pd_link \$0; -#X obj 308 231 pd_link \$0; -#X obj 304 280 pd_link \$0; -#X obj 393 227 pd_link \$0; -#X obj 475 227 pd_link \$0; -#X obj 529 278 pd_link \$0; -#X obj 604 358 pd_link \$0; -#X obj 678 291 pd_link \$0; -#X obj 604 221 pd_link \$0; -#X obj 499 135 pd_link \$0; -#X obj 571 43 pd_link \$0; -#X obj 612 101 pd_link \$0; -#X obj 749 179 pd_link \$0; -#X obj 763 429 pd_link \$0; -#X obj 671 510 pd_link \$0; -#X connect 0 0 10 0; -#X connect 0 0 13 1; -#X connect 0 0 15 0; -#X connect 0 0 24 0; -#X connect 0 0 25 0; -#X connect 0 0 27 0; -#X connect 0 0 35 0; -#X connect 1 0 2 0; -#X connect 1 1 5 0; -#X connect 2 0 1 0; -#X connect 2 0 11 0; -#X connect 2 0 12 0; -#X connect 2 0 13 0; -#X connect 2 0 22 0; -#X connect 2 0 26 0; -#X connect 2 0 28 0; -#X connect 3 0 10 1; -#X connect 3 0 11 1; -#X connect 3 0 14 1; -#X connect 3 0 16 0; -#X connect 3 0 17 0; -#X connect 3 0 19 0; -#X connect 3 0 23 0; -#X connect 4 0 12 1; -#X connect 4 0 15 1; -#X connect 4 0 16 1; -#X connect 4 0 18 0; -#X connect 4 0 20 1; -#X connect 4 0 32 0; -#X connect 4 0 40 0; -#X connect 5 0 1 1; -#X connect 5 0 14 0; -#X connect 5 0 24 1; -#X connect 5 0 29 1; -#X connect 5 0 34 0; -#X connect 5 0 36 0; -#X connect 5 0 37 0; -#X connect 6 0 25 1; -#X connect 6 0 26 1; -#X connect 6 0 30 1; -#X connect 6 0 32 1; -#X connect 6 0 33 1; -#X connect 6 0 36 1; -#X connect 6 0 38 0; -#X connect 7 0 23 1; -#X connect 7 0 31 1; -#X connect 7 0 35 1; -#X connect 7 0 37 1; -#X connect 7 0 38 1; -#X connect 7 0 39 0; -#X connect 7 0 40 1; -#X connect 8 0 17 1; -#X connect 8 0 18 1; -#X connect 8 0 21 1; -#X connect 8 0 22 1; -#X connect 8 0 33 0; -#X connect 8 0 34 1; -#X connect 8 0 39 1; -#X connect 9 0 19 1; -#X connect 9 0 20 0; -#X connect 9 0 21 0; -#X connect 9 0 27 1; -#X connect 9 0 28 1; -#X connect 9 0 29 0; -#X connect 9 0 30 0; -#X connect 9 0 31 0; -#X connect 10 0 0 0; -#X connect 10 1 3 0; -#X connect 11 0 2 0; -#X connect 11 1 3 0; -#X connect 12 0 2 0; -#X connect 12 1 4 0; -#X connect 13 0 2 0; -#X connect 13 1 0 0; -#X connect 14 0 5 0; -#X connect 14 1 3 0; -#X connect 15 0 0 0; -#X connect 15 1 4 0; -#X connect 16 0 3 0; -#X connect 16 1 4 0; -#X connect 17 0 3 0; -#X connect 17 1 8 0; -#X connect 18 0 4 0; -#X connect 18 1 8 0; -#X connect 19 0 3 0; -#X connect 19 1 9 0; -#X connect 20 0 9 0; -#X connect 20 1 4 0; -#X connect 21 0 9 0; -#X connect 21 1 8 0; -#X connect 22 0 2 0; -#X connect 22 1 8 0; -#X connect 23 0 3 0; -#X connect 23 1 7 0; -#X connect 24 0 0 0; -#X connect 24 1 5 0; -#X connect 25 0 0 0; -#X connect 25 1 6 0; -#X connect 26 0 2 0; -#X connect 26 1 6 0; -#X connect 27 0 0 0; -#X connect 27 1 9 0; -#X connect 28 0 2 0; -#X connect 28 1 9 0; -#X connect 29 0 9 0; -#X connect 29 1 5 0; -#X connect 30 0 9 0; -#X connect 30 1 6 0; -#X connect 31 0 9 0; -#X connect 31 1 7 0; -#X connect 32 0 4 0; -#X connect 32 1 6 0; -#X connect 33 0 8 0; -#X connect 33 1 6 0; -#X connect 34 0 5 0; -#X connect 34 1 8 0; -#X connect 35 0 0 0; -#X connect 35 1 7 0; -#X connect 36 0 5 0; -#X connect 36 1 6 0; -#X connect 37 0 5 0; -#X connect 37 1 7 0; -#X connect 38 0 6 0; -#X connect 38 1 7 0; -#X connect 39 0 7 0; -#X connect 39 1 8 0; -#X connect 40 0 4 0; -#X connect 40 1 7 0; -#X restore 272 322 pd structure; -#N canvas 623 135 504 293 init 0; -#X msg 200 169 setK \$1; -#X msg 274 143 setD \$1; -#X msg 416 115 setM \$1; -#X floatatom 200 94 5 -10 200 0 - - -; -#X floatatom 274 92 5 0 0 0 - - -; -#X floatatom 416 92 5 0 0 0 - - -; -#X obj 200 143 / 10; -#X obj 200 117 + 1; -#X obj 274 116 / 10; -#X msg 200 67 100; -#X msg 274 68 25; -#X msg 416 66 50; -#X floatatom 341 92 5 0 0 0 - - -; -#X obj 341 116 / 10; -#X msg 341 143 setD2 \$1; -#X msg 341 68 1; -#X obj 200 201 s \$0-link; -#X obj 416 143 s \$0-mass; -#X obj 42 50 loadbang; -#X obj 44 202 s \$0-mass; -#X msg 44 84 setXmin -3.8; -#X msg 57 109 setXmax 3.8; -#X msg 75 133 setYmin -3.8; -#X msg 88 159 setYmax 3.8; -#X connect 0 0 16 0; -#X connect 1 0 16 0; -#X connect 2 0 17 0; -#X connect 3 0 7 0; -#X connect 4 0 8 0; -#X connect 5 0 2 0; -#X connect 6 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 1 0; -#X connect 9 0 3 0; -#X connect 10 0 4 0; -#X connect 11 0 5 0; -#X connect 12 0 13 0; -#X connect 13 0 14 0; -#X connect 14 0 16 0; -#X connect 15 0 12 0; -#X connect 18 0 20 0; -#X connect 18 0 21 0; -#X connect 18 0 22 0; -#X connect 18 0 23 0; -#X connect 20 0 19 0; -#X connect 21 0 19 0; -#X connect 22 0 19 0; -#X connect 23 0 19 0; -#X restore 272 295 pd init; -#X obj 287 1761 pix_texture; -#X obj 287 1789 square 4; -#X obj 287 831 pix_separator; -#X obj 492 804 pix_separator; -#X obj 492 1748 pix_texture; -#X obj 492 1776 square 4; -#X obj 665 798 r reset; -#X obj 18 27 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577 -0; -#X text 41 66 1.- Create the Gem Window; -#X msg 526 62 0 \, destroy; -#X msg 492 37 reset \, create \, 1; -#X obj 492 90 gemwin; -#X text 627 38 <- 1; -#X obj 18 131 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577 -0; -#X obj 447 222 t b b; -#X obj 447 138 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X obj 525 153 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 548 170 loadbang; -#X obj 479 299 s \$0-link; -#X obj 447 327 s \$0-mass; -#X msg 576 226 reset; -#X msg 550 250 resetL; -#X msg 525 271 resetF; -#X obj 525 199 t b b b; -#X obj 447 195 metro 50; -#X obj 479 356 iAmbient2D \$0-mass 0 -1; -#X obj 571 302 s reset; -#X obj 458 255 s metro; -#X text 471 136 <- 2; -#X text 27 233 inside init and structure subpatches you have all the -pmpd magics \, Thanks to Cyrille Henry for the models !!!; -#X text 72 308 You don't need to open them.; -#X obj 24 440 cnv 15 600 90 empty empty empty 20 12 0 14 -260097 -66577 -0; -#X msg 483 449 force2D 0 5; -#X msg 539 475 force2D 5 0; -#X msg 485 503 force2D 0 -5; -#X msg 384 476 force2D -5 0; -#X obj 484 535 s \$0-mass; -#X obj 539 420 loadbang; -#X text 576 449 <- UP; -#X text 578 505 <- DOWN; -#X text 625 477 <- RIGHT; -#X text 476 476 <- LEFT; -#X text 24 181 IMPORTANT :: for this to work you must have the pd_mass -and pd_link abstraction patches in same folder as this one.; -#X text 40 155 2.- Start the Physical Modeling rendering; -#X text 46 461 3.- Test the Physical Modeling interaction; -#X text 75 482 ( move the structure ); -#X obj 493 774 pix_rgba; -#X obj 26 589 cnv 15 600 180 empty empty empty 20 12 0 14 -260097 -66577 -0; -#X text 49 628 2.- Setup your camera; -#X obj 493 732 pix_video; -#X obj 493 616 gemhead; -#X msg 384 680 colorspace RGBA; -#X msg 636 619 dialog; -#X msg 636 684 device /dev/dv1394-0; -#X msg 636 661 driver 1; -#X text 633 644 only linuxDV; -#X text 635 603 MACOSX; -#X text 634 704 video 4 linux; -#X msg 637 721 driver 0; -#X msg 637 744 device /dev/video0; -#X text 244 798 resize video input to save CPU ->; -#X text 546 147 <- here you can RESET ALL; -#X obj 24 863 cnv 15 650 250 empty empty empty 20 12 0 14 -258113 -66577 -0; -#X floatatom 602 1047 5 0 0 0 - - -; -#X obj 493 1083 pix_opencv_contours_boundingrect; -#X floatatom 657 893 5 0 0 0 - - -; -#X obj 493 893 pix_opencv_bgsubstract; -#X msg 665 830 set; -#X obj 493 942 pix_opencv_morphology; -#X floatatom 658 943 5 0 0 0 - - -; -#X obj 493 988 pix_opencv_morphology; -#X floatatom 658 989 5 0 0 0 - - -; -#X msg 602 1024 1000; -#X obj 647 1023 loadbang; -#X msg 657 869 24; -#X msg 658 918 -2; -#X msg 659 965 2; -#X obj 689 869 loadbang; -#X obj 689 917 loadbang; -#X obj 690 964 loadbang; -#X msg 930 1448 setXmin \$1; -#X msg 930 1470 setXmax \$1; -#X msg 1012 1473 setYmin \$1; -#X msg 1013 1447 setYmax \$1; -#X floatatom 996 1235 5 0 0 0 - - -; -#X floatatom 1054 1234 5 0 0 0 - - -; -#X floatatom 1104 1234 5 0 0 0 - - -; -#X floatatom 1155 1233 5 0 0 0 - - -; -#X floatatom 996 1336 5 0 0 0 - - -; -#X floatatom 1055 1338 5 0 0 0 - - -; -#X floatatom 1104 1326 5 0 0 0 - - -; -#X floatatom 1155 1326 5 0 0 0 - - -; -#X obj 994 1367 +; -#X floatatom 994 1395 5 0 0 0 - - -; -#X floatatom 1055 1393 5 0 0 0 - - -; -#X obj 1055 1313 * -1; -#X obj 1055 1366 -; -#X obj 1054 1260 - 72; -#X obj 996 1260 - 90; -#X obj 1054 1289 / 18; -#X obj 996 1293 / 22.5; -#X obj 1104 1283 / 22.5; -#X obj 1155 1283 / 18; -#X msg 1089 1175 0 0 0 0 0; -#X obj 916 1502 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2; -#X obj 916 1419 r metro; -#X text 1103 1205 Xorigin Yorigin Width Height; -#X obj 1166 1175 r reset; -#X obj 996 1205 unpack 0 0 0 0; -#X obj 603 1127 route 0 1 2 3 4; -#X msg 1292 1450 setXmin \$1; -#X msg 1292 1472 setXmax \$1; -#X msg 1374 1475 setYmin \$1; -#X msg 1375 1449 setYmax \$1; -#X floatatom 1358 1237 5 0 0 0 - - -; -#X floatatom 1416 1236 5 0 0 0 - - -; -#X floatatom 1466 1236 5 0 0 0 - - -; -#X floatatom 1517 1235 5 0 0 0 - - -; -#X floatatom 1358 1340 5 0 0 0 - - -; -#X floatatom 1417 1340 5 0 0 0 - - -; -#X floatatom 1466 1328 5 0 0 0 - - -; -#X floatatom 1517 1328 5 0 0 0 - - -; -#X obj 1356 1369 +; -#X floatatom 1356 1397 5 0 0 0 - - -; -#X floatatom 1417 1395 5 0 0 0 - - -; -#X obj 1417 1315 * -1; -#X obj 1417 1368 -; -#X obj 1416 1262 - 72; -#X obj 1358 1262 - 90; -#X obj 1416 1291 / 18; -#X obj 1358 1295 / 22.5; -#X obj 1466 1285 / 22.5; -#X obj 1517 1285 / 18; -#X msg 1451 1177 0 0 0 0 0; -#X obj 1278 1504 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2; -#X obj 1278 1421 r metro; -#X text 1465 1207 Xorigin Yorigin Width Height; -#X obj 1528 1177 r reset; -#X obj 1358 1207 unpack 0 0 0 0; -#X msg 1685 1446 setXmin \$1; -#X msg 1685 1468 setXmax \$1; -#X msg 1767 1471 setYmin \$1; -#X msg 1768 1445 setYmax \$1; -#X floatatom 1751 1233 5 0 0 0 - - -; -#X floatatom 1809 1232 5 0 0 0 - - -; -#X floatatom 1859 1232 5 0 0 0 - - -; -#X floatatom 1910 1231 5 0 0 0 - - -; -#X floatatom 1751 1334 5 0 0 0 - - -; -#X floatatom 1810 1336 5 0 0 0 - - -; -#X floatatom 1859 1324 5 0 0 0 - - -; -#X floatatom 1910 1324 5 0 0 0 - - -; -#X obj 1749 1365 +; -#X floatatom 1749 1393 5 0 0 0 - - -; -#X floatatom 1810 1391 5 0 0 0 - - -; -#X obj 1810 1311 * -1; -#X obj 1810 1364 -; -#X obj 1809 1258 - 72; -#X obj 1751 1258 - 90; -#X obj 1809 1287 / 18; -#X obj 1751 1291 / 22.5; -#X obj 1859 1281 / 22.5; -#X obj 1910 1281 / 18; -#X msg 1844 1173 0 0 0 0 0; -#X obj 1671 1500 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2; -#X obj 1671 1417 r metro; -#X text 1858 1203 Xorigin Yorigin Width Height; -#X obj 1921 1173 r reset; -#X obj 1751 1203 unpack 0 0 0 0; -#X obj 698 894 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577 -0; -#X text 698 893 <- threshold fo the background substraction; -#X obj 699 941 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577 -0; -#X obj 700 987 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577 -0; -#X text 700 941 <- erode to avoid noise (negative values); -#X text 701 987 <- dilate contours (positive values); -#X obj 698 830 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 -66577 -0; -#X text 698 829 <- set the background; -#X obj 700 1047 cnv 15 310 20 empty empty empty 20 12 0 14 -258113 --66577 0; -#X text 701 1047 <- set minimal area to detect to avoid noisy things -; -#X obj 22 1182 cnv 15 800 250 empty empty empty 20 12 0 14 -261234 --66577 0; -#X floatatom 603 1239 5 0 0 0 - - -; -#X floatatom 661 1238 5 0 0 0 - - -; -#X floatatom 711 1238 5 0 0 0 - - -; -#X floatatom 762 1237 5 0 0 0 - - -; -#X floatatom 603 1342 5 0 0 0 - - -; -#X floatatom 662 1342 5 0 0 0 - - -; -#X floatatom 711 1330 5 0 0 0 - - -; -#X floatatom 762 1330 5 0 0 0 - - -; -#X obj 601 1371 +; -#X floatatom 601 1399 5 0 0 0 - - -; -#X floatatom 662 1397 5 0 0 0 - - -; -#X obj 662 1317 * -1; -#X obj 662 1370 -; -#X obj 661 1264 - 72; -#X obj 603 1264 - 90; -#X obj 661 1293 / 18; -#X obj 603 1297 / 22.5; -#X obj 711 1287 / 22.5; -#X obj 762 1287 / 18; -#X msg 696 1179 0 0 0 0 0; -#X obj 523 1423 r metro; -#X text 710 1209 Xorigin Yorigin Width Height; -#X obj 773 1179 r reset; -#X obj 603 1209 unpack 0 0 0 0; -#X text 44 1205 this is coordinate conversions maths to pass from pix -coordinates to gem coordinates.; -#X obj 23 1448 cnv 15 800 150 empty empty empty 20 12 0 14 -261234 --66577 0; -#X msg 537 1452 setXmin \$1; -#X msg 537 1474 setXmax \$1; -#X msg 619 1477 setYmin \$1; -#X msg 620 1451 setYmax \$1; -#X obj 523 1506 iAmbient2D \$0-mass 0 13 0 0 0 -4 0 -4 -2; -#X text 41 1461 iAmbient2D defines a place with force from bottom to -top. like a ball in wather. With the setX/Ymax/min we define a rectangle -where this force is applied for each of our detected contours.; -#X text 45 1543 think also in possible uses of; -#X obj 265 1543 iLine2D; -#X obj 329 1544 iSeg2D; -#X obj 385 1545 iCircle2D; -#X text 918 1546 We do the same for so many contours as the number -of them we want to be able to interact with our structure; -#X obj 22 1631 cnv 15 650 60 empty empty empty 20 12 0 14 -258113 -66577 -0; -#X obj 287 1668 spigot; -#X obj 326 1643 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 -1 1; -#X text 46 886 4.- Setup the parameters for your analysis; -#X text 44 1654 5.- hide the analysis; -#X text 347 1641 <- click here to chow the original video image; -#X obj 492 1719 translateXYZ 0 0 -0.1; -#X obj 491 1695 separator; -#X obj 287 1697 separator; -#X floatatom 654 1718 5 0 0 0 - - -; -#X obj 288 1724 translateXYZ 0 0 -0.05; -#X obj 492 834 pix_resize 180 144; -#X connect 2 0 3 0; -#X connect 4 0 219 0; -#X connect 5 0 229 0; -#X connect 6 0 7 0; -#X connect 8 0 69 0; -#X connect 11 0 13 0; -#X connect 12 0 13 0; -#X connect 16 0 21 0; -#X connect 16 1 20 0; -#X connect 16 1 27 0; -#X connect 16 1 29 0; -#X connect 17 0 26 0; -#X connect 18 0 25 0; -#X connect 19 0 25 0; -#X connect 22 0 21 0; -#X connect 23 0 20 0; -#X connect 24 0 20 0; -#X connect 25 0 24 0; -#X connect 25 1 23 0; -#X connect 25 2 22 0; -#X connect 25 2 28 0; -#X connect 26 0 16 0; -#X connect 34 0 38 0; -#X connect 35 0 38 0; -#X connect 36 0 38 0; -#X connect 37 0 38 0; -#X connect 39 0 35 0; -#X connect 48 0 5 0; -#X connect 48 0 4 0; -#X connect 51 0 48 0; -#X connect 52 0 51 0; -#X connect 53 0 51 0; -#X connect 54 0 51 0; -#X connect 55 0 51 0; -#X connect 56 0 51 0; -#X connect 60 0 51 0; -#X connect 61 0 51 0; -#X connect 65 0 66 1; -#X connect 66 0 225 0; -#X connect 66 1 111 0; -#X connect 67 0 68 1; -#X connect 68 0 70 0; -#X connect 69 0 68 0; -#X connect 70 0 72 0; -#X connect 71 0 70 1; -#X connect 72 0 66 0; -#X connect 73 0 72 1; -#X connect 74 0 65 0; -#X connect 75 0 74 0; -#X connect 76 0 67 0; -#X connect 77 0 71 0; -#X connect 78 0 73 0; -#X connect 79 0 76 0; -#X connect 80 0 77 0; -#X connect 81 0 78 0; -#X connect 82 0 106 0; -#X connect 83 0 106 0; -#X connect 84 0 106 0; -#X connect 85 0 106 0; -#X connect 86 0 100 0; -#X connect 87 0 99 0; -#X connect 88 0 103 0; -#X connect 89 0 104 0; -#X connect 90 0 82 0; -#X connect 90 0 94 0; -#X connect 91 0 98 0; -#X connect 91 0 85 0; -#X connect 92 0 94 1; -#X connect 93 0 98 1; -#X connect 94 0 83 0; -#X connect 94 0 95 0; -#X connect 97 0 91 0; -#X connect 98 0 96 0; -#X connect 98 0 84 0; -#X connect 99 0 101 0; -#X connect 100 0 102 0; -#X connect 101 0 97 0; -#X connect 102 0 90 0; -#X connect 103 0 92 0; -#X connect 104 0 93 0; -#X connect 105 0 110 0; -#X connect 107 0 106 0; -#X connect 109 0 105 0; -#X connect 110 0 86 0; -#X connect 110 1 87 0; -#X connect 110 2 88 0; -#X connect 110 3 89 0; -#X connect 111 0 204 0; -#X connect 111 1 110 0; -#X connect 111 2 140 0; -#X connect 111 3 169 0; -#X connect 112 0 136 0; -#X connect 113 0 136 0; -#X connect 114 0 136 0; -#X connect 115 0 136 0; -#X connect 116 0 130 0; -#X connect 117 0 129 0; -#X connect 118 0 133 0; -#X connect 119 0 134 0; -#X connect 120 0 112 0; -#X connect 120 0 124 0; -#X connect 121 0 128 0; -#X connect 121 0 115 0; -#X connect 122 0 124 1; -#X connect 123 0 128 1; -#X connect 124 0 113 0; -#X connect 124 0 125 0; -#X connect 127 0 121 0; -#X connect 128 0 126 0; -#X connect 128 0 114 0; -#X connect 129 0 131 0; -#X connect 130 0 132 0; -#X connect 131 0 127 0; -#X connect 132 0 120 0; -#X connect 133 0 122 0; -#X connect 134 0 123 0; -#X connect 135 0 140 0; -#X connect 137 0 136 0; -#X connect 139 0 135 0; -#X connect 140 0 116 0; -#X connect 140 1 117 0; -#X connect 140 2 118 0; -#X connect 140 3 119 0; -#X connect 141 0 165 0; -#X connect 142 0 165 0; -#X connect 143 0 165 0; -#X connect 144 0 165 0; -#X connect 145 0 159 0; -#X connect 146 0 158 0; -#X connect 147 0 162 0; -#X connect 148 0 163 0; -#X connect 149 0 141 0; -#X connect 149 0 153 0; -#X connect 150 0 157 0; -#X connect 150 0 144 0; -#X connect 151 0 153 1; -#X connect 152 0 157 1; -#X connect 153 0 142 0; -#X connect 153 0 154 0; -#X connect 156 0 150 0; -#X connect 157 0 155 0; -#X connect 157 0 143 0; -#X connect 158 0 160 0; -#X connect 159 0 161 0; -#X connect 160 0 156 0; -#X connect 161 0 149 0; -#X connect 162 0 151 0; -#X connect 163 0 152 0; -#X connect 164 0 169 0; -#X connect 166 0 165 0; -#X connect 168 0 164 0; -#X connect 169 0 145 0; -#X connect 169 1 146 0; -#X connect 169 2 147 0; -#X connect 169 3 148 0; -#X connect 181 0 195 0; -#X connect 182 0 194 0; -#X connect 183 0 198 0; -#X connect 184 0 199 0; -#X connect 185 0 189 0; -#X connect 185 0 207 0; -#X connect 186 0 193 0; -#X connect 186 0 210 0; -#X connect 187 0 189 1; -#X connect 188 0 193 1; -#X connect 189 0 190 0; -#X connect 189 0 208 0; -#X connect 192 0 186 0; -#X connect 193 0 191 0; -#X connect 193 0 209 0; -#X connect 194 0 196 0; -#X connect 195 0 197 0; -#X connect 196 0 192 0; -#X connect 197 0 185 0; -#X connect 198 0 187 0; -#X connect 199 0 188 0; -#X connect 200 0 204 0; -#X connect 201 0 211 0; -#X connect 203 0 200 0; -#X connect 204 0 181 0; -#X connect 204 1 182 0; -#X connect 204 2 183 0; -#X connect 204 3 184 0; -#X connect 207 0 211 0; -#X connect 208 0 211 0; -#X connect 209 0 211 0; -#X connect 210 0 211 0; -#X connect 219 0 226 0; -#X connect 220 0 219 1; -#X connect 224 0 6 0; -#X connect 225 0 224 0; -#X connect 226 0 228 0; -#X connect 227 0 224 3; -#X connect 228 0 2 0; -#X connect 229 0 68 0; diff --git a/examples/01_opencv_contrours_boundingrect+pmpd_ambient/pd_link.pd b/examples/01_opencv_contrours_boundingrect+pmpd_ambient/pd_link.pd deleted file mode 100755 index 288fb93..0000000 --- a/examples/01_opencv_contrours_boundingrect+pmpd_ambient/pd_link.pd +++ /dev/null @@ -1,21 +0,0 @@ -#N canvas 587 514 328 282 12; -#X obj 177 35 inlet; -#X obj 171 96 outlet; -#X obj 12 32 inlet; -#X obj 6 93 outlet; -#X msg 56 156 \$1 \$2 0; -#X obj 24 186 gemhead; -#X msg 134 155 \$1 \$2 0; -#X obj 45 61 link2D \$1-link 0 10 2.5 0.001; -#X obj 26 243 curve 2; -#X obj 24 211 colorRGB 1 0 1; -#X connect 0 0 6 0; -#X connect 0 0 7 1; -#X connect 2 0 4 0; -#X connect 2 0 7 0; -#X connect 4 0 8 1; -#X connect 5 0 9 0; -#X connect 6 0 8 2; -#X connect 7 0 3 0; -#X connect 7 1 1 0; -#X connect 9 0 8 0; diff --git a/examples/01_opencv_contrours_boundingrect+pmpd_ambient/pd_mass.pd b/examples/01_opencv_contrours_boundingrect+pmpd_ambient/pd_mass.pd deleted file mode 100755 index a1083a9..0000000 --- a/examples/01_opencv_contrours_boundingrect+pmpd_ambient/pd_mass.pd +++ /dev/null @@ -1,46 +0,0 @@ -#N canvas 624 0 656 389 12; -#X obj 26 38 inlet; -#X obj 11 137 outlet; -#X obj 25 104 unpack s f f; -#X obj 68 146 gemhead; -#X obj 59 206 translateXYZ; -#X obj 25 71 mass2D \$3-mass 50 \$1 \$2 -3.8 3.8 -3.8 3.8; -#X obj 257 105 unpack s f f f; -#X obj 438 233 osc~; -#X obj 438 208 mtof; -#X obj 438 133 loadbang; -#X obj 364 275 *~; -#X msg 364 209 \$1 50; -#X obj 364 234 line~; -#X obj 364 305 dac~; -#X obj 438 183 + 30; -#X obj 438 159 random 60; -#X obj 442 29 inlet; -#X msg 442 53 0; -#X obj 364 183 min 0.1; -#X obj 364 130 * 0.03; -#X obj 56 248 sphere 0.1; -#X obj 65 171 colorRGB 1 0 1; -#X connect 0 0 5 0; -#X connect 2 1 4 1; -#X connect 2 2 4 2; -#X connect 3 0 21 0; -#X connect 4 0 20 0; -#X connect 5 0 2 0; -#X connect 5 0 1 0; -#X connect 5 1 6 0; -#X connect 6 3 19 0; -#X connect 7 0 10 1; -#X connect 8 0 7 0; -#X connect 9 0 15 0; -#X connect 10 0 13 0; -#X connect 10 0 13 1; -#X connect 11 0 12 0; -#X connect 12 0 10 0; -#X connect 14 0 8 0; -#X connect 15 0 14 0; -#X connect 16 0 17 0; -#X connect 17 0 18 1; -#X connect 18 0 11 0; -#X connect 19 0 18 0; -#X connect 21 0 4 0; diff --git a/examples/02_opencv_motempl+particle_system/02_opencv_motempl+particle_system.pd b/examples/02_opencv_motempl+particle_system/02_opencv_motempl+particle_system.pd index 5dd353c..c884257 100644 --- a/examples/02_opencv_motempl+particle_system/02_opencv_motempl+particle_system.pd +++ b/examples/02_opencv_motempl+particle_system/02_opencv_motempl+particle_system.pd @@ -1,4 +1,9 @@ +<<<<<<< HEAD #N canvas 0 25 1259 669 10; +======= +#N canvas 3 80 1259 669 10; +#X declare -path ../..; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X obj 422 769 route -1 0 1 2 3 4; #X floatatom 425 849 5 0 0 0 - - -; #X floatatom 460 849 5 0 0 0 - - -; @@ -213,13 +218,21 @@ want or also to a generalized solution.; 0 1; #X obj 173 1422 spigot; #X obj 206 1396 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 +<<<<<<< HEAD 0 1; +======= +1 1; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X text -174 1438 This example is the typical video projection to the floor following the movement of the people. So image to project must be just a black background with the particles.; #X obj 228 1395 loadbang; #X text 222 1296 show/hide analysis ->; #X text 39 1394 show/hide original image ->; +<<<<<<< HEAD +======= +#X obj 735 273 declare -path ../..; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X connect 0 0 13 0; #X connect 0 1 14 0; #X connect 0 2 15 0; diff --git a/examples/04_opencv_colorfilt+video_projector/04_opencv_colorfilt+video_projector.pd b/examples/04_opencv_colorfilt+video_projector/04_opencv_colorfilt+video_projector.pd new file mode 100644 index 0000000..83ec09d --- /dev/null +++ b/examples/04_opencv_colorfilt+video_projector/04_opencv_colorfilt+video_projector.pd @@ -0,0 +1,291 @@ +#N canvas 303 25 925 664 10; +#X obj 165 -11 gemhead; +#X obj 57 305 pix_texture; +#X obj -176 -61 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 +-66577 0; +#N canvas 650 49 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 299 208 destroy; +#X msg 283 161 frame 5; +#X obj 164 126 t b b b; +#X msg 160 190 dimen 640 480 \, create \, 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 9 0; +#X connect 2 1 4 0; +#X connect 2 1 7 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 10 0; +#X connect 9 2 8 0; +#X connect 10 0 6 0; +#X restore -166 -17 pd gemwin; +#X msg -166 -35 destroy; +#X text -168 -55 Create window and render; +#X obj 179 474 pix_opencv_colorfilt; +#X obj 57 324 rectangle 5.3 4; +#X floatatom 211 505 5 0 0 0 - - -; +#X floatatom 256 504 5 0 0 0 - - -; +#X floatatom 301 503 5 0 0 0 - - -; +#X text 345 503 RGB selected components; +#X obj 246 405 pdp_colorgrid pdp_colorgrid1 256 0 256 50 0 50 0 1 1 +10 10 402 426; +#X msg 256 363 tolerance \$1; +#X floatatom 342 365 5 0 0 0 - - -; +#X obj 590 -2 gemmouse; +#X obj 639 107 f; +#X obj 609 106 f; +#X obj 653 78 t b b; +#X obj 609 171 pack f f; +#X obj 629 28 route 1; +#X msg 650 53 bang; +#X floatatom 576 123 5 0 0 0 - - -; +#X floatatom 669 125 5 0 0 0 - - -; +#X msg 239 317 pick \$1 \$2; +#X text 315 316 pick a color from the video; +#X obj 165 111 pix_video; +#X msg 280 54 driver 1; +#X msg 278 83 device /dev/dv1394-0; +#X floatatom 371 827 5 0 0 0 - - -; +#X obj 229 1054 - 160; +#X obj 753 1262 gemhead; +#X obj 229 1078 / 30; +#X obj 271 1077 / 30; +#X obj 271 1053 - 120; +#X obj 270 1096 * -1; +#X obj 600 1636 polygon 4; +#X obj 238 1126 pack; +#X obj 544 1334 pack; +#X obj 406 1325 pack; +#X msg 582 1554 \$1 \$2 0; +#X msg 293 1565 \$1 \$2 0; +#X msg 479 1546 \$1 \$2 0; +#X obj 756 1327 cnv 15 155 250 empty empty empty 20 12 0 14 -24198 +-66577 0; +#X obj 781 1526 unpack 0 0 0; +#X obj 845 1511 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 827 1476 5 0 10000 1 frame# - -; +#X obj 756 1490 pix_film; +#X msg 774 1424 auto \$1; +#X obj 774 1406 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X obj 671 1597 pix_texture; +#X obj 179 620 pix_opencv_morphology; +#X floatatom 326 623 5 0 0 0 - - -; +#X obj 267 985 route 0 1 2 3 4; +#X obj 232 1020 unpack 0 0 0 0; +#X obj 360 1056 - 160; +#X obj 360 1080 / 30; +#X obj 402 1079 / 30; +#X obj 402 1055 - 120; +#X obj 401 1098 * -1; +#X obj 369 1128 pack; +#X msg 378 1553 \$1 \$2 0; +#X obj 363 1022 unpack 0 0 0 0; +#X floatatom 278 764 5 0 0 0 - - -; +#X msg 274 705 maxmove \$1; +#X floatatom 348 706 5 0 0 0 - - -; +#X obj 179 796 pix_opencv_contours_boundingrect; +#X obj 179 249 pix_separator; +#X obj 57 248 pix_separator; +#X obj 167 151 pix_resize 320 240; +#X obj 544 477 pix_opencv_colorfilt; +#X floatatom 576 508 5 0 0 0 - - -; +#X floatatom 621 507 5 0 0 0 - - -; +#X floatatom 666 506 5 0 0 0 - - -; +#X text 710 506 RGB selected components; +#X obj 611 408 pdp_colorgrid pdp_colorgrid1 256 0 256 50 0 50 0 1 1 +10 10 760 425; +#X msg 617 366 tolerance \$1; +#X floatatom 703 368 5 0 0 0 - - -; +#X msg 600 320 pick \$1 \$2; +#X text 676 319 pick a color from the video; +#X obj 544 633 pix_opencv_morphology; +#X floatatom 691 636 5 0 0 0 - - -; +#X floatatom 643 749 5 0 0 0 - - -; +#X msg 642 720 maxmove \$1; +#X floatatom 716 721 5 0 0 0 - - -; +#X obj 544 781 pix_opencv_contours_boundingrect; +#X obj 544 263 pix_separator; +#X obj 604 828 route 0 1 2 3 4; +#X obj 325 1236 max; +#X obj 338 1205 t b; +#X obj 408 1206 t b; +#X obj 372 1237 min; +#X obj 443 1267 max; +#X obj 451 1238 t b; +#X obj 525 1259 t b; +#X obj 512 1290 min; +#X floatatom 451 1339 5 0 0 0 - - -; +#X obj 107 899 pix_texture; +#X obj 107 918 rectangle 5.3 4; +#X obj 108 868 spigot; +#X obj 155 869 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 715 696 191; +#X msg 352 682 191; +#X obj 356 656 loadbang; +#X obj 717 669 loadbang; +#X msg 324 597 2; +#X msg 689 610 2; +#X obj 322 570 loadbang; +#X obj 687 584 loadbang; +#X msg 768 1381 open ./anim-1.mov; +#X obj 768 1361 loadbang; +#X msg 280 17 dialog; +#X obj 510 896 pix_texture; +#X obj 510 915 rectangle 5.3 4; +#X obj 511 865 spigot; +#X obj 558 866 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 611 144 / 2; +#X obj 651 145 / 2; +#X connect 0 0 26 0; +#X connect 1 0 7 0; +#X connect 3 0 4 0; +#X connect 4 0 3 0; +#X connect 6 0 51 0; +#X connect 6 1 8 0; +#X connect 6 2 9 0; +#X connect 6 3 10 0; +#X connect 12 0 6 1; +#X connect 12 1 6 2; +#X connect 12 2 6 3; +#X connect 13 0 6 0; +#X connect 14 0 13 0; +#X connect 15 0 17 1; +#X connect 15 1 16 1; +#X connect 15 2 20 0; +#X connect 16 0 23 0; +#X connect 16 0 117 0; +#X connect 17 0 22 0; +#X connect 17 0 116 0; +#X connect 18 0 17 0; +#X connect 18 1 16 0; +#X connect 19 0 24 0; +#X connect 20 0 21 0; +#X connect 21 0 18 0; +#X connect 24 0 6 0; +#X connect 26 0 69 0; +#X connect 27 0 26 0; +#X connect 28 0 26 0; +#X connect 30 0 32 0; +#X connect 31 0 47 0; +#X connect 32 0 37 0; +#X connect 32 0 88 0; +#X connect 32 0 91 0; +#X connect 33 0 35 0; +#X connect 34 0 33 0; +#X connect 35 0 37 1; +#X connect 35 0 92 0; +#X connect 35 0 95 0; +#X connect 37 0 40 0; +#X connect 38 0 41 0; +#X connect 39 0 42 0; +#X connect 40 0 36 4; +#X connect 41 0 36 1; +#X connect 42 0 36 3; +#X connect 45 0 46 0; +#X connect 46 0 47 1; +#X connect 47 0 50 0; +#X connect 47 1 44 0; +#X connect 47 2 45 0; +#X connect 48 0 47 0; +#X connect 49 0 48 0; +#X connect 50 0 36 0; +#X connect 51 0 66 0; +#X connect 52 0 51 1; +#X connect 53 0 54 0; +#X connect 54 0 30 0; +#X connect 54 1 34 0; +#X connect 55 0 56 0; +#X connect 56 0 60 0; +#X connect 56 0 89 0; +#X connect 56 0 88 1; +#X connect 56 0 90 0; +#X connect 56 0 91 1; +#X connect 57 0 59 0; +#X connect 58 0 57 0; +#X connect 59 0 60 1; +#X connect 59 0 93 0; +#X connect 59 0 94 0; +#X connect 59 0 92 1; +#X connect 59 0 95 1; +#X connect 60 0 61 0; +#X connect 61 0 36 2; +#X connect 62 0 55 0; +#X connect 62 1 58 0; +#X connect 63 0 66 1; +#X connect 64 0 66 0; +#X connect 65 0 64 0; +#X connect 66 0 99 0; +#X connect 66 1 53 0; +#X connect 66 2 29 0; +#X connect 67 0 6 0; +#X connect 68 0 1 0; +#X connect 69 0 68 0; +#X connect 69 0 67 0; +#X connect 69 0 86 0; +#X connect 70 0 80 0; +#X connect 70 1 71 0; +#X connect 70 2 72 0; +#X connect 70 3 73 0; +#X connect 75 0 70 1; +#X connect 75 1 70 2; +#X connect 75 2 70 3; +#X connect 76 0 70 0; +#X connect 77 0 76 0; +#X connect 78 0 70 0; +#X connect 80 0 85 0; +#X connect 81 0 80 1; +#X connect 82 0 85 1; +#X connect 83 0 85 0; +#X connect 84 0 83 0; +#X connect 85 0 114 0; +#X connect 85 1 87 0; +#X connect 86 0 70 0; +#X connect 87 0 62 0; +#X connect 88 0 38 0; +#X connect 89 0 88 0; +#X connect 90 0 91 0; +#X connect 91 0 39 0; +#X connect 92 0 39 1; +#X connect 92 0 96 0; +#X connect 93 0 92 0; +#X connect 94 0 95 0; +#X connect 95 0 38 1; +#X connect 97 0 98 0; +#X connect 99 0 97 0; +#X connect 100 0 99 1; +#X connect 101 0 84 0; +#X connect 102 0 65 0; +#X connect 103 0 102 0; +#X connect 104 0 101 0; +#X connect 105 0 52 0; +#X connect 106 0 81 0; +#X connect 107 0 105 0; +#X connect 108 0 106 0; +#X connect 109 0 47 0; +#X connect 110 0 109 0; +#X connect 110 0 49 0; +#X connect 111 0 26 0; +#X connect 112 0 113 0; +#X connect 114 0 112 0; +#X connect 115 0 114 1; +#X connect 116 0 19 0; +#X connect 117 0 19 1; diff --git a/examples/04_opencv_colorfilt+video_projector/05_opencv_colorfilt+video_projector.pd b/examples/04_opencv_colorfilt+video_projector/05_opencv_colorfilt+video_projector.pd deleted file mode 100644 index 83ec09d..0000000 --- a/examples/04_opencv_colorfilt+video_projector/05_opencv_colorfilt+video_projector.pd +++ /dev/null @@ -1,291 +0,0 @@ -#N canvas 303 25 925 664 10; -#X obj 165 -11 gemhead; -#X obj 57 305 pix_texture; -#X obj -176 -61 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 --66577 0; -#N canvas 650 49 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 299 208 destroy; -#X msg 283 161 frame 5; -#X obj 164 126 t b b b; -#X msg 160 190 dimen 640 480 \, create \, 1; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 9 0; -#X connect 2 1 4 0; -#X connect 2 1 7 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 10 0; -#X connect 9 2 8 0; -#X connect 10 0 6 0; -#X restore -166 -17 pd gemwin; -#X msg -166 -35 destroy; -#X text -168 -55 Create window and render; -#X obj 179 474 pix_opencv_colorfilt; -#X obj 57 324 rectangle 5.3 4; -#X floatatom 211 505 5 0 0 0 - - -; -#X floatatom 256 504 5 0 0 0 - - -; -#X floatatom 301 503 5 0 0 0 - - -; -#X text 345 503 RGB selected components; -#X obj 246 405 pdp_colorgrid pdp_colorgrid1 256 0 256 50 0 50 0 1 1 -10 10 402 426; -#X msg 256 363 tolerance \$1; -#X floatatom 342 365 5 0 0 0 - - -; -#X obj 590 -2 gemmouse; -#X obj 639 107 f; -#X obj 609 106 f; -#X obj 653 78 t b b; -#X obj 609 171 pack f f; -#X obj 629 28 route 1; -#X msg 650 53 bang; -#X floatatom 576 123 5 0 0 0 - - -; -#X floatatom 669 125 5 0 0 0 - - -; -#X msg 239 317 pick \$1 \$2; -#X text 315 316 pick a color from the video; -#X obj 165 111 pix_video; -#X msg 280 54 driver 1; -#X msg 278 83 device /dev/dv1394-0; -#X floatatom 371 827 5 0 0 0 - - -; -#X obj 229 1054 - 160; -#X obj 753 1262 gemhead; -#X obj 229 1078 / 30; -#X obj 271 1077 / 30; -#X obj 271 1053 - 120; -#X obj 270 1096 * -1; -#X obj 600 1636 polygon 4; -#X obj 238 1126 pack; -#X obj 544 1334 pack; -#X obj 406 1325 pack; -#X msg 582 1554 \$1 \$2 0; -#X msg 293 1565 \$1 \$2 0; -#X msg 479 1546 \$1 \$2 0; -#X obj 756 1327 cnv 15 155 250 empty empty empty 20 12 0 14 -24198 --66577 0; -#X obj 781 1526 unpack 0 0 0; -#X obj 845 1511 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 827 1476 5 0 10000 1 frame# - -; -#X obj 756 1490 pix_film; -#X msg 774 1424 auto \$1; -#X obj 774 1406 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X obj 671 1597 pix_texture; -#X obj 179 620 pix_opencv_morphology; -#X floatatom 326 623 5 0 0 0 - - -; -#X obj 267 985 route 0 1 2 3 4; -#X obj 232 1020 unpack 0 0 0 0; -#X obj 360 1056 - 160; -#X obj 360 1080 / 30; -#X obj 402 1079 / 30; -#X obj 402 1055 - 120; -#X obj 401 1098 * -1; -#X obj 369 1128 pack; -#X msg 378 1553 \$1 \$2 0; -#X obj 363 1022 unpack 0 0 0 0; -#X floatatom 278 764 5 0 0 0 - - -; -#X msg 274 705 maxmove \$1; -#X floatatom 348 706 5 0 0 0 - - -; -#X obj 179 796 pix_opencv_contours_boundingrect; -#X obj 179 249 pix_separator; -#X obj 57 248 pix_separator; -#X obj 167 151 pix_resize 320 240; -#X obj 544 477 pix_opencv_colorfilt; -#X floatatom 576 508 5 0 0 0 - - -; -#X floatatom 621 507 5 0 0 0 - - -; -#X floatatom 666 506 5 0 0 0 - - -; -#X text 710 506 RGB selected components; -#X obj 611 408 pdp_colorgrid pdp_colorgrid1 256 0 256 50 0 50 0 1 1 -10 10 760 425; -#X msg 617 366 tolerance \$1; -#X floatatom 703 368 5 0 0 0 - - -; -#X msg 600 320 pick \$1 \$2; -#X text 676 319 pick a color from the video; -#X obj 544 633 pix_opencv_morphology; -#X floatatom 691 636 5 0 0 0 - - -; -#X floatatom 643 749 5 0 0 0 - - -; -#X msg 642 720 maxmove \$1; -#X floatatom 716 721 5 0 0 0 - - -; -#X obj 544 781 pix_opencv_contours_boundingrect; -#X obj 544 263 pix_separator; -#X obj 604 828 route 0 1 2 3 4; -#X obj 325 1236 max; -#X obj 338 1205 t b; -#X obj 408 1206 t b; -#X obj 372 1237 min; -#X obj 443 1267 max; -#X obj 451 1238 t b; -#X obj 525 1259 t b; -#X obj 512 1290 min; -#X floatatom 451 1339 5 0 0 0 - - -; -#X obj 107 899 pix_texture; -#X obj 107 918 rectangle 5.3 4; -#X obj 108 868 spigot; -#X obj 155 869 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 715 696 191; -#X msg 352 682 191; -#X obj 356 656 loadbang; -#X obj 717 669 loadbang; -#X msg 324 597 2; -#X msg 689 610 2; -#X obj 322 570 loadbang; -#X obj 687 584 loadbang; -#X msg 768 1381 open ./anim-1.mov; -#X obj 768 1361 loadbang; -#X msg 280 17 dialog; -#X obj 510 896 pix_texture; -#X obj 510 915 rectangle 5.3 4; -#X obj 511 865 spigot; -#X obj 558 866 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 611 144 / 2; -#X obj 651 145 / 2; -#X connect 0 0 26 0; -#X connect 1 0 7 0; -#X connect 3 0 4 0; -#X connect 4 0 3 0; -#X connect 6 0 51 0; -#X connect 6 1 8 0; -#X connect 6 2 9 0; -#X connect 6 3 10 0; -#X connect 12 0 6 1; -#X connect 12 1 6 2; -#X connect 12 2 6 3; -#X connect 13 0 6 0; -#X connect 14 0 13 0; -#X connect 15 0 17 1; -#X connect 15 1 16 1; -#X connect 15 2 20 0; -#X connect 16 0 23 0; -#X connect 16 0 117 0; -#X connect 17 0 22 0; -#X connect 17 0 116 0; -#X connect 18 0 17 0; -#X connect 18 1 16 0; -#X connect 19 0 24 0; -#X connect 20 0 21 0; -#X connect 21 0 18 0; -#X connect 24 0 6 0; -#X connect 26 0 69 0; -#X connect 27 0 26 0; -#X connect 28 0 26 0; -#X connect 30 0 32 0; -#X connect 31 0 47 0; -#X connect 32 0 37 0; -#X connect 32 0 88 0; -#X connect 32 0 91 0; -#X connect 33 0 35 0; -#X connect 34 0 33 0; -#X connect 35 0 37 1; -#X connect 35 0 92 0; -#X connect 35 0 95 0; -#X connect 37 0 40 0; -#X connect 38 0 41 0; -#X connect 39 0 42 0; -#X connect 40 0 36 4; -#X connect 41 0 36 1; -#X connect 42 0 36 3; -#X connect 45 0 46 0; -#X connect 46 0 47 1; -#X connect 47 0 50 0; -#X connect 47 1 44 0; -#X connect 47 2 45 0; -#X connect 48 0 47 0; -#X connect 49 0 48 0; -#X connect 50 0 36 0; -#X connect 51 0 66 0; -#X connect 52 0 51 1; -#X connect 53 0 54 0; -#X connect 54 0 30 0; -#X connect 54 1 34 0; -#X connect 55 0 56 0; -#X connect 56 0 60 0; -#X connect 56 0 89 0; -#X connect 56 0 88 1; -#X connect 56 0 90 0; -#X connect 56 0 91 1; -#X connect 57 0 59 0; -#X connect 58 0 57 0; -#X connect 59 0 60 1; -#X connect 59 0 93 0; -#X connect 59 0 94 0; -#X connect 59 0 92 1; -#X connect 59 0 95 1; -#X connect 60 0 61 0; -#X connect 61 0 36 2; -#X connect 62 0 55 0; -#X connect 62 1 58 0; -#X connect 63 0 66 1; -#X connect 64 0 66 0; -#X connect 65 0 64 0; -#X connect 66 0 99 0; -#X connect 66 1 53 0; -#X connect 66 2 29 0; -#X connect 67 0 6 0; -#X connect 68 0 1 0; -#X connect 69 0 68 0; -#X connect 69 0 67 0; -#X connect 69 0 86 0; -#X connect 70 0 80 0; -#X connect 70 1 71 0; -#X connect 70 2 72 0; -#X connect 70 3 73 0; -#X connect 75 0 70 1; -#X connect 75 1 70 2; -#X connect 75 2 70 3; -#X connect 76 0 70 0; -#X connect 77 0 76 0; -#X connect 78 0 70 0; -#X connect 80 0 85 0; -#X connect 81 0 80 1; -#X connect 82 0 85 1; -#X connect 83 0 85 0; -#X connect 84 0 83 0; -#X connect 85 0 114 0; -#X connect 85 1 87 0; -#X connect 86 0 70 0; -#X connect 87 0 62 0; -#X connect 88 0 38 0; -#X connect 89 0 88 0; -#X connect 90 0 91 0; -#X connect 91 0 39 0; -#X connect 92 0 39 1; -#X connect 92 0 96 0; -#X connect 93 0 92 0; -#X connect 94 0 95 0; -#X connect 95 0 38 1; -#X connect 97 0 98 0; -#X connect 99 0 97 0; -#X connect 100 0 99 1; -#X connect 101 0 84 0; -#X connect 102 0 65 0; -#X connect 103 0 102 0; -#X connect 104 0 101 0; -#X connect 105 0 52 0; -#X connect 106 0 81 0; -#X connect 107 0 105 0; -#X connect 108 0 106 0; -#X connect 109 0 47 0; -#X connect 110 0 109 0; -#X connect 110 0 49 0; -#X connect 111 0 26 0; -#X connect 112 0 113 0; -#X connect 114 0 112 0; -#X connect 115 0 114 1; -#X connect 116 0 19 0; -#X connect 117 0 19 1; diff --git a/examples/05_perspective_correction/05_perspective_correction.pd b/examples/05_perspective_correction/05_perspective_correction.pd index 19fe5f2..a013a19 100644 --- a/examples/05_perspective_correction/05_perspective_correction.pd +++ b/examples/05_perspective_correction/05_perspective_correction.pd @@ -1,4 +1,8 @@ +<<<<<<< HEAD #N canvas 737 110 900 736 10; +======= +#N canvas 745 86 900 736 10; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X declare -path ../../; #X obj 180 76 gemhead; #X obj 180 96 pix_share_read 666 640 480 1; @@ -55,7 +59,11 @@ positives; #X obj 70 619 scaleXYZ 0.5 0.5 0; #X msg 113 517 5.3333 320; #X msg 189 517 4 240; +<<<<<<< HEAD #N canvas 1 110 450 300 format 0; +======= +#N canvas 3 79 450 300 format 0; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X obj 93 7 inlet; #X obj 118 140 outlet; #X msg 108 68 \$1 \$4 0 \$7 \$2 \$5 0 \$8 0 0 1 0 \$3 \$6 0 \$9; @@ -140,7 +148,11 @@ matrix between srcMatrix and dstMatrix; #X text 502 594 pix_opencv_findchessboardcorners finds chessboard corners in the incomming image stream and send out corners coordinates as a list trought its second outlet; +<<<<<<< HEAD #N canvas 737 406 715 644 generates_coords 0; +======= +#N canvas 743 388 715 644 generates_coords 1; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X obj 58 2 inlet; #X obj 78 251 until; #X obj 78 358 f; @@ -258,13 +270,22 @@ scrMatrix for pix_opencv_warpperspective; with pix_opencv_warpperspective and pix_opencv_findchessboardcorners ; #X text -18 0 declare path to be sure externals were found...; +<<<<<<< HEAD #X text 354 95 <-- receive image from subprocess.pd; #X obj 224 198 pix_flip; +======= +#X text 508 440 use the other patch to move the chessboard; +#X text 354 95 <-- receive image from subprocess.pd; +#X obj 207 159 pix_flip; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X text 102 162 the flip flag; #X text 102 172 this is a bug; #X text 184 159 -->; #X obj 180 136 t a a; +<<<<<<< HEAD #X text 508 440 use subprocess patch to move the chessboard; +======= +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X connect 0 0 1 0; #X connect 1 0 13 0; #X connect 2 0 74 0; @@ -280,7 +301,11 @@ with pix_opencv_warpperspective and pix_opencv_findchessboardcorners #X connect 11 0 10 0; #X connect 12 0 2 0; #X connect 12 0 70 0; +<<<<<<< HEAD #X connect 13 0 91 0; +======= +#X connect 13 0 92 0; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 #X connect 16 0 17 0; #X connect 16 1 18 0; #X connect 19 0 20 0; @@ -323,4 +348,9 @@ with pix_opencv_warpperspective and pix_opencv_findchessboardcorners #X connect 75 0 74 1; #X connect 76 0 75 0; #X connect 76 0 73 1; +<<<<<<< HEAD #X connect 91 0 2 0; +======= +#X connect 92 0 2 0; +#X connect 92 1 88 0; +>>>>>>> 09729232bf1a52aa509cf5341d4186ba42576589 diff --git a/examples/07_shape_extractor/07_shape_extractor.pd b/examples/07_shape_extractor/07_shape_extractor.pd new file mode 100644 index 0000000..c747346 --- /dev/null +++ b/examples/07_shape_extractor/07_shape_extractor.pd @@ -0,0 +1,72 @@ +#N canvas 571 629 1037 415 10; +#X declare -path ../..; +#X obj 618 -87 gemhead; +#X obj 645 -4 pix_texture; +#X obj 51 202 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 1 86 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X msg 353 192 color 0 0 1; +#X obj 349 156 loadbang; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 9 0; +#X connect 2 1 4 0; +#X connect 2 1 7 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 6 0 5 0; +#X connect 7 0 5 0; +#X connect 8 0 5 0; +#X connect 9 0 6 0; +#X connect 9 2 8 0; +#X connect 10 0 5 0; +#X connect 11 0 10 0; +#X restore 56 246 pd gemwin; +#X msg 56 225 destroy; +#X text 57 207 Create window and render; +#X obj 618 -45 t a a; +#X obj 645 -24 pix_separator; +#X obj 822 85 gemhead; +#X obj 822 107 pix_texture; +#X obj 822 147 scaleXYZ 0.5 0.5 0; +#X obj 822 127 translateXYZ 0 2 0; +#X obj 475 64 pix_opencv_distrans; +#X obj 20 -69 declare -path ../..; +#X obj 475 176 pix_texture; +#X obj 475 196 translateXYZ 0 -2 0; +#X obj 475 216 scaleXYZ 0.5 0.5 0; +#X obj 475 236 rectangle 5.3333 4; +#X obj 823 168 rectangle 5.3333 4; +#X obj 475 156 pix_threshold; +#X msg 550 133 \$1 0 0; +#X floatatom 555 113 5 0 0 0 - - -, f 5; +#X obj 618 -67 pix_image ../test-contours.bmp; +#X connect 0 0 22 0; +#X connect 1 1 9 1; +#X connect 3 0 4 0; +#X connect 4 0 3 0; +#X connect 6 0 12 0; +#X connect 6 1 7 0; +#X connect 7 0 1 0; +#X connect 8 0 9 0; +#X connect 9 0 11 0; +#X connect 10 0 18 0; +#X connect 11 0 10 0; +#X connect 12 0 19 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 17 0; +#X connect 19 0 14 0; +#X connect 20 0 19 2; +#X connect 21 0 20 0; +#X connect 22 0 6 0; diff --git a/examples/09_vp_calibration/01.flat_projection-help.pd b/examples/09_vp_calibration/01.flat_projection-help.pd new file mode 100644 index 0000000..928203d --- /dev/null +++ b/examples/09_vp_calibration/01.flat_projection-help.pd @@ -0,0 +1,30 @@ +#N canvas 363 186 996 500 10; +#X obj 39 307 r render; +#X obj 39 437 pix_texture; +#X obj 110 353 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 110 373 openpanel; +#X msg 110 394 open \$1; +#X obj 39 458 square 25; +#X text 99 307 <- this object must be present in your patch to start +the gemchain like in this example.; +#X floatatom 109 462 5 0 0 0 - - -, f 5; +#X obj 39 49 flat_projection 20; +#X text 304 191 <- abstraction [flat_projection]; +#X msg 51 24 offset 1024 0; +#X text 176 23 other messages to the gemwin; +#X text 305 133 This define the way screen are physically connected +to the computer.; +#X text 306 93 This define the way screen are positioned in space to +create a single image.; +#X text 305 159 geometry screen and geometry computer can be diferents +\, but should define the same number of screen.; +#X obj 39 415 pix_image temp2.JPG; +#X connect 0 0 15 0; +#X connect 1 0 5 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 15 0; +#X connect 7 0 5 1; +#X connect 10 0 8 0; +#X connect 15 0 1 0; diff --git a/examples/09_vp_calibration/09_vp_calibration_gpu.pd b/examples/09_vp_calibration/09_vp_calibration_gpu.pd new file mode 100644 index 0000000..ed11234 --- /dev/null +++ b/examples/09_vp_calibration/09_vp_calibration_gpu.pd @@ -0,0 +1,363 @@ +#N canvas 347 203 1443 736 10; +#X declare -path ../../; +#X obj 17 13 declare -path ../../; +#X text 7 -11 declare path to be sure externals were found...; +#X obj 9 588 gemwin; +#X obj 839 270 pix_texture; +#X msg 23 555 destroy; +#N canvas 969 388 826 658 compute_perspective 0; +#N canvas 1 110 450 300 format 0; +#X obj 93 7 inlet; +#X obj 118 140 outlet; +#X msg 108 68 \$1 \$4 0 \$7 \$2 \$5 0 \$8 0 0 1 0 \$3 \$6 0 \$9; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X restore 17 474 pd format; +#N canvas 1 86 643 318 mapMatrix 0; +#X obj 110 263 pack 0 0 0 0 0 0 0 0 0; +#X floatatom 110 121 5 0 0 0 - - -, f 5; +#X floatatom 160 121 5 0 0 0 - - -, f 5; +#X floatatom 210 121 5 0 0 0 - - -, f 5; +#X floatatom 110 141 5 0 0 0 - - -, f 5; +#X floatatom 160 141 5 0 0 0 - - -, f 5; +#X floatatom 210 141 5 0 0 0 - - -, f 5; +#X floatatom 110 161 5 0 0 0 - - -, f 5; +#X floatatom 160 161 5 0 0 0 - - -, f 5; +#X floatatom 210 161 5 0 0 0 - - -, f 5; +#X obj 110 285 outlet; +#X obj 110 29 inlet; +#X obj 110 59 unpack 0 0 0 0 0 0 0 0 0; +#X obj 146 195 t b f; +#X obj 189 196 t b f; +#X obj 231 196 t b f; +#X obj 273 195 t b f; +#X obj 316 195 t b f; +#X obj 362 195 t b f; +#X obj 406 195 t b f; +#X obj 456 195 t b f; +#X connect 0 0 10 0; +#X connect 1 0 0 0; +#X connect 2 0 13 0; +#X connect 3 0 14 0; +#X connect 4 0 15 0; +#X connect 5 0 16 0; +#X connect 6 0 17 0; +#X connect 7 0 18 0; +#X connect 8 0 19 0; +#X connect 9 0 20 0; +#X connect 11 0 12 0; +#X connect 12 0 1 0; +#X connect 12 1 2 0; +#X connect 12 2 3 0; +#X connect 12 3 4 0; +#X connect 12 4 5 0; +#X connect 12 5 6 0; +#X connect 12 6 7 0; +#X connect 12 7 8 0; +#X connect 12 8 9 0; +#X connect 13 0 0 0; +#X connect 13 1 0 1; +#X connect 14 0 0 0; +#X connect 14 1 0 2; +#X connect 15 0 0 0; +#X connect 15 1 0 3; +#X connect 16 0 0 0; +#X connect 16 1 0 4; +#X connect 17 0 0 0; +#X connect 17 1 0 5; +#X connect 18 0 0 0; +#X connect 18 1 0 6; +#X connect 19 0 0 0; +#X connect 19 1 0 7; +#X connect 20 0 0 0; +#X connect 20 1 0 8; +#X coords 0 -1 1 1 150 80 1 100 100; +#X restore 17 391 pd mapMatrix; +#X obj -136 371 pix_opencv_warpperspective; +#X text 76 473 <-- transform into a 4x4; +#X text 101 483 openGL transpose matrix; +#X obj -137 194 loadbang; +#X obj 101 101 cnv 15 240 60 empty empty VP_calib 20 12 0 14 -262130 +-66577 0; +#X floatatom 253 124 5 0 0 0 - - -, f 5; +#X floatatom 293 124 5 0 0 0 - - -, f 5; +#X floatatom 253 144 5 0 0 0 - - -, f 5; +#X floatatom 293 144 5 0 0 0 - - -, f 5; +#X floatatom 111 124 5 0 0 0 - - -, f 5; +#X floatatom 151 124 5 0 0 0 - - -, f 5; +#X floatatom 111 144 5 0 0 0 - - -, f 5; +#X floatatom 151 144 5 0 0 0 - - -, f 5; +#X text 206 124 VP 1; +#X obj 139 -12 unpack 0 0 0 0 0 0 0 0; +#X obj 139 -52 loadbang; +#X obj 74 258 pack 0 0 0 0 0 0 0 0; +#X obj 74 217 t b f; +#X obj 110 217 t b f; +#X obj 146 217 t b f; +#X obj 182 217 t b f; +#X obj 218 217 t b f; +#X obj 254 217 t b f; +#X obj 290 217 t b f; +#X msg 74 280 dstMatrix \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; +#X obj 17 496 outlet; +#X obj -136 497 outlet; +#X msg -136 214 srcMatrix -1 1 1 1 -1 -1 1 -1; +#X obj 74 302 t b a; +#X obj 201 107 bng 15 250 50 0 empty empty reset 17 7 0 10 -262144 +-1 -1; +#X msg 124 330 invert \$1; +#X obj 124 310 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 139 -31 -1 1 1 1 -1 -1 1 -1; +#X connect 0 0 27 0; +#X connect 1 0 0 0; +#X connect 2 0 28 0; +#X connect 2 1 1 0; +#X connect 5 0 29 0; +#X connect 7 0 20 0; +#X connect 8 0 21 0; +#X connect 9 0 24 0; +#X connect 10 0 25 0; +#X connect 11 0 18 0; +#X connect 12 0 19 0; +#X connect 13 0 22 0; +#X connect 14 0 23 0; +#X connect 16 0 11 0; +#X connect 16 1 12 0; +#X connect 16 2 7 0; +#X connect 16 3 8 0; +#X connect 16 4 13 0; +#X connect 16 5 14 0; +#X connect 16 6 9 0; +#X connect 16 7 10 0; +#X connect 17 0 34 0; +#X connect 18 0 26 0; +#X connect 19 0 18 0; +#X connect 19 1 18 1; +#X connect 20 0 18 0; +#X connect 20 1 18 2; +#X connect 21 0 18 0; +#X connect 21 1 18 3; +#X connect 22 0 18 0; +#X connect 22 1 18 4; +#X connect 23 0 18 0; +#X connect 23 1 18 5; +#X connect 24 0 18 0; +#X connect 24 1 18 6; +#X connect 25 0 18 0; +#X connect 25 1 18 7; +#X connect 26 0 30 0; +#X connect 29 0 2 0; +#X connect 30 1 2 0; +#X connect 31 0 34 0; +#X connect 32 0 2 0; +#X connect 33 0 32 0; +#X connect 34 0 16 0; +#X coords 0 -1 1 1 242 62 2 100 100; +#X restore 751 135 pd compute_perspective; +#X msg 9 527 color 0 0 1 1 \, dimen 640 480 \, create \, 1; +#X obj 839 385 square 1 1; +#X obj 839 333 GEMglMultTransposeMatrixf; +#X text 396 -7 This demonstrates how to use pix_opencv_warpperspective +to compute perspective transformation and to apply it with OpenGL; +#X text 424 61 Very useful to quickly setup video projector; +#X obj 839 312 scaleXYZ 1 1 1; +#X obj 839 359 scaleXYZ 1 1 0; +#X obj 1123 257 pix_texture; +#N canvas 969 388 826 658 compute_perspective 0; +#N canvas 1 110 450 300 format 0; +#X obj 93 7 inlet; +#X obj 118 140 outlet; +#X msg 108 68 \$1 \$4 0 \$7 \$2 \$5 0 \$8 0 0 1 0 \$3 \$6 0 \$9; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X restore 17 474 pd format; +#N canvas 1 86 643 318 mapMatrix 0; +#X obj 110 263 pack 0 0 0 0 0 0 0 0 0; +#X floatatom 110 121 5 0 0 0 - - -, f 5; +#X floatatom 160 121 5 0 0 0 - - -, f 5; +#X floatatom 210 121 5 0 0 0 - - -, f 5; +#X floatatom 110 141 5 0 0 0 - - -, f 5; +#X floatatom 160 141 5 0 0 0 - - -, f 5; +#X floatatom 210 141 5 0 0 0 - - -, f 5; +#X floatatom 110 161 5 0 0 0 - - -, f 5; +#X floatatom 160 161 5 0 0 0 - - -, f 5; +#X floatatom 210 161 5 0 0 0 - - -, f 5; +#X obj 110 285 outlet; +#X obj 110 29 inlet; +#X obj 110 59 unpack 0 0 0 0 0 0 0 0 0; +#X obj 146 195 t b f; +#X obj 189 196 t b f; +#X obj 231 196 t b f; +#X obj 273 195 t b f; +#X obj 316 195 t b f; +#X obj 362 195 t b f; +#X obj 406 195 t b f; +#X obj 456 195 t b f; +#X connect 0 0 10 0; +#X connect 1 0 0 0; +#X connect 2 0 13 0; +#X connect 3 0 14 0; +#X connect 4 0 15 0; +#X connect 5 0 16 0; +#X connect 6 0 17 0; +#X connect 7 0 18 0; +#X connect 8 0 19 0; +#X connect 9 0 20 0; +#X connect 11 0 12 0; +#X connect 12 0 1 0; +#X connect 12 1 2 0; +#X connect 12 2 3 0; +#X connect 12 3 4 0; +#X connect 12 4 5 0; +#X connect 12 5 6 0; +#X connect 12 6 7 0; +#X connect 12 7 8 0; +#X connect 12 8 9 0; +#X connect 13 0 0 0; +#X connect 13 1 0 1; +#X connect 14 0 0 0; +#X connect 14 1 0 2; +#X connect 15 0 0 0; +#X connect 15 1 0 3; +#X connect 16 0 0 0; +#X connect 16 1 0 4; +#X connect 17 0 0 0; +#X connect 17 1 0 5; +#X connect 18 0 0 0; +#X connect 18 1 0 6; +#X connect 19 0 0 0; +#X connect 19 1 0 7; +#X connect 20 0 0 0; +#X connect 20 1 0 8; +#X coords 0 -1 1 1 150 80 1 100 100; +#X restore 17 391 pd mapMatrix; +#X obj -136 371 pix_opencv_warpperspective; +#X text 76 473 <-- transform into a 4x4; +#X text 101 483 openGL transpose matrix; +#X obj -137 194 loadbang; +#X obj 101 101 cnv 15 240 60 empty empty VP_calib 20 12 0 14 -262130 +-66577 0; +#X floatatom 253 124 5 0 0 0 - - -, f 5; +#X floatatom 293 124 5 0 0 0 - - -, f 5; +#X floatatom 253 144 5 0 0 0 - - -, f 5; +#X floatatom 293 144 5 0 0 0 - - -, f 5; +#X floatatom 111 124 5 0 0 0 - - -, f 5; +#X floatatom 151 124 5 0 0 0 - - -, f 5; +#X floatatom 111 144 5 0 0 0 - - -, f 5; +#X floatatom 151 144 5 0 0 0 - - -, f 5; +#X text 206 124 VP 1; +#X obj 139 -12 unpack 0 0 0 0 0 0 0 0; +#X obj 139 -52 loadbang; +#X obj 74 258 pack 0 0 0 0 0 0 0 0; +#X obj 74 217 t b f; +#X obj 110 217 t b f; +#X obj 146 217 t b f; +#X obj 182 217 t b f; +#X obj 218 217 t b f; +#X obj 254 217 t b f; +#X obj 290 217 t b f; +#X msg 74 280 dstMatrix \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; +#X obj 17 496 outlet; +#X obj -136 497 outlet; +#X msg -136 214 srcMatrix -1 1 1 1 -1 -1 1 -1; +#X obj 74 302 t b a; +#X obj 201 107 bng 15 250 50 0 empty empty reset 17 7 0 10 -262144 +-1 -1; +#X msg 124 330 invert \$1; +#X obj 124 310 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 139 -31 -1 1 1 1 -1 -1 1 -1; +#X connect 0 0 27 0; +#X connect 1 0 0 0; +#X connect 2 0 28 0; +#X connect 2 1 1 0; +#X connect 5 0 29 0; +#X connect 7 0 20 0; +#X connect 8 0 21 0; +#X connect 9 0 24 0; +#X connect 10 0 25 0; +#X connect 11 0 18 0; +#X connect 12 0 19 0; +#X connect 13 0 22 0; +#X connect 14 0 23 0; +#X connect 16 0 11 0; +#X connect 16 1 12 0; +#X connect 16 2 7 0; +#X connect 16 3 8 0; +#X connect 16 4 13 0; +#X connect 16 5 14 0; +#X connect 16 6 9 0; +#X connect 16 7 10 0; +#X connect 17 0 34 0; +#X connect 18 0 26 0; +#X connect 19 0 18 0; +#X connect 19 1 18 1; +#X connect 20 0 18 0; +#X connect 20 1 18 2; +#X connect 21 0 18 0; +#X connect 21 1 18 3; +#X connect 22 0 18 0; +#X connect 22 1 18 4; +#X connect 23 0 18 0; +#X connect 23 1 18 5; +#X connect 24 0 18 0; +#X connect 24 1 18 6; +#X connect 25 0 18 0; +#X connect 25 1 18 7; +#X connect 26 0 30 0; +#X connect 29 0 2 0; +#X connect 30 1 2 0; +#X connect 31 0 34 0; +#X connect 32 0 2 0; +#X connect 33 0 32 0; +#X connect 34 0 16 0; +#X coords 0 -1 1 1 242 62 2 100 100; +#X restore 1035 134 pd compute_perspective; +#X obj 1123 384 square 1 1; +#X obj 1123 332 GEMglMultTransposeMatrixf; +#X obj 1123 311 scaleXYZ 1 1 1; +#X obj 1123 358 scaleXYZ 1 1 0; +#X obj 1123 281 depth 0; +#X obj 839 291 depth 0; +#X obj 839 247 gemhead 2; +#X obj 1123 226 gemhead 3; +#X obj 460 133 flat_projection 20; +#X obj 11 128 r render; +#X obj 11 258 pix_texture; +#X obj 82 174 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 82 194 openpanel; +#X msg 82 215 open \$1; +#X obj 11 279 square 25; +#X text 71 128 <- this object must be present in your patch to start +the gemchain like in this example.; +#X floatatom 81 283 5 0 0 0 - - -, f 5; +#X obj 11 236 pix_image temp2.JPG; +#X obj 1006 151 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 +0 1; +#X connect 3 0 20 0; +#X connect 4 0 2 0; +#X connect 5 1 8 1; +#X connect 6 0 2 0; +#X connect 8 0 12 0; +#X connect 11 0 8 0; +#X connect 12 0 7 0; +#X connect 13 0 19 0; +#X connect 14 1 16 1; +#X connect 16 0 18 0; +#X connect 17 0 16 0; +#X connect 18 0 15 0; +#X connect 19 0 17 0; +#X connect 20 0 11 0; +#X connect 21 0 3 0; +#X connect 22 0 13 0; +#X connect 24 0 32 0; +#X connect 25 0 29 0; +#X connect 26 0 27 0; +#X connect 27 0 28 0; +#X connect 28 0 32 0; +#X connect 31 0 29 1; +#X connect 32 0 25 0; +#X connect 33 0 21 0; +#X connect 33 0 22 0; diff --git a/examples/09_vp_calibration/flat_projection.pd b/examples/09_vp_calibration/flat_projection.pd new file mode 100644 index 0000000..febb3b3 --- /dev/null +++ b/examples/09_vp_calibration/flat_projection.pd @@ -0,0 +1,456 @@ +#N canvas 73 150 1376 699 10; +#X obj 263 277 gemhead; +#X obj 263 351 gemframebuffer; +#X obj 263 402 s render; +#X msg 285 326 rectangle 0; +#X obj 285 307 loadbang; +#X obj 263 376 translateXYZ 0 0 -4; +#N canvas 190 83 1090 559 size 0; +#X obj 29 20 inlet; +#X obj 29 91 unpack f f; +#X obj 142 91 unpack f f; +#X obj 336 91 unpack f f; +#X obj 142 122 - 1; +#X obj 199 124 - 1; +#X obj 142 187 *; +#X obj 155 163 t b f; +#X obj 199 187 *; +#X obj 212 163 t b f; +#X obj 42 233 t b f; +#X obj 126 233 t b f; +#X obj 29 330 pack f f; +#X obj 441 160 t b b f; +#X obj 29 494 outlet; +#X obj 29 147 *; +#X obj 42 123 t b f; +#X obj 86 147 *; +#X obj 99 123 t b f; +#X obj 257 329 pack f f; +#X obj 257 407 outlet; +#X obj 29 257 -; +#X obj 113 257 -; +#X obj 113 285 f; +#X obj 29 285 f; +#N canvas 260 83 450 300 change2 0; +#X obj 41 24 inlet; +#X obj 41 47 unpack f f; +#X obj 80 176 pack f f; +#X obj 98 132 t b f; +#X obj 80 201 outlet; +#X obj 41 149 moses 2; +#X obj 41 89 change; +#X obj 98 89 change; +#X connect 0 0 1 0; +#X connect 1 0 6 0; +#X connect 1 1 7 0; +#X connect 2 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 2 1; +#X connect 5 1 2 0; +#X connect 6 0 5 0; +#X connect 7 0 3 0; +#X restore 257 366 pd change2; +#N canvas 260 83 450 300 change2 0; +#X obj 41 24 inlet; +#X obj 41 47 unpack f f; +#X obj 80 176 pack f f; +#X obj 98 132 t b f; +#X obj 80 201 outlet; +#X obj 41 149 moses 2; +#X obj 41 89 change; +#X obj 98 89 change; +#X connect 0 0 1 0; +#X connect 1 0 6 0; +#X connect 1 1 7 0; +#X connect 2 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 2 1; +#X connect 5 1 2 0; +#X connect 6 0 5 0; +#X connect 7 0 3 0; +#X restore 29 350 pd change2; +#X obj 581 311 pack f f; +#X obj 594 265 t b f; +#X obj 651 265 t b f; +#X obj 581 289 /; +#X obj 638 289 /; +#X obj 579 171 pack f f; +#X obj 305 428 /; +#X obj 305 448 * 4; +#X msg 305 468 \$1 4; +#X msg 29 369 dimen \$1 \$2; +#X obj 57 392 /; +#X msg 57 472 perspec \$1 \$2 -1 1 1 20; +#X obj 57 452 pack f f; +#X obj 57 411 t f f; +#X obj 57 431 * -1; +#X obj 441 91 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 467 90 basic FSAA; +#X obj 29 46 route screen_size geometry_screen geometry_computer overlap +FSAA; +#X obj 239 91 unpack f f; +#X obj 239 137 *; +#X obj 252 113 t b f; +#X obj 296 137 *; +#X obj 309 113 t b f; +#X obj 579 191 s \$0-glsl_geometry_screen; +#X obj 578 224 s \$0-glsl_geometry_computer; +#X obj 581 331 s \$0-glsl_overlap; +#X obj 305 490 s \$0-size_gemwin; +#X obj 388 255 r \$0-altern; +#X obj 407 311 list; +#X obj 388 276 sel 0 1; +#X obj 388 341 list; +#X obj 29 307 + 0; +#X obj 113 308 + 0; +#X text 480 108 not full implemented yet!; +#X connect 0 0 44 0; +#X connect 1 0 15 0; +#X connect 1 0 28 0; +#X connect 1 0 46 0; +#X connect 1 1 17 0; +#X connect 1 1 29 0; +#X connect 1 1 48 0; +#X connect 2 0 4 0; +#X connect 2 0 16 0; +#X connect 2 0 32 0; +#X connect 2 1 5 0; +#X connect 2 1 18 0; +#X connect 2 1 32 1; +#X connect 3 0 7 0; +#X connect 3 0 30 0; +#X connect 3 1 9 0; +#X connect 3 1 31 0; +#X connect 4 0 6 0; +#X connect 5 0 8 0; +#X connect 6 0 10 0; +#X connect 7 0 6 0; +#X connect 7 1 6 1; +#X connect 8 0 11 0; +#X connect 9 0 8 0; +#X connect 9 1 8 1; +#X connect 10 0 21 0; +#X connect 10 1 21 1; +#X connect 11 0 22 0; +#X connect 11 1 22 1; +#X connect 12 0 26 0; +#X connect 12 0 37 0; +#X connect 13 0 24 0; +#X connect 13 1 23 0; +#X connect 13 2 58 1; +#X connect 13 2 59 1; +#X connect 15 0 21 0; +#X connect 16 0 15 0; +#X connect 16 1 15 1; +#X connect 17 0 22 0; +#X connect 18 0 17 0; +#X connect 18 1 17 1; +#X connect 19 0 25 0; +#X connect 21 0 24 0; +#X connect 22 0 23 0; +#X connect 23 0 59 0; +#X connect 24 0 58 0; +#X connect 25 0 20 0; +#X connect 25 0 33 0; +#X connect 26 0 36 0; +#X connect 27 0 52 0; +#X connect 28 0 30 0; +#X connect 28 1 30 1; +#X connect 29 0 31 0; +#X connect 29 1 31 1; +#X connect 30 0 27 0; +#X connect 31 0 27 1; +#X connect 32 0 50 0; +#X connect 33 0 34 0; +#X connect 34 0 35 0; +#X connect 35 0 53 0; +#X connect 36 0 14 0; +#X connect 37 0 40 0; +#X connect 38 0 14 0; +#X connect 39 0 38 0; +#X connect 40 0 41 0; +#X connect 40 1 39 1; +#X connect 41 0 39 0; +#X connect 42 0 13 0; +#X connect 44 0 1 0; +#X connect 44 1 2 0; +#X connect 44 1 55 1; +#X connect 44 2 45 0; +#X connect 44 2 51 0; +#X connect 44 2 57 1; +#X connect 44 3 3 0; +#X connect 44 4 42 0; +#X connect 45 0 47 0; +#X connect 45 1 49 0; +#X connect 46 0 19 0; +#X connect 47 0 46 0; +#X connect 47 1 46 1; +#X connect 48 0 19 1; +#X connect 49 0 48 0; +#X connect 49 1 48 1; +#X connect 54 0 56 0; +#X connect 55 0 45 0; +#X connect 55 0 51 0; +#X connect 56 0 57 0; +#X connect 56 1 55 0; +#X connect 57 0 45 0; +#X connect 57 0 51 0; +#X connect 58 0 12 0; +#X connect 59 0 12 1; +#X restore 528 320 pd size; +#X msg 605 523 0 \, destroy; +#X obj 594 551 gemwin; +#X obj 428 519 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 281 631 rectangle; +#X obj 306 589 unpack f f; +#X floatatom 380 610 5 0 0 0 - - -, f 5; +#X floatatom 319 612 5 0 0 0 - - -, f 5; +#N canvas 0 50 743 323 init_glsl 0; +#X obj 129 184 outlet; +#X msg 129 120 overlap \$1 \$2; +#X obj 129 95 pack f f; +#X obj 249 98 pack f f; +#X obj 434 99 pack f f; +#X msg 249 119 geometry_screen \$1 \$2; +#X msg 434 120 geometry_computer \$1 \$2; +#X obj 434 76 r \$0-glsl_geometry_computer; +#X obj 249 75 r \$0-glsl_geometry_screen; +#X obj 129 72 r \$0-glsl_overlap; +#X obj 38 27 r \$0-init_glsl; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X connect 7 0 4 0; +#X connect 8 0 3 0; +#X connect 9 0 2 0; +#X connect 10 0 3 0; +#X connect 10 0 2 0; +#X connect 10 0 4 0; +#X restore 418 497 pd init_glsl; +#X obj 292 500 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 281 539 pix_texture; +#X obj 281 428 gemhead 60; +#X obj 528 343 print framebuffer; +#X obj 604 415 print gem_window; +#N canvas 0 50 669 667 glsl_frag 0; +#X obj 78 598 glsl_program; +#X msg 35 325 print; +#X obj 172 387 change; +#X msg 34 545 print; +#X obj 78 367 glsl_fragment; +#X floatatom 172 413 2 0 0 0 ID - -, f 2; +#X obj 190 459 print linking; +#X text 97 546 after linking \, click "print" to get some info about +the compiled shader program; +#X obj 13 52 inlet; +#X obj 78 634 outlet; +#X obj 577 95 inlet; +#X obj 13 75 route bang; +#X obj 141 87 gemhead 1; +#X msg 141 109 1; +#X obj 141 133 change; +#X obj 141 157 t b; +#X obj 157 619 change; +#X obj 157 640 t b; +#X obj 157 661 outlet; +#X msg 172 438 link \$1; +#X msg 87 324 open soft_edge.frag; +#X connect 0 0 9 0; +#X connect 0 1 16 0; +#X connect 1 0 4 0; +#X connect 2 0 5 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 4 1 2 0; +#X connect 5 0 19 0; +#X connect 8 0 11 0; +#X connect 10 0 0 0; +#X connect 11 0 20 0; +#X connect 11 1 4 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 20 0; +#X connect 16 0 17 0; +#X connect 17 0 18 0; +#X connect 19 0 0 0; +#X connect 19 0 6 0; +#X connect 20 0 4 0; +#X restore 281 518 pd glsl_frag _______; +#X obj 605 470 sel 0 1; +#X msg 624 500 border 0 \, create \, 1; +#X obj 528 67 pack f f; +#X obj 638 48 t b f; +#X obj 831 65 pack f f; +#X obj 941 46 t b f; +#X msg 528 97 screen_size \$1 \$2; +#X msg 831 92 geometry_screen \$1 \$2; +#X obj 1151 65 pack f f; +#X obj 1281 46 t b f; +#X msg 746 93 2 2; +#X msg 746 67 set \$1 \$2; +#X obj 683 67 loadbang; +#X msg 1151 92 geometry_computer \$1 \$2; +#X msg 1066 67 set \$1 \$2; +#X obj 1003 67 loadbang; +#X msg 1066 93 4 1; +#X msg 446 67 set \$1 \$2; +#X obj 383 67 loadbang; +#X msg 446 93 160 120; +#X obj 446 114 unpack f f; +#X obj 746 114 unpack f f; +#X obj 1066 114 unpack f f; +#X obj 1003 236 loadbang; +#X msg 1066 262 0 0; +#X msg 1151 282 overlap \$1 \$1; +#X msg 567 576 0; +#X msg 594 392 dimen \$1 \$2; +#X obj 567 369 t b l; +#X obj 100 235 cnv 15 250 20 empty empty PUT_AN_OBJECT_[r_render]_IN_YOUR_PATCH +10 10 0 10 -258113 -66577 0; +#X obj 100 20 cnv 15 250 215 empty empty empty 20 12 0 14 -260097 -66577 +0; +#X obj 108 163 nbx 5 14 0 5000 0 0 \$0-overlap \$0-overlap empty 0 +-8 0 10 -99865 -1 -1 0 256; +#X obj 108 187 tgl 15 0 \$0-createDestroy \$0-createDestroy empty 17 +7 0 10 -1 -262144 -1 0 1; +#X text 128 187 Create/Destroy Gem window; +#X obj 108 29 nbx 4 12 -1e+37 1e+37 0 0 \$0-sizeScreenX \$0-sizeScreenX +empty 0 -8 0 10 -1 -262144 -1 160 256; +#X text 166 163 Overlap X and Y (pixels); +#X obj 108 45 nbx 4 12 -1e+37 1e+37 0 0 \$0-sizeScreenY \$0-sizeScreenY +empty 0 -8 0 10 -1 -262144 -1 120 256; +#X obj 108 83 nbx 4 12 -1e+37 1e+37 0 0 \$0-Geom-screenY \$0-Geom-screenY +empty 0 -8 0 10 -257985 -1 -1 2 256; +#X obj 108 67 nbx 4 12 -1e+37 1e+37 0 0 \$0-Geom-screenX \$0-Geom-screenX +empty 0 -8 0 10 -257985 -1 -1 2 256; +#X obj 108 143 tgl 10 0 \$0-altern \$0-altern empty 17 7 0 10 -1 -262144 +-1 0 1; +#X obj 108 121 nbx 4 12 -1e+37 1e+37 0 0 \$0-Geom-computerY \$0-Geom-computerY +empty 0 -8 0 10 -257985 -1 -1 1 256; +#X obj 108 105 nbx 4 12 -1e+37 1e+37 0 0 \$0-Geom-computerX \$0-Geom-computerX +empty 0 -8 0 10 -257985 -1 -1 4 256; +#X text 158 65 Geometry screen (X); +#X text 158 81 Geometry screen (Y); +#X text 158 103 Geometry computer (X); +#X text 158 119 Geometry computer (Y); +#X text 158 28 Screens size (X); +#X text 158 44 Screens size (Y); +#X obj 108 212 bng 15 250 50 0 \$0-save \$0-receiveNothing empty 17 +7 0 10 -258113 -1 -1; +#X text 128 212 Save parameters; +#X obj 446 156 s \$0-sizeScreenX; +#X obj 503 136 s \$0-sizeScreenY; +#X obj 746 155 s \$0-Geom-screenX; +#X obj 803 135 s \$0-Geom-screenY; +#X obj 1123 135 s \$0-Geom-computerY; +#X obj 1066 155 s \$0-Geom-computerX; +#X obj 1066 304 s \$0-overlap; +#X obj 605 449 r \$0-createDestroy; +#X obj 567 596 s \$0-createDestroy; +#X obj 418 540 s \$0-init_glsl; +#X obj 306 569 r \$0-size_gemwin; +#X obj 528 27 r \$0-sizeScreenX; +#X obj 638 27 r \$0-sizeScreenY; +#X obj 831 25 r \$0-Geom-screenX; +#X obj 941 25 r \$0-Geom-screenY; +#X obj 1281 25 r \$0-Geom-computerY; +#X obj 1151 25 r \$0-Geom-computerX; +#X obj 1151 215 r \$0-overlap; +#X obj 100 271 r \$0-save; +#X msg 1066 236 set \$1 \$1; +#X obj 100 317 s pd-soft_edge.pd; +#X msg 100 292 menusave; +#X text 856 481 'soft-edge.pd' by Cyrille Henry (GUI by Jack/RYBN) +; +#X text 121 140 View computer(0)/screen(1); +#X obj 388 16 inlet; +#X obj 444 643 outlet; +#X connect 0 0 1 0; +#X connect 1 0 5 0; +#X connect 1 1 16 1; +#X connect 3 0 1 0; +#X connect 4 0 3 0; +#X connect 5 0 2 0; +#X connect 6 0 1 0; +#X connect 6 0 18 0; +#X connect 6 1 49 0; +#X connect 7 0 8 0; +#X connect 9 0 80 0; +#X connect 11 0 10 1; +#X connect 11 0 13 0; +#X connect 11 1 10 2; +#X connect 11 1 12 0; +#X connect 14 0 20 1; +#X connect 15 0 20 0; +#X connect 16 0 10 0; +#X connect 16 1 96 0; +#X connect 17 0 20 0; +#X connect 20 0 16 0; +#X connect 20 1 80 0; +#X connect 21 0 7 0; +#X connect 21 1 22 0; +#X connect 22 0 8 0; +#X connect 23 0 27 0; +#X connect 23 0 38 0; +#X connect 24 0 23 0; +#X connect 24 1 23 1; +#X connect 25 0 28 0; +#X connect 25 0 32 0; +#X connect 26 0 25 0; +#X connect 26 1 25 1; +#X connect 27 0 6 0; +#X connect 28 0 6 0; +#X connect 29 0 34 0; +#X connect 29 0 35 0; +#X connect 30 0 29 0; +#X connect 30 1 29 1; +#X connect 31 0 28 0; +#X connect 31 0 42 0; +#X connect 32 0 31 0; +#X connect 33 0 31 0; +#X connect 34 0 6 0; +#X connect 35 0 37 0; +#X connect 36 0 37 0; +#X connect 37 0 34 0; +#X connect 37 0 43 0; +#X connect 38 0 40 0; +#X connect 39 0 40 0; +#X connect 40 0 27 0; +#X connect 40 0 41 0; +#X connect 41 0 71 0; +#X connect 41 1 72 0; +#X connect 42 0 73 0; +#X connect 42 1 74 0; +#X connect 43 0 76 0; +#X connect 43 1 75 0; +#X connect 44 0 45 0; +#X connect 45 0 46 0; +#X connect 45 0 77 0; +#X connect 46 0 6 0; +#X connect 47 0 79 0; +#X connect 48 0 8 0; +#X connect 48 0 19 0; +#X connect 49 0 47 0; +#X connect 49 1 48 0; +#X connect 78 0 21 0; +#X connect 81 0 11 0; +#X connect 82 0 23 0; +#X connect 83 0 24 0; +#X connect 84 0 25 0; +#X connect 85 0 26 0; +#X connect 86 0 30 0; +#X connect 87 0 29 0; +#X connect 88 0 46 0; +#X connect 88 0 90 0; +#X connect 89 0 92 0; +#X connect 90 0 45 0; +#X connect 92 0 91 0; +#X connect 95 0 8 0; +#X coords 0 -1 1 1 250 235 2 100 20; diff --git a/examples/09_vp_calibration/soft_edge.frag b/examples/09_vp_calibration/soft_edge.frag new file mode 100644 index 0000000..1c2e35f --- /dev/null +++ b/examples/09_vp_calibration/soft_edge.frag @@ -0,0 +1,62 @@ +// Cyrille Henry 2010 + +//#extension GL_ARB_texture_rectangle : enable +//uniform sampler2DRect MyTex; +uniform sampler2D MyTex; +uniform vec2 overlap, geometry_screen, geometry_computer; + +void main (void) +{ +// FSAA + +// change coord from computer matrix to screen matrice + vec2 coord = (gl_TextureMatrix[0] * gl_TexCoord[0]).st; + vec2 pos_new = coord; + pos_new *= geometry_computer; + float screen_num = floor(pos_new.x)+floor(pos_new.y)*geometry_computer.x; // number of the screen + pos_new = fract(pos_new); // coord in 1 screen (from 0 to 1) + pos_new.x += fract(screen_num/geometry_screen.x)*geometry_screen.x; + pos_new.y += floor(screen_num/geometry_screen.x); + pos_new /= geometry_screen; + +// compute position regarding to the overlap + vec2 pos = pos_new; + pos *= geometry_screen; + + vec2 pos_over = fract(pos); + pos_over *= overlap; + pos_over -= overlap/2.; + pos += pos_over; + pos += overlap/2.; + pos /= geometry_screen + overlap; + vec4 color = texture2D(MyTex, pos); + +// compute fade on Top and Right + vec2 black = pos_new; + black *= geometry_screen; + black = fract(black); + black *= 1. + (overlap/ (geometry_screen/2.)); + black -= 1.; + black = max(black,0.); + black *= (geometry_screen / 2.) / overlap; + if ( ( floor(pos_new.x*geometry_screen.x) < geometry_screen.x-1. ) && (overlap.x != 0.) ) + color *= (1.-black.x); + if ( ( floor(pos_new.y*geometry_screen.y) < geometry_screen.y-1. ) && (overlap.x != 0.) ) + color *= (1.-black.y); + +// compute fade on Left and bottom + black = pos_new; + black *= geometry_screen; + black = fract(black); + black = vec2(1.) - black; + black *= 1. + (overlap/ (geometry_screen/2.)); + black -= 1.; + black = max(black,0.); + black *= (geometry_screen / 2.) / overlap; + if ( ( floor(pos_new.x*geometry_screen.x) > 0. ) && (overlap.x != 0.) ) + color *= (1.-black.x); + if ( ( floor(pos_new.y*geometry_screen.y) > 0. ) && (overlap.x != 0.) ) + color *= (1.-black.y); + + gl_FragColor = color; +} diff --git a/examples/09_vp_calibration/temp2.JPG b/examples/09_vp_calibration/temp2.JPG new file mode 100644 index 0000000..0152c1b Binary files /dev/null and b/examples/09_vp_calibration/temp2.JPG differ diff --git a/examples/10-fast_blobtracker/10-fast_blob_tracker.pd b/examples/10-fast_blobtracker/10-fast_blob_tracker.pd new file mode 100644 index 0000000..6c2041d --- /dev/null +++ b/examples/10-fast_blobtracker/10-fast_blob_tracker.pd @@ -0,0 +1,165 @@ +#N canvas 616 283 966 610 10; +#X declare -path ../..; +#X obj 106 90 cnv 15 100 25 empty empty 1 20 12 0 14 -4034 -66577 0 +; +#X obj 106 132 cnv 15 280 60 empty empty 2 20 12 0 14 -4034 -66577 +0; +#X obj 106 217 cnv 15 360 120 empty empty 3 20 12 0 14 -4034 -66577 +0; +#X obj 106 390 cnv 15 210 60 empty empty 4 20 12 0 14 -4034 -66577 +0; +#X obj 144 94 pix_video; +#X obj 144 54 gemhead; +#X obj 282 44 declare -path ../..; +#X obj 144 284 pix_opencv_contours; +#X obj 144 404 pix_opencv_trackKnn; +#X obj 144 506 pix_texture; +#X obj 39 59 gemwin; +#X msg 39 17 create \, 1; +#X msg 46 38 destroy; +#X obj 144 528 rectangle 4 3; +#N canvas 622 298 709 722 cvblob 0; +#X obj 279 316 gemlist; +#X obj 279 296 t b a; +#X obj 291 50 gemhead 70; +#X obj 129 258 list append; +#X obj 124 170 list split 2; +#X obj 124 114 list append; +#X obj 291 73 t b a; +#X obj 158 232 t b a; +#X obj 279 506 translateXYZ; +#X msg 420 349 \$2; +#X obj 279 356 alpha 1; +#X obj 279 466 translateXYZ -0.5 -0.5 0; +#X obj 279 530 scaleXYZ 0.125 0.25 0; +#X msg 459 349 \$3; +#X msg 434 463 \$4; +#X obj 463 328 t a a; +#X obj 279 576 circle 0.5; +#X obj 279 426 color 1 0 0 0.2; +#X obj 279 336 separator; +#X msg 499 499 \$1; +#X obj 279 616 color 1 1 0 1; +#X obj 158 198 list split 6; +#X msg 227 166 \$2; +#X obj 366 622 loadbang; +#X msg 366 641 12; +#X msg 521 357 \$6; +#X obj 521 379 > 0; +#X obj 521 400 sel 1 0; +#X msg 520 421 1 0 0 0.2; +#X msg 540 441 0 1 0 0.2; +#X obj 279 596 translateXYZ 0.2 0.2 0; +#X text 348 252 here is an example on how to display blobs with Gem +; +#X obj 279 446 scaleXYZ 10.666 -8 0; +#X text 253 167 <- be careful ! the size of the cvblob matrix could +change; +#X text 335 184 please check second element to gets matrix width (number +of value per blob); +#X obj 124 136 t a a; +#X obj 187 13 inlet cvblob; +#X obj 187 35 route cvblob; +#X msg 333 26 0; +#X obj 333 6 loadbang; +#X obj 187 57 t a b; +#X msg 291 27 1, f 5; +#X obj 432 485 sqrt; +#X obj 279 677 text2d; +#X obj 141 310 print oneblob; +#X connect 0 0 18 0; +#X connect 1 0 0 0; +#X connect 1 1 15 0; +#X connect 2 0 6 0; +#X connect 3 0 21 0; +#X connect 4 1 21 0; +#X connect 5 0 35 0; +#X connect 6 0 5 0; +#X connect 6 1 0 1; +#X connect 7 0 3 0; +#X connect 7 1 1 0; +#X connect 7 1 44 0; +#X connect 8 0 12 0; +#X connect 9 0 8 1; +#X connect 10 0 17 0; +#X connect 11 0 8 0; +#X connect 12 0 16 0; +#X connect 13 0 8 2; +#X connect 14 0 42 0; +#X connect 15 0 13 0; +#X connect 15 0 9 0; +#X connect 15 1 14 0; +#X connect 15 1 19 0; +#X connect 15 1 25 0; +#X connect 16 0 30 0; +#X connect 17 0 32 0; +#X connect 18 0 10 0; +#X connect 19 0 43 0; +#X connect 20 0 43 0; +#X connect 21 0 7 0; +#X connect 21 1 3 1; +#X connect 22 0 21 1; +#X connect 23 0 24 0; +#X connect 24 0 43 1; +#X connect 25 0 26 0; +#X connect 26 0 27 0; +#X connect 27 0 28 0; +#X connect 27 1 29 0; +#X connect 28 0 17 1; +#X connect 29 0 17 1; +#X connect 30 0 20 0; +#X connect 32 0 11 0; +#X connect 35 0 4 0; +#X connect 35 1 22 0; +#X connect 36 0 37 0; +#X connect 37 0 40 0; +#X connect 38 0 2 0; +#X connect 39 0 38 0; +#X connect 40 0 5 1; +#X connect 40 1 41 0; +#X connect 41 0 2 0; +#X connect 42 0 12 1; +#X connect 42 0 12 2; +#X restore 255 429 pd cvblob; +#X obj 144 149 pix_gray; +#X msg 160 252 area \$1; +#X obj 144 170 pix_opencv_threshold; +#X obj 255 305 route count; +#X obj 261 147 nbx 5 14 -1e+37 1e+37 0 1 empty empty luminance_threshold +0 -8 0 10 -262144 -1 -1 214 256; +#X obj 160 232 nbx 5 14 -1e+37 1e+37 0 1 empty empty area_threshold +0 -8 0 10 -262144 -1 -1 100 256; +#X obj 253 229 loadbang; +#X text 519 110 This example shows how to make a simple tracking algorithm. +; +#X text 534 134 1 First take a video source (here a video source like +a webcam); +#X text 534 164 2 process it to extract features of interessed \, here +I use a very simple (and not so accurate) gray convertion and thresholding +based on luminance. This is the binarisation stage.; +#X msg 253 252 cvblobOutput 1 \, hierarchy_level 0; +#X text 534 224 3 find blob contours. Select only blob greater than +an area threshold. Also we only get the outer contour (not the inner +holes) of the shape thanks to the [hierarchy_level 0( message.; +#X text 534 284 4 the found blobs are send to [pix_opencv_trackKnn] +to sort there id according to the Knn algorithm.; +#X text 532 322 To complete this process we could add a Kalmann filter +to forseen tracking data in case of hiding or somethign else.; +#X text 515 522 Antoine Villeret - 2013; +#X connect 4 0 15 0; +#X connect 5 0 4 0; +#X connect 7 0 8 0; +#X connect 7 2 18 0; +#X connect 8 0 9 0; +#X connect 8 1 14 0; +#X connect 9 0 13 0; +#X connect 11 0 10 0; +#X connect 12 0 10 0; +#X connect 15 0 17 0; +#X connect 16 0 7 0; +#X connect 17 0 7 0; +#X connect 18 1 8 0; +#X connect 19 0 17 2; +#X connect 20 0 16 0; +#X connect 21 0 25 0; +#X connect 25 0 7 0; diff --git a/examples/11-blobtracker2/11-blobtracker2.pd b/examples/11-blobtracker2/11-blobtracker2.pd new file mode 100644 index 0000000..103744a --- /dev/null +++ b/examples/11-blobtracker2/11-blobtracker2.pd @@ -0,0 +1,235 @@ +#N canvas 1132 438 541 486 10; +#X declare -path ../.. -lib pix_opencv; +#X obj 74 -87 declare -path ../.. -lib pix_opencv; +#X obj 0 155 pix_opencv_backgroundsubtractor; +#N canvas 780 394 504 512 src 0; +#X obj 302 -79 gemhead; +#X obj 314 -52 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 359 34 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 353 18 5 0 10000 1 frame# - -, f 5; +#X obj 314 -23 openpanel; +#X obj 302 36 pix_film; +#N canvas 1 250 299 199 vswitch 0; +#X obj 36 128 outlet; +#X obj 36 26 inlet; +#X obj 130 26 inlet; +#X obj 175 27 inlet; +#X obj 81 61 == 0; +#X obj 36 83 spigot 1; +#X obj 130 84 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 62 118 pd vswitch; +#X obj 163 -188 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 +1 1; +#X obj 62 45 pix_video; +#X obj 62 -79 gemhead; +#X text 180 -190 switch source (camera / film); +#X msg 314 -3 open \$1 \, auto 1; +#X obj 173 -253 loadbang; +#X msg 173 -230 0; +#X obj 169 -123 == 0; +#X obj 130 -284 inlet; +#X text 168 -282 src selection : 0 = camera \, 1 = file; +#X obj 345 -113 sel 1; +#X obj 62 140 outlet; +#X obj 169 -144 t a a a a; +#X connect 0 0 5 0; +#X connect 1 0 4 0; +#X connect 2 0 3 0; +#X connect 3 0 5 1; +#X connect 4 0 11 0; +#X connect 5 0 6 1; +#X connect 5 2 2 0; +#X connect 6 0 18 0; +#X connect 7 0 19 0; +#X connect 8 0 6 0; +#X connect 9 0 8 0; +#X connect 11 0 5 0; +#X connect 12 0 13 0; +#X connect 13 0 7 0; +#X connect 14 0 9 0; +#X connect 15 0 7 0; +#X connect 17 0 1 0; +#X connect 19 0 14 0; +#X connect 19 1 0 0; +#X connect 19 2 6 2; +#X connect 19 3 17 0; +#X restore 0 26 pd src; +#X obj 0 -11 vradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144 -1 +-1 1; +#N canvas 1 120 450 300 gray/rgba 0; +#X obj 62 36 pix_grey; +#X obj 121 36 pix_rgba; +#X obj 62 11 spigot 1; +#X obj 107 -34 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X text 125 -37 switch color mode ( grey / rgba ); +#X obj 107 -11 == 0; +#X obj 121 11 spigot 0; +#X obj 62 98 t a; +#X obj 121 61 alpha; +#X obj 62 -92 inlet; +#X obj 62 120 outlet; +#X obj 107 -60 inlet; +#X connect 0 0 7 0; +#X connect 1 0 8 0; +#X connect 2 0 0 0; +#X connect 3 0 5 0; +#X connect 3 0 6 1; +#X connect 5 0 2 1; +#X connect 6 0 1 0; +#X connect 7 0 10 0; +#X connect 8 0 7 0; +#X connect 9 0 2 0; +#X connect 9 0 6 0; +#X connect 11 0 3 0; +#X restore 0 85 pd gray/rgba; +#X obj 69 49 vradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144 -1 +-1 1; +#X text 87 49 gray; +#X text 87 63 RGBA; +#X text 16 -12 camera; +#X text 16 3 video file; +#X obj 0 207 pix_opencv_contours; +#X obj 0 259 pix_opencv_trackKnn; +#X obj 0 281 pix_texture; +#X obj 0 303 rectangle 5.3333 4; +#X obj 238 -47 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 3 81 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 342 184 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X msg 161 189 dimen 640 560 \, create \, 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 9 0; +#X connect 2 1 4 0; +#X connect 2 1 7 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 10 0; +#X connect 9 2 8 0; +#X connect 10 0 6 0; +#X restore 248 -1 pd gemwin; +#X msg 248 -21 destroy; +#X text 246 -41 Create window and render; +#N canvas 552 204 596 300 draw_contour_gemvertexbuffer 1; +#X obj 175 173 loadbang; +#X obj 135 65 translateXYZ -0.5 -0.5 0; +#X obj 135 42 scaleXYZ 10.6666 -8 1; +#X obj 135 -9 gemhead 1000; +#X obj 135 17 alpha 0; +#X msg 162 130 posX drawX \, posY drawY \, colorG drawZ \, colorA drawZ +; +#X msg 175 193 draw line; +#X obj 135 245 gemvertexbuffer; +#X obj 186 97 inlet; +#X obj 347 41 r point_number; +#X msg 269 201 resize \$1; +#X obj 310 92 f; +#X obj 135 87 t a b b; +#X obj 298 166 max 3; +#X connect 0 0 6 0; +#X connect 1 0 12 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 2 0; +#X connect 5 0 7 0; +#X connect 6 0 7 0; +#X connect 8 0 5 0; +#X connect 9 0 11 1; +#X connect 10 0 7 0; +#X connect 11 0 13 0; +#X connect 12 0 7 0; +#X connect 12 1 5 0; +#X connect 12 2 11 0; +#X connect 13 0 10 0; +#X restore 321 81 pd draw_contour_gemvertexbuffer; +#X obj 321 60 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 337 61 draw with gemvertexbuffer; +#N canvas 1 90 450 300 parameters 0; +#X obj 45 25 loadbang; +#X msg 45 47 contours 1 \, hierarchy_level 0 \, cvblobOutput 1 \, settab +drawX drawY drawZ; +#X obj 45 82 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 29 175 pd parameters; +#X obj 161 232 route count; +#X obj 161 275 s point_number; +#X msg 161 254 \$2; +#X obj 321 102 table drawX 1000; +#X obj 321 122 table drawY 1000; +#X obj 321 142 table drawZ 1000; +#N canvas 363 684 450 300 parameters 1; +#X obj 45 200 outlet; +#X obj 45 -10 inlet; +#X obj 72 55 f; +#X obj 96 56 + 1; +#X obj 72 77 sel 50; +#X obj 45 12 t a b; +#X obj 72 35 spigot 1; +#X obj 45 148 spigot; +#X obj 72 99 t b b; +#X msg 72 121 1, f 4; +#X msg 151 127 0; +#X msg 69 178 algo BackgroundSubtractor.GMG; +#X connect 1 0 5 0; +#X connect 2 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 2 1; +#X connect 4 0 8 0; +#X connect 5 0 7 0; +#X connect 5 1 6 0; +#X connect 6 0 2 0; +#X connect 7 0 0 0; +#X connect 8 0 10 0; +#X connect 8 0 9 0; +#X connect 8 1 11 0; +#X connect 9 0 7 1; +#X connect 10 0 6 1; +#X connect 11 0 0 0; +#X restore 0 124 pd parameters; +#X obj 178 192 print; +#X connect 1 0 10 0; +#X connect 1 1 29 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 4 0 28 0; +#X connect 5 0 4 1; +#X connect 10 0 11 0; +#X connect 10 2 22 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 15 0 16 0; +#X connect 16 0 15 0; +#X connect 19 0 18 0; +#X connect 21 0 10 0; +#X connect 22 0 24 0; +#X connect 24 0 23 0; +#X connect 28 0 1 0; diff --git a/examples/Makefile.am b/examples/Makefile.am new file mode 100644 index 0000000..4d3e6a6 --- /dev/null +++ b/examples/Makefile.am @@ -0,0 +1,39 @@ +AUTOMAKE_OPTIONS = foreign + +pix_opencvexamplesdir=$(pkglibdir)/examples + +nobase_dist_pix_opencvexamples_DATA = \ +00_opencv_haarcascade+pix_image/00_opencv_haarcascade+pix_image.pd \ +00_opencv_haarcascade+pix_image/bocadillo.gif \ +00_opencv_haarcascade+pix_image/haarcascade_frontalface_alt.xml \ +01_boundingrect+pmpd_ambient/01_boundingrect+pmpd_ambient.pd \ +01_boundingrect+pmpd_ambient/pd_link.pd \ +01_boundingrect+pmpd_ambient/pd_mass.pd \ +02_opencv_motempl+particle_system/02_opencv_motempl+particle_system.pd \ +03_opencv_hist_compare+text_trigger/03_opencv_hist_compare+text_trigger.pd \ +03_opencv_hist_compare+text_trigger/vera.ttf \ +04_opencv_colorfilt+video_projector/04_opencv_colorfilt+video_projector.pd \ +04_opencv_colorfilt+video_projector/anim-1.mov \ +04_opencv_colorfilt+video_projector/tmp.pd \ +05_perspective_correction/05_perspective_correction.pd \ +05_perspective_correction/pattern.png \ +05_perspective_correction/subprocess.pd \ +06_GPU_opticalflow/06_GPU_opticalflow.pd \ +06_GPU_opticalflow/of.frag \ +07_shape_extractor/07_shape_extractor.pd \ +08_GPU_morphology/08_GPU_morphology.pd \ +08_GPU_morphology/dilate.frag \ +08_GPU_morphology/erode.frag \ +08_GPU_morphology/glsl_morph.pd \ +09_vp_calibration/01.flat_projection-help.pd \ +09_vp_calibration/09_vp_calibration_gpu.pd \ +09_vp_calibration/09_vp_calibration.pd \ +09_vp_calibration/flat_projection.pd \ +09_vp_calibration/pattern.png \ +09_vp_calibration/soft_edge.frag \ +09_vp_calibration/subprocess.pd \ +09_vp_calibration/temp2.JPG \ +10-fast_blobtracker/10-fast_blob_tracker.pd \ +11-blobtracker2/11-blobtracker2.pd \ +dessin.tif \ +test-contours.bmp diff --git a/examples/test-contours.bmp b/examples/test-contours.bmp new file mode 100644 index 0000000..fbef23f Binary files /dev/null and b/examples/test-contours.bmp differ diff --git a/help/Makefile.am b/help/Makefile.am new file mode 100644 index 0000000..88ae819 --- /dev/null +++ b/help/Makefile.am @@ -0,0 +1,47 @@ +AUTOMAKE_OPTIONS = foreign + +SUFFIXES = .pd + +pix_opencvhelpdir=$(pkglibdir) + +dist_pix_opencvhelp_DATA = \ + pix_opencv_athreshold-help.pd \ + pix_opencv_backgroundsubtractor-help.pd \ + pix_opencv_bgstats-help.pd \ + pix_opencv_bgsubstract-help.pd \ + pix_opencv_blobtrack-help.pd \ + pix_opencv_calibration-help.pd \ + pix_opencv_camshift-help.pd \ + pix_opencv_clahe-help.pd \ + pix_opencv_colorfilt-help.pd \ + pix_opencv_contours_boundingrect-help.pd \ + pix_opencv_contours_convexhull-help.pd \ + pix_opencv_contours_convexity-help.pd \ + pix_opencv_contours-help.pd \ + pix_opencv_dft-help.pd \ + pix_opencv_distrans-help.pd \ + pix_opencv_edge-help.pd \ + pix_opencv_facetracker-help.pd \ + pix_opencv_findchessboardcorners-help.pd \ + pix_opencv_floodfill-help.pd \ + pix_opencv_haarcascade-help.pd \ + pix_opencv_hist_compare-help.pd \ + pix_opencv_hough_circles-help.pd \ + pix_opencv_hough_lines-help.pd \ + pix_opencv_hu_compare-help.pd \ + pix_opencv_hu_moments-help.pd \ + pix_opencv_knear-help.pd \ + pix_opencv_laplace-help.pd \ + pix_opencv_lk-help.pd \ + pix_opencv_matchshape-help.pd \ + pix_opencv_morphology-help.pd \ + pix_opencv_motempl-help.pd \ + pix_opencv_of_bm-help.pd \ + pix_opencv_of_hs-help.pd \ + pix_opencv_of_lk-help.pd \ + pix_opencv_opticalflow-help.pd \ + pix_opencv_pgh_compare-help.pd \ + pix_opencv_surf-help.pd \ + pix_opencv_threshold-help.pd \ + pix_opencv_trackKnn-help.pd \ + pix_opencv_warpperspective-help.pd diff --git a/help/model b/help/model new file mode 120000 index 0000000..bce1528 --- /dev/null +++ b/help/model @@ -0,0 +1 @@ +../model/ \ No newline at end of file diff --git a/help/pix_opencv_athreshold-help.pd b/help/pix_opencv_athreshold-help.pd new file mode 100644 index 0000000..61afeba --- /dev/null +++ b/help/pix_opencv_athreshold-help.pd @@ -0,0 +1,188 @@ +#N canvas 67 259 976 687 10; +#X obj -362 59 cnv 15 430 470 empty empty empty 20 12 0 14 -233017 +-66577 0; +#X obj -362 13 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text -353 17 Arguments:; +#X obj -363 -83 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 +-66577 0; +#X text -332 37 none; +#X obj 74 -140 cnv 15 510 670 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 250 -136 gemhead; +#X obj 234 459 pix_texture; +#X obj 234 478 square 2; +#X obj 356 452 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 366 496 pd gemwin; +#X msg 366 478 destroy; +#X obj 79 463 pix_texture; +#X obj 79 483 square 2; +#X obj 234 171 separator; +#X obj 262 -109 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 319 66 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 301 31 5 0 10000 1 frame# - -; +#X obj 262 -80 openpanel; +#X msg 262 -60 open \$1; +#X obj 250 49 pix_film; +#X msg 268 -17 auto \$1; +#X obj 268 -35 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X obj 227 217 cnv 15 350 230 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X text 364 458 Create window and render; +#X obj 234 417 pix_opencv_athreshold; +#X floatatom 393 388 5 0 0 0 - - -; +#X msg 288 326 mode \$1; +#X floatatom 390 360 5 0 0 0 - - -; +#X text 426 388 ( default 3 ); +#X msg 264 240 method \$1; +#X msg 286 287 dim \$1; +#X floatatom 337 290 5 0 0 0 - - -; +#X text -344 367 written by Yves Degoyon ( ydegoyon@gmail.com ); +#X msg 363 -34 colorspace RGBA; +#X msg 378 -16 colorspace RGB; +#X msg 388 4 colorspace Grey; +#X obj 363 -62 loadbang; +#X obj 234 142 pix_separator; +#X obj 79 174 separator; +#X obj 79 145 pix_separator; +#X obj 79 199 translateXYZ -2 0 0; +#X obj 234 196 translateXYZ 2 0 0; +#N canvas 115 397 321 254 vswitch 0; +#X obj -109 160 outlet; +#X obj -109 31 inlet; +#X obj -5 31 inlet; +#X obj 40 31 inlet; +#X obj -109 88 spigot 1; +#X obj -5 90 spigot 0; +#X obj -64 67 == 0; +#X connect 1 0 4 0; +#X connect 2 0 5 0; +#X connect 3 0 5 1; +#X connect 3 0 6 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 4 1; +#X restore 79 84 pd vswitch; +#X obj 147 85 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 79 52 pix_video; +#X obj 79 -136 gemhead; +#X msg 118 -23 device 0; +#X msg 127 8 driver 1; +#X msg 104 -77 dialog; +#X msg 109 -47 device /dev/dv1394-0; +#X text 373 289 value to correct the theshold; +#X text 390 346 MaxValue (default 255); +#X text 367 325 inverse mode ( default 0 ); +#X text -356 -79 Thresholding is used to segment an image by setting +all pixels whose intensity values are above a threshold to a foreground +value and all the remaining pixels to a background value.; +#X text -354 66 Whereas the conventional thresholding operator uses +a global threshold for all pixels \, adaptive thresholding changes +the threshold dynamically over the image. This more sophisticated version +of thresholding can accommodate changing lighting conditions in the +image \, e.g. those occurring as a result of a strong illumination +gradient or shadows.; +#X text -325 205 - zero otherwise; +#X text -351 168 Adaptive thresholding sets a pixel dst(x \, y) value +to:; +#X text -325 190 - MaxValue (see MaxValue inlet) if src(x \, y) > T(x +\, y); +#X text -347 238 Where T(x \, y) is a threshold calculated individually +for each pixel. For the method ADAPTIVE_THRESH_MEAN_C the threshold +value is the mean of a blockSize x blockSize (see blocksize inlet) +neighborhood of (x \, y) \, minus dim parameter value (see dim message). +; +#X text -347 314 For the method ADAPTIVE_THRESH_GAUSSIAN_C the threshold +value is the weighted sum (i.e. cross-correlation with a Gaussian window) +of a blockSize x blockSize neighborhood of (x \, y) \, minus dim parameter +value.; +#X text 391 374 blockSize; +#X obj 338 241 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 256 218 Thresholding method ( default 0 ); +#X obj 347 327 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 356 235 0 = CV_ADAPTIVE_THRESH_MEAN_C; +#X text 356 245 1 = CV_ADAPTIVE_THRESH_GAUSSIAN_C; +#X obj 79 110 pix_rgba; +#X text -356 -103 pix_opencv_athreshold :; +#X connect 6 0 20 0; +#X connect 7 0 8 0; +#X connect 10 0 11 0; +#X connect 11 0 10 0; +#X connect 12 0 13 0; +#X connect 14 0 42 0; +#X connect 15 0 18 0; +#X connect 16 0 17 0; +#X connect 17 0 20 1; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 43 1; +#X connect 20 2 16 0; +#X connect 21 0 20 0; +#X connect 22 0 21 0; +#X connect 25 0 7 0; +#X connect 26 0 25 2; +#X connect 27 0 25 0; +#X connect 28 0 25 1; +#X connect 30 0 25 0; +#X connect 31 0 25 0; +#X connect 32 0 31 0; +#X connect 34 0 20 0; +#X connect 34 0 45 0; +#X connect 35 0 20 0; +#X connect 36 0 20 0; +#X connect 37 0 34 0; +#X connect 37 0 22 0; +#X connect 38 0 14 0; +#X connect 39 0 41 0; +#X connect 40 0 39 0; +#X connect 41 0 12 0; +#X connect 42 0 25 0; +#X connect 43 0 67 0; +#X connect 44 0 43 2; +#X connect 45 0 43 0; +#X connect 46 0 45 0; +#X connect 47 0 45 0; +#X connect 48 0 45 0; +#X connect 49 0 45 0; +#X connect 50 0 45 0; +#X connect 62 0 30 0; +#X connect 64 0 27 0; +#X connect 67 0 40 0; +#X connect 67 0 38 0; diff --git a/help/pix_opencv_backgroundsubtractor-help.pd b/help/pix_opencv_backgroundsubtractor-help.pd new file mode 100644 index 0000000..c9c88b5 --- /dev/null +++ b/help/pix_opencv_backgroundsubtractor-help.pd @@ -0,0 +1,455 @@ +#N canvas 918 248 963 626 10; +#X obj 20 43 cnv 15 430 380 empty empty empty 20 12 0 14 -228856 -66577 +0; +#X obj 20 -3 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X obj 19 -99 cnv 15 430 90 empty empty empty 20 12 0 14 -228856 -66577 +0; +#X text 24 -135 Class: pix_opencv; +#X obj 455 -176 cnv 15 500 600 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 488 261 pix_texture; +#X obj 665 230 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 3 81 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 342 184 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X msg 161 189 dimen 640 560 \, create \, 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 9 0; +#X connect 2 1 4 0; +#X connect 2 1 7 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 10 0; +#X connect 9 2 8 0; +#X connect 10 0 6 0; +#X restore 675 276 pd gemwin; +#X msg 675 256 destroy; +#X text 673 236 Create window and render; +#X obj 485 -34 cnv 15 400 260 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 488 282 rectangle 4 3; +#X text 40 15 ; +#X text 29 1 Arguments: (optional); +#X text 62 343 see also :; +#X obj 104 367 pix_opencv_bgstats; +#X obj 104 387 pix_threshold; +#X msg 511 18 algo \$1; +#N canvas 320 153 576 492 parameters 1; +#X obj 21 21 cnv 15 400 80 empty empty readProperties 20 12 0 14 -233017 +-66577 0; +#X obj 29 47 hradio 15 1 0 4 \$0-propreadId \$0-propreadId empty 0 +-8 0 10 -262144 -1 -1 0; +#X obj 30 70 cnv 15 260 20 empty \$0-propreadName 10 9 0 14 +-203904 -66577 0; +#N canvas 1296 443 597 537 PropertyLogic 0; +#N canvas 570 124 774 460 id2property 0; +#X obj 353 106 r \$0-info; +#X obj 405 176 t b f; +#X obj 353 174 list; +#X obj 353 219 list prepend; +#X msg 353 196 \$1; +#X obj 353 239 t l l; +#X obj 95 197 list prepend; +#X obj 95 69 inlet readID; +#X obj 225 70 inlet writeID; +#X obj 180 378 outlet readName; +#X obj 310 356 outlet writeName; +#X obj 95 176 t b f; +#X obj 95 219 list split; +#X obj 180 316 symbol; +#X msg 180 291 symbol \$1; +#X obj 225 197 list prepend; +#X obj 225 176 t b f; +#X obj 225 219 list split; +#X obj 310 316 symbol; +#X msg 310 291 symbol \$1; +#X obj 95 91 route float; +#X obj 225 92 route float; +#X msg 432 333 number \$1; +#X obj 432 353 s \$0-propreadId; +#X obj 420 376 s \$0-propwriteId; +#X obj 460 275 loadbang; +#X obj 123 258 route bang; +#X obj 253 258 route bang; +#X obj 353 152 route paramList params; +#X msg 460 296 1; +#X connect 0 0 28 0; +#X connect 1 0 3 1; +#X connect 1 1 22 0; +#X connect 2 0 4 0; +#X connect 3 0 5 0; +#X connect 4 0 3 0; +#X connect 5 0 6 1; +#X connect 5 0 15 1; +#X connect 5 1 3 1; +#X connect 6 0 12 0; +#X connect 7 0 20 0; +#X connect 8 0 21 0; +#X connect 11 0 6 0; +#X connect 11 1 12 1; +#X connect 12 1 26 0; +#X connect 13 0 9 0; +#X connect 14 0 13 0; +#X connect 15 0 17 0; +#X connect 16 0 15 0; +#X connect 16 1 17 1; +#X connect 17 1 27 0; +#X connect 18 0 10 0; +#X connect 19 0 18 0; +#X connect 20 0 11 0; +#X connect 21 0 16 0; +#X connect 22 0 23 0; +#X connect 22 0 24 0; +#X connect 25 0 29 0; +#X connect 26 1 14 0; +#X connect 27 1 19 0; +#X connect 28 0 2 0; +#X connect 28 1 1 0; +#X connect 29 0 22 0; +#X restore 188 192 pd id2property; +#X obj 350 429 list trim; +#X obj 350 451 t b a; +#N canvas 645 504 450 300 getProp 0; +#X obj 44 177 s \$0-propreadName; +#X msg 44 156 label \$1; +#X msg 165 156 get \$1; +#X obj 44 81 inlet; +#X obj 165 178 outlet; +#X obj 290 57 r \$0-info; +#N canvas 3 50 450 300 sroute 0; +#X obj 73 12 inlet; +#X obj 312 9 inlet; +#X obj 73 113 outlet; +#X obj 73 34 list split 1; +#X obj 73 56 select s; +#X obj 73 78 list prepend; +#X connect 0 0 3 0; +#X connect 1 0 4 1; +#X connect 3 0 4 0; +#X connect 3 1 5 1; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X restore 290 113 pd sroute; +#X obj 44 123 t s s s; +#X msg 290 226 label \$1; +#X obj 290 247 s \$0-propreadValue; +#X obj 290 135 route float; +#X obj 290 157 makefilename %g; +#X obj 106 29 loadbang; +#X obj 106 51 t b b; +#X msg 106 73 symbol ; +#X msg 196 74 symbol --; +#X obj 353 181 symbol; +#X obj 290 79 route param; +#X connect 1 0 0 0; +#X connect 2 0 4 0; +#X connect 3 0 7 0; +#X connect 5 0 17 0; +#X connect 6 0 10 0; +#X connect 7 0 1 0; +#X connect 7 1 2 0; +#X connect 7 2 6 1; +#X connect 8 0 9 0; +#X connect 10 0 11 0; +#X connect 10 1 16 0; +#X connect 11 0 8 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 13 1 15 0; +#X connect 14 0 1 0; +#X connect 15 0 8 0; +#X connect 16 0 8 0; +#X connect 17 0 6 0; +#X restore 319 315 pd getProp; +#X obj 172 158 r \$0-propreadId; +#N canvas 568 213 450 467 setProp 0; +#X msg 44 156 label \$1; +#X msg 165 156 get \$1; +#X obj 44 31 inlet; +#X obj 218 426 outlet; +#X obj 290 57 r \$0-info; +#N canvas 4 50 450 300 sroute 0; +#X obj 73 12 inlet; +#X obj 312 9 inlet; +#X obj 73 113 outlet; +#X obj 73 34 list split 1; +#X obj 73 56 select s; +#X obj 73 78 list prepend; +#X connect 0 0 3 0; +#X connect 1 0 4 1; +#X connect 3 0 4 0; +#X connect 3 1 5 1; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X restore 290 113 pd sroute; +#X obj 290 135 route float; +#X obj 44 177 s \$0-propwriteName; +#X obj 290 247 s \$0-propwriteValue; +#X msg 290 226 set \$1; +#X obj 50 276 r \$0-propwriteValue; +#X obj 50 298 route float; +#X obj 50 320 pack 0 s; +#X msg 50 342 set \$2 \$1; +#X obj 44 73 t s s s s; +#X obj 127 27 loadbang; +#X obj 127 49 t b b; +#X msg 127 71 symbol ; +#X obj 290 79 route param; +#X connect 0 0 7 0; +#X connect 1 0 3 0; +#X connect 2 0 14 0; +#X connect 4 0 18 0; +#X connect 5 0 6 0; +#X connect 6 0 9 0; +#X connect 9 0 8 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 13 0 3 0; +#X connect 14 0 0 0; +#X connect 14 1 1 0; +#X connect 14 2 5 1; +#X connect 14 3 12 1; +#X connect 15 0 16 0; +#X connect 16 0 17 0; +#X connect 17 0 0 0; +#X connect 18 0 5 0; +#X restore 199 315 pd setProp; +#X obj 199 426 list trim; +#X obj 199 448 t b a; +#X obj 199 339 route get set; +#X obj 199 477 s \$0-propset; +#X obj 350 480 s \$0-propget; +#X obj 54 38 inlet; +#X obj 54 66 s \$0-ctl; +#X obj 282 158 r \$0-propwriteId; +#X obj 199 407 list prepend set; +#X obj 350 407 list prepend set; +#X obj 349 361 list prepend setParam; +#X obj 199 360 list prepend getParam; +#X connect 0 0 3 0; +#X connect 0 1 5 0; +#X connect 1 0 2 0; +#X connect 2 0 10 0; +#X connect 2 1 10 0; +#X connect 3 0 8 0; +#X connect 4 0 0 0; +#X connect 5 0 8 0; +#X connect 6 0 7 0; +#X connect 7 0 9 0; +#X connect 7 1 9 0; +#X connect 8 0 17 0; +#X connect 8 1 16 0; +#X connect 11 0 12 0; +#X connect 13 0 0 1; +#X connect 14 0 6 0; +#X connect 15 0 1 0; +#X connect 16 0 14 0; +#X connect 17 0 15 0; +#X restore 31 446 pd PropertyLogic; +#X obj 300 70 cnv 15 100 20 empty \$0-propreadValue -- 10 9 0 14 -261234 +-66577 0; +#X obj 21 111 cnv 15 400 80 empty empty writeProperties 20 12 0 14 +-233017 -66577 0; +#X obj 29 137 hradio 15 1 0 4 \$0-propwriteId \$0-propwriteId empty +0 -8 0 10 -262144 -1 -1 0; +#X obj 30 160 cnv 15 260 20 empty \$0-propwriteName 10 9 0 14 +-203904 -66577 0; +#X obj 301 160 nbx 5 20 -1e+37 1e+37 0 0 \$0-propwriteValue \$0-propwriteValue +empty 0 -8 0 14 -204786 -1 -1 0 256; +#X msg 73 412 setParam noiseSigma 137; +#X obj 56 314 r \$0-propget; +#X obj 73 392 r \$0-propset; +#X msg 77 360 get Hue Saturation; +#X text 198 360 you can query several properties at once; +#X text 62 257 NOTE that propertynames are always single symbols that +might contain spaces (and other weird characters); +#X text 98 203 INIT: query names of all available properties; +#X msg 31 203 enumParams; +#X msg 56 335 getParam noiseSigma; +#X text 59 224 this will return a list of parameters through the "info" +outlet of [pix_opencv_backgroundsubtractor].; +#X text 135 315 query a (readable) property via a message "getParam +", f 65; +#X text 150 392 set a (writable) property via a message "setParam +", f 68; +#X msg 45 292 paramHelp; +#X text 108 291 print parameters help in console; +#X connect 9 0 3 0; +#X connect 10 0 17 0; +#X connect 11 0 9 0; +#X connect 12 0 3 0; +#X connect 16 0 3 0; +#X connect 17 0 3 0; +#X connect 21 0 3 0; +#X restore 745 76 pd parameters; +#X obj 521 109 r \$0-ctl; +#X obj 671 201 s \$0-info; +#N canvas 782 389 504 512 src 0; +#X obj 302 -79 gemhead; +#X obj 314 -52 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 359 34 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 353 18 5 0 10000 1 frame# - -, f 5; +#X obj 314 -23 openpanel; +#X obj 302 36 pix_film; +#N canvas 1 250 299 199 vswitch 0; +#X obj 36 128 outlet; +#X obj 36 26 inlet; +#X obj 130 26 inlet; +#X obj 175 27 inlet; +#X obj 81 61 == 0; +#X obj 36 83 spigot 1; +#X obj 130 84 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 62 118 pd vswitch; +#X obj 163 -188 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 +0 1; +#X obj 62 45 pix_video; +#X obj 62 -79 gemhead; +#X text 180 -190 switch source (camera / film); +#X msg 314 -3 open \$1 \, auto 1; +#X obj 173 -253 loadbang; +#X msg 173 -230 0; +#X obj 169 -123 == 0; +#X obj 130 -284 inlet; +#X text 168 -282 src selection : 0 = camera \, 1 = file; +#X obj 345 -113 sel 1; +#X obj 62 140 outlet; +#X obj 169 -144 t a a a a; +#X connect 0 0 5 0; +#X connect 1 0 4 0; +#X connect 2 0 3 0; +#X connect 3 0 5 1; +#X connect 4 0 11 0; +#X connect 5 0 6 1; +#X connect 5 2 2 0; +#X connect 6 0 18 0; +#X connect 7 0 19 0; +#X connect 8 0 6 0; +#X connect 9 0 8 0; +#X connect 11 0 5 0; +#X connect 12 0 13 0; +#X connect 13 0 7 0; +#X connect 14 0 9 0; +#X connect 15 0 7 0; +#X connect 17 0 1 0; +#X connect 19 0 14 0; +#X connect 19 1 0 0; +#X connect 19 2 6 2; +#X connect 19 3 17 0; +#X restore 488 -128 pd src; +#X obj 488 -165 vradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144 +-1 -1 0; +#N canvas 1 110 450 300 gray/rgba 0; +#X obj 62 36 pix_grey; +#X obj 121 36 pix_rgba; +#X obj 62 11 spigot 1; +#X obj 107 -34 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 125 -37 switch color mode ( grey / rgba ); +#X obj 107 -11 == 0; +#X obj 121 11 spigot 0; +#X obj 62 98 t a; +#X obj 121 61 alpha; +#X obj 62 -92 inlet; +#X obj 62 120 outlet; +#X obj 107 -60 inlet; +#X connect 0 0 7 0; +#X connect 1 0 8 0; +#X connect 2 0 0 0; +#X connect 3 0 5 0; +#X connect 3 0 6 1; +#X connect 5 0 2 1; +#X connect 6 0 1 0; +#X connect 7 0 10 0; +#X connect 8 0 7 0; +#X connect 9 0 2 0; +#X connect 9 0 6 0; +#X connect 11 0 3 0; +#X restore 488 -69 pd gray/rgba; +#X obj 557 -105 vradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144 +-1 -1 0; +#X text 575 -105 gray; +#X text 575 -91 RGBA; +#X text 504 -166 camera; +#X text 504 -151 video file; +#X msg 504 -25 algo; +#X obj 671 161 t a a; +#X obj 698 181 print info; +#X obj 511 0 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1 +-1 1; +#X text 561 18 choose algo by id; +#X msg 518 43 algo BackgroundSubtractor.MOG; +#X text 700 43 choose algo by name; +#X obj 488 136 pix_opencv_backgroundsubtractor; +#X msg 521 85 cpuMode \$1; +#X obj 521 65 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 25 -156 Synopsis: [pix_opencv_backgroundsubtractor]; +#X text 26 -90 Description: pix_opencv_backgroundsubtractor extracts +foreground using different algorithms; +#X text 541 -24 report available algorithm on the right outlet; +#X text 32 54 input : message : algo : without arg \, reports the available +algorithms; +#X text 32 84 input : message : algo choose an algo by id; +#X text 32 98 input : message : algo choose an algo by name +; +#X text 32 118 input : message : cpuMode force CPU mode; +#X text 27 -56 It uses OpenCL when it's available.; +#X text 32 138 input : message : enumParams : query parameters name +and value of available; +#X text 40 258 for more about the GMG algorithm please refer to : A. +Godbehere \, A. Matsukawa \, K. Goldberg \, "Visual Tracking of Human +Visitors under Variable-Lighting Conditions for a Responsiven Audio +Art Installation" \, American Control Conference \, 2012 \,; +#X text 32 168 input : message : paramHelp : print parameters help +in the Pd's console (not filled for all parameters); +#X text 32 198 input : message : getParam : get parameter +value; +#X text 32 213 input : message : setParam : set paramter +value; +#X connect 5 0 11 0; +#X connect 7 0 8 0; +#X connect 8 0 7 0; +#X connect 17 0 36 0; +#X connect 19 0 36 0; +#X connect 21 0 23 0; +#X connect 22 0 21 0; +#X connect 23 0 36 0; +#X connect 24 0 23 1; +#X connect 29 0 36 0; +#X connect 30 0 20 0; +#X connect 30 1 31 0; +#X connect 32 0 17 0; +#X connect 34 0 36 0; +#X connect 36 0 5 0; +#X connect 36 1 30 0; +#X connect 37 0 36 0; +#X connect 38 0 37 0; diff --git a/help/pix_opencv_bgstats-help.pd b/help/pix_opencv_bgstats-help.pd new file mode 100644 index 0000000..9413df2 --- /dev/null +++ b/help/pix_opencv_bgstats-help.pd @@ -0,0 +1,150 @@ +#N canvas 94 527 960 504 10; +#X obj -7 39 cnv 15 430 270 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj -7 -7 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 2 -3 Arguments:; +#X obj -8 -103 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text -3 -148 Class: pix_opencv; +#X text 23 17 none; +#X obj 431 -180 cnv 15 510 490 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 591 232 pix_texture; +#X obj 591 250 square 2; +#X obj 714 229 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 192 276 gemwin; +#X msg 191 223 create \, 1; +#X msg 267 224 destroy; +#X msg 313 196 frame 25; +#X obj 194 186 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 726 275 pd gemwin; +#X msg 726 251 create; +#X text 722 231 Create window and render; +#X obj 440 231 pix_texture; +#X obj 440 249 square 2; +#X obj 585 173 cnv 15 200 50 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 591 203 pix_opencv_bgstats; +#X text 5 -90 pix_opencv_bgstats : background and foreground extraction +using a statitical method.; +#X obj 677 -168 gemhead; +#X obj 591 127 separator; +#X obj 689 -141 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 746 34 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 728 -1 5 0 10000 1 frame# - -; +#X obj 689 -112 openpanel; +#X msg 689 -92 open \$1; +#X obj 677 17 pix_film; +#X msg 695 -49 auto \$1; +#X obj 695 -67 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X msg 790 -66 colorspace RGBA; +#X msg 801 -46 colorspace RGB; +#X msg 810 -26 colorspace Grey; +#X obj 790 -94 loadbang; +#X obj 591 108 pix_separator; +#X obj 440 130 separator; +#X obj 440 111 pix_separator; +#X obj 440 150 translateXYZ -2 0 0; +#X obj 591 147 translateXYZ 2 0 0; +#N canvas 3 83 450 300 vswitch 0; +#X obj 36 140 outlet; +#X obj 36 26 inlet; +#X obj 130 25 inlet; +#X obj 175 25 inlet; +#X obj 36 103 spigot 1; +#X obj 130 104 spigot 0; +#X obj 81 78 == 0; +#X connect 1 0 4 0; +#X connect 2 0 5 0; +#X connect 3 0 6 0; +#X connect 3 0 5 1; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 4 1; +#X restore 440 59 pd vswitch; +#X obj 508 59 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 440 15 pix_video; +#X obj 440 -169 gemhead; +#X msg 479 -60 device 0; +#X msg 488 -29 driver 1; +#X msg 465 -114 dialog; +#X msg 470 -84 device /dev/dv1394-0; +#X obj 440 38 pix_resize 160 120; +#X text 6 51 Objects disappear from the background after a certain +amount of time of presence \, they are then considered as background. +; +#X msg 609 179 reset; +#X text 655 180 reset the background; +#X obj 440 83 pix_rgba; +#X text 6 116 written by Yves Degoyon ( ydegoyon.gmail.com ); +#X text -2 -164 Synopsis: [pix_opencv_bgstats]; +#X connect 7 0 8 0; +#X connect 10 0 11 0; +#X connect 11 0 10 0; +#X connect 13 0 14 0; +#X connect 16 0 7 0; +#X connect 18 0 25 0; +#X connect 19 0 36 0; +#X connect 20 0 23 0; +#X connect 21 0 22 0; +#X connect 22 0 25 1; +#X connect 23 0 24 0; +#X connect 24 0 25 0; +#X connect 25 0 37 1; +#X connect 25 2 21 0; +#X connect 26 0 25 0; +#X connect 27 0 26 0; +#X connect 28 0 25 0; +#X connect 28 0 39 0; +#X connect 29 0 25 0; +#X connect 30 0 25 0; +#X connect 31 0 28 0; +#X connect 31 0 27 0; +#X connect 32 0 19 0; +#X connect 33 0 35 0; +#X connect 34 0 33 0; +#X connect 35 0 13 0; +#X connect 36 0 16 0; +#X connect 37 0 49 0; +#X connect 38 0 37 2; +#X connect 39 0 45 0; +#X connect 40 0 39 0; +#X connect 41 0 39 0; +#X connect 42 0 39 0; +#X connect 43 0 39 0; +#X connect 44 0 39 0; +#X connect 45 0 37 0; +#X connect 47 0 16 0; +#X connect 49 0 34 0; +#X connect 49 0 32 0; diff --git a/help/pix_opencv_bgsubstract-help.pd b/help/pix_opencv_bgsubstract-help.pd new file mode 100644 index 0000000..fef54b4 --- /dev/null +++ b/help/pix_opencv_bgsubstract-help.pd @@ -0,0 +1,158 @@ +#N canvas 597 253 985 540 10; +#X obj 17 17 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 17 -29 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 26 -25 Arguments:; +#X obj 17 -124 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 22 -162 Class: pix_opencv; +#X text 47 -5 none; +#X obj 459 -182 cnv 15 510 520 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 611 168 cnv 15 280 80 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X floatatom 744 211 5 0 0 0 - - -, f 5; +#X obj 615 228 pix_opencv_bgsubstract; +#X msg 627 172 set; +#X text 663 172 set the background; +#X text 741 195 threshold (default 13); +#X obj 641 -173 gemhead; +#X obj 615 255 pix_texture; +#X obj 615 274 square 2; +#X obj 741 259 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 50 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 751 303 pd gemwin; +#X msg 751 285 destroy; +#X obj 464 253 pix_texture; +#X obj 464 272 square 2; +#X obj 615 121 separator; +#X obj 653 -146 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 710 29 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 692 -6 5 0 10000 1 frame# - -, f 5; +#X obj 653 -117 openpanel; +#X msg 653 -97 open \$1; +#X obj 641 12 pix_film; +#X msg 659 -54 auto \$1; +#X obj 659 -72 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X text 749 265 Create window and render; +#X msg 754 -71 colorspace RGBA; +#X msg 765 -52 colorspace RGB; +#X msg 772 -32 colorspace Grey; +#X obj 754 -99 loadbang; +#X obj 615 100 pix_separator; +#X obj 464 121 separator; +#X obj 464 101 pix_separator; +#X obj 464 141 translateXYZ -2 0 0; +#X obj 615 141 translateXYZ 2 0 0; +#N canvas 1 168 274 158 vswitch 0; +#X obj 36 138 outlet; +#X obj 36 26 inlet; +#X obj 100 29 inlet; +#X obj 153 29 inlet; +#X obj 89 69 == 0; +#X obj 36 101 spigot 1; +#X obj 100 101 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 464 58 pd vswitch; +#X obj 532 58 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 464 10 pix_video; +#X obj 464 -175 gemhead; +#X msg 503 -65 device 0; +#X msg 512 -34 driver 1; +#X msg 489 -119 dialog; +#X msg 494 -89 device /dev/dv1394-0; +#X obj 464 78 pix_rgba; +#X text 24 219 written by Yves Degoyon ( ydegoyon@gmail.com ); +#X text 23 -178 Synopsis: [pix_opencv_bgsubstract]; +#X text 22 37 Useful if you want to detect dynamic objects over a static +background.; +#X text 22 84 This object takes an image as a background reference +and compare each incomming frame with that. On the output you get a +b&w image \, black pixels are considered as background and white pixels +as foreground.; +#X text 21 144 pix_opencv_bgsubstract works comparing color values +of each pixel \, so it can fail if the foreground object has the same +color than the background \, and also if the light conditions or the +shadows change since you SET the background image.; +#X text 27 -107 pix_opencv_bgsubstract :: A very simple background +substractor and binarization object.; +#X connect 8 0 9 1; +#X connect 9 0 14 0; +#X connect 10 0 9 0; +#X connect 13 0 27 0; +#X connect 14 0 15 0; +#X connect 17 0 18 0; +#X connect 18 0 17 0; +#X connect 19 0 20 0; +#X connect 21 0 39 0; +#X connect 22 0 25 0; +#X connect 23 0 24 0; +#X connect 24 0 27 1; +#X connect 25 0 26 0; +#X connect 26 0 27 0; +#X connect 27 0 40 1; +#X connect 27 2 23 0; +#X connect 28 0 27 0; +#X connect 29 0 28 0; +#X connect 31 0 27 0; +#X connect 31 0 42 0; +#X connect 32 0 27 0; +#X connect 33 0 27 0; +#X connect 34 0 31 0; +#X connect 34 0 29 0; +#X connect 35 0 21 0; +#X connect 36 0 38 0; +#X connect 37 0 36 0; +#X connect 38 0 19 0; +#X connect 39 0 9 0; +#X connect 40 0 48 0; +#X connect 41 0 40 2; +#X connect 42 0 40 0; +#X connect 43 0 42 0; +#X connect 44 0 42 0; +#X connect 45 0 42 0; +#X connect 46 0 42 0; +#X connect 47 0 42 0; +#X connect 48 0 37 0; +#X connect 48 0 35 0; diff --git a/help/pix_opencv_blobtrack-help.pd b/help/pix_opencv_blobtrack-help.pd new file mode 100644 index 0000000..73c95b0 --- /dev/null +++ b/help/pix_opencv_blobtrack-help.pd @@ -0,0 +1,279 @@ +#N canvas 931 421 818 513 10; +#X obj 7 200 cnv 15 430 300 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 7 156 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 16 160 Arguments:; +#X obj 7 60 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 443 10 cnv 15 320 420 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X text 50 19 Synopsis: [pix_opencv_blobtrack]; +#X text 71 38 Class: pix_opencv; +#X text 17 63 Description: all-in-one blobtracker; +#X text 28 86 [pix_opencv_blobtrack] implements a blobtracking pipeline. +This is made by a foreground detector \, a blob detector \, a blob +tracker and a trajectory post processor.; +#X text 30 173 none; +#X obj 446 222 cnv 15 250 120 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 656 363 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 1 98 450 300 gemwin 0; +#X obj 132 136 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 132 112 create \, 1; +#X msg 198 112 destroy; +#X msg 234 221 dimen 500 500; +#X obj 295 164 loadbang; +#X msg 279 190 dimen 640 480; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 6 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 8 0 0 0; +#X connect 9 0 10 0; +#X connect 10 0 0 0; +#X restore 661 402 pd gemwin; +#X msg 661 383 create; +#X text 657 362 Create window:; +#X obj 454 364 pix_texture; +#X obj 454 30 gemhead; +#X floatatom 531 323 5 0 0 0 blob_num - -, f 5; +#N canvas 1054 357 709 722 showblob 0; +#X obj 187 13 inlet blobinformation; +#X obj 279 316 gemlist; +#X obj 279 296 t b a; +#X obj 291 50 gemhead 70; +#X obj 129 258 list append; +#X obj 124 170 list split 2; +#X obj 124 114 list append; +#X obj 291 73 t b a; +#X obj 158 232 t b a; +#X obj 279 506 translateXYZ; +#X msg 420 349 \$2; +#X obj 279 356 alpha 1; +#X obj 279 466 translateXYZ -0.5 -0.5 0; +#X obj 279 530 scaleXYZ 0.125 0.25 0; +#X msg 459 349 \$3; +#X msg 420 499 \$4; +#X msg 469 472 \$5; +#X obj 463 328 t a a; +#X obj 279 576 circle 0.5; +#X obj 279 426 color 1 0 0 0.2; +#X obj 279 336 separator; +#X msg 499 499 \$1; +#X obj 279 616 color 1 1 0 1; +#X obj 158 198 list split 6; +#X msg 227 166 \$2; +#X obj 366 622 loadbang; +#X msg 366 641 12; +#X msg 521 377 \$6; +#X obj 521 399 > 0; +#X obj 521 420 sel 1 0; +#X msg 520 441 1 0 0 0.2; +#X msg 540 461 0 1 0 0.2; +#X obj 279 596 translateXYZ 0.2 0.2 0; +#X text 348 252 here is an example on how to display blobs with Gem +; +#X obj 279 446 scaleXYZ 10.666 -8 0; +#X obj 279 677 text2d; +#X text 253 167 <- be careful ! the size of the cvblob matrix could +change; +#X text 335 184 please check second element to gets matrix width (number +of value per blob); +#X obj 124 136 t a a; +#X connect 0 0 6 1; +#X connect 1 0 20 0; +#X connect 2 0 1 0; +#X connect 2 1 17 0; +#X connect 3 0 7 0; +#X connect 4 0 23 0; +#X connect 5 1 23 0; +#X connect 6 0 38 0; +#X connect 7 0 6 0; +#X connect 7 1 1 1; +#X connect 8 0 4 0; +#X connect 8 1 2 0; +#X connect 9 0 13 0; +#X connect 10 0 9 1; +#X connect 11 0 19 0; +#X connect 12 0 9 0; +#X connect 13 0 18 0; +#X connect 14 0 9 2; +#X connect 15 0 13 1; +#X connect 16 0 13 2; +#X connect 17 0 14 0; +#X connect 17 0 10 0; +#X connect 17 1 16 0; +#X connect 17 1 15 0; +#X connect 17 1 21 0; +#X connect 17 1 27 0; +#X connect 18 0 32 0; +#X connect 19 0 34 0; +#X connect 20 0 11 0; +#X connect 21 0 35 0; +#X connect 22 0 35 0; +#X connect 23 0 8 0; +#X connect 23 1 4 1; +#X connect 24 0 23 1; +#X connect 25 0 26 0; +#X connect 26 0 35 1; +#X connect 27 0 28 0; +#X connect 28 0 29 0; +#X connect 29 0 30 0; +#X connect 29 1 31 0; +#X connect 30 0 19 1; +#X connect 31 0 19 1; +#X connect 32 0 22 0; +#X connect 34 0 12 0; +#X connect 38 0 5 0; +#X connect 38 1 24 0; +#X restore 568 320 pd showblob; +#X obj 454 124 pix_resize 320 240; +#X obj 454 173 pix_rgba; +#X obj 471 227 r \$0-properties; +#X text 464 153 input format : rgba or grey; +#N canvas 943 437 806 579 properties 0; +#X msg 99 407 monitorStage \$1; +#X msg 4 21 getModule; +#X msg 4 41 getModule fg; +#X msg 4 61 getModule bd; +#X msg 4 81 getModule bt; +#X msg 4 101 getModule btpp; +#X obj 12 142 loadbang; +#X msg 260 194 setModule bd BD_CC; +#X msg 27 194 setModule fg FG_0S; +#X msg 147 194 setModule fg FG_1; +#X text 98 342 monitoring stage :; +#X obj 99 359 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1 +-1 0; +#X text 117 358 input image; +#X text 116 374 foreground mask; +#X text 116 389 diplsay blobs; +#X obj -35 513 s \$0-properties; +#X obj -35 353 t a; +#X msg -14 405 fgTrainFrames \$1; +#X floatatom -14 378 5 0 0 0 - - -, f 5; +#X text 72 20 post all accessibles modules and their nickname; +#X text 108 56 post information of specific module and get the avaiblable +variant to load; +#X msg 12 160 setModule fg FG_1 \, setModule bd BD_Simple \, setModule +bt CC \, setModule btpp none \, setModule bta none; +#X msg 241 229 getParam fg; +#X floatatom 241 257 5 0 0 0 - - -, f 5; +#X msg 241 275 setParam fg NG \$1; +#X text 319 222 getParam : returns all parameters for +a given module; +#X text 359 275 setParam : set a +module parameter \, value could be float or symbol; +#X msg 33 222 setModule fg FG_0; +#X floatatom 241 295 5 0 0 0 - - -, f 5; +#X msg 241 313 setParam fg alpha1 \$1; +#X msg 192 106 setModule fg FG_0 \, setModule bd BD_Simple \, setModule +bt CC \, setModule btpp none \, setModule bta none \, setParam fg alpha1 +0.35; +#X msg 234 411 areaThreshold \$1; +#X floatatom 261 367 5 0 0 0 - - -, f 5; +#X connect 0 0 15 0; +#X connect 1 0 16 0; +#X connect 2 0 16 0; +#X connect 3 0 16 0; +#X connect 4 0 16 0; +#X connect 5 0 16 0; +#X connect 6 0 21 0; +#X connect 7 0 16 0; +#X connect 8 0 16 0; +#X connect 9 0 16 0; +#X connect 11 0 0 0; +#X connect 16 0 15 0; +#X connect 17 0 15 0; +#X connect 18 0 17 0; +#X connect 21 0 16 0; +#X connect 22 0 16 0; +#X connect 23 0 24 0; +#X connect 24 0 16 0; +#X connect 27 0 16 0; +#X connect 28 0 29 0; +#X connect 29 0 16 0; +#X connect 30 0 16 0; +#X connect 31 0 15 0; +#X connect 32 0 31 0; +#X restore 595 230 pd properties; +#X obj 454 70 pix_film; +#X text 459 96 the bigger the image is \, the more CPU expensive the +algo will be; +#X text 16 202 Inlet 1 accepts a lot of messages \, here are the most +usefull ones \, see [pd properties] for details.; +#X text 26 232 getModule : get information about loaded modules.; +#X text 26 252 setModule : set algorythm to use in each module.; +#X text 26 272 monitoringStage : set the location where output image +is taken (input \, foreground mask or input with tracking information) +; +#X obj 550 50 openpanel; +#X obj 550 32 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 15 321 Outlet 1 : gemstate; +#X text 15 341 Outlet 2 :; +#X text 35 360 blobnum : number of blobs in the current frame; +#X text 36 376 blob matrix (follow the iem matrix standard) :; +#X text 35 460 there are also a lots of informations about parameters +and algorithms... check out the pd-properties; +#X text 65 399 and for each blob : ID \, x \, y \, width \, height +\, state (valid or not); +#X msg 550 70 open \$1 \, auto 1; +#X obj 454 395 rectangle 5.333 4; +#X msg 509 70 0; +#X msg 531 302 \$1; +#X obj 531 281 route cvblob; +#N canvas 1 104 593 300 info 0; +#X obj 153 40 inlet; +#X obj 153 62 route modulelist param; +#X msg 55 148 fg bd bt btpp bta; +#X obj 55 106 list prepend set; +#X obj 55 128 list trim; +#X msg 78 211 getModule; +#X obj 78 236 s \$0-properties; +#X text -59 148 available module :; +#X msg 146 212 getParam fg; +#X obj 217 108 print param; +#X obj 298 96 print dumpout; +#X connect 0 0 1 0; +#X connect 1 0 3 0; +#X connect 1 1 9 0; +#X connect 1 2 10 0; +#X connect 3 0 4 0; +#X connect 4 0 2 0; +#X connect 5 0 6 0; +#X connect 8 0 6 0; +#X restore 645 322 pd info; +#X obj 454 255 pix_opencv_blobtrack; +#X text 53 388 cvblob ; +#X connect 12 0 13 0; +#X connect 13 0 12 0; +#X connect 15 0 39 0; +#X connect 16 0 24 0; +#X connect 19 0 20 0; +#X connect 20 0 44 0; +#X connect 21 0 44 0; +#X connect 24 0 19 0; +#X connect 24 2 40 0; +#X connect 30 0 38 0; +#X connect 31 0 30 0; +#X connect 38 0 24 0; +#X connect 40 0 24 1; +#X connect 41 0 17 0; +#X connect 42 0 41 0; +#X connect 42 0 18 0; +#X connect 42 1 43 0; +#X connect 44 0 15 0; +#X connect 44 1 42 0; diff --git a/help/pix_opencv_calibration-help.pd b/help/pix_opencv_calibration-help.pd new file mode 100644 index 0000000..ea6bd56 --- /dev/null +++ b/help/pix_opencv_calibration-help.pd @@ -0,0 +1,258 @@ +#N canvas 479 182 1188 810 10; +#X obj 20 33 cnv 15 430 580 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 20 -13 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 29 -9 Arguments:; +#X obj 19 -109 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 24 -145 Class: pix_opencv; +#X text 25 -161 Synopsis: [pix_opencv_calibration]; +#X text 37 37 getting started with camera calibration :; +#X text 65 123 3 Check calibration toggle to start and move the chessboard +in front of the camera (or move the camera in front of your screen). +Your computer may slow down during searching chessboard corners. When +all corners are found it takes a snapshot (and the image will be negative) +; +#X text 65 103 2 Plug a supported camera and start rendering; +#X text 66 73 1 Print the chessboard ona rigid paperboard (or just +show it on the screen); +#X text 65 194 4 When enought chessboard have been found (20 by default) +it computes transformation matrix and map to undistord the image; +#X text 65 244 5 Then all incoming images are undistord \, you can +save the transformation and distorsion matrix to files to load it next +times; +#X text 31 287 for more information about this calibration see :; +#X text 41 327 - A flexible new technique for camera calibration \, +Zhang \, 1998 \, Microsoft Research; +#X text 41 307 - Learning Opencv \, Bradski and Kaehler \, 2008 \, +O'Reilly; +#X text 50 11 none; +#X obj 455 -188 cnv 15 720 800 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 615 374 cnv 15 400 160 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 815 -160 gemhead; +#X obj 619 569 pix_texture; +#X obj 795 538 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 3 81 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 342 184 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X msg 161 189 dimen 640 560 \, create \, 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 9 0; +#X connect 2 1 4 0; +#X connect 2 1 7 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 10 0; +#X connect 9 2 8 0; +#X connect 10 0 6 0; +#X restore 805 584 pd gemwin; +#X msg 805 564 destroy; +#X obj 485 570 pix_texture; +#X obj 619 216 separator; +#X obj 827 -133 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 884 42 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 866 7 5 0 10000 1 frame# - -, f 5; +#X obj 827 -104 openpanel; +#X msg 827 -84 open \$1; +#X obj 815 25 pix_film; +#X msg 833 -41 auto \$1; +#X obj 833 -59 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X text 803 544 Create window and render; +#X msg 928 -58 colorspace RGBA; +#X msg 942 -35 colorspace RGB; +#X msg 957 -13 colorspace Grey; +#X obj 928 -86 loadbang; +#X obj 619 197 pix_separator; +#X obj 485 217 separator; +#X obj 485 198 pix_separator; +#N canvas 1 184 299 199 vswitch 0; +#X obj 36 128 outlet; +#X obj 36 26 inlet; +#X obj 130 26 inlet; +#X obj 175 27 inlet; +#X obj 81 61 == 0; +#X obj 36 83 spigot 1; +#X obj 130 84 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 485 67 pd vswitch; +#X obj 581 68 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 1 1 +; +#X obj 485 34 pix_video; +#X obj 485 -160 gemhead; +#X msg 504 -88 dimen 640 480; +#X msg 502 -113 dimen 320 240; +#X text 681 432 load distorsion coefficients and intrinsic matrix; +#X msg 531 -18 driver v4l2; +#X msg 515 -65 driver dc1394 \, dimen 640 480 \, colorspace grey; +#X msg 540 3 driver dc1394; +#X obj 619 494 pix_opencv_calibration; +#X obj 485 165 pix_grey; +#X obj 485 236 translateXYZ 0 -2 0; +#X obj 619 236 translateXYZ 0 2 0; +#X obj 485 590 rectangle 2.666 2; +#X obj 619 590 rectangle 2.666 2; +#X msg 682 451 loadDist \$1; +#X msg 698 471 loadIntra \$1; +#X msg 652 391 writeDist \$1; +#X msg 663 413 writeIntra \$1; +#X text 651 372 write distorsion coefficients and intrinsic matrix +; +#X obj 746 117 cnv 15 420 240 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 754 128 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X msg 754 148 calibration \$1; +#X msg 754 192 view \$1; +#X text 793 170 number of view to take during calibration; +#X floatatom 754 174 5 0 0 0 - - -, f 5; +#X obj 754 233 pack f f; +#X msg 754 253 patternSize \$1 \$2; +#X floatatom 754 215 5 0 0 0 - - -, f 5; +#X floatatom 807 215 5 0 0 0 - - -, f 5; +#X text 844 211 number of inner corners on the chessboard; +#N canvas 130 67 612 325 advance-options 0; +#X msg 55 161 findChessFlag \$1 \$2 \$3; +#X obj 68 91 t b f; +#X obj 55 142 pack f f f; +#X obj 118 111 t b f; +#X obj 55 51 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 68 71 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 118 91 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 55 267 outlet; +#X text 53 27 findChessBoardCorner option; +#X text 75 50 CV_CALIB_CB_ADAPTIVE_TRESH : adaptive threhold (default +1); +#X text 84 70 CV_CALIB_CB_NORMALIZE_IMAGE : normalize image (default +0); +#X text 135 91 CV_CALIB_CB_FILTER_QUADS: advance filtering (default +1); +#X connect 0 0 7 0; +#X connect 1 0 2 0; +#X connect 1 1 2 1; +#X connect 2 0 0 0; +#X connect 3 0 2 0; +#X connect 3 1 2 2; +#X connect 4 0 2 0; +#X connect 5 0 1 0; +#X connect 6 0 3 0; +#X restore 753 315 pd advance-options; +#X floatatom 754 274 5 0 0 0 - - -, f 5; +#X msg 754 292 wait \$1; +#X text 792 273 number of frame to wait between two takes during calibration +; +#X text 773 128 start callibration; +#X obj 544 166 pix_rgba; +#X obj 485 140 spigot 1; +#X text 598 66 switch source (camera / film); +#X obj 530 95 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 1 1 +; +#X text 547 93 switch color mode ( grey / rgba ); +#X msg 524 -41 device 1; +#X obj 530 118 == 0; +#X obj 544 140 spigot 0; +#X msg 753 335 reset; +#X text 797 334 reset corrections; +#X obj 748 516 print; +#X text 784 516 print some infos; +#X obj 635 351 t a; +#X text 26 -100 Description: pix_opencv_calibration does camera calibration. +You need to move a checkboard in front of the camera during the calibration. +; +#X connect 18 0 30 0; +#X connect 19 0 56 0; +#X connect 21 0 22 0; +#X connect 22 0 21 0; +#X connect 23 0 55 0; +#X connect 24 0 54 0; +#X connect 25 0 28 0; +#X connect 26 0 27 0; +#X connect 27 0 30 1; +#X connect 28 0 29 0; +#X connect 29 0 30 0; +#X connect 30 0 41 1; +#X connect 30 2 26 0; +#X connect 31 0 30 0; +#X connect 32 0 31 0; +#X connect 34 0 30 0; +#X connect 34 0 43 0; +#X connect 35 0 30 0; +#X connect 36 0 30 0; +#X connect 37 0 34 0; +#X connect 37 0 32 0; +#X connect 38 0 24 0; +#X connect 39 0 53 0; +#X connect 40 0 39 0; +#X connect 41 0 79 0; +#X connect 41 0 85 0; +#X connect 42 0 41 2; +#X connect 43 0 41 0; +#X connect 44 0 43 0; +#X connect 45 0 43 0; +#X connect 46 0 43 0; +#X connect 48 0 43 0; +#X connect 49 0 43 0; +#X connect 50 0 43 0; +#X connect 51 0 19 0; +#X connect 51 1 88 0; +#X connect 52 0 40 0; +#X connect 52 0 38 0; +#X connect 53 0 23 0; +#X connect 54 0 51 0; +#X connect 57 0 51 0; +#X connect 58 0 51 0; +#X connect 59 0 51 0; +#X connect 60 0 51 0; +#X connect 63 0 64 0; +#X connect 64 0 90 0; +#X connect 65 0 90 0; +#X connect 67 0 65 0; +#X connect 68 0 69 0; +#X connect 69 0 90 0; +#X connect 70 0 68 0; +#X connect 71 0 68 1; +#X connect 73 0 90 0; +#X connect 74 0 75 0; +#X connect 75 0 90 0; +#X connect 78 0 40 0; +#X connect 78 0 38 0; +#X connect 79 0 52 0; +#X connect 81 0 84 0; +#X connect 81 0 85 1; +#X connect 83 0 43 0; +#X connect 84 0 79 1; +#X connect 85 0 78 0; +#X connect 86 0 90 0; +#X connect 90 0 51 0; diff --git a/help/pix_opencv_camshift-help.pd b/help/pix_opencv_camshift-help.pd new file mode 100644 index 0000000..9455958 --- /dev/null +++ b/help/pix_opencv_camshift-help.pd @@ -0,0 +1,207 @@ +#N canvas 661 275 964 666 10; +#X obj 0 114 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 9 118 Arguments:; +#X obj -1 18 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 4 -19 Class: pix_opencv; +#X text 30 138 none; +#X obj 435 -41 cnv 15 510 650 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 440 533 pix_texture; +#X obj 717 529 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 189 149 454 304 gemwin 0; +#X obj 130 218 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#X msg 129 165 create \, 1; +#X msg 205 166 destroy; +#N canvas 87 154 363 340 Gem.init 0; +#X obj 112 15 loadbang; +#X msg 62 93 reset; +#X obj 49 135 outlet; +#X msg 107 89 dimen 320 240; +#X obj 107 51 t b b b; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 4 2 1 0; +#X restore 289 80 pd Gem.init; +#X obj 128 109 t b b b; +#X msg 156 138 dimen 320 240; +#X msg 247 137 frame 25; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 9 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 9 0 6 0; +#X connect 9 1 10 0; +#X connect 9 2 11 0; +#X connect 10 0 0 0; +#X connect 11 0 0 0; +#X restore 724 575 pd gemwin; +#X msg 724 554 create; +#X text 727 536 Create window and render; +#X obj 438 255 cnv 15 500 270 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 440 552 pix_resize 320 240; +#X obj 440 433 pix_opencv_camshift; +#X obj 551 453 unpack f f f f f; +#X floatatom 551 478 5 0 0 0 - - -, f 5; +#X floatatom 590 478 5 0 0 0 - - -, f 5; +#X floatatom 628 478 5 0 0 0 - - -, f 5; +#X floatatom 667 478 5 0 0 0 - - -, f 5; +#X floatatom 708 478 5 0 0 0 - - -, f 5; +#X text 578 502 center Y; +#X text 628 492 width; +#X text 663 503 height; +#X text 538 492 center X; +#X text 706 494 angle; +#X text 663 452 for the tracked object; +#X msg 515 323 backproject \$1; +#X text 634 324 show the backproject flow image; +#X obj 612 324 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 473 260 vmin \$1; +#X floatatom 529 262 5 0 0 0 - - -, f 5; +#X floatatom 545 280 5 0 0 0 - - -, f 5; +#X msg 491 280 vmax \$1; +#X floatatom 558 303 5 0 0 0 - - -, f 5; +#X msg 504 302 smin \$1; +#X text 583 280 V pre-filtering maximal value ( default : 256 ); +#X text 597 301 S pre-filtering minimal value ( default : 30 ); +#X msg 547 386 track \$1 \$2; +#X text 624 384 track %x %y : mark the object to track; +#X floatatom 591 347 5 0 0 0 - - -, f 5; +#X floatatom 608 367 5 0 0 0 - - -, f 5; +#X msg 526 345 rwidth \$1; +#X msg 535 365 rheight \$1; +#X text 627 345 initial search region width ( default : 20 ); +#X text 646 366 initial search region height ( default : 20 ); +#X text 574 262 V pre-filtering minimal value ( default : 50 ); +#X text 15 31 pix_opencv_camshift : continuously adaptive mean-shift +algorithm to track objects based on a hidden histogram of the hue component +of pixels.; +#X obj 440 232 pix_resize 320 240; +#X obj 440 571 rectangle 5.3 4; +#X obj 617 -31 gemhead; +#X obj 629 -4 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 686 171 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 668 136 5 0 10000 1 frame# - -, f 5; +#X obj 629 25 openpanel; +#X msg 629 45 open \$1; +#X obj 617 154 pix_film; +#X msg 635 88 auto \$1; +#X obj 635 70 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 730 71 colorspace RGBA; +#X msg 741 91 colorspace RGB; +#X obj 730 43 loadbang; +#N canvas 1 83 450 300 vswitch 0; +#X obj 36 133 outlet; +#X obj 36 26 inlet; +#X obj 129 29 inlet; +#X obj 174 28 inlet; +#X obj 81 72 == 0; +#X obj 36 93 spigot 1; +#X obj 129 101 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 440 194 pd vswitch; +#X obj 509 193 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 440 152 pix_video; +#X obj 440 -36 gemhead; +#X msg 479 88 device 0; +#X msg 488 108 driver 1; +#X msg 466 49 dialog; +#X msg 471 69 device /dev/dv1394-0; +#X obj 440 213 pix_rgba; +#X text 5 -35 Synopsis: [pix_opencv_camshift]; +#X obj 0 160 cnv 15 430 450 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 11 164 written by Yves Degoyon ( ydegoyon@gmail.com ) \, inspired +by OpenCV samples code.; +#N canvas 1 95 450 300 mouseSelection 0; +#X obj 161 100 gemmouse; +#X obj 183 132 sel 1; +#X obj 161 266 outlet; +#X obj 161 201 pack 0 0; +#X obj 161 175 f; +#X msg 161 223 track \$1 \$2; +#X connect 0 0 4 1; +#X connect 0 1 3 1; +#X connect 0 2 1 0; +#X connect 1 0 4 0; +#X connect 3 0 5 0; +#X connect 4 0 3 0; +#X connect 5 0 2 0; +#X restore 546 410 pd mouseSelection; +#X text 657 410 click on Gem window to select feature to track; +#X connect 6 0 12 0; +#X connect 8 0 9 0; +#X connect 9 0 8 0; +#X connect 12 0 48 0; +#X connect 13 0 6 0; +#X connect 13 1 14 0; +#X connect 14 0 15 0; +#X connect 14 1 16 0; +#X connect 14 2 17 0; +#X connect 14 3 18 0; +#X connect 14 4 19 0; +#X connect 26 0 13 0; +#X connect 28 0 26 0; +#X connect 29 0 13 0; +#X connect 30 0 29 0; +#X connect 31 0 32 0; +#X connect 32 0 13 0; +#X connect 33 0 34 0; +#X connect 34 0 13 0; +#X connect 37 0 13 0; +#X connect 39 0 41 0; +#X connect 40 0 42 0; +#X connect 41 0 13 0; +#X connect 42 0 13 0; +#X connect 47 0 13 0; +#X connect 49 0 55 0; +#X connect 50 0 53 0; +#X connect 51 0 52 0; +#X connect 52 0 55 1; +#X connect 53 0 54 0; +#X connect 54 0 55 0; +#X connect 55 0 61 1; +#X connect 55 2 51 0; +#X connect 56 0 55 0; +#X connect 57 0 56 0; +#X connect 58 0 55 0; +#X connect 58 0 63 0; +#X connect 59 0 55 0; +#X connect 60 0 58 0; +#X connect 60 0 57 0; +#X connect 61 0 69 0; +#X connect 62 0 61 2; +#X connect 63 0 61 0; +#X connect 64 0 63 0; +#X connect 65 0 63 0; +#X connect 66 0 63 0; +#X connect 67 0 63 0; +#X connect 68 0 63 0; +#X connect 69 0 47 0; +#X connect 73 0 13 0; diff --git a/help/pix_opencv_clahe-help.pd b/help/pix_opencv_clahe-help.pd new file mode 100644 index 0000000..39ae4ed --- /dev/null +++ b/help/pix_opencv_clahe-help.pd @@ -0,0 +1,139 @@ +#N canvas 674 205 963 606 10; +#X obj 20 33 cnv 15 430 380 empty empty empty 20 12 0 14 -228856 -66577 +0; +#X obj 20 -13 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X obj 19 -109 cnv 15 430 90 empty empty empty 20 12 0 14 -228856 -66577 +0; +#X text 24 -145 Class: pix_opencv; +#X obj 455 -186 cnv 15 500 600 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 725 -180 gemhead; +#X obj 485 369 pix_texture; +#X obj 661 338 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 3 81 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 342 184 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X msg 161 189 dimen 640 560 \, create \, 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 9 0; +#X connect 2 1 4 0; +#X connect 2 1 7 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 10 0; +#X connect 9 2 8 0; +#X connect 10 0 6 0; +#X restore 671 384 pd gemwin; +#X msg 671 364 destroy; +#X obj 737 -153 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 782 -67 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 776 -83 5 0 10000 1 frame# - -, f 5; +#X obj 737 -124 openpanel; +#X obj 725 -65 pix_film; +#X text 669 344 Create window and render; +#N canvas 1 184 299 199 vswitch 0; +#X obj 36 128 outlet; +#X obj 36 26 inlet; +#X obj 130 26 inlet; +#X obj 175 27 inlet; +#X obj 81 61 == 0; +#X obj 36 83 spigot 1; +#X obj 130 84 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 485 -23 pd vswitch; +#X obj 581 -22 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 485 -56 pix_video; +#X obj 485 -180 gemhead; +#X obj 485 75 pix_grey; +#X obj 544 76 pix_rgba; +#X obj 485 50 spigot 1; +#X text 598 -24 switch source (camera / film); +#X obj 530 5 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X text 547 3 switch color mode ( grey / rgba ); +#X obj 530 28 == 0; +#X obj 544 50 spigot 0; +#X obj 481 174 cnv 15 400 160 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X msg 737 -104 open \$1 \, auto 1; +#X obj 485 137 t a; +#X obj 581 -66 loadbang; +#X msg 581 -44 0; +#X obj 612 -144 == 0; +#X obj 612 -165 t a a; +#X obj 485 390 rectangle 4 3; +#X floatatom 504 188 5 0 0 0 - - -, f 5; +#X floatatom 506 244 5 0 0 0 - - -, f 5; +#X text 27 -11 Arguments: (optional); +#X obj 544 100 alpha; +#X text 25 -161 Synopsis: [pix_opencv_clahe]; +#X msg 504 211 clipLimit \$1; +#X text 539 188 clip limit; +#X text 542 242 tile grid size; +#X msg 507 267 tileGridSize \$1 \$1; +#X obj 485 295 pix_opencv_clahe 40 8 2; +#X text 48 3 ; +#X connect 5 0 14 0; +#X connect 6 0 35 0; +#X connect 8 0 9 0; +#X connect 9 0 8 0; +#X connect 10 0 13 0; +#X connect 11 0 12 0; +#X connect 12 0 14 1; +#X connect 13 0 29 0; +#X connect 14 0 16 1; +#X connect 14 2 11 0; +#X connect 16 0 22 0; +#X connect 16 0 27 0; +#X connect 17 0 16 2; +#X connect 17 0 34 0; +#X connect 18 0 16 0; +#X connect 19 0 18 0; +#X connect 20 0 30 0; +#X connect 21 0 39 0; +#X connect 22 0 20 0; +#X connect 24 0 26 0; +#X connect 24 0 27 1; +#X connect 26 0 22 1; +#X connect 27 0 21 0; +#X connect 29 0 14 0; +#X connect 30 0 45 0; +#X connect 31 0 32 0; +#X connect 32 0 17 0; +#X connect 33 0 19 0; +#X connect 34 0 33 0; +#X connect 34 1 5 0; +#X connect 36 0 41 0; +#X connect 37 0 44 0; +#X connect 39 0 30 0; +#X connect 41 0 45 0; +#X connect 44 0 45 0; +#X connect 45 0 6 0; diff --git a/help/pix_opencv_colorfilt-help.pd b/help/pix_opencv_colorfilt-help.pd new file mode 100644 index 0000000..8244bac --- /dev/null +++ b/help/pix_opencv_colorfilt-help.pd @@ -0,0 +1,164 @@ +#N canvas 240 210 936 587 10; +#X obj -6 52 cnv 15 430 370 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj -6 6 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 3 10 Arguments:; +#X obj -7 -90 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 24 30 none; +#X obj 430 -147 cnv 15 480 570 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 680 337 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 327 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X msg 161 188 dimen 320 240 \, create \, 1; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 9 0; +#X connect 2 1 4 0; +#X connect 2 1 7 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 10 0; +#X connect 9 2 8 0; +#X connect 10 0 6 0; +#X restore 690 381 pd gemwin; +#X msg 690 363 create; +#X obj 441 201 cnv 15 460 130 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X text 688 343 Create window and render; +#X text 2 -57 written by Yves Degoyon ( ydegoyon@gmail.com ); +#X obj 446 361 rectangle 5.3 4; +#X floatatom 485 310 5 0 0 0 - - -; +#X floatatom 530 310 5 0 0 0 - - -; +#X floatatom 575 310 5 0 0 0 - - -; +#X text 619 310 RGB selected components; +#X msg 483 230 tolerance \$1; +#X floatatom 569 232 5 0 0 0 - - -; +#X text 610 231 tolerance applied for the selection of colors; +#X obj 832 49 gemmouse; +#X obj 828 134 f; +#X obj 798 133 f; +#X obj 798 112 t b b; +#X obj 798 155 pack f f; +#X obj 798 90 route 1; +#X text 3 -112 pix_opencv_colorfilt : color filter; +#X text 4 -80 you can set the selected color with its RGB components +or by selecting a piksel in the video window; +#X msg 466 204 pick \$1 \$2; +#X text 542 203 pick a color from the video; +#X obj 633 -135 gemhead; +#X obj 645 -108 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 702 67 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 684 32 5 0 10000 1 frame# - -; +#X obj 645 -79 openpanel; +#X msg 645 -59 open \$1; +#X obj 633 50 pix_film; +#X msg 651 -16 auto \$1; +#X obj 651 -34 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X msg 746 -33 colorspace RGBA; +#X msg 759 5 colorspace RGB; +#X msg 754 -14 colorspace Grey; +#X obj 746 -61 loadbang; +#N canvas 1 165 267 218 vswitch 0; +#X obj 36 143 outlet; +#X obj 36 26 inlet; +#X obj 120 27 inlet; +#X obj 165 27 inlet; +#X obj 81 79 == 0; +#X obj 36 103 spigot 1; +#X obj 120 105 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 446 91 pd vswitch; +#X obj 514 91 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 446 48 pix_video; +#X obj 446 -134 gemhead; +#X msg 485 -27 device 0; +#X msg 494 4 driver 1; +#X msg 471 -81 dialog; +#X msg 476 -51 device /dev/dv1394-0; +#X obj 446 289 pix_opencv_colorfilt; +#X obj 446 133 pix_resize 320 240; +#X obj 446 112 pix_rgba; +#X floatatom 485 270 5 0 0 0 - - -; +#X floatatom 530 270 5 0 0 0 - - -; +#X floatatom 575 270 5 0 0 0 - - -; +#X text 619 270 RGB selected components; +#X obj 446 339 pix_texture; +#X connect 7 0 8 0; +#X connect 8 0 7 0; +#X connect 17 0 51 0; +#X connect 18 0 17 0; +#X connect 20 0 22 1; +#X connect 20 1 21 1; +#X connect 20 2 25 0; +#X connect 21 0 24 1; +#X connect 22 0 24 0; +#X connect 23 0 22 0; +#X connect 23 1 21 0; +#X connect 24 0 28 0; +#X connect 25 0 23 0; +#X connect 28 0 51 0; +#X connect 30 0 36 0; +#X connect 31 0 34 0; +#X connect 32 0 33 0; +#X connect 33 0 36 1; +#X connect 34 0 35 0; +#X connect 35 0 36 0; +#X connect 36 0 43 1; +#X connect 36 2 32 0; +#X connect 37 0 36 0; +#X connect 38 0 37 0; +#X connect 39 0 36 0; +#X connect 39 0 45 0; +#X connect 40 0 36 0; +#X connect 41 0 36 0; +#X connect 42 0 39 0; +#X connect 42 0 38 0; +#X connect 43 0 53 0; +#X connect 44 0 43 2; +#X connect 45 0 43 0; +#X connect 46 0 45 0; +#X connect 47 0 45 0; +#X connect 48 0 45 0; +#X connect 49 0 45 0; +#X connect 50 0 45 0; +#X connect 51 0 58 0; +#X connect 51 1 13 0; +#X connect 51 2 14 0; +#X connect 51 3 15 0; +#X connect 52 0 51 0; +#X connect 53 0 52 0; +#X connect 54 0 51 1; +#X connect 55 0 51 2; +#X connect 56 0 51 3; +#X connect 58 0 12 0; diff --git a/help/pix_opencv_contours-help.pd b/help/pix_opencv_contours-help.pd new file mode 100644 index 0000000..f14f0f8 --- /dev/null +++ b/help/pix_opencv_contours-help.pd @@ -0,0 +1,731 @@ +#N canvas 849 245 794 766 10; +#X declare -lib pix_opencv; +#X obj 472 35 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 11 56 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 11 307 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 13 315 Inlets:; +#X obj 11 267 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 20 266 Arguments:; +#X text 12 436 Outlets:; +#X text 478 20 Example:; +#X text 58 21 Class: pix_opencv; +#X text 11 60 Description: finds contours; +#X text 66 276 none; +#X text 30 349 Inlet 1: message: epsilon [float]; +#X obj 353 315 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 1 122 450 300 gemwin 0; +#X obj 132 156 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 198 112 destroy; +#X msg 132 132 reset \, dimen 640 480 \, create \, 1; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 7 0; +#X connect 3 1 5 0; +#X connect 3 1 6 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 358 354 pd gemwin; +#X msg 358 335 destroy; +#X text 354 314 Create window:; +#X text 30 329 Inlet 1: binarized image; +#X text 30 589 <2> +; +#X text 25 447 Outlet 1: gemlist output; +#X text 37 5 Synopsis: [pix_opencv_contours]; +#X text 21 578 contour (for each of them); +#X text 37 75 [pix_opencv_contours] finds contours in incomming image +\, simplifies it according to the epsilon value and outputs contours +with area greater than a threshold.; +#X text 30 339 Inlet 1: message: area threshold [float]; +#X text 25 457 Outlet 2: contour \, convexhull and convexity defect +output; +#X text 37 126 contrary to [pix_opencv_contour_convexhull] \, [pix_opencv_contours] +outputs all contours found not only the biggest.; +#X text 37 175 it can also output rotated bounding rectangle \, convexhull +and cenvexity defects; +#X text 37 215 you can choose the hierarchy level of output contour +; +#X text 37 235 so this external replaces all old pix_opencv_contours_* +; +#X text 30 619 <2> +; +#X text 21 606 convexhull (for each contour); +#X text 20 637 convexixitydefects (for each contour); +#X text 30 649 <7> depth; +#X text 26 699 by antoine villeret - 2012; +#X text 16 719 bug \, feedback \, comment... on the pd-list; +#X obj 476 193 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 541 151 pix_texture; +#X obj 487 76 t b a a; +#X obj 487 57 gemhead 1; +#X msg 542 214 epsilon \$1; +#X floatatom 542 197 5 0 0 0 - - -, f 5; +#X obj 625 121 loadbang; +#X obj 541 171 rectangle 5.333 4; +#X obj 514 116 t a a; +#X msg 617 214 area \$1; +#X floatatom 617 197 5 0 0 0 - - -, f 5; +#X msg 659 142 10; +#X msg 625 141 2; +#N canvas 1167 234 474 845 draw_rotrect 0; +#X obj 71 506 GEMglVertex2d; +#X obj 71 586 GEMglVertex2d; +#X obj 71 666 GEMglVertex2d; +#X obj 71 746 GEMglVertex2d; +#X obj 71 766 GEMglEnd; +#X obj 71 277 alpha; +#X obj 143 178 list split 1; +#X obj 71 420 GEMglBegin GL_LINE_LOOP; +#X obj 177 198 list split 8; +#X msg 363 324 0 0 0 0 0 0 0 0; +#X obj 32 -8 inlet INFO; +#X obj 71 256 gemhead; +#X obj 15 147 loadbang; +#X msg 15 168 0; +#X obj 71 52 t b a b; +#X obj 211 504 list split 2; +#X obj 177 448 list split 2; +#X obj 137 472 unpack; +#X obj 211 525 unpack; +#X obj 245 564 list split 2; +#X obj 245 585 unpack; +#X obj 279 664 list split 2; +#X obj 279 685 unpack; +#X obj 90 84 list split 2; +#X obj 95 154 list append; +#X obj 292 81 t b; +#X obj 32 32 route 0; +#X floatatom 342 463 5 0 0 0 - - -, f 5; +#X obj 342 442 list length; +#X obj 71 400 GEMglLineWidth 1; +#X obj 71 327 translateXYZ -5.3333 4 0; +#X obj 71 361 scaleXYZ 10.6666 -8 0; +#X obj 124 107 list split 20; +#X obj 71 302 color 1 1 0 1; +#X obj 124 128 t b b a; +#X obj 32 13 route info; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 5 0 33 0; +#X connect 6 1 8 0; +#X connect 7 0 0 0; +#X connect 8 0 16 0; +#X connect 9 0 16 0; +#X connect 10 0 35 0; +#X connect 11 0 5 0; +#X connect 12 0 13 0; +#X connect 13 0 11 0; +#X connect 14 1 23 0; +#X connect 14 2 25 0; +#X connect 15 0 18 0; +#X connect 15 1 19 0; +#X connect 16 0 17 0; +#X connect 16 1 15 0; +#X connect 17 0 0 1; +#X connect 17 1 0 2; +#X connect 18 0 1 1; +#X connect 18 1 1 2; +#X connect 19 0 20 0; +#X connect 19 1 21 0; +#X connect 20 0 2 1; +#X connect 20 1 2 2; +#X connect 21 0 22 0; +#X connect 22 0 3 1; +#X connect 22 1 3 2; +#X connect 23 1 32 0; +#X connect 24 0 32 0; +#X connect 25 0 9 0; +#X connect 26 1 14 0; +#X connect 28 0 27 0; +#X connect 29 0 7 0; +#X connect 30 0 31 0; +#X connect 31 0 29 0; +#X connect 32 0 34 0; +#X connect 32 1 24 1; +#X connect 33 0 30 0; +#X connect 34 0 24 0; +#X connect 34 1 11 0; +#X connect 34 2 6 0; +#X connect 34 2 28 0; +#X connect 35 0 26 0; +#X restore 658 323 pd draw_rotrect; +#X obj 487 240 pix_opencv_contours; +#N canvas 955 337 674 695 drawdefects 0; +#X obj 191 301 gemhead; +#X obj 134 217 loadbang; +#X msg 134 238 0; +#X obj 210 116 list split 2; +#X obj 215 186 list append; +#X obj 191 375 scaleXYZ 10.6666 -8 0; +#X obj 244 160 t b b a; +#X obj 210 76 inlet DEFECTS; +#X obj 210 96 route convexitydefects; +#X obj 244 139 list split 7; +#X obj 191 335 color 1 0 0 1; +#X obj 191 355 translateXYZ -5.3333 4 0; +#N canvas 895 575 739 379 ortho_point 0; +#X obj 192 7 inlet; +#X obj 192 57 t a a; +#X obj 204 238 *; +#X obj 174 238 *; +#X obj 114 124 unpack 0 0 0 0; +#X obj 114 279 +; +#X obj 154 279 +; +#X obj 114 340 outlet; +#X obj 174 320 outlet; +#X obj 153 198 -; +#X msg 153 178 1 \$1; +#X obj 144 238 *; +#X obj 114 238 *; +#X obj 219 84 list split 6; +#X text 519 123 dot product; +#X floatatom 244 163 5 0 0 0 - - -, f 5; +#X obj 300 29 t b; +#X msg 343 68 0 1 1 1 0.5 0.5; +#X obj 219 124 expr abs(($f3-$f1)*($f6-$f2)+($f4-$f2)*($f5-$f1)); +#X obj 302 158 expr $f1*sqrt(10.666*8); +#X connect 0 0 1 0; +#X connect 1 0 4 0; +#X connect 1 1 13 0; +#X connect 2 0 6 1; +#X connect 3 0 5 1; +#X connect 4 0 12 0; +#X connect 4 1 11 0; +#X connect 4 2 3 0; +#X connect 4 3 2 0; +#X connect 5 0 7 0; +#X connect 6 0 8 0; +#X connect 9 0 11 1; +#X connect 9 0 12 1; +#X connect 10 0 9 0; +#X connect 11 0 6 0; +#X connect 12 0 5 0; +#X connect 13 0 18 0; +#X connect 16 0 17 0; +#X connect 17 0 1 0; +#X connect 18 0 15 0; +#X connect 18 0 19 0; +#X connect 19 0 2 1; +#X connect 19 0 3 1; +#X connect 19 0 10 0; +#X restore 328 515 pd ortho_point; +#X obj 191 475 translateXYZ 10.6666 -8 0; +#X msg 240 451 \$5; +#X msg 289 451 \$6; +#X obj 191 556 circle 0.01; +#X msg 204 530 draw line; +#X obj 204 506 loadbang; +#X obj 354 369 t a; +#X connect 0 0 10 0; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 3 1 9 0; +#X connect 4 0 9 0; +#X connect 5 0 13 0; +#X connect 6 0 4 0; +#X connect 6 1 0 0; +#X connect 6 2 19 0; +#X connect 7 0 8 0; +#X connect 8 0 3 0; +#X connect 9 0 6 0; +#X connect 9 1 4 1; +#X connect 10 0 11 0; +#X connect 11 0 5 0; +#X connect 13 0 16 0; +#X connect 14 0 13 1; +#X connect 15 0 13 2; +#X connect 17 0 16 0; +#X connect 18 0 17 0; +#X connect 19 0 15 0; +#X connect 19 0 14 0; +#X restore 542 294 pd drawdefects; +#N canvas 168 587 1126 291 options 0; +#X obj 57 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X msg 57 167 contours \$1; +#X obj 57 251 outlet; +#X obj 147 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 247 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 147 167 convexhulls \$1; +#X msg 247 167 convexitydefects \$1; +#X text 25 37 set hierarchy level (which contour to send out); +#X obj 24 83 nbx 5 14 -2 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 +-1 -1 -1 256; +#X msg 24 100 hierarchy_level \$1; +#X text 71 125 send out different kind of infos (all on by default) +:; +#X text 25 47 -1 for all contours (default); +#X msg 559 168 settab drawX drawY drawZ; +#X obj 558 200 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 558 229 taboutput \$1; +#X text 550 71 first set some tables (they are dynamically resized) +; +#X text 550 151 tell it what tables to use; +#X text 582 200 enable disable table output (automatically enable when +ou set table); +#X text 569 256 see [pd draw_contour_gemvertexbuffer] for an example +of drawing contours; +#N canvas 789 194 596 300 draw_contour_gemvertexbuffer 0; +#X obj 175 173 loadbang; +#X obj 135 65 translateXYZ -0.5 -0.5 0; +#X obj 135 42 scaleXYZ 10.6666 -8 1; +#X obj 135 87 t a b; +#X obj 135 -9 gemhead 1000; +#X obj 135 17 alpha 0; +#X msg 161 130 posX drawX \, posY drawY \, colorG drawZ \, colorA drawZ +; +#X msg 175 193 draw line; +#X obj 135 245 gemvertexbuffer; +#X obj 161 108 inlet; +#X obj 269 174 r point_number; +#X msg 269 201 resize \$1; +#X floatatom 342 206 5 0 0 0 - - -, f 5; +#X connect 0 0 7 0; +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 8 0; +#X connect 3 1 6 0; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X connect 6 0 8 0; +#X connect 7 0 8 0; +#X connect 9 0 6 0; +#X connect 10 0 11 0; +#X connect 10 0 12 0; +#X connect 11 0 8 0; +#X restore 797 147 pd draw_contour_gemvertexbuffer; +#X obj 797 126 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X text 813 127 draw with gemvertexbuffer; +#X msg 379 80 repeat_point \$1; +#X floatatom 379 62 5 0 0 0 - - -, f 5; +#X text 348 47 repeat the first point n times; +#X msg 383 167 cvblobOutput \$1; +#X obj 383 148 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 25 57 -2 for only contours with no child (aka holes); +#X obj 564 89 table drawX 1000; +#X obj 564 109 table drawY 1000; +#X obj 564 129 table drawZ 1000; +#X text 543 5 to improve performance and avoid "stack overflow" (because +contours could have a huge number of points) you can use table output +instead of list output; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 2 0; +#X connect 6 0 2 0; +#X connect 8 0 9 0; +#X connect 9 0 2 0; +#X connect 12 0 2 0; +#X connect 13 0 14 0; +#X connect 14 0 2 0; +#X connect 20 0 19 0; +#X connect 22 0 2 0; +#X connect 23 0 22 0; +#X connect 25 0 2 0; +#X connect 26 0 25 0; +#X restore 674 213 pd options; +#X text 489 347 color legend :; +#X text 522 364 yellow = bounding box; +#X text 528 374 green = contour; +#X text 534 385 blue = convexhull; +#X text 534 397 pink = convexhull edge with defects; +#X text 540 409 red = farthest point from convexhull; +#N canvas 630 223 621 734 draw_contours 0; +#X obj 178 132 list split 2; +#X obj 170 593 GEMglEnd; +#X obj 300 590 GEMglVertex2d; +#X obj 212 263 list append; +#X obj 241 237 t b a; +#X obj 241 216 list split 2; +#X obj 341 495 unpack; +#X obj 310 257 t b a; +#X obj -101 364 color 1 0 0 1; +#X obj 405 545 * -8; +#X obj 405 565 + 4; +#X obj -101 422 GEMglLineWidth 2; +#X obj 341 545 * 10.6666; +#X obj 341 565 - 5.33333; +#X obj 170 564 gemlist; +#X obj 300 421 gemlist; +#X obj -62 242 gemhead; +#X obj -62 187 loadbang; +#X msg -62 208 0; +#X obj 133 161 unpack 0 0; +#X floatatom 133 182 5 0 0 0 nb_of_segments - -, f 5; +#X obj 107 -65 inlet CONTOUR; +#X obj -101 334 gemlist; +#X obj 212 159 t b a b b; +#X obj 106 -44 route convexhull contour convexitydefects; +#X obj 187 1 t a b; +#X msg -17 320 0 0 1 1; +#X msg -25 299 0 1 0 1; +#X obj 106 0 t a b; +#X obj 268 1 list split 2; +#X obj 290 96 list append; +#X obj 319 76 t b a; +#X obj 302 28 t b a b b; +#X obj 268 -19 t a b; +#X msg -7 340 1 0 1 1; +#X obj 319 55 list split 7; +#X obj 346 116 list split 4; +#X obj -101 459 GEMglBegin GL_LINE_LOOP; +#X obj -115 -62 inlet; +#X obj -115 -40 t a a a; +#X connect 0 0 19 0; +#X connect 0 1 23 0; +#X connect 2 0 14 1; +#X connect 3 0 5 0; +#X connect 4 0 3 0; +#X connect 4 1 7 0; +#X connect 5 0 4 0; +#X connect 5 1 3 1; +#X connect 6 0 12 0; +#X connect 6 1 9 0; +#X connect 7 0 15 0; +#X connect 7 1 6 0; +#X connect 8 0 11 0; +#X connect 9 0 10 0; +#X connect 10 0 2 2; +#X connect 11 0 37 0; +#X connect 12 0 13 0; +#X connect 13 0 2 1; +#X connect 14 0 1 0; +#X connect 15 0 2 0; +#X connect 17 0 18 0; +#X connect 18 0 16 0; +#X connect 19 0 20 0; +#X connect 21 0 24 0; +#X connect 22 0 8 0; +#X connect 23 0 14 0; +#X connect 23 1 5 0; +#X connect 23 2 22 0; +#X connect 23 3 16 0; +#X connect 24 0 28 0; +#X connect 24 1 25 0; +#X connect 24 2 33 0; +#X connect 25 0 0 0; +#X connect 25 1 27 0; +#X connect 26 0 8 1; +#X connect 27 0 8 1; +#X connect 28 0 0 0; +#X connect 28 1 26 0; +#X connect 29 1 32 0; +#X connect 30 0 35 0; +#X connect 31 0 30 0; +#X connect 31 1 36 0; +#X connect 32 1 35 0; +#X connect 33 0 29 0; +#X connect 33 1 34 0; +#X connect 34 0 8 1; +#X connect 35 0 31 0; +#X connect 35 1 30 1; +#X connect 36 0 23 0; +#X connect 37 0 15 1; +#X connect 38 0 39 0; +#X connect 39 0 22 1; +#X restore 504 513 pd draw_contours; +#N canvas 13 321 1198 730 info 0; +#X obj -67 115 cnv 15 250 40 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj -68 292 cnv 15 350 20 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 14 332 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 282 -59 cnv 15 100 40 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 51 497 cnv 15 330 50 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 225 16 inlet; +#X obj 225 67 list split 2; +#X obj 259 137 list split 20; +#X text 309 70 cut matrix header; +#X text 346 98 cut infos for the 1st contour; +#X text -55 294 rotated rectangle center point (normalized); +#X obj 211 224 list split 2; +#X obj 245 314 unpack; +#X floatatom 245 334 5 0 0 0 - - -, f 5; +#X floatatom 278 334 5 0 0 0 - - -, f 5; +#X obj 245 244 list split 2; +#X text 29 334 rotated rectangle size (normalized); +#X obj 313 384 list split 8; +#X floatatom 304 -37 5 0 0 0 - - -, f 5; +#X obj 304 -18 * 20; +#X obj 304 4 + 2; +#X text 284 -55 selected contour; +#X obj 116 96 unpack; +#X floatatom 116 117 5 0 0 0 - - -, f 5; +#X floatatom 149 138 5 0 0 0 - - -, f 5; +#X text -52 114 number of detected contours; +#X text -61 137 numbers of values for each contour; +#X obj 313 404 list prepend set; +#X obj 313 424 list trim; +#X msg 54 513 0.681584 0.808552 0.679688 0.789583 0.704353 0.785198 +0.70625 0.804167; +#X text 59 495 rotrect corners coordinates; +#X obj 570 153 list split 20; +#X obj 570 175 t b a; +#X obj 617 222 list; +#X msg 597 259 \$15; +#X obj 597 281 +; +#X obj 625 281 f; +#X msg 620 122 0; +#X obj 582 303 f; +#X obj 551 119 t b a b; +#X floatatom 582 325 5 0 0 0 - - -, f 5; +#X text 445 323 total number of points; +#X obj 177 194 list split 1; +#X obj -140 220 cnv 15 350 20 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X floatatom 177 223 5 0 0 0 - - -, f 5; +#X text 24 223 id in the detection order; +#X obj 26 405 cnv 15 250 20 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X text 30 408 rotated rectangle angle (degrees); +#X obj 279 364 list split 2; +#X obj 211 274 unpack; +#X floatatom 211 294 5 0 0 0 - - -, f 5; +#X floatatom 244 294 5 0 0 0 - - -, f 5; +#X obj 240 387 unpack; +#X floatatom 240 407 5 0 0 0 - - -, f 5; +#X obj 26 435 cnv 15 250 20 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X floatatom 240 437 5 0 0 0 - - -, f 5; +#X text 30 438 area in % of image area; +#X obj 199 570 cnv 15 250 80 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X floatatom 347 595 5 0 0 0 - - -, f 5; +#X floatatom 381 615 5 0 0 0 - - -, f 5; +#X text 203 614 length of contour (in pixels); +#X text 247 595 number of points; +#X obj 347 575 unpack f f; +#X obj 225 38 route cvblob count; +#X obj 736 107 unpack f f; +#X floatatom 736 129 5 0 0 0 - - -, f 5; +#X floatatom 793 130 5 0 0 0 - - -, f 5; +#X obj 776 195 s point_number; +#X text 723 144 contours; +#X text 797 145 points; +#X text 690 160 total counts of contours and points; +#X connect 5 0 63 0; +#X connect 6 0 22 0; +#X connect 6 1 7 0; +#X connect 6 1 39 0; +#X connect 7 0 42 0; +#X connect 11 0 49 0; +#X connect 11 1 15 0; +#X connect 12 0 13 0; +#X connect 12 1 14 0; +#X connect 15 0 12 0; +#X connect 15 1 48 0; +#X connect 17 0 27 0; +#X connect 17 1 62 0; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 6 1; +#X connect 22 0 23 0; +#X connect 22 1 24 0; +#X connect 22 1 19 1; +#X connect 22 1 7 1; +#X connect 27 0 28 0; +#X connect 28 0 29 0; +#X connect 31 0 32 0; +#X connect 31 1 33 1; +#X connect 32 0 33 0; +#X connect 32 1 34 0; +#X connect 33 0 31 0; +#X connect 34 0 35 0; +#X connect 35 0 36 0; +#X connect 35 0 38 1; +#X connect 36 0 35 1; +#X connect 37 0 35 1; +#X connect 38 0 40 0; +#X connect 39 0 38 0; +#X connect 39 1 31 0; +#X connect 39 2 37 0; +#X connect 42 0 44 0; +#X connect 42 1 11 0; +#X connect 48 0 52 0; +#X connect 48 1 17 0; +#X connect 49 0 50 0; +#X connect 49 1 51 0; +#X connect 52 0 53 0; +#X connect 52 1 55 0; +#X connect 62 0 58 0; +#X connect 62 1 59 0; +#X connect 63 0 6 0; +#X connect 63 1 64 0; +#X connect 64 0 65 0; +#X connect 64 1 66 0; +#X connect 64 1 67 0; +#X restore 675 294 pd info; +#X text 29 498 20 +0 0 0 0; +#X obj 554 32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 30 369 Inlet 1: message: contours <0|1>; +#X text 30 379 Inlet 1: message: convexhull <0|1>; +#X text 30 389 Inlet 1: message: convexitydefects <0|1>; +#X text 30 399 Inlet 1: message: settab tabname1 tabname2 tabname3 +; +#X text 30 409 Inlet 1: message: taboutput <0|1>; +#X text 30 359 Inlet 1: message: hierarchy_level [float]; +#X obj 514 96 pix_image examples/dessin.tif; +#N canvas 865 237 931 731 cvblob 0; +#X obj 87 321 gemlist; +#X obj 87 301 t b a; +#X obj 328 306 list append; +#X obj 323 198 list split 2; +#X obj 323 142 list append; +#X obj 99 108 t b a; +#X obj 357 280 t b a; +#X obj 87 511 translateXYZ; +#X msg 228 354 \$2; +#X obj 87 361 alpha 1; +#X obj 87 471 translateXYZ -0.5 -0.5 0; +#X obj 87 535 scaleXYZ 0.125 0.25 0; +#X msg 267 354 \$3; +#X msg 242 468 \$4; +#X obj 271 333 t a a; +#X obj 87 581 circle 0.5; +#X obj 87 431 color 1 0 0 0.2; +#X obj 87 341 separator; +#X msg 307 504 \$1; +#X obj 87 621 color 1 1 0 1; +#X obj 357 246 list split 6; +#X msg 426 194 \$2; +#X obj 174 627 loadbang; +#X msg 174 646 12; +#X msg 329 382 \$6; +#X obj 329 404 > 0; +#X obj 329 425 sel 1 0; +#X msg 328 446 1 0 0 0.2; +#X msg 348 466 0 1 0 0.2; +#X obj 87 601 translateXYZ 0.2 0.2 0; +#X text 547 280 here is an example on how to display blobs with Gem +; +#X obj 87 451 scaleXYZ 10.666 -8 0; +#X obj 87 682 text2d; +#X text 452 195 <- be careful ! the size of the cvblob matrix could +change; +#X text 534 212 please check second element to gets matrix width (number +of value per blob); +#X obj 323 164 t a a; +#X obj 386 11 inlet cvblob; +#X obj 386 33 route cvblob; +#X obj 240 490 sqrt; +#X obj 99 83 spigot; +#X obj 386 55 t a a; +#X msg 413 77 \$1; +#X floatatom 413 99 5 0 0 0 - - -, f 5; +#X obj 99 19 inlet; +#X connect 0 0 17 0; +#X connect 1 0 0 0; +#X connect 1 1 14 0; +#X connect 2 0 20 0; +#X connect 3 1 20 0; +#X connect 4 0 35 0; +#X connect 5 0 4 0; +#X connect 5 1 0 1; +#X connect 6 0 2 0; +#X connect 6 1 1 0; +#X connect 7 0 11 0; +#X connect 8 0 7 1; +#X connect 9 0 16 0; +#X connect 10 0 7 0; +#X connect 11 0 15 0; +#X connect 12 0 7 2; +#X connect 13 0 38 0; +#X connect 14 0 12 0; +#X connect 14 0 8 0; +#X connect 14 1 13 0; +#X connect 14 1 18 0; +#X connect 14 1 24 0; +#X connect 15 0 29 0; +#X connect 16 0 31 0; +#X connect 17 0 9 0; +#X connect 18 0 32 0; +#X connect 19 0 32 0; +#X connect 20 0 6 0; +#X connect 20 1 2 1; +#X connect 21 0 20 1; +#X connect 22 0 23 0; +#X connect 23 0 32 1; +#X connect 24 0 25 0; +#X connect 25 0 26 0; +#X connect 26 0 27 0; +#X connect 26 1 28 0; +#X connect 27 0 16 1; +#X connect 28 0 16 1; +#X connect 29 0 19 0; +#X connect 31 0 10 0; +#X connect 35 0 3 0; +#X connect 35 1 21 0; +#X connect 36 0 37 0; +#X connect 37 0 40 0; +#X connect 38 0 11 1; +#X connect 38 0 11 2; +#X connect 39 0 5 0; +#X connect 40 0 4 1; +#X connect 40 1 41 0; +#X connect 41 0 42 0; +#X connect 41 0 39 1; +#X connect 43 0 39 0; +#X restore 664 365 pd cvblob; +#X text 506 492 WARNING ! this crashes; +#X text 20 488 cvblob; +#X text 25 467 Outlet 3: info output; +#X text 20 558 count ; +#X text 612 516 fix me !; +#X obj 487 171 pix_rgba; +#X obj 487 141 pix_video; +#X obj 532 603 declare -lib pix_opencv; +#X connect 13 0 14 0; +#X connect 14 0 13 0; +#X connect 35 0 41 0; +#X connect 36 0 75 0; +#X connect 36 1 67 0; +#X connect 37 0 36 0; +#X connect 38 0 48 0; +#X connect 39 0 38 0; +#X connect 40 0 46 0; +#X connect 40 0 45 0; +#X connect 42 0 75 0; +#X connect 42 1 35 0; +#X connect 43 0 48 0; +#X connect 44 0 43 0; +#X connect 45 0 44 0; +#X connect 46 0 39 0; +#X connect 48 0 68 0; +#X connect 48 1 49 0; +#X connect 48 2 68 1; +#X connect 48 2 47 0; +#X connect 48 2 58 0; +#X connect 50 0 48 0; +#X connect 60 0 37 0; +#X connect 67 0 42 0; +#X connect 74 0 48 0; +#X connect 75 0 74 0; diff --git a/help/pix_opencv_contours_boundingrect-help.pd b/help/pix_opencv_contours_boundingrect-help.pd new file mode 100644 index 0000000..88fd8fc --- /dev/null +++ b/help/pix_opencv_contours_boundingrect-help.pd @@ -0,0 +1,255 @@ +#N canvas 180 115 1202 794 10; +#X obj 2 42 cnv 15 430 560 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 2 -4 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 11 0 Arguments:; +#X obj 2 -99 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 7 -137 Class: pix_opencv; +#X text 32 17 none; +#X obj 437 -158 cnv 15 710 760 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 589 283 cnv 15 550 250 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X floatatom 693 467 5 0 0 0 - - -; +#X floatatom 788 481 5 0 0 0 - - -; +#X floatatom 693 581 5 0 0 0 - - -; +#X floatatom 728 581 5 0 0 0 - - -; +#X floatatom 765 581 5 0 0 0 - - -; +#X floatatom 799 581 5 0 0 0 - - -; +#X obj 693 558 unpack 0 0 0 0 0; +#X obj 693 536 route 0 1 2 3 4; +#X text 794 539 For each contour detected; +#X text 16 50 It is useful as a motion tracker if you have well isolated +silouets of the objects you want to track.; +#X msg 618 293 mode \$1; +#X obj 679 294 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 +-1 -1 0; +#X text 748 295 retrieval mode ( see cvFindContours ); +#X obj 714 319 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 +-1 -1 0; +#X text 796 319 retrieval method ( see cvFindContours ); +#X msg 647 318 method \$1; +#X msg 670 341 maxmove \$1; +#X floatatom 744 342 5 0 0 0 - - -; +#X floatatom 768 366 5 0 0 0 - - -; +#X msg 680 363 ftolerance \$1; +#X text 805 364 frame tolerance for identification ( default 5 ); +#X text 9 -93 pix_opencv_contours_boundingrect :: Calculates up-right +bounding rectangle of all contours of a binary image.; +#X text 16 89 This object considers a contour to be analyzed any group +of white pixels in a black background \, for this reason you will find +useful to use pdp_bgsubstract or pdp_threshold to obtain a correct +input for pix_opencv_contours_boundingrect.; +#X text 16 143 pix_opencv_contours_boundingrect works detecting any +white areas in the input image \, it's important to set max/min values +of the areas you want to detect to filter non interesting noise or +areas \, also sometimes you will need to use pix_opencv_morphology +to transform the contours of the shapes to be analyzed..; +#X floatatom 788 518 5 0 0 0 - - -; +#X text 826 519 number of contours; +#X msg 695 388 nightmode \$1; +#X obj 785 389 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 774 410 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 787 432 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 714 409 draw \$1; +#X text 801 408 draw bounding rectangle ( default : on ); +#X msg 729 430 show \$1; +#X text 814 429 draw the detected contours ( default : off ); +#X text 808 389 hide original image ( default : off ); +#X obj 614 -145 gemhead; +#X obj 599 541 pix_texture; +#X obj 919 -153 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 +-66577 0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 929 -109 pd gemwin; +#X msg 929 -127 create; +#X obj 447 541 pix_texture; +#X obj 599 184 separator; +#X obj 626 -118 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 683 57 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 665 22 5 0 10000 1 frame# - -; +#X obj 626 -89 openpanel; +#X msg 626 -69 open \$1; +#X obj 614 40 pix_film; +#X msg 632 -26 auto \$1; +#X obj 632 -44 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X text 927 -147 Create window and render; +#X msg 727 -43 colorspace RGBA; +#X msg 733 -24 colorspace RGB; +#X msg 750 -1 colorspace Grey; +#X obj 727 -71 loadbang; +#X obj 599 155 pix_separator; +#X obj 447 187 separator; +#X obj 447 158 pix_separator; +#X obj 447 222 translateXYZ -2 0 0; +#X obj 599 219 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 447 96 pd vswitch; +#X obj 515 96 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 447 -150 gemhead; +#X msg 486 -37 device 0; +#X msg 495 -6 driver 1; +#X msg 472 -91 dialog; +#X msg 477 -61 device /dev/dv1394-0; +#X text 843 581 ( First contour ) Xorigin Yorigin Width Height; +#X text 728 463 min area in pixels (default 10x10); +#X text 825 479 max area in pixels (default 320x240); +#X obj 447 116 pix_resize 320 240; +#X text 787 341 maximum move of a countour ( default 20 ); +#X floatatom 765 245 5 0 0 0 - - -; +#X obj 599 252 pix_opencv_bgsubstract; +#X obj 527 394 loadbang; +#X msg 769 212 set; +#X text 803 214 reset background reference; +#X obj 599 498 pix_opencv_contours_boundingrect; +#X obj 447 38 pix_video; +#X text 16 268 TODO ::: in some cases i want to reuse losts tags inmediately +\, a message to do it is needed; +#X text 17 227 KNOWN BUGS :: in some input data all the blobs are tagged +with 0 label (if maxmove is very high????) ... if i put maxmove to +zero blobs are tagged in a crazy way....; +#X msg 527 414 50; +#X obj 837 244 loadbang; +#X msg 802 246 50; +#X obj 447 135 pix_rgba; +#X obj 447 561 square 2; +#X obj 599 561 square 2; +#X text 16 308 See also pix_opencv_contour_convexhull that output also +a contour rotation; +#X text 8 -153 Synopsis: [pix_opencv_contours_boundingrect]; +#X obj 88 419 cnv 15 100 60 empty empty DEPRECATED!! 20 12 0 18 -233017 +-258113 0; +#X text 74 445 please consider the use of pix_opencv_contours; +#X connect 8 0 85 1; +#X connect 9 0 85 2; +#X connect 14 0 10 0; +#X connect 14 1 11 0; +#X connect 14 2 12 0; +#X connect 14 3 13 0; +#X connect 15 0 14 0; +#X connect 18 0 85 0; +#X connect 19 0 18 0; +#X connect 21 0 23 0; +#X connect 23 0 85 0; +#X connect 24 0 85 0; +#X connect 25 0 24 0; +#X connect 26 0 27 0; +#X connect 27 0 85 0; +#X connect 34 0 85 0; +#X connect 35 0 34 0; +#X connect 36 0 38 0; +#X connect 37 0 40 0; +#X connect 38 0 85 0; +#X connect 40 0 85 0; +#X connect 43 0 55 0; +#X connect 44 0 94 0; +#X connect 46 0 47 0; +#X connect 47 0 46 0; +#X connect 48 0 93 0; +#X connect 49 0 67 0; +#X connect 50 0 53 0; +#X connect 51 0 52 0; +#X connect 52 0 55 1; +#X connect 53 0 54 0; +#X connect 54 0 55 0; +#X connect 55 0 68 1; +#X connect 55 2 51 0; +#X connect 56 0 55 0; +#X connect 57 0 56 0; +#X connect 59 0 55 0; +#X connect 59 0 86 0; +#X connect 60 0 55 0; +#X connect 61 0 55 0; +#X connect 62 0 59 0; +#X connect 62 0 57 0; +#X connect 63 0 49 0; +#X connect 64 0 66 0; +#X connect 65 0 64 0; +#X connect 66 0 48 0; +#X connect 67 0 81 0; +#X connect 68 0 78 0; +#X connect 69 0 68 2; +#X connect 70 0 86 0; +#X connect 71 0 86 0; +#X connect 72 0 86 0; +#X connect 73 0 86 0; +#X connect 74 0 86 0; +#X connect 78 0 92 0; +#X connect 80 0 81 1; +#X connect 81 0 85 0; +#X connect 82 0 89 0; +#X connect 83 0 81 0; +#X connect 85 0 44 0; +#X connect 85 1 15 0; +#X connect 85 2 32 0; +#X connect 86 0 68 0; +#X connect 89 0 8 0; +#X connect 90 0 91 0; +#X connect 91 0 80 0; +#X connect 92 0 65 0; +#X connect 92 0 63 0; diff --git a/help/pix_opencv_contours_convexhull-help.pd b/help/pix_opencv_contours_convexhull-help.pd new file mode 100644 index 0000000..a509af6 --- /dev/null +++ b/help/pix_opencv_contours_convexhull-help.pd @@ -0,0 +1,181 @@ +#N canvas 586 108 1018 740 10; +#X obj 588 591 cnv 15 255 67 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X floatatom 841 790 5 0 0 0 - - -; +#X floatatom 876 790 5 0 0 0 - - -; +#X floatatom 906 771 5 0 0 0 - - -; +#X floatatom 940 771 5 0 0 0 - - -; +#X obj 868 710 unpack 0 0 0 0 0 0; +#X floatatom 970 752 5 0 0 0 - - -; +#X floatatom 1004 752 5 0 0 0 - - -; +#X text 36 159 This object considers a contour to be analyzed any group +of white pixels in a black background \, for this reason you will find +useful to use pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect. +; +#X obj 606 634 pix_opencv_contours_convexhull; +#X text 1043 753 etc ...; +#X text 978 771 Second vertex point (X -Y); +#X text 916 790 First vertex point (X -Y); +#X text 37 212 pix_opencv_contours_convexhull works detecting the bigest +white area in the input image \, sometimes you will need to use pix_opencv_morphology +to transform the contours of the shape to be analyzed..; +#X text 37 123 pix_opencv_contours_convexhull :: Finds convexhull of +the bigest contour of a binary image.; +#X floatatom 694 685 5 0 0 0 - - -; +#X obj 725 54 gemhead; +#X obj 606 852 pix_texture; +#X obj 606 871 square 2; +#X obj 43 50 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 53 94 pd gemwin; +#X msg 53 76 create; +#X obj 454 848 pix_texture; +#X obj 454 876 square 2; +#X obj 606 381 separator; +#X obj 737 81 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 794 256 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 776 221 5 0 10000 1 frame# - -; +#X obj 737 110 openpanel; +#X msg 737 130 open \$1; +#X obj 725 239 pix_film; +#X msg 743 173 auto \$1; +#X obj 743 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X text 51 56 Create window and render; +#X msg 838 156 colorspace RGBA; +#X msg 943 156 colorspace RGB; +#X msg 1047 156 colorspace Grey; +#X obj 838 128 loadbang; +#X obj 605 352 pix_separator; +#X obj 454 384 separator; +#X obj 454 355 pix_separator; +#X obj 454 419 translateXYZ -2 0 0; +#X obj 606 416 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 547 309 pd vswitch; +#X obj 615 309 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 488 237 pix_video; +#X obj 488 49 gemhead; +#X msg 527 162 device 0; +#X msg 536 193 driver 1; +#X msg 513 108 dialog; +#X msg 518 138 device /dev/dv1394-0; +#X obj 606 481 pix_opencv_bgsubstract; +#X obj 606 449 pix_resize 320 240; +#X text 728 684 number of vertex of the convexhull; +#X floatatom 753 480 5 0 0 0 - - -; +#X obj 543 334 pix_rgba; +#X msg 756 453 set; +#X text 785 453 <- Set the background reference; +#X obj 62 419 cnv 15 300 60 empty empty DEPRECATED!! 100 20 0 18 -233017 +-258113 0; +#X text 74 445 please consider the use of pix_opencv_contours; +#X connect 5 0 1 0; +#X connect 5 1 2 0; +#X connect 5 2 3 0; +#X connect 5 3 4 0; +#X connect 5 4 6 0; +#X connect 5 5 7 0; +#X connect 9 0 17 0; +#X connect 9 1 15 0; +#X connect 9 2 5 0; +#X connect 16 0 30 0; +#X connect 17 0 18 0; +#X connect 20 0 21 0; +#X connect 21 0 20 0; +#X connect 22 0 23 0; +#X connect 24 0 42 0; +#X connect 25 0 28 0; +#X connect 26 0 27 0; +#X connect 27 0 30 1; +#X connect 28 0 29 0; +#X connect 29 0 30 0; +#X connect 30 0 43 1; +#X connect 30 2 26 0; +#X connect 31 0 30 0; +#X connect 32 0 31 0; +#X connect 34 0 30 0; +#X connect 34 0 45 0; +#X connect 35 0 30 0; +#X connect 36 0 30 0; +#X connect 37 0 34 0; +#X connect 37 0 32 0; +#X connect 38 0 24 0; +#X connect 39 0 41 0; +#X connect 40 0 39 0; +#X connect 41 0 22 0; +#X connect 42 0 52 0; +#X connect 43 0 55 0; +#X connect 44 0 43 2; +#X connect 45 0 43 0; +#X connect 46 0 45 0; +#X connect 47 0 45 0; +#X connect 48 0 45 0; +#X connect 49 0 45 0; +#X connect 50 0 45 0; +#X connect 51 0 9 0; +#X connect 52 0 51 0; +#X connect 54 0 51 1; +#X connect 55 0 40 0; +#X connect 55 0 38 0; +#X connect 56 0 51 0; diff --git a/help/pix_opencv_contours_convexity-help.pd b/help/pix_opencv_contours_convexity-help.pd new file mode 100644 index 0000000..350bd73 --- /dev/null +++ b/help/pix_opencv_contours_convexity-help.pd @@ -0,0 +1,191 @@ +#N canvas 227 366 1068 671 10; +#X obj 17 217 cnv 15 430 450 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 17 171 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 26 175 Arguments:; +#X obj 17 76 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 22 38 Class: pix_opencv; +#X text 23 22 Synopsis: [pix_opencv_calibration]; +#X text 47 195 none; +#X text 26 86 pix_opencv_contours_convexity :: Finds convexity defects +of the bigest contour of a binary image.; +#X text 25 228 This object considers a contour to be analyzed any group +of white pixels in a black background \, for this reason you will find +useful to use pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect. +; +#X text 26 281 pix_opencv_contours_boundingrect works detecting the +bigest white area in the input image \, sometimes you will need to +use pix_opencv_morphology to transform the contours of the shape to +be analyzed..; +#X obj 453 6 cnv 15 610 660 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 600 414 cnv 15 455 200 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 609 625 pix_texture; +#X obj 832 240 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 842 284 pd gemwin; +#X msg 842 266 destroy; +#X obj 458 627 pix_texture; +#X obj 458 646 square 2; +#X obj 609 291 separator; +#X obj 647 41 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 704 216 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 686 181 5 0 10000 1 frame# - -; +#X obj 647 70 openpanel; +#X msg 647 90 open \$1; +#X obj 635 199 pix_film; +#X msg 653 133 auto \$1; +#X obj 653 115 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X text 840 246 Create window and render; +#X msg 748 116 colorspace RGBA; +#X msg 758 137 colorspace RGB; +#X msg 772 156 colorspace Grey; +#X obj 748 88 loadbang; +#X obj 609 272 pix_separator; +#X obj 458 294 separator; +#X obj 458 275 pix_separator; +#X obj 458 312 translateXYZ -2 0 0; +#N canvas 1 158 405 225 vswitch 0; +#X obj 36 139 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 305 29 inlet; +#X obj 81 73 == 0; +#X obj 36 93 spigot 1; +#X obj 260 95 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 458 230 pd vswitch; +#X obj 526 230 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 458 197 pix_video; +#X msg 497 132 device 0; +#X msg 506 153 driver 1; +#X msg 483 93 dialog; +#X msg 488 113 device /dev/dv1394-0; +#X obj 609 368 pix_opencv_bgsubstract; +#X obj 609 329 pix_resize 320 240; +#X floatatom 756 369 5 0 0 0 - - -; +#X obj 609 388 pix_opencv_morphology; +#X floatatom 757 387 5 0 0 0 - - -; +#X obj 609 644 square 2; +#X floatatom 746 588 5 0 0 0 - - -; +#X floatatom 781 588 5 0 0 0 - - -; +#X floatatom 811 569 5 0 0 0 - - -; +#X floatatom 845 569 5 0 0 0 - - -; +#X obj 780 466 route 0 1 2 3 4; +#X obj 780 524 unpack 0 0 0 0 0 0; +#X floatatom 875 550 5 0 0 0 - - -; +#X floatatom 909 550 5 0 0 0 - - -; +#X text 819 589 Start point (X -Y); +#X text 883 569 Depth point (X -Y); +#X text 948 551 End point (X -Y); +#X floatatom 694 441 5 0 0 0 - - -; +#X text 730 445 number convexity defects in our detected contour; +#X text 692 484 A convexity defect is defined by 3 points. So for each +convexity defects we have ::; +#X obj 609 310 translateXYZ 2 0 0; +#X obj 609 421 pix_opencv_contours_convexity; +#X obj 458 251 pix_rgba; +#X msg 623 348 set; +#X text 652 347 <- Set the background reference; +#X text 790 369 <-Adjust threshold; +#X text 796 389 <-Adjust morphology if needed; +#X obj 635 14 gemhead; +#X obj 458 9 gemhead; +#X obj 62 419 cnv 15 300 60 empty empty DEPRECATED!! 100 20 0 18 -233017 +-258113 0; +#X text 74 445 please consider the use of pix_opencv_contours; +#X connect 12 0 48 0; +#X connect 14 0 15 0; +#X connect 15 0 14 0; +#X connect 16 0 17 0; +#X connect 18 0 63 0; +#X connect 19 0 22 0; +#X connect 20 0 21 0; +#X connect 21 0 24 1; +#X connect 22 0 23 0; +#X connect 23 0 24 0; +#X connect 24 0 36 1; +#X connect 24 2 20 0; +#X connect 25 0 24 0; +#X connect 26 0 25 0; +#X connect 28 0 24 0; +#X connect 28 0 38 0; +#X connect 29 0 24 0; +#X connect 30 0 24 0; +#X connect 31 0 28 0; +#X connect 31 0 26 0; +#X connect 32 0 18 0; +#X connect 33 0 35 0; +#X connect 34 0 33 0; +#X connect 35 0 16 0; +#X connect 36 0 65 0; +#X connect 37 0 36 2; +#X connect 38 0 36 0; +#X connect 39 0 38 0; +#X connect 40 0 38 0; +#X connect 41 0 38 0; +#X connect 42 0 38 0; +#X connect 43 0 46 0; +#X connect 44 0 43 0; +#X connect 45 0 43 1; +#X connect 46 0 64 0; +#X connect 47 0 46 1; +#X connect 53 0 54 0; +#X connect 54 0 49 0; +#X connect 54 1 50 0; +#X connect 54 2 51 0; +#X connect 54 3 52 0; +#X connect 54 4 55 0; +#X connect 54 5 56 0; +#X connect 63 0 44 0; +#X connect 64 0 12 0; +#X connect 64 1 60 0; +#X connect 64 2 53 0; +#X connect 65 0 34 0; +#X connect 65 0 32 0; +#X connect 66 0 43 0; +#X connect 70 0 24 0; +#X connect 71 0 38 0; diff --git a/help/pix_opencv_dft-help.pd b/help/pix_opencv_dft-help.pd new file mode 100644 index 0000000..5e71995 --- /dev/null +++ b/help/pix_opencv_dft-help.pd @@ -0,0 +1,157 @@ +#N canvas 522 300 1067 534 10; +#X obj 6 109 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 6 63 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 15 67 Arguments:; +#X obj 6 -32 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 11 -70 Class: pix_opencv; +#X text 12 -86 Synopsis: [pix_opencv_calibration]; +#X text 36 87 none; +#X obj 443 -91 cnv 15 610 520 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 769 -82 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 774 -38 pd gemwin; +#X msg 774 -59 create; +#X text 775 -77 Create window and render; +#X obj 598 236 cnv 15 450 120 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 601 329 pix_opencv_dft; +#X text 18 116 written by yves degoyon ( ydegoyon@gmail.com ); +#X text 16 -7 this can be used for pattern matching; +#X text 18 -24 pix_opencv_dft : discrete fourier transform; +#X msg 616 302 bang; +#X obj 608 242 loadbang; +#X obj 608 279 metro 100; +#X text 678 279 <-- Calculate Discrete Fourier Transform of the pattern +; +#X text 698 303 frame so it is just processed when it receives a bang +; +#X obj 617 -76 gemhead; +#X obj 601 367 pix_texture; +#X obj 601 386 square 2; +#X obj 450 369 pix_texture; +#X obj 450 389 square 2; +#X obj 601 193 separator; +#X obj 629 -49 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 686 126 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 668 91 5 0 10000 1 frame# - -; +#X obj 629 -20 openpanel; +#X msg 629 0 open \$1; +#X obj 617 109 pix_film; +#X msg 635 43 auto \$1; +#X obj 635 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X msg 730 26 colorspace RGBA; +#X msg 741 47 colorspace RGB; +#X msg 748 69 colorspace Grey; +#X obj 730 -2 loadbang; +#X obj 601 175 pix_separator; +#X obj 450 194 separator; +#X obj 450 176 pix_separator; +#X obj 450 213 translateXYZ -2 0 0; +#X obj 601 213 translateXYZ 2 0 0; +#N canvas 1 202 234 181 vswitch 0; +#X obj 36 113 outlet; +#X obj 36 26 inlet; +#X obj 100 25 inlet; +#X obj 145 25 inlet; +#X obj 36 83 spigot 1; +#X obj 100 83 spigot 0; +#X obj 81 62 == 0; +#X connect 1 0 4 0; +#X connect 2 0 5 0; +#X connect 3 0 6 0; +#X connect 3 0 5 1; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 4 1; +#X restore 450 133 pd vswitch; +#X obj 518 133 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 450 107 pix_video; +#X obj 450 -81 gemhead; +#X msg 479 54 device 0; +#X msg 488 73 driver 1; +#X msg 465 16 dialog; +#X msg 470 36 device /dev/dv1394-0; +#X obj 450 154 pix_rgba; +#X text 700 290 pix_opencv_dft is too greedy to be calculayed for every +; +#X obj 608 261 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X connect 9 0 10 0; +#X connect 10 0 9 0; +#X connect 13 0 23 0; +#X connect 17 0 13 0; +#X connect 18 0 55 0; +#X connect 19 0 13 0; +#X connect 22 0 33 0; +#X connect 23 0 24 0; +#X connect 25 0 26 0; +#X connect 27 0 44 0; +#X connect 28 0 31 0; +#X connect 29 0 30 0; +#X connect 30 0 33 1; +#X connect 31 0 32 0; +#X connect 32 0 33 0; +#X connect 33 0 45 1; +#X connect 33 2 29 0; +#X connect 34 0 33 0; +#X connect 35 0 34 0; +#X connect 36 0 33 0; +#X connect 36 0 47 0; +#X connect 37 0 33 0; +#X connect 38 0 33 0; +#X connect 39 0 36 0; +#X connect 39 0 35 0; +#X connect 40 0 27 0; +#X connect 41 0 43 0; +#X connect 42 0 41 0; +#X connect 43 0 25 0; +#X connect 44 0 13 0; +#X connect 45 0 53 0; +#X connect 46 0 45 2; +#X connect 47 0 45 0; +#X connect 48 0 47 0; +#X connect 49 0 47 0; +#X connect 50 0 47 0; +#X connect 51 0 47 0; +#X connect 52 0 47 0; +#X connect 53 0 42 0; +#X connect 53 0 40 0; +#X connect 55 0 19 0; diff --git a/help/pix_opencv_distrans-help.pd b/help/pix_opencv_distrans-help.pd new file mode 100644 index 0000000..2068f6f --- /dev/null +++ b/help/pix_opencv_distrans-help.pd @@ -0,0 +1,162 @@ +#N canvas 553 329 1017 532 10; +#X obj 3 62 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 3 16 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 12 20 Arguments:; +#X obj 3 -79 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 8 -117 Class: pix_opencv; +#X text 34 33 none; +#X obj 445 -137 cnv 15 560 520 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 596 197 cnv 15 400 130 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 602 300 pix_opencv_distrans; +#X msg 672 207 voronoi \$1; +#X obj 763 207 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 782 207 switch Voronoi diagram mode on/off; +#X text 731 233 use 3x3 mask; +#X text 741 252 use 5x5 mask; +#X text 747 271 use precise distance transform; +#X text 802 298 edge threshold; +#X msg 694 271 mask 0; +#X msg 684 252 mask 5; +#X msg 674 232 mask 3; +#X text 11 68 it's a morphology filter that can be used to preprocess +video frames; +#X text 12 93 written by lluis gomez i bigorda ( lluisgomez@hangar.org +); +#X text 9 -75 pix_opencv_distrans : distance processing; +#X floatatom 755 298 5 0 0 0 - - -; +#X obj 204 302 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 209 346 pd gemwin; +#X msg 209 325 create; +#X text 210 307 Create window and render; +#X obj 687 -125 gemhead; +#X obj 602 329 pix_texture; +#X obj 602 350 square 2; +#X obj 450 329 pix_texture; +#X obj 450 350 square 2; +#X obj 602 155 separator; +#X obj 699 -98 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 756 77 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 738 42 5 0 10000 1 frame# - -; +#X obj 699 -69 openpanel; +#X msg 699 -49 open \$1; +#X obj 687 60 pix_film; +#X msg 705 -6 auto \$1; +#X obj 705 -24 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X msg 800 -23 colorspace RGBA; +#X msg 808 -4 colorspace RGB; +#X msg 820 15 colorspace Grey; +#X obj 800 -51 loadbang; +#X obj 602 136 pix_separator; +#X obj 450 155 separator; +#X obj 450 136 pix_separator; +#X obj 450 173 translateXYZ -2 0 0; +#X obj 602 174 translateXYZ 2 0 0; +#N canvas 1 83 450 300 vswitch 0; +#X obj 36 124 outlet; +#X obj 36 26 inlet; +#X obj 130 29 inlet; +#X obj 175 28 inlet; +#X obj 81 73 == 0; +#X obj 36 93 spigot 1; +#X obj 130 96 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 450 94 pd vswitch; +#X obj 518 94 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 450 58 pix_video; +#X obj 450 -130 gemhead; +#X msg 489 -5 device 0; +#X msg 498 14 driver 1; +#X msg 475 -44 dialog; +#X msg 480 -24 device /dev/dv1394-0; +#X obj 450 115 pix_rgba; +#X text 9 -133 Synopsis: [pix_opencv_distrans<]; +#X connect 8 0 28 0; +#X connect 9 0 8 0; +#X connect 10 0 9 0; +#X connect 16 0 8 0; +#X connect 17 0 8 0; +#X connect 18 0 8 0; +#X connect 22 0 8 1; +#X connect 24 0 25 0; +#X connect 25 0 24 0; +#X connect 27 0 38 0; +#X connect 28 0 29 0; +#X connect 30 0 31 0; +#X connect 32 0 49 0; +#X connect 33 0 36 0; +#X connect 34 0 35 0; +#X connect 35 0 38 1; +#X connect 36 0 37 0; +#X connect 37 0 38 0; +#X connect 38 0 50 1; +#X connect 38 2 34 0; +#X connect 39 0 38 0; +#X connect 40 0 39 0; +#X connect 41 0 38 0; +#X connect 41 0 52 0; +#X connect 42 0 38 0; +#X connect 43 0 38 0; +#X connect 44 0 41 0; +#X connect 44 0 40 0; +#X connect 45 0 32 0; +#X connect 46 0 48 0; +#X connect 47 0 46 0; +#X connect 48 0 30 0; +#X connect 49 0 8 0; +#X connect 50 0 58 0; +#X connect 51 0 50 2; +#X connect 52 0 50 0; +#X connect 53 0 52 0; +#X connect 54 0 52 0; +#X connect 55 0 52 0; +#X connect 56 0 52 0; +#X connect 57 0 52 0; +#X connect 58 0 47 0; +#X connect 58 0 45 0; diff --git a/help/pix_opencv_edge-help.pd b/help/pix_opencv_edge-help.pd new file mode 100644 index 0000000..ae7f578 --- /dev/null +++ b/help/pix_opencv_edge-help.pd @@ -0,0 +1,144 @@ +#N canvas 663 231 914 465 10; +#X obj 8 158 cnv 15 430 250 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 8 112 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 17 116 Arguments:; +#X obj 7 16 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 38 136 none; +#X obj 444 -41 cnv 15 460 450 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 597 324 cnv 15 300 40 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 604 330 pix_opencv_edge; +#X floatatom 733 329 5 0 0 0 - - -, f 5; +#X text 776 328 edge threshold; +#X text 23 165 written by lluis gomez i bigorda ( lluisgomez@hangar.org +); +#X obj 209 334 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 50 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 214 378 pd gemwin; +#X msg 214 357 destroy; +#X text 215 339 Create window and render; +#X obj 620 -28 gemhead; +#X obj 604 367 pix_texture; +#X obj 604 385 square 2; +#X obj 453 367 pix_texture; +#X obj 453 385 square 2; +#X obj 604 279 separator; +#X obj 632 -1 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 689 174 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 671 139 5 0 10000 1 frame# - -, f 5; +#X obj 632 28 openpanel; +#X msg 632 48 open \$1; +#X obj 620 157 pix_film; +#X msg 638 91 auto \$1; +#X obj 638 73 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 733 74 colorspace RGBA; +#X msg 741 93 colorspace RGB; +#X msg 753 113 colorspace Grey; +#X obj 733 46 loadbang; +#X obj 604 260 pix_separator; +#X obj 453 279 separator; +#X obj 453 260 pix_separator; +#X obj 453 299 translateXYZ -2 0 0; +#X obj 604 299 translateXYZ 2 0 0; +#N canvas 1 83 450 300 vswitch 0; +#X obj 36 117 outlet; +#X obj 36 26 inlet; +#X obj 140 29 inlet; +#X obj 185 28 inlet; +#X obj 81 60 == 0; +#X obj 36 81 spigot 1; +#X obj 140 85 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 453 207 pd vswitch; +#X obj 521 207 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 453 155 pix_video; +#X obj 453 -33 gemhead; +#X msg 492 80 device 0; +#X msg 478 26 dialog; +#X msg 483 56 device /dev/dv1394-0; +#X obj 453 230 pix_grey; +#X text 16 -4 pix_opencv_edge; +#X text 15 20 edge detection filter; +#X msg 501 111 driver 0; +#X connect 7 0 16 0; +#X connect 8 0 7 1; +#X connect 12 0 13 0; +#X connect 13 0 12 0; +#X connect 15 0 26 0; +#X connect 16 0 17 0; +#X connect 18 0 19 0; +#X connect 20 0 37 0; +#X connect 21 0 24 0; +#X connect 22 0 23 0; +#X connect 23 0 26 1; +#X connect 24 0 25 0; +#X connect 25 0 26 0; +#X connect 26 0 38 1; +#X connect 26 2 22 0; +#X connect 27 0 26 0; +#X connect 28 0 27 0; +#X connect 29 0 26 0; +#X connect 29 0 40 0; +#X connect 30 0 26 0; +#X connect 31 0 26 0; +#X connect 32 0 29 0; +#X connect 32 0 28 0; +#X connect 33 0 20 0; +#X connect 34 0 36 0; +#X connect 35 0 34 0; +#X connect 36 0 18 0; +#X connect 37 0 7 0; +#X connect 38 0 45 0; +#X connect 39 0 38 2; +#X connect 40 0 38 0; +#X connect 41 0 40 0; +#X connect 42 0 40 0; +#X connect 43 0 40 0; +#X connect 44 0 40 0; +#X connect 45 0 35 0; +#X connect 45 0 33 0; +#X connect 48 0 40 0; diff --git a/help/pix_opencv_facetracker-help.pd b/help/pix_opencv_facetracker-help.pd new file mode 100644 index 0000000..1810aae --- /dev/null +++ b/help/pix_opencv_facetracker-help.pd @@ -0,0 +1,415 @@ +#N canvas 478 34 785 700 10; +#X obj 473 46 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 12 67 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 12 318 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 14 326 Inlets:; +#X obj 12 278 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 21 277 Arguments:; +#X text 13 497 Outlets:; +#X text 479 31 Example:; +#X text 59 32 Class: pix_opencv; +#X text 67 287 none; +#X obj 354 536 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 1 162 450 300 gemwin 0; +#X obj 132 156 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 198 112 destroy; +#X msg 132 132 reset \, dimen 640 480 \, offset 10 640 \, create \, +1; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 7 0; +#X connect 3 1 5 0; +#X connect 3 1 6 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 359 575 pd gemwin; +#X msg 359 556 destroy; +#X text 355 535 Create window:; +#X text 26 508 Outlet 1: gemlist output; +#X text 17 730 bug \, feedback \, comment... on the pd-list; +#X obj 477 114 cnv 15 280 160 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 488 58 gemhead 1; +#X obj 488 291 pix_texture; +#X msg 500 190 reset; +#X obj 488 88 pix_video; +#X text 31 340 Inlet 1: gemlist input; +#X text 38 16 Synopsis: [pix_opencv_facetracker]; +#X text 12 71 Description: finds face; +#X text 39 87 [pix_opencv_facetracker] uses the FaceTracker library +by Jason Saragih and Kyle Macdonald to track face features.; +#X text 27 710 by antoine villeret - 2013; +#X msg 548 190 show \$1; +#X obj 548 171 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 31 355 Inlet 1: message reset : reset the tracker; +#X text 31 370 Inlet 1: message show : draw tracking data on image +; +#X msg 604 190 tolerance \$1; +#X floatatom 604 173 5 0 0 0 - - -; +#X floatatom 688 173 5 0 0 0 - - -; +#X msg 688 190 clamp \$1; +#X msg 576 142 filter \$1; +#X floatatom 576 125 5 0 0 0 - - -; +#X text 31 443 Inlet 1: message filter : Maximum number of optimization +steps to perform. default 5; +#X text 31 413 Inlet 1: message clamp : shape model parameters clamping +factor (in standard dev's). default 3; +#X text 31 385 Inlet 1: message tolerance : convergence tolerance of +optimization. default 0.01; +#N canvas 1373 557 410 415 draw_contour_gemvertexbuffer 0; +#N canvas 1 100 548 451 mouse 0; +#X obj 25 145 translateXYZ -0.5 -0.5 0; +#X obj 25 122 scaleXYZ 10.6666 -8 1; +#X obj 25 97 alpha 0; +#X obj 25 71 gemhead 10000; +#X obj 25 52 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 221 203 route float; +#X obj 221 225 sel 1; +#X obj 221 182 route gem_state; +#X msg 44 191 position MOUTH; +#X obj 25 167 t a b b; +#X obj 25 375 gemvertexbuffer 200; +#X msg 81 253 draw lineloop \, colorG colorR \, colorA colorA \, draw_range +0 12; +#X connect 0 0 9 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 7 0; +#X connect 4 0 3 0; +#X connect 5 0 6 0; +#X connect 6 0 11 0; +#X connect 7 0 5 0; +#X connect 8 0 10 0; +#X connect 9 0 10 0; +#X connect 9 1 8 0; +#X connect 11 0 10 0; +#X restore 38 28 pd mouse; +#N canvas 1 95 631 351 jaw 0; +#X obj 128 124 translateXYZ -0.5 -0.5 0; +#X obj 128 101 scaleXYZ 10.6666 -8 1; +#X obj 128 76 alpha 0; +#X obj 128 40 gemhead 10000; +#X obj 128 146 t a b b; +#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 156 170 position JAW; +#X obj 128 304 gemvertexbuffer 200; +#X obj 264 182 route float; +#X obj 264 204 sel 1; +#X obj 264 161 route gem_state; +#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \, +draw_range 0 17; +#X connect 0 0 4 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 10 0; +#X connect 4 0 7 0; +#X connect 4 1 6 0; +#X connect 5 0 3 0; +#X connect 6 0 7 0; +#X connect 8 0 9 0; +#X connect 9 0 11 0; +#X connect 10 0 8 0; +#X connect 11 0 7 0; +#X restore 38 78 pd jaw; +#N canvas 1 110 631 351 left_eye 0; +#X obj 128 124 translateXYZ -0.5 -0.5 0; +#X obj 128 101 scaleXYZ 10.6666 -8 1; +#X obj 128 76 alpha 0; +#X obj 128 40 gemhead 10000; +#X obj 128 146 t a b b; +#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 128 304 gemvertexbuffer 200; +#X obj 280 182 route float; +#X obj 280 204 sel 1; +#X obj 280 161 route gem_state; +#X msg 156 170 position LEFT_EYE; +#X msg 168 252 draw lineloop \, colorG colorR \, colorA colorA \, draw_range +0 6; +#X connect 0 0 4 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 9 0; +#X connect 4 0 6 0; +#X connect 4 1 10 0; +#X connect 5 0 3 0; +#X connect 7 0 8 0; +#X connect 8 0 11 0; +#X connect 9 0 7 0; +#X connect 10 0 6 0; +#X connect 11 0 6 0; +#X restore 38 98 pd left_eye; +#N canvas 1 115 631 351 right_eye 0; +#X obj 128 124 translateXYZ -0.5 -0.5 0; +#X obj 128 101 scaleXYZ 10.6666 -8 1; +#X obj 128 76 alpha 0; +#X obj 128 40 gemhead 10000; +#X obj 128 146 t a b b; +#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 128 304 gemvertexbuffer 200; +#X obj 280 182 route float; +#X obj 280 204 sel 1; +#X obj 280 161 route gem_state; +#X msg 156 170 position RIGHT_EYE; +#X msg 168 252 draw lineloop \, colorG colorR \, colorA colorA \, draw_range +0 6; +#X connect 0 0 4 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 9 0; +#X connect 4 0 6 0; +#X connect 4 1 10 0; +#X connect 5 0 3 0; +#X connect 7 0 8 0; +#X connect 8 0 11 0; +#X connect 9 0 7 0; +#X connect 10 0 6 0; +#X connect 11 0 6 0; +#X restore 38 118 pd right_eye; +#N canvas 352 670 631 351 right_eyebrow 0; +#X obj 128 124 translateXYZ -0.5 -0.5 0; +#X obj 128 101 scaleXYZ 10.6666 -8 1; +#X obj 128 76 alpha 0; +#X obj 128 40 gemhead 10000; +#X obj 128 146 t a b b; +#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 128 304 gemvertexbuffer 200; +#X obj 318 176 route float; +#X obj 318 198 sel 1; +#X obj 318 155 route gem_state; +#X msg 156 170 position RIGHT_EYEBROW; +#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \, +draw_range 0 5; +#X connect 0 0 4 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 9 0; +#X connect 4 0 6 0; +#X connect 4 1 10 0; +#X connect 5 0 3 0; +#X connect 7 0 8 0; +#X connect 8 0 11 0; +#X connect 9 0 7 0; +#X connect 10 0 6 0; +#X connect 11 0 6 0; +#X restore 38 138 pd right_eyebrow; +#N canvas 596 689 631 351 right_eyebrow 0; +#X obj 128 124 translateXYZ -0.5 -0.5 0; +#X obj 128 101 scaleXYZ 10.6666 -8 1; +#X obj 128 76 alpha 0; +#X obj 128 40 gemhead 10000; +#X obj 128 146 t a b b; +#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 128 304 gemvertexbuffer 200; +#X obj 318 176 route float; +#X obj 318 198 sel 1; +#X obj 318 155 route gem_state; +#X msg 156 170 position LEFT_EYEBROW; +#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \, +draw_range 0 5; +#X connect 0 0 4 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 9 0; +#X connect 4 0 6 0; +#X connect 4 1 10 0; +#X connect 5 0 3 0; +#X connect 7 0 8 0; +#X connect 8 0 11 0; +#X connect 9 0 7 0; +#X connect 10 0 6 0; +#X connect 11 0 6 0; +#X restore 38 158 pd right_eyebrow; +#N canvas 592 699 631 351 nose_base 0; +#X obj 128 124 translateXYZ -0.5 -0.5 0; +#X obj 128 101 scaleXYZ 10.6666 -8 1; +#X obj 128 76 alpha 0; +#X obj 128 40 gemhead 10000; +#X obj 128 146 t a b b; +#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 128 304 gemvertexbuffer 200; +#X obj 318 176 route float; +#X obj 318 198 sel 1; +#X obj 318 155 route gem_state; +#X msg 156 170 position NOSE_BASE; +#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \, +draw_range 0 5; +#X connect 0 0 4 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 9 0; +#X connect 4 0 6 0; +#X connect 4 1 10 0; +#X connect 5 0 3 0; +#X connect 7 0 8 0; +#X connect 8 0 11 0; +#X connect 9 0 7 0; +#X connect 10 0 6 0; +#X connect 11 0 6 0; +#X restore 38 178 pd nose_base; +#N canvas 592 699 631 351 nose_bridge 0; +#X obj 128 124 translateXYZ -0.5 -0.5 0; +#X obj 128 101 scaleXYZ 10.6666 -8 1; +#X obj 128 76 alpha 0; +#X obj 128 40 gemhead 10000; +#X obj 128 146 t a b b; +#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 128 304 gemvertexbuffer 200; +#X obj 318 176 route float; +#X obj 318 198 sel 1; +#X obj 318 155 route gem_state; +#X msg 156 170 position NOSE_BRIDGE; +#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \, +draw_range 0 4; +#X connect 0 0 4 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 9 0; +#X connect 4 0 6 0; +#X connect 4 1 10 0; +#X connect 5 0 3 0; +#X connect 7 0 8 0; +#X connect 8 0 11 0; +#X connect 9 0 7 0; +#X connect 10 0 6 0; +#X connect 11 0 6 0; +#X restore 38 198 pd nose_bridge; +#N canvas 980 217 548 451 inner_mouse 0; +#X obj 25 145 translateXYZ -0.5 -0.5 0; +#X obj 25 122 scaleXYZ 10.6666 -8 1; +#X obj 25 97 alpha 0; +#X obj 25 71 gemhead 10000; +#X obj 25 52 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 221 203 route float; +#X obj 221 225 sel 1; +#X obj 221 182 route gem_state; +#X obj 25 167 t a b b; +#X obj 25 375 gemvertexbuffer 200; +#X msg 45 191 position INNER_MOUTH; +#X floatatom 157 77 5 0 0 0 - - -; +#X msg 81 253 draw lineloop \, colorG colorR \, colorA colorA \, draw_range +0 8; +#X connect 0 0 8 0; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X connect 3 0 2 0; +#X connect 3 0 7 0; +#X connect 4 0 3 0; +#X connect 5 0 6 0; +#X connect 6 0 12 0; +#X connect 7 0 5 0; +#X connect 8 0 9 0; +#X connect 8 1 10 0; +#X connect 10 0 9 0; +#X connect 11 0 1 1; +#X connect 12 0 9 0; +#X restore 38 48 pd inner_mouse; +#X restore 490 366 pd draw_contour_gemvertexbuffer; +#X obj 488 313 rectangle 5.3333 4; +#N canvas 1 205 450 300 settab 0; +#X obj 60 76 loadbang; +#X obj 60 224 outlet; +#X msg 73 178 settab OUTER_MOUTH MOUTH; +#X msg 60 96 settab LEFT_EYE LEFT_EYE \, settab RIGHT_EYE RIGHT_EYE +\, settab OUTER_MOUTH MOUTH \, settab JAW JAW \, settab NOSE_BRIDGE +NOSE_BRIDGE \, settab NOSE_BASE NOSE_BASE \, settab INNER_MOUTH INNER_MOUTH +\, settab RIGHT_EYEBROW RIGHT_EYEBROW \, settab LEFT_EYEBROW LEFT_EYEBROW +; +#X connect 0 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 1 0; +#X restore 501 150 pd settab; +#N canvas 118 701 450 349 fill_tables 0; +#X obj 196 84 until; +#X obj 196 106 f; +#X obj 221 106 + 1; +#X obj 196 20 loadbang; +#X obj 196 148 t b f; +#X obj 196 200 tabwrite colorR; +#X obj 186 220 tabwrite colorA; +#X msg 196 170 1; +#X obj 196 40 t b b; +#X msg 250 67 0; +#X obj 177 21 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X msg 196 63 200; +#X obj -111 45 table LEFT_EYE 100; +#X obj -111 65 table RIGHT_EYE 100; +#X obj -111 85 table MOUTH 100; +#X obj -111 145 table JAW 100; +#X obj -111 165 table NOSE_BRIDGE 100; +#X obj -111 105 table INNER_MOUTH 100; +#X obj -111 185 table NOSE_BASE 100; +#X obj -111 205 table FACE_OUTLINE 100; +#X obj -111 264 table colorR 100; +#X obj -110 285 table colorA 100; +#X obj -111 5 table LEFT_EYEBROW 100; +#X obj -111 25 table RIGHT_EYEBROW 100; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 0 4 0; +#X connect 2 0 1 1; +#X connect 3 0 8 0; +#X connect 4 0 7 0; +#X connect 4 1 5 1; +#X connect 4 1 6 1; +#X connect 7 0 5 0; +#X connect 7 0 6 0; +#X connect 8 0 11 0; +#X connect 8 1 9 0; +#X connect 9 0 1 1; +#X connect 10 0 8 0; +#X connect 11 0 0 0; +#X restore 490 386 pd fill_tables; +#X obj 488 219 pix_opencv_facetracker; +#X text 27 137 supported features : LEFT_EYEBROW \, RIGHT_EYEBROW \, +LEFT_EYE \, RIGHT_EYE \, LEFT_JAW \, RIGHT_JAW \, JAW \, OUTER_MOUTH +\, INNER_MOUTH \, NOSE_BRIDGE \, NOSE_BASE \, FACE_OUTLINE \, ALL_FEATURES +; +#X obj 488 119 pix_rgba; +#X connect 11 0 12 0; +#X connect 12 0 11 0; +#X connect 17 0 20 0; +#X connect 18 0 40 0; +#X connect 19 0 43 0; +#X connect 20 0 45 0; +#X connect 26 0 43 0; +#X connect 27 0 26 0; +#X connect 30 0 43 0; +#X connect 31 0 30 0; +#X connect 32 0 33 0; +#X connect 33 0 43 0; +#X connect 34 0 43 0; +#X connect 35 0 34 0; +#X connect 41 0 43 0; +#X connect 43 0 18 0; +#X connect 45 0 43 0; diff --git a/help/pix_opencv_findchessboardcorners-help.pd b/help/pix_opencv_findchessboardcorners-help.pd new file mode 100644 index 0000000..40bc6f1 --- /dev/null +++ b/help/pix_opencv_findchessboardcorners-help.pd @@ -0,0 +1,185 @@ +#N canvas 259 316 996 571 10; +#X obj -64 52 cnv 15 430 350 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj -64 6 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text -55 10 Arguments:; +#X obj -65 -90 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text -34 26 none; +#X obj 372 -157 cnv 15 540 560 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 525 238 cnv 15 380 120 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 530 -150 gemhead; +#X obj 531 365 pix_texture; +#X obj 685 161 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 695 205 pd gemwin; +#X msg 695 187 destroy; +#X obj 379 365 pix_texture; +#X obj 531 196 separator; +#X obj 542 -131 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 599 44 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 581 9 5 0 10000 1 frame# - -; +#X obj 542 -102 openpanel; +#X msg 542 -82 open \$1; +#X obj 530 27 pix_film; +#X msg 548 -39 auto \$1; +#X obj 548 -57 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X text 693 167 Create window and render; +#X msg 605 -39 colorspace RGBA; +#X msg 612 -16 colorspace Grey; +#X obj 605 -79 loadbang; +#X obj 531 178 pix_separator; +#X obj 379 196 separator; +#X obj 379 177 pix_separator; +#X obj 379 214 translateXYZ -2 0 0; +#X obj 531 214 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 379 67 pd vswitch; +#X obj 456 67 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 379 -150 gemhead; +#X msg 413 -80 device 0; +#X msg 404 -104 dialog; +#X obj 379 25 pix_video; +#X obj 379 386 square 2; +#X obj 531 387 square 2; +#X obj 531 331 pix_opencv_findchessboardcorners; +#X text -57 -82 pix_opencv_findchessboardcorners :: Search inner corners +coordinates of a known chessboard pattern; +#X text -55 61 It is useful to calibration severals cameras togehter +or camera(s) and video beamer(s)...; +#X obj 379 149 pix_gray; +#X msg 427 -29 driver 0; +#X obj 720 383 print; +#X obj 449 130 spigot; +#X obj 449 149 pix_rgba; +#X obj 379 130 spigot 1; +#X obj 482 108 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 499 108 switch gray/color; +#X text 683 363 print out raw corners coordinates...; +#X obj 545 267 pack 6 7; +#X floatatom 545 247 5 0 0 0 - - -; +#X floatatom 598 247 5 0 0 0 - - -; +#X msg 423 -54 device /dev/video0; +#X msg 545 287 patternSize \$1 \$2; +#X text 555 307 pattern size (number of inner corners in each direction) +; +#X obj 424 109 == 0; +#X obj 379 86 pix_resize 640 480; +#X obj 456 45 loadbang; +#X text -58 -110 pix_opencv_findchessboardcorners :; +#X connect 7 0 19 0; +#X connect 8 0 38 0; +#X connect 10 0 11 0; +#X connect 11 0 10 0; +#X connect 12 0 37 0; +#X connect 13 0 30 0; +#X connect 14 0 17 0; +#X connect 15 0 16 0; +#X connect 16 0 19 1; +#X connect 17 0 18 0; +#X connect 18 0 19 0; +#X connect 19 0 31 1; +#X connect 19 2 15 0; +#X connect 20 0 19 0; +#X connect 21 0 20 0; +#X connect 23 0 19 0; +#X connect 23 0 36 0; +#X connect 24 0 19 0; +#X connect 25 0 23 0; +#X connect 25 0 21 0; +#X connect 26 0 13 0; +#X connect 27 0 29 0; +#X connect 28 0 27 0; +#X connect 29 0 12 0; +#X connect 30 0 39 0; +#X connect 31 0 58 0; +#X connect 32 0 31 2; +#X connect 33 0 36 0; +#X connect 34 0 36 0; +#X connect 35 0 36 0; +#X connect 36 0 31 0; +#X connect 39 0 8 0; +#X connect 39 1 44 0; +#X connect 42 0 28 0; +#X connect 42 0 26 0; +#X connect 43 0 36 0; +#X connect 45 0 46 0; +#X connect 46 0 26 0; +#X connect 46 0 28 0; +#X connect 47 0 42 0; +#X connect 48 0 45 1; +#X connect 48 0 57 0; +#X connect 51 0 55 0; +#X connect 52 0 51 0; +#X connect 53 0 51 1; +#X connect 54 0 36 0; +#X connect 55 0 39 0; +#X connect 57 0 47 1; +#X connect 58 0 47 0; +#X connect 58 0 45 0; +#X connect 59 0 32 0; diff --git a/help/pix_opencv_floodfill-help.pd b/help/pix_opencv_floodfill-help.pd new file mode 100644 index 0000000..4655918 --- /dev/null +++ b/help/pix_opencv_floodfill-help.pd @@ -0,0 +1,209 @@ +#N canvas 194 115 986 717 10; +#X obj -177 159 cnv 15 430 520 empty empty empty 20 12 0 14 -233017 +-66577 0; +#X obj -177 113 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 +-66577 0; +#X text -168 117 Arguments:; +#X obj -177 18 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text -147 137 none; +#X obj 260 -34 cnv 15 520 710 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 30 604 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 112 15 loadbang; +#X msg 62 93 reset; +#X obj 49 135 outlet; +#X msg 107 89 dimen 320 240; +#X obj 107 51 t b b b; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 4 2 1 0; +#X restore 268 69 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 188 161 dimen 320 240; +#X obj 164 126 t b b b; +#X msg 279 161 frame 25; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 1 9 0; +#X connect 10 2 11 0; +#X connect 11 0 6 0; +#X restore 37 650 pd gemwin; +#X msg 38 628 create; +#X text 38 607 Create window and render; +#X obj 268 273 cnv 15 500 350 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 275 516 pix_opencv_floodfill; +#X text -170 172 used in tracking algorithms as an object selector +; +#X text -172 201 and Yves Degoyon ( ydegoyon@gmail.com ); +#X text -175 23 pdp_opencv_floodfill : mark image components with a +specific color; +#X text -170 187 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +); +#X floatatom 366 468 5 0 0 0 - - -; +#X floatatom 374 489 5 0 0 0 - - -; +#X msg 310 299 mark \$1 \$2; +#X msg 357 448 color \$1; +#X obj 419 449 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 445 447 activate color mode ( default : on ); +#X msg 341 374 fillcolor 1 255 0 123; +#X text 479 375 fillcolor of nth component ( 1 < n < 10 ); +#X msg 325 327 delete 1; +#X msg 339 349 clear; +#X text 385 327 delete a component ( 1 <= index <= 10 ); +#X text 388 349 delete all components; +#X text 439 410 set connectivity ( default 4 ); +#X text 408 468 lower tolerance ( default 20 ); +#X text 414 488 upper tolerance ( default 20 ); +#X obj 392 544 route 0 1 2 3 4 5 6 7 8 9; +#X floatatom 392 587 5 0 0 0 - - -; +#X floatatom 428 588 5 0 0 0 - - -; +#X floatatom 464 588 5 0 0 0 - - -; +#X floatatom 500 588 5 0 0 0 - - -; +#X obj 392 565 unpack f f f f; +#X text 394 604 X; +#X text 431 604 Y; +#X text 463 605 Width; +#X text 501 605 Height; +#X text 551 545 detected components; +#X msg 345 399 connectivity 4; +#X msg 347 422 connectivity 8; +#X obj 513 -1 gemhead; +#X obj 275 628 pix_texture; +#X obj 525 26 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 582 201 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 564 166 5 0 10000 1 frame# - -; +#X obj 525 55 openpanel; +#X msg 525 75 open \$1; +#X obj 513 184 pix_film; +#X msg 531 118 auto \$1; +#X obj 531 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X msg 626 101 colorspace RGBA; +#X msg 637 121 colorspace RGB; +#X msg 650 140 colorspace Grey; +#X obj 626 73 loadbang; +#N canvas 2 83 450 300 vswitch 0; +#X obj 36 131 outlet; +#X obj 36 26 inlet; +#X obj 130 26 inlet; +#X obj 175 26 inlet; +#X obj 81 73 == 0; +#X obj 36 93 spigot 1; +#X obj 130 95 spigot 0; +#X connect 1 0 5 0; +#X connect 2 0 6 0; +#X connect 3 0 4 0; +#X connect 3 0 6 1; +#X connect 4 0 5 1; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X restore 276 214 pd vswitch; +#X obj 344 214 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 276 182 pix_video; +#X obj 276 -6 gemhead; +#X msg 315 107 device 0; +#X msg 324 138 driver 1; +#X msg 301 53 dialog; +#X msg 306 83 device /dev/dv1394-0; +#X obj 275 647 rectangle 5.3 4; +#X text 384 299 mark x y : mark a component; +#X obj 276 252 pix_resize 320 240; +#X obj 276 233 pix_rgba; +#N canvas 1 83 450 300 gemmouse 0; +#X obj 74 28 gemmouse; +#X obj 130 135 f; +#X obj 100 134 f; +#X obj 144 106 t b b; +#X obj 100 162 pack f f; +#X obj 120 56 route 1; +#X msg 141 81 bang; +#X floatatom 22 69 5 0 0 0 - - -; +#X floatatom 70 68 5 0 0 0 - - -; +#X obj 100 185 outlet; +#X connect 0 0 7 0; +#X connect 0 0 2 1; +#X connect 0 1 8 0; +#X connect 0 1 1 1; +#X connect 0 2 5 0; +#X connect 1 0 4 1; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 3 1 1 0; +#X connect 4 0 9 0; +#X connect 5 0 6 0; +#X connect 6 0 3 0; +#X restore 310 279 pd gemmouse; +#X connect 7 0 8 0; +#X connect 8 0 7 0; +#X connect 11 0 45 0; +#X connect 11 1 31 0; +#X connect 16 0 11 1; +#X connect 17 0 11 2; +#X connect 18 0 11 0; +#X connect 19 0 11 0; +#X connect 20 0 19 0; +#X connect 22 0 11 0; +#X connect 24 0 11 0; +#X connect 25 0 11 0; +#X connect 31 0 36 0; +#X connect 36 0 32 0; +#X connect 36 1 33 0; +#X connect 36 2 34 0; +#X connect 36 3 35 0; +#X connect 42 0 11 0; +#X connect 43 0 11 0; +#X connect 44 0 51 0; +#X connect 45 0 66 0; +#X connect 46 0 49 0; +#X connect 47 0 48 0; +#X connect 48 0 51 1; +#X connect 49 0 50 0; +#X connect 50 0 51 0; +#X connect 51 0 58 1; +#X connect 51 2 47 0; +#X connect 52 0 51 0; +#X connect 53 0 52 0; +#X connect 54 0 51 0; +#X connect 54 0 60 0; +#X connect 55 0 51 0; +#X connect 56 0 51 0; +#X connect 57 0 54 0; +#X connect 57 0 53 0; +#X connect 58 0 69 0; +#X connect 59 0 58 2; +#X connect 60 0 58 0; +#X connect 61 0 60 0; +#X connect 62 0 60 0; +#X connect 63 0 60 0; +#X connect 64 0 60 0; +#X connect 65 0 60 0; +#X connect 68 0 11 0; +#X connect 69 0 68 0; +#X connect 70 0 18 0; diff --git a/help/pix_opencv_haarcascade-help.pd b/help/pix_opencv_haarcascade-help.pd new file mode 100644 index 0000000..43f62cc --- /dev/null +++ b/help/pix_opencv_haarcascade-help.pd @@ -0,0 +1,204 @@ +#N canvas 428 140 1265 709 10; +#X obj 5 12 cnv 15 430 500 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 5 -34 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 14 -30 Arguments:; +#X obj 5 -129 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 35 -10 none; +#X obj 441 -187 cnv 15 810 700 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 595 165 cnv 15 650 300 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X floatatom 727 448 5 0 0 0 - - -; +#X floatatom 762 448 5 0 0 0 - - -; +#X floatatom 799 448 5 0 0 0 - - -; +#X obj 598 370 pix_opencv_haarcascade; +#X obj 684 169 openpanel; +#X obj 727 410 route 0 1 2 3 4; +#X text 840 449 Xcenter Ycenter Radius; +#X obj 727 429 unpack 0 0 0; +#X msg 624 170 load \$1; +#X text 774 171 Load a trained cascade classifier from XML file; +#X obj 754 169 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X floatatom 791 266 5 0 0 0 - - -; +#X floatatom 745 237 5 0 0 0 - - -; +#X msg 644 203 mode \$1; +#X obj 705 203 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 654 236 min_size \$1; +#X msg 668 263 min_neighbors \$1; +#X text 829 255 Minimum number (minus 1) of neighbor rectangles that +makes up an object (default 2); +#X msg 697 296 scale_factor \$1; +#X floatatom 815 296 5 0 0 0 - - -; +#X text 852 290 The factor by which the search window is scaled between +the subsequent scans (default 1.1); +#X text 825 411 For each object detected; +#X floatatom 662 391 5 0 0 0 - - -; +#X text 701 391 number of objects detected; +#X text 786 238 Minimum size of object (default 30); +#X msg 725 325 ftolerance \$1; +#X floatatom 815 326 5 0 0 0 - - -; +#X msg 730 349 clear; +#X text 856 333 temporarily ( default 5 ); +#X text 856 321 number of frames where an object can disappear; +#X text 775 350 clear markers history; +#X text 727 200 Mode of operation. Currently the only flag that may +be specified is CV_HAAR_DO_CANNY_PRUNING ( 0 ); +#X text 16 22 This object considers a contour to be analyzed any group +of white pixels in a black background \, for this reason you will find +useful to use pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect. +; +#X text 17 75 pix_opencv_contours_convexhull works detecting the bigest +white area in the input image \, sometimes you will need to use pix_opencv_morphology +to transform the contours of the shape to be analyzed..; +#X text 13 -120 pix_opencv_contours_convexhull :: Finds convexhull +of the bigest contour of a binary image.; +#X obj 633 -174 gemhead; +#X obj 598 469 pix_texture; +#X obj 598 488 square 2; +#X obj 1025 432 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 +-66577 0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 1035 476 pd gemwin; +#X msg 1035 458 create; +#X obj 446 470 pix_texture; +#X obj 446 489 square 2; +#X obj 598 106 separator; +#X obj 645 -147 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 702 28 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 684 -7 5 0 10000 1 frame# - -; +#X obj 645 -118 openpanel; +#X msg 645 -98 open \$1; +#X obj 633 11 pix_film; +#X msg 651 -55 auto \$1; +#X obj 651 -73 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X text 1033 438 Create window and render; +#X msg 746 -72 colorspace RGBA; +#X msg 764 -52 colorspace RGB; +#X msg 783 -33 colorspace Grey; +#X obj 746 -100 loadbang; +#X obj 598 87 pix_separator; +#X obj 446 109 separator; +#X obj 446 90 pix_separator; +#X obj 446 128 translateXYZ -2 0 0; +#X obj 598 125 translateXYZ 2 0 0; +#N canvas 1 83 450 300 vswitch 0; +#X obj 36 237 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 399 34 inlet; +#X obj 36 133 spigot 1; +#X obj 260 141 spigot 0; +#X obj 81 108 == 0; +#X connect 1 0 4 0; +#X connect 2 0 5 0; +#X connect 3 0 6 0; +#X connect 3 0 5 1; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 4 1; +#X restore 446 41 pd vswitch; +#X obj 514 41 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 446 9 pix_video; +#X obj 446 -179 gemhead; +#X msg 485 -66 device 0; +#X msg 494 -35 driver 1; +#X msg 471 -120 dialog; +#X msg 476 -90 device /dev/dv1394-0; +#X obj 598 144 pix_resize 320 240; +#X obj 446 60 pix_rgba; +#X connect 10 0 43 0; +#X connect 10 1 29 0; +#X connect 10 2 12 0; +#X connect 11 0 15 0; +#X connect 12 0 14 0; +#X connect 14 0 7 0; +#X connect 14 1 8 0; +#X connect 14 2 9 0; +#X connect 15 0 10 0; +#X connect 17 0 11 0; +#X connect 18 0 23 0; +#X connect 19 0 22 0; +#X connect 20 0 10 0; +#X connect 21 0 20 0; +#X connect 22 0 10 0; +#X connect 23 0 10 0; +#X connect 25 0 10 0; +#X connect 26 0 25 0; +#X connect 32 0 10 0; +#X connect 33 0 32 0; +#X connect 34 0 10 0; +#X connect 42 0 56 0; +#X connect 43 0 44 0; +#X connect 46 0 47 0; +#X connect 47 0 46 0; +#X connect 48 0 49 0; +#X connect 50 0 68 0; +#X connect 51 0 54 0; +#X connect 52 0 53 0; +#X connect 53 0 56 1; +#X connect 54 0 55 0; +#X connect 55 0 56 0; +#X connect 56 0 69 1; +#X connect 56 2 52 0; +#X connect 57 0 56 0; +#X connect 58 0 57 0; +#X connect 60 0 56 0; +#X connect 60 0 71 0; +#X connect 61 0 56 0; +#X connect 62 0 56 0; +#X connect 63 0 60 0; +#X connect 63 0 58 0; +#X connect 64 0 50 0; +#X connect 65 0 67 0; +#X connect 66 0 65 0; +#X connect 67 0 48 0; +#X connect 68 0 77 0; +#X connect 69 0 78 0; +#X connect 70 0 69 2; +#X connect 71 0 69 0; +#X connect 72 0 71 0; +#X connect 73 0 71 0; +#X connect 74 0 71 0; +#X connect 75 0 71 0; +#X connect 76 0 71 0; +#X connect 77 0 10 0; +#X connect 78 0 66 0; +#X connect 78 0 64 0; diff --git a/help/pix_opencv_hist_compare-help.pd b/help/pix_opencv_hist_compare-help.pd new file mode 100644 index 0000000..8d53114 --- /dev/null +++ b/help/pix_opencv_hist_compare-help.pd @@ -0,0 +1,168 @@ +#N canvas 639 272 1101 588 10; +#X obj 5 20 cnv 15 430 350 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 5 -26 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 14 -22 Arguments:; +#X obj 5 -121 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 35 -2 none; +#X obj 447 -179 cnv 15 650 550 empty empty empty 20 12 0 14 -228992 +-66577 0; +#X obj 589 143 cnv 15 500 180 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 678 148 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 +-1 -1 0; +#X text 761 147 save an histogram at position nth ( 0 <= n <= 80 ) +; +#X floatatom 682 279 5 0 0 0 - - -, f 5; +#X obj 744 204 unpack f f f f f; +#X text 837 239 nearest to 1 is the winner; +#X text 718 280 closest histogram (winner); +#X obj 744 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144 +-1 -1 0 1; +#X obj 767 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144 +-1 -1 0 1; +#X obj 790 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144 +-1 -1 0 1; +#X obj 813 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144 +-1 -1 0 1; +#X text 836 228 matching measure with stored histograms; +#X obj 603 173 pix_opencv_hist_compare; +#X obj 688 -169 gemhead; +#X obj 603 331 pix_texture; +#X obj 603 350 square 2; +#X obj 869 289 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 50 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 879 333 pd gemwin; +#X msg 879 315 create; +#X obj 451 331 pix_texture; +#X obj 451 352 square 2; +#X obj 603 105 separator; +#X obj 700 -142 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 757 33 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 739 -2 5 0 10000 1 frame# - -, f 5; +#X obj 700 -113 openpanel; +#X msg 700 -93 open \$1; +#X obj 688 16 pix_film; +#X msg 706 -50 auto \$1; +#X obj 706 -68 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X text 877 295 Create window and render; +#X msg 801 -67 colorspace RGBA; +#X msg 812 -46 colorspace RGB; +#X msg 824 -25 colorspace Grey; +#X obj 801 -95 loadbang; +#X obj 603 86 pix_separator; +#X obj 451 106 separator; +#X obj 451 87 pix_separator; +#X obj 603 123 translateXYZ 2 0 0; +#N canvas 1 83 450 300 vswitch 0; +#X obj 36 214 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 399 34 inlet; +#X obj 36 133 spigot 1; +#X obj 260 141 spigot 0; +#X obj 81 111 == 0; +#X connect 1 0 4 0; +#X connect 2 0 5 0; +#X connect 3 0 6 0; +#X connect 3 0 5 1; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 4 1; +#X restore 451 38 pd vswitch; +#X obj 519 38 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 451 -174 gemhead; +#X msg 490 -61 device 0; +#X msg 499 -30 driver 1; +#X msg 476 -115 dialog; +#X msg 481 -85 device /dev/dv1394-0; +#X text 21 -88 record histograms of specific situations; +#X text 23 -76 the object will recognize the situations if they occur +again; +#X text 23 -62 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +); +#X text 14 -114 pix_opencv_hist_compare : image recognition using histograms +; +#X obj 451 58 pix_rgba; +#X obj 451 14 pix_video; +#X obj 451 124 translateXYZ -2 0 0; +#X connect 7 0 18 1; +#X connect 10 0 13 0; +#X connect 10 1 14 0; +#X connect 10 2 15 0; +#X connect 10 3 16 0; +#X connect 18 0 20 0; +#X connect 18 1 9 0; +#X connect 18 2 10 0; +#X connect 19 0 33 0; +#X connect 20 0 21 0; +#X connect 23 0 24 0; +#X connect 24 0 23 0; +#X connect 25 0 26 0; +#X connect 27 0 44 0; +#X connect 28 0 31 0; +#X connect 29 0 30 0; +#X connect 30 0 33 1; +#X connect 31 0 32 0; +#X connect 32 0 33 0; +#X connect 33 0 45 1; +#X connect 33 2 29 0; +#X connect 34 0 33 0; +#X connect 35 0 34 0; +#X connect 37 0 33 0; +#X connect 37 0 57 0; +#X connect 38 0 33 0; +#X connect 39 0 33 0; +#X connect 40 0 37 0; +#X connect 40 0 35 0; +#X connect 41 0 27 0; +#X connect 42 0 58 0; +#X connect 43 0 42 0; +#X connect 44 0 18 0; +#X connect 45 0 56 0; +#X connect 46 0 45 2; +#X connect 47 0 57 0; +#X connect 48 0 57 0; +#X connect 49 0 57 0; +#X connect 50 0 57 0; +#X connect 51 0 57 0; +#X connect 56 0 43 0; +#X connect 56 0 41 0; +#X connect 57 0 45 0; +#X connect 58 0 25 0; diff --git a/help/pix_opencv_hough_circles-help.pd b/help/pix_opencv_hough_circles-help.pd new file mode 100644 index 0000000..9cbdd7f --- /dev/null +++ b/help/pix_opencv_hough_circles-help.pd @@ -0,0 +1,191 @@ +#N canvas 501 132 1214 680 10; +#X obj 5 205 cnv 15 430 470 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 5 159 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 14 163 Arguments:; +#X obj 5 64 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 35 183 none; +#X obj 445 5 cnv 15 760 670 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 599 357 cnv 15 600 270 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 605 527 pix_opencv_hough_circles; +#X obj 788 494 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 703 492 nightmode \$1; +#X text 807 495 set nightmode; +#X floatatom 726 390 5 0 0 0 - - -; +#X msg 637 387 threshold \$1; +#X floatatom 771 456 5 0 0 0 - - -; +#X floatatom 790 475 5 0 0 0 - - -; +#X floatatom 712 369 5 0 0 0 - - -; +#X msg 622 368 maxcircles \$1; +#X text 752 368 maximum nuber of circles detected ( default : 10 ) +; +#X floatatom 748 407 5 0 0 0 - - -; +#X msg 660 406 threshold2 \$1; +#X text 672 420 see documentation of cvHoughCircles for the meaning +of thresholds; +#X msg 685 455 mindist \$1; +#X text 808 454 minimum distance between circles ( default : 30 ); +#X msg 690 473 resolution \$1; +#X text 833 474 detector resolution ( default 1 ); +#X text 765 386 threshold ( default 100 ); +#X text 787 402 threshold2 ( default 10 ); +#X floatatom 746 588 5 0 0 0 - - -; +#X floatatom 782 589 5 0 0 0 - - -; +#X obj 746 548 route 1 2 3 4 5 6 7 8 9 10; +#X text 749 602 X1; +#X text 785 602 Y1; +#X floatatom 819 589 5 0 0 0 - - -; +#X text 915 548 position of each circle; +#X text 822 603 radius; +#X obj 746 569 unpack f f f; +#X text 12 208 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +) and Yves Degoyon ( ydegoyon@gmail.com ); +#X text 13 70 pix_opencv_hough_circles : Hough circles detection algorithm +; +#X obj 656 18 gemhead; +#X obj 605 631 pix_texture; +#X obj 605 650 square 2; +#X obj 977 15 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 987 59 pd gemwin; +#X msg 987 41 create; +#X obj 453 631 pix_texture; +#X obj 453 650 square 2; +#X obj 605 293 separator; +#X obj 668 45 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 725 220 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 707 185 5 0 10000 1 frame# - -; +#X obj 668 74 openpanel; +#X msg 668 94 open \$1; +#X obj 656 203 pix_film; +#X msg 674 137 auto \$1; +#X obj 674 119 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X text 985 21 Create window and render; +#X msg 769 120 colorspace RGBA; +#X msg 780 139 colorspace RGB; +#X msg 796 158 colorspace Grey; +#X obj 769 92 loadbang; +#X obj 605 274 pix_separator; +#X obj 453 294 separator; +#X obj 453 275 pix_separator; +#X obj 453 314 translateXYZ -2 0 0; +#X obj 605 313 translateXYZ 2 0 0; +#N canvas 1 83 450 300 vswitch 0; +#X obj 36 127 outlet; +#X obj 36 27 inlet; +#X obj 110 27 inlet; +#X obj 155 26 inlet; +#X obj 36 93 spigot 1; +#X obj 110 94 spigot 0; +#X obj 81 71 == 0; +#X connect 1 0 4 0; +#X connect 2 0 5 0; +#X connect 3 0 6 0; +#X connect 3 0 5 1; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 4 1; +#X restore 453 228 pd vswitch; +#X obj 521 228 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 453 201 pix_video; +#X obj 453 13 gemhead; +#X msg 492 126 device 0; +#X msg 501 157 driver 1; +#X msg 478 72 dialog; +#X msg 483 102 device /dev/dv1394-0; +#X obj 605 337 pix_resize 320 240; +#X obj 453 249 pix_rgba; +#X connect 7 0 39 0; +#X connect 7 1 29 0; +#X connect 8 0 9 0; +#X connect 9 0 7 0; +#X connect 11 0 12 0; +#X connect 12 0 7 0; +#X connect 13 0 21 0; +#X connect 14 0 23 0; +#X connect 15 0 16 0; +#X connect 16 0 7 0; +#X connect 18 0 19 0; +#X connect 19 0 7 0; +#X connect 21 0 7 0; +#X connect 23 0 7 0; +#X connect 29 0 35 0; +#X connect 35 0 27 0; +#X connect 35 1 28 0; +#X connect 35 2 32 0; +#X connect 38 0 52 0; +#X connect 39 0 40 0; +#X connect 42 0 43 0; +#X connect 43 0 42 0; +#X connect 44 0 45 0; +#X connect 46 0 64 0; +#X connect 47 0 50 0; +#X connect 48 0 49 0; +#X connect 49 0 52 1; +#X connect 50 0 51 0; +#X connect 51 0 52 0; +#X connect 52 0 65 1; +#X connect 52 2 48 0; +#X connect 53 0 52 0; +#X connect 54 0 53 0; +#X connect 56 0 52 0; +#X connect 56 0 67 0; +#X connect 57 0 52 0; +#X connect 58 0 52 0; +#X connect 59 0 56 0; +#X connect 59 0 54 0; +#X connect 60 0 46 0; +#X connect 61 0 63 0; +#X connect 62 0 61 0; +#X connect 63 0 44 0; +#X connect 64 0 73 0; +#X connect 65 0 74 0; +#X connect 66 0 65 2; +#X connect 67 0 65 0; +#X connect 68 0 67 0; +#X connect 69 0 67 0; +#X connect 70 0 67 0; +#X connect 71 0 67 0; +#X connect 72 0 67 0; +#X connect 73 0 7 0; +#X connect 74 0 62 0; +#X connect 74 0 60 0; diff --git a/help/pix_opencv_hough_lines-help.pd b/help/pix_opencv_hough_lines-help.pd new file mode 100644 index 0000000..b40976c --- /dev/null +++ b/help/pix_opencv_hough_lines-help.pd @@ -0,0 +1,213 @@ +#N canvas 545 63 1680 940 10; +#X obj 580 463 cnv 15 600 400 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 606 762 pix_opencv_hough_lines; +#X obj 790 732 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X msg 705 730 nightmode \$1; +#X text 809 733 set nightmode; +#X floatatom 736 580 5 0 0 0 - - -; +#X msg 635 546 mode \$1; +#X obj 731 517 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 +-1 -1 1; +#X text 752 517 CV_HOUGH_STANDARD; +#X text 752 531 CV_HOUGH_PROBABILISTIC; +#X text 753 547 CV_HOUGN_MULTI_SCALE; +#X msg 647 577 threshold \$1; +#X msg 661 607 minlength \$1; +#X floatatom 747 608 5 0 0 0 - - -; +#X floatatom 727 634 5 0 0 0 - - -; +#X msg 676 633 gap \$1; +#X text 770 634 gap betwwen lines ( default 10 \, for mode CV_HOUGH_PROBABILISTIC +); +#X text 784 605 minimum length ( default 30 \, for mode CV_HOUGH_PROBABILISTIC +); +#X floatatom 781 672 5 0 0 0 - - -; +#X floatatom 803 704 5 0 0 0 - - -; +#X msg 680 670 aresolution \$1; +#X text 847 700 distance resolution ( default 1 \, for mode CV_HOUGH_MULTI_SCALE +); +#X text 819 669 angle resolution ( default 1 \, for mode CV_HOUGH_MULTI_SCALE +); +#X msg 621 476 maxlines \$1; +#X floatatom 700 477 5 0 0 0 - - -; +#X text 741 473 maximum nuber of lines detected ( default : 10 ); +#X text 775 576 threshold ( default 50 ); +#X text 640 499 Detection mode ( default : CV_HOUGH_PROBABILISTIC ) +; +#X floatatom 750 831 5 0 0 0 - - -; +#X floatatom 786 832 5 0 0 0 - - -; +#X obj 750 791 route 1 2 3 4 5 6 7 8 9 10; +#X text 919 790 position of each line; +#X obj 750 811 unpack f f f f; +#X text 753 845 X1; +#X text 789 845 Y1; +#X floatatom 823 832 5 0 0 0 - - -; +#X floatatom 859 833 5 0 0 0 - - -; +#X text 826 846 X2; +#X text 862 846 Y2; +#X text 41 154 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +) and Yves Degoyon ( ydegoyon@gmail.com ); +#X text 40 139 pix_opencv_hough_lines : Hough lines algorithm; +#X msg 698 702 dresolution \$1; +#X obj 725 54 gemhead; +#X obj 606 884 pix_texture; +#X obj 606 903 square 2; +#X obj 43 50 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 53 94 pd gemwin; +#X msg 53 76 create; +#X obj 454 691 pix_texture; +#X obj 454 719 square 2; +#X obj 606 381 separator; +#X obj 737 81 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 794 256 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 776 221 5 0 10000 1 frame# - -; +#X obj 737 110 openpanel; +#X msg 737 130 open \$1; +#X obj 725 239 pix_film; +#X msg 743 173 auto \$1; +#X obj 743 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X text 51 56 Create window and render; +#X msg 838 156 colorspace RGBA; +#X msg 943 156 colorspace RGB; +#X msg 1047 156 colorspace Grey; +#X obj 838 128 loadbang; +#X obj 605 352 pix_separator; +#X obj 454 384 separator; +#X obj 454 355 pix_separator; +#X obj 454 419 translateXYZ -2 0 0; +#X obj 606 416 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 547 309 pd vswitch; +#X obj 615 309 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 488 237 pix_video; +#X obj 488 49 gemhead; +#X msg 527 162 device 0; +#X msg 536 193 driver 1; +#X msg 513 108 dialog; +#X msg 518 138 device /dev/dv1394-0; +#X obj 606 440 pix_resize 320 240; +#X text 884 547 (WARNING :: only for powerfull machines); +#X obj 547 329 pix_rgba; +#X connect 1 0 43 0; +#X connect 1 1 30 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 5 0 11 0; +#X connect 6 0 1 0; +#X connect 7 0 6 0; +#X connect 11 0 1 0; +#X connect 12 0 1 0; +#X connect 13 0 12 0; +#X connect 14 0 15 0; +#X connect 15 0 1 0; +#X connect 18 0 20 0; +#X connect 19 0 41 0; +#X connect 20 0 1 0; +#X connect 23 0 1 0; +#X connect 24 0 23 0; +#X connect 30 0 32 0; +#X connect 32 0 28 0; +#X connect 32 1 29 0; +#X connect 32 2 35 0; +#X connect 32 3 36 0; +#X connect 41 0 1 0; +#X connect 42 0 56 0; +#X connect 43 0 44 0; +#X connect 46 0 47 0; +#X connect 47 0 46 0; +#X connect 48 0 49 0; +#X connect 50 0 68 0; +#X connect 51 0 54 0; +#X connect 52 0 53 0; +#X connect 53 0 56 1; +#X connect 54 0 55 0; +#X connect 55 0 56 0; +#X connect 56 0 69 1; +#X connect 56 2 52 0; +#X connect 57 0 56 0; +#X connect 58 0 57 0; +#X connect 60 0 56 0; +#X connect 60 0 71 0; +#X connect 61 0 56 0; +#X connect 62 0 56 0; +#X connect 63 0 60 0; +#X connect 63 0 58 0; +#X connect 64 0 50 0; +#X connect 65 0 67 0; +#X connect 66 0 65 0; +#X connect 67 0 48 0; +#X connect 68 0 77 0; +#X connect 69 0 79 0; +#X connect 70 0 69 2; +#X connect 71 0 69 0; +#X connect 72 0 71 0; +#X connect 73 0 71 0; +#X connect 74 0 71 0; +#X connect 75 0 71 0; +#X connect 76 0 71 0; +#X connect 77 0 1 0; +#X connect 79 0 66 0; +#X connect 79 0 64 0; diff --git a/help/pix_opencv_hu_compare-help.pd b/help/pix_opencv_hu_compare-help.pd new file mode 100644 index 0000000..413d8bc --- /dev/null +++ b/help/pix_opencv_hu_compare-help.pd @@ -0,0 +1,240 @@ +#N canvas 542 83 1154 759 10; +#X obj 937 -7 gemhead; +#X obj 375 543 pix_texture; +#X obj 374 566 square 2; +#X obj 9 -28 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 14 16 pd gemwin; +#X msg 14 -5 create; +#X text 15 -23 Create window and render; +#X obj 353 225 cnv 15 700 300 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 619 -90 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 676 85 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 658 50 5 0 10000 1 frame# - -; +#X obj 619 -61 openpanel; +#X msg 619 -41 open \$1; +#X obj 607 68 pix_film; +#X msg 625 2 auto \$1; +#X obj 625 -16 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X obj 373 395 pix_opencv_hu_compare; +#X floatatom 491 481 30 0 0 0 - - -; +#X text 496 464 distance; +#X obj 707 499 route 1; +#X obj 759 499 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 668 500 < 0.1; +#X obj 768 479 hsl 128 15 0 0.2 0 0 cdist empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X text 788 499 criteria value; +#X floatatom 686 481 10 0 0 0 - - -; +#X text 528 376 calculating their hu moments ( CvMatchShape ); +#X text 527 364 compares the contours to the pattern reference contour +; +#X msg 511 333 criteria \$1; +#X obj 595 334 r cdist; +#X text 648 328 criteria value under which the contour is recongnized +; +#X text 646 339 ( adjust to your situation : default : 0.1 ); +#X obj 575 283 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 +-1 -1 0; +#X text 626 277 method used for comparison : one of : CV_CONTOURS_MATCH_I1 +\, CV_CONTOURS_MATCH_I2 or CV_CONTOURS_MATCH_I3; +#X obj 547 282 + 1; +#X msg 477 282 method \$1; +#X msg 463 255 minsize \$1; +#X floatatom 537 256 5 0 0 0 - - -; +#X text 578 256 minimum size of selected contours ( default : 10x10 +); +#X msg 513 304 clear; +#X text 621 304 recalculates the pattern contour; +#X obj 562 305 r reset; +#X text 12 -57 Written by Yves Degoyon ( ydegoyon@gmail.com ); +#X text 13 -85 pix_opencv_hu_compare :: compare contours using their +hu moments using CvMatchShape.; +#X text 666 -88 playing a video file; +#X text 684 -75 ( try estrella.mov ); +#X msg 854 -80 bang; +#X text 900 -87 loading a pattern image; +#X text 899 -74 ( try estrella.jpg ); +#X text 853 -105 Compare to a pattern; +#X obj 854 -4 pix_image; +#X obj 856 -53 openpanel; +#X msg 855 -26 open \$1; +#X floatatom 1007 113 5 0 0 0 - - -; +#X text 836 192 threshold (default 13) to use when comparing pixel +colors; +#X obj 1075 86 loadbang; +#X msg 1044 86 160; +#X obj 976 85 r tresh; +#X floatatom 511 185 5 0 0 0 - - -; +#X obj 579 183 loadbang; +#X msg 551 183 160; +#X obj 512 203 s tresh; +#X obj 985 145 pix_texture; +#X obj 853 112 pix_opencv_threshold; +#X obj 378 204 pix_opencv_threshold; +#X obj 985 173 square 2; +#X obj 853 58 translateXYZ -2 0 0; +#X obj 854 26 pix_resize 320 240; +#X obj 373 130 pix_resize 320 240; +#X obj 683 -24 loadbang; +#X msg 683 1 colorspace RGBA; +#X msg 685 22 colorspace RGB; +#X msg 746 -25 colorspace Grey; +#X obj 687 -52 gemhead; +#X obj 376 180 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 375 98 pd vswitch; +#X obj 443 98 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 374 60 pix_video; +#X obj 378 -88 gemhead; +#X msg 413 -15 device 0; +#X msg 422 16 driver 1; +#X msg 399 -69 dialog; +#X msg 404 -39 device /dev/dv1394-0; +#X obj 547 415 unpack f f f f f; +#X text 661 415 position of detected contours; +#X floatatom 570 437 5 0 0 0 - - -; +#X floatatom 608 438 5 0 0 0 - - -; +#X floatatom 648 437 5 0 0 0 - - -; +#X floatatom 691 438 5 0 0 0 - - -; +#X text 577 450 X; +#X text 616 449 Y; +#X text 648 449 width; +#X text 689 450 height; +#X obj 373 156 pix_rgba; +#X obj 850 150 pix_rgba; +#X connect 0 0 49 0; +#X connect 1 0 2 0; +#X connect 4 0 5 0; +#X connect 5 0 4 0; +#X connect 8 0 11 0; +#X connect 9 0 10 0; +#X connect 10 0 13 1; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 13 0 74 1; +#X connect 13 2 9 0; +#X connect 14 0 13 0; +#X connect 15 0 14 0; +#X connect 16 0 1 0; +#X connect 16 1 17 0; +#X connect 16 2 82 0; +#X connect 17 0 21 0; +#X connect 19 0 20 0; +#X connect 21 0 19 0; +#X connect 22 0 21 1; +#X connect 22 0 24 0; +#X connect 27 0 16 0; +#X connect 28 0 27 0; +#X connect 31 0 33 0; +#X connect 33 0 34 0; +#X connect 34 0 16 0; +#X connect 35 0 16 0; +#X connect 36 0 35 0; +#X connect 38 0 16 0; +#X connect 40 0 38 0; +#X connect 45 0 50 0; +#X connect 49 0 66 0; +#X connect 50 0 51 0; +#X connect 51 0 49 0; +#X connect 52 0 62 2; +#X connect 54 0 55 0; +#X connect 55 0 52 0; +#X connect 56 0 52 0; +#X connect 57 0 60 0; +#X connect 57 0 63 2; +#X connect 58 0 59 0; +#X connect 59 0 57 0; +#X connect 61 0 64 0; +#X connect 62 0 61 0; +#X connect 62 0 93 0; +#X connect 63 0 16 0; +#X connect 65 0 62 0; +#X connect 66 0 65 0; +#X connect 67 0 92 0; +#X connect 68 0 69 0; +#X connect 69 0 13 0; +#X connect 69 0 49 0; +#X connect 70 0 49 0; +#X connect 70 0 13 0; +#X connect 71 0 13 0; +#X connect 71 0 49 0; +#X connect 72 0 13 0; +#X connect 73 0 63 0; +#X connect 74 0 67 0; +#X connect 75 0 74 2; +#X connect 76 0 74 0; +#X connect 77 0 76 0; +#X connect 78 0 76 0; +#X connect 79 0 76 0; +#X connect 80 0 76 0; +#X connect 81 0 76 0; +#X connect 82 1 84 0; +#X connect 82 2 85 0; +#X connect 82 3 86 0; +#X connect 82 4 87 0; +#X connect 92 0 73 0; +#X connect 93 0 16 1; diff --git a/help/pix_opencv_hu_moments-help.pd b/help/pix_opencv_hu_moments-help.pd new file mode 100644 index 0000000..dcac648 --- /dev/null +++ b/help/pix_opencv_hu_moments-help.pd @@ -0,0 +1,147 @@ +#N canvas 625 121 820 711 10; +#X obj 13 0 gemhead; +#X obj 30 439 pix_texture; +#X obj 30 467 square 2; +#X obj 506 536 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 171 266 gemwin; +#X msg 164 226 create \, 1; +#X msg 252 229 destroy; +#X msg 292 186 frame 25; +#X obj 173 176 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 516 580 pd gemwin; +#X msg 516 562 create; +#X obj 114 -18 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 114 11 openpanel; +#X msg 114 31 open \$1; +#X obj 15 182 cnv 15 400 250 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X text 514 539 Create window and render; +#X obj 32 235 pix_opencv_hu_moments; +#X msg 82 197 binary \$1; +#X obj 152 198 tgl 15 0 sbin empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X text 171 198 treat incoming frames as binary data; +#X text 187 -19 Written by Yves Degoyon ( ydegoyon@gmail.com ); +#X text 186 -67 pix_opencv_hu_moments :: Calculates the hu moments +of contours.; +#X obj 135 256 unpack f f f f f f f; +#X floatatom 145 283 30 0 0 0 - - h1; +#X text 125 282 h1; +#X floatatom 156 305 30 0 0 0 - - h2; +#X floatatom 167 326 30 0 0 0 - - h3; +#X floatatom 180 347 30 0 0 0 - - h4; +#X floatatom 196 369 30 0 0 0 - - h5; +#X floatatom 208 389 30 0 0 0 - - h6; +#X floatatom 217 412 30 0 0 0 - - h7; +#X text 136 304 h2; +#X text 148 325 h3; +#X text 161 346 h4; +#X text 176 368 h5; +#X text 188 388 h6; +#X text 197 411 h7; +#X obj 115 104 pix_image; +#X text 187 -43 Load here with a simple patterns image and compare +the moments.; +#X obj 546 20 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 546 49 openpanel; +#X msg 546 69 open \$1; +#X obj 430 185 cnv 15 400 250 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 447 238 pix_opencv_hu_moments; +#X msg 497 200 binary \$1; +#X obj 567 201 tgl 15 0 sbin empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X text 593 201 treat incoming frames as binary data; +#X obj 550 259 unpack f f f f f f f; +#X floatatom 560 286 30 0 0 0 - - h1; +#X text 540 285 h1; +#X floatatom 571 308 30 0 0 0 - - h2; +#X floatatom 582 329 30 0 0 0 - - h3; +#X floatatom 595 350 30 0 0 0 - - h4; +#X floatatom 611 372 30 0 0 0 - - h5; +#X floatatom 623 392 30 0 0 0 - - h6; +#X floatatom 632 415 30 0 0 0 - - h7; +#X text 551 307 h2; +#X text 563 328 h3; +#X text 576 349 h4; +#X text 591 371 h5; +#X text 603 391 h6; +#X text 612 414 h7; +#X obj 484 117 pix_image; +#X obj 115 133 translateXYZ -2 0 0; +#X obj 447 445 pix_texture; +#X obj 447 473 square 2; +#X floatatom 216 100 5 0 0 0 - - -; +#X obj 384 9 gemhead; +#X obj 385 29 translateXYZ 2 0 0; +#X obj 116 161 pix_rgba; +#X obj 469 155 pix_rgba; +#X connect 0 0 32 0; +#X connect 1 0 2 0; +#X connect 4 0 5 0; +#X connect 5 0 4 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 32 0; +#X connect 11 0 1 0; +#X connect 11 1 17 0; +#X connect 12 0 11 0; +#X connect 13 0 12 0; +#X connect 17 0 18 0; +#X connect 17 1 20 0; +#X connect 17 2 21 0; +#X connect 17 3 22 0; +#X connect 17 4 23 0; +#X connect 17 5 24 0; +#X connect 17 6 25 0; +#X connect 32 0 58 0; +#X connect 34 0 35 0; +#X connect 35 0 36 0; +#X connect 36 0 57 0; +#X connect 38 0 59 0; +#X connect 38 1 42 0; +#X connect 39 0 38 0; +#X connect 40 0 39 0; +#X connect 42 0 43 0; +#X connect 42 1 45 0; +#X connect 42 2 46 0; +#X connect 42 3 47 0; +#X connect 42 4 48 0; +#X connect 42 5 49 0; +#X connect 42 6 50 0; +#X connect 57 0 65 0; +#X connect 58 0 64 0; +#X connect 59 0 60 0; +#X connect 61 0 58 1; +#X connect 62 0 63 0; +#X connect 63 0 57 0; +#X connect 64 0 11 0; +#X connect 65 0 38 0; diff --git a/help/pix_opencv_knear-help.pd b/help/pix_opencv_knear-help.pd new file mode 100644 index 0000000..5143dec --- /dev/null +++ b/help/pix_opencv_knear-help.pd @@ -0,0 +1,94 @@ +#N canvas 562 208 1154 642 10; +#X obj 384 31 gemhead; +#X obj 365 414 pix_texture; +#X obj 365 442 square 2; +#X obj 9 -28 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 5 50 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 39 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#X msg 156 142 dimen 256 128; +#X obj 127 212 gemwin; +#X msg 120 172 create \, 1; +#X msg 208 175 destroy; +#X msg 248 132 frame 25; +#X obj 129 122 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 6 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 1 5 0; +#X connect 10 2 9 0; +#X restore 14 16 pd gemwin; +#X msg 14 -8 destroy; +#X text 15 -25 Create window and render; +#X obj 200 368 pix_texture; +#X obj 200 396 square 2; +#X obj 367 159 translateXYZ -2 0 0; +#X obj 367 193 separator; +#X obj 343 221 cnv 15 700 180 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 356 -55 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 356 -26 openpanel; +#X msg 356 -6 open \$1; +#X obj 364 259 translateXYZ 4 0 0; +#X text 9 -82 based on basic OCR with Open CV tutorial; +#X text 9 -71 by damiles : http://blog.damiles.com/?p=93; +#X text 9 -58 adapted to PD by Yves Degoyon ( ydegoyon@gmail.com ) +; +#X text 9 -93 pix_opencv_knear : OCR-like pattern recognition; +#X msg 532 250 bang; +#X text 571 254 Compare the incoming frame to the patterns; +#X text 637 281 Load a new set of patterns from a directory; +#X text 637 294 All patterns should be of the same size; +#X floatatom 591 355 10 0 0 0 - - -, f 10; +#X text 663 356 Distance of the incoming frame compared to the patterns +; +#X obj 384 72 pix_image; +#X obj 592 380 print distance; +#X obj 575 177 loadbang; +#X obj 382 110 pix_grey; +#X text 433 -33 load patterns \, create the Gem window and then load +a character image; +#X msg 550 283 load plus 15; +#X obj 367 215 pix_separator; +#X obj 365 336 pix_opencv_knear; +#X obj 575 199 t b b; +#X text 638 309 Directory could be ether relative to patch or absolute +; +#X connect 0 0 26 0; +#X connect 1 0 2 0; +#X connect 4 0 5 0; +#X connect 5 0 4 0; +#X connect 7 0 8 0; +#X connect 9 0 10 0; +#X connect 9 0 7 0; +#X connect 10 0 32 0; +#X connect 12 0 13 0; +#X connect 12 0 20 0; +#X connect 13 0 14 0; +#X connect 14 0 26 0; +#X connect 15 0 33 0; +#X connect 20 0 33 0; +#X connect 26 0 29 0; +#X connect 28 0 34 0; +#X connect 29 0 9 0; +#X connect 31 0 33 0; +#X connect 32 0 15 0; +#X connect 33 0 1 0; +#X connect 33 1 24 0; +#X connect 33 1 27 0; +#X connect 34 0 20 0; +#X connect 34 1 31 0; diff --git a/help/pix_opencv_laplace-help.pd b/help/pix_opencv_laplace-help.pd new file mode 100644 index 0000000..ca44d22 --- /dev/null +++ b/help/pix_opencv_laplace-help.pd @@ -0,0 +1,153 @@ +#N canvas 487 97 970 899 10; +#X obj 347 393 cnv 15 200 70 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 374 435 pix_opencv_laplace; +#X msg 419 410 1; +#X msg 453 410 3; +#X msg 486 410 5; +#X msg 518 410 7; +#X text 381 392 aperture size ( default 3 ); +#X text 517 343 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +); +#X text 517 332 used as an edge detector; +#X text 516 319 pix_opencv_laplace : laplace filter; +#X obj 515 232 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 520 276 pd gemwin; +#X msg 520 255 create; +#X text 521 237 Create window and render; +#X obj 493 -11 gemhead; +#X obj 374 316 separator; +#X obj 505 16 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 562 191 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 544 156 5 0 10000 1 frame# - -; +#X obj 505 45 openpanel; +#X msg 505 65 open \$1; +#X obj 493 174 pix_film; +#X msg 511 108 auto \$1; +#X obj 511 90 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 606 91 colorspace RGBA; +#X msg 711 91 colorspace RGB; +#X msg 815 91 colorspace Grey; +#X obj 606 63 loadbang; +#X obj 373 287 pix_separator; +#X obj 222 319 separator; +#X obj 222 290 pix_separator; +#X obj 222 354 translateXYZ -2 0 0; +#X obj 374 351 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 315 245 pd vswitch; +#X obj 383 244 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 256 172 pix_video; +#X obj 256 -16 gemhead; +#X msg 295 97 device 0; +#X msg 304 128 driver 1; +#X msg 281 43 dialog; +#X msg 286 73 device /dev/dv1394-0; +#X obj 374 495 pix_texture; +#X obj 374 514 square 2; +#X obj 222 491 pix_texture; +#X obj 222 519 square 2; +#X obj 316 271 pix_rgba; +#X connect 1 0 41 0; +#X connect 2 0 1 1; +#X connect 3 0 1 1; +#X connect 4 0 1 1; +#X connect 5 0 1 1; +#X connect 11 0 12 0; +#X connect 12 0 11 0; +#X connect 14 0 21 0; +#X connect 15 0 32 0; +#X connect 16 0 19 0; +#X connect 17 0 18 0; +#X connect 18 0 21 1; +#X connect 19 0 20 0; +#X connect 20 0 21 0; +#X connect 21 0 33 1; +#X connect 21 2 17 0; +#X connect 22 0 21 0; +#X connect 23 0 22 0; +#X connect 24 0 21 0; +#X connect 24 0 35 0; +#X connect 25 0 21 0; +#X connect 26 0 21 0; +#X connect 27 0 24 0; +#X connect 27 0 23 0; +#X connect 28 0 15 0; +#X connect 29 0 31 0; +#X connect 30 0 29 0; +#X connect 31 0 43 0; +#X connect 32 0 1 0; +#X connect 33 0 45 0; +#X connect 34 0 33 2; +#X connect 35 0 33 0; +#X connect 36 0 35 0; +#X connect 37 0 35 0; +#X connect 38 0 35 0; +#X connect 39 0 35 0; +#X connect 40 0 35 0; +#X connect 41 0 42 0; +#X connect 43 0 44 0; +#X connect 45 0 30 0; +#X connect 45 0 28 0; diff --git a/help/pix_opencv_lk-help.pd b/help/pix_opencv_lk-help.pd new file mode 100644 index 0000000..8343d60 --- /dev/null +++ b/help/pix_opencv_lk-help.pd @@ -0,0 +1,242 @@ +#N canvas 331 42 1192 685 10; +#X obj 141 -12 cnv 15 700 450 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X floatatom 288 328 5 0 0 0 - - -; +#X text 323 327 window size; +#X obj 353 70 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 268 68 nightmode \$1; +#X text 372 71 set nightmode; +#X msg 263 42 quality \$1; +#X floatatom 338 43 5 0 0 0 - - -; +#X floatatom 346 18 5 0 0 0 - - -; +#X msg 249 17 mindistance \$1; +#X text 387 16 set distance ( default 10 ); +#X msg 242 -11 init; +#X text 311 -11 init point detections; +#X floatatom 431 43 5 0 0 0 - - -; +#X obj 376 41 / 1000; +#X msg 294 136 mark \$1 \$2; +#X msg 308 157 delete \$1; +#X text 502 157 delete a marker; +#X msg 316 177 clear; +#X text 364 178 delete all markers; +#X msg 322 197 maxmove \$1; +#X floatatom 398 199 5 0 0 0 - - -; +#X text 563 42 set quality ( default 100 ); +#X msg 471 41 100; +#X obj 504 41 loadbang; +#X obj 285 383 unpack f f; +#X floatatom 286 408 5 0 0 0 - - -; +#X floatatom 344 409 5 0 0 0 - - -; +#X text 287 424 X; +#X text 342 425 Y; +#X obj 284 357 route 1 2 3 4 5 6 7 8 9 10; +#X text 450 306 position of each marked point; +#X obj 178 346 pix_opencv_lk; +#X obj 664 -167 gemmouse; +#X obj 678 -133 f; +#X obj 648 -134 f; +#X obj 734 -89 t b b; +#X obj 645 -89 pack f f; +#X text 373 137 mark x y : mark a point to track ( max points : 10 +); +#X obj 710 -139 route 1; +#X msg 731 -114 bang; +#X msg 277 91 mark all; +#X msg 287 112 mark none; +#X text 340 92 mark all points; +#X text 357 113 reset all markers; +#X text 422 241 make a delaunay with all points; +#X msg 342 241 delaunay on; +#X msg 350 261 delaunay off; +#X text 451 274 make a delaunay with point 1 and a tolerance of 50 +( all points which color is in that range will be included in the delaunay) +; +#X msg 333 217 ftolerance \$1; +#X floatatom 425 217 5 0 0 0 - - -; +#X text 465 217 frame tolerance for point identification ( default +: 5 ); +#X text -232 -324 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +) and Yves Degoyon ( ydegoyon@gmail.com ); +#X text -231 -336 Corner points detection based on Shi and Tomasi; +#X text -231 -348 pix_opencv_lk : Lukas-Kanade corner points tracking +; +#X obj 376 158 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144 +-1 -1 0; +#X floatatom 639 -112 5 0 0 0 - - -; +#X floatatom 692 -109 5 0 0 0 - - -; +#X msg 350 283 pdelaunay 1 500; +#X obj 341 -335 gemhead; +#X obj 353 -308 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 410 -133 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 392 -168 5 0 10000 1 frame# - -; +#X obj 353 -279 openpanel; +#X msg 353 -259 open \$1; +#X obj 341 -150 pix_film; +#X msg 359 -216 auto \$1; +#X obj 359 -234 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X msg 454 -233 colorspace RGBA; +#X msg 559 -233 colorspace RGB; +#X msg 663 -233 colorspace Grey; +#X obj 454 -261 loadbang; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 178 -115 pd vswitch; +#X obj 250 -119 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 161 -166 pix_video; +#X obj 163 -320 gemhead; +#X msg 200 -241 device 0; +#X msg 209 -210 driver 1; +#X msg 186 -295 dialog; +#X msg 191 -265 device /dev/dv1394-0; +#X obj 178 469 pix_texture; +#X obj -231 -425 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 +-66577 0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 112 15 loadbang; +#X msg 62 93 reset; +#X obj 49 135 outlet; +#X msg 107 89 dimen 320 240; +#X obj 107 51 t b b b; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 4 2 1 0; +#X restore 268 69 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 188 161 dimen 320 240; +#X obj 164 126 t b b b; +#X msg 279 161 frame 25; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 1 9 0; +#X connect 10 2 11 0; +#X connect 11 0 6 0; +#X restore -224 -379 pd gemwin; +#X msg -223 -401 destroy; +#X text -223 -422 Create window and render; +#X obj 178 488 rectangle 5.3 4; +#X obj 178 -78 pix_resize 320 240; +#X text 642 -68 selection of a point; +#X text 436 196 max movement of a marker ( default 20 pixels ); +#X obj 178 -40 pix_rgba; +#X connect 1 0 32 1; +#X connect 3 0 4 0; +#X connect 4 0 32 0; +#X connect 6 0 32 0; +#X connect 7 0 6 0; +#X connect 8 0 9 0; +#X connect 9 0 32 0; +#X connect 11 0 32 0; +#X connect 13 0 14 0; +#X connect 14 0 7 0; +#X connect 15 0 32 0; +#X connect 16 0 32 0; +#X connect 18 0 32 0; +#X connect 20 0 32 0; +#X connect 21 0 20 0; +#X connect 23 0 13 0; +#X connect 24 0 23 0; +#X connect 25 0 26 0; +#X connect 25 1 27 0; +#X connect 30 0 25 0; +#X connect 32 0 80 0; +#X connect 32 1 30 0; +#X connect 33 0 35 1; +#X connect 33 1 34 1; +#X connect 33 2 39 0; +#X connect 34 0 37 1; +#X connect 34 0 57 0; +#X connect 35 0 37 0; +#X connect 35 0 56 0; +#X connect 36 0 35 0; +#X connect 36 1 34 0; +#X connect 37 0 15 0; +#X connect 39 0 40 0; +#X connect 40 0 36 0; +#X connect 41 0 32 0; +#X connect 42 0 32 0; +#X connect 46 0 32 0; +#X connect 47 0 32 0; +#X connect 49 0 32 0; +#X connect 50 0 49 0; +#X connect 55 0 16 0; +#X connect 58 0 32 0; +#X connect 59 0 65 0; +#X connect 60 0 63 0; +#X connect 61 0 62 0; +#X connect 62 0 65 1; +#X connect 63 0 64 0; +#X connect 64 0 65 0; +#X connect 65 0 72 1; +#X connect 65 2 61 0; +#X connect 66 0 65 0; +#X connect 67 0 66 0; +#X connect 68 0 65 0; +#X connect 68 0 74 0; +#X connect 69 0 65 0; +#X connect 70 0 65 0; +#X connect 71 0 68 0; +#X connect 71 0 67 0; +#X connect 72 0 86 0; +#X connect 73 0 72 2; +#X connect 74 0 72 0; +#X connect 75 0 74 0; +#X connect 76 0 74 0; +#X connect 77 0 74 0; +#X connect 78 0 74 0; +#X connect 79 0 74 0; +#X connect 80 0 85 0; +#X connect 82 0 83 0; +#X connect 83 0 82 0; +#X connect 86 0 89 0; +#X connect 89 0 32 0; diff --git a/help/pix_opencv_matchshape-help.pd b/help/pix_opencv_matchshape-help.pd new file mode 100644 index 0000000..be53c23 --- /dev/null +++ b/help/pix_opencv_matchshape-help.pd @@ -0,0 +1,103 @@ +#N canvas 216 165 968 473 10; +#X obj 477 6 cnv 15 480 460 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 20 75 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 21 326 cnv 15 450 140 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 22 331 Inlets:; +#X obj 21 286 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 30 285 Arguments:; +#X text 22 400 Outlets:; +#X obj 491 41 cnv 15 460 310 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 501 326 pix_opencv_matchshape; +#X obj 501 14 gemhead; +#X obj 501 377 pix_texture; +#X obj 501 398 rectangle 4 3; +#X msg 570 103 contour 4 2 0 0 0 1 1 1 1 0; +#X msg 556 239 method \$1; +#X floatatom 556 217 5 0 0 0 - - -; +#X msg 580 153 template 4 2 0 0 0 1 1 1 1 0; +#X msg 590 173 template 4 2 2 0 4 1 1 1 1 0; +#X msg 560 83 contour 6 2 0 0 0 1 1 1 1 0 -0.5 -0.5; +#X floatatom 556 267 5 0 0 0 - - -; +#X msg 556 287 threshold \$1; +#X msg 550 64 contour 4 2 2 0 4 1 1 1 1 0; +#X obj 624 357 route match_vec template_vec; +#X obj 624 407 unpack; +#X text 631 390 found corresponding contour; +#X floatatom 624 435 5 0 0 0 - - -; +#X floatatom 659 435 5 0 0 0 - - -; +#X text 623 448 id; +#X text 659 448 absolute difference from template; +#X floatatom 706 378 5 0 0 0 - - -; +#X text 740 375 number of loaded contour; +#X text 593 213 method to compare shape (1 \, 2 or 3 \, please refer +to OpenCV doc for details); +#X text 37 193 This external uses cv::matchShapes function. Documentation +is here : http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=matchshapes#matchshapes +; +#X text 588 266 threshold behind wich a shape is recognized; +#X text 575 135 template message add a template to library; +#X text 549 46 contour message compare the contour to each loaded contour +; +#X text 37 103 [pix_opencv_matchshape] compares input images or input +contours to a library of images (or contours). It sends out the id +of the closest found behind a threshold.; +#X text 37 143 You can use pix_opencv_contour_convexhull2 to find all +contours in the image and send them to pix_opencv_matchshape to recognize +it.; +#X text 20 79 Description: compares shapes; +#X text 45 24 Synopsis: [pix_opencv_matchshape]; +#X text 67 40 Class: pix_opencv; +#X text 76 296 none; +#X text 40 353 Inlet 1: message: template ; +#X text 40 363 Inlet 1: message: contour ; +#X text 40 373 Inlet 1: message: method ; +#X text 40 383 Inlet 1: message: threshold ; +#X text 34 413 Outlet 1: input image; +#X text 40 343 Inlet 1: image; +#X obj 364 368 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 0 450 300 gemwin 0; +#X obj 132 136 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 198 112 destroy; +#X msg 132 112 create \, 1; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 7 0; +#X connect 3 1 5 0; +#X connect 3 1 6 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 369 407 pd gemwin; +#X msg 369 388 create; +#X text 365 367 Create window:; +#X connect 8 0 10 0; +#X connect 8 1 21 0; +#X connect 9 0 8 0; +#X connect 10 0 11 0; +#X connect 12 0 8 0; +#X connect 13 0 8 0; +#X connect 14 0 13 0; +#X connect 15 0 8 0; +#X connect 16 0 8 0; +#X connect 17 0 8 0; +#X connect 18 0 19 0; +#X connect 19 0 8 0; +#X connect 20 0 8 0; +#X connect 21 0 22 0; +#X connect 21 1 28 0; +#X connect 22 0 24 0; +#X connect 22 1 25 0; +#X connect 48 0 49 0; +#X connect 49 0 48 0; diff --git a/help/pix_opencv_morphology-help.pd b/help/pix_opencv_morphology-help.pd new file mode 100644 index 0000000..e6276d6 --- /dev/null +++ b/help/pix_opencv_morphology-help.pd @@ -0,0 +1,163 @@ +#N canvas 539 121 1064 885 10; +#X obj 369 412 cnv 15 450 150 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X floatatom 488 504 5 0 0 0 - - -; +#X obj 514 418 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X msg 472 462 shape 2; +#X msg 462 442 shape 1; +#X msg 482 481 shape 3; +#X msg 456 418 mode \$1; +#X text 519 443 use rectangle structuring element; +#X text 537 478 use cross-shaped structuring element; +#X text 531 460 use elliptic structuring element; +#X text 537 418 switch open/close and erode/dilate modes; +#X text 541 502 number of iterations -10/+10 (be carefull); +#X obj 374 532 pix_opencv_morphology; +#X text -98 98 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +); +#X text -98 59 pdp_opencv_morphology : morphology filter ( erosion +/ dilatation ); +#X text -98 84 used as a filter to focus on bright or dark zones; +#X obj -96 -31 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore -91 13 pd gemwin; +#X msg -91 -8 create; +#X text -90 -26 Create window and render; +#X obj 493 -11 gemhead; +#X obj 374 642 pix_texture; +#X obj 374 661 square 2; +#X obj 222 638 pix_texture; +#X obj 222 666 square 2; +#X obj 374 316 separator; +#X obj 505 16 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 562 191 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 544 156 5 0 10000 1 frame# - -; +#X obj 505 45 openpanel; +#X msg 505 65 open \$1; +#X obj 493 174 pix_film; +#X msg 511 108 auto \$1; +#X obj 511 90 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 606 91 colorspace RGBA; +#X msg 711 91 colorspace RGB; +#X msg 815 91 colorspace Grey; +#X obj 606 63 loadbang; +#X obj 373 287 pix_separator; +#X obj 222 319 separator; +#X obj 222 290 pix_separator; +#X obj 222 354 translateXYZ -2 0 0; +#X obj 374 351 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 315 244 pd vswitch; +#X obj 383 244 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 256 172 pix_video; +#X obj 256 -16 gemhead; +#X msg 295 97 device 0; +#X msg 304 128 driver 1; +#X msg 281 43 dialog; +#X msg 286 73 device /dev/dv1394-0; +#X obj 316 267 pix_rgba; +#X connect 1 0 12 1; +#X connect 2 0 6 0; +#X connect 3 0 12 0; +#X connect 4 0 12 0; +#X connect 5 0 12 0; +#X connect 6 0 12 0; +#X connect 12 0 21 0; +#X connect 17 0 18 0; +#X connect 18 0 17 0; +#X connect 20 0 31 0; +#X connect 21 0 22 0; +#X connect 23 0 24 0; +#X connect 25 0 42 0; +#X connect 26 0 29 0; +#X connect 27 0 28 0; +#X connect 28 0 31 1; +#X connect 29 0 30 0; +#X connect 30 0 31 0; +#X connect 31 0 43 1; +#X connect 31 2 27 0; +#X connect 32 0 31 0; +#X connect 33 0 32 0; +#X connect 34 0 31 0; +#X connect 34 0 45 0; +#X connect 35 0 31 0; +#X connect 36 0 31 0; +#X connect 37 0 34 0; +#X connect 37 0 33 0; +#X connect 38 0 25 0; +#X connect 39 0 41 0; +#X connect 40 0 39 0; +#X connect 41 0 23 0; +#X connect 42 0 12 0; +#X connect 43 0 51 0; +#X connect 44 0 43 2; +#X connect 45 0 43 0; +#X connect 46 0 45 0; +#X connect 47 0 45 0; +#X connect 48 0 45 0; +#X connect 49 0 45 0; +#X connect 50 0 45 0; +#X connect 51 0 40 0; +#X connect 51 0 38 0; diff --git a/help/pix_opencv_motempl-help.pd b/help/pix_opencv_motempl-help.pd new file mode 100644 index 0000000..4d5d485 --- /dev/null +++ b/help/pix_opencv_motempl-help.pd @@ -0,0 +1,231 @@ +#N canvas 431 23 1249 684 10; +#X obj 535 783 pix_texture; +#X obj 535 811 square 2; +#X obj 504 497 cnv 15 550 251 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X floatatom 669 841 5 0 0 0 - - -; +#X floatatom 704 841 5 0 0 0 - - -; +#X floatatom 741 841 5 0 0 0 - - -; +#X floatatom 775 841 5 0 0 0 - - -; +#X floatatom 698 890 5 0 0 0 - - -; +#X floatatom 733 890 5 0 0 0 - - -; +#X floatatom 770 890 5 0 0 0 - - -; +#X floatatom 804 890 5 0 0 0 - - -; +#X floatatom 742 946 5 0 0 0 - - -; +#X floatatom 777 946 5 0 0 0 - - -; +#X floatatom 814 946 5 0 0 0 - - -; +#X floatatom 848 946 5 0 0 0 - - -; +#X obj 666 812 unpack 0 0 0 0 0; +#X obj 695 861 unpack 0 0 0 0 0; +#X obj 739 917 unpack 0 0 0 0 0; +#X floatatom 812 840 5 0 0 0 - - -; +#X floatatom 842 890 5 0 0 0 - - -; +#X floatatom 886 946 5 0 0 0 - - -; +#X text 726 779 For each motion component component; +#X text 788 812 (-1) means the whole image; +#X text 863 838 Xcenter Ycenter Width Height Angle; +#X text 884 889 Xcenter Ycenter Width Height Angle; +#X text 931 945 Xcenter Ycenter Width Height Angle; +#X floatatom 649 621 5 0 0 0 - - -; +#X floatatom 682 595 5 0 0 0 - - -; +#X text 689 623 Threshold value. (default 30); +#X msg 577 594 mhi_duration \$1; +#X floatatom 670 524 5 0 0 0 - - -; +#X msg 555 523 max_time_delta \$1; +#X floatatom 679 548 5 0 0 0 - - -; +#X msg 562 545 min_time_delta \$1; +#X floatatom 703 572 5 0 0 0 - - -; +#X msg 572 569 frame_buffer_num \$1; +#X floatatom 676 639 5 0 0 0 - - -; +#X floatatom 687 658 5 0 0 0 - - -; +#X text 727 660 Max size of the motion component (default 500); +#X text 717 639 Min size of the motion component (default 50); +#X text 740 570 Number of frames in the buffer. (default 4); +#X text 709 522 Max time delta in seconds. (default 0.5); +#X text 720 547 Min time delta in seconds. (default 0.05); +#X obj 533 694 pix_opencv_motempl; +#X msg 536 502 aperture \$1; +#X text 712 503 aperture ( 3 \, 5 or 7 \, default 3 ); +#X msg 616 502 3; +#X msg 649 502 5; +#X msg 680 502 7; +#X text 719 596 Maximal duration of motion track in seconds; +#X text 59 153 pix_opencv_motempl : opencv motion detection based on +movement history; +#X obj 666 761 route -1 1 2 3 4; +#X obj 61 49 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 66 93 pd gemwin; +#X msg 66 72 destroy; +#X text 67 54 Create window and render; +#X obj 650 69 gemhead; +#X obj 379 718 pix_texture; +#X obj 379 746 square 2; +#X obj 531 396 separator; +#X obj 662 96 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 719 271 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 701 236 5 0 10000 1 frame# - -; +#X obj 662 125 openpanel; +#X msg 662 145 open \$1; +#X obj 650 254 pix_film; +#X msg 668 188 auto \$1; +#X obj 668 170 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X msg 763 171 colorspace RGBA; +#X msg 868 171 colorspace RGB; +#X msg 972 171 colorspace Grey; +#X obj 763 143 loadbang; +#X obj 530 367 pix_separator; +#X obj 379 399 separator; +#X obj 379 370 pix_separator; +#X obj 379 434 translateXYZ -2 0 0; +#X obj 531 431 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 472 324 pd vswitch; +#X obj 540 324 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 413 252 pix_video; +#X obj 413 64 gemhead; +#X msg 452 177 device 0; +#X msg 461 208 driver 1; +#X msg 438 123 dialog; +#X msg 443 153 device /dev/dv1394-0; +#X obj 471 350 pix_rgba; +#X obj 528 462 pix_resize 320 240; +#X text 59 273 bugs and comments write Lluis Gomez i Bigorda ( lluisgomez@hangar.org +); +#X text 59 193 pix_opencv_motempl works better with small connected +components moving inside the image .... a good setup is for example +a zenital camera with wider lens or shooting a stage from a viewpoint +from far (5 o more meters of distance).; +#X connect 0 0 1 0; +#X connect 15 0 3 0; +#X connect 15 1 4 0; +#X connect 15 2 5 0; +#X connect 15 3 6 0; +#X connect 15 4 18 0; +#X connect 16 0 7 0; +#X connect 16 1 8 0; +#X connect 16 2 9 0; +#X connect 16 3 10 0; +#X connect 16 4 19 0; +#X connect 17 0 11 0; +#X connect 17 1 12 0; +#X connect 17 2 13 0; +#X connect 17 3 14 0; +#X connect 17 4 20 0; +#X connect 26 0 43 1; +#X connect 27 0 29 0; +#X connect 29 0 43 0; +#X connect 30 0 31 0; +#X connect 31 0 43 0; +#X connect 32 0 33 0; +#X connect 33 0 43 0; +#X connect 34 0 35 0; +#X connect 35 0 43 0; +#X connect 36 0 43 2; +#X connect 37 0 43 3; +#X connect 43 0 0 0; +#X connect 43 1 51 0; +#X connect 44 0 43 0; +#X connect 46 0 44 0; +#X connect 47 0 44 0; +#X connect 48 0 44 0; +#X connect 51 0 15 0; +#X connect 51 1 16 0; +#X connect 51 2 17 0; +#X connect 53 0 54 0; +#X connect 54 0 53 0; +#X connect 56 0 65 0; +#X connect 57 0 58 0; +#X connect 59 0 76 0; +#X connect 60 0 63 0; +#X connect 61 0 62 0; +#X connect 62 0 65 1; +#X connect 63 0 64 0; +#X connect 64 0 65 0; +#X connect 65 0 77 1; +#X connect 65 2 61 0; +#X connect 66 0 65 0; +#X connect 67 0 66 0; +#X connect 68 0 65 0; +#X connect 68 0 79 0; +#X connect 69 0 65 0; +#X connect 70 0 65 0; +#X connect 71 0 68 0; +#X connect 71 0 67 0; +#X connect 72 0 59 0; +#X connect 73 0 75 0; +#X connect 74 0 73 0; +#X connect 75 0 57 0; +#X connect 76 0 86 0; +#X connect 77 0 85 0; +#X connect 78 0 77 2; +#X connect 79 0 77 0; +#X connect 80 0 79 0; +#X connect 81 0 79 0; +#X connect 82 0 79 0; +#X connect 83 0 79 0; +#X connect 84 0 79 0; +#X connect 85 0 74 0; +#X connect 85 0 72 0; +#X connect 86 0 43 0; diff --git a/help/pix_opencv_of_bm-help.pd b/help/pix_opencv_of_bm-help.pd new file mode 100644 index 0000000..99db7d4 --- /dev/null +++ b/help/pix_opencv_of_bm-help.pd @@ -0,0 +1,214 @@ +#N canvas 64 85 1339 660 10; +#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 189 149 454 304 gemwin 0; +#X obj 130 218 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#X msg 129 165 create \, 1; +#X msg 205 166 destroy; +#N canvas 87 154 363 340 Gem.init 0; +#X obj 112 15 loadbang; +#X msg 62 93 reset; +#X obj 49 135 outlet; +#X msg 107 89 dimen 320 240; +#X obj 107 51 t b b b; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 4 2 1 0; +#X restore 289 80 pd Gem.init; +#X obj 128 109 t b b b; +#X msg 247 137 frame 25; +#X msg 156 138 dimen 640 480; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 9 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 9 0 6 0; +#X connect 9 1 11 0; +#X connect 9 2 10 0; +#X connect 10 0 0 0; +#X connect 11 0 0 0; +#X restore 984 101 pd gemwin; +#X msg 984 80 create; +#X text 987 62 Create window and render; +#X text 979 189 with a great help from Mateu Batle & Alberto de Rodrigo +from the iBit foundation.; +#X text 978 153 the main purpose of this object is to calculate the +average direction and the intensity of the movement in a video stream. +; +#X text 979 213 comments to ydegoyon@gmail.com; +#X text 979 137 pix_opencv_of_bm : Block Matching optical flow algorithm. +; +#X obj 426 308 cnv 15 600 350 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 455 540 pix_opencv_of_bm; +#X obj 560 572 unpack f f; +#X floatatom 646 572 5 0 0 0 - - -, f 5; +#X floatatom 648 592 5 0 0 0 - - -, f 5; +#X text 688 571 largest amplitude of movement; +#X text 688 592 angle of the block with the maximum movement; +#X text 686 604 ( in degrees [-180 \, 180]); +#X floatatom 507 621 5 0 0 0 - - -, f 5; +#X text 549 642 marked with a white arrow on the stream; +#X text 549 618 average angle of the blocks movement; +#X text 548 630 ( in degrees [-180 \, 180]); +#X obj 600 463 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 515 461 nightmode \$1; +#X floatatom 573 332 5 0 0 0 - - -, f 5; +#X msg 463 331 blocksize \$1 \$1; +#X floatatom 585 355 5 0 0 0 - - -, f 5; +#X floatatom 599 381 5 0 0 0 - - -, f 5; +#X msg 475 354 shiftsize \$1 \$1; +#X msg 489 380 maxrange \$1 \$1; +#X floatatom 589 408 5 0 0 0 - - -, f 5; +#X msg 502 406 threshold \$1; +#X obj 621 492 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 521 491 useprevious \$1; +#X text 614 332 set blocksize (width height) ( default 20x20 ); +#X text 625 354 set shiftsize (width height) ( default 20x20 ); +#X text 639 381 set maxrange (width height) ( default 20x10 ); +#X text 643 490 use previous results ( default : 0 \, surprising results +when on ); +#X msg 505 435 minblocks \$1; +#X floatatom 592 436 5 0 0 0 - - -, f 5; +#X text 619 464 set nightmode; +#X text 636 430 minimum nuber of blocks to detect the movement; +#X text 631 405 threshold value for the detection of movement ( default +10 ); +#X text 633 443 ( default 10 ); +#X obj 507 -62 gemhead; +#X obj 454 228 separator; +#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 600 78 5 0 10000 1 frame# - -, f 5; +#X obj 561 -33 openpanel; +#X msg 561 -13 open \$1; +#X obj 549 96 pix_film; +#X msg 567 30 auto \$1; +#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 662 13 colorspace RGBA; +#X msg 767 13 colorspace RGB; +#X msg 871 13 colorspace Grey; +#X obj 662 -15 loadbang; +#X obj 296 224 separator; +#X obj 296 250 translateXYZ -2 0 0; +#X obj 454 253 translateXYZ 2 0 0; +#N canvas 0 50 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 385 125 pd vswitch; +#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 312 94 pix_video; +#X obj 315 -64 gemhead; +#X msg 351 19 device 0; +#X msg 360 50 driver 1; +#X msg 337 -35 dialog; +#X msg 342 -5 device /dev/dv1394-0; +#X obj 294 659 pix_texture; +#X obj 294 687 square 2; +#X obj 455 664 pix_texture; +#X text 504 146 this object can work on small frames unless you have +a very powerful machine; +#X obj 456 688 square 2; +#X obj 295 201 pix_separator; +#X obj 454 205 pix_separator; +#X obj 384 154 pix_resize 320 240; +#X obj 386 180 pix_rgba; +#X connect 1 0 2 0; +#X connect 2 0 1 0; +#X connect 9 0 69 0; +#X connect 9 1 16 0; +#X connect 9 2 10 0; +#X connect 10 0 11 0; +#X connect 10 1 12 0; +#X connect 20 0 21 0; +#X connect 21 0 9 0; +#X connect 22 0 23 0; +#X connect 23 0 9 0; +#X connect 24 0 26 0; +#X connect 25 0 27 0; +#X connect 26 0 9 0; +#X connect 27 0 9 0; +#X connect 28 0 29 0; +#X connect 29 0 9 0; +#X connect 30 0 31 0; +#X connect 31 0 9 0; +#X connect 36 0 9 0; +#X connect 37 0 36 0; +#X connect 42 0 49 0; +#X connect 43 0 58 0; +#X connect 44 0 47 0; +#X connect 45 0 46 0; +#X connect 46 0 49 1; +#X connect 47 0 48 0; +#X connect 48 0 49 0; +#X connect 49 0 59 1; +#X connect 49 2 45 0; +#X connect 50 0 49 0; +#X connect 51 0 50 0; +#X connect 52 0 49 0; +#X connect 52 0 61 0; +#X connect 53 0 49 0; +#X connect 54 0 49 0; +#X connect 55 0 52 0; +#X connect 55 0 51 0; +#X connect 56 0 57 0; +#X connect 57 0 67 0; +#X connect 58 0 9 0; +#X connect 59 0 74 0; +#X connect 60 0 59 2; +#X connect 61 0 59 0; +#X connect 62 0 61 0; +#X connect 63 0 61 0; +#X connect 64 0 61 0; +#X connect 65 0 61 0; +#X connect 66 0 61 0; +#X connect 67 0 68 0; +#X connect 69 0 71 0; +#X connect 72 0 56 0; +#X connect 73 0 43 0; +#X connect 74 0 75 0; +#X connect 75 0 72 0; +#X connect 75 0 73 0; diff --git a/help/pix_opencv_of_hs-help.pd b/help/pix_opencv_of_hs-help.pd new file mode 100644 index 0000000..c0baf2c --- /dev/null +++ b/help/pix_opencv_of_hs-help.pd @@ -0,0 +1,207 @@ +#N canvas 1644 152 1339 660 10; +#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 189 149 454 304 gemwin 0; +#X obj 130 218 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#X msg 129 165 create \, 1; +#X msg 205 166 destroy; +#N canvas 87 154 363 340 Gem.init 0; +#X obj 112 15 loadbang; +#X msg 62 93 reset; +#X obj 49 135 outlet; +#X msg 107 89 dimen 320 240; +#X obj 107 51 t b b b; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 4 2 1 0; +#X restore 289 80 pd Gem.init; +#X obj 128 109 t b b b; +#X msg 247 137 frame 25; +#X msg 156 138 dimen 640 480; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 9 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 9 0 6 0; +#X connect 9 1 11 0; +#X connect 9 2 10 0; +#X connect 10 0 0 0; +#X connect 11 0 0 0; +#X restore 983 98 pd gemwin; +#X msg 983 77 create; +#X text 986 59 Create window and render; +#X obj 427 308 cnv 15 600 300 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 559 504 unpack f f; +#X floatatom 645 504 5 0 0 0 - - -; +#X floatatom 647 524 5 0 0 0 - - -; +#X text 687 503 largest amplitude of movement; +#X text 687 524 angle of the block with the maximum movement; +#X text 685 536 ( in degrees [-180 \, 180]); +#X floatatom 506 553 5 0 0 0 - - -; +#X text 548 574 marked with a white arrow on the stream; +#X text 548 550 average angle of the blocks movement; +#X text 547 562 ( in degrees [-180 \, 180]); +#X obj 507 -62 gemhead; +#X obj 454 228 separator; +#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 600 78 5 0 10000 1 frame# - -; +#X obj 561 -33 openpanel; +#X msg 561 -13 open \$1; +#X obj 549 96 pix_film; +#X msg 567 30 auto \$1; +#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 662 13 colorspace RGBA; +#X msg 767 13 colorspace RGB; +#X msg 871 13 colorspace Grey; +#X obj 662 -15 loadbang; +#X obj 296 224 separator; +#X obj 296 250 translateXYZ -2 0 0; +#X obj 454 253 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 385 125 pd vswitch; +#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 312 94 pix_video; +#X obj 315 -64 gemhead; +#X msg 351 19 device 0; +#X msg 360 50 driver 1; +#X msg 337 -35 dialog; +#X msg 342 -5 device /dev/dv1394-0; +#X obj 293 613 pix_texture; +#X obj 293 641 square 2; +#X obj 454 618 pix_texture; +#X text 504 146 this object can work on small frames unless you have +a very powerful machine; +#X obj 455 642 square 2; +#X obj 295 201 pix_separator; +#X obj 454 205 pix_separator; +#X obj 454 472 pix_opencv_of_hs; +#X obj 596 402 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 511 400 nightmode \$1; +#X floatatom 557 323 5 0 0 0 - - -; +#X floatatom 585 347 5 0 0 0 - - -; +#X msg 498 345 threshold \$1; +#X obj 620 433 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 520 432 useprevious \$1; +#X text 642 431 use previous results ( default : 0 \, surprising results +when on ); +#X msg 501 374 minblocks \$1; +#X floatatom 588 375 5 0 0 0 - - -; +#X text 615 403 set nightmode; +#X text 632 369 minimum nuber of blocks to detect the movement; +#X msg 487 320 lambda \$1; +#X text 600 320 set Lagragian multiplier ( default 1 ); +#X text 629 382 ( default 10 ); +#X text 627 344 threshold value for the detection of movement ( default +100 ); +#X text 971 253 with a great help from Mateu Batle & Alberto de Rodrigo +from the iBit foundation.; +#X text 970 217 the main purpose of this object is to calculate the +average direction and the intensity of the movement in a video stream. +; +#X text 971 277 comments to ydegoyon@gmail.com; +#X text 972 132 pix_opencv_of_hs : Haron and Schunck optical flow algorithm. +; +#X obj 385 160 pix_resize 320 240; +#X obj 385 182 pix_rgba; +#X text 971 153 IMPORTANT: this object is quite experimental. For OpticalFlow +analisys we recommend [pix_opencv_of_bm]; +#X obj 975 184 pix_opencv_of_bm; +#X connect 1 0 2 0; +#X connect 2 0 1 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 15 0 22 0; +#X connect 16 0 31 0; +#X connect 17 0 20 0; +#X connect 18 0 19 0; +#X connect 19 0 22 1; +#X connect 20 0 21 0; +#X connect 21 0 22 0; +#X connect 22 0 32 1; +#X connect 22 2 18 0; +#X connect 23 0 22 0; +#X connect 24 0 23 0; +#X connect 25 0 22 0; +#X connect 25 0 34 0; +#X connect 26 0 22 0; +#X connect 27 0 22 0; +#X connect 28 0 25 0; +#X connect 28 0 24 0; +#X connect 29 0 30 0; +#X connect 30 0 40 0; +#X connect 31 0 47 0; +#X connect 32 0 68 0; +#X connect 33 0 32 2; +#X connect 34 0 32 0; +#X connect 35 0 34 0; +#X connect 36 0 34 0; +#X connect 37 0 34 0; +#X connect 38 0 34 0; +#X connect 39 0 34 0; +#X connect 40 0 41 0; +#X connect 42 0 44 0; +#X connect 45 0 29 0; +#X connect 46 0 16 0; +#X connect 47 0 42 0; +#X connect 47 1 11 0; +#X connect 47 2 5 0; +#X connect 48 0 49 0; +#X connect 49 0 47 0; +#X connect 50 0 60 0; +#X connect 51 0 52 0; +#X connect 52 0 47 0; +#X connect 53 0 54 0; +#X connect 54 0 47 0; +#X connect 56 0 47 0; +#X connect 57 0 56 0; +#X connect 60 0 47 0; +#X connect 68 0 69 0; +#X connect 69 0 45 0; +#X connect 69 0 46 0; diff --git a/help/pix_opencv_of_lk-help.pd b/help/pix_opencv_of_lk-help.pd new file mode 100644 index 0000000..bdbf2c9 --- /dev/null +++ b/help/pix_opencv_of_lk-help.pd @@ -0,0 +1,205 @@ +#N canvas 1556 165 1339 660 10; +#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 189 149 454 304 gemwin 0; +#X obj 130 218 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#X msg 129 165 create \, 1; +#X msg 205 166 destroy; +#N canvas 87 154 363 340 Gem.init 0; +#X obj 112 15 loadbang; +#X msg 62 93 reset; +#X obj 49 135 outlet; +#X msg 107 89 dimen 320 240; +#X obj 107 51 t b b b; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 4 2 1 0; +#X restore 289 80 pd Gem.init; +#X obj 128 109 t b b b; +#X msg 247 137 frame 25; +#X msg 156 138 dimen 640 480; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 9 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 9 0 6 0; +#X connect 9 1 11 0; +#X connect 9 2 10 0; +#X connect 10 0 0 0; +#X connect 11 0 0 0; +#X restore 984 101 pd gemwin; +#X msg 984 80 create; +#X text 987 62 Create window and render; +#X obj 426 308 cnv 15 600 300 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 559 476 unpack f f; +#X floatatom 645 476 5 0 0 0 - - -; +#X floatatom 647 496 5 0 0 0 - - -; +#X text 687 475 largest amplitude of movement; +#X text 687 496 angle of the block with the maximum movement; +#X text 685 508 ( in degrees [-180 \, 180]); +#X floatatom 506 525 5 0 0 0 - - -; +#X text 548 546 marked with a white arrow on the stream; +#X text 548 522 average angle of the blocks movement; +#X text 547 534 ( in degrees [-180 \, 180]); +#X obj 507 -62 gemhead; +#X obj 454 228 separator; +#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 600 78 5 0 10000 1 frame# - -; +#X obj 561 -33 openpanel; +#X msg 561 -13 open \$1; +#X obj 549 96 pix_film; +#X msg 567 30 auto \$1; +#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 662 13 colorspace RGBA; +#X msg 767 13 colorspace RGB; +#X msg 871 13 colorspace Grey; +#X obj 662 -15 loadbang; +#X obj 296 224 separator; +#X obj 296 250 translateXYZ -2 0 0; +#X obj 454 253 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 385 125 pd vswitch; +#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 312 94 pix_video; +#X obj 315 -64 gemhead; +#X msg 351 19 device 0; +#X msg 360 50 driver 1; +#X msg 337 -35 dialog; +#X msg 342 -5 device /dev/dv1394-0; +#X obj 293 612 pix_texture; +#X obj 293 640 square 2; +#X obj 454 617 pix_texture; +#X text 504 146 this object can work on small frames unless you have +a very powerful machine; +#X obj 455 641 square 2; +#X obj 295 201 pix_separator; +#X obj 454 205 pix_separator; +#X text 974 244 with a great help from Mateu Batle & Alberto de Rodrigo +from the iBit foundation.; +#X text 973 208 the main purpose of this object is to calculate the +average direction and the intensity of the movement in a video stream. +; +#X text 974 268 comments to ydegoyon@gmail.com; +#X text 976 129 pix_opencv_of_lk : Lucas Kanade optical flow algorithm. +; +#X obj 599 419 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 514 417 nightmode \$1; +#X floatatom 585 311 5 0 0 0 - - -; +#X floatatom 588 364 5 0 0 0 - - -; +#X msg 501 362 threshold \$1; +#X msg 504 391 minblocks \$1; +#X floatatom 591 392 5 0 0 0 - - -; +#X text 621 418 set nightmode; +#X text 629 386 minimum nuber of blocks to detect the movement; +#X text 626 399 ( default 10 ); +#X msg 491 309 winsize \$1 \$2; +#X obj 454 444 pix_opencv_of_lk; +#X text 628 312 set window size ( width height ) [ default : 9x9 ] +; +#X text 630 328 window width and height must be oneof (1 \, 3 \, 5 +\, 7 \, 9 \, 11 \, 13 \, 15); +#X text 627 363 threshold value for the detection of movement (default +100); +#X obj 383 164 pix_resize 320 240; +#X obj 389 187 pix_rgba; +#X text 974 147 IMPORTANT: this object is quite experimental. For OpticalFlow +analisys we recommend [pix_opencv_of_bm]; +#X obj 978 178 pix_opencv_of_bm; +#X connect 1 0 2 0; +#X connect 2 0 1 0; +#X connect 5 0 6 0; +#X connect 5 1 7 0; +#X connect 15 0 22 0; +#X connect 16 0 31 0; +#X connect 17 0 20 0; +#X connect 18 0 19 0; +#X connect 19 0 22 1; +#X connect 20 0 21 0; +#X connect 21 0 22 0; +#X connect 22 0 32 1; +#X connect 22 2 18 0; +#X connect 23 0 22 0; +#X connect 24 0 23 0; +#X connect 25 0 22 0; +#X connect 25 0 34 0; +#X connect 26 0 22 0; +#X connect 26 0 34 0; +#X connect 27 0 22 0; +#X connect 27 0 34 0; +#X connect 28 0 25 0; +#X connect 28 0 24 0; +#X connect 29 0 30 0; +#X connect 30 0 40 0; +#X connect 31 0 62 0; +#X connect 32 0 66 0; +#X connect 33 0 32 2; +#X connect 34 0 32 0; +#X connect 35 0 34 0; +#X connect 36 0 34 0; +#X connect 37 0 34 0; +#X connect 38 0 34 0; +#X connect 39 0 34 0; +#X connect 40 0 41 0; +#X connect 42 0 44 0; +#X connect 45 0 29 0; +#X connect 46 0 16 0; +#X connect 51 0 52 0; +#X connect 52 0 62 0; +#X connect 53 0 61 0; +#X connect 54 0 55 0; +#X connect 55 0 62 0; +#X connect 56 0 62 0; +#X connect 57 0 56 0; +#X connect 61 0 62 0; +#X connect 62 0 42 0; +#X connect 62 1 11 0; +#X connect 62 2 5 0; +#X connect 66 0 67 0; +#X connect 67 0 45 0; +#X connect 67 0 46 0; diff --git a/help/pix_opencv_opticalflow-help.pd b/help/pix_opencv_opticalflow-help.pd new file mode 100644 index 0000000..62e353a --- /dev/null +++ b/help/pix_opencv_opticalflow-help.pd @@ -0,0 +1,91 @@ +#N canvas 922 201 794 766 10; +#X obj 472 35 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 11 56 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 11 307 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 13 315 Inlets:; +#X obj 11 267 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 20 266 Arguments:; +#X text 12 356 Outlets:; +#X text 478 20 Example:; +#X text 58 21 Class: pix_opencv; +#X text 66 276 none; +#X obj 353 315 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 1 122 450 300 gemwin 0; +#X obj 132 156 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 198 112 destroy; +#X msg 132 132 reset \, dimen 640 480 \, create \, 1; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 7 0; +#X connect 3 1 5 0; +#X connect 3 1 6 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 358 354 pd gemwin; +#X msg 358 335 destroy; +#X text 354 314 Create window:; +#X text 354 314 Create window:; +#X text 25 367 Outlet 1: gemlist output; +#X text 16 719 bug \, feedback \, comment... on the pd-list; +#X obj 476 233 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 487 57 gemhead 1; +#X floatatom 542 237 5 0 0 0 - - -, f 5; +#X obj 625 121 loadbang; +#X text 487 387 color legend :; +#X text 520 404 yellow = bounding box; +#X text 526 414 green = contour; +#X text 532 425 blue = convexhull; +#X text 532 437 pink = convexhull edge with defects; +#X text 538 449 red = farthest point from convexhull; +#X obj 554 32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 542 254 gain \$1; +#X text 37 5 Synopsis: [pix_opencv_opticalflow]; +#X text 11 60 Description: compute optical flow; +#X text 30 329 Inlet 1: RGBA image; +#X text 30 339 Inlet 1: message: gain [float]; +#X text 25 377 Outlet 2: info output; +#X text 26 699 by antoine villeret - 2013; +#X obj 487 171 pix_rgba; +#X obj 487 280 pix_opencv_opticalflow; +#X obj 487 347 pix_texture; +#X obj 487 367 rectangle 5.333 4; +#X msg 545 319 quality 0; +#X obj 545 300 loadbang; +#X obj 487 193 pix_resize 320 240; +#X msg 617 253 normalize \$1; +#X obj 617 233 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 625 141 1; +#X text 37 74 [pix_opencv_opticalflow] computes optical flow; +#X obj 487 135 pix_video; +#X connect 11 0 12 0; +#X connect 12 0 11 0; +#X connect 18 0 46 0; +#X connect 19 0 28 0; +#X connect 20 0 44 0; +#X connect 27 0 18 0; +#X connect 28 0 36 0; +#X connect 35 0 41 0; +#X connect 36 0 37 0; +#X connect 37 0 38 0; +#X connect 39 0 37 0; +#X connect 40 0 39 0; +#X connect 41 0 36 0; +#X connect 42 0 36 0; +#X connect 43 0 42 0; +#X connect 44 0 19 0; +#X connect 46 0 35 0; diff --git a/help/pix_opencv_pgh_compare-help.pd b/help/pix_opencv_pgh_compare-help.pd new file mode 100644 index 0000000..22e21d0 --- /dev/null +++ b/help/pix_opencv_pgh_compare-help.pd @@ -0,0 +1,225 @@ +#N canvas 343 247 1154 642 10; +#X obj 897 4 gemhead; +#X obj 372 500 pix_texture; +#X obj 372 528 square 2; +#X obj 18 26 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 160 260 gemwin; +#X msg 159 207 create \, 1; +#X msg 235 208 destroy; +#X msg 281 180 frame 25; +#X obj 162 170 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore 24 69 pd gemwin; +#X msg 24 48 create; +#X text 25 30 Create window and render; +#X obj 363 232 cnv 15 700 250 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 553 -63 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 610 112 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 592 77 5 0 10000 1 frame# - -; +#X obj 553 -34 openpanel; +#X msg 553 -14 open \$1; +#X obj 552 94 pix_film; +#X msg 559 29 auto \$1; +#X obj 559 11 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X floatatom 506 439 30 0 0 0 - - -; +#X text 511 422 distance; +#X obj 730 457 route 1; +#X obj 782 457 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X obj 783 437 hsl 128 15 0 0.2 0 0 cdist empty empty -2 -8 0 10 -262144 +-1 -1 0 1; +#X text 805 455 criteria value; +#X floatatom 701 439 10 0 0 0 - - -; +#X msg 478 319 criteria \$1; +#X obj 562 320 r cdist; +#X text 615 314 criteria value under which the contour is recongnized +; +#X msg 463 255 minsize \$1; +#X floatatom 537 256 5 0 0 0 - - -; +#X text 578 256 minimum size of selected contours ( default : 10x10 +); +#X msg 480 290 clear; +#X text 588 290 recalculates the pattern contour; +#X obj 529 291 r reset; +#X text 600 -61 playing a video file; +#X text 618 -48 ( try estrella.mov ); +#X msg 831 -72 bang; +#X text 877 -79 loading a pattern image; +#X text 876 -66 ( try estrella.jpg ); +#X text 830 -97 Compare to a pattern; +#X obj 831 4 pix_image; +#X obj 833 -45 openpanel; +#X obj 831 154 separator; +#X msg 832 -18 open \$1; +#X floatatom 984 121 5 0 0 0 - - -; +#X obj 1052 94 loadbang; +#X msg 1021 94 160; +#X obj 953 93 r tresh; +#X floatatom 507 187 5 0 0 0 - - -; +#X obj 575 185 loadbang; +#X msg 547 185 160; +#X obj 508 205 s tresh; +#X obj 962 153 pix_texture; +#X obj 830 120 pix_opencv_threshold; +#X obj 374 206 pix_opencv_threshold; +#X obj 962 181 square 2; +#X obj 830 66 translateXYZ -2 0 0; +#X obj 831 34 pix_resize 320 240; +#X obj 831 181 translateXYZ 4 0 0; +#X obj 373 158 pix_resize 320 240; +#X obj 374 356 pix_opencv_pgh_compare; +#X text 17 -80 pix_opencv_pgh_compare :: compare contours calculating +their PGH histograms.; +#X text 17 -53 Written by Yves Degoyon ( ydegoyon@gmail.com ) using +example code from OpenCV book; +#X obj 683 458 < 0.05; +#X text 612 326 ( adjust to your situation : default : 0.05 ); +#X obj 616 0 loadbang; +#X msg 616 25 colorspace RGBA; +#X msg 720 25 colorspace RGB; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 374 136 pd vswitch; +#X obj 443 135 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 373 83 pix_video; +#X obj 373 -54 gemhead; +#X msg 411 25 device 0; +#X msg 420 56 driver 1; +#X msg 397 -29 dialog; +#X msg 402 1 device /dev/dv1394-0; +#X obj 544 379 unpack f f f f f; +#X text 658 379 position of detected contours; +#X floatatom 567 401 5 0 0 0 - - -; +#X floatatom 605 402 5 0 0 0 - - -; +#X floatatom 645 401 5 0 0 0 - - -; +#X floatatom 688 402 5 0 0 0 - - -; +#X text 574 414 X; +#X text 613 413 Y; +#X text 645 413 width; +#X text 686 414 height; +#X obj 374 182 pix_rgba; +#X obj 831 90 pix_rgba; +#X obj 372 109 translateXYZ 2 0 0; +#X connect 0 0 38 0; +#X connect 1 0 2 0; +#X connect 4 0 5 0; +#X connect 5 0 4 0; +#X connect 8 0 11 0; +#X connect 9 0 10 0; +#X connect 10 0 13 1; +#X connect 11 0 12 0; +#X connect 12 0 13 0; +#X connect 13 0 66 1; +#X connect 13 2 9 0; +#X connect 14 0 13 0; +#X connect 15 0 14 0; +#X connect 16 0 61 0; +#X connect 18 0 19 0; +#X connect 20 0 22 0; +#X connect 20 0 61 1; +#X connect 23 0 58 0; +#X connect 24 0 23 0; +#X connect 26 0 58 0; +#X connect 27 0 26 0; +#X connect 29 0 58 0; +#X connect 31 0 29 0; +#X connect 34 0 39 0; +#X connect 38 0 55 0; +#X connect 39 0 41 0; +#X connect 40 0 56 0; +#X connect 41 0 38 0; +#X connect 42 0 51 2; +#X connect 43 0 44 0; +#X connect 44 0 42 0; +#X connect 45 0 42 0; +#X connect 46 0 49 0; +#X connect 46 0 52 2; +#X connect 47 0 48 0; +#X connect 48 0 46 0; +#X connect 50 0 53 0; +#X connect 51 0 40 0; +#X connect 51 0 50 0; +#X connect 51 0 58 1; +#X connect 52 0 58 0; +#X connect 54 0 85 0; +#X connect 55 0 54 0; +#X connect 56 0 13 0; +#X connect 57 0 84 0; +#X connect 58 0 1 0; +#X connect 58 1 16 0; +#X connect 58 2 74 0; +#X connect 61 0 18 0; +#X connect 63 0 64 0; +#X connect 64 0 13 0; +#X connect 65 0 13 0; +#X connect 66 0 57 0; +#X connect 67 0 66 2; +#X connect 68 0 86 0; +#X connect 69 0 68 0; +#X connect 70 0 68 0; +#X connect 71 0 68 0; +#X connect 72 0 68 0; +#X connect 73 0 68 0; +#X connect 74 1 76 0; +#X connect 74 2 77 0; +#X connect 74 3 78 0; +#X connect 74 4 79 0; +#X connect 84 0 52 0; +#X connect 85 0 51 0; +#X connect 86 0 66 0; diff --git a/help/pix_opencv_surf-help.pd b/help/pix_opencv_surf-help.pd new file mode 100644 index 0000000..8bf97c4 --- /dev/null +++ b/help/pix_opencv_surf-help.pd @@ -0,0 +1,220 @@ +#N canvas 126 104 1266 876 10; +#X obj 361 637 pix_texture; +#X obj 32 -122 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 194 173 454 304 gemwin 0; +#X obj 130 218 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#X msg 129 165 create \, 1; +#X msg 205 166 destroy; +#N canvas 87 154 363 340 Gem.init 0; +#X obj 112 15 loadbang; +#X msg 62 93 reset; +#X obj 49 135 outlet; +#X msg 107 89 dimen 320 240; +#X obj 107 51 t b b b; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 4 2 1 0; +#X restore 289 80 pd Gem.init; +#X obj 128 109 t b b b; +#X msg 156 138 dimen 320 240; +#X msg 252 139 frame 25; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 9 0; +#X connect 3 1 5 0; +#X connect 3 1 7 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 9 0 6 0; +#X connect 9 1 10 0; +#X connect 9 2 11 0; +#X connect 10 0 0 0; +#X connect 11 0 0 0; +#X restore 39 -76 pd gemwin; +#X msg 39 -97 create; +#X text 40 -118 Create window and render; +#X obj 340 180 cnv 15 600 450 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X obj 485 575 unpack f f; +#X floatatom 486 600 5 0 0 0 - - -; +#X floatatom 544 601 5 0 0 0 - - -; +#X text 487 616 X; +#X text 542 617 Y; +#X obj 484 549 route 1 2 3 4 5 6 7 8 9 10; +#X obj 952 123 gemmouse; +#X obj 1008 230 f; +#X obj 978 229 f; +#X obj 1022 201 t b b; +#X obj 975 274 pack f f; +#X obj 998 151 route 1; +#X msg 1019 176 bang; +#X floatatom 969 251 5 0 0 0 - - -; +#X floatatom 1022 254 5 0 0 0 - - -; +#X obj 360 524 pix_opencv_surf; +#X obj 467 252 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 382 253 nightmode \$1; +#X text 486 256 set nightmode; +#X msg 429 316 mark \$1 \$2; +#X msg 435 339 delete \$1; +#X text 628 340 delete a marker; +#X msg 446 362 clear; +#X text 494 363 delete all markers; +#X msg 461 392 maxmove \$1; +#X floatatom 537 394 5 0 0 0 - - -; +#X text 502 316 mark %x %y : mark a point to track ( max points : 10 +); +#X text 546 441 make a delaunay with all points; +#X msg 465 439 delaunay on; +#X msg 467 460 delaunay off; +#X text 577 471 make a delaunay with point 1 and a tolerance of 50 +( all points which color is in that range will be included in the delaunay) +; +#X obj 500 339 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144 +-1 -1 0; +#X msg 473 483 pdelaunay 1 50; +#X msg 363 224 hessian \$1; +#X floatatom 438 225 5 0 0 0 - - -; +#X floatatom 546 416 5 0 0 0 - - -; +#X msg 464 415 ftolerance \$1; +#X text 589 416 frame tolerance for point recognition ( default : 5 +); +#X msg 406 272 mark all; +#X text 476 273 mark all points; +#X msg 416 293 mark none; +#X text 486 294 suppress all marks; +#X text 635 -81 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +) and Yves Degoyon ( ydegoyon@gmail.com ); +#X text 633 -104 pix_opencv_surf : SURF ( Speed Up Robust Features +) points detection and tracking; +#X text 478 224 hessian threshold ( default 1000 ); +#X obj 360 669 rectangle 5.3 4; +#X obj 515 -102 gemhead; +#X obj 527 -75 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 584 100 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 566 65 5 0 10000 1 frame# - -; +#X obj 527 -46 openpanel; +#X msg 527 -26 open \$1; +#X obj 515 83 pix_film; +#X msg 533 17 auto \$1; +#X obj 533 -1 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X msg 628 0 colorspace RGBA; +#X msg 733 0 colorspace RGB; +#X msg 630 24 colorspace Grey; +#X obj 628 -28 loadbang; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 357 114 pd vswitch; +#X obj 429 110 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 340 63 pix_video; +#X obj 342 -91 gemhead; +#X msg 379 -12 device 0; +#X msg 388 19 driver 1; +#X msg 365 -66 dialog; +#X msg 370 -36 device /dev/dv1394-0; +#X obj 356 140 pix_resize 320 240; +#X text 575 392 max movement of a marker ( default 20 pixels ); +#X obj 357 161 pix_rgba; +#X connect 0 0 51 0; +#X connect 2 0 3 0; +#X connect 3 0 2 0; +#X connect 6 0 7 0; +#X connect 6 1 8 0; +#X connect 11 0 6 0; +#X connect 12 0 14 1; +#X connect 12 1 13 1; +#X connect 12 2 17 0; +#X connect 13 0 16 1; +#X connect 13 0 20 0; +#X connect 14 0 16 0; +#X connect 14 0 19 0; +#X connect 15 0 14 0; +#X connect 15 1 13 0; +#X connect 16 0 25 0; +#X connect 17 0 18 0; +#X connect 18 0 15 0; +#X connect 21 0 0 0; +#X connect 21 1 11 0; +#X connect 22 0 23 0; +#X connect 23 0 21 0; +#X connect 25 0 21 0; +#X connect 26 0 21 0; +#X connect 28 0 21 0; +#X connect 30 0 21 0; +#X connect 31 0 30 0; +#X connect 34 0 21 0; +#X connect 35 0 21 0; +#X connect 37 0 26 0; +#X connect 38 0 21 0; +#X connect 39 0 21 0; +#X connect 40 0 39 0; +#X connect 41 0 42 0; +#X connect 42 0 21 0; +#X connect 44 0 21 0; +#X connect 46 0 21 0; +#X connect 52 0 58 0; +#X connect 53 0 56 0; +#X connect 54 0 55 0; +#X connect 55 0 58 1; +#X connect 56 0 57 0; +#X connect 57 0 58 0; +#X connect 58 0 65 1; +#X connect 58 2 54 0; +#X connect 59 0 58 0; +#X connect 60 0 59 0; +#X connect 61 0 58 0; +#X connect 61 0 67 0; +#X connect 62 0 58 0; +#X connect 63 0 58 0; +#X connect 64 0 61 0; +#X connect 64 0 60 0; +#X connect 65 0 73 0; +#X connect 66 0 65 2; +#X connect 67 0 65 0; +#X connect 68 0 67 0; +#X connect 69 0 67 0; +#X connect 70 0 67 0; +#X connect 71 0 67 0; +#X connect 72 0 67 0; +#X connect 73 0 75 0; +#X connect 75 0 21 0; diff --git a/help/pix_opencv_threshold-help.pd b/help/pix_opencv_threshold-help.pd new file mode 100644 index 0000000..9c72dd5 --- /dev/null +++ b/help/pix_opencv_threshold-help.pd @@ -0,0 +1,169 @@ +#N canvas 562 90 1077 791 10; +#X obj 174 365 cnv 15 600 180 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X floatatom 300 424 5 0 0 0 - - -; +#X msg 503 503 mode \$1; +#X floatatom 254 405 5 0 0 0 - - -; +#X text 254 388 Max value used in some modes; +#X msg 480 391 0; +#X msg 501 414 1; +#X msg 524 437 2; +#X msg 548 458 3; +#X msg 575 481 4; +#X text 297 408 threshold value; +#X text 554 503 thresholding mode ( default 0 ); +#X text 512 389 pixel >= threshold; +#X text 552 436 pixel >= threshold set to threshold; +#X text 530 413 pixel <= threshold; +#X text 579 457 pixel <= threshold set to 0; +#X text 603 479 pixel >= threshold set to 0; +#X obj 191 449 pix_opencv_threshold; +#X text 333 425 ( default 50 ); +#X obj 310 -76 gemhead; +#X obj 191 565 pix_texture; +#X obj 191 584 square 2; +#X obj -290 -42 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 +-66577 0; +#N canvas 0 22 454 304 gemwin 0; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 65 41 route create; +#X msg 67 70 set destroy; +#X msg 182 68 set create; +#N canvas 87 154 247 179 Gem.init 0; +#X obj 118 46 loadbang; +#X msg 118 81 reset; +#X obj 118 113 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 289 80 pd Gem.init; +#X obj 162 241 gemwin; +#X msg 161 188 create \, 1; +#X msg 237 189 destroy; +#X msg 283 161 frame 25; +#X obj 164 126 t b b b; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 10 0; +#X connect 2 1 4 0; +#X connect 2 1 8 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 7 0 6 0; +#X connect 8 0 6 0; +#X connect 9 0 6 0; +#X connect 10 0 7 0; +#X connect 10 2 9 0; +#X restore -280 2 pd gemwin; +#X msg -280 -16 create; +#X obj 39 561 pix_texture; +#X obj 39 589 square 2; +#X obj 191 251 separator; +#X obj 322 -49 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 379 126 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 +-1 -1; +#X floatatom 361 91 5 0 10000 1 frame# - -; +#X obj 322 -20 openpanel; +#X msg 322 0 open \$1; +#X obj 310 109 pix_film; +#X msg 328 43 auto \$1; +#X obj 328 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X text -282 -36 Create window and render; +#X msg 423 26 colorspace RGBA; +#X msg 528 26 colorspace RGB; +#X msg 632 26 colorspace Grey; +#X obj 423 -2 loadbang; +#X obj 190 222 pix_separator; +#X obj 39 254 separator; +#X obj 39 225 pix_separator; +#X obj 39 289 translateXYZ -2 0 0; +#X obj 191 286 translateXYZ 2 0 0; +#N canvas 0 22 450 300 vswitch 0; +#X obj 144 263 outlet; +#X obj 36 26 inlet; +#X obj 260 29 inlet; +#X obj 36 133 spigot; +#X obj 260 141 spigot; +#X obj 119 64 loadbang; +#X msg 83 93 0; +#X msg 113 93 1; +#X msg 296 104 0; +#X msg 326 104 1; +#X obj 399 34 inlet; +#X obj 399 67 select 0; +#X connect 1 0 3 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 3 1; +#X connect 7 0 3 1; +#X connect 8 0 4 1; +#X connect 9 0 4 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 0 8 0; +#X connect 11 1 9 0; +#X connect 11 1 6 0; +#X restore 130 164 pd vswitch; +#X obj 198 164 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 73 107 pix_video; +#X obj 73 -81 gemhead; +#X msg 112 32 device 0; +#X msg 121 63 driver 1; +#X msg 98 -22 dialog; +#X msg 103 8 device /dev/dv1394-0; +#X text -293 65 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org +); +#X text -294 53 used as a filter to detect bright or dark piksels; +#X text -293 40 pix_opencv_threshold : pixel thresholding; +#X obj 132 194 pix_rgba; +#X connect 1 0 17 2; +#X connect 2 0 17 0; +#X connect 3 0 17 1; +#X connect 5 0 2 0; +#X connect 6 0 2 0; +#X connect 7 0 2 0; +#X connect 8 0 2 0; +#X connect 9 0 2 0; +#X connect 17 0 20 0; +#X connect 19 0 33 0; +#X connect 20 0 21 0; +#X connect 23 0 24 0; +#X connect 24 0 23 0; +#X connect 25 0 26 0; +#X connect 27 0 45 0; +#X connect 28 0 31 0; +#X connect 29 0 30 0; +#X connect 30 0 33 1; +#X connect 31 0 32 0; +#X connect 32 0 33 0; +#X connect 33 0 46 1; +#X connect 33 2 29 0; +#X connect 34 0 33 0; +#X connect 35 0 34 0; +#X connect 37 0 33 0; +#X connect 37 0 48 0; +#X connect 38 0 33 0; +#X connect 39 0 33 0; +#X connect 40 0 37 0; +#X connect 40 0 35 0; +#X connect 41 0 27 0; +#X connect 42 0 44 0; +#X connect 43 0 42 0; +#X connect 44 0 25 0; +#X connect 45 0 17 0; +#X connect 46 0 57 0; +#X connect 47 0 46 2; +#X connect 48 0 46 0; +#X connect 49 0 48 0; +#X connect 50 0 48 0; +#X connect 51 0 48 0; +#X connect 52 0 48 0; +#X connect 53 0 48 0; +#X connect 57 0 43 0; +#X connect 57 0 41 0; diff --git a/help/pix_opencv_trackKnn-help.pd b/help/pix_opencv_trackKnn-help.pd new file mode 100644 index 0000000..91cd034 --- /dev/null +++ b/help/pix_opencv_trackKnn-help.pd @@ -0,0 +1,275 @@ +#N canvas 715 154 789 554 10; +#X obj 483 42 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577 +0; +#X obj 22 63 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X obj 22 314 cnv 15 450 180 empty empty empty 20 12 0 14 -233017 -66577 +0; +#X text 24 322 Inlets:; +#X obj 22 274 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X text 31 273 Arguments:; +#X text 26 377 Outlets:; +#X text 489 27 Example:; +#X text 69 28 Class: pix_opencv; +#X text 77 283 none; +#X obj 363 194 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 +0; +#N canvas 1 122 450 300 gemwin 0; +#X obj 132 156 gemwin; +#X obj 67 89 outlet; +#X obj 67 10 inlet; +#X obj 67 41 route create; +#X msg 67 70 set destroy; +#X msg 142 68 set create; +#X msg 198 112 destroy; +#X msg 132 132 reset \, dimen 640 480 \, create \, 1; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 3 0 7 0; +#X connect 3 1 5 0; +#X connect 3 1 6 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X restore 368 233 pd gemwin; +#X msg 368 214 destroy; +#X text 364 193 Create window:; +#X text 39 388 Outlet 1: gemlist output; +#X text 39 398 Outlet 2: contour \, convexhull and convexity defect +output; +#X text 59 515 bug \, feedback \, comment... on the pd-list; +#X obj 489 355 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577 +0; +#X obj 498 64 gemhead 1; +#X obj 565 39 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#N canvas 1014 357 709 722 cvblob 0; +#X obj 279 316 gemlist; +#X obj 279 296 t b a; +#X obj 291 50 gemhead 70; +#X obj 129 258 list append; +#X obj 124 170 list split 2; +#X obj 124 114 list append; +#X obj 291 73 t b a; +#X obj 158 232 t b a; +#X obj 279 506 translateXYZ; +#X msg 420 349 \$2; +#X obj 279 356 alpha 1; +#X obj 279 466 translateXYZ -0.5 -0.5 0; +#X obj 279 549 scaleXYZ 0.125 0.25 0; +#X msg 459 349 \$3; +#X msg 434 463 \$4; +#X obj 463 328 t a a; +#X obj 279 576 circle 0.5; +#X obj 279 426 color 1 0 0 0.2; +#X obj 279 336 separator; +#X msg 499 499 \$1; +#X obj 279 616 color 1 1 0 1; +#X obj 158 198 list split 6; +#X msg 227 166 \$2; +#X obj 366 622 loadbang; +#X msg 366 641 12; +#X msg 521 377 \$6; +#X obj 521 399 > 0; +#X obj 521 420 sel 1 0; +#X msg 520 441 1 0 0 0.2; +#X msg 540 461 0 1 0 0.2; +#X obj 279 596 translateXYZ 0.2 0.2 0; +#X text 348 252 here is an example on how to display blobs with Gem +; +#X obj 279 677 text2d; +#X text 253 167 <- be careful ! the size of the cvblob matrix could +change; +#X text 335 184 please check second element to gets matrix width (number +of value per blob); +#X obj 124 136 t a a; +#X obj 187 13 inlet cvblob; +#X obj 187 35 route cvblob; +#X msg 333 26 0; +#X obj 333 6 loadbang; +#X obj 187 57 t a b; +#X msg 291 27 1, f 5; +#X obj 432 485 sqrt; +#X obj 279 446 scaleXYZ 10.666 -8 0; +#X obj 390 520 / 2; +#X obj 361 522 / 3; +#X connect 0 0 18 0; +#X connect 1 0 0 0; +#X connect 1 1 15 0; +#X connect 2 0 6 0; +#X connect 3 0 21 0; +#X connect 4 1 21 0; +#X connect 5 0 35 0; +#X connect 6 0 5 0; +#X connect 6 1 0 1; +#X connect 7 0 3 0; +#X connect 7 1 1 0; +#X connect 8 0 12 0; +#X connect 9 0 8 1; +#X connect 10 0 17 0; +#X connect 11 0 8 0; +#X connect 12 0 16 0; +#X connect 13 0 8 2; +#X connect 14 0 42 0; +#X connect 15 0 13 0; +#X connect 15 0 9 0; +#X connect 15 1 14 0; +#X connect 15 1 19 0; +#X connect 15 1 25 0; +#X connect 16 0 30 0; +#X connect 17 0 43 0; +#X connect 18 0 10 0; +#X connect 19 0 32 0; +#X connect 20 0 32 0; +#X connect 21 0 7 0; +#X connect 21 1 3 1; +#X connect 22 0 21 1; +#X connect 23 0 24 0; +#X connect 24 0 32 1; +#X connect 25 0 26 0; +#X connect 26 0 27 0; +#X connect 27 0 28 0; +#X connect 27 1 29 0; +#X connect 28 0 17 1; +#X connect 29 0 17 1; +#X connect 30 0 20 0; +#X connect 35 0 4 0; +#X connect 35 1 22 0; +#X connect 36 0 37 0; +#X connect 37 0 40 0; +#X connect 38 0 2 0; +#X connect 39 0 38 0; +#X connect 40 0 5 1; +#X connect 40 1 41 0; +#X connect 41 0 2 0; +#X connect 42 0 44 0; +#X connect 42 0 45 0; +#X connect 43 0 11 0; +#X connect 44 0 12 2; +#X connect 45 0 12 1; +#X restore 609 410 pd cvblob; +#X text 39 408 Outlet 3: info output; +#X text 50 11 Synopsis: [pix_opencv_trackKnn]; +#X text 48 82 [pix_opencv_trackKnn] uses the Knn algorithm to keep +the ids of tracked features.; +#X text 29 65 Description: keep track of detected features; +#X text 41 336 Inlet 1: message: cvblob ; +#X text 69 500 by antoine villeret - 2013; +#X obj 498 106 pix_film; +#X obj 631 76 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#N canvas 1 95 450 300 open&loop 0; +#X obj -107 89 openpanel; +#X msg -130 131 open \$1 \, auto 1; +#X obj -131 89 t b; +#X obj -131 110 symbol; +#X obj -131 50 inlet; +#X obj -86 48 inlet; +#X obj -129 158 outlet; +#X connect 0 0 3 0; +#X connect 1 0 6 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 4 0 2 0; +#X connect 5 0 0 0; +#X restore 562 105 pd open&loop; +#X floatatom 628 27 5 0 0 0 - - -, f 5; +#X msg 628 46 auto \$1; +#X obj 498 386 pix_opencv_trackKnn; +#X msg 525 364 reset; +#X text 48 114 This could be use in conjonction of some tracking technique +technique. This help shows how to use it with a contour based tracker. +; +#X text 41 346 Inlet 1: message: reset : clear the internal memory +\, reset the counter; +#N canvas 1 130 450 358 find_blobs 0; +#X msg 182 191 epsilon \$1; +#X floatatom 182 174 5 0 0 0 - - -, f 5; +#X obj 223 132 loadbang; +#X msg 257 191 area \$1; +#X floatatom 257 174 5 0 0 0 - - -, f 5; +#X msg 257 153 10; +#X msg 223 152 2; +#X obj 127 217 pix_opencv_contours; +#X obj 127 96 pix_opencv_threshold; +#X obj 127 116 pix_grey; +#X obj 238 238 route count; +#X obj 127 40 inlet; +#X obj 127 310 outlet; +#N canvas 521 748 562 291 options 0; +#X obj 57 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 57 167 contours \$1; +#X obj 57 251 outlet; +#X obj 147 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 247 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X msg 147 167 convexhulls \$1; +#X msg 247 167 convexitydefects \$1; +#X text 25 37 set hierarchy level (which contour to send out); +#X obj 24 83 nbx 5 14 -2 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 +-1 -1 0 256; +#X msg 24 100 hierarchy_level \$1; +#X text 71 125 send out different kind of infos (all on by default) +:; +#X text 25 47 -1 for all contours (default); +#X msg 383 167 cvblobOutput \$1; +#X obj 383 148 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X text 25 57 -2 for only contours with no child (aka holes); +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 2 0; +#X connect 6 0 2 0; +#X connect 8 0 9 0; +#X connect 9 0 2 0; +#X connect 12 0 2 0; +#X connect 13 0 12 0; +#X restore 142 142 pd options; +#X obj 244 74 inlet; +#X connect 0 0 7 0; +#X connect 1 0 0 0; +#X connect 2 0 6 0; +#X connect 2 0 5 0; +#X connect 3 0 7 0; +#X connect 4 0 3 0; +#X connect 5 0 4 0; +#X connect 6 0 1 0; +#X connect 7 0 12 0; +#X connect 7 2 10 0; +#X connect 8 0 9 0; +#X connect 9 0 7 0; +#X connect 10 1 12 0; +#X connect 11 0 8 0; +#X connect 13 0 7 0; +#X connect 14 0 8 2; +#X restore 498 213 pd find_blobs; +#X obj 498 458 pix_texture; +#X obj 498 478 rectangle 5.333 4; +#X text 32 432 20 +0 0 0 0; +#X text 23 422 cvblob; +#X floatatom 573 192 5 0 0 1 binarization_threshold - -, f 5; +#X connect 11 0 12 0; +#X connect 12 0 11 0; +#X connect 18 0 27 0; +#X connect 19 0 18 0; +#X connect 27 0 36 0; +#X connect 27 2 29 0; +#X connect 28 0 29 1; +#X connect 29 0 27 0; +#X connect 30 0 31 0; +#X connect 31 0 27 0; +#X connect 32 0 37 0; +#X connect 32 1 20 0; +#X connect 33 0 32 0; +#X connect 36 0 32 0; +#X connect 37 0 38 0; +#X connect 41 0 36 1; diff --git a/help/pix_opencv_warpperspective-help.pd b/help/pix_opencv_warpperspective-help.pd new file mode 100644 index 0000000..4c8749b --- /dev/null +++ b/help/pix_opencv_warpperspective-help.pd @@ -0,0 +1,119 @@ +#N canvas 616 396 980 660 10; +#X obj 24 25 gemhead; +#X obj 411 543 gemwin; +#X msg 411 509 create \, 1; +#X msg 492 509 destroy; +#X obj 24 565 pix_texture; +#X obj 203 571 print; +#X obj 24 591 rectangle 4 3; +#X obj 24 4 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X obj 24 539 pix_opencv_warpperspective; +#X msg 76 367 mapMatrix 1 0 0 0 1 0 0 0 1; +#X text 75 348 you can also set the map matrix directly; +#X msg 76 387 mapMatrix 0.5 0 0 0 0.5 0 0 0 1; +#X text 281 366 identity; +#X text 302 388 scale by 0.5; +#X msg 76 407 mapMatrix 0 1 0 1 0 0 0 0 2; +#X text 275 409 rotation by 90deg and scale by 0.5; +#X obj 24 93 pix_video; +#X obj 24 133 pix_flip; +#N canvas 1 105 936 545 wrap_perspective_GPU 0; +#X obj 251 443 mesh_square 10 10; +#X obj 301 277 /; +#X obj 351 278 /; +#X obj 301 233 loadbang; +#X obj 251 356 GEMglMultTransposeMatrixf; +#X obj 251 414 translateXYZ 1 1 0; +#X obj 251 299 scaleXYZ 0.003 0.003 0; +#X obj 251 376 scaleXYZ 639 479 0; +#X obj 251 212 translateXYZ -5.33333 -4 0; +#X obj 251 395 scaleXYZ 0.5 0.5 0; +#X msg 301 255 5.3333 320; +#X msg 377 255 4 240; +#X msg 423 330 \$1 \$4 0 \$7 \$2 \$5 0 \$8 0 0 1 0 \$3 \$6 0 \$9; +#X text 46 22 wrap_persective can be easilly computed by the GPU in +order to boost performace; +#X obj 251 188 spigot; +#X obj 290 138 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 39 105 t a a; +#X obj 39 190 spigot 1; +#X obj 92 164 == 0; +#X obj 39 253 rectangle 4 3; +#X obj 39 233 pix_texture; +#X obj 39 211 pix_opencv_warpperspective; +#X text 306 137 switch CPU / GPU; +#X text 454 256 Since the matrice is computed for somthing that range +from 0 to 639 in X \, and from 0 to 479 in Y \, one have to convert +(scale / translate) the primitive coordinate to fit the transformation +matrix.; +#X obj 41 62 inlet; +#X connect 1 0 6 1; +#X connect 2 0 6 2; +#X connect 3 0 10 0; +#X connect 3 0 11 0; +#X connect 4 0 7 0; +#X connect 5 0 0 0; +#X connect 6 0 4 0; +#X connect 7 0 9 0; +#X connect 8 0 6 0; +#X connect 9 0 5 0; +#X connect 10 0 1 0; +#X connect 11 0 2 0; +#X connect 12 0 4 1; +#X connect 14 0 8 0; +#X connect 15 0 14 1; +#X connect 15 0 18 0; +#X connect 16 0 17 0; +#X connect 16 1 14 0; +#X connect 17 0 21 0; +#X connect 18 0 17 1; +#X connect 20 0 19 0; +#X connect 21 0 20 0; +#X connect 21 1 12 0; +#X connect 24 0 16 0; +#X restore 161 604 pd wrap_perspective_GPU; +#X msg 43 233 dstMatrix 0 0 0 1 1 1 1 0; +#X msg 59 281 srcMatrix 0 0 0 1 1 1 1 0; +#X text 203 234 destination matrix; +#X text 103 261 source matrix; +#X text 229 279 the same as dst lead to identity map matrix; +#X msg 71 306 srcMatrix 1 0 1 1 2 1 2 0; +#X text 234 299 translation also lead to identity map matrix while +translation is not a perspective transformation; +#X text 126 327 TODO more src examples...; +#X text 112 88 pix_opencv_warpperspective computes the perspective +transformation between dstMatrix and srcMatrix and corrects the image +image according to this perspective transformation; +#X text 111 129 the trasnsformation matrix is also sent through the +right outlet to be applied in OpenGL for example; +#X text 114 159 the transformation matrix could also be set by mapMatrix +message to apply the transformation; +#X text 112 25 see examples/05-perspective_correction for an example +of the use of pix_opencv_warpperspective with pix_opencv_findchessboardcorners +to correct perspective; +#X obj 24 112 pix_grey; +#X msg 123 480 invert \$1; +#X obj 123 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 140 450 invert transformation matrix (same as swaping src and +dst matrix); +#X connect 0 0 16 0; +#X connect 2 0 1 0; +#X connect 3 0 1 0; +#X connect 4 0 6 0; +#X connect 7 0 0 0; +#X connect 8 0 4 0; +#X connect 8 1 5 0; +#X connect 9 0 8 0; +#X connect 11 0 8 0; +#X connect 14 0 8 0; +#X connect 16 0 31 0; +#X connect 17 0 8 0; +#X connect 19 0 8 0; +#X connect 20 0 8 0; +#X connect 24 0 8 0; +#X connect 31 0 17 0; +#X connect 32 0 8 0; +#X connect 33 0 32 0; diff --git a/install-sh b/install-sh deleted file mode 100755 index e9de238..0000000 --- a/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/model/face.con b/model/face.con new file mode 100644 index 0000000..23cf0ad --- /dev/null +++ b/model/face.con @@ -0,0 +1,64 @@ +n_connections: 61 +{ +0 1 +1 2 +2 3 +3 4 +4 5 +5 6 +6 7 +7 8 +8 9 +9 10 +10 11 +11 12 +12 13 +13 14 +14 15 +15 16 +17 18 +18 19 +19 20 +20 21 +22 23 +23 24 +24 25 +25 26 +27 28 +28 29 +29 30 +31 32 +32 33 +33 34 +34 35 +36 37 +37 38 +38 39 +39 40 +40 41 +41 36 +42 43 +43 44 +44 45 +45 46 +46 47 +47 42 +48 49 +49 50 +50 51 +51 52 +52 53 +53 54 +54 55 +55 56 +56 57 +57 58 +58 59 +59 48 +60 65 +60 61 +61 62 +62 63 +63 64 +64 65 +} diff --git a/model/face.tracker b/model/face.tracker new file mode 100644 index 0000000..fa8a141 --- /dev/null +++ b/model/face.tracker @@ -0,0 +1 @@ +8 4 3 0 198 24 6 -0.130185 0.0668425 -0.00755756 0.102841 -0.0532439 0.0411516 -0.0719725 0.038035 -0.120688 0.117858 -0.0306167 0.00393536 -0.106838 0.083814 -0.18281 0.00809827 -0.0142928 0.0225008 -0.0108525 0.0530746 -0.0983608 0.131567 -0.0357964 0.034486 -0.129319 0.0800168 0.00877025 0.12835 -0.0908262 0.0046755 -0.0594128 0.0119199 -0.0999291 0.118184 -0.0343811 -0.0326971 -0.0722609 0.0900118 -0.147978 0.00501757 -0.0179255 0.0117871 -0.022942 0.0758111 -0.0573034 0.0575416 -0.0419501 0.0401123 -0.130014 0.0991705 0.0205108 0.145788 -0.121119 -0.0105751 -0.0413775 -0.00920554 -0.0713056 0.111826 -0.0331359 -0.054583 -0.000979465 0.074718 -0.106921 0.00265915 -0.0171275 -0.0120761 -0.035891 0.0912709 -0.0163054 -0.0229193 -0.0442927 0.035556 -0.136417 0.110019 0.0291905 0.137579 -0.119151 0.0117714 -0.0184509 -0.0277042 -0.0120293 0.0716231 -0.011813 -0.0551098 0.0782911 0.029537 -0.0118018 0.00805545 -0.0241647 -0.022077 -0.0410335 0.0630502 0.0345087 -0.057747 -0.0452061 0.0172387 -0.133759 0.107108 0.0465922 0.101801 -0.101517 0.0607046 0.00225002 -0.0377449 0.0684078 0.0125691 0.0399644 -0.043774 0.143118 -0.0395622 0.126203 0.0136693 -0.0378072 -0.0201189 -0.0147679 -0.0111066 0.107207 -0.0316625 -0.022344 -0.00759827 -0.100708 0.0840524 0.0570771 0.0636771 -0.0699253 0.0535625 0.00422452 -0.0359842 0.104009 -0.0190834 0.0729825 -0.0327755 0.134206 -0.123177 0.190867 -0.00186669 -0.020218 -0.0451131 0.0217728 -0.0700815 0.147537 -0.00469701 0.0149855 -0.0165992 -0.0561773 0.0500891 0.0461323 0.0370913 -0.0283027 0.0195523 0.00160212 -0.0322155 0.0803045 -0.0178565 0.0751437 -0.0333392 0.0701263 -0.202732 0.160964 -0.0109649 0.0305359 -0.0593656 0.046665 -0.06927 0.14223 0.0181782 0.0266698 0.00867098 -0.0205822 0.0165766 0.0194682 0.0240674 -0.0075345 0.00459292 -0.0105211 -0.0258281 0.0346797 -0.00372573 0.0696266 -0.0192265 0.0276948 -0.273499 0.0878306 -0.00900322 0.112057 -0.0479425 0.0446371 -0.0513839 0.111823 0.0283545 0.0366306 0.0151139 -0.0120767 -0.00926349 -0.0111876 0.00806855 -0.0111473 0.0233282 -0.021512 -0.0113109 -0.000311627 0.00387629 0.0621319 0.00486203 0.0131368 -0.346283 0.0114112 -0.00962226 0.178893 0.00241935 0.00750274 -0.0452423 0.112129 0.00996373 0.0458444 -0.00585324 0.00164554 -0.0319399 -0.0436341 -0.0113154 -0.0158081 0.01209 -0.0247162 0.0101131 -0.0380355 0.00883609 0.0626766 0.0313658 -0.0019585 -0.270172 -0.0742661 -0.0039776 0.1015 0.0553991 -0.0390448 -0.0343358 0.126208 -0.0127722 0.0469207 -0.0215253 0.0460436 -0.0653762 -0.0686127 -0.0260001 0.0128626 0.0400289 -0.0322272 0.0207893 -0.0901441 0.0250663 0.0655455 0.044215 -0.0582228 -0.204341 -0.162238 0.0118066 0.0136692 0.064498 -0.0416352 -0.0343435 0.175155 -0.00763 0.0321346 -0.000478832 0.0983773 -0.097515 -0.0750855 -0.0566714 0.0647372 0.084332 -0.0286086 0.0309541 -0.115135 0.0253612 0.0608785 0.0401771 -0.136393 -0.131882 -0.201456 0.00950011 -0.0354254 0.0491168 -0.0172729 -0.0336255 0.182492 0.00601484 0.00994478 0.0338988 0.135577 -0.11564 -0.0581598 -0.100527 0.0990683 0.095949 -0.017265 0.0408658 -0.0749445 -0.011007 0.0247614 0.0499433 -0.149622 -0.0539682 -0.141925 -0.00444587 -0.0493866 0.0250709 0.0141506 -0.0587572 0.106984 0.00760104 -0.0390106 0.0187167 0.139105 -0.112044 -0.0344807 -0.141807 0.11235 0.0410663 0.0163727 0.0357397 0.0101628 -0.0742992 -0.0302227 0.0583381 -0.083996 0.0115302 -0.00674596 0.000407229 -0.0268643 0.0292481 0.0337065 -0.0763075 -0.0044211 0.0163223 -0.0762306 -0.0157948 0.132744 -0.0954322 -0.0203772 -0.150817 0.11328 0.00484036 0.0468031 0.0165553 0.0740177 -0.117608 -0.0560957 0.0539488 -0.00196641 0.0521839 0.0950339 0.00428846 -0.00862288 0.0141008 0.0296934 -0.0683975 -0.0674313 -0.0133084 -0.0624783 -0.0382507 0.132211 -0.0712039 -0.00325796 -0.131302 0.0860858 0.00596928 0.0675867 -0.00770428 0.107898 -0.12686 -0.0626875 0.0275475 0.0741285 0.0619786 0.149764 0.000195717 -0.000323362 -0.0191009 0.0236422 -0.0316385 -0.0937624 -0.0793341 -0.0242333 -0.042232 0.133204 -0.0532544 0.0181546 -0.103249 0.0532387 0.0298341 0.0814089 -0.0360444 0.133313 -0.129162 -0.0637759 -0.0128797 0.113359 0.0488056 0.197269 -0.00422111 0.0115955 -0.0385204 0.0179336 0.0111717 -0.115374 -0.137615 0.0162193 -0.0344866 -0.103069 0.00904193 -0.11347 -0.1964 0.0535944 0.140996 -0.187591 0.103678 -0.0252977 -0.0129165 0.145092 0.0506047 -0.0287148 0.00740756 0.0458316 0.20026 -0.00298113 -0.0366921 0.206563 -0.0548119 -0.126629 0.0283826 0.00837059 0.0214 -0.0808659 -0.0011272 -0.0999564 -0.258175 -0.000804187 0.109646 -0.110997 0.0140682 -0.0144766 0.0532391 0.169814 0.0304007 -0.0218408 -0.0455244 0.00510546 0.146046 -0.0236238 -0.0538788 0.0879774 -0.0239427 -0.138884 -0.0354682 -0.0539777 0.0291589 -0.0594665 -0.00987523 -0.0727733 -0.242453 -0.049109 0.0569658 0.0164 -0.11059 -0.0369919 0.0723821 0.164756 0.00326148 -0.0171212 -0.0644847 -0.00894325 0.051642 -0.00227522 0.00253794 0.0379934 0.0102467 -0.109952 -0.0562023 -0.135404 0.0156833 -0.0420429 -0.017146 -0.0414745 -0.192505 -0.0878456 -0.00434743 0.151535 -0.241071 -0.0771397 0.0459994 0.142312 -0.0385386 -0.0118624 -0.0628982 -0.0109029 -0.0260657 0.0437376 0.0659248 0.0509941 0.0325129 -0.0700082 -0.067725 -0.214123 0.00269627 -0.0256112 -0.0255568 -0.0146918 -0.133863 -0.124444 -0.0706338 0.278695 -0.356972 -0.117184 0.0029937 0.112111 -0.086281 -0.00437064 -0.0492154 -0.00649439 -0.0908608 0.101081 0.110366 0.0923778 0.04475 -0.033253 -0.0781342 -0.287528 -0.0079025 0.030389 0.00263153 0.00974868 0.118526 0.107242 -0.119948 -0.25449 0.345921 0.135689 0.0214989 0.116327 0.0972752 0.00779285 -0.0508049 0.0143608 0.0574778 0.107374 -0.104638 -0.127928 -0.00522067 -0.0362666 -0.0647469 -0.267413 0.0272125 0.0459109 -0.00560039 0.0327707 0.18185 0.076285 -0.0486225 -0.137735 0.246741 0.093552 -0.0292031 0.147818 0.049921 0.0144728 -0.0722619 0.0159057 0.0136225 0.03896 -0.0693606 -0.0737082 0.0217486 -0.0625923 -0.0420087 -0.206622 0.00925653 0.0620563 -0.012057 0.0628091 0.239833 0.0433691 0.0220728 -0.00903608 0.125297 0.0474991 -0.067606 0.171078 0.00538429 0.0166806 -0.0814073 0.0107345 -0.0430314 -0.0210238 -0.0101155 -0.0431461 0.0566145 -0.0870238 -0.0167512 -0.138464 -0.0147479 0.081956 -0.0198572 0.0915135 0.272143 0.00231312 0.0920614 0.120068 0.00133997 0.0154115 -0.0675961 0.180399 -0.027828 0.0188187 -0.0730256 -0.00747574 -0.125307 -0.0635809 0.0543045 -0.0690778 0.0994525 -0.0974687 0.00541148 -0.0608478 -0.0410494 0.104072 -0.0297651 0.108497 0.231537 -0.0485685 0.143719 0.209559 -0.0958036 0.0148601 -0.0176189 0.160858 -0.0534865 0.0214349 -0.0298235 -0.0543481 -0.186389 -0.0613468 0.0584294 -0.167997 0.119805 -0.0743581 -0.0156035 0.0264089 -0.0450186 0.00426261 0.00154626 0.0106364 -0.00444034 0.00750927 -0.178676 -0.00616094 -0.00727546 0.00873313 0.0059598 -0.0362066 0.00583462 -0.0110882 0.0849487 0.00505592 -0.020823 0.0116658 0.00628646 0.0225756 -0.0173561 0.115777 -0.0227936 -0.0930347 -0.0290308 0.00517435 0.00197386 0.0147127 -0.000684213 0.000981349 -0.137706 -0.0067766 -0.0131205 0.00932915 0.0022836 -0.0357296 0.00443941 -0.0189864 0.090556 0.00159003 -0.00407305 -0.0283888 -6.94953e-05 0.0129633 -0.0427569 0.157128 -0.0267884 -0.119987 -0.0155614 0.006163 0.00248999 0.0184269 0.00297776 -0.00505656 -0.0918991 -0.00724287 -0.0185152 0.0100866 -0.00185366 -0.0347198 0.00323318 -0.0257348 0.0946441 -0.00100502 0.0109161 -0.0615769 -0.00659162 0.00295319 -0.0675621 0.195962 -0.030679 -0.145767 -0.00233173 0.00718121 0.00305368 0.0218594 0.00643693 -0.0108758 -0.0439096 -0.00743583 -0.0233595 0.0107309 -0.00627009 -0.0352938 0.00209203 -0.0314743 0.0932108 -0.00330429 0.0251831 -0.0922922 -0.0128504 -0.0080236 -0.0902126 0.228393 -0.0322506 -0.159954 0.0108488 -0.0105702 0.0400609 -0.040751 0.0676338 0.0699387 -0.0570107 0.0148807 -0.0428619 -0.0321479 0.0211915 -0.0654417 -0.0335392 -0.144825 0.0855072 0.0425183 0.0159097 -0.087158 -0.0242121 -0.0768408 -0.112438 0.109355 -0.527556 0.0824139 -0.017992 -0.00188424 0.0237607 -0.0172072 0.0335334 0.0333658 -0.0809003 0.00603527 -0.0189552 -0.0191467 0.0106901 -0.0714577 -0.0141488 -0.0731136 0.0925222 0.0217932 0.0128251 -0.0995796 -0.0219621 -0.0361916 -0.0799437 0.125572 -0.29038 -0.0124829 -0.0178244 0.00812429 0.00544387 0.00891515 -0.00762352 -0.0153813 -0.106352 -0.00167154 -0.000578488 0.000566187 -0.00606184 -0.0767541 0.0031732 0.0108983 0.10297 -0.00788892 0.00543213 -0.107623 0.000967021 0.00566933 -0.0397901 0.144747 -0.0287481 -0.115781 0.00168839 0.0181786 -0.0105969 0.0322841 -0.0481893 -0.0597682 -0.0822876 -0.00788929 0.0198412 0.0184851 -0.024311 -0.0720154 0.0234118 0.0969487 0.0957935 -0.0378141 -0.00483867 -0.101268 0.0234754 0.0438473 0.00332367 0.153384 0.239597 -0.154305 0.0189897 0.025887 -0.0247139 0.0525545 -0.0780231 -0.087547 -0.0570431 -0.0176739 0.0479206 0.0265338 -0.032065 -0.0648128 0.0445315 0.160897 0.0918121 -0.0570412 -0.00643618 -0.0905394 0.0167806 0.0795653 0.0338569 0.160319 0.470214 -0.184191 0.0110291 -0.0606059 0.011559 -0.052 -0.058255 0.0739524 0.0223832 -0.139092 0.00710005 -0.0194188 -0.256188 0.0498281 -0.128944 -0.0558482 0.0799671 -0.031951 -0.253685 0.121747 -0.00720901 -0.0263739 0.0515568 0.04622 0.0203903 0.149219 0.0994712 -0.0552061 0.00558533 -0.0350596 -0.0585683 0.0324302 -0.00235549 -0.0636872 2.21607e-05 -0.0507578 -0.217043 0.051898 -0.0529497 -0.0379268 0.0730199 -0.0316732 -0.12509 0.125413 -0.0346742 -0.11218 0.0292393 0.0459413 0.0482755 0.154554 -0.0134169 -0.0420265 0.0263137 -0.0190424 -0.0303998 -0.0263387 -0.0122451 0.0384728 0.0093811 -0.128443 -0.156395 0.0446447 0.126659 -0.049397 0.0714894 0.0567262 -0.029175 0.127449 -0.0496676 -0.130146 -0.00389067 0.0328949 0.0794509 0.156372 -0.0620684 -0.0328043 0.0178871 -0.0121688 -0.00465138 -0.0667223 -0.0209393 0.117493 -0.00310405 -0.172799 -0.128317 0.0343095 0.196898 -0.0185522 0.0804958 0.101466 0.0928368 0.137152 -0.0792006 -0.177761 -0.0431533 0.015282 0.122972 0.138917 -0.157192 -0.0411128 0.0176147 -0.0308702 -0.0148281 -0.0122511 0.00238345 0.0275855 0.00504124 -0.124626 -0.168574 0.0382365 0.0942706 -0.0313645 0.0855389 0.0751772 -0.036311 0.130853 -0.0461547 -0.11196 -0.0177809 0.0219417 0.0860567 0.132919 -0.0568578 -0.0514555 0.00792338 -0.0401424 -0.0352956 0.032017 0.0163466 -0.0584352 -0.00348768 -0.0652158 -0.22232 0.042797 -0.0411581 -0.0381964 0.0864116 0.0159982 -0.138239 0.128157 -0.0318303 -0.0758136 0.0120069 0.0307644 0.0590141 0.134696 0.0124376 0.0389173 -0.0185561 0.0257829 0.00321937 0.0846578 -0.0446511 -0.108682 -0.00380102 0.149574 0.133513 0.0432008 -0.182496 0.0246611 0.0734436 -0.100165 -0.107976 0.114396 0.0847912 0.174983 0.026653 0.0289713 -0.0406464 0.17825 0.164443 0.0436539 -0.0372049 0.0287275 0.0266205 0.0564456 -0.0337409 -0.0400698 -0.0246627 0.121317 0.152066 0.0500379 -0.154021 0.0711372 0.0659651 -0.0703803 0.0259615 0.117191 0.0514836 0.115925 -0.0183404 0.0240071 0.00941622 0.177817 0.0571443 0.056237 -0.0186718 0.0426244 0.0575704 0.000520065 -0.0143684 0.0600464 -0.0167832 0.0475534 0.21075 0.0485294 0.0183816 0.061552 0.0671091 0.018572 0.124759 0.125684 0.0363786 0.0981976 -0.0569327 0.0177883 0.0382789 0.169092 0.0063619 0.0643116 -0.0182842 0.0597407 0.0658599 -0.0464247 0.0153849 0.142405 -0.0181686 0.00383901 0.255891 0.0414382 0.122609 0.0694571 0.0749706 0.0377861 0.247377 0.137315 0.0105309 0.0275971 -0.0810965 0.0106087 0.0632238 0.153588 -0.0955746 0.0574468 -0.00610933 0.0488052 0.0422864 -0.00584744 0.00353223 0.0652219 0.00258157 0.0377661 0.230741 0.0372841 0.0661751 0.0442585 0.0811552 0.00263903 0.115326 0.131643 0.0421039 0.0844616 -0.0352683 0.016778 0.0165878 0.153774 0.00939302 0.0477647 -0.0144676 0.0411521 0.0192664 0.0369028 -0.0149708 -0.0211755 -0.00529266 0.096584 0.1779 0.0405437 -0.065288 0.0353193 0.0793929 -0.0582903 0.00972338 0.123609 0.0587296 0.120143 -0.00300369 0.0245223 -0.0107855 0.161788 0.0794853 -0.0240244 0.129893 -0.21748 0.0656442 0.12466 0.0654384 0.0576003 -0.096559 0.155124 -0.0441383 -0.0785977 0.159397 0.0613734 -0.00260364 -0.058045 0.159877 -0.0716456 0.0809778 -0.0610954 0.107711 -0.0696956 0.0517023 0.0586229 -0.116475 0.033904 0.108165 -0.130572 0.0333632 0.0404945 0.0241408 0.00685092 -0.0142194 0.068348 -0.0135447 -0.0856613 0.0579789 -0.00245526 0.022068 -0.0190128 0.0995551 -0.0745518 0.195565 -0.0867494 0.0309377 -0.0704901 -0.00756571 0.0363786 -0.10673 0.0392217 0.0587045 -0.0514461 0.00935713 -0.0105638 0.0037011 -0.0155704 0.0141329 0.0270146 -0.00173644 -0.0885597 0.0108664 -0.015621 0.038139 -0.0028094 0.0607321 -0.0757472 0.160404 -0.0645165 -0.00807032 -0.0606379 -0.000796854 0.0159615 -0.0711661 0.00984588 0.00962396 -0.00252391 -0.00121322 -0.00836827 -0.00633076 -0.00524066 0.00737825 -0.00159871 0.00303344 -0.0927683 -0.015678 -0.0121311 0.0417562 0.013974 0.00743 -0.0737591 0.0112898 -0.00543422 0.0131466 -0.0444563 0.00564387 -0.00636859 -0.00446487 -0.0221127 -0.0384004 0.0434037 -0.0146072 -0.00259376 0.000437676 0.00972749 0.000555037 -0.030788 0.00512148 -0.0870561 -0.0386543 -0.00225904 0.0374086 0.027281 -0.0483449 -0.0820997 -0.137849 0.0518175 0.0465438 -0.0398378 0.0138164 0.0140811 0.0701869 -0.0247809 -0.0860665 0.112474 -0.0335744 -0.0372939 0.0237276 -0.00265681 0.0230107 -0.0709244 0.018441 -0.0812658 -0.0780827 -0.0120736 0.0221198 0.0332328 -0.0911995 -0.0871227 -0.20595 0.0819258 0.0321567 -0.0621739 0.02514 0.032829 0.114122 0.022393 -0.111112 0.191296 -0.0604928 -0.106251 0.0653985 -0.0439296 0.0964093 -0.153272 0.0501267 -0.0732053 -0.164077 -0.0665003 -0.00246892 0.0536372 -0.152912 -0.0908898 -0.134222 0.0681288 -0.0209931 -0.101321 -0.0119507 0.0808949 0.128852 -0.0425818 -0.0893634 0.17479 -0.0596607 -0.080614 0.0241643 -0.0264106 0.0912021 -0.0757943 0.0243544 -0.0983346 -0.0785917 -0.0413652 -0.0221159 0.00784134 -0.127566 -0.0760434 -0.00590693 0.023065 -0.0831224 -0.142571 -0.00311404 0.0472419 0.0474349 -0.0692105 -0.0522443 0.108434 -0.041129 -0.0363734 0.00127083 -0.0031513 0.0554559 -0.0163229 -0.00192678 -0.105711 -0.0257479 -0.0145038 -0.0338526 -0.00940831 -0.0591162 -0.0523992 0.0495393 -0.0160297 -0.036511 -0.15592 -0.00313279 0.0396186 0.0201252 -0.0222296 0.00194641 0.00783379 -0.00313622 0.00239553 -0.0143368 0.00533045 0.00555825 0.0104608 0.000223304 -0.1063 0.00328683 -0.000441011 -0.0510482 -0.00681914 -0.00399985 -0.0382015 0.0031671 -0.0035425 0.0250145 -0.135627 0.0125469 0.0345104 -0.00888008 0.0320919 0.0588892 -0.0993307 0.0342574 0.0421668 0.00282741 0.0155461 -0.0422943 0.0342328 0.00119996 -0.10588 0.0332577 0.0173064 -0.0347412 -0.00543267 0.0486713 -0.0442945 -0.0501273 0.00927708 0.0932056 -0.11634 0.0285341 0.0320591 -0.0355606 0.0233438 0.101124 -0.180921 0.0581039 0.0900525 0.0243988 0.0385765 -0.0832474 0.0855092 -0.0200513 -0.100595 0.0799803 0.0394175 -0.0222575 -0.0185976 0.121647 -0.0583952 -0.0205381 -0.0217363 0.146573 -0.075188 0.0330533 0.0381615 -0.0525805 0.062675 0.101716 -0.121672 0.0535683 0.0483178 -0.0121013 -0.0134159 -0.072226 0.123701 -0.0521766 -0.100681 0.0357589 0.0194979 0.00239248 -0.0574452 -0.120812 -0.0691677 0.124827 0.00969323 -0.0985407 -0.144762 0.0297473 0.020645 0.242753 0.00955621 0.0108386 -0.00397245 -0.00067045 -0.00653583 -0.0183567 -0.00387704 0.00656896 -0.000963807 0.00480775 -0.104229 -0.0103761 -0.00273019 0.0169597 0.00137252 -0.00502274 -0.0609523 -0.00389197 -0.000963506 0.00886511 -0.0918083 0.0067867 -0.00417599 -0.0144701 -0.0477811 -0.0786218 0.108983 -0.0559706 -0.0558704 -0.0109006 0.013616 0.0836224 -0.125129 0.0579512 -0.101423 -0.0541878 -0.0236801 0.00515188 0.0545227 0.111372 -0.0544239 -0.134444 -0.0146362 0.13963 -0.0539222 -0.00659251 0.0304032 -0.260495 -0.078441 -0.096548 0.14403 -0.0685282 -0.0623548 -0.0282728 0.00201197 0.102317 -0.128965 0.0491319 -0.113848 -0.0538444 -0.0317859 -0.0186649 0.0686798 0.128052 -0.050282 -0.0468041 -0.0371805 0.145545 -0.0634284 -0.0255642 0.0354589 -0.245368 -0.0209318 -0.000107604 0.00719684 -0.00544793 0.00356712 -0.039928 0.00280956 0.0063118 0.00732754 -0.00350252 -0.114732 -0.0053323 -0.00741575 -0.0127799 0.00883748 0.00953396 -0.052047 0.0105379 -0.00481955 0.0471274 -0.094975 0.00453604 0.0107859 0.0076229 0.048428 0.10206 -0.136019 0.0576207 0.067578 -0.0310366 0.00544233 -0.0897361 0.137306 -0.0556734 -0.11302 0.0442227 0.0196282 -0.0213098 -0.0585934 -0.114495 -0.0642434 0.0596185 0.028894 -0.0473819 -0.140084 0.0393509 0.0167841 0.263989 0.0223202 0.0709852 0.0733485 0.00661149 -0.0329767 0.112431 0.0596888 -0.00640837 0.102106 -0.0576481 0.295466 -0.0416961 0.0365665 0.220145 0.121743 0.035237 -0.178749 -0.110297 0.056324 -0.0238641 0.0248756 0.022979 0.0556877 0.0567824 0.0239419 0.0437192 0.0406482 -0.010668 -0.0409642 0.00342009 0.0513896 0.0119736 0.0625346 -0.0428377 0.245148 -0.014847 0.00791913 0.158584 0.0327981 0.0367801 -0.118656 -0.0484925 0.00674731 -0.0176091 0.00123559 -0.00626268 0.0496687 0.0278999 0.0262311 0.015067 0.00935291 -0.0284068 -0.0487432 -0.107971 0.0420589 0.0326142 0.0206091 -0.0311011 0.191242 0.0100291 -0.0297594 0.104894 -0.0696955 0.0438796 -0.0535179 0.0201367 -0.0426442 -0.0112545 -0.0282415 -0.0260686 0.0367184 0.000356349 0.028344 -0.017251 -0.0225363 -0.0332955 -0.0526893 -0.21712 0.0143209 0.030803 -0.0203244 -0.019028 0.134399 0.0243523 -0.0577419 0.0579503 -0.121264 0.0340426 0.0146522 0.0542021 -0.0609633 0.00257174 -0.0664824 -0.031795 0.0241741 -0.0082403 0.0241172 -0.0546142 -0.0603021 -0.010599 -0.0389248 -0.278313 -0.0447635 -0.00892187 -0.0637093 0.0072112 0.0816042 0.0171564 -0.078161 0.0209862 -0.1064 0.0141065 0.0771281 0.0180457 -0.0210639 0.0336267 -0.112877 -0.0148194 -0.000304018 0.0156886 -0.00427198 -0.0796055 -0.101928 0.0313226 -0.0442561 -0.25014 -0.103331 -0.0624891 -0.0946602 0.0276613 0.0398428 0.0149253 -0.0607299 -0.00291645 -0.076817 -1.95407e-05 0.123106 -0.00652676 0.00576903 0.0640219 -0.142232 -0.00135333 -0.0234785 0.0311849 -0.0566359 -0.0844326 -0.131307 0.0702655 -0.0863941 -0.165917 -0.160594 -0.101043 -0.0837116 0.0254388 0.0205392 0.0346597 0.0255819 -0.0176085 -0.0135455 -0.0181621 0.137335 -0.00124377 0.00354036 0.0372876 -0.132031 -0.0143224 -0.0252045 -0.0145596 -0.120233 -0.0783176 -0.138143 0.0870797 -0.119185 -0.0656961 -0.203075 -0.125389 -0.0370445 0.00413361 0.0151283 0.0411943 0.0999664 -0.0234178 0.0974023 -0.0473794 0.0781622 0.0228234 0.00430525 -0.0231933 -0.0711901 -0.0348012 -0.0156326 -0.0574552 -0.150783 -0.0824921 -0.136485 0.0918961 -0.112244 -0.00241616 -0.234059 -0.167997 0.00356454 -0.00805817 -0.00426447 0.0440018 0.141361 0.021305 0.230021 -0.0532988 -0.0137069 0.00415694 0.0540687 -0.0801543 -0.0361806 -0.0218409 -0.00702308 -0.0461941 -0.121427 -0.0737571 -0.133335 0.0909956 -0.112547 0.0587762 -0.204943 -0.126321 -0.0305063 0.00126452 -0.0254512 0.0359729 0.0999833 0.0582213 0.110463 -0.0385703 -0.0985615 0.0149965 0.0102897 -0.0542405 0.0265558 -0.0252729 0.0127512 -0.0475799 -0.063314 -0.0741454 -0.122506 0.0790149 -0.074716 0.156688 -0.166101 -0.100816 -0.0696761 0.0195007 -0.0332039 0.0262426 0.0337441 0.0408621 0.0114795 -0.00471909 -0.140922 -0.00881419 0.0109153 -0.039774 0.106389 -0.00434083 0.0171198 -0.000363172 -0.0177304 -0.0638352 -0.0917453 0.0466351 -0.0320265 0.236779 -0.112938 -0.0609998 -0.0767466 0.020773 -0.0519045 0.00514881 -0.0399077 0.013737 -0.0474224 0.0122621 -0.116785 -0.0115906 0.0113949 -0.0243687 0.128167 0.00426078 0.0168032 0.0403199 0.00572209 -0.0353433 -0.051751 0.0115636 -0.0283073 0.26697 -0.0563329 -0.00718215 -0.050988 0.00452683 -0.0893311 0.00332172 -0.0532011 -0.0204277 -0.0861489 0.023186 -0.0662072 0.0151991 -0.0190583 -0.0292919 0.094304 -0.0178452 0.011204 0.0205127 0.00959925 0.00230027 -0.0162131 -0.0070492 -0.0477849 0.21751 0.00278314 0.0325377 -0.0197558 -0.0134104 -0.135668 0.00609299 -0.0396449 -0.0645428 -0.119929 0.0355892 -0.00255227 0.0492984 -0.0612889 -0.0266197 0.0521406 -0.0441138 0.00218165 -0.0051956 0.00859076 0.0329571 0.0152384 -0.00452205 -0.051551 0.114443 0.0336065 0.0346422 0.0118616 -0.0195659 -0.187647 -0.0110043 -0.0205103 -0.11527 -0.0809134 0.0375739 0.0656761 0.0158189 -0.0416508 -0.0181705 0.0194231 -0.0380323 -0.0132598 0.00256556 0.00649297 0.0586733 0.0454755 0.00714694 -0.047685 0.00277113 0.0472509 0.0149026 0.048875 -0.0304612 -0.237767 -0.0353357 0.00926374 -0.168503 0.0159521 0.0244116 0.129234 -0.0496791 0.0100613 -0.0129293 -0.00773506 -0.0149465 -0.0380667 0.0278948 0.00472687 0.0837066 0.0762818 0.0174583 -0.0426718 -0.109733 0.0606082 -0.00203237 0.0846486 -0.0453457 -0.285232 -0.0595003 0.035421 -0.226591 0.100399 0.0175356 0.187878 -0.110221 0.0621646 -0.0116442 -0.0305766 0.018417 -0.061755 0.0534422 0.00651006 -0.16787 -0.0403554 0.24075 -0.066578 0.0373338 0.194408 0.0478674 -0.0390384 -0.223305 -0.117465 -0.0612878 -0.0593034 0.21244 -0.0479057 0.0367324 0.281648 0.131467 0.271171 -0.0303081 0.0972422 -0.0255785 -0.0944942 -0.0393262 0.00468651 -0.171849 -0.0720258 0.102321 -0.066456 0.0909995 0.0764278 0.121025 0.0483808 -0.11256 -0.0575428 -0.0259837 -0.0375604 0.151443 -0.0100534 0.0793459 0.192028 -0.0191826 0.152769 -0.0282223 0.0232116 -0.0347979 -0.0660757 0.00767657 0.0134684 -0.178376 -0.088994 -0.00152968 -0.0818926 0.124124 0.0274841 0.137736 0.119641 0.020907 -0.00378816 0.0257047 -0.0248538 0.0923841 0.0109157 0.0258232 0.10694 -0.0798565 -0.0105048 0.0063288 -0.0174995 -0.0334038 -0.0638619 0.0281761 0.0216954 -0.182737 -0.0839767 -0.0469575 -0.0851816 0.111912 0.0347524 0.0950029 0.161908 0.109183 0.0164559 0.0569877 -0.00838089 0.0529234 0.0259355 -0.0744077 0.0610967 -0.0543169 -0.139403 0.0599412 -0.0125071 -0.0219285 -0.0877651 0.0350444 0.0279603 -0.181968 -0.0599342 -0.0687223 -0.0860564 0.0801019 0.0702585 -0.00309156 0.177325 0.168034 0.029563 0.0682313 -0.00577563 0.0096509 0.0414174 -0.165713 0.0292145 0.0114467 -0.242018 0.0996505 -0.00483571 -0.0193959 -0.128138 0.024784 0.0245504 -0.182708 -0.0603818 -0.0897751 -0.105973 -0.0519431 0.113725 -0.0555595 0.159301 0.164764 -0.0517093 0.0528581 -0.00768548 0.00149523 0.04165 -0.173437 -0.0577862 0.0271028 -0.225878 0.0727551 0.0750555 0.0600583 0.165676 0.0173074 0.0161862 -0.181732 -0.0871439 -0.0781003 -0.102442 -0.0990559 0.0640766 0.0561963 0.14854 0.112773 -0.0385934 0.0483329 -0.00984922 -0.0383179 0.0273034 -0.0709163 -0.0728038 -0.0437069 -0.131319 0.0341836 0.0612049 0.0340564 0.124194 0.0344948 0.00572727 -0.175825 -0.09581 -0.0410387 -0.0946147 -0.124302 0.039979 0.115663 0.111244 0.0294037 -0.0179803 0.0235068 -0.0256919 -0.0769755 0.014163 0.043499 -0.102177 -0.0774656 -0.00684536 -0.0149671 0.033949 0.00889478 0.0994978 0.0318794 -0.00584421 -0.167559 -0.0824068 0.0601225 -0.0701489 -0.10239 0.0697181 0.116582 0.0424393 -0.104382 0.0373687 -0.0217264 -0.0375031 -0.139231 -0.00370658 0.119455 -0.178716 -0.0243715 0.158677 -0.0201913 -0.0244752 0.00536358 0.0885305 0.0106775 -0.00703778 -0.161688 -0.0528119 0.207495 -0.0584956 -0.0520538 0.173273 0.0574773 -0.0470439 -0.221928 0.0988552 -0.0511477 -0.0587359 -0.210002 -0.0349901 0.0960953 -0.27572 0.127837 0.289248 0.0232639 -0.0950796 0.0308294 0.090371 -0.0475002 0.0515543 0.00955048 0.123597 -0.0279222 0.168061 0.00179188 -0.187793 -0.0661978 0.132165 0.087408 0.00162585 0.11502 -0.129985 -0.00878998 0.0212254 -0.275398 -0.0168428 0.0934001 0.289708 0.269294 0.0832839 -0.000779888 0.0107048 -0.407619 0.0694541 0.0221821 0.175669 0.000980673 0.0664984 0.00548011 -0.158599 -0.148327 0.136911 0.0196737 0.00346059 0.0990431 -0.201013 -0.0108255 0.00366319 -0.0901124 -0.00142275 0.0089918 0.143737 0.120535 0.0282175 0.0327599 0.0021737 -0.208195 0.0865577 0.0342053 0.227865 0.032454 -0.0327098 0.0078922 -0.132504 -0.231523 0.144519 -0.0515546 0.00326055 0.0836174 -0.270023 -0.0125214 -0.011768 0.0938767 0.0125642 -0.0730168 -0.000797953 -0.0276305 -0.0243059 0.0669593 -0.00491574 -0.0088717 0.103867 0.0466338 0.28083 0.0653117 -0.133526 0.00960799 -0.106487 -0.312878 0.153094 -0.125703 0.00138567 0.0687464 -0.339631 -0.012524 -0.0347387 0.278048 0.0259947 -0.149842 -0.146984 -0.174815 -0.0742419 0.0963853 -0.0100797 0.188653 0.108434 0.104976 0.0794147 -0.0716796 -0.0970063 0.0354197 -0.0423123 0.0488021 -0.0464777 -0.0699015 -0.00393956 0.098983 0.159803 -0.00493974 -0.127854 0.0169023 -0.00330913 -0.0358611 0.00193607 0.0588806 -0.00287993 -0.175945 0.056699 -0.028577 0.114394 0.0925372 0.100701 -0.0979008 -0.14327 0.0260414 -0.0437856 0.0237216 -0.014404 -0.0944543 0.00160287 0.0908477 0.220073 -0.00374712 -0.142837 0.00127505 -0.000447542 0.0325875 0.035158 0.0939414 0.0146934 -0.0535775 0.0239238 0.0481959 0.116122 0.0853613 0.108636 -0.105451 -0.156881 0.0136545 -0.0555839 0.0109671 0.00507729 -0.10381 0.00527442 0.0863384 0.239629 -0.00226245 -0.133291 0.00120286 0.00170335 0.0499344 0.0608112 0.106479 0.0255765 -0.0166389 0.0138306 0.0929322 0.113339 0.0956749 0.0975132 -0.0934317 -0.137326 -0.00362608 -0.0415337 0.02084 -0.0169549 -0.0926647 0.00455743 0.0884481 0.207672 -0.000225703 -0.139091 0.0026617 0.00314526 0.0300626 0.029113 0.084097 0.0227838 -0.094065 0.0292773 0.0461795 0.106254 0.1106 0.0734983 -0.0629323 -0.0869535 -0.0213847 -0.0373776 0.0414356 -0.0510631 -0.0669364 0.00851295 0.0935314 0.137702 -0.000813853 -0.120922 0.0183268 0.00770803 -0.0377455 -0.00924211 0.0402924 0.0173312 -0.251477 0.0648369 -0.028809 0.0252576 -0.0629978 0.0480032 0.0593492 0.15661 0.104367 0.015718 -0.0602476 -0.0947008 0.0344173 -0.0173181 -0.0393522 0.0976936 0.0653192 0.0542185 0.0785323 0.065677 -0.00371087 -0.0162665 -0.0442776 -0.060907 0.0161968 -0.100416 0.00713743 0.00450781 -0.109183 0.0414177 0.0049288 0.210614 0.0820529 -0.0518125 -0.0933726 0.00152314 -0.0103287 -0.00460689 -0.247634 0.162282 0.0560447 -0.082859 0.108983 0.0688457 -0.0154039 -0.11934 -0.0212636 -0.0458644 0.00973231 -0.0952692 -0.0726886 0.00773565 -0.0961694 0.0517665 -0.0132637 0.204446 0.0823026 -0.0514249 -0.0833033 -0.0172104 -0.00293557 0.00660267 -0.212263 0.148427 0.0425574 -0.0957077 0.0811031 0.0570205 -0.0156103 -0.122104 -0.000296237 -0.0310022 0.0211764 -0.0570611 -0.0579917 0.038922 -0.0226834 0.0803047 0.00463796 0.128586 0.0511032 0.0133047 -0.0247 -0.133141 0.0594597 -0.000347523 0.0822085 0.0314969 0.0259679 0.0108262 -0.00734978 0.0459794 0.0146299 -0.0355759 0.018352 -0.0275669 0.0104093 -0.030101 0.0401962 0.0436457 0.00416267 0.0610547 0.040116 0.157391 0.0676439 0.0145187 0.0161251 -0.170973 0.090917 -0.00694383 0.189984 0.0243221 0.0361829 0.124559 -0.0771016 0.0356741 0.0636969 0.0374499 -0.00241256 -0.0440749 -0.00921538 -0.0513056 0.147164 0.0400179 -0.00336997 0.0508944 0.0558403 0.15692 0.0901941 0.0306097 0.00971754 -0.17277 0.0902245 -0.00965528 0.173526 0.0440687 0.0462578 0.141932 -0.0439411 0.04656 0.0485459 0.0383747 -0.0190281 -0.0476254 -0.00292827 -0.0640709 0.139986 0.0344369 -0.0186508 0.0789783 0.00159163 0.115453 -0.052066 0.0341823 -0.0268134 -0.15699 0.0395194 -0.0160157 0.10833 0.0283075 -0.0319939 0.0271651 0.0133042 -0.0628721 0.00406635 -0.0621831 -0.00504216 0.0295491 0.029789 -0.00174372 0.019759 0.00232545 -0.0898459 0.0504099 -0.0209285 0.194194 -0.0934765 -0.03834 -0.0843812 -0.0365443 -0.0263935 -0.00715322 -0.193522 0.140161 -0.043188 -0.0838096 0.0842475 -0.0675715 -0.0213638 -0.141013 -0.0167658 0.0264668 0.0456975 0.0184599 -0.063004 -0.00261392 -0.105194 0.0383853 -0.00720866 0.209128 -0.0970164 -0.0524755 -0.0961863 -0.00747657 -0.0426028 0.00677948 -0.253729 0.156225 -0.0563169 -0.0833597 0.0995197 -0.0778849 -0.0178566 -0.135759 -0.0364221 0.0267523 0.0495101 0.0603875 -0.0691598 0.0173263 -0.0581839 0.0431115 0.0458074 0.160422 -0.117342 0.00561595 -0.0633878 -0.0989516 -0.00393952 0.00902289 -0.0583449 0.0903022 -0.068918 0.0528459 0.0511066 -0.0784207 -0.0018357 -0.0213923 -0.058862 0.0212409 0.0541508 0.0640686 0.0270713 0.0331246 -7.87793e-05 0.0471211 0.0461817 0.155335 -0.10141 0.0303155 0.0052518 -0.182032 0.0561575 -0.00916588 0.16454 0.0391194 -0.0533286 0.145857 -0.0551771 -0.071006 0.0455099 0.0256472 -0.0361992 0.0204432 0.0258374 0.0383182 0.145397 0.038055 0.0083032 0.05788 0.034411 0.150662 -0.0767375 0.0245232 0.0137951 -0.188152 0.0646631 -0.0134048 0.20028 0.0201428 -0.0440614 0.136402 -0.0746015 -0.0619346 0.0580895 0.0197837 -0.0255628 0.0259564 0.0177788 0.0278909 0.141746 -0.00673072 0.131259 -0.151073 0.0147507 0.0992177 0.0485741 0.130863 -0.0193533 -0.0299363 0.0548994 0.00174772 -0.0301991 -0.0390056 -0.0256448 -0.0339682 -0.0152987 0.0249735 -0.355121 0.0884177 0.187436 -0.0293573 0.0282216 -0.024757 0.0571509 0.0639974 0.153066 -0.1078 -0.0180113 0.0153402 0.0238538 0.0530165 0.0485825 -0.0488708 0.0449919 0.000863606 -0.126998 -0.0816567 -0.0212231 0.0913935 -0.00125754 0.0275027 -0.0584892 0.0039394 0.116827 -0.0265962 0.00523673 -0.0243343 0.0375047 0.118893 0.143395 -0.0456812 -0.0478348 -0.0849775 0.0184329 -0.0251125 0.0914955 -0.0504738 0.0316922 0.00759535 -0.174746 -0.0960259 -0.0103082 0.158469 0.0321142 0.0210377 0.173436 -0.0542338 0.0242749 -0.018808 0.0348803 -0.0196507 -0.00575501 0.144387 0.148535 -0.0449239 -0.0379162 -0.100705 0.00401155 -0.050238 0.0976233 -0.0353412 0.0250187 0.0127958 -0.178614 -0.0958801 -0.00278459 0.207044 0.025298 0.00949865 0.193706 -0.0492208 -0.0301417 -0.00447742 0.0725652 -0.0189916 -0.0367419 0.12376 0.151199 -0.0518625 -0.0475371 -0.0861236 -0.0139342 -0.0254132 0.0920757 -0.0463131 0.0303545 0.0106717 -0.171014 -0.0976939 0.00535768 0.15621 0.0419245 -0.00304306 0.195947 -0.0623898 0.00239719 0.0367951 0.03632 7.30474e-05 -0.0137897 0.0688107 0.168316 -0.124055 -0.0148602 0.020366 -0.0271793 0.0564536 0.0447115 -0.0393299 0.0414338 0.0160272 -0.117127 -0.0821622 0.0151981 0.0880169 0.0156845 -0.0112877 -0.0275332 -0.00701935 0.0761512 0.103921 0.00866586 0.0161153 0.027064 -0.00933677 0.15019 -0.178671 0.0213026 0.113662 -0.061189 0.143277 -0.0355128 -0.00862974 0.0464759 0.0125658 -0.00748817 -0.0312202 0.0196621 -0.0411256 0.0107374 -0.0109328 -0.33702 0.0811858 0.139902 0.157403 0.03278 -0.00302042 0.0490236 -0.124177 0.102483 -0.037773 -0.0163729 0.0755875 -0.041732 0.11587 0.025119 0.0399094 0.0327872 0.0103092 0.0361199 -0.0139649 0.0136808 -0.0964432 -0.0677369 -0.0240707 -0.146549 0.0466848 -0.0771211 0.0712473 0.0217271 -0.0179697 -0.0448996 -0.246153 0.067031 0.0760622 -0.0514018 0.0602184 -0.0205366 0.105031 0.0656715 0.0930009 0.000791734 0.00768952 0.0744179 0.00897458 0.0142431 -0.126964 -0.085059 -0.0202701 0.0331742 -0.00668428 -0.212648 -0.0188219 -0.00697022 -0.0111791 -0.0877488 -0.29554 0.0540353 0.115037 -0.0577533 0.064714 0.00185317 0.0955344 0.0643019 0.122979 -0.0105185 0.0110671 0.0779718 0.0186942 -0.000588963 -0.0871386 -0.0864865 -0.00440055 0.0901508 -0.0192307 -0.238328 -0.0674845 -0.0154284 -0.00578054 -0.0809592 -0.253922 0.0582016 0.0903367 -0.0553191 0.0554547 0.0198931 0.101923 0.0731261 0.0892397 0.00147553 0.0113603 0.0702156 0.00771827 -0.0155905 -0.127393 -0.095135 0.0108502 0.0394565 -0.00892732 -0.199441 -0.094172 -0.00354356 0.000147306 -0.0877328 -0.129535 0.0874857 -0.0135057 -0.022803 0.0648893 0.0369938 0.107569 0.0391111 0.028775 0.0372101 0.00766325 0.0251197 -0.0185367 -0.017323 -0.0953017 -0.089404 0.0222252 -0.147443 0.0484044 -0.0450484 -0.0906589 0.0262144 -0.00776059 -0.0457592 0.1007 0.164221 -0.0724006 -0.0256473 -0.0364042 0.0253225 0.011944 0.0728047 -0.0456885 0.0533075 0.00713663 -0.104096 -0.020671 -0.0139441 -0.0324594 -0.0932572 0.0119529 -0.0461295 -2.62127e-05 -0.153206 -0.0765291 0.060158 -0.0129623 -0.154775 0.14304 0.165499 -0.0596216 -0.0171896 -0.064507 0.00228814 -0.0365445 0.0784486 -0.03075 0.0558983 0.00973946 -0.111789 -0.000936203 0.000594279 0.0329141 -0.118798 -0.00562971 -0.00488189 0.0360933 -0.26465 -0.0810712 0.0811592 -0.0182527 -0.160727 0.109085 0.177996 -0.0883241 -0.0192192 -0.0299809 -0.0223992 0.0120456 0.0609872 -0.0279502 0.0445324 0.0124496 -0.0974935 -0.0186383 0.0125251 -0.0405597 -0.107658 -0.0181682 -0.0267121 0.00221277 -0.191023 -0.0169835 0.0581307 -0.0212402 -0.116398 -0.20045 0.0569326 0.0595361 -0.0677622 0.0708032 -0.0183626 0.0533965 0.0688164 0.0359817 -0.0377525 0.0134673 -0.0351488 -0.0956866 0.00553134 0.040622 0.0617046 -0.00669245 0.135917 -0.0204821 0.165304 0.103849 -0.0265586 0.00338241 0.12717 -0.283186 0.0191374 0.108381 -0.081704 0.0851219 0.00197187 0.0405433 0.0727295 0.0811966 -0.0604139 0.00809155 -0.0416398 -0.0863651 -0.00128535 0.131626 0.121873 0.011494 0.21668 -0.0285821 0.206274 0.0734806 -0.0101719 -0.00110383 0.150394 -0.209954 0.0418852 0.0790354 -0.0756295 0.0621808 0.0204356 0.0514123 0.0831523 0.0169786 -0.0293425 0.00716301 -0.0422811 -0.0985361 -0.00919045 0.0497439 0.0764191 0.0285667 0.127378 -0.0260069 0.202907 0.0326258 -0.0290785 0.00215868 0.0872026 0.0274121 -0.0130884 0.0283546 0.0278586 -0.0153271 -0.116618 0.0151475 -2.76077e-05 -0.0329228 0.0248972 -0.0380989 -0.00737557 -0.0105881 -0.000371526 -0.0304294 -0.00604958 -0.00590315 0.0240679 0.0113398 0.0118432 -0.00947425 -0.0270926 -0.0112473 -0.0396743 0.0250764 -0.02151 0.00865659 0.0383538 -0.00492115 -0.102726 0.0265951 -0.00335368 -0.0462265 0.0555317 -0.0207506 0.0255674 -0.0261463 -0.0282765 0.0114812 -0.0359222 -0.00258456 -0.0323619 -0.0135052 -0.0196736 0.0257091 -0.0336483 -0.0178708 -0.0164982 0.0302373 -0.0182843 0.0153711 0.0489076 0.00658691 -0.0592654 0.0346285 0.00230521 -0.0324689 0.0373974 -0.0235146 0.00867955 -0.0353824 -0.0134506 -0.0356258 -0.0115824 0.0033898 -0.0310214 0.0107161 -0.051752 0.0133836 0.0229821 -0.0414045 -0.0183645 0.0167245 -0.00452811 -0.000950333 0.0387461 -0.0352125 -0.0529025 0.0351287 0.00635089 -0.0266628 -0.0131402 -0.0487706 0.0180815 0.0172845 0.00935553 -0.0390411 -0.0266801 0.0305809 0.048378 -0.0436483 -0.0272711 0.00141298 0.0103786 -0.0135995 -0.0237811 -0.00351386 -0.00458555 -0.00594287 0.00761948 -0.0213474 0.000229695 0.0098544 0.0309611 -0.0520796 0.0403896 -0.0369694 -0.0384329 0.00485042 0.00542807 -0.0237554 0.0300058 0.00935877 0.0552356 -0.0110501 0.00526473 -0.00812712 0.00408444 -0.0495022 0.00296554 -0.010815 0.000475537 -0.000997521 0.0126812 -0.0279614 0.0221176 0.0397744 0.0191661 -0.0130243 0.00104174 -0.0321136 0.00245307 -0.0075611 0.00694005 -0.0132252 0.0174064 0.0157551 -0.00626816 -0.0138248 -0.0347256 0.0164924 -0.0164002 -0.0175742 -0.00966423 0.0186166 -0.00114006 -0.0140977 0.0253469 -0.0143658 0.0252513 0.0354047 -0.0051823 0.000644951 -0.0196103 -0.0249398 -0.00896005 0.0179854 0.00161573 -0.00214094 -0.0138999 0.0287282 -0.0573495 -0.0273515 -0.0295221 0.0352321 -0.0174887 -0.00531988 -0.0142979 0.00122323 0.00164689 -0.00929003 0.0226629 0.0211439 0.0260738 0.00961682 0.0151451 -0.0122279 -0.027944 -0.0313118 -0.0139172 0.0109321 -0.00103396 -0.00417212 0.0223667 0.0446618 -0.0157869 -0.000507105 -0.0116582 0.0106067 0.00295456 0.00447962 0.0211703 0.00154786 0.015698 -0.00319055 -0.0162949 -0.0177213 0.0367112 0.0193508 0.0334619 0.0151149 -0.0202974 -0.0104477 5.99332e-05 0.0195852 -0.0307275 -0.00198655 0.0255808 0.0468746 -0.0230966 0.0128917 0.0361821 0.00156826 0.00820043 -0.027175 0.0556793 0.00454387 0.00109374 -0.0163059 0.0136774 0.0190547 -0.0466838 0.00977134 0.0173493 -0.00995811 -0.0319686 0.0361977 -0.010543 0.0109068 0.00207866 -0.00827679 0.0249733 -0.0499662 -0.0144765 0.00325086 -0.0001297 -0.0133242 -0.00756993 0.00329875 0.0323277 0.0213813 -0.00247568 -0.0179094 0.0208719 -0.0166866 -0.033077 0.0347677 -0.00382859 0.00174976 -0.0204218 0.0306138 -0.00711417 0.0149192 -0.00209649 -0.00461478 -0.0112728 -0.0378592 -0.0591507 -0.0247026 -0.000180529 -0.0389836 -0.0167822 0.0192447 -0.00725173 -0.00860242 -0.00208166 -0.0030327 0.0129443 -0.0299774 -0.020776 0.0394811 0.0199249 -0.0133426 0.00143468 0.0395353 0.00327965 -0.0115847 -0.00882454 -0.0136243 0.0200624 -0.0210274 -0.0106828 -0.0110118 -0.0150125 -0.0260598 -0.00576402 0.027097 -0.00305348 -0.00206501 -0.00830247 -0.00613112 0.0126656 -0.022239 0.00227987 0.00867497 0.0314481 -0.0530832 0.041425 0.0439687 -0.0388868 -0.00104381 -0.00747956 -0.0214095 0.0342889 -0.0115878 0.048233 -0.00814509 0.00440709 0.01273 0.0296798 0.0412439 0.00974592 0.0169549 -0.00930882 -0.00036002 0.0499684 -0.03282 0.0597799 0.0313762 0.0077923 -0.0283372 -0.0118469 0.0521302 0.0167597 0.0112082 -0.0148678 -0.0357326 -0.0175298 -0.0369695 0.0398358 -0.0422835 -0.0171181 -0.0139033 0.0171222 -0.00108308 -0.0221037 0.0299028 -0.0207286 0.0207464 0.0564854 0.00985033 0.0655072 0.0301922 0.00139407 -0.0313721 0.0409572 0.0264389 0.00693519 -0.0420995 0.0054672 -0.0277277 -0.00699982 -0.00524224 -0.0390598 0.00935654 -0.0305434 -0.0387834 0.0469189 0.0145507 -0.0207482 0.0248797 -0.0233093 0.0140026 0.0474278 0.00132322 0.109627 0.0199511 -0.00260787 -0.0446803 0.0588598 0.0196933 0.0246208 -0.0303063 0.0198064 0.0177503 -0.0330285 0.00165413 -0.0385922 -0.0161154 0.00286858 -0.0327882 -0.0176871 0.0222968 -0.0200058 0.0264192 -0.0156876 0.0330192 0.0409681 -0.00865422 0.125284 0.00867037 0.000968922 -0.0332823 0.0282101 0.0365104 -0.00869537 -0.0126318 -0.00831822 -0.0251372 -0.00173311 0.0080577 0.0190841 0.00868326 0.00726763 0.0131514 -0.0183377 0.0114624 -0.0433982 0.00260664 0.0242466 0.0372939 0.0207632 0.011814 -0.00161973 -0.0230642 -0.00146857 0.00190984 -0.00336304 0.0163236 0.0220834 -0.0058873 0.00899081 0.0229783 -0.0269956 -0.0290421 0.00730186 -0.0504315 0.0196674 0.0231227 0.0245979 0.0465947 0.00132871 -5.87347e-08 0.0170482 0.0226178 -0.0302451 0.00538248 -0.00322504 -0.0134065 0.00806443 0.01126 0.0484036 0.0232343 0.00138545 0.00900316 -0.0223632 0.0185225 0.00434064 -0.0571438 0.0257255 -0.0604833 0.0330113 0.0025585 0.0196923 4.66916e-05 0.0172459 -0.000229285 0.0180945 0.0153504 -0.0295397 0.00559383 -0.0158594 -0.0057665 -0.00397692 0.00599282 0.0262031 0.0232804 0.00992468 0.0107109 -0.003406 0.00349925 0.00660406 -0.0520433 0.0301716 -0.024715 0.0384089 0.00295054 0.0214589 -0.00305967 0.0104632 0.00332418 0.0226076 0.020475 -0.023869 0.0145139 -0.0274111 -0.0124332 -0.0116403 -0.00928763 -0.00412077 0.0230617 0.00869163 0.00781382 0.011678 -0.00205015 0.00772105 -0.0391826 0.0144205 0.00585546 0.0362022 0.0041016 0.0122953 0.0116486 0.00236408 0.00845765 0.0222498 0.0288911 -0.00610846 0.0176229 -0.0428802 -0.0281178 -0.0149461 -0.00721281 -0.0393959 0.0133025 0.00117564 -0.00473241 0.0265646 0.0197933 0.00498041 -0.0316734 -0.00190742 0.0178226 0.0207658 0.0132347 -0.00509347 0.0335699 -0.00705869 0.0108978 0.0247946 0.0224708 -0.0161377 0.0244693 0.0349771 -0.0338337 -0.00555124 -0.00272064 -0.0449577 -0.0188739 0.00831066 0.00706804 -0.0241377 0.00964204 -0.00298331 0.0364821 0.0121638 0.0183789 0.0144601 -0.00247779 -0.0353627 -0.0267493 -0.0123934 0.00534094 0.0244683 0.0160171 -0.0308664 0.0192685 0.0250881 -0.0156485 -0.00461133 -0.00564177 -0.00897358 -0.0293969 0.0133049 0.0178814 -0.00935894 -0.00917404 -0.00106918 0.0443505 0.025706 0.00638855 0.0228634 0.0120776 -0.00530946 -0.015564 -0.00251989 0.00125193 0.0192351 0.0130076 -0.0328777 0.00856725 0.0188895 -0.00662316 0.000661341 0.00861222 0.0220343 -0.0285021 0.0127715 0.0192224 0.00496509 -0.00184316 -0.00345723 0.0582175 0.0401926 -0.0240298 0.0250216 0.014048 0.0130117 -0.00702239 0.00589705 0.00125416 0.0173839 0.0219747 -0.0305144 0.00628723 0.00798101 -0.0115683 0.0104143 0.0129176 0.0454016 -0.027207 0.0024582 0.0159692 0.0227244 0.0145286 -0.00680678 0.0656358 0.034603 -0.0605721 0.0218333 0.0103758 0.0134048 -0.00943899 0.0126109 0.00380766 0.0233738 0.0367406 0.0235204 0.011454 0.00541378 -0.0197883 -0.000642334 0.00247239 -0.00418838 -0.0186702 0.0217004 0.000489451 -0.0120089 0.0197699 -0.0349168 0.0347374 0.0123404 -0.0531806 0.0239419 -0.0113364 -0.00259128 -0.0564466 -0.00594361 0.00272524 0.0124873 0.0107053 -0.00145523 -0.0119147 -0.0159528 -0.00786666 -0.00325148 0.0138408 -0.0169433 0.0187945 0.0115926 0.0367643 0.00574025 0.0188116 0.0269558 -0.0370582 -0.0160968 0.0363786 -0.0881007 0.00782722 -0.0216296 0.00150772 -0.0157142 -0.00320839 0.0053184 -0.0139646 -0.029018 0.00544106 0.00621144 0.0110491 -0.00137033 -0.0101007 0.0178069 0.0367168 -0.00603128 0.0176312 -0.0032427 0.0254787 0.00322458 -0.022304 -0.0252037 0.0314854 -0.0463567 -0.0159936 0.00561163 -0.0142514 0.0095014 -0.0175804 -0.00163073 -0.0312596 -0.0257027 0.0286874 0.0180278 0.00761304 -0.00147869 -0.00629914 0.0167018 0.0277501 -0.0144367 0.0132624 -0.00735872 0.0165742 -0.0226585 -0.0142845 0.00233502 0.0195798 -0.0145667 -0.0144995 0.0143654 -0.00208785 0.00626155 -0.0270775 -0.00243301 -0.0311095 0.00782375 0.037779 0.0223512 -0.0138004 -0.00464255 0.033238 -0.0295041 -0.00337631 -0.00524769 -0.0016384 0.00684907 -0.0218576 -0.0416006 -0.00861323 0.0351724 0.0224115 0.0054272 0.00755263 0.0104334 0.0366812 -0.0255834 -0.00898944 -0.0148779 -0.0320478 0.0261956 0.0378284 0.019747 -0.0021351 -0.0348118 0.0206718 0.0424134 -0.012057 -0.0462803 -0.089171 0.0179063 0.0284436 -0.0294157 -0.0172112 0.0025626 -0.000162965 -0.0503463 -0.0673205 0.00199161 -0.00948106 0.0011972 -0.0170547 -0.00890494 -0.02676 -0.00162124 0.0309428 0.00856452 -0.000948602 -0.0213857 0.00406185 0.00226547 0.0047265 -0.0155675 -0.0314411 0.00367033 0.00855272 -0.0165632 0.000740267 -0.000661366 0.0172984 -0.0151862 -0.0112589 -0.00636838 0.00195986 -0.0077073 -0.0225954 -0.00215357 -0.0159332 -0.037815 0.00827905 0.00529287 -4.55576e-05 -5.36064e-05 -0.000862579 -0.0307101 0.0161933 0.0205346 0.0234467 -0.00065335 -0.0278179 0.0217847 0.00350031 0.0189532 0.0128873 0.0135332 0.0378703 -0.00467868 0.00245196 0.00326011 -0.0131848 -0.00714007 -0.0344548 -0.0166481 0.0317218 -0.0174931 -0.000982725 -0.0171131 0.00800575 -0.00474898 -0.00676017 -0.00990711 -0.0223688 0.00224099 -4.76883e-05 -0.0224847 -0.0101036 0.00999719 0.0206811 -0.026024 0.00950423 -0.0159539 0.0104644 -0.00357635 -0.00588447 -0.0140864 -0.0388198 0.0139937 0.0368383 -0.0282502 -0.00113062 -0.0311 0.0234232 0.0357061 0.0109901 -0.0406875 -0.0797253 -0.0154154 0.0190562 -0.0356068 0.00927137 0.0138634 0.0051206 -0.0864222 0.034966 -0.00124956 0.015242 0.00701903 0.00788879 0.0229694 0.0370801 -0.0135885 -0.0338016 -0.0051656 0.0106869 0.0217458 -0.0239924 0.0411185 0.0264215 0.0353595 0.0229232 0.00905016 -0.00510205 -0.0157413 -0.0459273 -0.0144414 0.0541109 -0.0434854 0.0227412 -0.0563196 -0.0161573 -0.00699276 -0.00521301 0.0144402 0.0176984 -0.0159958 -0.0148041 -0.00378072 0.0104723 0.0156391 0.02952 0.0265646 0.0121438 -0.00852976 -0.00324959 -0.000697284 -0.0108453 0.0104523 -0.0451762 0.011442 0.00460409 -0.0184482 -0.00320848 -0.00386019 -0.0142597 -0.00804977 -0.00368761 0.00347803 -0.0149901 -0.0142758 0.00708994 -0.00765883 0.00723175 -0.00589876 0.0664964 -0.00464493 0.00600912 -0.0414176 -0.0110046 -0.00470776 -0.0169413 0.00720249 -0.0316468 -0.0102349 -0.0438378 0.0145892 -0.0239826 0.0493027 0.00017133 -0.0237734 0.000789289 0.00523088 -0.0170594 -0.000945896 0.0130643 -0.0421853 -0.00116575 -0.00676171 0.0188772 -0.0443943 0.0174125 0.0257523 -0.058675 -0.0227517 0.0505644 -0.0218771 0.0127709 -0.0182096 -0.0232091 0.0547639 -0.00531633 0.0803038 0.0472703 0.00815523 -0.000129574 -0.00330964 0.000336811 0.000433806 -0.0109743 -0.0267685 -0.00980541 -0.00655821 0.0210445 -0.0251472 0.0252933 -0.000295625 -0.0276851 -0.015486 0.0361299 -0.022 -0.00166715 -0.0263838 0.00388354 0.0183458 0.015843 0.0395343 0.0270227 -0.0200106 -0.000159558 0.00680018 0.00327232 0.00250421 -0.0141299 -0.0159429 -0.0060797 -0.00309859 0.00524727 0.0086914 0.0208738 0.00961212 -0.00310327 -0.00281621 0.0174315 -0.0205978 -0.0248843 -0.0190064 0.0209737 -0.00799592 0.0197021 -0.00598401 0.0081263 -0.0222327 0.00280819 0.00608393 -0.0222184 -0.00793186 0.017857 0.0352235 -0.00442094 -0.00343942 0.0232998 -0.0471299 -0.0205685 0.0259878 -0.0520116 0.0201337 0.0441712 -0.026839 -0.00365885 -0.00949079 -0.0211212 0.035574 0.0347309 0.0383666 -0.0795165 0.0079087 -0.00208469 0.0038958 -0.0187863 -0.0205734 0.00892721 0.00540187 0.00703845 -0.0036447 0.069375 -0.00637164 -0.00732144 -0.0403675 -0.00318356 0.00508427 -0.022976 0.000914162 0.0400241 0.000101095 -0.041022 -0.0107984 0.0269885 0.0353583 -0.0222454 -0.0253139 -0.0034948 0.0152064 0.0149715 -0.0218317 -0.0138269 0.00471214 0.0113749 0.0182741 0.0318822 0.0257448 -0.0151221 -0.00553631 0.00489155 0.00216976 -0.0156001 0.00394423 0.0511952 0.02087 0.00673329 -0.0252258 -0.0111127 -0.00220539 0.0176777 -0.0112751 0.00995735 0.0242205 0.0356096 -0.020003 -0.033198 0.00861089 0.0117054 0.0248808 -0.0212503 0.0414774 -0.0326378 0.0390079 0.0314101 -0.00602958 -0.0102186 -0.0209618 0.0456487 -0.0057749 0.0548797 -0.0289584 -0.0476043 -0.0458587 0.0466571 -0.0123001 0.00203614 0.00806373 0.000429262 -0.00439612 -0.0123518 0.0159852 -0.0063323 0.000225431 0.00849893 0.00800719 -0.0244469 0.0129256 0.00482182 0.00403185 0.0117124 -0.0259151 0.0267974 -0.0102627 0.0217525 -0.0016651 -0.0211385 -0.0156613 -2.12537e-05 -0.0253931 0.00193498 -0.00233381 -0.00343423 -0.00654232 -0.00793892 0.0239568 -0.011435 -0.00333912 0.0250219 -0.0270216 -0.0276399 0.00087481 -0.0205228 0.0146724 0.0301647 -0.0265822 0.00707076 -0.0182157 0.00481186 0.0180717 -0.00299519 0.0143232 -0.0405018 -0.0221967 -0.0150049 -0.00463205 0.0103389 -0.00224819 -0.0219046 0.00341211 -0.024304 0.0192828 -0.0148682 -0.0297067 -0.0067571 0.0266896 0.0442923 -0.017049 0.0296215 0.012389 0.0272248 0.0337575 -0.00499901 0.00950979 0.0262716 0.00105008 0.0192935 0.000591676 -0.0157511 -0.0269022 0.00210891 -0.0208009 -0.0209582 0.0282483 0.000176534 0.0149703 -0.000851344 0.00340113 0.0091597 -0.0143493 0.0259244 -0.00133224 0.0294053 0.040104 0.00693521 0.0488204 -0.017001 -0.0188171 0.0130672 0.0353584 -0.0373054 0.0356294 -0.0186626 -0.0231609 0.00823274 -0.0106285 -0.0026947 0.0309977 0.00825537 -0.0237065 0.0176644 -0.00454995 0.0185703 -0.0267788 0.00992344 0.00546774 0.0170086 0.0257136 0.00387563 -0.000972652 0.00562191 -0.0342314 0.0132373 0.032511 -0.0424645 0.0243339 -0.00508352 -0.0285878 -0.0138044 0.00150163 0.012248 0.018895 -0.00344108 -0.0350309 -0.00534275 -0.0142731 0.0275296 -0.0288238 0.00488282 -0.00159744 0.0243018 -0.0371924 0.020981 -0.0420389 0.0496911 -0.0363829 0.0078249 0.0160022 -0.0159068 -0.013584 -0.0155925 -0.0217096 0.00258875 -0.0259681 -0.00314337 -0.0364291 0.00879144 -0.0209937 0.0217529 -0.0102131 -0.0203872 -0.023469 0.015422 0.00400608 0.01175 0.0202726 -0.0113763 0.00465561 0.00845252 -0.0249153 -0.0238927 0.0403827 0.0342513 0.0291563 -0.0132712 -0.026616 -0.00182608 -0.0338191 -0.0223968 -0.0336031 0.000403711 0.0176808 0.00226042 -0.00148271 -0.0117084 -0.0122586 0.0299834 0.0112587 0.024937 0.0350937 -0.0115217 0.0522605 -0.0142551 -0.0101641 -0.0182259 0.0417282 0.0282467 0.0423132 -0.0117309 -0.0055219 0.00687854 -0.0122579 -0.0231812 -0.0171829 -0.0255365 0.0235094 -0.0135561 -0.0337604 0.00143573 0.0272359 0.0462358 0.022871 0.024653 0.00885212 -0.0300864 0.0368496 -0.00286071 0.0238079 -0.0229478 -0.0160845 -0.00885009 0.00725314 0.0112122 -0.0112545 -0.00801241 0.00600479 -0.00481403 -0.0383111 -0.0223814 0.00264842 -0.000181449 -0.0397009 0.0156752 -0.000793956 0.0404795 -0.0277392 -0.0362284 -0.000839255 -0.0246079 -0.01717 0.0229791 0.0693266 0.00488397 -0.0183379 0.00940666 0.00207167 0.0133963 0.00389434 0.003774 -0.02031 -0.0147691 -0.0405193 -0.0310225 -0.0238327 0.0144042 -0.0175638 -0.00257174 -0.0320622 0.0185571 0.000771477 -0.0271872 0.0172295 -0.0226741 -0.0758449 0.0101775 0.0643564 -4.67068e-06 -0.0397734 0.0375859 0.0231904 0.022212 0.0121642 0.0013019 -0.0434986 -0.0285534 0.0138526 -0.0194632 -0.00785841 -0.00198142 0.0150165 0.0097078 -0.0396743 0.00236763 -0.0207966 -0.0042718 0.0121448 0.0198176 -0.088845 -0.019135 0.0672757 0.00940189 -0.0625806 -0.0227298 0.0481039 0.00954573 0.0027396 0.00928428 -0.00488901 -0.0140518 0.0171752 -0.0307972 -0.027539 0.0104978 -0.0125783 8.25071e-05 -0.0362179 0.0146433 0.0038197 -0.021356 0.0212311 0.0217279 -0.0832571 0.00744687 0.0566705 0.0293728 -0.0398776 -0.0119581 0.0165906 0.00821574 -0.0113033 -0.00426545 0.0183996 -0.00293123 0.0192407 -0.0219681 -0.000671384 -0.00228309 -0.0362332 -0.0187203 -0.00408347 0.0374762 0.0328277 -0.0311915 0.00229401 0.0182988 -0.0232507 0.0204955 0.0622397 0.0322357 -0.00913044 0.00231844 -0.00358976 -0.0346381 0.000516957 -0.0197344 -0.00610732 0.0220902 0.0497028 -0.0117691 -0.0105533 -0.00434235 -0.00398172 0.00431035 0.0298948 0.0114775 -0.00148292 -0.00887872 0.0372096 0.00892815 0.00195862 0.0211578 -0.0223067 -0.0187664 0.0130361 0.0193007 0.00582366 0.0024911 -0.00492825 -0.0581612 0.0159321 0.0305153 0.007886 -0.00997615 -0.0152625 -0.000115162 -0.0210275 -0.0280909 0.039095 0.0129654 0.0207689 -0.0220829 -0.0493053 0.00900736 -0.0332882 0.0262544 -0.0178172 -0.0401728 -0.000972545 0.0326784 -0.0180856 -0.0315039 0.000513317 -0.0266568 -0.0209217 0.0192719 -0.0621097 -0.0088728 -0.00635576 -0.00274194 -0.0103076 -0.00929244 0.0331162 0.0178731 0.00875491 -0.0157571 0.0344819 -0.0142581 0.00886203 0.0251045 -0.0313306 0.00464916 -0.00973102 -0.0118948 0.0117956 -0.018752 -0.00880334 -0.0055492 -0.000188425 0.00446994 -0.0658704 -0.0135644 0.00687325 0.00347546 -0.0217385 0.00533607 0.011854 -0.0101353 -0.000472104 -0.00568567 0.0372992 -0.00888629 0.0366767 0.0108157 0.0200267 -0.0032851 -0.0439629 0.00539382 0.0149147 -0.0201858 0.00299499 -0.0032378 0.0295267 0.0160366 0.010163 -0.0276486 0.0035851 0.0275216 0.0024122 -0.0539893 0.0199428 -0.0663866 0.00565707 -0.00348793 0.0614445 -0.00913459 0.0616426 0.0155301 0.0210456 -0.0285734 -0.0597928 -0.00201506 0.0460892 -0.0213274 -0.00811407 0.000693287 0.0126509 0.00755191 0.0413976 -0.0160406 0.00286548 0.00254504 -0.015552 -0.00840821 0.00902302 -0.0152201 0.00298187 0.000765579 0.0385387 0.0130065 0.0301641 0.00715726 0.0185588 0.00413042 -0.0273007 0.0154608 0.00917551 1 24 6 47.4795 17.4175 7.58967 5.30304 4.64879 4.58197 3.98429 3.13323 2.77267 2.31506 2.09131 1.79823 1.5475 1.46697 1.11273 1.06833 0.999237 0.888901 0.818852 0.743156 0.728566 0.598271 0.589845 0.507923 198 1 6 -20.6547 -20.0519 -19.1146 -17.7568 -15.6469 -12.4006 -8.27017 -3.55056 1.65875 6.75338 11.0958 14.7165 17.3322 18.7221 19.3316 19.5157 19.3623 -16.9434 -14.6923 -11.7473 -8.64008 -5.61118 3.24342 6.14406 9.21432 12.2557 14.7675 -0.800008 -0.571382 -0.341526 -0.111056 -3.34691 -1.6415 0.142254 1.89493 3.5165 -12.5316 -10.6698 -8.3451 -6.35058 -8.3556 -10.5048 4.83678 6.66716 8.99246 11.0209 9.08377 6.92444 -6.63855 -4.73902 -2.32888 0.427259 3.15408 5.72158 7.86034 6.14905 3.75933 0.883179 -2.0422 -4.62825 -2.38864 0.55887 3.50364 3.65722 0.689237 -2.33557 -5.64822 -0.423649 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.90089 1.2941 1.35258 1.04463 0.412997 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 21.3079 20.8425 20.4846 18.3869 13.4633 7.99404 3.29433 -0.880153 -4.53572 -0.807894 3.41769 8.15704 13.6544 18.5937 20.7063 21.0748 21.5385 0.166523 -1.56921 -2.95979 -4.29633 -5.52226 -5.43542 -4.17859 -2.80935 -1.38764 0.371491 -4.9545 -7.76035 -10.6633 -13.4075 -6.47077 -7.26957 -8.01839 -7.21848 -6.40175 -0.905324 -1.10649 -1.2279 -0.977391 -1.10156 -1.09011 -0.887733 -1.11779 -0.968074 -0.742362 -0.948989 -0.987214 -2.74685 -4.89305 -6.54708 -8.22771 -6.48681 -4.80547 -2.63884 -3.93286 -5.28293 -6.67982 -5.34336 -4.02161 -5.20395 -7.41824 -5.14457 -4.49552 -6.42523 -4.5521 132 1 6 -20.6517 -20.0489 -19.1116 -17.7538 -15.6439 -12.3976 -8.26721 -3.5476 1.66171 6.75634 11.0988 14.7195 17.3352 18.7251 19.3346 19.5187 19.3653 -16.9404 -14.6893 -11.7443 -8.63712 -5.60822 3.24638 6.14702 9.21728 12.2587 14.7705 -0.797051 -0.568425 -0.338569 -0.108099 -3.34395 -1.63854 0.145211 1.89789 3.51946 -12.5286 -10.6668 -8.34214 -6.34762 -8.35264 -10.5018 4.83974 6.67012 8.99542 11.0239 9.08673 6.9274 -6.63559 -4.73606 -2.32592 0.430216 3.15704 5.72454 7.8633 6.15201 3.76229 0.886136 -2.03924 -4.62529 -2.38568 0.561827 3.5066 3.66018 0.692194 -2.33261 -5.64822 -0.423651 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.900888 1.2941 1.35258 1.04463 0.412995 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 3 1 6 0 0 0 3 1 6 0 0.7 0 3 1 6 0 -0.7 0 66 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 66 1 4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 66 1 4 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 3 11 11 1 2 0 -13.6353 3.14094 11 11 5 0.562951 0.492231 0.392071 -0.324283 -0.732065 0.239214 1.30495 0.695096 0.142153 0.00318808 0.0878815 0.196695 -0.12213 -0.30256 -0.777999 -1.46962 -0.45117 0.674224 0.193465 0.180275 -0.195511 -0.155063 0.0370602 -0.261012 -0.516493 -0.959312 -1.89019 -0.968075 0.528224 0.333006 0.157199 -0.0755818 -0.341383 -0.0147762 0.201086 0.172955 -0.606819 -2.51999 -1.36397 0.779582 0.436482 0.278687 0.0614129 -0.719836 0.199226 0.354085 0.619501 0.0795542 -2.1933 -1.60106 1.06143 0.989063 0.62345 0.2095 -0.678146 0.0557605 0.100803 0.545488 0.524955 -0.757321 -1.69603 1.04211 1.18857 0.557012 -0.0261993 -0.560888 0.221317 -0.0769839 0.351237 0.325146 -0.42901 -1.53677 0.777956 1.3965 0.28547 0.0813953 -0.231373 0.0429112 -0.166692 0.0836791 0.182849 -0.335867 -1.31797 0.629751 1.24243 0.198625 0.110102 -0.0755015 0.0712738 0.0181047 0.140503 0.246152 -0.143833 -1.2022 0.378632 1.05806 0.16277 0.165563 0.491056 0.22626 0.0296308 0.272444 0.281704 -0.185567 -1.03696 0.00500791 1.07354 0.230438 0.259901 1.02805 -0.0381257 0.0485562 0.262949 0.321603 -0.57394 -1.31668 -0.0903771 0.853009 -0.0354205 0.202962 1.01573 3 11 11 1 2 0 -16.1069 1.87309 11 11 5 0.741145 0.564588 0.219541 -1.07618 -5.01346 -0.680434 2.27145 1.65219 0.518754 -0.518361 -1.90616 0.0204504 0.0951715 0.213454 0.0533367 -2.16324 -0.227446 1.81986 0.827795 0.376413 -0.0630161 -0.40794 -0.16925 0.0451727 0.428464 0.213028 -1.49722 -0.07303 1.61622 0.413164 0.183164 0.0107978 -0.0670918 -0.074239 0.0344292 0.231113 0.225069 -1.31926 -0.475791 1.3857 0.298118 0.0191349 0.333622 0.416606 -0.136905 0.314948 0.16884 0.0296612 -1.13764 -1.05277 1.2151 -0.0306573 -0.115124 0.300244 0.873056 -0.0219887 -0.131813 0.136746 -0.241183 -1.00793 -1.21705 1.06748 -0.118415 -0.376924 0.0993 0.627232 -0.265421 -0.234053 -0.243841 -0.422629 -1.14936 -1.19289 1.0006 -0.14459 -0.795968 -0.0226709 0.511354 -0.0550007 -0.28648 -0.0808295 -0.050981 -0.756402 -1.35247 0.718128 -0.0172909 -0.781015 -0.222539 0.178562 0.0937668 -0.375344 -0.123843 0.123164 0.170388 -1.02229 0.119254 0.281942 -0.56934 -0.367177 0.174262 0.247565 -0.262006 -0.00953286 0.727465 1.22682 0.295009 -0.358019 0.630614 -0.110749 -0.391754 0.215366 0.577184 -0.0617496 0.237425 0.906912 2.02446 1.47618 -0.52038 1.3307 0.344637 -0.397657 0.292555 3 11 11 1 2 0 -18.1072 1.34431 11 11 5 0.324141 0.481642 -0.414163 -2.28603 -3.05116 1.20808 0.860287 0.640869 0.174653 0.213281 0.619951 -0.267823 -0.0464482 -0.14587 -1.05612 -1.75695 0.643617 0.0780012 -0.298071 -0.138896 0.189658 0.719397 -0.268037 -0.211941 -0.193747 -0.29313 -1.20702 0.0887586 0.182574 -0.634148 -0.267872 -0.118308 0.565791 -0.0393833 -0.329502 0.159374 0.331373 -0.144444 -0.688035 0.406886 -0.631433 -0.438186 -0.323828 0.470982 -0.0548434 -0.0502239 0.142334 1.1885 1.29059 -1.52578 0.684512 -0.315801 -0.355081 -0.342556 0.307139 -0.118313 0.128136 0.677546 1.70369 2.23797 -2.04742 0.838449 -0.143987 -0.36979 -0.584799 0.249218 0.218864 0.125135 0.667713 1.71069 2.06524 -1.82536 0.563741 -0.0249182 -0.359988 -0.582636 -0.0810253 -0.24067 -0.386916 0.156453 0.561012 0.889778 -1.67873 0.339268 0.157473 -0.359594 -0.641149 -0.087588 -0.395764 -0.0756676 -0.0177051 0.265213 0.237116 -1.86932 -0.226201 0.884045 0.0380085 -0.480637 -0.0731903 -0.0140275 0.0235361 -0.32767 0.281089 -0.197077 -1.74193 -0.82508 1.92459 0.782734 0.0963541 0.301733 0.988498 0.880873 0.371879 -0.323471 -0.592939 -2.56024 -2.67392 3.39025 2.0402 0.97064 1.08301 3 11 11 1 2 0 -13.6397 1.08378 11 11 5 -0.361972 0.350231 2.16556 0.583683 -2.16984 -0.113697 -0.361787 -0.718488 -0.699683 -0.186542 1.05575 -0.176188 0.518202 1.40528 1.03615 -1.75609 0.13309 -0.142571 -0.463095 -0.618831 -0.415522 0.525301 0.0914375 0.304188 0.469398 0.200982 -1.79688 0.144337 -0.0154561 -0.312687 -0.351352 -0.51716 0.387427 -0.378209 -0.0049596 0.125197 0.269777 -2.30267 0.524297 0.40441 -0.176111 -0.332933 -0.536041 0.330759 -0.0126384 0.0572785 0.279074 0.255907 -2.29508 0.386897 0.826366 -0.142828 -0.256846 -0.327186 0.144809 -0.119543 -0.170289 -0.0211908 0.259793 -1.78775 -0.707637 1.78715 0.329294 -0.00994144 -0.0195241 0.191717 -0.00842975 0.0541541 0.0532285 0.428077 -0.92509 -2.53903 2.72793 1.1409 0.366329 0.216066 0.671566 0.278086 -0.0704849 -0.0656405 -0.214545 -0.758833 -2.78752 1.60817 1.46416 0.383884 0.280671 0.775972 0.360353 0.0818069 0.13982 0.146168 -0.0574174 -1.30741 -0.554748 1.72353 0.437903 0.121266 0.454583 0.327858 0.320029 0.240022 0.0293121 -0.363727 -0.283281 -1.11141 0.569554 0.464576 0.00983019 0.325964 0.298716 0.499783 0.439146 0.362647 0.0125593 -0.404483 -0.716798 -0.488963 0.314847 0.0256944 -0.261927 3 11 11 1 2 0 -11.4562 1.20397 11 11 5 0.6183 -0.390262 -2.46346 -0.792549 0.862173 -0.298486 -1.14755 -1.53639 -1.21225 0.328918 0.0870514 0.437772 0.113795 -1.56337 -0.884012 1.67887 0.74069 -0.119352 -0.378973 -0.443697 0.167243 0.385496 0.145707 0.243447 -1.01564 -2.19094 1.20284 1.48322 0.48545 0.227984 -0.0507978 0.254103 0.676815 0.301191 0.126586 -0.12276 -1.6004 -0.377229 1.82053 0.655159 0.226788 0.177518 0.462516 0.793525 0.438055 0.141562 0.0104959 -0.462194 -2.09009 1.68116 0.785878 0.219088 0.223919 0.34909 0.901464 0.609213 0.328051 -0.158236 0.186927 -0.40527 -0.394052 0.987924 0.470029 0.168805 0.471172 0.423629 0.662611 0.622566 0.0736649 -0.133321 0.0658049 -1.31146 0.64323 0.552922 0.437194 0.440108 0.267154 0.0442479 -0.109859 -0.218015 -0.261791 -0.299074 0.100685 -0.870675 -0.0579153 0.402195 0.432539 -0.130994 0.380223 0.247014 0.260737 -0.522736 -0.393217 0.206062 0.117843 -0.854584 -0.142749 0.523556 -0.227796 0.240023 0.094207 0.0331609 -0.0496658 -0.455323 0.245988 0.94733 -0.14929 -0.683652 -0.612273 -0.709578 0.887486 0.57101 0.109151 -0.631523 -1.28773 -0.746326 0.252419 1.20524 0.390079 -1.28199 -2.31756 3 11 11 1 2 0 -11.7752 1.5168 11 11 5 -1.74322 -1.22079 0.980273 1.31615 -0.556081 -0.465723 0.112728 1.6031 2.32079 1.28654 -0.205783 -0.208886 -0.661175 -0.335712 1.85999 0.119955 -0.43433 -0.118692 0.471542 0.626149 -0.105345 -0.671861 -0.161149 -0.360752 -0.741473 1.17679 0.767905 0.00866503 -0.019703 0.258978 0.254405 -0.150716 -1.09896 -0.278472 -0.312062 -0.629421 -0.643864 1.41024 0.777615 0.561649 0.285524 0.334944 -0.128045 -0.58197 0.157256 -0.666299 -0.487515 -0.818882 -0.841942 1.02069 1.24382 0.524057 0.267422 0.282715 0.258115 0.604745 -0.2658 -0.264027 -0.0570324 -0.759002 -1.49444 0.66597 0.765813 0.205361 0.135304 0.45087 0.781744 -0.424356 0.368794 0.344411 0.315462 -0.546544 -1.57457 0.0619864 0.107519 0.116808 0.224178 0.741036 -0.411839 0.240232 0.169954 0.695677 0.975024 -0.0192449 -0.800663 -0.645877 -0.374463 -0.520244 0.161763 -0.664283 0.183694 0.134925 0.666324 1.11608 1.31684 0.678859 -0.369729 -0.908436 -1.53678 0.340262 -1.01677 -0.28657 0.147949 0.284893 0.613883 1.16328 1.14624 0.348967 -0.713183 -1.64289 0.240482 -0.668163 -0.822524 -0.663897 -0.428318 -0.354763 -0.214153 -0.160175 -0.156218 -1.07981 -2.31005 3 11 11 1 2 0 -11.8905 1.88463 11 11 5 0.332604 1.10255 0.896009 0.376782 0.518124 0.540656 -0.0692928 -0.314747 -0.498778 -0.209627 0.725469 -0.897099 0.732817 1.21951 0.513211 -0.0223482 0.108358 0.118593 0.147309 0.116511 -0.013333 0.258778 -1.43095 -0.584645 0.62155 0.836047 0.128134 -0.246132 0.307572 0.297863 0.172315 0.287262 0.498472 -1.02664 -0.98091 -0.632816 0.0392141 0.256724 -0.492136 -0.238606 0.335828 0.515936 0.583094 1.03044 -0.225474 0.00747844 0.0331273 -0.365842 -0.917318 -0.819289 -1.02549 -0.0915953 0.540477 1.0186 1.88732 0.378576 0.47357 0.9057 0.730126 0.0603826 -1.43108 -1.78148 -1.45312 -0.414573 0.708133 1.72573 0.246483 0.72207 0.713213 1.29983 0.937357 0.440716 -1.38943 -2.11589 -1.82973 -0.873481 -0.103268 -0.186021 0.0217193 0.197103 0.346281 0.550258 0.733184 0.483964 -0.361097 -1.16552 -1.24726 -0.829938 -0.675787 -0.494482 -0.573927 -0.412673 -0.148299 0.237848 0.310637 0.186572 -0.272238 -0.421272 -0.479372 -0.370323 -0.0328829 -0.516648 -0.371951 -0.320742 -0.326781 -0.296071 -0.289769 -0.543057 -0.252171 0.209807 -0.124829 0.211487 0.236121 0.591137 0.551769 0.72249 0.340103 0.0623472 -0.193164 0.253158 0.708847 3 11 11 1 2 0 -13.3982 2.46875 11 11 5 0.511176 -0.156208 0.231719 0.542015 0.223744 -0.15334 -0.430711 0.0772381 0.292195 0.172834 0.539126 0.279719 -0.296971 -0.23916 0.423287 0.646932 0.486441 0.571158 1.03499 1.2825 0.791562 0.447236 0.190129 -0.474546 -1.02489 -0.502365 0.439245 0.864829 1.01774 1.07444 0.869181 0.279505 0.103021 0.0289938 -0.451418 -1.15357 -1.34464 -0.172906 0.80993 1.11367 0.725696 0.239685 -0.285892 -0.565539 0.191375 -0.263593 -0.7133 -1.51392 -2.16146 -0.164672 0.930877 0.657548 0.0499806 -0.307159 -0.721873 0.804786 0.306694 0.007821 -0.156632 -0.939996 -2.3933 -2.31523 -1.45126 -1.25457 -1.45393 -2.0987 0.258048 0.143438 0.16709 -0.0854821 -0.0877009 0.261919 0.702797 0.0562923 -0.464058 -0.628229 -0.84083 -0.398769 -0.569312 -0.122845 -0.256952 -0.304826 -0.232875 -0.0851515 0.617533 0.938208 1.197 1.25516 -0.106704 0.258033 0.421053 0.479932 0.36262 0.0670318 0.0462989 0.133331 0.23856 0.318589 0.582785 0.545083 0.534487 0.292742 0.400585 0.244401 0.0927523 0.00297418 -0.117903 0.0619487 0.381885 0.492444 0.286707 -0.171051 -0.363472 -0.459682 -0.150266 -0.313594 -0.243425 -0.288825 -0.035809 0.148671 0.240008 3 11 11 1 2 0 -17.621 2.88562 11 11 5 0.0520625 0.169651 0.719616 0.416326 0.113701 0.109319 0.725361 0.886043 0.567812 0.376921 0.504046 0.17381 0.6245 0.865045 0.493637 -0.0487788 -0.134639 0.47247 1.10585 1.18249 1.08608 0.869877 -0.132196 0.262813 0.30179 -0.357754 -0.752202 -0.745263 0.166765 0.925346 1.11477 1.03885 0.357348 -0.763898 0.184504 0.206886 -0.274348 -0.650154 -0.630486 0.29768 0.956835 0.923984 0.0605716 -1.53038 -1.8637 -0.722615 -0.277325 -0.279503 -0.308245 -0.450526 -0.242599 -0.549607 -1.64737 -2.43347 -2.7757 -1.36209 -1.17147 -1.37812 -1.97566 -2.06069 -1.74028 -1.33104 -0.645919 -0.575838 -0.996688 -1.18891 0.192645 0.397713 0.995182 1.33536 1.83163 2.00898 1.51895 0.883324 0.38085 -0.198986 -0.282878 0.720933 0.244092 0.21436 0.163595 0.165702 0.306297 0.262042 0.337586 0.19364 -0.0184751 -0.062436 0.549053 -0.0517729 -0.251497 0.0961612 0.220906 0.159911 0.37824 0.276121 0.135364 -0.207209 -0.169371 0.454406 -0.244523 -0.378593 -0.0975088 -0.0159084 0.0546597 0.0457146 0.0533183 -0.148641 -0.108416 -0.105467 0.425777 -0.133542 -0.266633 0.0922794 0.211526 0.207181 0.24608 0.28936 0.0541116 -0.0102506 0.333722 3 11 11 1 2 0 -19.2424 2.62739 11 11 5 -0.467564 0.125218 -0.0438516 -0.472541 -0.629995 -0.0203481 0.173506 -0.140773 -0.243644 0.520693 1.29624 0.212053 1.03583 0.902715 0.374016 0.251901 0.897314 0.890677 -0.0643782 -0.394607 0.192813 0.375754 -0.288519 0.914934 1.10233 0.784676 1.15207 1.28513 0.629474 -0.792617 -0.707196 -0.408556 0.309925 -1.14963 0.242203 0.949724 1.16306 1.73816 1.38962 -0.5458 -1.50235 -0.800484 -0.0571465 0.292193 -1.69676 -0.145692 1.0316 1.54152 1.48281 -0.514545 -2.59761 -1.24076 -0.26408 0.158592 0.558654 -2.02766 -0.721343 -0.0206147 -0.511263 -2.19041 -2.93014 -0.969989 -0.238802 0.0949507 0.0899428 0.188611 -2.44337 -1.52022 -1.29203 -1.65808 -0.368923 -0.172762 -0.324994 -0.412096 -0.378392 -0.79379 -0.629498 0.65229 1.29433 1.55294 0.952877 0.0720126 -0.389452 -0.457295 -0.414794 -0.266766 -0.599462 -0.25341 1.31931 0.919391 0.605712 0.268868 0.121018 0.163601 0.309297 0.543288 0.462012 0.526993 0.779461 0.52079 0.701548 0.58387 0.179789 0.0895528 0.0845293 0.092429 0.0814819 0.0759691 0.344015 0.691113 0.135078 0.129637 0.0494344 -0.160297 -0.123164 -0.367502 -0.256288 -0.183133 -0.441446 -0.429255 0.484576 3 11 11 1 2 0 -13.9087 1.89114 11 11 5 -0.304315 -0.462442 -0.235955 0.202764 0.575326 0.629529 0.615475 1.15793 2.1869 0.874205 -1.34138 -0.00723174 -0.282479 -0.172353 -0.0194764 0.346565 0.290091 0.867145 1.2061 0.886144 -0.310503 -1.40224 0.131734 0.270975 0.0831056 0.305588 0.415129 0.262082 0.728614 0.228261 -0.512755 -0.606179 -0.568647 0.369471 0.412485 0.482039 0.0101832 -0.15862 0.121382 0.0671544 -1.00453 -0.589229 0.0138801 -0.22522 1.03551 1.15933 0.441325 -0.195802 -0.676787 -0.645402 -1.40268 -0.535818 0.44291 0.390682 0.240753 1.68234 1.2566 0.0499111 -1.02624 -1.54182 -1.55737 -0.15137 0.963878 0.898279 0.748003 0.0651162 1.36006 0.285072 -1.15438 -2.03468 -1.72341 0.346029 1.01179 1.12071 0.668327 0.238911 -0.0726668 -0.373289 -1.02758 -1.85299 -1.34144 0.177602 0.974701 0.614529 0.134231 -0.111242 -0.216728 -0.685231 -0.562503 -1.12251 -0.816421 -0.131332 0.242797 0.0602974 -0.447446 -0.751391 -0.489533 -0.593732 -0.390752 -0.0681929 -0.500941 -0.486922 0.0138531 -0.44124 -0.438385 -0.331571 -0.37701 -0.418839 -0.27822 -0.524728 0.702027 0.126995 0.166535 -0.024352 0.147728 0.469937 0.539339 0.932733 1.04773 0.847636 0.381939 3 11 11 1 2 0 -12.5543 1.63357 11 11 5 0.230599 1.2238 0.994555 -0.0958177 -0.546159 0.440883 1.69997 0.962662 -1.13113 -1.47295 -0.153516 -0.125501 0.715722 0.42867 -0.273645 -0.309808 0.62935 1.81348 -0.0484462 -1.31418 -0.983784 0.447328 -0.577281 0.282895 0.331736 -0.198033 0.363914 1.12124 1.73613 -0.916551 -1.08507 -0.634489 0.602794 -0.474932 0.196906 0.210188 0.140087 0.873193 1.40552 0.290723 -1.37217 -0.600301 -0.0830953 0.482347 -0.333041 0.273672 0.514168 0.965579 1.1945 0.697139 -1.33088 -0.726393 -0.245857 -0.0715177 0.607233 0.119353 0.496748 0.825498 1.07408 0.466156 -1.28744 -0.693832 0.0161738 0.47713 -0.0823974 0.453377 0.0988226 0.508371 0.687143 0.154463 -1.32955 -0.874564 0.440843 0.656316 0.455956 -0.455538 0.0713704 -0.264393 0.258695 0.0274247 -1.09885 -1.14163 0.815944 1.08988 0.360567 0.0463235 -0.69502 -0.121813 -1.01047 -0.494537 -0.756614 -0.67675 0.693978 1.42605 0.818932 0.0571577 -0.133398 -0.593891 0.0225854 -1.64364 -1.01875 -0.62412 0.277831 0.94434 0.889404 0.244969 -0.133816 -0.239579 -0.437444 0.0512486 -1.96976 -1.44773 -0.633565 0.280089 0.166306 -0.449997 -0.304121 -0.548692 -0.329793 -0.725555 -0.0286023 3 11 11 1 2 0 -10.0244 1.37928 11 11 5 -0.371581 -0.673998 -0.112803 -0.0849472 -0.126426 -0.167161 -0.387862 -2.13689 0.0062951 0.535685 -0.385474 -0.0910573 -0.0702643 -0.0445769 0.218814 0.629439 0.66445 -0.154363 -1.95512 0.31384 0.298552 -0.0586052 0.608798 0.083154 -0.0927663 0.695937 1.1505 0.990965 -0.978011 -1.73968 0.215906 0.535366 0.0221546 0.674838 0.105071 0.0548515 0.823116 1.54045 1.143 -1.92109 -0.837915 0.204274 0.0207747 0.0710489 0.522811 0.118046 0.213011 1.16002 1.31489 0.753396 -2.12639 -0.242701 0.196391 0.369356 0.108 0.507991 -0.183753 0.302218 1.22715 0.800534 -0.756362 -1.21421 0.344803 0.493759 0.656268 0.0790056 0.177867 -0.0309503 0.360867 1.15787 0.206675 -1.53086 -0.535446 0.166069 0.0397886 0.0676359 -0.316756 -0.0817495 0.286014 0.889026 0.703734 -0.665231 -0.690883 -0.305617 -0.0961677 0.101909 0.304722 -0.180568 -0.0931389 0.752559 0.435708 -0.74348 -0.97671 0.171567 -0.147219 0.0842163 -0.0181712 0.18276 -0.0589507 -0.241193 0.404571 -0.44142 -1.22952 0.302216 0.561423 -0.314966 -0.126221 0.288989 0.136512 0.0144354 -1.28585 -0.78996 -0.991071 0.458505 1.28901 0.222797 -0.967212 -0.947033 -0.0838908 0.0281818 0.233727 3 11 11 1 2 0 -11.7592 1.26268 11 11 5 0.0351862 -0.0365589 0.101143 0.165215 -0.321776 -1.22071 -0.211178 2.65059 0.35093 -0.532014 -0.218512 -0.153123 0.0779396 -0.0172367 -0.0945155 -0.131604 -0.800575 -0.141314 1.85741 0.4409 -0.517848 -0.161676 -0.293467 0.127234 0.0889695 -0.208367 -0.284589 -0.399544 -1.11888 0.990393 -0.0705865 -0.300263 -0.182228 -0.198689 0.163028 0.10253 -0.472398 -0.376682 -0.0765972 -1.48245 1.07205 0.197494 -0.363026 -0.128314 -0.118904 0.0740038 0.330639 -0.139058 0.146418 -0.42446 -1.71972 0.633823 -0.156675 -0.275545 0.171298 0.112797 -0.0676616 0.31414 0.0670792 0.757396 -1.10674 -1.68359 0.421349 0.112172 -0.205788 -0.0515238 0.251573 0.085132 0.544082 0.656346 1.39164 -2.09249 -1.08192 0.341084 0.0292939 0.166271 0.225991 0.258695 0.0607111 0.66321 1.07508 1.51959 -2.63859 -0.956291 0.153967 0.173535 0.0949441 -0.173346 0.173771 0.299523 1.30083 1.14971 1.00696 -2.25574 -0.339782 0.350094 0.148054 0.0860473 0.0805124 0.148308 0.580942 1.58837 0.940063 0.102087 -1.5657 0.0147136 0.390583 0.167968 -0.00838938 0.074231 -0.222269 0.560399 0.928544 -0.142257 -0.991531 -1.57119 0.0267352 0.590204 0.310714 0.0367824 0.194523 3 11 11 1 2 0 -16.1057 1.69737 11 11 5 0.885993 1.40548 1.01637 -0.0967898 0.43086 -2.28686 -2.24375 0.430731 0.336336 -0.305031 -0.372168 0.419601 0.434611 0.0698549 -0.467175 0.505621 -1.11968 -1.48393 -0.115328 -0.359809 -0.366845 -0.319918 -0.148271 0.0592525 0.0554167 -0.292446 0.619729 -1.17459 -0.554654 -0.505023 -0.419068 -0.465622 0.19438 -0.466556 -0.0272171 -0.0434516 -0.433899 0.837617 -1.13321 0.51995 0.219361 -0.151364 -0.137281 0.075901 -0.280189 0.108994 0.309724 -0.0422028 0.811944 -0.829815 1.68244 0.92772 0.00154172 -0.146208 -0.0313815 -0.598876 0.211062 0.0585052 -0.239999 0.53586 -1.1691 2.57933 1.60059 0.289235 -0.323029 0.0257415 -0.582662 0.134923 -0.163932 -0.49953 0.412841 -1.19768 1.95636 1.61456 0.0855802 -0.609916 -0.0710504 -0.430079 0.0586082 -0.295944 -0.721035 0.54941 -1.76487 0.975608 0.583401 0.0397017 -0.448328 -0.307614 -0.1858 0.361756 -0.150219 -0.519615 0.816102 -2.12726 0.232947 0.281266 -0.406013 -1.14954 0.170147 0.108813 0.87393 0.335472 0.320953 1.34608 -2.30302 -0.226684 0.33 -0.0492526 -0.104516 0.451938 0.824852 1.70843 1.54361 1.82219 1.75649 -3.52782 -1.32186 0.399794 -0.121269 -0.0457218 0.726316 3 11 11 1 2 0 -15.7443 2.69949 11 11 5 -1.52772 1.14872 1.53675 0.479383 -0.45701 -5.10172 -0.459348 1.09975 0.629116 -0.184662 -0.325904 -0.771408 1.21056 1.34965 0.315116 0.0551717 -2.74898 -0.104521 0.904297 0.287615 -0.606704 -0.198578 -0.0353548 1.00816 0.740469 0.322842 0.38773 -1.71943 -0.258477 0.744463 0.326363 -0.370056 -0.307575 0.0500863 0.76028 0.72931 0.315979 0.397983 -1.51885 -0.436007 0.657437 0.294502 0.0160363 -0.00699807 0.623864 0.62128 0.539742 0.00651324 0.547543 -1.37349 -0.487207 0.271797 0.29097 0.0180654 0.0455962 0.671857 0.55726 0.212303 -0.339652 0.555896 -0.995456 -1.01687 -0.169099 -0.373893 -0.443424 0.0955993 0.240125 0.188907 -0.279158 -0.247378 0.791239 -0.778362 -0.945805 -0.565622 -0.58869 -0.609404 -0.0412128 -0.0535838 -0.191399 -0.214527 -0.120975 0.831312 -0.838155 -0.556543 -0.515727 -0.513142 -0.337176 0.161224 -0.174782 -0.0964052 -0.0526237 -0.0901665 0.827427 -0.762976 0.0821324 -0.000730462 -0.163626 -0.314945 0.059989 -0.0243049 0.140729 -0.13126 0.0639378 1.01129 -0.264369 1.10322 0.624713 0.100939 -0.446714 -0.136305 0.124937 0.345954 0.0258844 0.41872 1.22598 0.0235267 2.10251 1.5925 0.209276 -0.565032 -0.16289 3 11 11 1 2 0 -15.9994 3.80939 11 11 5 0.228595 0.772655 1.16991 0.796558 -0.491774 -1.19859 0.682232 1.14332 0.163583 -0.0446057 0.0227208 0.0193348 0.5222 0.704257 0.228397 -0.439228 -2.00879 -0.0597298 -0.0580505 -0.6125 0.00491763 -0.0741469 -0.395266 0.353509 0.459482 -0.0170697 -0.298998 -2.62011 -0.50332 -0.359136 -0.338278 0.0501623 0.0929923 -0.49456 0.587366 0.715098 -0.139769 0.026701 -3.22665 -0.684604 -0.044393 0.175883 0.139437 0.185132 -1.02441 0.609129 0.762725 -0.0401515 0.277296 -3.1392 -0.357915 0.880151 0.402928 -0.0673503 0.115917 -0.890276 0.8083 1.06766 0.156333 0.183108 -2.49995 -0.0121615 1.03614 0.490958 -0.313704 0.166696 -0.657281 0.902198 1.19709 0.39149 -0.0371686 -1.43128 -0.182863 0.814915 0.243447 -0.369244 -0.238866 -0.270435 0.837396 0.864337 0.383403 0.136073 -0.758487 -0.568758 0.696834 0.326752 -0.347013 -0.156085 0.0837547 0.741978 0.692517 0.383075 0.25693 -0.471197 -0.630196 0.789924 0.374995 -0.111994 -0.0173407 0.523985 0.705467 0.618464 0.340831 0.310415 -0.264306 -0.97499 0.618314 0.101429 -0.00964947 0.131152 0.693487 0.892486 0.639116 0.24928 0.570642 0.0483243 -1.63353 -0.214106 -0.239487 -0.518391 -0.205121 3 11 11 1 2 0 -17.5554 2.17648 11 11 5 0.76821 -0.422042 -0.247272 0.0390753 -0.0213841 -0.230585 -0.293285 0.166297 0.546534 1.11402 1.76043 0.463366 -0.387075 -0.0602641 0.173702 -0.262677 -0.744801 -0.550591 0.234099 0.499573 0.509183 0.350075 0.240324 -0.345763 0.0282193 -0.192289 -0.54109 -0.4833 -0.129113 0.294984 -0.0678327 -0.4665 -0.691526 0.17512 -0.294131 -0.256854 -0.365818 -0.407672 0.320421 0.941553 0.108536 -0.594316 -0.962037 -0.5865 0.0318815 -0.656117 -0.465415 -0.123438 0.554264 2.22275 1.12402 -1.34427 -1.10659 -0.148059 0.492278 -0.274995 -0.757983 -0.0994461 0.636861 1.62086 1.88603 -2.73422 -1.985 0.147457 0.890287 1.00399 -0.451039 -0.526374 0.127118 1.13046 1.66793 -0.67693 -2.04788 -0.421607 1.50386 1.89399 1.81507 -0.734546 -0.266627 0.429462 0.645552 0.323737 -0.541789 -0.544554 0.738978 1.2648 0.893002 0.963232 -0.646259 -0.21656 -0.0497341 -0.0422922 -0.453241 0.101903 0.316852 0.578678 -0.297049 -1.1697 -0.15066 -0.575289 -0.685893 -0.495275 -0.482079 -0.201166 0.577838 0.394983 -0.277898 -0.879875 -1.39688 -1.11889 -0.575197 -0.753181 -0.478761 -0.209864 1.0093 2.21346 1.51301 0.142739 -0.974663 -1.2852 -0.663353 3 11 11 1 2 0 -19.3242 2.36131 11 11 5 -0.250988 -0.29274 -0.621426 -0.357017 -0.116235 -0.512003 -0.856192 -1.10033 -0.966796 -0.762904 -0.785679 -0.399361 -0.189154 -0.135548 0.340769 0.456878 0.457785 0.417923 0.499095 0.777762 1.19257 1.49701 -0.16253 0.137714 0.0403588 0.0739199 0.171527 0.144408 0.301189 0.392996 0.574226 0.744794 1.2932 0.0528601 0.201642 -0.313051 -0.636633 -0.453204 -0.241084 0.192364 0.476429 0.455856 0.478263 0.953654 -0.318171 -0.452004 -1.15336 -1.06162 -0.485438 0.433142 1.15631 0.298122 0.159939 -0.065565 0.432757 -0.608285 -0.83224 -0.733334 0.166459 1.55533 1.58835 -1.22683 -1.98483 -1.3103 -0.846683 -1.09318 -0.449401 0.0120672 0.92952 1.59788 0.561365 -1.70368 -1.89086 -0.377494 -0.103993 -0.980992 -1.6699 0.00141047 1.00448 1.59615 0.403721 -1.21945 -1.42725 0.408946 1.3512 1.42782 0.754779 -0.202232 0.175949 1.10934 0.984409 -0.499574 -1.29016 -0.0328893 1.71951 1.93803 1.97429 1.35521 0.205957 -0.132905 0.330574 0.0155779 -0.544274 -0.501434 0.0422111 0.529345 -0.0361948 0.461162 0.480388 0.187346 -0.888082 -0.294447 0.187783 0.38266 0.159767 -0.27839 -0.822822 -1.05397 -0.447727 -0.80973 -1.42182 3 11 11 1 2 0 -18.1755 2.1586 11 11 5 0.138126 -0.280083 -0.454953 -0.699332 -0.89154 -1.13364 -1.06795 -1.09703 -1.03242 -0.952807 -1.22947 0.175102 0.127809 0.11714 0.138824 -0.0881485 -0.343206 -0.126103 0.0643889 0.0848026 0.273407 0.012754 0.471211 0.320408 0.597462 0.582302 0.3798 0.401105 0.550418 0.662964 0.766077 0.979926 1.16433 0.285929 0.0459601 0.447819 0.306038 0.340069 0.297726 0.36273 0.146259 0.414767 0.863682 1.21099 -0.37039 -0.451873 -0.164418 0.0324826 0.322637 0.485615 0.634845 0.524761 0.779586 0.883793 1.01339 -0.751989 -0.592661 -0.144744 0.146113 0.524223 0.680594 0.590266 0.51115 0.434454 0.497859 0.223084 0.225203 0.480864 0.269432 -0.650537 -1.73556 -2.13806 -2.1387 -2.02658 -1.68849 -1.03138 -0.45735 1.30879 0.499967 -0.0495412 -0.264801 -0.169321 -0.240613 -0.343805 -0.944293 -1.08132 -0.998664 -0.604393 0.78842 -0.472907 -0.316566 0.185987 1.06614 1.50862 1.37324 0.731635 0.257308 0.00287079 -0.62934 -0.0186547 -1.10017 -0.454359 0.449909 1.10366 1.31962 1.03823 0.817756 0.231448 0.399829 -0.78328 -0.234655 -0.559931 -0.191366 -0.0821264 -0.0168272 0.061555 -0.519936 -0.380713 -0.138244 0.0556312 -0.855975 3 11 11 1 2 0 -18.1635 2.60104 11 11 5 0.181045 -0.607575 -0.837 -0.748942 -0.841431 -0.765614 -0.814514 -0.799887 -0.762247 -0.717799 -0.617789 0.572191 -0.165954 -0.32725 -0.137441 -0.276879 0.0595372 0.148187 0.128658 0.0332102 -0.312002 -0.354937 0.972123 0.393954 0.335568 0.380378 0.523277 0.733214 0.81293 0.887056 0.818775 0.390101 0.0654903 0.762947 0.407889 0.293728 0.345246 0.28335 0.352392 0.660098 0.585142 0.638663 0.536551 0.285908 -0.0525727 -0.026436 0.0290629 0.252352 0.352756 0.423435 0.766722 0.581931 0.446809 0.360164 0.15704 -0.316885 -0.334051 -0.216081 0.284774 0.860404 1.54817 1.36712 0.773566 4.93116e-05 0.0459293 0.247898 0.0556174 -0.439103 -0.889312 -1.53619 -2.26229 -2.7869 -2.27626 -1.3681 -0.791844 -0.197934 0.747058 0.173985 0.290503 -0.00541388 -0.332518 -0.736089 -0.958264 -1.08651 -1.04801 -0.646558 -0.0264181 1.32856 -0.426929 0.51513 0.888935 0.678106 0.36047 0.511912 0.36288 0.403972 -0.0564093 -0.327733 1.09038 -0.103343 0.625596 0.736313 0.687588 0.543192 0.642954 0.759285 0.377572 -0.326354 -0.790726 0.478029 0.00592758 0.228608 -0.402426 -0.561337 -0.330523 -0.176873 0.112823 -0.102749 -0.826052 -1.33266 -0.506038 3 11 11 1 2 0 -16.3366 2.68416 11 11 5 -0.355215 -0.728975 -0.792131 -0.676811 -0.746491 -0.731268 -0.964315 -1.15806 -0.865207 -0.660733 -0.539188 0.876621 0.516245 0.537227 0.6037 0.698817 0.59229 0.162622 -0.183125 -0.104896 -0.129554 0.102857 1.1279 0.715173 0.619234 0.560451 0.791689 0.694796 0.532883 0.181684 0.124104 0.144944 0.400252 0.852207 0.789832 0.824306 0.708424 0.593893 0.39017 0.329067 -0.0369695 -0.0207394 -0.0369487 0.295641 -0.524043 0.163185 1.03238 1.27645 1.51185 0.814171 0.307002 -0.0956815 -0.124714 -0.228279 0.195815 -0.960692 -1.22808 -1.34009 -1.01721 -0.50995 0.0270655 0.0225555 0.0954632 0.120623 0.294731 0.399274 -0.229804 -0.910387 -1.5832 -2.56938 -2.8861 -2.00158 -0.367874 0.307215 0.53409 0.275605 0.168626 0.249156 0.026309 0.0825078 0.343562 0.151997 -0.133424 0.261929 0.393327 0.857834 0.49345 -0.225998 0.419376 0.32516 0.58819 0.860458 0.461899 0.145628 -0.0741977 -0.0451731 0.66914 0.836739 0.0994601 -0.0491908 0.174975 0.316832 0.348401 0.348383 0.024908 -0.560144 -0.501802 0.121308 0.5236 -0.0731221 -0.913092 -0.753644 -0.641713 0.0789591 -0.192784 -0.418507 -1.38064 -1.21599 -0.261286 0.778021 0.453845 3 11 11 1 2 0 -18.9591 2.9649 11 11 5 -1.3817 -1.16477 -0.996208 -0.579718 -0.197325 -0.129176 -0.203702 -0.323377 -0.332391 -0.113559 0.501268 -0.634324 -0.254432 0.0805874 0.13278 0.500144 0.541429 0.294349 0.392434 0.39594 0.657252 1.08591 -0.10695 -0.00790218 0.113076 0.0626776 0.267612 0.336352 0.564554 0.576384 0.638342 0.747084 0.773897 0.233672 -0.03413 -0.135268 -0.280188 -0.0177852 0.250974 0.981065 1.01591 0.946917 0.465442 -0.0904589 0.148734 -0.308386 -0.422601 -0.438584 0.221635 1.18569 1.87882 1.2481 0.0828214 -1.12906 -1.43864 -0.250389 -0.317011 -0.205964 0.279755 1.16108 1.03106 -0.696727 -2.11014 -2.41921 -1.58753 -0.621999 -0.320988 0.161131 0.745704 0.980362 0.80564 -1.3714 -2.56736 -1.94487 -1.26313 -0.283042 0.511381 0.0788241 0.69596 1.2565 0.762917 0.188451 -0.69943 0.00638584 0.364329 0.279384 0.591244 0.793063 0.0347956 0.940211 0.984139 0.0278767 -0.420375 -0.227486 0.161134 0.711083 0.827459 0.646437 0.166561 0.200485 0.914348 0.443869 -0.626227 -0.733847 -0.141064 0.154424 0.298702 -0.0567186 -0.486752 -0.811876 0.237914 1.12653 -0.265883 -1.08755 -0.682798 -0.502461 0.343686 -0.173516 -0.486666 -0.894405 -1.25721 3 11 11 1 2 0 -20.2022 2.91543 11 11 5 -1.1984 -0.907261 -0.728345 -0.532255 -0.455694 -0.725325 -0.840902 -0.860265 -0.825679 -0.386726 0.647177 -0.757399 -0.303538 0.115671 0.278007 0.235326 -0.0441335 -0.11749 -0.0133377 0.0415419 0.282459 0.821726 -0.140151 0.578207 0.722467 0.702788 0.55626 0.512653 0.514332 0.45245 0.525658 0.641036 0.842815 0.0216487 0.363448 0.357717 0.276343 0.354769 0.253877 0.356823 0.565065 0.412836 0.360848 0.246308 -0.274241 -0.156632 0.041882 0.184271 0.643029 0.588467 0.682471 0.68325 0.374362 0.222471 -0.0571142 -0.641434 -0.178314 0.469839 1.12547 1.69361 1.56489 0.638182 -0.41339 -0.696986 -0.593697 -0.26557 0.220025 0.595394 0.54586 -0.170289 -1.82803 -2.91893 -2.46036 -1.81708 -1.10732 -0.580381 -0.274763 1.59721 0.823782 -0.115916 -1.1788 -1.90732 -1.41021 -0.363949 0.436501 0.709656 0.277224 -0.422454 1.71504 0.254701 -0.366898 -0.292553 -0.213156 0.204772 0.73007 1.31494 1.17078 0.536773 -0.30697 1.08688 -0.646764 -0.542463 0.135889 0.410626 0.596456 0.635006 0.446136 0.521876 0.13589 -0.0943649 0.0854431 -0.959028 -0.960024 -0.195103 -0.111576 0.0322899 -0.35128 -0.563116 -0.498921 -0.692131 -0.707188 3 11 11 1 2 0 -18.8067 2.06467 11 11 5 -1.23131 -0.928888 -1.08537 -1.13179 -1.06543 -0.924445 -0.597641 -0.459746 -0.233474 -0.109279 0.319369 -0.553811 -0.199351 -0.315943 -0.354319 -0.222911 -0.105668 0.21013 0.137153 -0.0208366 -0.0488112 0.0629149 0.67425 0.732765 0.52301 0.687416 0.678068 0.68417 0.710485 0.67 0.509704 0.211502 0.118814 0.707096 0.697195 0.4984 0.432608 0.673137 0.654092 0.551045 0.420612 0.378134 0.0437338 0.145849 0.516352 0.364775 0.369702 0.299609 0.661798 0.699153 0.625057 0.200379 -0.0522055 -0.214972 -0.13556 0.615201 0.629051 0.859903 0.893018 0.879461 0.779958 0.682945 0.2738 0.0721835 -0.190813 -0.322026 0.978533 0.150115 -0.953013 -1.58767 -2.35343 -2.56683 -2.3566 -1.16973 -0.247924 0.016821 0.36173 0.735842 -1.31736 -2.09764 -1.60176 -0.590302 -0.316013 -0.322378 -0.519401 -0.219547 -0.0221407 0.859873 0.141662 -0.864069 -0.46117 0.253671 1.22628 1.70957 1.19559 0.34029 -0.351498 -0.463253 0.686946 -0.574744 -0.148227 0.0264716 0.947426 1.54099 1.28825 0.663802 0.0991811 -0.399277 -0.230542 0.319779 -1.01439 -0.279518 -0.00676183 -0.0107817 -0.262115 -0.537839 -0.29086 -0.538557 -0.550446 -0.0150602 0.648679 3 11 11 1 2 0 -16.3992 1.78452 11 11 5 -2.21347 -1.76291 -1.2876 -0.842779 -0.522904 -0.503475 -0.613247 -0.38796 0.058253 -0.0378177 0.136662 0.449383 0.387834 0.608271 0.556105 0.642343 0.667173 0.366628 -0.132772 -0.14924 -0.0900791 -0.279789 1.61027 1.2758 1.00291 0.605928 0.330496 0.611766 0.45323 0.308633 0.0738334 0.0122698 -0.330844 1.07995 0.977773 0.773169 0.49284 0.0266724 -0.185367 -0.0413909 0.0470743 0.0977893 0.107885 -0.307771 0.544861 0.590481 0.565186 1.04347 1.20064 0.407275 -0.279734 -0.29733 -0.183466 -0.150559 -0.283116 -0.0300179 -0.656438 -1.07224 -1.17477 -0.540985 1.15142 0.772162 0.0939214 -0.321135 -0.220579 -0.32754 -0.959775 -1.07561 -1.3136 -1.6375 -2.39684 -2.12039 -0.731558 0.262535 0.278108 -0.111092 -0.43201 -1.12924 0.114662 0.490912 0.32993 0.154105 -0.68854 -0.758444 0.00456086 0.888541 0.395791 -0.337597 -0.426165 1.22111 1.58876 1.50442 1.14021 0.621097 0.0393014 0.372949 0.655551 0.450101 -0.421072 0.241914 1.12288 0.966951 0.562593 0.0685693 0.0438119 0.0111774 0.0999645 0.584517 0.485 -0.701991 -0.778077 -0.370922 -0.630432 -1.16729 -1.32502 -0.917501 -0.192743 0.272561 0.750418 0.602941 -0.605502 3 11 11 1 2 0 -12.4192 1.3266 11 11 5 0.924504 0.348429 0.475968 0.395064 0.108501 -0.0872796 -0.0924745 -0.501739 -0.480552 0.317154 0.555722 1.17569 0.517617 -0.0100657 0.21724 0.119466 0.243566 0.207932 -0.080582 -0.424598 -0.0979493 0.321419 0.525111 0.148527 -0.123362 -0.06704 -0.138622 -0.118428 0.252409 0.206744 -0.0528638 -0.248341 0.195909 -0.542735 -0.507758 -0.355295 0.401097 0.226721 0.013433 -0.0136952 0.028305 -0.114351 -0.0855045 0.308197 -0.108166 -0.772647 -1.06069 -0.54305 0.961806 1.02793 -0.0433239 -0.138935 -0.197082 -0.276339 0.0642176 0.69519 -0.0857107 -0.556715 -1.82297 -1.87226 1.34954 0.569793 0.116426 -0.296239 -0.249452 -0.107493 1.22669 0.630627 0.599027 -0.296808 -0.925668 -0.511836 1.14476 -0.0307239 -0.24376 -0.124534 -0.416213 1.71809 1.34383 1.0401 0.938593 0.385339 0.292612 0.64542 0.0303425 -0.403864 -0.358718 -0.480358 0.782835 -0.443378 -0.633337 0.266787 0.779589 0.640414 0.473658 0.00951574 -0.334635 -0.635379 -0.593711 -0.375506 -1.22976 -1.29802 -0.502566 0.221899 0.463072 0.444633 -0.0502743 -0.408768 -0.714952 -0.634846 -1.30757 -2.0196 -1.9964 -0.560873 0.788869 1.30567 1.4118 0.302706 -0.253686 -0.316471 -0.529819 3 11 11 1 2 0 -25.316 4.16912 11 11 5 -0.633107 0.207584 0.874527 0.724693 0.0264882 -0.0336202 0.302873 1.04888 0.905598 0.0203573 -0.62014 -0.604256 -0.352456 0.240912 0.621939 0.249638 -0.0689651 -0.124041 0.387999 0.557572 0.02872 -0.254165 -0.0756851 -0.435956 -0.209524 0.417486 0.571213 -0.0560201 -0.129981 -0.105884 0.166393 0.147436 -0.271226 0.193968 -0.443161 -0.767304 0.209192 0.866185 0.333145 0.034191 -0.805181 -0.210702 0.196191 0.278484 0.77036 0.0725366 -0.866376 -0.294214 0.738903 0.674655 -0.250382 -1.3763 -0.694736 -0.029649 0.120405 -0.415245 -0.296113 -1.30719 -1.36293 1.25554 2.01955 0.581773 -1.96141 -0.926833 -0.133743 -0.535218 -0.856766 -0.397762 -1.35783 -1.10349 1.47387 1.86096 0.80056 -1.40234 -0.900967 -0.220641 0.323253 0.203018 -0.62897 -1.30834 -0.875564 1.66201 1.72304 0.495138 -1.37758 -0.584616 0.274979 0.169489 0.185739 -0.611886 -0.690194 -0.441922 1.41079 1.64213 0.228056 -1.24047 -0.673707 0.682537 1.02535 0.761344 -0.303774 -0.590918 -0.57478 0.701319 1.39676 -0.000476969 -1.58172 -0.765265 0.792009 1.32263 1.48984 -0.445839 -1.44631 -1.01108 0.461734 1.6654 0.382371 -1.70499 -0.907091 0.581381 1.09592 3 11 11 1 2 0 -28.2667 4.00159 11 11 5 0.479698 -0.580363 -0.595179 0.531905 0.934409 0.466527 0.0255336 -0.488258 -0.160222 0.374981 0.223582 0.532114 -0.504969 -1.00731 -0.150242 0.654239 0.408634 -0.419523 -1.12846 -0.661492 0.257618 0.102661 -0.157212 -0.443498 -1.07825 -1.00784 1.35058 1.10428 -0.18754 -1.45476 -0.631047 0.0755205 0.0500369 -0.360908 -0.725499 -1.18532 -0.803309 1.75212 1.02857 0.145185 -1.43721 -0.36578 -0.156202 0.0746629 -0.0938802 -0.774062 -1.09583 -0.251262 1.79828 1.16921 0.146977 -0.986101 -0.211269 0.367213 0.0787432 0.366906 -0.42539 -0.51862 0.018307 1.3516 0.947623 -0.0304078 -1.00951 -0.140675 0.83097 0.583837 1.14413 -0.156931 -0.426665 -0.221339 0.559373 0.529481 -0.622579 -1.43851 -0.124063 0.636163 1.2186 1.62283 -0.636916 -0.643876 -0.461751 0.193885 0.602387 -0.837054 -1.69056 -0.219922 0.344212 0.50336 1.13101 -0.876995 -1.17653 -0.168917 0.696581 1.18398 0.0171588 -1.14315 -0.203027 0.391952 0.0414836 0.70965 -1.23885 -1.4429 0.314673 1.5895 1.88647 0.931412 -0.40533 -0.1325 -0.00648607 -0.462996 -0.517896 -1.67598 -1.2274 0.165078 2.12871 2.44162 1.47853 -0.192144 -0.980186 -0.0027477 -0.133163 3 11 11 1 2 0 -27.9532 4.79719 11 11 5 0.0741168 -0.941472 -1.19756 -0.161147 1.32054 0.754028 -0.396479 -1.29138 -0.329541 -0.0318218 0.294937 0.225413 -0.759944 -0.759191 0.0973373 1.52074 0.872959 -0.0123742 -0.74941 -0.135686 -0.0179128 0.184407 0.483108 -0.480474 -0.70051 0.0533415 1.00093 0.50437 -0.150363 -0.584601 0.304784 0.239247 0.429105 0.92229 -0.616912 -0.75478 -0.177895 0.695771 0.294367 -0.536148 -0.794812 0.0488329 0.312012 0.771348 0.841862 -0.891674 -0.588034 -0.195966 0.675983 0.592512 -0.498323 -0.991039 0.154104 0.344091 0.540496 0.817755 -0.906402 -0.730834 0.0852201 1.00275 1.04279 -0.0563455 -0.760794 -0.0190034 0.167162 0.225815 0.429263 -0.693767 -0.498277 0.500821 1.47147 1.3139 0.611925 -0.270211 0.0671903 0.259208 -0.124007 -0.0874579 -0.45216 -0.227045 0.60979 2.04373 1.49316 1.26074 0.104062 -0.170821 0.337929 -0.129169 -0.844272 -0.405175 -0.752715 -0.352926 1.97311 1.20915 1.19532 -0.32125 -1.43854 0.0755614 -0.0638723 -0.728733 -0.182192 -1.03372 -1.18321 1.18261 1.11943 0.669273 -0.995767 -1.80658 -0.109531 0.259316 0.465513 -0.102601 -1.11138 -1.47805 0.315467 0.259091 -0.615719 -1.80723 -2.30107 -0.360686 0.745455 3 11 11 1 2 0 -26.3311 3.96898 11 11 5 0.107871 -1.18128 -1.18712 -0.120152 1.02281 0.597595 -0.417286 -0.713403 -0.18212 0.00470361 0.845219 0.419913 -0.995151 -0.527608 0.285024 1.32874 0.980555 -0.347181 -0.77561 -0.134381 0.00335816 0.568795 0.280759 -0.787448 -0.577419 0.318398 1.38122 0.923903 -0.117051 -0.628024 -0.119115 0.047847 0.006393 -0.0450557 -0.598823 -0.459373 0.801805 1.99539 1.09837 0.673811 -0.483991 0.10376 0.515772 -0.263644 -0.517561 -0.389583 -0.211124 0.998904 2.46536 1.39979 1.07095 -0.666899 -0.457664 0.233523 -0.471805 -0.849952 -0.552249 -1.33405 -0.300756 2.19555 1.06656 1.01089 -1.47896 -1.77477 0.0426684 -0.393247 -0.637535 -0.428934 -1.2088 -0.675912 1.21907 0.225051 0.147152 -1.50037 -1.19625 0.328805 0.354807 0.50407 -0.22795 -1.19636 -0.749404 0.909913 0.283665 0.0534657 -1.3787 -1.37599 0.227299 0.824979 0.802906 -0.076835 -1.06789 -1.472 0.0235938 0.321929 -0.0669204 -1.3201 -1.32242 0.29545 0.938809 1.04326 -0.109342 -0.295478 -0.47973 -0.0517298 0.231947 -0.0520967 -0.527979 0.186444 0.744145 0.748484 1.10029 -0.14929 -0.113539 0.12511 0.106594 0.305368 -0.0401125 -0.165414 0.343756 0.367028 0.387344 3 11 11 1 2 0 -21.3232 4.24073 11 11 5 0.618219 0.564635 0.635472 0.0666027 -0.637309 -0.332743 0.480737 1.44289 1.33604 0.420024 -0.446818 0.741957 0.563604 0.393541 -0.427036 -0.99507 -0.0452552 0.744836 1.57783 1.43752 0.900689 -0.031884 0.592517 0.14372 -0.362645 -1.36316 0.22701 0.940898 0.444468 0.984584 1.10078 0.521372 -0.626127 0.288722 -0.379981 -1.35616 -1.08687 0.934632 -0.278177 -1.03127 0.0290488 1.19084 -0.0505846 -1.57457 0.105002 -0.459356 -0.774055 -0.392033 0.042783 -2.25722 -1.38342 -0.142889 0.643802 -0.375267 -1.49175 0.553699 0.437362 0.272408 0.489296 -0.37871 -2.73764 -1.18924 0.117313 0.498907 -0.45981 -1.0228 0.34581 0.716294 1.22387 1.08287 -0.137019 -0.319977 0.604921 0.487369 0.335196 -0.101489 -0.294962 0.0230149 0.173985 0.664965 0.674076 0.0400843 -0.111662 0.29486 0.233101 0.264927 0.126284 0.0561998 -0.154513 -0.189857 -0.0489635 -0.0733727 -0.179645 -0.126392 0.277815 0.108957 -0.196846 -0.123978 0.174966 -0.123852 -0.327063 -0.39165 -0.174862 0.12357 0.414801 0.527111 0.124288 -0.261982 -0.189861 0.213365 -0.380804 -0.779868 -0.735626 -0.464608 -0.265094 -0.0939177 -0.323289 -0.303651 -0.247628 -0.193104 -0.391123 3 11 11 1 2 0 -28.0666 5.15025 11 11 5 1.74559 -0.176046 -0.883861 -0.64187 0.225474 1.60844 1.84237 0.99958 0.122543 -0.282005 -0.286179 0.290321 -0.873171 -0.487604 0.16074 0.386166 1.29852 1.41802 0.957815 0.423728 -0.213294 0.158678 -0.915284 -1.0581 0.45706 0.572853 -0.462116 0.604938 1.63741 0.945189 0.311262 -0.984669 -0.0202324 -0.829339 -0.673679 0.405557 -0.239897 -1.92415 -0.121505 1.44693 0.345298 -0.977583 -1.86625 -0.729122 0.200222 0.2075 -0.116078 -2.00685 -2.73823 0.118228 1.17896 -0.143337 -1.23637 -1.92325 -0.121971 1.35455 0.791426 0.19732 -0.800772 -0.41418 0.506507 -0.122407 -0.672109 -0.551168 0.0208987 0.718794 1.08577 1.00997 0.246069 -0.396484 0.0645299 0.59617 0.421846 0.31589 0.164877 0.0529335 0.689907 0.063751 0.216553 -0.115623 -0.461425 -0.0491562 0.388752 -0.101618 -0.0704279 -0.0277843 0.0941313 0.573825 -0.20296 -0.0344206 -0.191426 -0.0981182 0.244298 0.360155 -0.489285 -0.270489 0.25131 0.355053 0.199224 -0.500247 -0.369555 -0.120452 0.14594 0.303975 0.213833 -0.310378 -0.339275 -0.182877 -0.276263 -0.375292 -0.712086 -0.542556 -0.309125 -0.0874592 -0.175678 -0.268717 -0.00385076 0.181454 0.286321 0.30007 0.0902262 3 11 11 1 2 0 -30.0994 5.53269 11 11 5 -0.94458 -0.906149 -0.0491222 1.43485 2.25099 1.53062 0.597814 -0.314444 -0.19784 -0.0846502 -0.338195 -0.883169 -0.226181 -0.103219 1.09741 1.85679 1.1309 1.24502 -0.306271 0.033879 0.69924 -0.386012 -0.271212 0.129552 -0.79281 0.268637 1.94844 0.895904 1.21144 -1.3859 -0.365895 0.857837 -0.418809 -0.220422 -0.383653 -1.59045 -0.698849 1.47 0.631339 -0.413494 -2.64724 -1.46642 -0.161494 -0.476247 -0.0576732 -1.14615 -2.32178 -1.22954 1.10455 0.0427146 -0.946621 -2.59293 -1.00391 0.143472 0.274402 1.07253 -0.222583 -0.396648 0.29628 -0.0137098 -0.518986 -0.310269 0.457002 0.817244 0.589864 1.30401 1.21029 -0.243294 -0.372545 0.229889 0.379869 0.501531 0.0202168 0.119196 0.149766 0.325598 0.509035 0.271726 -0.349388 -0.184839 0.135257 0.05429 0.0734176 -0.27343 -0.0133501 0.234221 0.182769 0.105913 -0.138185 -0.13909 0.172693 0.137731 -0.176293 -0.229429 -0.166171 0.207507 0.0547334 0.0317107 -0.226554 -0.199731 0.0549385 0.280709 0.070809 -0.218748 -0.410049 -0.267337 -0.184858 -0.153017 -0.0559919 -0.360583 -0.29544 0.05387 0.160324 -0.0907393 0.218694 0.100976 0.352344 0.351444 0.0245577 -0.196413 -0.429759 3 11 11 1 2 0 -27.3211 5.28853 11 11 5 -1.11313 0.60155 1.77192 1.46465 0.478554 -0.458212 -0.343013 -0.224044 -0.309234 0.355793 1.00675 -0.900598 0.520057 1.52343 1.37798 1.2258 0.129558 -0.0599232 0.572585 -0.178216 -0.459914 -0.103125 -0.83714 -0.129949 1.36729 1.25718 1.57614 -0.213512 -0.280509 1.24488 0.108043 -1.22853 -0.627936 -0.939209 -1.03902 0.519799 0.904315 0.44741 -1.55057 -2.24424 0.259442 -0.0965938 -0.945156 -0.359538 -1.33029 -1.64174 0.419158 0.603567 -0.163118 -1.79664 -3.12776 -0.589664 -0.0785183 0.0260325 0.741634 -0.824608 -0.433872 0.371702 -0.132083 -0.647171 -0.310441 0.267703 0.27024 0.533233 1.46144 1.51476 -0.317174 -0.270512 0.54256 0.815415 0.211291 0.332591 0.215716 0.424859 0.746376 0.792284 0.0369896 -0.186174 -0.112644 0.142073 0.412173 -0.400256 -0.120288 -0.0877334 0.0532623 0.581817 0.129608 -0.421008 0.083032 0.166728 0.162806 0.192392 -0.530632 -0.0437927 0.198579 -0.0218393 0.298223 -0.0263969 -0.552703 0.141062 -0.032838 -0.0421875 -0.203531 -0.519169 -0.103033 -0.0655389 -0.0216949 0.0314935 -0.331458 -0.707784 0.167629 0.13497 -0.0763823 -0.277391 0.180519 0.0827159 -0.211458 -0.0223803 0.0811077 -0.265346 -0.592272 3 11 11 1 2 0 -24.0262 4.87622 11 11 5 -0.0674762 1.38117 0.654279 -0.225391 -0.436848 -0.417628 0.0907134 0.719645 0.699869 0.5225 0.289155 0.482801 1.9783 1.41619 0.302036 -0.255544 -0.493699 -0.509478 0.0914982 0.423569 0.282771 0.0582207 0.222375 1.77349 1.43324 1.14493 0.215216 0.953594 0.0302014 -0.855023 -0.428209 -0.0963299 0.22501 -1.40029 1.17571 1.34846 0.0716439 -1.05313 0.166439 0.793416 -1.62389 -1.24376 -0.344829 0.376846 -1.95646 0.5109 0.346733 -1.33049 -1.77576 -2.23373 0.0257741 -1.04542 -0.821418 -0.147712 0.614087 -1.18635 0.727598 -0.0917616 -1.01866 -2.24175 -1.94677 0.0125331 0.182071 0.792961 0.949391 0.590336 -0.83668 0.289808 -0.0645587 -0.112561 0.427796 0.50405 0.368675 1.37846 1.56187 0.679491 0.23243 -0.812443 0.71682 0.547303 -0.0912131 -0.00722571 0.0209767 0.483293 0.93713 0.459462 -0.208617 -0.150585 -0.5154 0.427269 0.108592 -0.431941 -0.161769 -0.191888 0.449765 0.409478 -0.141631 -0.322445 -0.248076 -0.0501364 0.261325 -0.121592 -0.416845 0.322908 0.16021 0.619446 0.476336 -0.239942 -0.558083 -0.425926 -0.650289 -0.512258 -0.448011 -0.32398 -0.172254 -0.305376 -0.0674472 -0.191127 -0.720398 -0.757906 -0.412176 3 11 11 1 2 0 -25.0272 4.47231 11 11 5 0.31323 0.0454275 -0.467517 -0.397439 0.227421 0.682325 0.500861 0.135239 -0.311694 -0.398562 -0.716031 0.2686 -0.141455 -0.967721 -0.360237 0.66872 0.97849 0.934832 0.456148 0.169493 0.244412 -0.10421 0.427294 -0.276626 -0.799096 -0.600798 0.197717 0.765571 0.753328 0.676473 0.502668 0.129638 -0.749122 -0.313443 -0.543662 -0.694548 -0.12206 0.504186 0.338161 0.805885 0.496965 -0.317326 -0.825588 -1.15598 -0.8059 -0.559929 0.0759052 0.719479 0.249858 -0.482536 -0.752061 -1.4888 -1.85701 -1.52597 -0.404111 0.0570582 0.684222 0.921655 0.036976 -2.01575 -4.29164 0.616995 -1.36337 -2.96532 -1.01805 1.25576 1.01253 1.19802 0.361413 -1.00457 -0.791495 0.533727 1.07607 1.6488 0.794162 1.02483 0.283038 1.09576 0.753507 0.338493 -0.344677 -0.0381918 0.306893 0.393903 0.647666 0.84625 0.573315 -0.556901 0.472152 0.0026157 -0.389487 -0.506036 -0.315311 0.134567 0.337824 0.599574 0.689245 0.692695 -0.127087 -0.419892 -0.204057 -0.342673 -0.410211 -0.116212 0.066783 0.218892 0.514633 0.635374 0.497828 -0.316397 -0.779096 -0.24503 0.0637932 0.0686423 0.0222154 0.185325 0.293482 0.584402 1.02342 0.847142 0.0209312 3 11 11 1 2 0 -28.055 4.83044 11 11 5 0.401102 -0.0192817 0.0849598 -0.00632002 0.0689982 -0.197544 -0.326606 -0.396418 -0.325424 0.102193 1.03495 0.161113 -0.238032 -0.128412 0.368051 0.419102 0.114859 0.0424011 -0.133235 -0.0582592 -0.0611254 0.244776 -0.380081 -0.388378 0.337165 0.517269 0.605845 0.321 0.212539 0.286857 0.222667 -0.103373 -0.421794 -0.733051 -0.514161 -0.0339438 0.431451 0.795419 0.469602 0.596126 0.389264 0.319103 -0.171469 -0.74787 -0.37327 -0.219761 0.171933 0.588179 1.01967 1.28657 1.11186 -0.00345156 -0.879177 -0.638662 -0.485945 -0.174045 0.451998 0.818714 0.33059 -0.437164 -3.42518 -3.4857 -2.57909 -0.48824 -0.438588 -0.313594 0.588873 0.726388 -0.513905 -1.6824 -0.548133 -0.0685765 -1.17089 -0.222847 2.07683 0.480961 -0.982249 0.647398 -0.407142 -0.997207 -0.950659 2.2839 0.96395 -1.30547 -0.967016 1.05879 0.308967 -0.957777 0.591196 -0.569067 -0.378138 0.0528721 0.535806 1.17467 0.77327 0.461473 0.849345 -0.0530449 -0.685478 0.388349 -0.231073 -0.260409 -0.272628 0.0627834 0.384643 0.564274 0.489714 0.276841 0.140398 -0.317859 0.38467 -0.112709 0.00472331 0.187391 0.174574 0.268198 0.530041 0.689538 0.483193 0.450711 -0.399785 3 11 11 1 2 0 -24.9542 4.95701 11 11 5 0.328031 -0.0300383 -0.17965 -0.281443 -0.270224 -0.308486 -0.260295 0.0407567 0.461375 0.815607 1.39833 0.110594 0.0543794 0.152657 0.144582 -0.060351 -0.233231 -0.0341358 -0.0212421 0.0282268 0.0693578 0.741618 0.112191 0.258451 0.323517 0.265526 0.195029 0.201724 -0.0728524 -0.171939 -0.105369 -0.231263 0.460051 0.0886925 0.249762 0.485967 0.337975 0.271291 0.391111 0.117981 -0.138349 -0.663501 -0.504661 0.174294 0.299138 0.634797 0.777638 0.758942 0.775605 0.125397 -0.146218 -0.239894 -0.552573 -0.538953 0.160777 0.507828 0.248861 -0.0121282 -1.18563 -2.75542 -3.47667 -1.58291 -0.659398 -0.12638 -0.0217148 0.290339 -0.590621 -0.802217 -1.17969 -2.44341 -1.07069 0.653322 2.39516 -1.09957 -0.320956 -0.353616 0.285466 -1.13285 0.574103 1.35445 -1.21405 -1.39769 1.14311 1.14549 -1.14162 -0.487012 -0.12556 0.2547 -0.641368 0.350942 0.780255 0.711411 0.805876 1.26312 0.151963 0.0306488 -0.285449 -0.339462 0.423206 -0.279892 -0.042218 0.453386 0.856773 0.66755 0.244029 0.172039 -0.0305164 -0.386391 -0.605831 0.471119 0.354432 0.22356 0.314435 0.357575 0.540682 0.666602 0.605468 0.572473 0.096527 -1.03084 0.0881545 3 11 11 1 2 0 -19.1853 5.20997 11 11 5 0.183972 0.0941928 -0.211303 -0.606936 -0.719325 -0.28845 0.125647 0.536649 1.12245 0.826171 0.183464 0.455121 0.340454 0.336508 0.0446165 -0.302417 -0.230629 0.0574974 -0.153709 0.325211 0.841058 0.333311 0.447926 0.242558 0.220961 -0.222713 -0.127362 0.00633416 0.208238 -0.376902 -0.270596 0.091373 -0.0805244 -0.0463197 -0.11636 0.201002 -0.150431 -0.519231 -0.211836 0.120528 -0.631689 -0.744069 -0.0135417 0.139619 -1.03716 -1.16814 -1.01584 -0.0674596 -0.448419 -0.31903 -0.103104 -0.311034 -0.155061 0.142854 0.220667 -0.988028 -2.30068 -1.75868 -1.26672 0.491879 -2.80402 -1.60351 -0.363584 -0.447499 0.219871 0.636953 -1.22376 -1.69109 -1.34175 0.618147 1.13281 -0.515154 -0.601374 0.00193252 0.0203095 0.143896 0.781625 -0.348752 0.76007 1.85007 1.41096 0.0659148 -0.695729 -0.271139 -0.0572498 0.0601968 0.204932 1.17751 0.507463 0.604798 0.787299 0.633866 0.26656 0.476859 0.644444 0.257113 0.0692025 0.402426 1.15696 0.64071 0.299339 0.331395 0.405499 0.705636 0.648453 0.332235 -0.624961 -0.62769 0.214667 1.17195 0.0691018 -0.0436965 0.123525 0.332474 0.654435 0.707412 -0.0164857 -0.946644 -0.747261 0.486401 1.57937 3 11 11 1 2 0 -28.282 5.73867 11 11 5 0.347327 0.487929 0.239746 -0.00683267 -0.198182 -0.28968 -0.384769 -0.524966 -0.144865 0.608937 1.94366 0.468283 0.312112 0.506444 0.225308 0.00214774 -0.0134202 -0.155203 0.240944 -0.146546 -0.484504 0.663405 0.144239 0.0276366 0.667075 0.225164 -0.211114 -0.300245 -0.467914 -0.0971116 0.00879447 -0.681926 -0.0902485 -0.68259 0.055087 0.297639 -0.431834 -1.08305 -0.569975 0.659273 -0.492049 -0.0837054 -0.402743 -0.190933 -0.825457 0.640087 0.945951 -1.92804 -1.61714 0.285511 3.1783 -1.87422 -0.589469 0.191417 -0.0272147 -0.982676 -0.0943536 0.192113 -2.02082 -3.3917 -1.55871 -1.65417 -2.06292 -1.00443 -0.201797 0.169877 -1.02463 -1.20141 -0.948813 0.547587 2.57658 2.60744 0.914381 -0.284834 -0.636145 -0.255664 0.222163 0.0218487 0.342781 1.08687 1.0387 0.747656 0.42097 0.316937 0.0953809 0.0417312 -0.251675 0.421047 0.204206 0.532248 0.650701 0.552188 0.325039 0.311751 0.606414 0.693415 0.0706015 -0.411263 0.681392 0.348836 0.457894 0.338236 0.0268586 -0.146184 -0.141079 0.228521 0.145228 -0.471042 -0.826675 0.700462 1.13811 0.665806 0.30192 0.0619078 0.314588 0.65137 0.770683 0.243002 -0.688815 -1.25121 0.349151 3 11 11 1 2 0 -28.4377 5.53179 11 11 5 -0.338811 -0.224679 0.540137 0.734456 0.531121 0.211057 -0.319029 -0.071358 -0.363831 -0.320816 0.429917 -0.434856 -0.301595 0.335157 0.600039 0.69634 0.532863 0.0741558 -0.0933092 -0.099768 -0.26136 -0.359177 -0.376109 -0.171913 0.059782 0.229045 0.884431 0.989163 -0.393564 -0.906375 -0.521869 -0.105142 -0.549987 -0.212187 -0.242802 -0.490648 -0.463875 1.2156 -0.462029 -1.3966 -0.7271 0.721747 0.399568 -0.271383 0.197022 -0.290251 -0.589629 -0.567755 2.61689 -0.732152 -2.42675 -1.96777 2.6456 -0.601641 -1.60836 1.08068 -0.23906 -0.862411 -1.669 -2.2854 -3.1159 -2.38301 -0.0191706 -0.00660677 -1.1952 -0.994598 0.967499 -0.245491 -0.833813 -0.447799 0.816993 1.99411 2.78305 2.09249 0.350543 -0.497205 -0.811026 0.190458 -0.829659 -0.191418 0.407418 0.734938 0.812366 0.655509 0.244473 0.22894 0.35114 -0.348989 -0.105839 -0.446301 -0.0673371 0.316851 0.676319 0.626362 0.325516 0.22421 0.497412 0.602165 -0.0759255 0.270727 0.152558 0.206473 0.447291 0.307249 0.130277 0.0528624 0.0793201 0.163552 0.13737 -0.412123 0.442572 0.645139 0.717275 0.600299 0.483321 0.224181 0.380703 0.584798 0.597758 0.0533922 -0.952749 3 11 11 1 2 0 -22.2122 5.82782 11 11 5 0.604008 1.22485 1.02 0.290976 -0.465439 -0.794425 -0.957372 -0.58043 0.103904 0.633549 1.02099 0.865269 0.72968 0.32386 0.0672237 -0.260212 -0.224176 -0.738507 -0.751627 0.280901 0.806541 1.23919 0.821068 0.0529673 -0.421294 -0.439695 -0.0902314 0.0320166 -0.634456 -0.522176 0.514124 0.738885 0.109777 0.237697 -0.63303 -0.638273 -0.760514 -0.111237 -0.465193 -0.234698 0.178599 -0.574246 -1.37347 -0.903054 0.472781 -0.664894 -0.40212 -0.214363 -0.0334187 0.0102212 -0.0843457 0.320274 -0.908908 -1.4029 -1.42501 0.958979 0.119047 -0.487809 -0.0784912 -0.708857 -2.66234 0.194761 -1.79853 -3.57485 -2.24886 -0.288884 1.35386 0.186117 -0.390123 -0.450462 -0.0818789 0.635236 0.353805 0.178378 0.695764 1.28309 -0.324942 1.33226 -0.134227 -0.134097 -0.0956062 0.105242 -0.249509 -0.249181 0.361916 1.02588 1.15728 0.158617 1.47053 0.144801 -0.320781 0.112124 0.653868 0.661867 0.570425 0.674248 0.708907 0.53488 0.342487 1.31018 0.0783496 -0.854905 -0.553137 -0.0463798 0.330171 0.45344 0.665124 0.315853 -0.0536507 0.121412 1.43237 0.165713 -0.708443 -0.904339 -0.354051 0.208568 0.690861 0.822313 0.366607 -0.0409111 -0.129734 3 11 11 1 2 0 -24.8223 4.9363 11 11 5 1.23504 0.741448 0.0352432 -0.262906 -0.374286 -0.0911752 -0.132029 -0.0178929 -0.0318382 -0.0572312 0.556188 0.965745 0.294475 -0.118402 -0.341817 -0.360494 -0.195636 0.169058 0.546771 0.355558 -0.063262 0.125776 0.582508 -0.00272213 0.137176 -0.0117083 -0.412819 -0.219467 0.165723 0.550261 0.743741 0.282489 0.209967 -0.0640019 -0.337029 -0.132144 -0.00966277 -0.0536221 0.0130341 0.309884 0.639159 0.78026 0.462099 0.263626 -0.403575 -0.812124 -0.372601 -0.063838 -0.117425 0.198006 1.16757 0.853296 -0.0645786 -0.177271 0.37565 -0.0396324 -0.0850146 0.132367 -0.379451 -1.29949 -3.16904 -2.88894 -2.80494 -1.01322 -0.782102 -0.400266 -0.323173 -0.382458 0.225035 -0.93341 1.39601 1.33785 -1.21077 -1.54579 0.365556 -0.726831 -1.28919 -0.369844 -0.331946 0.148124 -0.693792 1.48245 1.35565 -1.20711 -0.859334 1.26987 0.996795 -0.990574 0.202094 -0.0744795 0.587683 0.317832 0.0096295 0.693377 0.978654 1.19951 1.04004 -0.0235477 -0.274727 0.512512 -0.461227 -0.0151346 -0.182425 -0.171442 0.121751 0.53099 0.479368 0.0530348 -0.0740029 0.158834 0.400362 -1.097 -0.181894 0.0624122 -0.165905 0.255577 0.432909 0.250806 0.456242 0.55115 0.985421 3 11 11 1 2 0 -25.9165 4.14388 11 11 5 0.903781 -0.170564 -0.308762 -0.167529 -0.110146 0.0671602 -0.218115 -0.232178 -0.1899 0.13213 0.639592 0.199503 -0.308285 -0.35953 0.0256275 0.406755 0.541247 0.414694 0.0638017 -0.26536 -0.14655 0.561889 -0.102563 -0.271942 -0.240256 0.0680973 0.4402 0.8884 0.63239 0.0791088 -0.230697 -0.477049 0.159866 -0.516735 -0.142335 -0.0603507 0.314716 0.715375 0.84647 0.863336 0.130715 -0.46062 -0.467401 -0.0568712 -0.501135 -0.246241 0.0138137 0.696922 1.53546 0.973609 0.365045 0.313953 0.0728103 -0.101139 0.0147758 -0.00589779 -0.489355 -0.2759 -1.52774 -3.06488 -3.09455 -1.3261 -0.536674 0.12316 0.354522 0.507292 -0.248412 -0.00454913 0.673457 -0.637004 -1.02346 -0.581362 0.847782 -2.6957 -1.53837 -0.122869 0.639111 -0.663146 0.130876 2.07569 -0.871144 -1.39281 0.687316 2.45684 -0.903565 -1.27406 -0.182927 0.863907 -0.329591 -0.155164 0.773871 0.357328 0.727946 1.22316 0.680455 -0.496003 -0.596772 0.0844298 0.802223 -0.634263 -0.0204279 0.297987 0.718003 0.819493 0.40316 -0.230793 -0.355392 -0.144221 0.0925974 0.487846 -0.748111 0.187717 0.316635 0.51634 0.478263 0.0320387 -0.049848 0.2164 0.294018 0.237934 0.384293 3 11 11 1 2 0 -21.8157 3.84896 11 11 5 -0.690622 -0.331672 0.176945 0.46781 0.455255 0.0572497 -0.334276 -0.380387 0.0495231 0.374096 -0.158983 -0.613061 -0.0399321 0.698474 0.959508 0.796284 0.309707 0.0450138 -0.185338 -0.0197976 0.646684 0.0936867 -0.547481 0.184179 0.891092 0.841194 0.555225 0.0529564 -0.352903 -0.501178 -0.220135 0.459362 0.0752503 -0.473297 0.246609 0.719149 0.572312 0.0328877 0.0700537 0.218747 -0.15925 -0.306595 -0.162379 -0.505062 -0.375021 -0.898875 -1.318 -0.564857 -1.21145 -0.786345 -0.0290346 0.365215 0.0449684 -0.32955 -0.325073 0.0642028 -1.44808 -2.12523 -2.13591 0.206801 -4.50331 -2.79061 0.0115473 0.504593 0.408892 -0.170596 0.806763 -0.360405 -0.464341 1.39042 1.72214 -0.29892 -0.852192 -0.117217 0.741193 0.905137 0.291502 -0.0982857 0.7835 1.28008 1.35599 0.355603 -0.269292 -0.334923 0.370804 0.669254 0.44173 0.418171 -0.0838151 0.707212 0.637953 0.415059 0.0446072 -0.0496264 -0.0223874 0.274974 0.0166055 -0.0300034 0.00121874 -0.236634 0.512875 0.576704 0.253298 -0.0654032 -0.0662019 0.199823 0.0501351 -0.185717 -0.0160847 -0.182876 -0.482784 0.492207 0.618697 0.329881 0.0745661 0.1402 0.232415 0.315827 0.214183 0.0639302 -0.148722 3 11 11 1 2 0 -28.7132 4.85878 11 11 5 0.279896 -0.674561 -0.450328 0.0131783 0.440113 0.838778 0.600471 0.191186 -0.179723 -0.207196 0.853181 -0.323636 -0.199486 -0.191051 0.0386579 0.580598 0.962277 0.460772 -0.0463096 -0.298713 -0.272757 0.436854 -0.79581 -0.157447 -0.151105 0.000972658 0.507462 0.65894 -0.240387 -0.590645 -0.145115 -0.216831 0.103268 -0.287074 0.178089 -0.100675 -0.692978 -0.692428 0.119373 0.369083 -1.25953 -0.784636 -0.444658 0.0303287 -0.163338 1.61441 1.33539 -1.84229 -1.97662 0.190364 2.32848 -1.91513 -1.05284 -0.0576795 0.92528 -0.835472 -1.58327 -0.0481107 -2.12352 -2.87192 -0.895313 -1.88092 -2.89579 -1.51806 0.0911979 1.30947 0.108445 0.142556 0.28053 1.45693 2.91317 2.80312 1.16925 -0.468678 -0.735787 0.235241 0.888309 -0.552212 -0.334507 -0.0723453 0.623133 1.01584 0.590456 -0.00567886 -0.302143 -0.168421 0.10708 0.300191 -0.525507 0.15027 0.425319 0.59226 0.49739 0.329923 0.0784388 0.00995904 0.261616 0.302131 0.371177 -0.796829 0.0811651 0.374941 0.296092 0.14984 -0.0565012 -0.213859 -0.0815032 0.2038 0.449412 0.534657 -0.873095 -0.0996253 0.381757 0.5887 0.413542 0.11969 -0.0468823 0.312282 0.455534 0.611865 0.312813 3 11 11 1 2 0 -29.4713 6.26221 11 11 5 1.92264 0.397325 -0.432668 -0.609404 -0.70037 -0.368015 0.35048 0.816614 0.651341 0.35261 0.622715 0.726674 -0.289542 -0.23024 -0.19253 -0.314234 -0.275772 0.345154 0.762445 0.307656 -0.0166844 0.283875 -0.161062 -0.626774 0.058622 -0.458172 -0.433072 0.0507799 0.161397 0.201733 0.176653 -0.598843 -0.0503161 -0.845192 -0.0986647 0.250359 -0.830752 0.492323 -0.721874 -0.978274 -0.736425 0.345565 -0.255947 -0.991408 -0.601806 -0.0640692 0.412891 -0.286832 3.06761 -0.821327 -1.96499 -1.00489 1.35421 -0.0519658 -1.2764 -0.556866 0.520265 -0.201755 -2.37074 -2.3019 -2.56245 -2.64643 -0.775542 -0.465412 -2.20294 -1.25266 -0.263252 -0.0865331 0.397426 0.596975 0.596732 1.51766 2.84987 2.61624 0.727329 -0.95255 -0.345732 -0.0291384 0.0616902 -0.243024 -0.664275 -0.0523593 0.750858 1.06183 0.703287 0.00751262 -0.154237 0.544799 0.239363 -0.46019 0.0654695 0.254166 0.280565 0.547879 0.642079 0.448034 0.348026 0.384131 1.02879 0.439819 -0.505532 -0.513907 0.0432438 0.245938 0.200588 -0.123226 -0.0670105 0.0249436 0.397169 1.14158 0.437734 -0.587208 -0.599845 -0.425041 0.367564 0.791697 0.415912 0.168185 0.211893 0.850528 1.65877 3 11 11 3 2 0 -26.5868 4.49176 11 11 5 0.127607 0.756711 1.11753 0.246618 -0.120932 0.114472 0.317604 -0.0691337 -0.239385 -0.152684 0.936923 -0.023252 0.718442 1.14756 0.702332 -0.198466 -0.262125 -0.0248585 0.385661 0.362462 0.0236984 0.180946 0.0959698 0.541766 0.464125 0.128549 -0.851536 -0.781228 -0.0646986 0.278795 0.105156 -0.28878 -0.529262 -0.170974 -0.434387 -0.860424 -1.02815 -0.565749 0.250298 0.83167 -0.247215 -0.55755 -0.587729 0.0840347 -0.123936 -0.377937 -0.863459 -0.636174 0.82328 1.45185 -0.704319 -1.68787 -1.04382 -0.352996 0.861965 0.0949422 0.773229 0.895264 0.805644 0.246174 -3.31545 -4.76918 -2.66815 -0.321701 0.69107 1.08584 0.104818 0.918972 1.72299 1.11203 0.292091 1.49291 1.02146 -1.687 -0.204347 0.893168 0.927106 -0.359921 0.226178 1.03066 0.558723 0.0444549 0.801423 1.66204 -0.450573 -0.771931 0.213162 0.422946 -0.302098 -0.180423 -0.109864 -0.0538921 -0.0229096 0.396236 0.790465 0.303696 -0.084596 -0.052886 -0.342975 0.090386 -0.424062 -0.599899 -0.432744 -0.057533 0.19273 -0.251613 -0.0352959 -0.205039 -0.0196546 -0.340436 0.310769 -0.292802 -0.606823 -0.43399 0.270219 0.0720293 -0.3055 -0.298066 0.0833835 0.378111 -0.13088 2 1 -19.2544 2.00534 11 11 5 -0.404178 -0.93859 -0.844682 -0.0515362 0.6126 -0.0532391 -0.176239 -0.757206 -0.24061 0.139462 -0.340793 -0.432702 -0.999337 -0.41291 0.674363 1.26804 -0.390178 -0.894467 -0.312839 -0.0374744 0.187471 0.298836 -0.358444 -0.454375 0.277096 0.934389 0.161174 -1.44221 -0.700748 -0.294632 -0.153031 0.35224 0.172715 0.588189 0.674513 0.4904 -0.150967 -1.31284 -1.20615 0.447453 0.801483 0.0862408 0.142037 0.0990597 0.813905 0.787931 0.607335 -1.22203 -1.47272 2.44963 2.82154 0.334371 -0.39161 0.164778 -0.309101 -0.129312 -0.246049 -0.0179827 0.17081 1.67786 2.0708 -0.832279 -0.977307 0.74655 0.0681469 -0.19338 -0.672458 -0.953306 -0.675323 -0.302381 -0.439857 1.82465 3.41308 -0.382668 0.282574 0.362042 -0.288362 -0.647026 -0.170446 -0.640425 -0.881946 -0.0308417 -1.91557 -0.754249 0.302939 -1.13364 0.18419 0.586654 -0.412986 0.172393 0.241861 -0.414314 -0.275881 -0.726443 -0.880997 -0.0484639 -0.467986 0.0684469 0.168026 -0.326115 0.261591 0.663902 0.0383195 -0.0106052 0.106353 -0.529913 0.465968 -0.00626147 0.135722 0.342516 0.0435663 0.224675 0.629514 0.835653 0.276976 0.188265 -0.468616 -0.204039 0.242107 0.304424 0.325498 2 2 -22.3389 2.72289 11 11 5 0.16716 0.0391545 0.641894 0.0280013 0.203813 0.661121 0.250566 -0.280618 -0.255288 -0.446731 0.967918 -0.242489 0.857395 0.741933 0.896427 0.597906 0.338764 0.305276 0.688338 0.429532 -0.0480751 0.732211 -0.359916 0.678998 1.22312 0.733138 -0.364011 -0.420234 -0.235479 0.384249 0.471851 -0.117251 0.444626 -0.25804 0.042349 -0.196181 -0.801359 -0.373774 0.0342675 1.30431 0.589649 0.146565 -0.285865 0.0656259 -0.510229 -0.712426 -1.10388 -1.57518 1.48559 2.80352 2.25011 -0.667711 -0.837649 -0.582774 0.107753 -0.323497 -0.531815 -0.653457 0.0439435 -0.545919 -2.88517 -3.66919 -1.98934 -0.156451 0.00572336 0.459441 -0.206629 0.329259 1.23753 1.01407 -0.485949 0.193608 -0.660471 -3.28754 -0.695952 1.1233 1.42829 -0.356084 0.337167 1.39575 0.851304 -0.441353 -0.181712 1.21657 -1.37773 -1.83594 0.165793 1.54093 0.014885 0.139657 0.652512 0.744021 0.196706 0.693209 0.475904 0.351102 -0.915506 -0.675536 0.366962 -0.0178854 -0.159258 -0.22999 0.336038 0.0409281 0.191079 0.0857447 0.0103321 -0.496825 -0.678929 0.134922 0.127835 0.0666904 -0.660022 -0.396812 0.176833 -0.0684604 0.115551 -0.490211 -0.486852 -0.581051 -0.760109 3 11 11 3 2 0 -21.015 3.36996 11 11 5 1.04584 0.359966 -0.0509788 -0.222786 0.0775479 -0.285374 -1.28844 -0.94729 0.617 1.35272 0.521888 0.282373 -0.381483 0.288162 0.710298 0.979024 0.147276 -0.804621 -0.675046 0.700927 0.948698 0.189819 0.510862 0.272258 0.807112 0.660676 0.120062 -0.421088 -0.336508 0.183831 1.03455 0.552734 0.147367 0.701665 0.421579 0.414825 -0.520239 -1.10977 -0.50519 0.482835 0.495936 0.435498 -0.064295 -0.4672 -0.00150185 -0.162878 -0.244214 -1.11815 -0.714782 0.911284 1.55829 0.331543 -0.40665 -0.0389058 -0.192066 -1.06093 -0.710992 -0.317363 0.0789266 1.7277 1.4506 -1.83553 -1.96931 -0.980262 -0.037028 -0.454711 -0.134089 0.106471 -0.0843736 -0.945459 -1.79418 -1.94739 -1.90676 -1.0714 0.0442442 0.459893 -0.38427 1.1724 0.586309 0.32698 -0.432558 -1.87141 -1.02463 -0.514376 0.24827 0.445232 0.642215 1.07382 0.953679 -0.092619 0.647292 1.19856 0.555049 -0.845195 -1.02575 -0.0136061 0.537284 0.739984 0.680128 0.474946 -0.593162 0.0839318 1.00476 1.29465 0.439839 -0.947482 -0.493796 0.259749 0.482902 -0.165127 -0.0351704 -0.49763 -0.0810135 0.503171 0.900835 1.06585 -0.440554 -1.15526 -0.511826 -0.210425 -0.904988 2 1 -16.7821 2.08449 11 11 5 -1.46513 0.654922 1.03309 0.843996 0.0226793 0.143455 -0.685671 -0.269921 0.487103 -0.250875 -0.674753 -0.829141 -0.464681 -0.813451 -0.451603 -0.345059 0.384547 -0.416647 -0.493203 0.00753905 -0.255646 -0.746537 -0.59104 0.0127837 0.126209 0.618279 0.155454 -0.857794 -1.18145 -0.346003 0.0437607 -0.544388 -0.477459 0.0527005 0.635499 1.04998 0.621207 -1.29502 -2.2358 -0.656671 0.209429 0.0798143 0.204967 0.349213 0.854925 0.700936 0.441097 -0.464078 -2.40203 -1.77321 -0.0887339 0.186528 0.864218 0.859063 0.619383 0.331357 -0.587475 -0.591687 -0.355777 0.514126 1.57079 1.55613 0.0519165 0.215732 -0.133809 0.724708 0.0969537 -0.0487333 0.753159 1.08944 0.97445 0.0833253 -0.142669 -1.00534 -0.221991 0.178057 1.24041 -0.398514 -0.226846 0.860708 2.47205 1.02518 0.816234 0.586488 0.119285 0.528958 0.554763 0.901203 -1.15387 -0.904361 -0.504272 0.697985 1.15648 0.643601 -0.30635 -0.426224 -0.0519266 0.0618149 -0.320739 -0.482492 -0.698085 -0.22307 -1.43874 -1.10648 0.163364 -0.620169 -0.562122 -0.216424 -0.163948 0.0383838 0.812394 0.119487 -0.136548 -0.933585 -1.49681 0.772893 1.11934 0.213598 0.501142 0.155804 0.570728 2 2 -16.8746 2.10187 11 11 5 0.881382 0.419951 -0.237456 -1.27611 -0.232748 -0.201726 -1.86414 -2.29158 -0.278779 0.421738 0.165551 -0.337865 -0.161667 -0.0797886 0.277916 1.11778 0.0215978 -1.43744 -1.53022 0.0130104 0.748138 0.613995 -0.0443542 0.279075 1.01841 1.42255 1.05997 -0.394214 -1.06561 -0.146291 0.906091 0.8273 1.01891 0.766993 0.832907 0.993664 0.472109 -0.747622 -0.975716 -0.185015 0.155844 0.65467 0.335725 0.27872 0.18085 0.499444 0.342461 -0.81108 -0.767067 1.03059 2.03306 1.01943 0.107503 0.0116176 0.640933 -0.936744 -0.438298 0.383108 0.488882 1.77618 1.72568 -0.00933204 -0.390772 -0.79185 -0.144662 -0.229893 -0.895127 -0.473159 -0.29678 -0.554381 0.0459729 -0.572223 -0.359665 -1.25932 -0.608994 -0.640877 -0.805159 0.202478 -0.00372482 -0.341506 -0.755786 -1.54985 -0.654937 -0.299671 -0.168594 -0.0618486 0.00440499 0.110707 0.979583 -0.0902587 -0.191835 -0.17128 -0.606416 -1.19661 -0.834264 -0.0868277 0.667162 0.939957 0.78693 0.742244 0.291986 0.157393 0.705711 0.461909 -0.124286 -1.42215 -0.297016 0.210644 0.605008 0.606487 0.243075 -0.160879 0.00184995 0.487273 0.291303 0.205589 -0.246921 -0.910784 -0.0975395 0.136907 -0.0816493 3 11 11 3 2 0 -21.0551 2.46371 11 11 5 0.296426 -0.874771 -0.76213 -0.497309 -0.925165 -1.51966 0.254294 1.76524 0.83989 -0.906359 -3.26997 0.954206 0.674689 0.333081 -0.892916 -1.6593 -0.582068 1.35456 1.42495 1.01741 -0.127696 -1.51636 1.42822 1.43478 1.21807 -0.132823 -0.98399 -0.0534297 1.18271 0.775863 0.541098 0.182754 -0.0447227 0.867409 0.473724 0.391243 0.0172246 -0.492035 0.0501213 0.717018 0.316318 0.317712 0.152383 0.499129 0.22381 -0.0515454 -0.161118 -0.341381 -0.274198 0.132804 0.666348 -0.70304 -0.948769 0.427943 1.25272 -0.482277 -0.510777 -0.154731 0.299094 1.15395 1.72512 0.532135 0.865686 1.23589 -0.142186 -0.563328 -0.565586 -0.607836 -0.297303 0.336152 -0.61352 -1.20337 -1.1845 -1.094 -0.783341 -0.896895 -0.822519 -0.00135705 -0.928886 -1.04684 -0.616759 -0.686021 -0.354238 -0.207395 1.00229 0.148869 0.541664 0.273223 0.519035 -0.948258 -1.11451 -0.510334 0.0397386 0.0781321 -0.205613 0.733356 -0.0178931 0.116283 0.678834 0.74435 -0.218124 -0.410571 -0.373185 -0.13343 0.127604 0.578958 0.566681 0.221544 -0.0659081 0.141624 1.2153 1.05797 0.799818 -0.453483 -1.42487 -0.36581 0.350239 0.399091 -0.21317 -0.453785 -0.273486 2 1 -14.4349 1.40633 11 11 5 1.54168 0.410538 -1.23082 0.609005 0.839546 0.288234 0.642027 -0.493747 0.176364 1.77301 0.543117 0.628087 -0.40416 -0.357766 0.220972 -1.05228 -0.389734 0.47066 -0.918671 -0.677115 0.255884 -0.498922 -0.881058 -1.01105 0.237553 0.266652 -1.45769 -0.67364 0.499698 -0.612605 -0.836497 0.482289 -1.52693 -0.032728 -0.68489 -0.457007 -0.442502 -1.26404 -0.400059 0.328956 -1.53445 -1.85505 0.0899355 -1.17519 1.10379 0.127796 -1.18624 -1.34236 -0.68625 -0.190813 -0.0304267 -0.192581 -0.526883 0.940037 -0.480859 0.818483 -0.0105307 -0.902874 -0.341498 0.167232 0.088592 0.867548 0.43301 -0.142213 1.39766 0.743718 0.15037 -0.0311998 0.126031 0.404471 0.766121 0.133049 -0.95588 0.634623 1.17171 -0.100467 0.479184 0.246672 0.63407 0.260685 0.301366 -0.44248 -0.128187 0.014592 0.106892 -0.420706 0.190933 1.30115 0.967245 1.32527 0.32004 0.219638 0.310394 0.0588179 0.635259 0.642816 -0.0984287 0.298323 1.26035 0.344592 0.970098 0.349018 0.466628 0.0362427 -0.0145482 0.158512 0.691482 0.0787454 -0.244275 0.435928 -1.80123 -0.336444 0.0702646 -0.0106292 -0.461399 -0.747935 -0.244381 -0.0414474 -0.399407 -0.379688 0.207264 2 2 -18.1101 1.96519 11 11 5 -0.442981 -0.744138 -0.590092 -0.385903 -0.855463 -1.18056 0.225582 1.02667 0.827893 -0.0762728 -1.88682 0.14144 -0.398172 -0.38105 -0.847245 -1.91325 -1.54583 0.397743 0.558322 0.328465 -0.00627529 -1.76878 1.11159 0.808951 0.525573 -0.61589 -2.22884 -1.41172 0.93406 0.619646 0.651345 0.22789 -1.20578 1.32011 1.17472 0.7548 0.135737 -1.27419 -0.855054 0.79311 0.832909 0.859222 0.216966 -0.614396 1.08697 0.546357 0.467111 -0.602745 -0.770309 -0.0395736 0.496596 -0.587296 -0.612121 1.01963 1.40448 0.153395 0.166897 0.105933 0.123027 1.45573 1.93747 1.21233 0.663213 1.35765 0.627605 1.25169 -0.306624 -0.247053 -0.168746 0.411272 0.117994 -0.510426 -0.574869 -0.63247 -0.124533 -0.670836 0.278713 -0.151887 -0.438221 -0.35749 -0.0272427 -0.155801 0.256286 -0.135929 0.182883 -0.387203 -0.512193 -0.073607 -0.0845817 -0.74108 -0.796426 -0.409693 0.253267 0.352205 -0.346561 0.107237 -0.17792 0.0605415 0.600856 -0.0305569 -0.371251 -1.04577 -0.628337 -0.205503 -0.0341922 0.487186 0.440728 0.148951 0.0640635 0.642262 0.155729 0.0927582 -0.240281 -0.278124 -0.120338 -0.00985672 0.235424 0.447189 0.341886 0.10359 0.506515 3 11 11 3 2 0 -25.25 2.23339 11 11 5 -0.613308 -1.35577 -2.94305 -0.193616 2.66528 1.80475 -0.592153 -3.01798 -1.7489 -0.657361 0.598329 0.627433 -1.6394 -1.98847 1.18778 1.98886 1.19673 0.597987 -1.24263 -1.04762 0.011325 1.54374 1.46465 -0.810037 -0.483724 0.95231 1.02843 0.595195 0.390363 0.196603 0.222666 0.515064 1.3931 0.824117 -0.448843 -0.142566 0.612371 0.26655 0.360568 -0.148074 0.42919 0.0974953 0.0149329 0.291197 0.063164 -0.0321316 0.0434782 0.705895 -0.712114 -1.7585 -0.194445 1.22377 0.620986 0.42705 0.138619 0.145563 0.803748 0.760976 0.311583 0.650347 2.59789 0.408266 -1.04793 -0.393761 -0.00434599 -0.0991975 -0.334569 -0.193537 -0.515205 -0.669433 -1.27581 -0.830863 -1.01175 -0.401055 -0.34208 -0.581637 -0.926254 -0.70757 -0.248974 0.13243 0.0751413 0.839687 -0.652962 0.820104 0.832672 -0.262488 -0.468311 -0.945956 -0.729622 -0.0834445 0.118204 0.0653085 1.12492 -0.300892 0.809336 1.00947 -0.151758 -0.802577 -0.50387 -0.123829 -0.385683 0.204223 0.275452 0.532662 0.107146 0.717949 0.968673 -0.264398 -0.534841 0.0330525 0.443396 -0.816263 -0.502939 0.0852736 0.11204 -0.469718 -0.263748 0.368719 -0.285434 -0.715114 0.164298 2 1 -17.8866 1.72375 11 11 5 -0.893224 1.16153 0.0828355 1.16772 -0.885816 -0.456212 1.82408 0.860638 -0.3275 0.411998 1.01108 -0.570263 -0.36575 -0.93987 0.877877 -0.370579 -0.864347 0.828772 0.0178211 -1.06706 -0.266386 0.784852 -0.0994692 -0.86361 -1.07589 0.361039 -0.0693234 -1.57241 0.596053 -0.290852 -1.32392 -0.683251 0.12387 -0.628801 -0.995896 -1.188 0.938883 -1.32996 -2.10965 0.0422239 0.815421 -1.15193 -1.73794 -1.50003 -1.77335 -0.742104 -0.39061 0.300922 0.279785 -1.49369 1.00113 0.653563 -0.812106 -0.45177 0.273587 0.0895397 0.633355 -0.242782 -0.00721949 1.23947 -1.3003 1.64504 0.53508 0.247954 0.652325 1.68049 0.428209 0.645732 0.00753684 -1.29721 -0.547768 0.869207 0.0520538 -0.53863 -0.140851 0.172363 1.38209 0.9961 0.086325 -0.147541 0.264762 0.775957 -0.903019 0.525222 0.580319 0.175255 -0.348671 1.21443 0.350442 0.245793 0.439495 0.50024 0.988214 -0.670196 0.704673 0.918799 0.345948 0.0656821 1.29281 0.354002 -0.320014 0.213609 0.0791258 0.821581 -0.302777 0.193729 0.452546 0.0845619 -0.431645 0.981952 0.146687 -0.617946 -0.379734 -0.629058 0.400708 -1.00284 -0.307669 0.301021 -0.107716 -0.401396 0.740524 2 2 -17.7206 1.87677 11 11 5 -0.331214 -0.471138 -1.82825 -0.0773327 1.41699 0.804691 0.0550654 -1.365 -1.06949 -0.362424 -0.860259 -0.025108 -1.34766 -1.93513 0.25305 1.01693 0.507795 0.592087 -0.640331 -1.553 -1.04408 -0.363417 0.0606299 -1.51362 -1.13686 0.715282 0.9558 0.931193 0.885365 -0.267809 -0.940713 -0.711748 0.743811 0.334147 -1.07857 -0.806956 0.426207 1.56111 1.42616 0.1884 -0.0143187 -0.744514 -0.80464 0.668093 0.0329282 -0.472168 -0.0162063 0.887524 -0.201744 -1.30878 0.430332 1.51763 0.677886 0.126509 0.441855 -0.172419 0.602936 1.06599 1.00687 0.803804 2.3091 1.07047 0.24454 0.299394 0.469216 0.398866 0.098097 -0.0946606 -0.217941 -0.180423 -0.679443 -0.174222 -0.606648 -0.19241 -0.0556109 0.347547 0.239652 -0.164409 -0.176618 -0.0618192 0.054614 0.0916004 -0.623182 0.0372709 0.204283 0.164617 -0.16396 -0.509953 -0.690346 0.125935 0.407404 -0.164176 0.547026 -0.385261 0.180222 0.82541 -0.0138438 -0.271758 -1.28316 -0.86689 -0.126631 0.326464 0.524793 0.419959 0.080548 0.220843 0.838448 0.302525 -0.280082 -0.955238 -0.150297 -0.490939 -0.020632 0.31292 0.710658 0.316078 0.0919688 0.410753 0.275402 -0.117456 -0.900824 3 11 11 3 2 0 -24.1083 2.7668 11 11 5 -2.40939 2.17962 1.72814 -0.86186 -2.10794 -0.754334 -0.672275 -0.789686 -0.344563 -0.0173253 0.654769 -1.37461 1.59611 0.810146 -0.0355304 -0.834343 -1.0254 -0.911481 0.0990985 0.718062 0.610542 0.613284 -0.74748 1.35041 0.627659 0.10739 0.228591 -0.301529 -0.136609 0.974497 1.1744 0.472373 0.392652 -0.334517 1.21256 0.782447 0.157087 0.558092 -0.210565 -0.115918 0.544167 0.458978 0.127014 0.346359 -0.360966 0.107842 -0.872641 -1.049 0.265171 -0.317891 -0.181144 -0.128285 -0.161826 0.00172922 0.148345 1.17316 0.758394 0.483576 0.982876 1.4408 1.27536 1.21762 0.863967 0.247117 -0.0855569 -0.684816 -0.810595 -1.30288 -0.394741 -0.755862 -1.78838 -1.63636 -1.24421 0.199879 -0.240994 -0.815729 -0.983226 -0.640998 -0.0783757 -0.0629054 0.604762 0.0328416 -0.352628 -0.669129 -0.424858 -1.07574 -1.34683 -0.392706 -0.125996 0.717003 -0.587132 0.762079 0.465133 -0.0317001 -0.229351 -0.216187 -0.874996 -0.981021 0.452195 -0.420645 0.67037 -0.244191 0.798903 0.858751 0.565557 -0.345608 -0.548656 -0.469453 0.554651 1.49174 -0.64538 0.261032 -0.351264 0.298558 0.755252 0.136484 -0.841072 -1.44446 0.0381247 1.69184 2.35627 2 1 -16.2062 1.23315 11 11 5 0.842979 -0.159526 -0.435437 1.14763 1.07502 -0.0218184 0.356473 0.411626 1.23306 1.80922 1.08391 0.127213 -0.520866 -1.1943 -0.172114 0.591612 -0.898137 -0.786994 0.191302 0.127758 0.082448 -0.411541 -0.650173 0.196913 -0.862763 0.0247212 -0.295944 -1.19763 -0.884109 0.42848 -0.123754 -0.709858 -0.511789 -0.984834 -0.287081 -2.25556 -0.755132 -0.0696219 -1.02778 -1.57068 -0.925969 -0.265517 0.245969 0.137406 -0.38603 -0.682418 -1.13536 -0.0187827 0.603196 -0.882141 -1.59917 -1.6508 -0.64184 -0.0559115 0.295984 -0.329121 0.995329 -0.566157 0.0188665 0.958435 0.0571004 0.103262 0.299122 0.70942 0.758605 0.67608 -0.226948 0.112472 0.185975 0.184641 0.167298 0.261348 0.675163 0.577489 0.598656 0.607172 0.974095 0.0819428 -0.477939 -0.68275 0.381457 -0.0232179 -0.176064 -0.732768 -0.366354 0.634079 0.908634 1.43225 0.870062 0.599275 -0.17293 0.364883 0.613395 0.265822 -0.369315 1.01149 1.06214 1.1612 1.14579 0.409214 0.290633 -0.0678243 0.637216 0.623968 0.157374 -0.514476 0.551459 1.03116 0.99501 -0.806588 -0.297524 -0.165004 -0.785139 -0.376527 -0.465024 -0.335864 -0.99446 0.478625 0.685362 -0.301337 -2.06119 2 2 -17.8404 2.06515 11 11 5 -1.0512 1.68867 0.70418 -0.30837 -1.15129 -0.248731 -0.513059 -0.790005 -0.458406 -0.396087 -0.590559 -1.01971 0.699925 0.466158 -0.0354429 -0.778713 -1.33698 -1.4666 -0.603386 0.223941 0.109969 0.00778896 -0.555494 0.574626 0.545166 0.135639 -0.16017 -1.62506 -1.14277 0.231384 0.779416 0.101819 -0.00111623 0.187749 1.49205 1.40153 0.636074 0.211581 -0.977544 -0.715101 0.406173 0.631925 0.307506 0.25091 0.307504 0.735812 -0.256638 -0.432085 0.0411872 -0.358786 -0.661297 -0.251806 -0.232317 0.398345 0.496349 2.32663 1.27796 0.681985 1.67112 2.28733 1.54366 1.17647 0.0796064 -0.0226829 0.194678 0.0335824 0.387034 -0.472497 0.385134 0.198722 -0.789857 -0.331309 0.093534 0.515276 0.178796 -0.423075 -0.717618 -0.217327 -0.298063 -0.253249 0.0921254 -0.364258 -0.0657824 -0.293081 -0.117382 -0.094601 -1.06373 -1.07189 -0.495313 0.127494 -0.555519 0.0386153 0.272668 0.0406001 0.218565 -0.253473 -1.22063 -1.12188 -0.629368 -0.0322683 0.49103 -0.159595 -0.0213298 0.589515 0.780844 0.19676 -0.72154 -0.784935 -0.76201 -0.17236 0.27628 0.527646 0.110599 0.341098 0.688268 0.768732 0.5936 -0.365095 -0.340363 -0.393684 -0.214869 3 11 11 3 2 0 -21.1252 3.2015 11 11 5 1.02901 -0.781801 -0.941002 -1.11791 -0.521339 -0.143324 0.280661 0.194694 0.10898 0.462793 0.765483 0.95676 0.0239283 -0.452424 -0.508481 0.240615 0.735991 0.320003 0.109827 0.00725377 0.0396596 0.541757 0.633097 0.276763 0.137814 -0.24285 -0.0578162 0.224121 0.288682 0.57853 0.532989 0.207586 0.439702 -0.118068 0.131825 0.386673 0.152367 0.133637 -0.470292 -0.21525 0.292966 0.572847 0.185985 0.0164839 -0.134264 0.132981 -0.0267155 0.661686 1.44364 0.741317 -0.123247 -0.226447 -0.0311826 -0.626711 -0.509554 0.234621 -0.478627 -1.4589 -1.68943 -0.646488 1.6153 0.997863 -0.870312 -1.20683 -0.749948 -0.606336 -0.145699 -0.135065 -0.519374 -1.28882 -1.41154 -1.56102 -2.17235 -1.56185 -0.594943 0.0389873 0.0224003 0.0138703 0.378071 0.277237 -0.179673 -0.385542 -0.996764 -1.64782 -0.277672 0.972444 0.569868 0.470691 0.673587 1.14576 0.8897 0.306316 -0.872226 -1.07922 0.486575 1.97965 1.09129 0.15014 0.343234 0.517261 0.896924 0.780773 -0.146456 -1.03672 -0.462609 1.53378 1.4907 0.63964 -0.210756 0.23294 -0.608758 -0.00651802 0.166912 -1.14202 -1.6682 -0.0882496 1.19093 0.699644 0.346825 -0.129947 0.142296 2 1 -18.3829 1.77591 11 11 5 -0.883726 0.881446 0.351001 -0.945507 0.19124 1.27413 1.5144 1.06422 0.284404 -0.344783 -0.477349 -1.14071 0.442935 -0.179664 -1.17796 -0.52158 0.170556 -0.162701 -0.271759 -0.253261 0.199643 -0.191734 -1.30523 -0.277119 -0.0978609 -0.882708 -1.56452 -0.65716 0.743012 0.366486 -0.206048 -0.0228063 -0.0833951 -0.783029 0.0711575 -0.0111501 -0.638836 -1.22654 -1.66068 -0.531412 0.0626791 -0.0252668 0.307946 0.336227 0.334191 0.674915 0.0929622 -0.31053 -0.795695 -1.44207 -1.00952 -0.112584 -0.34206 0.0538933 0.709609 0.106401 0.42338 0.273618 0.328663 1.35853 1.19114 0.588589 -0.0447635 0.41345 0.613289 1.06583 -0.00283406 0.314195 -0.208642 -0.624272 -0.787736 -0.0475607 0.446708 1.25863 1.64072 0.44904 0.702556 0.511206 0.230392 0.585341 -0.146068 0.331346 1.48926 1.20849 2.31569 1.25643 -0.569225 -0.338673 0.515659 0.115126 0.357164 -0.134295 0.23872 1.18866 1.51669 0.569798 -1.32169 -1.13746 -0.598144 -0.725566 -0.441637 -0.787414 -0.550652 -0.557972 0.0822707 -0.256017 -2.54552 -1.53119 -0.14026 -0.174371 0.178571 0.0774213 0.0709923 0.496694 0.597416 1.20915 -0.172831 -1.94301 -0.718539 0.559139 0.0398451 2 2 -16.9977 1.87125 11 11 5 0.223123 0.156733 -0.739559 -1.71132 -0.524608 -0.103158 -0.379711 -0.342352 -0.345399 0.381437 0.305197 0.50919 0.251246 -1.04958 -1.34269 -0.258381 0.862866 -0.134323 -0.55143 -0.492557 -0.109901 0.299642 1.13915 0.666354 -0.188061 -0.567849 -0.0646978 0.398476 0.546257 0.3431 0.151492 -0.0973066 0.192352 1.06217 1.03575 0.761293 -0.235232 -0.410364 -0.643321 -0.222858 0.195433 0.509265 0.598705 0.192234 0.312376 1.05541 1.31302 1.3566 1.1399 0.174921 -0.376628 -0.179541 0.30235 0.100785 -0.280312 0.648851 0.153767 -0.230285 -0.0188892 0.700651 2.12867 1.88705 -0.0101085 -0.537414 -0.331636 -0.470581 -0.496452 -0.594929 -0.663981 -0.541979 -0.348254 -0.283525 -1.05392 -1.94217 -0.975511 -0.55936 -0.499438 -0.700791 -0.444587 -0.223455 -0.0993151 -0.104682 -1.06537 -2.29677 -1.12879 -0.351952 -0.308644 0.0147279 0.436797 0.679808 1.17938 0.813999 -0.366686 -1.13038 -1.01055 0.145197 0.0133195 0.0799172 0.00953158 0.892465 0.601539 1.14234 0.594786 -0.981727 -0.807515 0.170967 0.213658 0.125601 0.0293625 0.208832 0.390834 0.876542 1.34352 0.459215 -0.741413 0.0282584 0.0944943 -0.121682 0.339754 0.117719 -0.264517 3 11 11 3 2 0 -25.4916 3.66186 11 11 5 -0.153592 -0.458366 -0.111252 0.236177 0.029691 -0.157944 0.350169 1.2763 1.04639 0.408157 -0.100302 0.589106 0.0649755 0.0532578 0.00627373 0.0974619 0.0144522 0.464712 0.760416 0.514252 0.0300892 -0.233879 0.235007 -0.0804527 0.290776 0.347828 0.247463 -0.139103 -0.242029 0.0287361 -0.177101 -0.237298 -0.185141 -0.461644 -0.69089 -0.16665 0.448534 1.08339 0.0225014 -0.925121 -1.10514 -0.586988 -0.293891 -0.0331223 -0.187722 -0.716637 -0.534578 -0.519396 0.111467 0.312141 -0.460186 -0.87178 -0.628649 0.0189206 0.0561359 0.763853 0.121183 -0.512674 -2.30761 -4.74048 -3.0812 0.360769 0.739338 0.452993 0.326539 0.101576 1.23864 0.502164 -0.383712 -1.77892 0.26823 2.67942 1.16502 0.852192 1.15054 0.395275 -0.14584 1.3269 0.367536 -0.78771 -1.03279 1.75512 1.50567 0.334133 0.257651 0.614624 0.199368 -0.178295 0.593045 -0.189197 -0.51876 -0.159671 1.11411 0.569399 0.171704 -0.0136835 -0.109606 -0.291163 -0.0839 -0.296482 -0.410207 -0.45081 -0.0224028 0.199426 0.0642595 -0.0613328 -0.10155 -0.423838 -0.304143 0.210386 -0.556209 -0.211062 0.00932992 0.203708 -0.171913 -0.07998 0.101021 0.207991 -0.277477 -0.335414 0.408956 2 1 -18.2955 2.06602 11 11 5 -0.196495 -0.501269 -0.542596 -0.0304089 0.34746 0.549047 0.271931 -0.122097 -0.279228 0.0756396 -0.130507 -0.0675801 -0.149162 -0.481187 -0.686882 -0.16691 0.172778 0.515702 0.0915386 -0.347953 -0.309466 -0.375048 0.0226581 -0.388063 -0.2903 -0.0327637 -0.682392 -1.1466 -0.0404828 0.243691 0.0559107 -0.172934 -0.472153 0.398698 0.0414724 0.328756 0.11528 -0.273025 -1.40912 -0.850701 0.272756 0.650822 0.0217847 -0.321449 0.326836 0.239311 -0.185106 0.510329 2.49763 1.25205 -0.833364 0.456992 0.895959 0.230342 -0.318701 0.131504 0.0482372 -0.151684 -0.120104 -0.942965 2.12355 1.90968 0.378301 0.47676 0.168249 -0.33683 -0.249602 -0.0311714 1.00846 0.219743 3.1836 2.84795 -1.04205 -1.31594 -0.376077 0.326858 -0.107866 -0.665562 -0.181943 -0.245276 0.49749 1.14209 -2.21423 -1.42971 -0.990974 -0.270649 0.552563 -0.00527315 0.318002 0.248378 -0.102093 -0.221542 -0.824649 -2.12074 -0.599991 -0.0352745 0.193918 0.494589 -0.233501 -0.0188552 0.135709 0.153997 0.193042 -0.252458 -0.819584 0.2835 0.0857105 0.171918 -0.01224 -0.37686 0.377834 0.475286 0.321925 -0.00370667 -0.609458 -0.277982 0.301049 -0.068181 0.194749 -0.214097 -0.276967 2 2 -21.786 2.67134 11 11 5 -0.297493 -0.36898 0.184102 0.383321 -0.144578 -0.590795 -0.73085 0.505024 0.878454 0.559701 0.512129 0.625442 0.389692 0.244811 0.205509 0.0931262 -0.116978 0.206128 0.54056 0.867548 0.293301 0.0860056 0.545045 0.31716 0.336168 0.282009 -0.203496 -0.197572 -0.248481 0.448012 0.309349 0.169478 -0.22491 0.209595 0.143986 0.975474 1.25186 0.695475 0.0136784 -0.687171 -0.543234 -0.196976 -0.0704421 -0.226197 -0.560244 -0.52719 0.556906 1.55825 2.50306 0.716635 -0.332615 -1.04853 -0.64062 0.00415129 0.244406 -0.43147 0.00841658 0.276163 -1.39452 -4.74234 -3.76939 -0.842211 -0.27883 -0.33184 0.0887794 0.0783478 0.887825 0.929972 0.0435739 -2.4692 -1.24327 -0.178231 -0.537657 0.217086 0.568434 0.310116 -0.224499 2.07215 1.07603 -0.466704 -1.52036 0.213435 0.267382 -0.300376 0.222528 0.862158 0.642766 -0.187116 1.3626 0.729344 -0.510836 -0.389392 0.0409913 0.238611 0.452592 -0.0364063 0.354485 0.0400937 -0.0412387 0.567086 0.128222 -0.332076 0.102395 -0.25297 0.10697 0.0209026 0.0310925 -0.374614 -0.159812 0.338769 0.0344881 -0.170934 -0.298778 -0.3115 -0.642725 -0.266712 -0.406942 -0.115125 -0.182837 -0.116228 0.315112 3 11 11 3 2 0 -19.1374 2.30291 11 11 5 0.139652 0.393728 -0.186694 -0.625826 -0.172979 1.10235 1.0249 0.843782 0.681201 0.524392 0.877571 0.266636 0.124764 -0.163141 -0.685041 -0.713692 0.570204 0.440549 -0.227074 -0.480361 -0.958301 -0.28935 0.853315 0.273617 -0.21473 -1.26076 -1.47068 0.037043 -0.624276 -0.264769 -0.0814021 -0.955262 -0.832523 1.39436 0.69361 -0.219027 -1.67171 -2.43471 -1.55453 -1.47199 -0.150096 1.03573 0.436381 -0.309537 0.921524 0.65912 -0.191683 -1.36036 -2.31347 -2.29009 -1.17596 -0.434831 0.646364 1.15392 0.956663 0.677077 0.85169 0.870438 -0.0584168 -0.203341 1.09634 2.27023 1.08605 -0.10205 -0.0171531 0.847731 -0.158955 0.439206 0.453954 0.500132 0.661524 1.19699 1.37279 0.782946 -0.246802 -0.808093 0.0947153 -0.782683 -0.746285 -0.224616 -0.10686 -0.482537 -0.198731 0.215557 0.207861 -0.372609 -0.706467 -0.0704156 -0.571804 -0.738883 -0.450521 -0.139553 -0.0370188 0.0490685 -0.170411 -0.2167 -0.487791 -0.64794 0.147943 -0.710561 -0.626219 -0.379094 -0.167154 0.32477 0.225065 0.172634 -0.0228968 -0.437565 -0.432816 0.341364 0.442327 0.299837 0.467085 0.64066 0.825131 1.20155 1.5455 0.992216 -0.232121 -0.0867698 0.274884 2 1 -15.4266 2.1574 11 11 5 -0.457932 0.383396 0.0679109 -0.668532 -0.773121 -0.83416 -1.86135 -0.972341 -0.0747328 0.280189 -0.654081 -0.0280889 0.46786 0.0999518 -0.519138 -0.131681 1.53659 0.509341 -1.21098 -0.910821 0.565116 0.253899 -0.11655 0.327285 0.252853 0.53496 0.903811 2.20359 1.23215 0.958225 -0.38767 0.496925 0.850075 -0.514825 -0.138296 -0.018317 0.591066 1.39753 1.95077 0.954986 1.91069 0.150877 -0.0891885 0.527313 -0.165479 0.380475 0.0795438 0.0119826 0.601856 0.148406 -0.234957 1.77265 0.465059 -0.555479 -0.102846 0.446806 -0.197797 0.086396 -0.123607 0.988911 0.559385 0.52367 -0.189969 0.426822 -0.600861 -0.420564 0.213573 0.187451 -0.236205 -0.508862 -1.09199 -2.50447 -2.26215 -2.13584 0.120694 0.107151 0.032513 -0.125654 0.27912 0.0466175 -0.0466431 -0.960818 -0.667637 -0.823666 -1.39818 0.00104431 0.44279 0.118434 0.385584 0.36097 0.665684 -0.147536 -0.0987501 -0.376688 -0.460397 -0.4753 0.170795 -0.042867 -0.295486 0.786446 0.629927 0.122047 -0.216457 -0.669049 -0.337417 0.0404668 0.205695 0.210245 -0.456297 -0.28411 0.101373 0.343317 -0.0861628 -0.811892 -0.917396 0.0257495 -0.139585 0.603467 0.132635 -0.146895 -0.55532 2 2 -13.3878 0.901031 11 11 5 0.910719 1.13883 0.546663 0.228433 0.153309 0.408168 -0.38134 0.072077 0.640229 0.288223 0.816783 0.345243 0.754847 0.608988 0.599296 0.0152831 1.07137 0.334888 -0.122777 -0.121224 -0.166071 -0.00156344 0.326885 0.570714 0.700667 0.0526655 0.0130888 1.04989 -0.0494544 -0.598387 -0.127108 -0.647108 -0.703423 0.256472 0.50214 0.852623 -0.618094 -1.02365 -0.597061 -0.668255 -0.794911 -0.0113335 -0.103709 -0.833108 0.601309 0.688087 0.324989 -1.15799 -2.16362 -2.78084 -1.32002 -1.34179 -0.247888 0.589098 0.139271 1.77136 1.74626 0.676205 -0.802666 -1.22323 -1.5883 0.23681 -0.148646 -0.338442 0.235778 0.488883 1.6636 1.35355 0.753118 0.297805 -0.000619135 0.455752 0.229943 0.468111 0.273409 0.00530322 0.323181 0.585542 0.142904 0.450221 0.109698 -0.816446 -0.397352 0.145825 0.25928 0.233631 -0.346279 -0.860268 0.453688 -0.0200386 0.144804 -0.206981 -0.239649 0.242669 0.320094 0.121096 -0.0226966 -0.513425 -0.232063 -0.453757 -0.443443 -0.0694263 -0.456186 -0.227205 -0.0424542 -0.601577 -0.417348 -0.0447871 -0.229355 -0.100568 -1.05168 -0.869577 -0.646685 -0.497498 -0.91562 -0.0848817 0.146843 0.528816 0.218293 0.340917 0.465254 3 11 11 3 2 0 -18.4892 1.84389 11 11 5 0.811475 0.863103 0.447435 -0.245498 -0.356095 -2.09445 -0.622874 0.425789 -0.0649087 -0.084248 0.901833 0.506115 -0.0644304 1.21327 0.0972051 -0.137648 -1.02594 -0.105421 -0.656847 -1.06441 -0.891839 0.298345 -0.301747 -0.474153 0.785099 0.464495 -0.528223 -0.695514 -1.20969 -1.68043 -0.820886 -0.152587 0.51558 -0.561968 -0.611412 -0.12488 0.0151856 0.0986047 0.381657 -1.70907 -1.80381 -0.567368 0.0781041 0.383326 -0.224811 -0.285962 0.0592212 1.47823 2.88826 -0.654607 -2.09003 -0.893574 0.334193 0.114177 0.0867756 0.278502 0.0583339 0.590047 0.921103 -0.111373 0.0129312 0.987789 1.51424 1.65668 0.796409 -0.313198 0.657001 -0.714374 -1.72306 -1.42557 -0.338675 0.741805 0.505226 0.798306 0.599237 -0.0362703 -0.435775 0.471305 -1.15143 -2.08013 -1.27913 -0.53401 0.499136 0.75282 0.378544 0.0428643 -0.431219 -0.577478 0.719013 -1.00507 -1.38357 -0.95481 -0.0690941 0.709368 1.01572 0.995642 0.0903419 -0.380681 -0.256228 1.09368 -0.452069 -0.585971 -0.379283 0.210051 0.561703 0.807641 0.899923 0.278117 -0.142543 0.141305 1.40189 0.656847 0.654186 0.814806 0.796273 0.561733 0.471889 0.268286 0.174418 0.0440764 0.689674 2 1 -11.6848 1.67412 11 11 5 -0.326836 -0.3218 -0.737648 0.595958 0.297729 -0.803726 0.871074 0.603968 0.270687 0.133311 -0.929636 0.353249 -0.53127 -0.47088 0.200943 0.396829 1.01561 1.60254 1.02971 0.733929 0.803794 -0.0302069 0.746682 -0.584338 -0.137204 0.969264 0.932681 0.817812 -0.13877 -0.564858 1.2163 1.67043 0.552844 1.20423 0.403291 0.206493 0.724086 0.531703 -1.3165 -2.09355 -0.416204 0.824607 1.64946 0.763778 0.504855 -0.0320166 -0.25286 -0.0967483 -0.232487 -0.775538 0.636337 1.52361 0.315291 0.0824261 0.993461 0.0198742 0.41824 -0.115393 0.122181 -0.26265 -0.613578 -0.281042 0.0617418 -0.501846 -0.337432 -0.151887 -0.831355 0.0135331 -0.768418 -0.556949 0.201433 0.000915158 -0.55658 -1.26908 -1.94343 -1.52367 -0.473826 0.112741 0.561121 0.311678 -0.0460681 0.602611 0.265921 0.0773314 -0.744097 -0.553944 -0.277253 -0.372502 -0.210597 0.309622 0.596062 0.195123 0.105438 -0.394821 -1.02743 -0.64429 0.216026 0.339144 -0.0550751 -0.817903 -0.0115399 0.454102 0.428123 0.391855 -0.534827 -0.709599 0.00120298 0.620095 0.263197 -0.177269 -1.61612 -0.767438 -0.927336 -0.504945 -0.237348 -0.310885 -0.622625 -0.12259 0.0832558 0.105032 -0.389833 2 2 -14.6614 0.922968 11 11 5 1.35167 1.45051 0.668674 0.255538 0.520964 -1.37973 -0.35036 0.689429 0.505971 -0.135364 0.180775 1.66415 0.319318 0.86453 0.389249 0.474463 -0.380125 0.461758 -0.016744 -0.173005 -0.90272 -0.386779 0.936641 0.677488 0.376727 0.531476 -0.675242 -0.155048 -0.3765 -0.66165 -0.203333 -0.477691 -0.603123 0.223419 0.0930835 -0.4714 -0.567112 0.283309 1.14775 -1.24731 -1.5663 -0.969736 -0.149083 -0.5818 0.667715 0.321296 -0.0586894 1.86124 2.9659 -1.28476 -2.54472 -1.72926 -1.05852 -0.182057 -0.450149 0.486421 0.752472 1.39954 1.26785 -0.0774635 -0.873381 0.1015 0.171613 -0.369534 -0.0711956 -0.206174 0.843577 0.672578 -0.101967 -0.498 0.749841 1.09452 -0.274424 0.064685 -0.220955 0.0844906 -0.0718523 0.693936 0.269534 -0.979551 -0.663036 -0.382168 -0.0510672 -0.0152379 -0.345037 -0.114393 -0.220974 -0.587366 0.254568 -0.364317 -1.22647 -0.931355 -0.149668 0.0702286 0.1001 0.353422 0.100563 -0.175629 -0.854051 0.811927 -1.04205 -0.890855 -0.826738 -0.437864 -0.0734573 0.258798 0.387363 0.375062 -0.098016 -0.513352 0.291659 0.0903133 -0.0952483 -0.163388 -0.255703 -0.0805285 0.373642 0.443948 0.828685 0.481704 0.283109 3 11 11 3 2 0 -19.7968 2.11753 11 11 5 -0.613137 -0.997785 -0.177752 1.91831 0.601934 -0.0888105 1.43361 -1.18018 -1.1954 -0.622936 0.307875 -0.451711 -0.309453 -0.774354 0.895447 0.449431 -0.209613 0.806008 -0.591478 -0.334193 -0.511157 -1.34801 -1.40473 -0.345145 -0.458192 0.169765 0.218433 -0.572479 -0.144459 -0.371714 -0.0909717 -1.33237 -1.42004 -1.70058 -1.01661 0.811104 0.909314 0.0530128 -0.408284 1.10599 1.9171 -0.451268 -2.27721 -1.5053 -1.49183 -1.09119 -0.192299 0.913933 0.55088 -0.0978281 0.868896 0.353716 -0.843399 -1.05759 0.0291796 0.29471 0.809414 1.01642 0.16549 -1.12484 -0.895007 -0.331386 1.01547 1.2285 0.981088 1.22091 0.197512 1.03859 1.17391 0.292969 -1.56349 -2.11225 -1.43829 0.0386821 0.633977 0.688411 0.662736 0.425587 0.946883 0.637113 -0.225843 -1.48173 -1.9018 -0.995264 0.272637 0.889326 0.938526 0.646071 0.914292 1.40765 0.996223 -0.111377 -0.931415 -0.97737 -0.238106 0.464466 1.06062 1.07854 0.699231 0.748159 0.928629 0.648067 -0.0953198 -0.363477 -0.226544 0.303222 0.269046 0.571202 0.557915 0.222474 -0.266635 -0.374076 -0.0560709 -0.105681 0.0714484 0.242995 0.570254 0.58426 0.595499 -0.000196842 0.0326508 2 1 -12.1977 1.98737 11 11 5 0.526031 -0.0471984 -0.601736 0.402411 -0.665803 -0.478432 0.841295 -0.00519113 0.616566 0.93373 0.99303 1.35358 1.27935 0.565514 0.0786898 -0.288735 -0.479484 1.08682 0.966283 0.992792 0.563984 0.916058 0.316569 -0.0535299 0.733162 0.827029 -0.146049 -0.507833 1.32391 1.09205 -0.136858 -1.05683 0.926589 0.055016 -0.905615 -0.239494 0.787665 0.588934 -1.05643 0.705656 -0.430218 -1.02683 -0.801755 1.6511 0.419979 0.605633 -0.174614 -0.640848 0.396067 -0.0464912 0.929682 -0.00474532 -0.216904 0.939963 1.81102 0.148289 -0.112897 0.534492 1.05544 0.259132 -1.04387 -0.846118 0.357538 -0.320344 0.117741 -0.447957 -2.57938 -0.856291 -0.0733341 0.326088 0.209339 0.202988 0.200722 0.137598 -0.21372 -0.495367 -1.61294 -1.78584 -0.233724 0.584215 0.25483 0.112729 0.516222 0.592174 0.686954 -0.0734875 -0.793663 -0.88801 -1.41288 -0.808846 -0.274349 -0.206036 0.375273 0.508861 0.704289 0.292581 -0.869375 -1.10323 -0.546734 -0.73616 -0.576426 -0.777889 -0.426307 0.452745 0.253253 0.33141 0.288269 -0.213229 -0.6398 -0.0117242 -0.483197 -0.728388 -0.64749 -0.246015 -0.147849 -0.915585 -0.85414 0.2118 0.0769842 -0.635462 -0.368495 2 2 -15.7827 1.33201 11 11 5 -0.195842 -0.404173 0.113379 2.22972 0.606524 -0.102243 1.79155 0.0433438 -0.699772 -0.114409 1.32 -0.362155 0.151026 -0.0650191 1.19909 0.788084 -0.179726 0.7476 0.0932774 -0.13011 0.115637 -0.264871 -0.422653 0.251953 -0.265762 0.309235 0.331921 -0.0987342 -0.578838 0.118865 0.548254 -0.446459 -0.874176 -1.36322 -0.612466 0.555194 0.79864 0.151329 -0.609949 1.65249 2.34911 -0.276056 -1.86597 -2.16761 -1.53709 -1.21193 -0.351724 1.68377 1.14865 0.350348 0.706776 0.228064 -1.67407 -1.39878 -1.51048 -0.781789 0.176899 0.250609 0.210332 0.108397 0.947699 0.0539621 0.54839 0.89896 0.107885 -0.592414 -1.02945 -0.126707 0.617839 1.18291 0.221056 -0.631498 -0.816714 0.531169 0.267048 -0.418651 -0.785951 -1.35031 0.118173 0.214756 0.587696 -0.674168 -1.23958 -1.36894 0.160667 0.27245 -0.194868 -0.384382 -0.502166 0.381138 0.84788 0.077468 -0.39839 -1.05657 -0.51471 -0.16899 0.186552 0.324431 0.133071 0.51931 0.549243 0.766981 -0.428415 -0.661935 -0.628837 -1.02719 -0.773556 0.33728 0.450973 0.192353 1.39574 0.644023 0.518803 -0.0747946 0.271466 0.114381 0.191995 -0.106085 0.428077 0.0226012 0.306871 3 11 11 3 2 0 -18.9245 2.11894 11 11 5 1.29816 -0.198218 0.103886 -0.499408 -1.68668 0.0938909 0.574384 1.14376 0.830131 0.346879 -0.746036 0.463242 -1.37843 -0.571168 -0.0913502 -0.567413 -0.410993 0.0691516 1.19891 0.202868 0.157399 -0.853735 0.771495 -0.986916 -1.24995 -1.17801 -0.771818 -0.763905 -0.472198 0.952939 -0.150406 -0.0708403 -1.35531 1.03056 -0.514228 -1.26492 -1.18264 -0.824697 1.19602 0.0409729 -0.435024 -0.345761 0.206088 -1.16857 0.341292 -0.306816 -0.740261 -1.26299 -1.79734 -0.116141 2.44749 1.26395 0.616592 0.804962 -0.435078 0.108692 0.137512 0.76803 0.985617 1.22043 0.290882 -0.578321 -0.391735 -0.348277 -0.198777 0.0324686 0.206301 0.208247 0.413614 1.10188 1.18328 1.0174 -0.199488 -1.80191 -2.04121 -0.929058 0.383465 -0.300874 -0.588925 0.0338662 0.846995 1.14244 0.441186 -0.661224 -1.70024 -1.9501 -1.08311 0.613951 -0.401313 -0.511464 0.0120616 1.1318 1.59069 0.85087 -0.303317 -0.975159 -1.01552 -0.39856 1.09246 -0.0238034 -0.597953 -0.0163202 1.01612 1.38746 0.729371 -0.0606519 -0.284729 -0.320208 0.509957 1.34887 -0.0803317 -0.459243 -0.339027 0.228778 0.33333 0.0805845 0.266032 0.68022 0.912173 1.4287 2.06718 2 1 -11.4157 1.55034 11 11 5 -0.993846 -1.05385 -0.0011439 0.807715 -0.417297 -0.357323 0.200654 -0.475886 -0.243072 0.456702 0.315176 -0.167747 0.480824 0.954229 1.50259 1.35532 -0.00474442 -0.25773 -0.077456 0.158427 -0.0139772 1.36558 0.0582269 1.37717 0.494092 -0.0882129 0.357209 0.603974 0.51177 0.126016 -0.0551223 0.582252 1.97613 0.971012 1.7049 0.104046 -1.58571 -1.62892 0.119978 0.842356 -0.0624714 -0.409731 0.261097 0.575294 1.51019 0.494671 -0.669525 0.739023 -0.099896 -0.400772 0.116474 0.0890338 -0.115985 -0.00307156 0.13316 1.26376 -0.468608 -0.425989 -0.158855 0.0636684 0.136826 0.678445 -0.181654 -1.05333 -0.412822 -0.865992 0.646569 -1.21265 -2.32317 -1.56873 -0.611618 0.110377 0.422035 -0.0822616 -0.259762 0.678375 0.140458 -0.347664 -1.13426 -1.16453 -0.745871 0.134504 0.497406 -0.0172427 -0.233087 0.457054 1.32642 0.853589 0.0305325 -0.189442 -0.45256 -0.499887 -0.628275 -0.35685 -0.217637 0.0783461 0.290561 0.670559 0.0445964 0.276229 -0.101914 0.00158869 -0.181442 -0.365249 -0.745773 -0.35114 0.0982079 0.0099363 0.148 -0.453156 0.276855 -0.21468 0.0479694 -0.0307412 -0.260901 -0.713855 -0.366861 -0.0291772 -0.51195 -0.690398 -0.914751 2 2 -12.9794 1.09342 11 11 5 1.35209 0.26047 0.114744 -0.0552608 -0.788414 0.629071 1.10503 0.296449 0.687024 1.37705 0.815198 0.078853 -0.284715 0.072151 0.164339 0.128861 0.0373206 0.595771 1.00249 -0.0820823 0.671606 0.705836 0.0131042 -0.29444 -0.519204 -0.598057 -0.402187 -0.701249 0.0703051 1.05617 -0.00369327 -0.105182 0.198028 0.0224525 -0.0576082 -0.423016 -0.778736 -0.826371 0.438444 -0.457104 -0.931984 -0.321209 0.729116 1.30792 0.00384053 -0.194717 -1.02134 -1.63153 -2.24078 -0.452289 2.8244 1.17196 0.626753 0.699188 -0.10488 0.206572 0.231063 -0.34493 -0.251414 0.305895 -0.500752 -0.207254 0.837438 0.834825 0.0717582 -0.121111 0.623162 0.24591 -0.444291 -0.0905931 0.238963 0.98473 0.489725 -0.258318 -0.749283 -0.103149 0.38523 0.258598 0.00206365 -0.903073 -0.36239 0.00108819 -0.0309063 -0.204947 -0.751223 -1.60373 -1.13642 -0.518408 -0.122038 -0.32099 -1.04609 -0.238809 0.680321 0.320285 -0.0473683 -0.671705 -1.30352 -1.21746 -0.292216 0.424096 -0.70041 -0.420322 0.893581 0.97418 0.427007 -0.822196 -0.731 -1.15181 -1.0663 -0.619111 0.398696 0.27532 0.252288 1.25926 1.23053 0.707049 -0.0948474 0.139303 -0.424113 -0.05526 0.248887 3 11 11 3 2 0 -20.6662 2.59095 11 11 5 1.6658 1.2769 1.20912 0.441389 0.390919 -0.237631 -0.801988 0.0111332 1.06862 0.313377 -0.199664 -0.700934 -0.92718 -0.181547 0.556744 0.76533 -0.984518 -1.30538 -0.411074 0.582439 0.29446 -0.200339 -1.79829 -1.32354 0.354359 0.179607 -0.0409332 -1.19199 -1.78498 -0.638799 0.307762 1.16692 0.5939 -0.46434 0.429757 0.963238 -0.310831 -2.15365 -1.87545 -2.3313 -0.665892 0.28142 0.917725 0.242352 1.49069 1.66441 0.499402 -0.885338 -1.84246 -2.31039 -1.06861 0.0888776 0.215 0.317828 0.382309 1.95005 0.785159 -0.0722385 0.268014 1.43112 0.468607 0.418002 0.607752 0.920596 0.396983 -0.567246 0.743049 -0.840652 -0.335328 0.712918 1.01261 0.516158 0.28553 0.892416 0.530379 -0.329996 -1.20563 -0.127658 -1.26093 -0.619403 0.507703 0.525663 0.0803422 -0.510714 -0.0703196 -0.199444 -0.494235 -0.82259 -0.115246 -1.02249 -0.913118 0.0349987 0.184298 0.330494 0.132036 -0.28394 -0.443454 -0.656395 -0.925197 0.509901 -0.4922 -0.799684 -0.0850994 0.0435897 0.496102 0.337832 0.188567 -0.426348 -0.644189 -0.604582 0.459068 -0.196146 -0.481946 0.0434891 1.10218 1.54013 1.30297 0.93784 0.805532 0.863139 1.14645 2 1 -16.9703 2.13508 11 11 5 -0.849474 0.221084 -0.0522756 -1.69846 -1.68859 -0.342768 -0.564568 0.0846328 -0.0327479 -0.02385 -0.0874304 0.986889 0.439687 -1.58594 -1.43193 1.32689 0.81533 -0.48014 -0.0152916 0.106868 0.0228741 0.368927 1.10187 -0.785525 -0.819683 0.887425 2.08405 1.98263 0.31001 0.375691 0.069594 -0.36769 -0.0107137 -0.102513 -0.822197 -0.051262 1.99305 1.14794 1.8809 0.205449 0.580635 -0.193332 0.108603 -0.264414 -1.113 -0.552496 0.937271 2.11778 -0.726641 0.0198431 0.113258 0.0549147 0.652632 0.38584 0.689199 -1.36552 -0.177151 1.16434 0.542935 -0.173546 0.111015 0.399312 -0.784344 0.171975 0.254144 0.0265885 -0.706154 -0.107348 0.928698 -0.638085 -1.90442 -2.27518 -1.49902 -0.138257 0.191241 0.237348 0.226488 0.000469587 0.591706 0.600967 -1.40597 -1.29469 -0.689116 -0.390753 0.182191 0.407074 -0.115864 0.25415 0.11037 0.357129 0.644678 -0.253612 -1.07295 -0.513772 -0.0159584 0.354841 0.303818 0.277321 0.793918 0.400361 0.182334 0.473701 0.771494 -0.361273 -0.383372 -0.693086 -0.290634 0.0394324 0.375999 0.894839 -0.127721 -0.047993 -0.167046 0.649209 -0.220053 -0.461974 -0.403017 -0.800311 -0.547101 -0.243382 -0.0603075 2 2 -14.7078 1.28343 11 11 5 0.971499 0.910684 1.11785 0.5799 0.0611907 0.422888 -0.244864 0.277826 1.32987 0.743499 0.329602 -0.0921064 -0.0319087 -0.0670432 0.343358 0.811589 0.43663 -0.533112 0.0177264 0.366408 0.442739 0.597904 -1.35307 -1.54855 0.394001 0.421268 0.607465 -0.00529606 -1.00701 0.310359 0.712867 0.501315 0.401406 -1.249 -0.122391 0.621162 -0.254094 -0.490083 -1.2713 -2.13725 -0.796787 0.652059 1.13171 0.248475 0.317115 0.906892 -0.200158 -1.29556 -0.996496 -1.94204 -1.84554 -1.15947 0.684157 0.720588 1.40873 1.59251 0.577328 -0.229586 -0.297307 -0.0469708 -0.74418 -1.22148 -1.29388 0.520365 1.29149 1.63639 1.28993 0.10852 0.243977 0.371548 0.786683 1.21036 -0.65538 -0.175816 0.371419 0.429485 0.498104 0.397167 -0.222791 0.0067076 0.76904 0.500768 -0.316861 -0.715081 -0.911155 0.0339916 0.0448537 0.0722832 -0.0393512 -0.182726 -0.135876 0.128557 -0.0532564 -0.165156 -0.152331 -0.361237 -0.229056 0.108056 -0.255341 0.560057 0.00183976 -0.373151 -0.240919 -1.18082 -0.50319 -0.0717298 -0.0783133 -0.545757 -0.637327 -1.22937 0.709787 1.0248 0.175645 -0.254839 -0.00552896 -0.0585563 0.211771 -0.111043 -0.510462 -0.73666 -1.88848 3 11 11 3 2 0 -21.3466 2.91151 11 11 5 1.28611 0.723397 0.47716 -0.544329 -1.21435 -0.407499 1.29381 1.86227 1.25143 -0.175145 -1.59515 1.11685 0.799152 0.514904 -0.17106 -0.446761 0.234915 0.997854 0.808534 0.21248 0.272887 -0.139209 0.337703 -0.334023 -0.649448 -0.815443 -0.219546 0.524248 0.717579 -0.14975 -0.369299 0.373079 0.768407 -0.499348 -0.996287 -0.577856 0.257922 1.03239 0.807176 0.484935 0.292658 0.392493 0.0100011 -0.0626292 -0.0135005 -0.0669764 0.478792 0.868825 0.401204 -0.271295 -0.919315 -0.389889 -0.118868 -0.80994 -1.58503 0.598643 -0.719682 -1.30379 -1.31628 -1.97732 -3.25583 -1.83432 0.406598 0.438056 0.0418724 -0.273463 0.851964 -1.01099 -1.84035 -0.540331 0.725713 0.595711 1.12777 1.12023 1.2792 0.464429 0.0438209 0.543063 0.210522 -0.0856918 -0.619608 -1.16957 -0.458223 0.560282 0.584789 0.69789 0.16154 -0.334634 0.273202 0.78736 1.36809 0.125205 -1.26859 -0.515475 0.328741 0.405739 0.226843 -0.193368 -0.223307 0.132417 0.498209 1.02846 0.716434 -1.13328 -0.727194 -0.0905665 0.0963 -0.0844201 -0.208256 -0.270748 0.0814137 0.40691 0.885442 0.75291 -0.658512 -1.24503 -0.798685 -0.295191 -0.156598 -0.16788 0.154176 2 1 -16.1253 1.64289 11 11 5 -0.132267 -1.01674 -0.218747 -0.0766051 -1.00014 -0.360383 -0.0166496 -0.863747 -0.562568 -0.0195081 -1.15155 0.537577 0.176942 -0.0769858 -0.617322 -0.609284 0.474418 -0.150631 -1.07558 -0.638904 0.167753 -0.979254 1.3218 -0.254329 -1.50083 -1.54113 -0.315476 -0.333696 0.224393 0.318168 0.323381 0.159492 -0.242642 0.576979 -0.479254 -0.657831 -0.373155 -0.955826 -0.849622 -0.160293 0.392164 0.0490924 0.326134 0.878432 -1.29305 0.280034 0.592918 0.581239 1.18895 1.28397 0.779121 0.0780309 0.380109 -0.448242 1.09328 0.497713 0.903392 0.116387 -0.454038 -1.67171 -1.05766 -0.063062 -0.421262 0.27426 0.0159702 1.74694 1.15201 1.77246 0.518594 1.09108 2.03264 0.454615 0.832189 0.325157 0.618956 0.391157 0.645907 -0.202387 0.693456 0.836967 0.634176 -0.120648 -0.20229 0.229411 0.122853 0.0364925 -1.04017 -0.0450976 -1.06471 -1.59409 -0.313838 0.201915 -1.01179 -0.926026 -0.292041 -0.174809 -0.303407 -0.126106 0.268185 -0.802742 -1.43121 -0.964868 0.345181 0.448321 -0.244238 -0.122993 -0.276198 -0.499335 0.0515405 0.372199 -0.0868486 -0.870159 -0.524145 1.35635 1.25623 0.530218 0.351572 0.0911678 0.467149 0.742612 1.27027 2 2 -15.3144 2.12835 11 11 5 0.249697 0.0734169 0.0913303 -0.613732 -1.58636 -1.86041 0.354503 1.072 0.191765 0.0218348 -1.47875 1.2748 1.11166 1.30533 0.206665 -0.976159 -0.534684 0.677748 1.2524 0.9519 0.610023 -0.317413 0.775639 0.0231839 0.304886 -0.888115 -0.798562 0.32498 0.420389 0.289409 0.516446 0.265913 1.03293 0.138751 0.0443738 -0.599257 0.164967 1.25344 1.32802 0.469684 0.303724 0.626698 0.986952 1.63441 -0.163937 -0.303776 0.179886 1.14154 2.17968 0.613902 -0.180319 -0.579568 -0.1761 -0.363184 -0.113262 0.0889496 -0.0339043 -0.344405 -0.596983 -1.23044 -1.50814 -1.37531 -0.589894 -0.614081 -0.803585 -0.609621 0.0446546 -0.973482 -1.39299 -0.282253 1.07318 0.240545 0.295963 -0.29367 0.236531 0.117693 0.437592 -0.121333 -0.503507 -0.786319 -0.709245 -0.781452 -0.462111 0.356768 0.404661 0.416795 0.220705 0.0814983 0.178825 0.148265 0.379407 -0.208492 -0.896146 -0.141594 0.448471 0.535857 0.168777 -0.140816 0.203921 0.185825 0.171069 0.452971 0.401836 -0.578753 -0.837289 0.4332 0.257415 -0.183426 -0.0390642 -0.198992 0.0809514 -0.269575 -0.164094 0.171907 -0.457516 -1.16981 -0.586396 -0.252717 -0.0148214 -0.471759 -0.541505 3 11 11 3 2 0 -20.9609 2.18415 11 11 5 0.59004 -2.06441 -1.30781 1.32461 1.74281 1.13817 0.299743 -0.942077 -1.13806 0.204016 1.77997 1.08282 -0.459559 -0.229267 0.961039 0.612742 0.544872 0.71172 0.248914 -0.314998 0.0834199 0.424098 0.00858689 -0.480961 -0.125842 0.516039 -0.899547 -1.44155 0.114499 0.897976 0.196455 0.0311406 -0.330558 0.216907 0.622586 0.700273 0.656632 0.372926 0.94359 0.563846 0.302926 0.573454 0.705385 0.329487 0.238463 0.428561 0.110745 -0.0874589 -0.0866558 1.17527 -0.935452 -0.875012 -1.04758 -0.811446 -0.796079 -0.605535 -0.663635 -0.870153 -1.43085 -1.76985 -3.16291 -0.285197 0.211643 -0.0752292 -0.759554 -1.24658 -0.897539 0.106975 0.624958 1.26662 2.971 0.28742 2.56088 1.39838 -0.153077 -0.693421 -0.686871 -0.577882 -0.558951 -0.51081 0.276363 0.397249 -0.517817 0.589061 0.807432 -0.37795 -1.0415 -0.0808913 0.230911 -0.548869 -0.0671371 0.471053 0.211411 -0.170689 0.0177175 0.463951 -0.220471 -0.88908 0.0290171 0.0482916 -0.947745 -0.166463 0.158375 -0.527284 -0.599632 -0.512267 0.140339 -0.0466117 -0.567948 0.113141 0.641622 -0.404569 0.265713 0.479072 0.0532725 -0.461551 -0.257984 0.183024 0.161752 -0.0753364 1.18279 2 1 -17.037 1.37999 11 11 5 -0.716743 -0.71943 -0.900216 0.068336 -0.860571 -1.07592 0.96597 -0.116928 -1.00149 -0.24818 0.69214 -0.579804 -0.72396 -0.734653 0.814162 -1.25488 -1.72936 0.790559 0.340088 -1.19061 -1.77559 -0.981252 -1.90101 -0.600139 0.0654361 0.349374 -0.268103 -0.584435 1.22651 0.26434 -0.979576 -0.987143 -1.0829 -0.554728 0.0876696 -0.771969 -0.388115 -0.176493 -1.22903 0.734488 0.0190634 0.0201024 0.711628 2.07201 0.757956 0.973104 0.551411 0.199605 0.451798 0.965541 0.00358881 -0.617831 0.126752 0.232888 1.18285 0.0334149 -0.831001 -1.00609 -0.768445 1.1062 -1.01791 1.09653 0.0944113 -0.310918 -1.08096 1.44146 0.734908 0.318455 1.56428 1.62913 0.908816 -0.36862 0.369294 0.58186 0.615539 0.621851 1.90481 0.805246 0.11001 0.547327 -0.131201 0.770829 -1.0411 0.318771 0.118592 0.152798 -0.407594 1.14037 -0.252 -1.02288 -0.750196 -0.498496 0.484798 -0.540654 0.106281 -0.0757969 -0.359571 -0.699842 0.238992 -0.321279 -0.460591 -0.028971 -0.0493557 -0.211437 -0.794885 -0.303749 -0.120135 0.0950188 0.0573884 0.355972 0.834392 0.682581 0.0053624 0.21127 0.0869735 -0.0158389 0.140061 0.637948 0.867672 0.815502 0.948153 2 2 -18.5871 2.46441 11 11 5 -0.428613 -2.506 -1.58075 1.10422 0.788171 0.209426 0.413916 -0.702494 -1.71238 -0.723991 0.933534 0.7438 -1.03154 -0.879654 1.08995 1.57444 1.14176 0.672062 -0.215984 -0.817813 -0.0606953 0.80278 -0.449607 -0.790823 -0.114569 0.853438 -0.207433 -0.881993 0.340898 0.615635 -0.0541349 -0.156664 -0.0102001 -0.174114 0.434546 0.931989 0.937195 -0.0245435 0.976644 0.817072 1.3139 1.17986 0.948973 0.636845 -0.118646 0.762851 1.00019 0.790828 0.946593 0.999117 -0.56566 -0.580442 -0.294451 0.454121 0.662101 -0.0662826 -0.35889 -0.94694 -1.66703 -0.946923 -2.04968 -0.57627 -0.419685 -0.23878 -0.238034 -0.448319 -0.495357 0.773275 0.717933 -0.0523689 1.11832 -0.597414 0.861079 0.741965 0.129042 -0.163144 -1.4009 -0.763258 0.194028 -0.366767 0.386956 0.455275 -0.0679798 0.304869 0.684814 0.243577 -0.421341 -1.1521 -0.0801034 -0.236904 -0.0540696 0.433348 0.441252 0.151345 -0.0971507 0.613479 0.247283 -0.552769 -0.681701 0.0704145 -0.511071 -0.0476181 0.316014 0.216937 -0.129538 -0.220168 0.60677 -0.0615269 -0.528752 -1.15198 -0.416294 -0.674756 -0.176102 0.591863 0.14077 -0.206997 -0.0175039 0.370993 0.178344 -0.406013 -1.29512 3 11 11 3 2 0 -21.6076 2.90417 11 11 5 -0.0514399 1.17372 0.803279 0.147895 -0.857247 -1.26518 -0.350218 0.474764 0.432928 0.641996 0.865864 0.197577 0.827354 0.623654 0.702416 0.417799 -0.167566 -0.254886 0.109136 0.179267 0.541808 0.663499 0.361256 0.075785 -0.38316 -0.0228246 0.596174 0.219046 -0.254343 -0.732505 -0.193904 0.249065 0.0389952 0.577252 0.0768441 0.0805383 0.116273 0.494175 0.878564 1.02775 0.678603 0.309862 -0.146247 -0.670857 -0.330135 -0.283496 0.0754114 -0.790467 -1.15667 -0.431578 0.648552 0.674511 -0.0270656 -0.954196 -1.00023 -0.930585 -0.229751 0.215417 -0.0725988 -2.30396 -3.08572 -1.46843 -1.27624 -2.0332 -1.26165 0.151676 0.0405145 0.0104225 0.845644 1.11007 1.18792 0.651199 0.42254 -0.298351 -0.943606 -0.588156 1.03618 -0.109517 -0.10626 0.542942 0.722113 0.931429 0.0646303 -1.23581 -1.05141 0.467181 1.12733 0.753177 -0.169268 -0.101721 0.329806 0.58771 0.56934 -0.165941 -1.38609 -0.595222 1.51819 1.15939 0.402059 -0.11167 -0.0594526 -0.129046 0.178638 -0.0918219 -0.748291 -1.35422 -0.123036 1.26679 0.697868 0.311747 0.122665 -0.230215 -0.295159 -0.104342 -0.414417 -1.36448 -1.40001 0.304621 1.38139 0.658044 0.413516 2 1 -17.0726 1.57803 11 11 5 -1.07064 -0.766562 -0.639657 -0.128327 0.306834 -0.729889 -0.415363 0.0102974 0.654984 -0.134153 0.22818 -1.09886 -0.477074 -0.815873 -0.304504 0.222743 -0.408863 -1.82866 -0.788097 0.334579 0.638453 0.399061 -0.548588 -0.288425 -0.488249 0.108706 0.145597 -0.678288 -0.967479 -1.30899 -0.804322 -0.237744 0.0800898 -0.357341 -0.302308 -0.0071033 0.451274 -0.207201 -1.16323 -0.925447 -0.0314919 0.723109 0.187856 -0.0553811 0.522051 -0.0276009 0.356987 0.20674 0.933631 1.14517 1.08955 0.59223 0.569818 0.709783 0.69789 0.72748 -0.504865 -0.0261694 -0.176661 -0.683807 -0.998946 -1.45608 -0.902367 0.322674 1.2592 1.2407 1.3457 0.363326 0.388598 0.558781 1.00757 0.537492 1.59297 1.78729 1.26919 1.6041 0.689601 0.236811 -0.154611 0.22631 0.119278 -0.0829095 -0.427079 -0.157889 0.656484 1.3992 0.366121 -1.28273 -0.0228574 -0.224414 -0.159204 -0.199394 -0.411939 -0.544338 -0.691968 0.333964 -0.512962 -2.08099 -1.62352 0.0120361 0.44379 -0.299366 -0.859899 -0.0639405 0.0952599 0.252126 0.703949 0.0651922 -1.4347 -0.655345 0.076313 -0.112211 -0.0144568 -0.055995 0.421169 0.964976 1.47982 1.24914 0.252809 -0.756106 0.21839 2 2 -16.4095 2.14259 11 11 5 -0.358871 0.132953 0.101118 -0.230651 -1.55432 -1.45294 -0.444673 0.704086 -0.121785 -0.169078 -0.335912 0.492349 0.919414 0.935979 0.641961 -0.05842 -0.719432 -0.0856512 0.744443 0.504086 0.272079 0.376116 0.918652 0.445174 0.366563 0.394497 0.64116 -0.366839 -0.831938 -0.55951 -0.211496 0.194149 0.450168 1.17267 0.939979 0.585545 1.06802 1.12774 1.29267 0.447446 0.233193 0.0178916 0.222874 0.0236844 0.646608 0.180024 0.108808 -0.258189 0.667862 1.09132 1.57704 1.43326 0.650791 -0.426529 -0.497931 -0.424217 -0.655922 -0.703774 -0.573036 -1.76678 -1.87529 -0.751354 -0.568452 -0.873252 -1.22666 -0.900614 0.0994826 -0.439777 -0.121697 0.0489132 0.514549 0.457022 0.29755 -1.15381 -1.70473 -1.03104 -0.449564 0.437399 0.143469 0.278412 0.10759 0.635406 0.6802 -0.7072 -0.793367 -0.661918 -0.305185 -0.205079 0.522259 0.276994 0.016367 0.599312 0.975768 0.663915 -0.999108 -0.53477 0.138196 0.0685007 -0.00755637 0.479142 0.0484123 -0.0553485 0.469216 0.493066 0.0930644 -1.03502 -0.509097 -0.0868898 0.0404571 0.153749 0.463504 0.0560052 -0.0297091 0.453551 0.497397 -0.185596 -1.30796 -0.593033 -0.197153 -0.270906 -0.542194 3 11 11 3 2 0 -21.674 2.34732 11 11 5 -0.390809 0.733673 0.560248 -0.0674399 -0.841932 -1.283 -0.548182 1.01726 0.850552 0.317804 0.314708 0.35843 0.753312 0.552763 0.30887 0.0490783 -0.542296 -0.6267 0.913766 0.90428 0.289143 0.350167 0.195222 0.369827 0.283348 0.0207148 0.0620413 -0.763073 -1.37826 0.327126 -0.502957 -0.139206 0.234588 -0.00680642 0.660843 1.17102 0.412832 -0.374674 -1.14972 -0.402991 0.13734 -0.820751 0.130954 0.190889 -0.0390001 0.280178 1.64395 1.27331 0.421109 -1.09099 -1.07249 -1.60232 -0.332187 0.187773 -0.190251 -0.680228 -0.00966819 0.795487 -0.176221 -2.23836 -3.97504 -1.65704 -1.58616 -1.15188 -0.56627 0.0961386 -0.934519 -0.475968 -0.286432 0.452184 1.73082 2.78389 0.471807 0.108567 0.0558635 0.00398494 0.546024 -0.0707493 0.0644454 0.497654 1.30736 1.40088 -0.309774 -0.592523 0.28403 0.957471 0.795535 0.017903 0.744348 -0.0354262 -0.00291473 0.237592 -0.249295 -0.35273 0.123847 0.291571 0.641491 0.449197 -0.417644 0.378135 -0.416937 -0.83293 -0.972388 -1.00303 -0.622703 -0.253688 0.132626 0.521342 0.101537 -0.391458 0.311768 -0.862531 -1.28303 -0.942939 -0.25929 0.280488 1.00255 1.52875 1.5093 0.576634 0.297491 2 1 -14.9984 1.20142 11 11 5 -0.764456 -0.60968 -0.594685 0.0215085 0.441519 -0.781168 -0.0399517 0.210724 -0.428918 -0.565784 -0.0731007 -0.669239 -0.118622 -0.334027 -0.292041 0.197135 -0.498195 -0.702838 0.179628 -0.654023 -0.461056 -0.00153926 -0.457655 -0.112704 0.120435 0.256665 0.40836 -0.707556 -0.12527 0.913522 -0.163574 -0.212561 -0.111175 0.285265 -0.108491 0.172716 0.240336 0.221915 -1.02742 1.51711 1.38365 1.17658 0.828436 -0.451195 0.404434 -0.476469 -0.126611 -0.395793 0.689396 1.39448 3.08097 1.35983 1.31799 0.774029 0.0872346 -0.331353 -0.901327 -0.0966752 0.476477 -0.596717 -0.561907 -1.44172 -2.03461 0.176907 0.703646 0.854072 1.03787 0.957026 0.193468 0.192391 1.37328 1.0712 0.101038 0.037916 -0.214471 0.730787 1.12745 -0.148406 -0.592451 -0.613917 -0.987207 -1.45912 -1.80405 -1.31781 -0.802403 -0.239392 -0.409993 -0.0665012 -0.376735 0.39139 0.34712 0.418158 0.357403 -0.0529633 -0.439995 -0.670939 -1.0847 -1.00167 -0.500314 -0.0500559 0.725155 0.222107 0.0599092 0.348739 0.283845 0.0615508 0.0084991 -0.600584 -0.341336 -0.0693925 0.338201 0.370764 0.292768 0.343331 0.338145 0.297147 0.419871 -0.137303 -0.580414 0.32489 -0.0741165 2 2 -18.2223 1.45301 11 11 5 -0.245238 0.268503 0.444794 0.118739 -0.146575 -0.894794 -0.590587 -0.363535 -0.296716 0.00782067 -0.376907 0.334015 0.997069 0.97365 0.863319 0.199703 -0.218461 -0.211342 0.332735 0.426504 0.144257 -0.00994106 0.416421 0.398398 0.344011 0.352013 0.87483 -0.322849 -0.733793 0.275687 -0.231672 -0.17538 0.169798 0.743701 0.114006 0.787517 0.222858 0.378822 -0.62128 0.0838514 0.615479 -0.315272 -0.192353 0.29572 0.949572 0.249802 1.04873 1.36974 1.34634 0.346022 0.381786 -0.501269 -0.082584 -0.0861 -0.0215158 0.185529 0.663057 0.935543 0.32964 -2.25429 -4.68155 -1.64461 -1.20453 -0.711832 -0.722466 -0.783125 0.00883317 -0.132795 -0.366913 -0.073235 0.805698 2.07066 -1.2316 -0.660804 -0.186864 -0.164522 -0.142413 -0.0390647 0.474489 0.443196 1.53036 1.66629 -0.484662 -1.02494 -0.0962203 -0.257186 0.0987509 -0.0608405 0.938968 0.660698 0.551281 1.18878 0.620602 -0.141022 0.175724 -0.497215 0.106775 0.116851 -0.120981 0.691612 0.508556 0.311969 0.122852 -0.140129 -0.194811 -1.0248 -0.404178 0.0759915 0.0551243 -0.213153 -0.122202 -0.402612 -0.730845 -1.03966 -0.46706 -0.782244 -0.86839 -0.699563 0.00787713 -0.130787 -0.679551 3 11 11 3 2 0 -28.9406 3.24364 11 11 5 -0.651441 -0.743924 -0.220284 1.01318 0.731674 0.128042 0.44874 -0.626104 -0.789891 -1.04127 0.285536 -0.507532 -0.425841 0.157786 0.852043 0.682788 0.282305 0.868674 0.0910158 -0.379263 -1.04524 0.368981 -0.5049 -0.560902 -0.232658 0.798494 0.558474 -0.687242 1.3015 -0.220817 -0.492637 -0.565475 0.757247 0.450101 -0.12572 -0.140653 0.122765 0.61003 -0.18598 0.791249 -0.38065 -0.360702 -0.220719 0.324209 -0.536245 -0.541169 -0.535281 0.861964 1.25408 0.887519 1.4037 -0.00833687 -1.16935 -1.35499 -1.33838 -1.06879 -1.02195 -0.585393 -1.30849 -2.28077 -3.46906 -1.76841 0.0276504 0.814495 -0.947128 -1.60581 -0.928069 -0.139556 1.50921 2.24048 1.36409 1.07626 2.03364 2.33628 0.875975 -0.685157 -0.305391 0.0618797 -0.0639825 -0.324564 -0.000520935 -0.0359671 -0.210466 0.101743 0.0816313 -0.115006 0.312754 0.902024 0.524147 0.39963 0.50293 0.15499 -0.709746 -1.18732 -1.01108 -0.186172 0.183472 0.360123 0.741229 0.482332 0.265655 0.208962 -0.286398 -1.43541 -2.03644 -1.39666 -0.522737 0.101416 0.489281 0.831465 1.52865 1.28255 1.02496 0.408405 -0.376886 -0.748666 -0.281001 0.230347 0.910931 1.44868 1.78623 2 1 -17.2234 1.36289 11 11 5 0.12561 -0.292511 -1.18521 0.505973 -0.673552 -1.27949 0.436616 -0.225225 -1.06381 -0.595464 0.321054 -0.402181 -0.576798 -0.27917 0.534158 -0.730364 -1.30112 0.289978 -0.0668557 -0.233566 -0.486012 1.01067 -0.318038 -0.466702 0.0197282 0.456154 0.154743 -0.699531 1.18904 -0.375615 -0.493387 0.160788 0.863985 1.32817 -0.0836978 -0.635293 0.154255 0.145588 -1.20293 1.02939 -0.0340266 0.522152 1.58815 1.80818 1.20157 1.84452 1.36831 0.451012 0.0484306 0.0928717 0.228905 0.514608 1.25806 0.315109 0.7421 -0.377676 -1.50627 -0.805248 0.00258671 -0.411031 -1.91532 0.536775 0.0663384 -0.742762 -2.28038 -0.229002 -0.721912 -0.00345614 1.08329 1.1011 1.10862 0.908935 0.242027 0.0652568 -0.479669 0.274706 1.24359 0.520708 -0.305781 -1.24264 -0.87198 -1.17498 -1.44055 -0.908001 -0.467547 -0.645312 -0.556519 -0.0858907 -1.09486 -0.482172 0.329311 1.00531 0.889373 0.246405 0.495561 0.913843 0.519194 -0.312377 -0.536763 -1.13823 -0.0853434 0.671432 0.554908 0.0852063 -0.110053 0.117869 0.505758 0.530944 0.209095 -0.329652 -1.2564 -0.326233 0.249504 0.0882395 0.0433812 0.390937 0.646999 0.595169 0.319822 -0.331685 -0.39582 2 2 -20.788 2.72994 11 11 5 0.0166181 -0.795461 -0.274363 1.03258 0.832569 0.311122 0.486545 -0.138911 -0.152936 -0.533598 0.0372685 -0.156706 -0.593459 0.0283287 0.952545 1.24439 0.438582 0.892555 0.269918 -0.474524 -0.683118 0.340504 -0.169011 -0.299908 0.0374321 0.77153 0.521776 -0.421563 1.27852 0.734966 -0.0457362 -0.614802 0.567354 0.208392 -0.134587 -0.0968375 0.214692 0.429627 -0.165119 0.746648 0.0994123 0.115656 0.603892 0.35452 -0.289075 0.0306292 -0.0534138 1.35246 2.24878 1.60904 1.18351 0.144082 -0.500594 -0.323591 -0.38097 -0.616692 -1.08228 -0.982885 -1.7384 -1.41425 -2.45363 -2.13145 -0.368079 0.572458 -0.956952 -1.34032 -0.912262 -0.816543 0.5618 1.84558 0.953569 0.425674 1.55852 1.98433 -0.0549194 -1.1815 -1.20154 -0.646892 -0.386936 -0.3364 0.593123 0.589549 0.759159 0.886167 0.583826 0.248526 0.0829201 -0.581919 -0.204998 -0.0676865 0.5551 0.47447 0.656196 0.178868 -0.0282203 0.649494 -0.010616 -0.12499 -0.396636 -0.86328 -0.26217 -0.121094 0.247326 -0.275795 -0.984975 -0.786137 -0.0401601 -0.32195 -0.334549 -0.24997 -0.563342 0.168735 0.401082 0.248703 -0.592148 -1.01502 -1.13664 -0.321466 -0.0379067 -0.0446382 -0.0751455 3 11 11 3 2 0 -24.2173 2.69123 11 11 5 1.28901 0.508129 0.501291 -0.668591 -1.42576 -0.336228 0.814368 1.38665 0.544651 -0.581524 -1.08769 0.860637 0.648172 0.907743 -0.308413 -0.856279 0.18717 0.755232 0.655162 0.564013 0.411153 -0.318236 0.182714 -0.0839532 0.262644 -0.143829 -1.60252 -0.291213 0.578773 0.147054 0.651752 0.337409 -0.132412 -0.182889 -0.911928 -0.943594 0.138576 -0.89678 -0.481965 0.0945982 0.769966 1.26638 -0.111088 -0.1358 0.6548 0.46278 -0.636065 -0.974897 -0.541239 -0.789017 0.636241 1.55375 1.62609 0.126167 -0.960464 0.820062 0.199634 -0.961567 -1.80014 -1.79039 -3.64031 -2.84629 -0.922631 -0.0661719 -0.421216 -1.44691 0.39803 -0.30243 -0.713033 -0.190133 0.865691 2.9452 2.11349 0.802556 0.455941 0.443842 -0.202103 -0.0261257 0.333399 0.760496 0.185145 -0.677525 -0.917054 0.885422 1.2455 0.547026 0.267204 0.26577 -0.479109 0.168401 0.80949 0.387506 0.0333172 -0.107025 -0.431715 -0.301732 -0.207723 -0.217894 0.196049 -0.484966 -0.233729 0.464711 0.547375 -0.0542605 -0.359652 -0.834101 -1.35788 -1.32413 -0.969517 -0.236326 -0.052724 -0.261541 0.613174 1.57121 1.59289 0.896726 0.101262 -0.538331 -0.708499 -0.16667 1.21425 2 1 -16.5428 1.18122 11 11 5 -0.559541 -0.786479 -0.277477 0.312001 -0.942506 -0.0188302 -0.0229921 -0.835929 -0.371297 -0.155609 -0.932597 0.00925315 -0.634584 -0.360531 0.0723139 -0.855759 0.318788 -0.364384 -0.774702 -0.0792063 -0.130296 -0.141558 0.348576 -1.06201 -0.952384 1.05527 -0.52896 0.045903 0.553545 0.176728 0.235173 0.454633 0.438458 -0.054126 0.0101762 0.455792 1.67817 0.105348 -1.07662 -0.161305 0.0922729 -0.179099 0.14987 1.23125 -1.55368 0.882505 1.02843 1.72956 2.64829 0.89873 0.732927 -0.0899517 -0.136498 -1.00126 0.242456 -0.465713 0.739161 0.673179 -1.4163 -1.70945 -0.324006 -0.865746 -0.104365 -0.0491505 0.460298 0.890633 1.16728 1.16017 -0.403417 -0.710646 0.315184 1.17116 1.43264 0.475045 -0.020123 0.0414311 0.821524 0.621512 0.0263845 -0.0665488 -0.631173 -1.20809 -1.85286 -1.18677 -0.839378 -0.644397 -0.971754 -0.268092 0.199583 -0.354406 -1.47358 -0.876756 -0.381813 0.251752 0.706858 0.764076 0.124556 0.621605 0.413753 -0.136139 -0.198526 -1.20838 -0.404581 0.437678 0.40958 0.278907 -0.00838198 -0.250557 0.503195 0.706092 0.156954 0.0384641 -0.527665 -0.720056 0.00530691 0.305931 -0.0926896 0.151758 0.638066 1.23464 1.56085 2 2 -17.2569 1.82229 11 11 5 0.760047 0.357083 0.172263 -0.310522 -1.1142 -0.0662534 0.667643 0.704906 0.288319 -0.499753 -0.395355 0.506639 0.82588 0.541265 0.263667 -0.625245 0.134259 0.651479 0.709357 0.738412 0.155261 0.0394358 0.396736 0.22858 -0.157055 0.507407 -0.815625 0.183691 0.285449 0.0965574 0.614964 0.798077 0.680634 -0.0967796 -0.421357 -0.167678 1.11842 -0.373267 -0.674425 -0.190512 0.183424 0.631257 0.157477 1.34899 0.0585078 -0.32363 -0.457268 -0.463044 1.13236 0.256213 1.43959 1.49743 0.711084 0.367166 0.330716 0.363558 0.273046 -0.234304 -1.04126 -2.23756 -4.56373 -2.47112 -0.508346 0.187479 0.0201353 -0.1917 0.0935683 -0.538275 -0.155944 -0.240747 -0.172124 0.978135 0.220675 -0.388529 0.307021 0.602094 0.117173 0.119069 -0.0820913 0.422987 0.0890228 -0.548685 -1.35728 0.872893 1.19486 0.594658 0.48908 0.611967 -0.189548 0.20667 0.461766 -0.125638 0.338945 0.123575 -0.25284 0.687992 0.689273 0.353715 0.360508 -0.00443452 0.119956 0.193176 -0.222493 -0.324367 -0.286297 -0.0781389 -0.34899 -0.274819 0.0187656 -0.388192 0.13217 -0.482602 -0.646713 -0.457537 -0.302032 -0.421865 -0.539533 -0.713075 -0.766703 -1.28899 -1.78607 3 0 -1070906045 0 3 0 0 0 3 0 0 0 3 131072 3 0 3 -2147483648 -1072102457 0 3 8 1 0 3 131072 0 0 3 -1073741824 -1070489862 0 3 11 11 3 2 0 -6.64767 1.5911 11 11 5 -0.0680626 -0.0680765 -0.267017 -0.0178396 0.0874763 0.143199 0.268077 0.593398 0.744545 0.578207 0.432695 -0.0992686 0.0939604 -0.0252553 0.187491 0.282072 0.431854 0.536085 0.645154 0.696601 0.548918 0.533638 -0.173257 -0.0797074 0.108599 0.0611647 0.162998 0.288344 0.386141 0.58565 0.536439 0.442158 0.293012 -0.275021 -0.237267 -0.15058 -0.19843 -0.031017 0.0696602 0.13247 0.275606 0.365683 0.194404 -0.0787438 -0.331321 -0.44371 -0.454065 -0.510069 -0.654908 -0.384517 -0.206427 -0.193916 -0.323482 -0.574144 -0.693934 -0.208871 -0.367402 -0.461312 -0.615735 -0.819638 -1.08115 -1.20336 -0.833068 -0.572025 -0.53222 -0.470693 0.13973 -0.0969011 -0.169987 -0.11065 -0.0992257 0.123646 0.119326 0.220516 0.219604 0.0757171 -0.0771516 0.365111 0.127257 0.0317098 0.0139158 0.116431 0.152178 0.194373 0.181584 0.205276 0.159457 -0.0585572 0.510643 0.277837 0.122215 0.104194 0.150317 0.282045 0.115874 0.0221985 0.0724862 0.0100153 -0.0934007 0.53488 0.315006 0.193876 -0.0121815 0.00950385 0.0463286 0.0323262 -0.109093 -0.0822233 -0.108652 -0.155018 0.104029 0.195524 0.0680367 -0.0831697 -0.160202 -0.248354 -0.258921 -0.135159 -0.101495 -0.208672 -0.244321 2 1 -6.48051 0.670239 11 11 5 -0.337472 -0.107728 -0.162998 -0.576143 -0.64355 -0.519114 -0.351111 -0.252477 -0.307827 -0.295853 -0.153185 -0.0953801 0.0120724 -0.110968 -0.419392 -0.417139 -0.232741 -0.230925 -0.0486205 -0.129516 -0.0321285 0.0213812 0.361149 0.317378 0.336382 -0.17376 -0.544394 -0.39578 -0.145291 -0.178147 -0.188505 0.0147131 0.304394 0.366588 0.795448 0.876929 0.813718 -0.447589 -0.46697 -0.251233 0.031773 0.18226 0.420757 0.704314 0.184004 0.427031 0.948843 1.57192 1.2058 0.371282 0.248527 0.186001 0.287396 0.334608 0.197158 -0.489192 0.0519 -0.0660647 -0.341477 -0.122316 0.649768 -0.089665 -0.380803 -0.397125 -0.068402 0.341345 -0.775926 -0.197936 -0.169986 -0.465635 -0.270353 -0.219986 0.407311 0.228265 0.414607 0.404221 0.241462 -0.142653 -0.126261 -0.0141665 0.377015 0.246096 -0.118988 -0.333077 -0.111022 -0.0354703 -0.0198727 0.0399 -0.385123 0.135683 0.07003 -0.070951 0.12332 -0.237081 -0.146133 -0.195677 -0.0739237 0.308274 0.160353 -0.230873 -0.00784995 0.31068 0.0862271 -0.166174 -0.261802 0.0401056 -0.0065202 -0.207446 -0.0994478 0.138238 -0.199286 -0.268005 -0.054322 -0.161497 -0.0990246 0.236559 -0.0692763 -0.0519197 -0.302456 0.0501315 -0.11622 2 2 -9.20286 2.00718 11 11 5 -0.375844 -0.407362 -0.397797 -0.466523 -0.135521 -0.0051787 -0.106294 0.100255 0.422437 0.327058 0.425773 -0.350246 -0.300485 0.134895 0.239154 0.311058 0.235042 0.184023 0.891507 0.81934 0.44973 0.901005 -0.264886 -0.174675 0.174655 0.24528 0.501617 0.357379 0.302132 0.662323 0.554933 0.778771 0.887925 -0.433063 -0.203835 -0.272988 0.371107 0.680089 0.968133 0.545691 0.543711 0.631297 0.754661 0.695907 -0.675827 -0.503688 -0.490697 -0.25443 -0.16162 0.38699 0.467186 0.380638 0.0925566 0.228673 -0.0648619 -0.317941 -0.540592 -0.422075 -0.687052 -0.913066 -1.02756 -1.04962 -0.740214 -0.46326 -0.193631 -0.188603 -0.485089 -0.256404 -0.298972 -0.463687 -0.476166 -0.341595 -0.296543 -0.184218 0.0894766 0.025023 -0.131746 -0.00478068 0.0283113 -0.344886 -0.318145 -0.222501 -0.102572 -0.137328 -0.126293 -0.107524 0.0656361 -0.0984156 0.212473 0.0914323 -0.146944 0.0530694 0.12028 0.00183846 -0.0268477 0.0348378 0.243715 -0.0948621 -0.098682 -0.0025585 -0.0339853 0.107636 -0.184718 -0.00304037 -0.307442 0.0965931 -0.112582 -0.238114 -0.0137423 0.201191 0.192133 -0.0223388 0.0536039 0.157006 0.0490773 -0.125831 -0.176367 -0.030507 -0.02447 0.139336 0.0137465 3 11 11 3 2 0 -5.67525 1.78855 11 11 5 -0.168434 0.254874 0.436693 0.445234 0.376051 0.334103 0.141252 0.141036 -0.0766049 0.182812 0.303367 0.365798 0.764501 0.79053 0.716597 0.562835 0.465128 0.270645 0.0818471 0.05489 0.250176 0.178222 0.195779 0.542688 0.641959 0.546119 0.519702 0.245178 0.0555164 -0.164131 0.0572378 0.00752271 -0.0459086 -0.0944515 0.338583 0.399599 0.286483 0.169334 -0.0547977 -0.309696 -0.231512 -0.15648 -0.19109 -0.254033 -0.274742 -0.0640727 -0.00765997 -0.0629988 -0.261741 -0.561239 -0.635608 -0.401297 -0.393507 -0.175922 -0.249348 -0.462793 -0.443296 -0.441907 -0.642664 -0.905276 -0.884403 -0.445089 -0.184299 -0.0581251 -0.0520502 -0.2014 -0.636541 -0.493868 -0.353055 -0.157956 0.0512432 -0.0714688 -0.0259551 -0.15639 -0.068634 -0.170263 -0.216214 -0.413802 -0.140379 0.196937 0.333555 0.382788 0.161227 0.100616 -0.00467331 -0.0951346 -0.0917916 -0.00478469 -0.0868929 0.0113861 0.144665 0.247188 0.245882 0.155352 0.00756008 -0.156708 -0.142178 -0.173458 0.0386591 0.0965127 -0.112696 0.0498165 -0.0156131 0.00725915 0.0226206 0.0261499 -0.0802069 -0.0767624 0.0422639 0.012981 0.00455658 -0.0233807 -0.0234628 -0.0471575 -0.0439394 -0.00146677 0.157846 0.0219465 -0.130618 0.0129909 0.117729 2 1 -4.08779 0.34498 11 11 5 -0.492396 -0.527696 -0.631786 -0.777836 -0.658682 -0.42153 -0.131107 0.136343 -0.0373545 -0.282049 -0.430609 -0.824406 -0.598249 -0.64259 -0.625191 -0.363309 0.119504 0.154084 0.2589 -0.00672749 -0.236354 -0.0736454 -0.546409 -0.304089 -0.346714 -0.188234 0.0674705 0.285225 0.562285 0.292101 0.0362153 -0.0139824 0.117552 -0.471344 -0.270644 -0.115202 -0.0560433 0.408429 0.631959 0.674283 0.281905 0.0530602 0.131697 0.000708684 -0.353349 0.0736992 0.488886 0.496701 0.694646 0.399946 0.087342 -0.0225946 -0.074327 0.053102 -0.13174 1.00641 0.717056 0.379852 0.0767993 -0.00563126 -0.135376 0.125503 -0.0215113 0.13548 -0.094724 -0.271134 -0.218083 -0.512663 -0.101422 0.34007 0.372716 0.0165502 0.118377 -0.172896 0.0452689 -0.159263 -0.0164757 -0.054125 -0.127774 -0.120964 -0.172856 -0.117325 0.0796101 0.249807 0.151427 0.0303192 0.171678 0.186804 -0.0885936 -0.0639444 0.0013692 0.209631 -0.0171068 0.255451 0.237448 0.176754 0.173118 0.231471 -0.0118246 -0.00700197 0.0699342 0.158908 0.00769278 -0.224695 -0.0448515 0.247589 0.121378 0.196635 0.129923 -0.134125 -0.191625 0.16676 -0.247233 -0.147451 0.0952267 0.459857 0.226337 -0.0934223 0.116347 0.0616022 0.177083 2 2 -7.31329 1.78233 11 11 5 -1.15007 -0.765463 -0.632605 -0.121208 0.00146014 0.286247 0.309214 0.315714 0.0265948 0.100637 0.273437 0.0702997 0.485938 0.23519 0.2607 0.398385 0.436582 0.476169 0.456441 0.153916 0.393388 0.295831 0.468397 0.495937 0.694403 0.53092 0.672374 0.370855 0.312734 0.0988814 0.305567 0.192857 0.254211 0.128352 0.340044 0.389265 0.375528 0.632682 0.573173 0.0119865 0.181449 0.283152 0.091655 0.345082 0.292397 0.359145 0.668234 0.721831 0.444274 -0.150982 -0.330856 -0.0273994 -0.241151 -0.0148364 0.0037741 -0.0708511 -0.249054 -0.255509 -0.613409 -0.817637 -0.672461 -0.335065 -0.139971 -0.0942828 0.0744535 -0.142187 -0.837257 -0.800819 -0.65354 -0.533893 -0.455555 -0.255166 0.0121673 0.0351004 0.111618 -0.270994 0.0468957 -0.622526 -0.340178 -0.177021 0.136662 0.0354032 0.151664 0.173249 0.00780435 -0.0532506 -0.00281447 -0.0392522 -0.528782 -0.363677 -0.173629 -0.0398372 0.0329173 -0.0187592 -0.0391227 -0.179779 -0.298207 -0.387762 -0.415188 -0.0255393 0.115744 -0.0362752 -0.153956 -0.059543 -0.0505704 0.127933 -0.330315 -0.209244 -0.141796 -0.165924 -0.0815004 -0.091978 -0.207391 0.0370637 0.0027666 0.00146363 0.13997 -0.135635 -0.152449 -0.272853 -0.0312045 3 11 11 3 2 0 -6.30812 1.70953 11 11 5 -0.218582 -0.231392 -0.0689065 -0.128468 -0.0753833 0.23063 0.521959 0.707574 0.648516 0.353512 0.170775 0.296762 0.389189 0.141505 0.148049 0.0753466 0.435779 0.665854 0.670361 0.293739 -0.0181381 -0.144737 0.805699 0.450693 0.295475 0.130667 0.0970743 0.391068 0.658134 0.234569 -0.124074 -0.328169 -0.283739 0.816242 0.461224 0.275891 -0.0320335 0.0520612 0.329687 0.268166 -0.0235813 -0.331245 -0.364363 0.0131736 0.665511 0.358804 -0.0457978 -0.212417 -0.175079 0.123571 -0.383732 -0.371767 -0.312175 -0.216581 0.0175999 0.314318 -0.26495 -0.486614 -0.359599 -0.273687 -0.364475 -0.359117 -0.228363 -0.127434 -0.15339 0.0918604 -0.488098 -0.784041 -0.693465 -0.584148 -0.251149 -0.197896 -0.0814782 -0.223417 -0.0428241 -0.157237 0.0474374 -0.951216 -0.712545 -0.486006 -0.116239 0.124867 -0.0693259 -0.0908445 -0.000843537 -0.0556129 0.000795119 0.190104 -0.559675 -0.405894 0.0879438 0.123508 -0.0374278 -0.180528 -0.145138 0.0346489 -0.0512725 0.0374507 0.232306 0.315406 0.234597 0.209298 0.104796 -0.110784 -0.0855138 -0.0372331 -0.163802 -0.197305 0.0147427 0.189367 0.0209225 -0.00555511 0.00834759 0.0496664 0.045955 -0.00175731 -0.170986 -0.135746 -0.0853035 0.0113809 0.383668 2 1 -4.67509 0.516139 11 11 5 -1.11617 -0.702843 -0.444217 -0.381207 -0.12655 -0.511574 -0.609072 -0.423725 -0.0577552 0.0899634 0.474523 -0.735629 -0.430429 -0.199052 -0.0965774 -0.331507 -0.618316 -0.388868 -0.00926129 0.382768 0.48904 0.242066 -0.476414 -0.134658 0.0758455 -0.102984 -0.530189 -0.237695 -0.0325318 0.297614 0.496516 0.172142 -0.0265127 -0.273879 0.0337443 0.133565 -0.0259148 -0.243279 -0.0300411 0.277495 0.427656 0.0808198 -0.132615 -0.232708 0.18962 0.684688 0.333201 0.113952 -0.0625792 0.28636 0.200589 -0.085955 -0.155754 0.0428057 -0.0495532 0.936013 0.868627 0.270796 -0.0585746 -0.218529 -0.23202 -0.229124 -0.0862747 -0.0558858 -0.0609185 -0.164358 0.376734 0.0886901 4.34087e-05 -0.431218 -0.200115 -0.131058 -0.100106 0.0519147 0.0882047 0.0829632 -0.178297 -0.246553 -0.238823 -0.254962 0.0943209 0.11854 -0.172871 0.165785 0.469622 0.278922 0.0220419 -0.0196973 -0.10134 0.0887261 0.0943612 -0.14057 -0.256197 0.239975 0.421552 0.233336 0.111019 0.153518 0.103001 0.402834 0.29953 0.0291667 -0.497159 -0.0504328 0.229537 -0.0445929 -0.259565 0.52868 0.1213 -0.224731 0.617062 0.383259 0.162199 0.24395 0.151377 0.108047 -0.245292 0.334614 0.246521 0.0483811 0.125148 2 2 -5.96379 0.82812 11 11 5 -1.16072 -0.912219 -0.739843 -0.369702 -0.544119 -0.309544 0.00921237 0.346015 0.34524 0.302337 0.249016 -0.739847 -0.0914358 -0.429191 0.077311 -0.247055 0.0689457 0.198624 0.642577 0.351795 0.505074 0.0137236 0.148979 0.174008 0.423177 0.133918 0.0244908 0.248321 0.380976 0.275757 0.448534 0.0386477 -0.0634578 0.679004 0.365532 0.514431 -0.105911 -0.0483137 0.377584 0.687105 0.511213 0.126949 -0.115705 -0.365011 0.570002 0.656701 0.5075 0.0710908 0.105826 0.463109 0.364836 0.0742456 -0.0662457 -0.361309 -0.249595 0.843437 0.533289 0.210419 0.0651172 0.0160739 -0.019527 0.000407417 0.20366 -0.114622 -0.226516 -0.153869 0.442103 -0.0961219 -0.489448 -0.647314 0.00642959 -0.140668 -0.0169527 -0.15849 -0.16118 -0.0573357 0.187181 -0.607284 -0.633308 -0.566509 -0.178672 0.170538 0.114535 0.135614 0.0155408 0.0819129 -0.000680964 -0.163468 -0.757676 -0.544308 0.0629859 0.218561 -0.011144 -0.0513764 0.156071 0.269556 -0.0607035 -0.153778 -0.300122 0.174761 0.0553832 -0.0051897 0.0955262 -0.0590005 0.0721208 0.00033123 -0.153013 -0.2132 -0.187361 -0.166496 0.189564 -0.0765077 -0.207124 -0.222357 -0.111669 -0.121615 0.0782304 -0.0908015 -0.363261 -0.435582 -0.237687 3 11 11 3 2 0 -3.98149 1.11072 11 11 5 -0.248962 -0.0185305 0.186758 0.20265 0.260493 0.273768 0.333738 0.316329 0.159376 0.00671272 -0.260475 -0.063928 0.142134 0.289496 0.318693 0.36918 0.350837 0.330232 0.140113 0.00129231 -0.257239 -0.352644 0.163054 0.248271 0.481295 0.459689 0.316931 0.104478 0.106111 -0.162975 -0.215647 -0.219822 -0.174133 0.236207 0.30317 0.525129 0.425324 0.192896 -0.142483 -0.187974 -0.27361 -0.155878 -0.0841202 -0.000244119 0.315258 0.390838 0.516817 0.285397 -0.0928246 -0.397494 -0.365805 -0.321367 -0.16598 0.0711463 0.175014 0.334554 0.289691 0.213776 0.030717 -0.473234 -0.575842 -0.272296 -0.221694 -0.113561 0.0959082 0.0457176 0.150797 0.108871 -0.0515755 -0.396503 -0.449884 -0.241678 0.0425861 0.0384222 0.05825 0.190657 0.064824 -0.0343144 -0.107966 -0.326262 -0.578668 -0.342069 -0.133158 -0.0329552 0.000764073 0.193253 0.146959 0.00826458 -0.181839 -0.248703 -0.583061 -0.342728 -0.089716 -0.0515544 -0.016019 0.0660286 0.0889789 0.176576 -0.00608541 -0.289876 -0.451649 -0.367849 -0.225431 -0.120751 0.0791583 0.156381 0.042635 0.165447 0.224746 -0.0252078 -0.309843 -0.232948 -0.259704 -0.224372 -0.255222 -0.0656565 -0.0702109 0.159811 0.453065 0.241649 0.0648901 2 1 -3.74168 0.230008 11 11 5 -0.470063 -0.624364 -0.293007 -0.292595 -0.383202 -0.666551 -0.536222 -0.113119 0.283112 0.363009 0.0525647 -0.351075 -0.217091 -0.251397 -0.470716 -0.287484 -0.210033 0.0492664 0.356694 0.508347 0.124678 -0.139127 -0.166824 -0.366439 -0.355234 -0.339179 0.120346 0.236958 0.3731 0.460767 0.0602207 -0.0440317 -0.181499 -0.483664 -0.0323049 -0.21569 0.192558 0.512353 0.626292 0.363415 0.00575628 -0.223793 0.197308 -0.118876 -0.404444 -0.207767 0.299805 0.481023 0.586002 0.158203 0.0545706 -0.31843 0.0996081 0.448049 -0.17394 -0.451647 0.150165 0.518235 0.137351 -0.0660745 -0.151542 0.0414987 0.035735 0.091061 0.289517 -0.0267846 0.447485 0.293244 0.115321 -0.177404 -0.456962 0.0605108 -0.102615 -0.353676 0.0838875 0.275076 0.0604766 0.26816 -0.211188 -0.366705 -0.344634 -0.0626371 0.0674695 -0.0445113 0.0201601 0.0970597 0.152392 -0.234085 -0.512005 -0.467077 -0.552451 0.34022 0.175536 0.419573 0.173352 0.274718 -0.0882811 -0.226282 -0.0582268 -0.770058 -0.403744 0.411104 0.0538456 0.39225 0.280239 0.395846 -0.0775774 -0.214985 -0.172035 -0.226543 0.314855 0.449385 0.442302 0.537418 0.53911 0.177534 -0.0174891 -0.0203886 -0.227422 0.325598 0.101501 2 2 -4.02963 0.607667 11 11 5 -0.59087 -0.524612 -0.108957 -0.245861 -0.230906 -0.0788542 -0.0300997 0.310881 0.392998 0.540926 -0.0178445 -0.462574 -0.255643 -0.223499 -0.0410265 0.0167346 0.167152 0.192122 0.200167 0.187757 -0.0800339 -0.127877 -0.415361 -0.19147 0.0410526 0.203939 0.226296 0.21549 0.211467 0.207271 -0.173933 -0.345659 -0.226432 -0.312855 -0.19319 -0.0913322 0.412007 0.486454 0.338791 0.304991 -0.0183562 -0.0608269 -0.392433 -0.186847 0.0868575 0.267614 0.47924 0.67814 0.651568 0.08103 -0.136389 -0.143877 -0.405679 -0.0300491 -0.074762 0.388675 0.60946 0.649649 0.711754 -0.135715 -0.312935 -0.194259 -0.371692 -0.243896 -0.030489 -0.0392024 0.601734 0.591473 0.661953 0.0196373 -0.163435 0.0746569 0.217901 -0.113953 -0.185611 0.0228981 0.207884 0.311186 0.49389 0.33504 0.0488044 -0.298994 -0.266238 -0.238759 -0.262806 -0.368972 -0.299019 -0.139373 0.0981633 0.197587 -0.0479479 -0.0681107 -0.0570485 -0.158833 -0.405491 -0.111775 -0.307027 -0.123864 -0.00101728 0.0928438 -0.145343 -0.182576 0.219153 0.0838325 0.113634 0.120487 -0.542439 -0.062819 -0.139681 -0.157906 0.292571 -0.127482 -0.0332882 -0.0413739 -0.0960393 -0.0396568 -0.23341 -0.324395 0.181351 -0.534435 -0.221733 3 11 11 3 2 0 -4.46046 1.01781 11 11 5 -0.0504004 0.0836433 0.234818 0.404495 0.401287 0.34982 0.249788 -0.073939 -0.304348 -0.356034 -0.218423 0.0830538 0.130624 0.358109 0.450627 0.352994 0.302371 0.104633 -0.360621 -0.427248 -0.408056 -0.24474 0.19726 0.26733 0.35705 0.324126 0.322679 0.133069 -0.186232 -0.499433 -0.293318 -0.198144 -0.0658216 0.281532 0.418655 0.425011 0.433929 0.173162 -0.0844667 -0.269689 -0.386425 -0.0219508 0.0204817 -0.00916282 0.331526 0.244646 0.274573 0.275794 -0.0487165 -0.384149 -0.364079 -0.164476 -0.0159713 0.103659 -0.0823014 0.226719 0.318543 0.148834 -0.133934 -0.382496 -0.481575 -0.160369 0.187974 0.263767 0.0288557 -0.093193 0.171472 0.192209 -0.0981695 -0.2659 -0.525122 -0.281061 0.0900191 0.377396 0.269543 0.0560793 -0.0349271 0.167821 -0.0303182 -0.331828 -0.366384 -0.469941 -0.00647531 0.32422 0.365388 0.270338 0.126394 -0.0945032 -0.0449123 -0.285142 -0.445011 -0.519241 -0.296574 0.244439 0.470913 0.453753 0.250743 0.0302346 -0.285727 -0.211303 -0.410438 -0.600793 -0.531093 -0.0711551 0.234037 0.460543 0.342765 0.132571 0.00320441 -0.158637 -0.220086 -0.655073 -0.692514 -0.433016 -0.0504406 0.279967 0.417514 0.252866 0.161859 -0.109708 -0.116585 2 1 -1.82871 0.058605 11 11 5 -0.453488 -0.480701 -0.332823 -0.492081 -0.630756 -0.433391 0.203978 0.319027 -0.0948393 -0.477712 -0.17605 -0.286661 -0.460333 -0.444149 -0.423589 -0.139768 -0.0460539 0.267215 0.568749 -0.423961 -0.224996 -0.66816 -0.0535771 -0.425863 -0.364944 -0.277004 0.248109 0.347413 0.357322 -0.0299582 -0.276006 0.00536049 -0.0916601 -0.205963 -0.194085 -0.236817 -0.156017 0.372638 0.493016 -0.0769955 -0.18393 -0.317285 0.365009 -0.229991 0.0741804 -0.0791254 -0.0311723 0.211899 0.40296 0.103478 -0.144264 -0.0563214 -0.0147837 0.17832 -0.334857 0.0450035 0.0747547 0.28222 0.17414 0.0903067 0.113595 0.282453 0.36286 -0.107658 -0.0200877 -0.0793195 0.400741 0.29187 0.21186 0.0223061 -0.0469543 0.456606 0.558976 0.297353 -0.181769 0.0545275 0.061501 0.0459951 0.123625 0.250468 -0.0216517 0.0799417 0.444228 0.485683 0.13497 0.0522461 -0.147454 0.471812 -0.0353985 0.155237 0.0572305 -0.234897 0.249242 0.308154 0.365494 -0.0721291 0.0372785 0.198742 0.474742 -0.258088 -0.00381072 -0.326078 -0.164259 0.0838886 0.173723 -0.0342195 0.309541 0.426255 -0.323938 0.502193 -0.511623 -0.430311 -0.0951383 0.248708 0.133642 0.0189541 -0.212077 0.257336 -0.284532 -0.523573 0.196028 2 2 -3.92903 0.639288 11 11 5 -0.462442 -0.319881 -0.0496958 0.0392238 0.0983517 0.363029 0.540913 0.274406 -0.0740229 -0.197491 -0.20658 -0.517252 -0.188482 0.141637 0.00171217 0.255839 0.683344 0.428055 0.0904011 -0.14549 -0.280598 -0.170752 0.144623 0.0095831 -0.146207 -0.142796 0.361121 0.238365 0.0868279 -0.199835 -0.32005 -0.272754 -0.0403305 -0.11421 0.36507 0.498794 0.387164 0.438789 0.259779 -0.0345379 -0.191385 -0.151122 -0.0703523 -0.146698 0.0823432 0.14041 0.101498 0.52255 0.405674 -0.200657 -0.399323 -0.233476 -0.451457 0.0484511 -0.151666 -0.00852594 0.462258 0.486377 0.230794 0.0214287 -0.372122 -0.501881 -0.218993 0.00622952 -0.0875259 -0.493494 0.171909 0.460708 0.401068 -0.0152562 -0.372648 -0.389983 -0.262674 0.0662446 0.138885 0.105989 -0.0927861 0.196027 0.450594 0.250333 -0.0871809 -0.60269 -0.45824 -0.240264 -0.140456 -0.00363065 0.218553 -0.0390651 0.40293 0.458513 0.219951 -0.112637 -0.582386 -0.355723 -0.0521116 0.0555529 0.0145362 0.0924933 -0.217667 0.615353 0.458261 -0.166837 -0.463519 -0.474886 -0.365103 -0.0708874 0.326837 0.200676 0.136109 -0.0378518 0.425945 0.179616 -0.0687863 -0.566707 -0.557827 -0.216074 0.157164 0.184061 0.141873 -0.197994 0.0287187 3 11 11 3 2 0 -5.97217 0.896359 11 11 5 -0.424949 -0.0120229 0.106993 -0.0703473 -0.373555 -0.641613 -0.402658 0.283934 1.15964 0.438458 -0.374948 -0.190893 0.2312 0.225012 -0.0259864 -0.106102 -0.326953 -0.356202 0.14305 0.476987 0.14125 -0.532582 0.065496 0.24285 0.259321 0.228489 0.278747 -0.12522 -0.309934 -0.125934 0.154896 -0.164084 -0.506915 0.355929 0.425312 0.456413 0.442273 0.423792 -0.0741085 -0.541894 -0.349975 -0.255415 -0.0834695 -0.255292 0.401692 0.563743 0.500042 0.451403 0.438516 -0.239054 -0.373794 -0.350998 -0.123816 -0.180188 -0.272115 0.567255 0.52573 0.430849 0.275656 0.207763 -0.540142 -0.171784 -0.195423 -0.00369125 -0.177495 -0.136622 0.524586 0.452855 0.283763 0.0222824 -0.121008 -0.633705 -0.047124 0.0100563 0.194933 0.0723992 0.0318501 0.513357 0.230516 0.00640034 -0.198698 -0.423669 -0.48041 -0.00123481 0.154212 0.166817 0.0960986 0.116184 0.22789 0.0635769 -0.208422 -0.487116 -0.614491 -0.164684 0.298541 0.304494 0.128325 0.000958896 -0.0164165 -0.0848857 -0.243538 -0.446802 -0.693354 -0.464471 0.323147 0.4907 0.280268 0.0511368 -0.062753 0.00575835 -0.395263 -0.694761 -0.611923 -0.655778 -0.0577169 0.705387 0.729872 0.277465 -0.0920705 -0.271272 -0.09878 2 1 -2.16271 0.338515 11 11 5 -0.333523 -0.226573 -0.266139 -0.386946 -0.855833 -0.108138 0.707212 0.538899 0.477682 0.66974 0.758743 -0.383522 -0.139978 -0.156817 -0.354626 -0.600607 0.127448 0.306043 0.382066 -0.0790994 0.00818635 0.95081 -0.242974 -0.205276 -0.183129 -0.351171 -0.45684 -0.0264427 0.541606 0.326082 0.23201 -0.343702 0.206282 -0.0614499 -0.178054 -0.25197 -0.232055 -0.382891 0.350094 0.208607 0.0964411 0.133723 -0.423388 0.140051 -0.161534 -0.215589 -0.126238 -0.315266 -0.194388 -0.00987797 0.151463 -0.328214 -0.157283 0.177563 0.131846 -0.118665 -0.175593 -0.0247474 -0.00593444 0.0471154 -0.0355298 0.0146642 -0.414406 -0.224492 0.0325792 0.0526843 -0.18022 0.00852969 0.143835 0.133907 -0.0731955 0.0912219 -0.15425 -0.419208 -0.185783 -0.240674 0.236974 0.11126 0.168832 0.143096 0.123886 0.0663358 0.141985 -0.304841 -0.247811 0.0125868 0.0164991 0.0359517 0.189244 0.330494 0.218483 0.0476058 0.0614857 0.0757008 -0.349827 -0.239352 0.119345 0.198023 0.252381 0.307946 0.218463 0.14471 -0.104666 -0.0646541 0.106049 -0.265814 -0.0972857 0.298284 0.157139 0.141169 0.247557 0.0350763 0.0316067 -0.13332 -0.129814 -0.122183 -0.0732799 0.0828972 0.225001 0.241444 0.190436 2 2 -4.99856 0.628006 11 11 5 -0.491258 0.098432 0.160246 0.662376 -0.0401202 -0.264982 -0.499089 -0.46877 0.681119 0.684111 0.333878 -0.5336 -0.133201 -0.0437361 -0.123803 -0.0293019 -0.354591 -0.287044 -0.116935 0.192771 0.403093 0.133169 -0.197247 -0.0443863 -0.0426788 -0.0110554 -0.0482704 -0.401939 0.0199455 0.122316 0.211519 0.0973145 -0.212588 0.143039 -0.0497899 0.0331524 0.375404 0.374637 -0.036044 -0.310296 -0.00391895 0.213982 0.29347 0.154075 0.00475678 0.238289 -0.00283797 0.369416 0.61354 0.0790557 -0.152005 -0.157645 0.101993 0.124942 -0.246688 0.201839 0.332775 -0.112795 0.400433 0.609796 -0.322932 -0.0737585 -0.104015 0.180031 -0.322563 -0.147273 0.209891 0.305025 0.377066 0.222414 0.198365 -0.497729 -0.0562718 -0.43654 0.181996 0.0967731 -0.262064 0.52262 0.354852 0.473525 0.361859 -0.0533698 -0.824179 -0.0316643 -0.184255 0.0802006 -0.483496 -0.358755 0.318063 0.553483 0.274882 -0.0486758 -0.489652 -0.701226 -0.215065 0.144557 -0.092317 -0.173915 -0.176419 0.457411 0.786061 0.263755 -0.431157 -0.820121 -0.435426 -0.0116813 -0.0661777 -0.156115 -0.197763 -0.184851 0.555483 0.12696 0.0569931 -1.08498 -1.04514 -0.011827 0.0756259 0.169084 0.0493844 0.00567599 0.0510768 3 11 11 3 2 0 -6.3177 1.1347 11 11 5 -0.155096 -0.131571 -0.438253 -0.559826 -0.499798 -0.121448 0.499955 -0.27881 -0.341389 0.138778 0.0881275 -0.0808751 -0.162732 -0.197274 -0.250966 -0.352597 -0.254028 0.766354 0.235092 0.162836 0.285605 0.356528 0.0235409 -0.102922 -0.0633675 -0.153168 -0.23039 -0.326747 0.814662 0.596116 0.548393 0.386292 0.515147 -0.0117508 0.0639253 0.00108104 -0.0920722 -0.3567 -0.510477 0.778569 0.798077 0.720434 0.484214 0.120748 -0.0159611 0.0596759 0.0903081 -0.223656 -0.392262 -0.537977 0.736477 0.889617 0.513655 0.0385193 -0.30629 0.0771283 0.117675 0.128807 -0.259547 -0.36207 -0.537165 0.385545 0.667398 0.174519 -0.284329 -0.452335 0.192498 0.210167 0.158284 -0.200105 -0.412176 -0.674152 0.018233 0.0566924 -0.199759 -0.203168 -0.403367 0.330131 0.312305 0.135089 -0.0674295 -0.423713 -0.678515 -0.0809053 -0.256372 -0.145377 -0.194414 -0.357895 0.345907 0.334282 0.229163 0.0788535 -0.243144 -0.488049 -0.109667 0.0248313 -0.037116 -0.136783 -0.412679 0.393955 0.444019 0.326932 0.152215 -0.23796 -0.428256 -0.277123 -0.0893477 -0.0767333 -0.0840383 -0.279418 0.373512 0.348066 0.309885 0.101883 -0.177424 -0.374349 -0.196815 0.0496264 0.00883781 0.00369936 -0.212767 2 1 -4.56861 0.424653 11 11 5 0.0895173 -0.253668 -0.415364 -0.452555 -0.150592 -0.0893727 -0.204918 -0.208623 0.211997 -0.537287 -0.484373 0.0734357 -0.105503 -0.325371 -0.317546 -0.443187 0.111716 -0.40529 0.0203654 -0.13281 -0.611672 -0.406503 0.0696584 -0.0778616 -0.274946 -0.277373 -0.528306 0.356715 0.0515999 -0.211489 -0.504785 -0.678961 -0.327288 0.219105 -0.165421 -0.222124 -0.154375 -0.354638 0.475 0.79111 -0.335873 -0.436712 0.0158888 0.570174 -0.0619552 0.0898738 -0.0848548 -0.149682 -0.260431 0.553532 0.88406 0.12218 0.0385675 0.33672 0.813208 0.0301367 0.112837 -0.0324467 -0.187308 -0.212734 0.494456 1.04953 0.0641638 0.0650384 0.467963 0.62569 0.0471941 -0.0429464 -0.139732 -0.359718 -0.272268 0.408587 0.705136 0.412425 0.16756 0.258036 0.420038 -0.121512 -0.0863034 -0.244653 -0.258898 0.0337983 0.144991 0.665881 0.0944507 0.075827 0.621154 0.34527 -0.0343754 -0.0714334 -0.0821089 -0.342824 -0.0933931 0.0653368 0.515267 0.018608 0.138335 0.168522 -0.229766 0.125993 0.0344978 -0.0746632 -0.170845 0.0156558 -0.021819 0.248914 0.0377661 -0.0890266 -0.350243 -0.206499 -0.0109056 0.0415937 -0.0998564 -0.095537 0.0415395 -0.000728033 -0.0461193 -0.233295 0.0223965 0.0242184 0.160436 2 2 -8.46925 0.731216 11 11 5 0.23951 0.38654 -0.162695 -0.404496 -0.679249 -1.00753 0.0939401 -0.548987 -0.238695 -0.0155933 -0.00459311 0.170495 0.0865063 -0.0970009 -0.268059 -0.649048 -1.11113 0.00562264 -0.326463 -0.0978297 0.165537 0.100091 0.103491 0.280198 -0.022588 -0.482251 -0.289823 -1.24779 -0.142328 0.0583062 0.403327 0.356857 0.486369 -0.0626853 0.163026 0.0787993 0.138206 -0.296978 -1.33551 -0.272527 0.0815955 0.517999 0.420946 0.558619 -0.116998 0.224436 0.580586 0.348993 -0.484424 -1.11577 0.178897 0.725222 0.689592 0.271032 0.335381 0.0438632 0.201306 0.376484 0.230096 -0.291347 -0.685899 -0.14174 0.81837 0.394949 0.161745 0.046071 0.22758 0.365537 0.389707 0.0592426 -0.303805 -0.373345 -0.412943 0.184 0.159078 -0.0352506 0.23581 -0.126737 0.491349 0.244073 0.034524 -0.300401 -0.743462 -0.315586 -0.401212 0.474685 0.189281 0.451827 -0.187385 0.0694442 -0.0612443 -0.0458867 -0.0518798 -0.29423 -0.0970963 0.133238 0.202243 0.085093 -0.157008 -0.189582 0.257529 0.652391 0.510805 -0.0492245 -0.262898 -0.44699 0.154708 0.256908 -0.221843 -0.129985 0.218841 0.351213 0.656774 0.630199 0.133071 -0.416229 -0.347823 0.130495 0.159516 0.14409 -0.204173 3 11 11 3 2 0 -6.07279 0.924665 11 11 5 0.472464 0.186704 -0.36523 -0.626888 -0.630787 -0.218002 0.249115 0.134116 0.154787 0.274965 0.335594 0.378477 0.102025 -0.310028 -0.635913 -0.601163 -0.24033 0.171272 0.126053 -0.411993 0.0713247 0.102369 0.479776 0.0720205 -0.264983 -0.522254 -0.451208 -0.217357 0.143368 -0.0996915 -0.491742 -0.185535 0.0140365 0.314074 0.00299768 -0.257278 -0.369673 -0.355224 -0.0499236 0.254878 -0.218492 -0.599426 -0.0809635 0.226275 0.252191 0.0021384 -0.306979 -0.357923 -0.137615 0.171086 0.692176 -0.444754 -0.363604 -0.182381 0.172704 0.250867 -0.0648079 -0.341207 -0.349112 -0.12915 0.162013 0.571942 -0.399533 -0.373648 -0.0813726 0.189281 0.205921 -0.0500823 -0.235796 -0.161518 -0.111786 0.0528067 0.452438 -0.32114 -0.456071 0.126933 0.223269 0.293092 0.00251199 -0.129265 -0.117388 -0.194196 -0.00875378 0.344651 0.0200901 -0.0567321 0.263357 0.212455 0.349778 0.107989 -0.115839 -0.0919388 -0.334153 -0.0416245 0.617278 0.373522 0.335328 0.338096 0.385848 0.375959 0.113519 -0.0686817 -0.1345 -0.312874 -0.0429744 0.73571 0.637983 0.45548 0.293381 0.100754 0.389644 0.171197 -0.0860602 -0.240239 -0.615697 -0.149068 0.620252 0.484564 0.419803 0.125384 -0.547554 2 1 -5.22999 0.305196 11 11 5 0.443947 0.334852 -0.0492099 -0.50668 -0.629938 0.213768 0.456749 0.22108 -0.49238 -0.45069 0.0294708 0.315398 0.0866726 -0.125686 -0.122013 -0.330135 0.172089 -0.0126811 -0.303113 -0.478711 -0.0605817 0.0336486 0.401333 0.0168557 0.131918 0.214309 -0.068324 0.20239 0.270632 -0.0729061 -0.135861 -0.345839 -0.324468 0.394608 0.101604 0.0628326 0.396508 0.178569 0.531045 0.160137 0.230724 0.0113373 0.323982 -0.634471 0.0761694 0.0205227 0.227005 0.253227 0.436617 0.658336 0.391211 0.206035 0.188077 0.000629174 -0.470254 0.130317 -0.0187728 -0.0505497 -0.0203199 0.109292 0.440907 0.130307 0.511648 -0.203247 0.20798 -0.653913 -0.0361112 -0.180152 -0.279277 -0.312659 -0.442701 0.22019 -0.0940829 0.419675 0.280513 -0.261893 -0.50218 -0.002308 -0.32673 -0.510392 -0.498819 -0.581325 0.129437 -0.0591267 0.383642 0.498832 -0.229119 -0.770777 -0.207944 -0.161443 -0.505481 -0.521208 -0.562492 0.120007 0.229455 0.648001 0.0589075 -0.643687 -0.515399 -0.24396 -0.119057 -0.405503 -0.524005 -0.390984 0.459298 0.525137 0.324486 -0.366795 -0.272517 0.404827 -0.225722 -0.21115 -0.047619 -0.485176 -0.186816 1.0664 0.779967 0.229857 0.180138 0.306544 1.05529 2 2 -8.55005 0.822901 11 11 5 0.948376 0.553799 0.12855 -0.135082 -0.443757 -0.1958 0.421779 0.497134 0.383652 0.278021 0.30463 0.417732 0.263836 0.147895 -0.355928 -0.659595 -0.0992732 0.189481 0.27457 -0.0407482 -0.268647 -0.0263924 0.686883 0.255031 0.182858 -0.449559 -0.736432 -0.0380137 -0.0520432 0.279652 -0.426522 -0.116041 0.141662 0.45005 0.36315 0.280015 -0.140125 -0.739609 -0.250835 0.166558 0.220508 -0.440762 -0.253222 0.216391 0.500845 0.583985 0.0856143 -0.555538 -0.750897 -0.3031 0.801683 -0.0901342 -0.359565 -0.197987 0.20179 0.37107 0.195665 -0.0678888 -0.332929 -0.878384 -0.302602 0.795028 -0.186266 -0.408926 -0.33734 0.0566549 0.191289 0.322848 0.102449 -0.319109 -0.504936 -0.391807 0.451292 -0.194253 -0.746697 -0.411144 -0.109358 0.189117 0.110289 0.111775 -0.319756 -0.742995 -0.754189 -0.114448 -0.333719 -0.249993 -0.0807576 0.162326 0.242548 0.423703 -0.10443 -0.0404572 -0.564259 -0.897977 -0.0976385 -0.072554 -0.0028215 0.137374 0.0121316 -0.0806948 0.227947 0.0430239 0.200513 -0.345437 -0.791481 0.263057 0.312784 0.541774 0.634831 0.589024 -0.103561 0.592241 0.486252 0.232913 -0.535417 -0.777347 0.142624 0.330882 0.458289 0.477524 0.691824 3 11 11 3 2 0 -6.40885 1.75511 11 11 5 0.209919 -0.0606325 -0.0499257 -0.0454556 -0.00243534 0.200401 0.211011 0.0015542 -0.367293 -0.441722 -0.225206 0.156184 -0.145566 -0.205441 -0.18764 -0.144185 0.072498 -0.0443466 -0.264851 -0.498859 -0.373261 -0.174126 0.285638 -0.0959666 -0.254511 -0.322454 -0.174983 -0.106929 -0.292874 -0.447353 -0.468343 -0.17375 0.23316 0.445181 0.110402 -0.148803 -0.408374 -0.301217 -0.341579 -0.440243 -0.500866 -0.121411 0.335628 0.345704 0.663777 0.293797 -0.160789 -0.438066 -0.392402 -0.376661 -0.177855 -0.0995159 0.121157 0.194528 0.503984 0.67532 0.367437 -0.00400516 -0.420474 -0.479965 -0.260194 0.254733 0.165809 0.218124 0.299351 0.598499 0.555825 0.191588 -0.138205 -0.571658 -0.602173 -0.139707 0.372975 0.478534 0.261629 0.268979 0.536111 0.616758 0.172809 -0.330112 -0.763171 -0.509118 -0.161745 0.236899 0.323462 -0.115859 0.183486 0.55613 0.655385 0.10158 -0.348686 -0.521495 -0.348737 -0.071854 0.318418 0.212669 -0.453707 -0.266274 0.620188 0.63889 0.0473424 -0.311375 -0.277778 -0.16957 0.070034 0.483661 0.0875534 -0.272642 -0.0742483 0.521901 0.528472 0.0956706 -0.165449 -0.146083 0.0268071 0.283625 0.710772 0.00731974 -0.490194 -0.00190426 0.762973 2 1 -5.8313 0.515062 11 11 5 0.576597 0.346762 -0.2365 -0.397261 -0.455526 -0.438492 -0.537506 -0.691975 -0.556692 0.127442 0.0424834 0.481554 0.341397 0.0317122 -0.150154 -0.298713 -0.576079 -0.616391 -0.65003 0.278287 0.58865 0.592169 0.472734 0.348911 0.290957 0.0372609 -0.365268 -0.634915 -0.728402 -0.260287 0.278751 0.542822 0.577907 0.344234 0.471758 0.370697 0.150582 -0.301545 -0.790724 -0.383243 0.281528 0.47842 0.381541 0.361461 0.398994 0.412233 0.489377 0.0558845 -0.463411 -0.59032 0.258486 0.573539 0.654297 0.310386 0.504797 0.0840087 -0.00232785 0.196721 -0.310961 -0.670994 -0.0993901 0.414067 0.38978 0.431167 0.459881 0.134387 0.34425 0.0722267 -0.224692 -0.310064 -0.449909 -0.0201247 0.108511 -0.0800252 -0.283991 -0.127454 0.0219656 0.233043 0.120236 -0.0412803 -0.16446 -0.18413 -0.18512 -0.054382 -0.270204 -0.506763 0.058684 -0.394177 0.136984 -0.0496228 -0.181049 0.122251 0.0134782 -0.122991 -0.189604 -0.3703 -0.205976 -0.321132 -0.423842 0.19562 0.0982519 -0.131442 0.154418 0.0669576 0.0950933 0.28706 -0.180835 -0.180018 -0.212478 -0.389212 0.0181985 0.0912831 -0.198994 0.0859396 0.0172463 0.41292 0.438996 -0.179797 -0.0133798 0.384069 -0.28775 2 2 -6.58191 0.730813 11 11 5 0.473452 0.515645 0.178335 0.229847 -0.00605533 0.368644 0.438352 0.24915 0.145484 -0.17599 -0.238279 0.291859 0.178826 0.233165 0.365808 0.294236 0.470443 0.205207 0.117531 -0.231478 -0.384944 -0.110333 -0.0504941 -0.14866 -0.221396 0.0687938 0.0595273 0.169551 -0.217958 -0.0563408 -0.571824 -0.42818 -0.126866 -0.0761312 0.1594 -0.208548 -0.0899421 0.340332 -0.190557 -0.563452 -0.396028 -0.183642 -0.375877 -0.118511 0.200895 0.201073 0.139933 -0.123262 0.214581 -0.214316 -0.427726 -0.394661 -0.184537 -0.0582639 0.0928554 0.803949 0.734298 0.571722 0.096611 -0.242921 -0.39136 -0.0967674 -0.117261 -0.0740297 0.112447 0.153991 1.0144 0.422645 0.382295 -0.0663875 -0.582362 0.144009 0.635483 0.539362 0.295443 0.210801 0.13751 0.534349 0.54297 0.0495348 -0.625777 -0.733612 -0.252215 0.272236 0.485164 0.181312 0.137966 0.0577273 0.428584 0.214959 -0.122455 -0.418003 -0.689812 -0.512578 0.0677786 0.0117123 -0.63796 -0.0832119 0.11931 0.545016 0.366946 0.0138538 -0.54884 -1.01446 -0.503606 0.0547248 -0.029869 -0.206923 -0.0943227 0.0683837 0.397441 0.074671 0.2144 -0.339742 -0.88768 -0.610962 0.0793101 0.00707953 -0.237611 -0.844213 -0.0441295 3 327680 5 0 3 131072 3 0 3 196608 2 0 3 131072 0 0 3 1610612736 -1071999177 0 3 11 11 3 2 0 -10.7414 3.39288 11 11 5 -0.294632 -0.232533 -0.267664 -0.269784 -0.337113 -0.254672 0.01864 -0.0239946 0.0625252 0.0329051 0.0436681 -0.159742 -0.0047348 0.0412757 0.127532 0.0931465 0.138458 0.29449 0.433093 0.455774 0.48789 0.348376 0.0287469 0.241679 0.143335 0.171917 0.186398 0.22269 0.373466 0.544013 0.549632 0.459033 0.318705 0.201794 0.226207 0.170625 0.0970359 0.114162 0.17456 0.411781 0.479273 0.419107 0.180719 -0.0572152 0.105455 0.204914 0.171316 0.122831 0.179001 0.210918 0.320093 0.152965 -0.121549 -0.432006 -0.592845 -0.274054 0.0216688 0.163556 0.25443 0.368143 -0.0230207 -0.774006 -0.99792 -0.96335 -0.737086 -0.487843 -0.701843 0.0620785 0.482934 0.409153 0.375249 -0.574276 -1.2665 -1.27213 -0.859017 -0.436035 0.0611562 -0.578513 -0.00278052 0.423873 0.424163 0.336367 -0.0941912 -0.44566 -0.354328 0.0799092 0.347484 0.521787 -0.238576 0.0702502 0.317778 0.291794 0.306431 0.391635 0.16005 0.145668 0.195453 -0.0229548 -0.123479 -0.319429 0.121138 0.225528 0.142145 0.273134 0.459418 0.223523 -0.048241 -0.403397 -0.604729 -0.655483 -0.333489 0.0859808 0.156507 0.121153 0.366152 0.43872 0.140449 -0.170875 -0.487259 -0.706077 -0.719978 2 1 -10.2521 2.37853 11 11 5 0.0513167 -0.00733247 -0.23603 -0.262197 -0.237555 -0.200555 -0.235707 -0.229036 -0.234807 -0.141443 -0.152798 -0.224401 -0.195133 -0.320271 -0.227362 -0.154193 -0.191161 -0.117602 -0.256987 -0.347872 -0.254479 -0.0289615 -0.147908 -0.145901 -0.153161 -0.145767 -0.0947232 -0.369695 -0.273135 -0.252423 -0.251141 -0.11006 0.216208 -0.164132 -0.159241 0.0413628 -0.0597711 -0.0901976 -0.368515 -0.400143 -0.0482303 0.322247 0.602209 0.692896 -0.0428642 -0.0591762 -0.0574081 -0.17927 -0.482308 -0.398336 0.5515 1.16269 1.21941 0.737212 0.512353 0.544907 0.02999 -0.375283 -0.570529 -0.520468 0.588294 1.22689 1.20034 0.757104 0.294069 0.240746 0.486672 0.0111572 -0.21462 -0.464328 -0.270134 0.0773735 -0.486266 -0.666733 -0.545136 -0.298675 -0.343656 -0.0222812 -0.12724 -0.0234378 -0.295819 -0.357383 -0.0383908 -0.0272704 -0.144171 -0.350958 -0.191159 -0.254489 -0.116314 -0.049366 -0.135762 -0.0680668 -0.251406 -0.0488531 -0.0332346 -0.193997 -0.0448864 -0.00733075 0.375193 0.426281 0.0814924 0.110513 0.198634 0.0943676 -0.0876613 -0.0160331 -0.0614929 -0.19559 0.066708 0.496804 0.860838 0.294825 0.450706 0.433079 0.140806 -0.0653359 0.100714 -0.034018 -0.0807412 0.321841 0.768163 2 2 -8.87856 1.28112 11 11 5 -0.584416 -0.447249 -0.285279 -0.128492 -0.593612 -0.760791 -0.424856 -0.42196 -0.0225109 0.0185148 -0.195169 -0.461163 -0.157943 -0.232053 -0.205737 -0.3038 -0.038858 -0.0221842 0.314606 0.0619531 0.055206 0.213766 -0.106742 0.122335 -0.0776566 -0.0168938 -0.18653 0.142169 0.0570345 0.314099 0.0627338 0.239036 0.300361 0.328303 0.0451526 0.0181922 -0.133078 -0.000132392 0.0996974 0.225159 0.47809 0.478249 0.505318 0.242202 0.429183 -0.058132 0.124224 0.0705545 0.404682 0.646705 0.76802 0.552276 0.380552 0.0930018 -0.129835 0.0597827 -0.41669 -0.309103 -0.0307552 0.531539 0.424478 0.00216162 -0.316234 -0.429532 -0.443466 -0.582822 -0.461977 -0.289689 0.0482713 0.285255 0.486298 -0.654229 -1.07788 -1.22661 -0.903342 -0.631003 -0.26282 -0.781112 -0.184414 0.184533 0.347964 -0.00193737 -0.459078 -0.446882 -0.355958 0.122793 0.16439 0.454111 -0.36379 -0.0085495 0.339725 0.280995 0.218312 0.453238 0.549879 0.650437 0.423106 0.420301 0.486472 -0.35311 -0.136097 0.0629343 0.0239003 0.203186 0.449629 0.563972 0.392781 0.142157 0.203596 0.236302 -0.413857 -0.213544 -0.0783685 -0.102096 -0.0465857 0.327279 0.31607 0.0497845 0.101908 -0.112525 0.290207 3 11 11 3 2 0 -12.5025 3.35498 11 11 5 -0.373057 -0.43981 -0.400887 -0.374224 -0.343492 -0.31833 -0.34638 -0.306328 -0.306468 -0.13366 0.00439277 -0.110472 -0.146574 -0.0228285 0.0500409 0.0108777 0.0166457 0.0412466 -0.00718547 0.0655694 0.123954 0.203935 0.146828 0.186507 0.301135 0.407275 0.386297 0.416242 0.41898 0.399217 0.264056 0.262095 0.263208 0.19072 0.254367 0.263471 0.281791 0.325431 0.281509 0.341601 0.379669 0.241017 0.176257 0.0773334 0.101796 0.0932208 0.117429 0.32782 0.397253 0.446811 0.459924 0.286511 0.151138 0.0896157 -0.0226431 0.108394 -0.0353283 0.0823956 0.433755 0.508934 0.418727 0.0486613 -0.225876 -0.393863 -0.430374 -0.306217 0.388187 0.117117 -0.0670508 -0.35639 -0.828107 -1.07083 -1.17442 -0.944433 -0.658407 -0.504023 -0.360969 0.691199 0.150031 -0.424985 -0.871346 -0.928699 -0.774189 -0.614039 -0.145721 0.109276 0.303527 0.192814 0.756274 0.148822 -0.249514 -0.35528 -0.173057 0.00931356 0.234905 0.397031 0.562161 0.586718 0.52773 0.643964 0.243404 0.0789541 0.0868096 0.130936 -0.0274725 -0.127037 -0.0330217 -0.0226274 0.0560353 7.64271e-05 0.697639 0.517299 0.355612 0.159364 -0.113919 -0.37873 -0.547066 -0.596468 -0.536971 -0.498914 -0.571578 2 1 -10.929 2.25586 11 11 5 0.1304 0.132035 0.0908603 0.125351 -0.000753658 -0.0691855 -0.11359 0.0620661 0.0312554 0.146401 0.190061 -0.254189 -0.26785 -0.264223 -0.277686 -0.212951 -0.132715 -0.119219 -0.294092 -0.240113 -0.106181 -0.0137937 -0.296086 -0.233953 -0.283381 -0.254674 -0.282236 -0.237673 -0.169931 -0.193357 -0.314365 -0.160078 0.0885231 -0.171247 -0.042475 -0.19309 -0.17981 -0.191458 -0.192011 -0.213398 -0.198299 -0.00360353 0.00564761 0.216564 -0.120393 0.0320209 -0.070744 -0.113239 -0.131074 -0.246939 -0.0383441 0.148468 0.209909 0.315977 0.364669 -0.23895 -0.25004 -0.148759 0.150397 0.899539 1.29298 1.35031 0.896865 0.384583 0.454017 0.448908 -0.507275 -0.236471 0.305094 1.10487 1.12327 0.813646 -0.0725572 -0.313363 -0.214331 -0.227589 -0.05538 -0.685064 0.0118054 0.221447 -0.265383 -0.664851 -0.851423 -0.598187 -0.175104 -0.107485 -0.0962316 -0.152501 -0.362554 0.0141587 -0.204972 -0.206578 -0.174595 0.118705 0.0184123 -0.260042 -0.258976 -0.155782 -0.300315 -0.241145 -0.0428756 0.11494 -0.111352 -0.267405 -0.149723 -0.121409 0.284083 0.340232 0.332638 0.397849 -0.0993561 0.0884017 0.0885472 -0.0652314 -0.0773401 -0.033941 0.188757 0.638159 0.547232 0.583836 0.38905 2 2 -9.74543 1.65092 11 11 5 -0.315293 -0.425622 -0.576526 -0.50969 -0.389691 -0.138376 -0.352368 -0.315648 -0.348087 -0.30497 -0.375514 -0.0977698 -0.256969 -0.411046 -0.465337 -0.328473 -0.210694 -0.166969 -0.283521 -0.192143 -0.341217 -0.264716 0.0065103 -0.351315 -0.0803152 0.189951 0.390104 0.340678 0.00416694 -0.120002 -0.13774 0.129511 0.0221194 0.134686 0.225196 0.162113 0.0474286 -0.180493 -0.250982 0.0428836 0.212563 0.276402 0.235057 0.113141 0.118306 0.234337 0.0394272 0.265011 0.39445 0.556611 0.547809 0.599717 0.414538 0.234917 0.107852 0.157293 0.387655 0.267261 0.458473 0.494366 0.451586 0.498196 0.377953 -0.00226176 -0.192171 -0.0868885 -0.0451991 0.229211 0.104336 0.141396 0.0515927 -0.162985 -0.163218 -0.521404 -0.595607 -0.556815 -0.373423 0.0947552 0.0381415 -0.386895 -0.759658 -1.02971 -0.978292 -0.799678 -0.503477 -0.480636 -0.280635 -0.171083 0.321698 -0.151831 -0.517329 -0.252019 -0.0735008 0.140149 0.237739 0.196401 0.2677 0.513771 0.690287 0.339425 0.095243 0.0723689 0.378922 0.647699 0.457169 0.153017 0.201355 0.150718 0.635364 0.729966 0.0424314 0.16811 0.249119 0.393548 0.0822602 0.00437767 0.0043503 -0.0345335 -0.0400382 0.162568 0.217317 3 11 11 3 2 0 -11.7705 2.18242 11 11 5 -0.485268 -0.541058 -0.470565 -0.444454 -0.462743 -0.396271 -0.311082 -0.171905 -0.0638938 0.077153 0.128664 -0.224949 -0.131169 -0.17728 -0.137679 -0.135264 -0.10164 -0.0163917 0.0212676 0.0799763 0.159039 0.169505 0.375391 0.398211 0.370426 0.323686 0.255846 0.126479 0.170353 0.31398 0.312494 0.274309 0.221744 0.482949 0.427413 0.447997 0.408633 0.306757 0.198878 0.327024 0.326933 0.295948 0.242202 0.198603 0.281567 0.324074 0.351827 0.362643 0.290407 0.235646 0.260172 0.30092 0.141919 0.200188 0.0903304 0.417401 0.463594 0.425927 0.182836 0.030355 -0.136105 -0.0321945 0.239539 0.313399 0.111482 -0.00937119 0.233532 -0.174477 -0.424532 -0.806931 -0.991565 -1.07351 -0.918649 -0.61397 -0.380282 -0.197955 -0.185348 -0.476761 -0.786936 -0.858923 -0.765808 -0.390057 -0.109726 0.126547 -0.0341679 -0.148081 -0.3125 -0.426359 -0.261161 -0.411646 -0.276391 0.00500279 0.348908 0.72326 0.936122 0.787215 0.36383 -0.0639409 -0.265107 0.2523 -0.00176647 0.0619296 0.218223 0.352761 0.551958 0.632324 0.496498 0.241274 0.0695052 -0.0669542 0.556197 0.0726687 -0.37077 -0.641062 -0.633905 -0.3815 -0.315779 -0.190643 -0.308333 -0.322206 -0.459181 2 1 -9.9544 1.40836 11 11 5 0.0766937 -0.0738809 -0.215851 -0.0198793 0.0321204 -0.0119092 0.104432 -0.0175142 0.120149 0.242781 0.258945 -0.411092 -0.212442 -0.178003 -0.308773 -0.258852 -0.330769 0.00537425 0.000965263 0.172803 0.0790902 -0.14948 -0.45692 -0.143013 -0.0816175 -0.190979 -0.380952 -0.574643 -0.2738 -0.0902468 -0.13284 0.018112 -0.147024 -0.444967 -0.389979 -0.427383 -0.452855 -0.342396 -0.180468 -0.177929 0.14402 -0.00503221 -0.0879619 0.0187499 -0.504731 -0.29044 -0.423197 -0.312163 -0.171864 0.047081 -0.159031 0.0269367 0.28895 0.163576 -0.0553083 -0.27088 0.379808 0.65202 0.801217 0.919961 0.850566 0.728533 0.641525 0.581334 0.125566 -0.0627685 0.804512 1.27325 1.01544 0.423661 0.0508983 -0.248313 -0.185347 0.234965 0.322226 0.24813 0.110811 0.485138 0.435356 -0.301588 -0.561564 -0.777357 -0.508281 -0.271921 -0.26444 -0.190978 -0.0128688 0.0153497 -0.520045 -0.632464 -0.490429 -0.0901826 -0.146925 -0.00755691 -0.187099 -0.142925 0.0708433 0.253837 0.184965 -0.319788 -0.130649 -0.0953034 0.0314101 -0.0283687 0.00390981 -0.130099 -0.480564 -0.169608 0.240673 0.309047 -0.482305 -0.274802 0.0647561 0.175054 0.587796 0.458917 0.424503 0.333275 0.497855 0.351939 0.181779 2 2 -9.73879 1.31135 11 11 5 -0.313044 -0.39516 -0.329639 -0.222151 -0.396149 -0.62628 -0.370028 -0.410177 -0.305352 -0.226196 -0.156392 -0.617326 -0.409341 -0.270846 -0.161854 -0.413977 -0.362279 -0.311243 -0.325824 -0.209599 -0.107582 -0.0409723 0.0131955 0.0552719 -0.103456 -0.329165 -0.0669994 -0.286338 -0.225161 -0.0922748 0.089504 0.232338 0.266246 0.239745 -0.0743491 -0.0429504 -0.0720161 -0.0493826 -0.0880699 0.0566091 0.0469963 0.127388 0.246982 0.238584 -0.105004 0.0877009 0.280535 0.537078 0.484037 0.391481 0.27551 0.271954 0.20382 0.470153 0.440641 0.327264 0.416151 0.546206 0.574863 0.376791 0.134858 0.201831 0.274481 0.307898 0.5528 0.267654 0.431646 0.229917 0.143045 -0.0664162 -0.401553 -0.607415 -0.441821 -0.394952 0.0210308 0.360288 0.0439517 -0.274464 -0.63252 -0.526892 -0.672285 -0.564924 -0.887382 -0.752939 -0.865357 -0.45917 -0.181847 -0.129472 -0.554232 -0.494156 -0.348706 -0.253885 -0.189751 0.10018 0.373551 0.310002 0.231192 0.0165589 -0.00846061 0.164833 0.073241 0.215903 0.373939 0.256976 0.558682 0.64284 0.73861 0.571793 0.610452 0.252786 0.455947 0.35595 0.214505 -0.0278473 -0.117384 -0.0192241 0.238048 0.375675 0.250158 0.530337 0.211026 3 11 11 3 2 0 -10.0315 1.50662 11 11 5 -0.347634 -0.384282 -0.413448 -0.206067 -0.201231 -0.13175 -0.153655 -0.252475 -0.0936001 -0.13199 0.138138 0.302995 0.100949 0.0535481 0.21698 0.241219 0.154231 0.110638 0.00502687 -0.0590531 -0.0303569 0.0784357 0.647354 0.495911 0.323151 0.438336 0.315551 0.362682 0.240945 0.183439 0.130188 0.0837988 0.0659064 0.613707 0.41512 0.325786 0.423209 0.227378 0.120877 0.0789424 0.0221782 0.0714339 0.0690283 0.0557416 0.277401 0.0766113 0.0526519 0.339591 0.461876 0.307343 0.104285 -0.0790318 -0.0721365 -0.0726623 0.0417388 -0.379954 -0.551471 -0.767875 -0.590663 -0.136606 0.393481 0.33309 0.135664 -0.0272652 0.012553 0.055151 -0.709497 -0.591676 -0.395798 -0.441175 -0.689361 -0.931871 -0.833755 -0.290375 -0.065258 -0.0450699 0.164627 -0.342684 0.0956322 0.374504 0.64926 0.57871 -0.0444656 -0.459854 -0.617232 -0.311564 -0.0688095 0.143977 0.0413489 0.649883 0.984585 1.03314 1.02602 0.707106 0.260611 -0.190845 -0.242635 -0.115126 0.108767 -0.463791 -0.0356924 0.114941 0.240666 0.16804 0.207287 0.0950519 -0.0812198 -0.0876319 -0.0477919 0.141088 -0.872396 -0.574992 -0.279169 -0.44891 -0.553385 -0.684702 -0.589054 -0.413489 -0.232856 0.0561285 0.289685 2 1 -9.03946 0.912665 11 11 5 -0.546358 -0.506426 -0.37858 -0.0751915 -0.0375077 0.0809685 0.231663 0.156864 0.0455587 0.0180196 -0.134887 -0.66082 -0.732313 -0.604578 -0.253746 -0.130612 -0.0791463 -0.199645 -0.107759 -0.05638 -0.0695317 -0.107429 -0.582171 -0.572713 -0.616294 -0.341584 -0.118402 -0.162085 -0.09194 -0.0105371 -0.054453 -0.0980223 -0.0627495 -0.348665 -0.262743 -0.292379 -0.353672 -0.0477743 0.0966224 0.083795 -0.0223669 0.0337101 -0.137348 -0.0860938 0.572329 0.68483 0.449279 0.503045 0.233472 0.0410738 0.100493 0.0767743 -0.12672 0.0827377 -0.133252 1.25573 0.956631 0.454831 0.582724 1.23912 1.08276 0.44497 -0.0249297 -0.267353 -0.098075 -0.100956 0.382176 -0.253452 -0.389671 -0.266458 -0.577364 -0.375185 0.145777 0.227551 -0.124771 -0.311143 -0.221526 -0.750992 -0.629082 -0.46658 -0.332437 -0.00316966 0.3767 0.325464 -0.171996 -0.276722 -0.140742 -0.334437 -0.462738 -0.169718 -0.510253 -0.671081 -0.663221 -0.114786 0.277784 0.383412 0.0614242 -0.0542011 -0.184128 0.145074 0.280208 -0.00845236 0.365165 0.325634 0.304584 0.412157 0.384815 0.212813 0.140959 0.190679 0.46688 0.660372 0.260822 0.261233 0.501689 0.667584 0.404346 0.133007 0.282852 0.19686 -0.127528 2 2 -9.26912 0.994808 11 11 5 -0.593699 -0.588335 -0.618941 -0.426606 -0.387302 -0.117907 -0.290856 -0.166125 -0.14793 -0.356963 -0.148358 -0.0503594 -0.250262 -0.497783 -0.299193 -0.123545 -0.209308 0.088723 0.09649 -0.161672 -0.220958 -0.331962 -0.103541 -0.00738204 -0.20737 0.195874 0.156313 0.443759 0.476163 0.096852 -0.0433948 0.0279138 -0.135033 0.276492 0.094711 -0.0234448 0.205306 -0.114169 0.0102218 -0.0821934 0.0987586 0.0991503 0.066645 0.0485836 0.549134 0.431926 0.372348 0.445614 0.511751 0.500768 0.25041 -0.0593434 -0.0313479 -0.0269134 0.234785 0.0680635 -0.0598894 -0.371484 -0.249375 0.47512 0.764291 0.815525 0.279817 0.0204592 -0.279048 -0.119256 -0.50498 -0.593784 -0.662874 -0.720598 -0.839833 -0.55454 -0.246283 0.261942 0.349703 0.286634 0.0383833 -0.322391 -0.428764 -0.396261 -0.183794 -0.319241 -0.451474 -0.7751 -0.51282 -0.286852 -0.00740814 -0.182864 0.343626 0.421684 0.703529 0.809176 0.605923 0.454239 0.236665 -0.057438 -0.210465 -0.223421 -0.370266 0.518924 0.431073 0.346415 0.405076 0.718797 0.790835 0.787212 0.337931 0.000765637 0.0347367 -0.24035 0.0110655 0.05879 0.200131 0.426177 0.255621 -0.0618007 0.0886382 0.296502 -0.477328 -0.352654 -0.537322 3 11 11 3 2 0 -6.43533 0.874931 11 11 5 0.527121 0.480587 0.386541 0.16999 0.0827977 0.0376546 -0.0960295 -0.130342 -0.25928 -0.234995 -0.292586 0.545562 0.373913 0.141155 0.0383011 -0.0174872 0.0325747 0.041615 -0.00273848 -0.0786335 -0.131505 -0.131132 0.307154 0.264297 0.0649841 -0.128428 -0.170764 -0.14209 -0.0213464 0.0484046 0.081351 -0.00862351 -0.111341 -0.21694 -0.0446901 0.207327 0.199431 -0.0501809 -0.0451395 -0.0831993 -0.00909385 0.111639 0.0837876 0.0746955 -0.390108 -0.438634 -0.399062 -0.226066 0.302536 0.0887046 -0.000763978 0.110637 0.165499 0.139687 0.0623208 0.190585 0.00343765 -0.400284 -0.997488 -0.964291 -0.0475461 0.0921935 0.117515 0.1205 0.183933 0.0627526 1.04275 0.907228 0.550462 0.0829915 -0.404135 -0.401337 0.00410745 -0.0297812 -0.0194691 0.168486 0.164223 0.553499 0.560745 0.593568 0.540039 0.311904 0.0138973 -0.0567227 -0.0213888 0.00476295 0.0906927 0.128493 -0.275022 -0.47408 -0.461935 -0.166227 0.0881019 0.0382403 -0.0481111 0.0216243 -0.0251034 -0.039921 0.0481775 -0.554818 -0.949777 -0.872988 -0.538861 -0.125124 0.0780623 0.121719 0.226209 0.183492 0.175875 0.16264 -0.638209 -0.764435 -0.686023 -0.486061 -0.183145 0.0839888 0.209161 0.340532 0.345347 0.340932 0.370324 2 1 -6.10336 0.730338 11 11 5 -0.723082 -0.324291 -0.391625 -0.377614 -0.241693 -0.142004 0.0295041 0.210483 0.259187 -0.0545821 -0.194919 -0.389934 -0.170935 -0.156323 -0.204774 -0.286296 -0.0976243 0.0136817 0.0225423 0.038723 0.0523022 0.0433076 0.0181395 0.151906 0.013715 0.0251453 -0.054494 0.00435553 -0.00357588 0.0395556 0.00307828 0.0399473 -0.00235911 0.297476 0.53915 0.63396 0.237983 -0.221601 -0.110766 0.116416 -0.0215877 -0.0291771 0.0315437 0.166884 0.276789 0.364862 0.66506 0.857841 0.236473 -0.428848 -0.257931 -0.0681167 0.00815705 -0.163544 -0.0437669 -0.640248 -0.320696 0.0377896 -0.220339 -0.283367 0.162961 -0.393742 -0.359676 -0.153234 -0.0470732 0.004984 -1.20517 -0.799063 -0.131992 0.610053 0.278916 -0.539613 -0.150734 -0.291102 -0.252393 -0.0791757 -0.153751 0.041205 -0.0571746 -0.331264 -0.293048 -0.162021 -0.0347325 -0.0698195 -0.071035 -0.142715 -0.294571 -0.174192 0.449824 0.379254 0.311007 -0.0299333 -0.16557 -0.121528 -0.0850453 -0.0645533 -0.220003 -0.298142 -0.182894 1.03902 0.838161 0.604006 0.555388 0.073173 0.18436 0.252539 0.0864167 -0.023424 -0.157817 -0.0790231 0.679078 0.967238 0.711742 0.437065 0.321497 0.236957 0.134242 -0.0636212 -0.139497 -0.154295 -0.196306 2 2 -7.71297 0.855562 11 11 5 -0.0674837 0.180787 0.207378 0.242707 0.0296251 -0.166284 -0.125248 -0.26468 -0.232107 -0.309554 -0.322036 0.355511 0.391281 0.257566 0.311938 0.183431 0.117233 0.283791 0.0987271 -0.0980611 -0.0204031 -0.226027 0.467277 0.147786 0.0887117 0.165161 0.103197 -0.103468 0.0155029 -0.0604238 -0.0793892 -0.304059 -0.0725162 -0.280111 0.237896 0.813781 0.409465 0.0302224 -0.118764 0.00944994 0.0465196 0.0920572 0.213628 0.0898715 -0.376417 -0.233083 0.251722 0.289513 0.783836 0.161813 -0.212649 0.0959393 -0.0304277 0.162325 -0.0981711 -0.49875 -0.768569 -0.806704 -0.942627 -0.698881 0.212153 0.356012 0.00193862 -0.0827975 0.238255 -0.430877 0.614632 0.243144 0.188191 -0.298185 -0.596671 -0.662408 -0.00660402 -0.0907402 0.017077 -0.0253479 -0.251573 0.905419 1.14606 1.07049 0.775501 0.409798 -0.268129 -0.507102 -0.374055 0.0168753 -0.0414971 0.0980809 0.68194 0.573072 0.350154 0.486267 0.562081 0.188626 -0.217499 -0.149338 -0.42508 -0.424757 -0.0909248 0.564513 0.12883 -0.0923719 -0.0600709 0.0693007 -0.0969572 -0.334204 -0.277607 -0.434022 -0.380458 -0.171675 -0.0452977 -0.37804 -0.225973 -0.556158 -0.441839 -0.188644 -0.41458 -0.305473 -0.108042 -0.158052 -0.104119 3 11 11 3 2 0 -16.6185 5.88511 11 11 5 -0.142125 0.0597374 0.30647 0.584441 0.70572 0.423447 0.119487 -0.0697023 -0.0219779 -0.0036859 -0.046082 -0.0934249 -0.077944 -0.0674745 0.20978 0.550716 0.44274 0.0799705 -0.190888 -0.19487 -0.139407 -0.176359 0.01729 -0.240412 -0.328215 -0.149821 0.25646 0.443667 0.201942 -0.0401261 -0.105564 -0.0566452 -0.299529 -0.075738 -0.235827 -0.423005 -0.454305 -0.107115 0.389763 0.386274 0.0966887 0.0404698 0.00405712 -0.201891 -0.321063 -0.311929 -0.339416 -0.360201 -0.304631 0.595627 0.774001 0.237223 0.0351462 0.0938045 -0.163816 -0.464318 -0.347213 -0.403496 -0.55065 -0.390764 0.82686 0.828133 0.314167 -0.0740203 -0.151985 -0.260368 -0.374533 -0.294502 -0.602012 -0.819904 -0.0615961 1.09749 0.765208 0.0538147 -0.366639 -0.354909 -0.416912 -0.257417 -0.26784 -0.483229 -0.874646 0.420545 1.07218 0.527861 -0.153243 -0.514798 -0.419251 -0.36334 -0.406772 -0.447827 -0.405838 -0.531597 0.758161 0.974751 0.42133 -0.132201 -0.382177 -0.249199 -0.120439 -0.278926 -0.188411 -0.455847 -0.216371 0.829088 0.732478 0.240517 -0.0724382 -0.0990183 0.0414886 0.119471 0.0210902 -0.00155368 -0.207433 0.309359 0.806562 0.521497 0.0476254 -0.101153 0.0510761 0.226012 0.246267 2 1 -12.0504 2.0264 11 11 5 -0.0287071 -0.0423312 0.0624088 -0.242392 -0.624594 -0.628891 -0.479884 -0.222466 -0.0797308 0.123912 0.14631 0.0244171 0.10864 0.101359 0.237078 -0.32085 -0.725033 -0.45096 -0.0664778 -0.0673746 0.217547 0.343986 -0.160898 0.0612039 0.00465834 0.194738 -0.0595643 -0.638944 -0.485898 -0.114675 -0.0799746 0.397739 0.196561 -0.282377 0.0125019 0.207875 -0.0586799 -0.0144234 -0.168796 -0.48424 -0.246435 -0.179247 -0.0782158 -0.283172 -0.226748 0.130279 0.623716 0.230248 0.250799 0.300568 -0.482512 -0.0208164 -0.158464 -0.175321 -0.269298 0.275798 0.260164 0.431551 0.306552 0.855425 0.583671 -0.662159 0.085705 -0.0234492 -0.128169 -0.0511389 0.067649 0.105677 0.0910073 0.702752 1.46484 0.36929 -0.726266 0.110668 0.385053 0.0444857 -0.219117 0.111141 -0.0738321 0.242938 0.722617 1.44841 -0.29402 -0.772938 -0.00307783 0.147044 0.0687948 -0.0458592 -0.23094 0.230557 0.742103 0.81522 1.22574 -0.759974 -0.768883 -0.0727364 -0.000811275 0.00493788 -0.0924097 -0.00903463 0.146976 0.72275 0.701084 0.492923 -0.921835 -0.769248 -0.162863 0.0467363 -0.0831824 -0.00836126 -0.5634 -0.0481761 0.222761 0.365177 -0.217384 -0.937234 -0.609244 -0.264299 -0.145204 -0.0976876 -0.163409 2 2 -16.5028 3.29284 11 11 5 0.0906583 0.216611 0.226542 0.283773 0.259451 0.108219 0.209953 0.159412 -0.00460099 -0.143545 0.0397337 0.0348625 0.377052 0.385002 0.0813062 0.0101919 0.149203 0.136385 -0.0517333 -0.303069 -0.0558416 0.0342969 0.340386 0.120758 0.308343 0.153168 0.003348 0.340065 0.25657 -0.177381 -0.0620931 0.0340497 -0.0217093 0.245567 0.2462 0.374391 0.133652 -0.204332 -0.0301665 0.0757071 -0.136859 0.0214646 0.131077 0.134181 0.0541963 0.186345 0.338869 -0.0551048 -0.448616 -0.275264 0.46961 0.184874 0.0930081 0.464062 0.493525 -0.041467 -0.0307927 0.099484 -0.442539 -0.624966 -0.174013 0.949631 0.662519 0.46493 0.522763 0.529021 0.13783 0.025498 0.124942 -1.0355 -0.820483 0.0402381 1.10989 0.480188 0.161548 -0.065621 0.0812623 0.16369 0.118487 -0.149291 -1.24574 -0.601798 0.328589 1.03576 0.234773 -0.318692 -0.382683 -0.533179 -0.186755 -0.405359 -0.570387 -1.06389 -0.144537 0.506207 0.851112 0.222334 -0.496521 -0.815904 -0.400529 -0.368757 -0.490338 -0.924512 -1.09413 0.00315877 0.540629 0.69953 -0.139896 -0.455394 -0.485893 -0.499027 -0.148407 -0.307934 -1.30326 -0.739416 -0.0172868 0.52299 0.599803 0.406297 0.16158 -0.130206 -0.165334 3 11 11 3 2 0 -17.0872 6.34392 11 11 5 -0.224079 -0.328463 -0.391441 -0.52187 -0.302616 -0.0907886 0.341058 0.353733 0.107549 0.0296344 -0.155117 -0.212944 -0.0958826 -0.157425 -0.343091 -0.314385 -0.112716 0.428783 0.714756 0.329376 -0.0624297 -0.22795 -0.320268 -0.194725 -0.390286 -0.520709 -0.566902 -0.204066 0.601801 0.796898 0.235098 -0.228479 -0.480183 -0.298933 -0.144409 -0.361735 -0.568802 -0.715911 -0.139053 0.959304 0.631251 -0.0563132 -0.461698 -0.54329 -0.305202 -0.223973 -0.391926 -0.636015 -0.641281 0.303482 0.874414 0.388672 -0.28173 -0.393601 -0.360324 -0.370833 -0.102381 -0.228209 -0.711405 -0.227328 0.747973 0.707049 0.141101 -0.217297 -0.10666 0.086881 -0.136933 -0.194721 -0.444359 -0.407495 0.107965 0.757749 0.444316 -0.129323 -0.150725 0.0775963 0.239379 0.0577459 -0.103978 -0.355794 -0.193159 0.369415 0.655013 0.101095 -0.373411 -0.190305 0.108849 0.267559 -0.0380405 -0.121366 -0.244748 -0.0297798 0.645159 0.647933 -0.0554593 -0.396796 -0.219912 0.0156322 0.165069 -0.0500698 -0.0903408 -0.165722 0.146015 0.908553 0.735203 0.110313 -0.174727 -0.027191 0.0357023 0.0762674 -0.00458348 -0.241843 -0.204405 0.437826 1.24602 1.02823 0.611686 0.289182 0.322754 0.205736 0.0875205 2 1 -12.129 2.44488 11 11 5 -0.142562 -0.0916453 -0.0949567 0.0454783 0.0472023 -0.210506 -0.386411 -0.260138 -0.072012 -0.114338 -0.164085 -0.218172 0.167925 0.186339 0.648896 0.504463 0.159926 0.216358 0.0271548 -0.0571455 -0.225331 -0.208791 0.309818 0.248419 0.388962 0.542146 0.781216 1.12249 0.607331 -0.330043 -0.193062 0.148013 -0.230259 0.0350372 0.245191 0.379968 0.200543 0.702922 1.24886 -0.0995586 -0.529914 0.0172589 0.204095 -0.00963011 -0.0927685 -0.0660041 0.362825 0.206374 0.998551 0.959547 -0.650825 -0.229269 -0.129403 -0.0377361 0.0240535 -0.0545482 -0.0957947 -0.0668892 0.419215 1.25765 0.495096 -0.951056 -0.285074 0.00758305 -0.0522208 -0.0503405 -0.218597 -0.443731 0.0939557 0.582956 0.871372 -0.267685 -0.764482 -0.2909 0.043513 0.0873101 0.0167525 -0.242399 -0.231083 0.000929658 0.439416 0.446466 -0.488205 -0.585144 -0.256779 -0.133238 -0.0308801 -0.0903905 -0.253991 -0.231201 -0.0967751 0.412831 0.307569 -0.612099 -0.482079 -0.257581 -0.223865 -0.179415 -0.0293405 -0.0548517 -0.0522698 -0.029555 0.364995 0.0186779 -0.628442 -0.512615 -0.357553 -0.419726 -0.381179 -0.247015 0.268646 -0.128477 0.0261619 0.221529 -0.104944 -0.731972 -0.61664 -0.40364 -0.241427 -0.24636 -0.152963 2 2 -16.1921 3.29246 11 11 5 0.537718 0.0230438 -0.000412442 -0.0444995 -0.0702418 -0.0663498 0.023913 -0.0243397 -0.0615222 0.277908 0.328971 0.282009 0.248132 0.184272 0.304096 0.150026 -0.0764238 0.128859 0.334468 0.340557 0.232094 0.687709 0.0808282 -0.00263943 -0.0673813 0.00872277 -0.164473 -0.558389 0.15596 0.657195 0.62334 0.47009 0.357997 0.207329 0.0210276 -0.0799003 -0.0691888 -0.558952 -0.507018 0.674269 0.914074 0.398618 -0.104061 -0.0833822 0.0169014 -0.152352 -0.16521 -0.322386 -0.839952 -0.324003 0.650027 0.76346 -0.334357 -0.495546 -0.742222 -0.0185604 0.185486 0.0550908 -0.68787 -0.601718 0.23432 1.08868 0.383321 -0.338831 -0.452218 -0.65775 -0.16993 -0.102271 -0.323317 -0.971112 -0.558805 0.275915 1.2093 0.193227 0.162263 -0.139664 -0.296142 0.0276788 0.0342061 -0.489355 -1.05561 -0.386493 0.137133 0.609795 -0.0749269 0.235146 0.369528 0.277081 -0.146311 -0.163613 -0.702217 -1.05683 -0.486495 0.33803 0.611049 0.182782 0.299488 0.356957 0.372072 0.0773682 -0.212501 -0.680943 -0.7671 -0.339014 0.212092 0.0157224 -0.185974 -0.074701 0.289766 0.334785 0.174312 -0.167753 -0.389718 -0.866867 -0.161281 0.10718 0.163594 -0.00898775 0.188862 0.11831 0.24593 3 11 11 3 2 0 -16.7148 5.47923 11 11 5 -0.065709 -0.390871 -0.350786 -0.71445 -0.678384 -0.668196 -0.168329 0.402044 0.494314 0.115609 -0.275942 -0.0817173 -0.429191 -0.362148 -0.302896 -0.34295 -0.303521 0.0627026 0.61704 0.431575 -0.0193822 -0.096221 -0.0252343 -0.160354 -0.182402 -0.292488 -0.410426 -0.164542 0.249493 0.570604 0.201445 0.0127378 0.0449472 0.112794 -0.0608719 -0.104187 -0.407342 -0.432258 -0.0598749 0.387361 0.31556 0.031753 -0.0167351 0.138566 0.0194717 0.0180079 -0.180019 -0.33901 -0.27373 0.211228 0.445344 0.0375502 -0.292645 -0.202847 -0.0204843 0.067118 0.0465217 -0.188531 -0.333469 0.0439405 0.524228 0.429541 -0.127053 -0.334426 -0.150546 -0.0799649 0.0682568 0.0160399 -0.158219 -0.151609 0.241057 0.787 0.660529 0.0154152 -0.164418 -0.00565632 0.0258628 0.0475512 -0.0916729 -0.167705 -0.0330555 0.509639 1.08831 0.891438 0.39526 0.0765827 0.0149419 -0.0273098 -0.101616 -0.233589 -0.305107 -0.0410204 0.549295 1.12768 1.03589 0.65626 0.322506 0.201175 0.0379295 -0.281212 -0.380237 -0.403874 -0.242136 0.273878 1.04325 0.868486 0.213348 -0.00728892 0.0767459 0.0530451 -0.28752 -0.257397 -0.343722 -0.503474 -0.343174 0.138979 -0.0968641 -0.666027 -0.755295 -0.59163 -0.736877 2 1 -13.154 2.54035 11 11 5 -0.0687691 -0.0745295 0.0989519 0.223633 0.663755 0.794182 0.731161 0.338671 -0.168898 -0.482497 -0.113132 -0.288517 0.00438586 0.0606347 0.148425 0.664812 0.66663 0.413625 -0.179422 -0.368588 -0.233757 -0.177232 -0.269881 -0.168098 -0.29801 -0.060624 0.491252 0.492643 0.258401 -0.36278 -0.441186 -0.0170682 -0.0673543 -0.350201 -0.27382 -0.431542 -0.11615 0.490497 0.585627 0.11063 -0.558276 -0.401273 -0.0937234 -0.0330664 -0.198964 -0.147373 -0.229801 0.174685 0.580811 0.162919 -0.436056 -0.50466 -0.346662 -0.231905 -0.110329 -0.350818 -0.204827 -0.270738 0.205648 0.340354 -0.170549 -0.681079 -0.466797 -0.272818 -0.258451 -0.311138 -0.300544 0.0405929 -0.201542 0.17974 0.0663839 -0.269366 -0.859658 -0.507658 -0.315778 -0.339128 -0.308678 0.0997296 0.0474421 -0.230448 0.154597 -0.121028 -0.706166 -0.808695 -0.49588 -0.377054 -0.269484 -0.263384 0.306926 0.0217249 -0.224327 0.150865 0.0227454 -0.225353 -0.531676 -0.275711 -0.0937359 -0.0321036 -0.173232 0.38011 -0.026797 -0.0825554 0.326349 0.573911 0.214117 0.271015 0.605041 0.752688 0.812795 0.613748 0.133733 -0.197265 -0.37418 0.210051 0.478012 0.571864 0.514883 0.678799 1.08075 1.1327 0.759143 2 2 -16.8023 3.4226 11 11 5 -0.00392403 -0.0424595 -0.0605445 -0.410218 -0.393982 -0.297164 -0.142251 0.273937 0.302906 0.151979 -0.380006 0.0161888 -0.164402 0.0185347 -0.227891 -0.407712 -0.323917 -0.000857581 0.418533 0.212106 -0.110444 -0.535372 -0.168409 -0.034838 -0.029401 -0.186643 -0.372907 -0.335969 0.321571 0.447634 0.321549 -0.212236 -0.482407 0.0488297 -0.126167 0.0214977 -0.28849 -0.468795 -0.345198 0.45272 0.662048 0.354094 0.327015 0.240373 -0.00220353 -0.0413986 -0.168592 -0.399233 -0.814608 -0.323308 0.306063 0.436399 0.1243 0.0820514 0.26313 -0.102654 -0.128684 -0.561311 -0.725005 -1.02449 -0.495008 0.307375 0.0218763 0.0695591 0.0430418 0.380984 0.0913428 -0.115632 -0.266936 -0.804243 -1.09878 -0.088604 0.110354 -0.302896 -0.0846422 0.0922539 0.286214 0.382531 0.0624894 -0.388098 -0.785567 -0.73887 0.0772801 0.406103 0.0150951 -0.260269 -0.443677 -0.0451447 0.333892 0.13233 -0.0575113 -0.336842 -0.206558 0.638038 0.968339 0.610751 0.216335 0.0513399 0.225197 -0.0338018 -0.202896 -0.137448 0.123457 0.275945 1.19359 1.52092 0.989311 0.277555 0.343416 0.623031 -0.30111 -0.24456 -0.371567 -0.313786 0.110035 0.869851 0.846235 0.216948 -0.0364923 0.205212 0.0833412 3 11 11 3 2 0 -16.9073 4.66413 11 11 5 -0.0173231 -0.104737 -0.324933 -0.311281 -0.328772 -0.327761 -0.218687 0.128227 0.289291 0.0787177 0.0907572 0.0363354 -0.00765678 -0.253821 -0.336031 -0.345218 -0.262228 -0.0282568 0.317348 0.0834719 -0.172895 -0.129306 0.129705 0.0728595 -0.221235 -0.273183 -0.135802 0.0917319 0.410583 0.515581 0.0917228 -0.249283 -0.136924 0.142502 -0.10891 -0.239336 -0.149423 0.076552 0.392818 0.770884 0.797864 0.376676 -0.031736 -0.11772 0.0603406 -0.266648 -0.200338 -0.0681693 0.146292 0.654029 1.18572 1.05078 0.605928 0.241722 0.160184 -0.112691 -0.424468 -0.35261 -0.259577 0.147202 0.707313 1.49797 1.1039 0.737154 0.522588 0.447752 -0.218178 -0.461947 -0.328858 -0.525536 -0.253211 0.214519 0.731543 0.384032 -0.0982798 -0.301646 -0.22744 -0.0590783 -0.351417 -0.137785 -0.496833 -0.582301 -0.536031 -0.214963 -0.469745 -0.803698 -0.696835 -0.694652 0.187249 -0.0138043 0.197214 -0.0241295 -0.405989 -0.467506 -0.276606 -0.465896 -0.687332 -0.843403 -0.742653 0.261969 0.189948 0.335165 0.382037 0.198541 -0.0112695 -0.149749 -0.0942602 -0.142465 -0.12132 0.0812813 0.000392174 0.152946 0.171725 0.391144 0.404271 0.0554229 -0.112996 -0.0646191 -0.162127 -0.00809895 0.267737 2 1 -11.6201 1.64655 11 11 5 -0.471593 -0.339796 -0.22802 -0.032839 0.127856 0.400088 0.519339 0.334733 -0.210169 -0.457847 -0.298413 -0.300569 -0.0786997 -0.0404554 -0.103253 0.108092 0.376345 -0.0639113 -0.109093 -0.363232 -0.350287 -0.244759 -0.136334 -0.0574242 -0.137867 0.130955 0.319487 0.15338 0.0511092 -0.422105 -0.52208 -0.361289 -0.211866 -0.112903 0.375237 -0.17579 0.155265 0.309911 -0.252529 -0.272052 -0.660446 -0.589314 -0.479149 -0.507003 0.146203 0.189318 -0.0200637 0.138196 0.18135 -0.239857 -0.421373 -0.782714 -0.433922 -0.392843 -0.337061 0.58732 0.279945 0.0632057 0.250889 0.256619 0.177384 -0.337285 0.11546 0.173258 0.268838 0.199334 0.686054 -0.0424069 -0.0919755 0.129049 0.815964 0.603689 0.767187 0.723605 1.15891 1.17959 1.02836 0.271097 -0.0749895 -0.386744 -0.166988 0.718197 0.425312 0.3673 0.195331 0.589011 1.0468 0.85858 -0.101725 -0.165811 -0.327836 -0.172591 -0.0756432 0.0337394 -0.575381 -0.38016 -0.145953 -0.0308923 0.259675 -0.140115 -0.267573 -0.288853 -0.1008 0.0266588 -0.0653415 -0.253628 -0.337265 -0.126426 -0.0547601 -0.0545237 0.0479153 -0.168022 -0.10418 -0.184704 0.0908284 -0.279714 -0.255822 -0.450822 -0.257844 -0.257067 -0.469188 2 2 -16.3332 2.79728 11 11 5 -0.00317311 0.205487 -0.133487 -0.298308 -0.288481 -0.306507 -0.0975782 0.37034 0.617831 0.463333 0.380272 -0.342576 0.107864 0.13923 -0.31118 -0.479927 -1.11825 -0.546655 0.0799104 0.335346 0.00206646 0.292094 -0.0181396 0.25194 -0.241072 -0.371775 -0.706867 -0.973943 -0.48696 0.334548 -0.0339317 -0.347948 0.359096 0.156593 -0.0333194 -0.323864 -0.476974 -0.74902 -1.09135 -0.261185 0.3914 0.19032 -0.027874 0.0116623 0.361645 0.264518 0.165023 -0.0933279 -0.462985 -0.747831 0.330975 0.526541 -0.0146186 -0.319308 -0.119287 0.0711347 -0.0881625 0.175679 -0.0535057 0.21034 0.434448 1.43221 1.35222 1.10004 0.73806 0.367896 -0.028099 -0.326693 -0.126658 -0.131091 0.351648 0.885649 1.66775 1.23964 0.640912 0.38958 0.271486 -0.317795 -0.413252 -0.424189 -0.564527 -0.283271 0.128208 0.375285 0.203798 -0.189608 -0.0941886 0.132559 -0.0905273 0.00430315 0.00868607 -0.281526 -0.46168 -0.334568 -0.0199254 -0.210263 -0.271964 -0.38369 -0.318937 0.024738 -0.0677332 0.0441556 0.211571 -0.0546122 -0.173659 -0.0535406 -0.18531 -0.235905 -0.271279 -0.347899 0.216545 0.0627662 -0.00771542 0.00329767 0.104212 -0.200505 0.0820189 -0.0966892 -0.114058 -0.109379 -0.108772 3 0 0 0 3 12936704 -1 0 3 11 11 3 2 0 -15.1345 2.77323 11 11 5 -0.240199 -0.286933 0.523202 1.30985 1.42327 1.13602 0.712056 0.39949 0.0662696 -0.308427 -0.527489 -0.555511 -0.424107 0.23418 0.948111 1.08699 0.776024 0.329176 0.282461 0.346788 0.0756631 -0.509776 -0.730041 -0.353601 -0.250071 0.410777 0.221721 -0.092871 -0.308581 -0.516219 -0.26672 -0.193257 -0.679774 -0.542332 -0.218976 -0.6359 -0.363349 -0.203634 -0.364539 -0.878157 -0.942226 -0.585174 -0.601589 -0.854135 0.278165 0.0726041 -0.469595 -0.893436 -0.572504 -0.307086 0.0765681 0.308761 0.0187881 -0.240931 -0.168347 0.735371 0.474233 0.0854764 -0.158483 -0.124569 0.0442923 0.39569 0.331283 0.243035 0.148673 0.298957 0.550161 0.158516 -0.062435 -0.178924 -0.0700125 0.183017 0.174847 0.0896625 0.204499 0.181222 0.327069 0.231362 -0.104337 -0.15322 -0.21676 -0.0827563 0.0734673 -0.0369658 0.0124194 0.23018 0.388767 0.420712 0.082424 -0.0582885 -0.0260162 -0.176652 -0.104068 0.188362 0.116893 0.170944 0.245354 0.340842 0.3159 0.119869 -0.00739085 -0.0371934 -0.199233 -0.359326 -0.328028 -0.284581 -0.0912628 0.0562673 0.00276043 -0.0650943 0.389244 0.0928609 -0.0103381 -0.12132 -0.220729 -0.346982 -0.332128 -0.222007 0.0795744 0.0160411 0.0273731 2 1 -11.8523 1.9515 11 11 5 0.0779907 -0.00779789 0.281606 -0.135472 -0.315703 -0.608599 -0.547082 -0.452474 -0.434547 -0.282779 0.169834 0.168026 0.159998 0.410857 0.453666 0.11658 0.277795 0.313079 0.287749 0.343985 -0.0121759 0.144407 -0.110417 0.0932868 0.615541 0.754742 0.466752 0.668605 0.970808 1.17948 1.18378 0.488141 0.140636 -0.114942 -0.527493 -0.0349305 1.2396 0.333536 0.125474 0.31387 0.222364 0.236958 -0.108857 0.030247 0.0322729 -0.135974 -0.346328 -0.0759991 -0.0101584 -0.561497 -0.519016 -0.155892 -0.183993 -0.256071 0.189196 -0.642543 -0.149943 0.00784428 -0.253529 -0.156854 -0.419041 -0.12547 -0.190248 -0.149607 -0.156974 -0.219397 -0.313929 -0.0845916 -0.250805 -0.0942854 -0.269488 -0.451931 -0.539406 -0.457738 -0.503447 -0.575913 -0.566396 -0.135045 0.0374346 -0.182938 -0.154746 -0.200583 -0.544983 -0.570209 -0.434481 -0.398346 -0.390111 -0.463726 -0.0804822 0.0505432 0.08671 -0.148613 0.0198923 -0.0986572 -0.318525 -0.0511143 0.102502 0.118325 0.384165 0.119752 0.0943946 0.384801 -0.299183 0.038663 -0.213028 -0.224252 0.0885576 0.459846 0.440516 0.692871 0.0625891 -0.182443 0.179712 -0.130471 -0.177439 -0.0879999 -0.0933258 0.27564 0.605039 0.615529 0.734235 2 2 -11.4892 1.58452 11 11 5 -0.289662 -0.44926 -0.605895 -0.0668361 0.174117 0.475579 0.0041544 -0.504147 -0.630169 -0.0560467 0.297887 -0.024131 0.066371 0.143671 0.711706 0.930446 1.10229 0.835445 0.442293 0.526889 0.680082 0.241522 -0.399816 0.115828 0.159089 0.800412 0.630362 0.485448 0.110723 -0.11066 0.377055 0.726611 -0.0252627 -0.516138 -0.302096 -0.288761 0.211053 0.47179 0.0508798 -0.48922 -0.396445 -0.0630119 -0.227659 -1.05463 -0.292738 -0.727365 -0.608135 -0.838877 -0.60685 -0.457582 -0.0192462 0.24929 -0.242046 -0.464259 -0.995404 0.395059 0.287693 0.1721 -0.0538667 -0.730845 -0.590111 0.102717 0.162062 -0.269197 -0.445891 -0.512962 0.687519 0.427615 0.0445219 -0.246713 -0.428277 0.141584 0.0917928 -0.132466 -0.463313 -0.6891 -0.490289 0.554741 0.271403 0.0349744 0.120622 -0.0332887 0.0722121 0.154247 0.00213686 -0.306197 -0.228522 -0.0541399 0.20391 0.0286196 0.0891218 0.250185 0.220788 0.382672 0.36129 0.228794 0.102457 0.232989 0.29905 -0.038862 -0.212683 0.0582056 0.0167318 0.0849567 0.109748 0.201761 0.195674 0.308938 0.36792 0.28144 -0.446494 -0.271267 0.125472 -0.0651128 -0.0713069 -0.0703779 0.0346619 -0.221845 -0.214984 -0.0134922 0.124576 3 11 11 3 2 0 -14.9946 3.49194 11 11 5 0.459405 1.21625 1.12888 0.845885 0.449791 0.0173125 -0.276221 -0.405237 -0.296109 0.0366514 -0.0130595 0.220807 0.900616 0.935486 0.915083 0.655253 0.495198 0.3451 -0.19013 -0.656629 -0.473013 -0.28759 -0.183897 0.512791 0.447618 0.317526 -0.0386994 -0.372056 0.0900312 0.0459155 -0.753798 -0.667297 -0.234515 -0.511875 -0.262019 -0.270915 -0.314382 -0.471685 -0.990529 -0.832857 -0.435194 -0.970336 -0.392172 0.217213 -0.54366 -0.376667 -0.369388 -0.395829 0.143714 0.199256 -0.314712 -0.71483 -0.525898 0.375454 0.567658 -0.327853 -0.444327 -0.287625 0.217029 0.658967 0.459854 -0.0658363 -0.110653 0.243569 0.667414 0.459391 -0.013582 -0.14823 0.0153176 0.461976 0.272463 0.27643 0.0762925 0.0337386 0.260308 0.492373 0.191683 -0.113089 -0.220603 -0.0400665 0.176501 -0.307564 -0.0367354 0.0697679 0.128446 0.277623 0.252507 0.0802112 -0.0896028 -0.0999546 0.103047 0.167512 -0.178532 0.146995 0.370691 0.349202 0.302993 0.275554 0.0890572 -0.0582276 -0.146366 -0.233839 -0.248327 -0.242813 -0.0300364 0.125136 0.170896 0.0262795 -0.0574657 -0.195156 0.0564793 -0.257333 -0.490301 -0.385804 -0.389288 -0.161139 -0.0919965 -0.110866 -0.064761 -0.0953341 -0.210091 2 1 -13.3007 2.19617 11 11 5 0.469477 -0.241478 -0.588556 -0.738598 -0.649079 -0.638929 -0.45029 -0.0923378 0.292058 0.322154 0.170419 0.385541 0.240633 -0.118145 -0.10867 -0.127532 0.0327252 -0.0450173 0.124668 0.342158 0.445809 0.229591 0.61099 0.530087 0.234653 0.454763 0.669374 0.946981 0.614062 0.080576 0.174541 0.16495 0.432754 0.407034 0.574304 0.241159 0.485776 0.722965 0.481268 0.611597 0.334319 -0.0426629 0.253448 0.552196 0.0878211 0.390141 -0.186808 -0.435298 -0.342791 -0.170567 -0.712097 -0.617334 0.410191 0.650593 -0.0809169 -0.365952 -0.180291 -0.45911 -0.31095 -0.375272 -0.462785 -0.250857 -0.0898065 0.129236 -0.169093 -0.459464 -0.308824 -0.032434 -0.275571 -0.470145 -0.371718 -0.406282 -0.523855 -0.450351 -0.492972 -0.442546 -0.394694 -0.276716 -0.22923 -0.38106 -0.664073 -0.521616 -0.289561 -0.416004 -0.548861 -0.549614 -0.628605 -0.413612 -0.0208284 -0.037401 -0.0149054 -0.182013 -0.15221 0.126617 -0.11188 -0.0988381 0.0278051 0.11379 0.139704 0.168832 -0.102452 0.101538 -0.186178 -0.277294 0.199594 0.315689 0.311971 0.476498 0.407274 0.50698 0.101778 -0.161247 -0.122393 -0.176268 -0.254257 0.39953 0.685206 0.624376 0.49944 0.418086 0.57148 2 2 -13.0382 2.05616 11 11 5 -0.51913 0.119952 0.0208816 0.0801134 -0.171046 -0.823385 -0.584327 0.0434051 0.233235 0.709404 0.581762 -0.202894 0.291335 0.635549 0.665276 0.363252 -0.0497225 -0.0033958 0.418072 -0.0441492 -0.0638116 0.126643 0.241254 0.744999 0.956414 0.795665 0.547294 0.323912 0.614306 1.03599 -0.0335131 -0.770726 -0.349714 0.0761129 0.297219 0.103481 -0.0383839 -0.492258 -0.644556 -0.113917 0.151092 -0.839435 -0.863706 -0.057443 -0.393276 -0.184154 -0.16743 -0.410733 0.00685462 0.228127 -0.00578976 -0.917855 -1.12446 -0.148952 0.29258 -0.23055 -0.649359 -0.713795 -0.251388 0.14347 0.316059 -0.467437 -0.588468 -0.311783 0.255303 0.351754 -0.123513 -0.320641 -0.281585 0.18546 0.0680348 0.00695447 -0.515954 -0.806665 -0.327524 0.149905 0.172477 0.164579 -0.379997 -0.0162733 0.441398 -0.107958 -0.16183 -0.397815 -0.545402 -0.118021 -0.00969402 0.228929 0.0909587 -0.0886314 0.371027 0.671852 0.0267134 -0.0149106 -0.103915 -0.0657725 0.0787963 0.162808 0.534399 -0.0409388 -0.0228557 0.20551 0.283272 0.280925 0.313629 0.339004 0.45157 0.344624 0.385718 0.298862 -0.0700971 -0.159496 -0.205568 -0.112521 -0.119286 -0.084258 -0.0779246 -0.00038037 0.0325742 0.183114 0.266518 3 11 11 3 2 0 -15.1084 2.59991 11 11 5 0.867391 0.483705 0.166696 -0.132897 -0.220991 -0.0902528 0.144146 0.394623 0.362525 0.326291 0.250708 1.05398 0.776076 0.495572 0.185365 -0.132756 -0.367052 -0.33093 -0.189132 -0.0535806 0.0920785 0.103457 0.741892 0.692063 0.501775 0.415869 0.36637 -0.299428 -0.728949 -0.623883 -0.372879 -0.0688327 -0.0155017 0.264063 -0.122225 -0.334071 -0.750332 -0.487119 -0.192151 -0.822542 -0.658279 -0.169275 -0.137312 -0.108542 -0.447399 -0.215484 -0.615632 -0.803774 -0.765942 -0.762697 -1.18675 -0.0229759 0.402026 -0.012955 -0.164359 -0.393849 -0.0269516 0.210734 0.221173 -0.575348 -0.973848 0.133364 0.965518 0.705609 0.0198024 -0.214676 -0.294408 0.224592 0.69832 0.32398 -0.0892452 0.0622562 0.614355 0.842456 0.479947 -0.117738 -0.243892 -0.0334119 0.304805 0.0817862 0.141661 -0.0121112 0.11551 0.478353 0.390951 0.145883 -0.0885042 -0.279853 0.023486 0.044373 -0.348392 0.00701322 0.081504 0.23213 0.38261 0.313023 0.131854 -0.153681 -0.157817 0.046063 -0.217674 -0.346229 0.224743 0.30574 0.485202 0.612258 0.408919 0.192269 -0.18939 -0.235391 -0.380173 -0.449215 -0.394483 -0.226078 -0.0254122 0.0560069 -0.0416752 0.0686407 -0.168792 -0.317078 -0.461382 2 1 -13.7622 1.87499 11 11 5 -0.829691 -0.756111 -0.536482 -0.308787 -0.151853 0.149019 0.188835 -0.0424026 -0.248377 -0.18035 -0.0751387 -0.306909 -0.434519 -0.50541 -0.452376 -0.239804 0.284661 0.565058 0.419424 -0.0615423 -0.22627 -0.0413211 0.148511 -0.124146 0.0897838 0.427382 0.359121 0.0616378 0.540741 0.520811 0.19375 0.116777 0.125213 0.641847 0.47585 0.844684 1.17415 0.894711 0.137484 0.0176983 0.351056 0.51197 0.466046 0.335442 0.207157 0.519105 0.580273 0.210009 0.0586617 -0.18057 -0.010133 0.633104 0.357919 0.296481 0.291718 -0.0228589 0.00687087 -0.216984 -0.200213 -0.668997 -0.25768 0.887479 -0.0306877 -0.339228 -0.112991 0.149688 -0.352853 -0.383211 -0.341553 -0.491342 0.0783651 0.0668103 -0.335739 -0.502506 -0.32859 -0.110047 0.224 -0.332224 -0.604263 -0.574459 -0.611969 -0.657682 -0.591318 -0.673866 -0.698367 -0.380683 -0.0901392 -0.0548083 -0.274845 -0.511601 -0.268204 -0.225972 -0.31411 -0.425135 -0.503585 -0.63527 -0.357322 -0.16778 0.0107361 -0.0914415 -0.155125 0.121273 0.321749 0.0676246 0.0511601 0.124437 0.177998 0.176917 0.261768 0.262058 -0.129771 -0.16733 -0.143079 0.551437 0.602902 0.53095 0.677965 0.334432 0.466523 0.227693 0.471083 2 2 -13.4818 2.00883 11 11 5 -0.00580293 -0.0264065 0.0288305 -0.1737 -0.104052 0.434072 0.640537 0.894996 0.26247 0.0522607 -0.29969 0.200961 0.0204592 -0.279794 -0.79482 -0.45856 -0.119707 0.136248 0.382862 0.380426 0.0366443 -0.261114 0.51669 0.323168 0.36472 0.0556803 0.568416 0.550316 0.0919721 -0.0920023 -0.047993 0.00985678 -0.265451 0.608752 0.332137 0.206888 0.00460962 0.451306 1.02948 -0.142535 -0.671074 -0.152132 -0.17723 -0.428744 -0.263915 -0.106031 -0.356574 -0.474285 -0.0676145 -0.363662 -1.36244 -0.681737 -0.0210397 -0.145069 -0.42997 -0.547893 -0.242586 0.12959 0.383919 -0.60552 -1.50287 -0.684677 0.106044 0.379139 0.0439059 -0.214264 -0.637576 -0.0323488 0.227639 -0.127446 -0.666572 -0.610345 -0.0634649 0.411261 0.446301 -0.0938608 -0.568043 -0.0407243 0.213668 -0.0776486 -0.07578 -0.52772 -0.870036 -0.31818 0.116813 0.206256 0.190542 -0.453864 0.346822 0.328922 -0.230766 -0.35468 -0.443479 -0.43346 -0.0433013 0.128883 0.248766 0.079163 -0.0508501 0.676861 0.406688 0.168034 0.215862 0.0349334 0.0915309 0.371036 0.550569 0.508804 0.136138 0.161615 0.294717 0.332476 0.35871 0.262748 0.244425 0.233611 0.403993 0.607891 0.406128 0.171812 0.0801282 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 0 6 0 3 11 11 3 2 0 -17.2712 7.47312 11 11 5 0.423171 0.227909 0.0172267 -0.107469 -0.156312 -0.25166 -0.233371 -0.104927 0.152665 0.409602 0.416283 0.335822 0.125189 -0.172349 -0.368557 -0.402799 -0.42928 -0.464847 -0.0809352 0.275379 0.429965 0.340401 0.209171 0.107484 -0.0638929 -0.194821 -0.321811 -0.473579 -0.477575 -0.173646 0.177728 0.328432 0.386769 0.437491 0.0872847 0.0344394 -0.00498883 -0.0555564 -0.364593 -0.501798 -0.285698 -0.388332 -0.428714 -0.0406078 0.672863 0.337295 0.199281 0.164005 0.0544127 -0.355249 -0.867798 -0.724967 -0.985502 -0.574894 -0.327309 0.639859 0.0957783 0.178677 0.158244 0.308241 -1.20751 -1.71337 -1.35896 -1.09323 -0.641406 -0.082895 0.516842 0.00318676 -0.0450475 0.0351094 0.124675 -0.165469 -0.51795 -0.367256 0.0989797 0.666873 0.60405 0.4616 0.0222352 0.00599786 0.0997981 -0.110112 -0.39433 -0.417502 -0.188619 0.192335 0.472356 0.471593 0.417992 0.193703 0.219734 0.296285 0.183492 -0.0415476 -0.161916 -0.111116 0.0542365 0.20656 0.199239 0.364446 0.317484 0.370462 0.413913 0.415811 0.304243 0.155191 0.0473639 0.0618426 0.149521 0.250243 0.270242 0.25143 0.297588 0.419527 0.411621 0.32744 0.377749 0.200279 0.0959106 0.0568595 0.164985 2 1 -9.8572 1.52763 11 11 5 -0.691388 -0.0550773 0.421217 0.569144 0.461214 0.181988 0.179043 -0.183555 -0.307964 -0.314561 -0.257072 -0.526157 -0.0234389 0.450225 0.195778 -0.155683 -0.000356572 0.0762816 -0.189217 -0.307212 -0.387533 -0.510138 -0.408102 -0.20317 -0.294852 -0.358598 -0.404441 -0.449874 -0.399736 -0.0496796 0.0126852 0.394016 -0.140745 0.0531248 0.222139 -0.0681244 -0.451391 -0.472631 -0.406263 -0.216706 0.38047 0.544029 0.640634 0.850324 -0.0577608 0.274574 0.118273 -0.278454 0.144565 0.198507 0.127727 0.308239 0.950054 1.12252 1.28278 -0.190399 0.0828274 0.0980463 -0.0841554 0.630007 0.38693 -0.96576 -0.184145 0.768606 1.21828 0.738305 -0.34197 -0.0227919 -0.0125737 -0.256395 -0.69926 0.0864585 0.218937 0.478554 0.81604 0.575226 0.123154 -0.437341 -0.0504322 0.01938 0.110213 -0.164325 -0.412813 -0.295047 -0.185964 -0.196121 -0.374339 -0.177534 -0.503732 -0.13529 -0.0411893 -0.137572 -0.0367183 0.348334 0.314102 0.0270091 -0.0918922 0.0374534 0.214655 -0.565102 -0.196253 -0.106004 -0.135362 -0.216212 -0.068244 0.164853 0.0744204 -0.0542249 0.106716 0.255713 -0.623522 -0.317419 -0.130307 -0.153066 -0.160962 -0.244417 -0.304221 -0.106378 -0.15925 -0.082452 0.137271 2 2 -17.3251 3.3359 11 11 5 0.0966193 0.175235 -0.0980451 -0.0978782 -0.0241241 -0.0381428 0.00812774 -0.119421 -0.261835 -0.0798699 0.0329055 -0.257114 0.121718 0.0421321 0.188271 0.351576 0.181752 0.0649676 -0.0202103 -0.000626467 0.177037 0.365226 -0.496214 -0.0102669 0.0645048 0.197752 0.447034 0.13966 -0.0284587 0.215153 0.366025 0.573243 0.878442 -0.141477 -0.0410354 0.0708995 0.15359 0.524372 0.518034 0.193781 0.605278 0.313532 0.326494 0.873273 0.565573 0.186831 -0.0404604 -0.263318 0.625451 0.706494 -0.136019 0.517337 -0.132282 0.158156 0.569272 0.727631 0.217334 -0.0920601 -0.200418 0.700204 -1.22619 -1.06634 -1.16796 -1.27851 -0.928013 0.104506 0.532348 0.0451775 -0.307979 0.250035 1.15479 0.261163 -0.720177 -1.09705 -0.171437 0.378261 0.331894 0.365361 -0.0666343 -0.379911 0.0174789 0.0430069 -0.615888 -1.02434 -0.51114 0.176467 0.601473 0.286021 0.179211 -0.189978 -0.424192 -0.282193 -0.625021 -0.977377 -0.749068 -0.65078 -0.356393 0.129219 0.032352 0.334387 0.0810486 0.0443314 -0.0972148 0.0778444 -0.178281 -0.471207 -0.706201 -0.582205 0.0124417 0.10754 0.411668 0.47487 0.458712 0.322821 0.524843 0.346355 0.172081 -0.214755 -0.419705 -0.626386 -0.806834 3 11 11 3 2 0 -15.4696 4.98214 11 11 5 0.251307 0.239703 0.211319 0.206852 0.181275 0.0974006 0.155177 0.111506 0.0707296 0.165704 0.200804 0.0654233 0.117337 -0.0603392 -0.187229 -0.207918 -0.084486 0.0174824 0.0839172 0.112459 0.0999149 -0.0192972 0.0123347 -0.165339 -0.171386 -0.234309 -0.156849 0.0136298 0.32132 0.568638 0.503214 0.304763 -0.0601881 -0.0444326 -0.239331 -0.301095 -0.223184 -0.0266161 0.0595573 0.355185 0.537429 0.485411 0.488255 0.268721 0.105435 -0.0314062 -0.131466 -0.0931517 -0.133903 -0.0625675 0.160473 0.340455 0.167947 0.0707717 0.0489152 0.356721 0.373566 0.141946 -0.528581 -1.40132 -1.80672 -1.37431 -0.909595 -0.448092 -0.750573 -0.684127 0.254359 0.255581 0.176062 -0.51759 -0.841587 -0.352754 -0.817106 -0.315616 0.0177824 0.13953 -0.795008 0.241755 0.0814133 0.195605 -0.167857 -0.481338 0.00133378 -0.479546 -0.103257 0.708356 0.96279 -0.0169742 0.311217 0.149829 0.29697 0.0934313 -0.458038 -0.208846 -0.0883583 0.180065 0.601168 0.481696 0.0923405 0.303776 0.298157 0.171012 -0.0370294 -0.327063 -0.302906 0.0282302 0.193547 0.288723 0.170598 0.181595 0.479275 0.485514 0.404004 0.107298 -0.151241 -0.216784 -0.00252329 0.12349 0.143154 0.221032 0.305562 2 1 -10.5732 1.38699 11 11 5 -0.310778 -0.247539 0.0406563 0.245343 0.272922 0.0424032 0.0307008 -0.0381985 0.164827 0.299727 0.263731 0.217299 0.300392 0.270326 0.205026 0.208173 -0.00433569 -0.334315 -0.277961 -0.358573 -0.322902 0.117801 -0.163833 0.114382 0.243442 -0.0795146 -0.0831961 -0.247847 -0.495203 -0.482876 -0.265976 -0.407273 -0.401815 0.0732649 -0.0686301 -0.343317 -0.608838 -0.417879 -0.36949 -0.55283 -0.632045 -0.598981 -0.528931 -0.199976 -0.0329745 -0.289322 -0.552795 -0.536432 0.109774 0.90928 1.19222 0.625109 0.252102 0.148736 0.125917 -0.154078 -0.542515 -0.137652 0.404404 -0.358501 -0.479978 0.711563 0.564695 0.176385 0.409888 0.981888 -0.198445 -0.454926 -0.164775 -0.0473135 -0.380331 0.251731 0.679964 0.737571 0.942457 0.572685 0.493955 0.0879699 -0.234487 -0.0940814 0.0556995 -0.610236 -0.3319 0.73493 0.976322 1.23821 0.514154 0.676053 0.0683265 -0.183376 -0.202893 -0.168889 -0.16813 -0.551838 0.0575216 0.188483 -0.22695 -0.617005 -0.180574 0.0458007 0.0342446 -0.119127 -0.154932 -0.21036 -0.21438 -0.0270533 -0.215774 -0.424793 -0.183422 -0.0256165 -0.0650367 -0.0203407 0.0726685 0.0931015 0.0510376 -0.123665 -0.11767 0.0340446 0.0552203 0.152133 0.108965 2 2 -15.2862 3.18268 11 11 5 0.017993 0.169213 0.152729 0.162 0.125975 -0.116715 -0.040608 -0.135943 -0.0022531 -0.0640408 0.0228624 0.133663 0.218271 0.0810366 -0.0536268 -0.203929 -0.368148 -0.300359 -0.154958 -0.0536363 -0.047576 0.261489 0.296226 0.142571 0.12438 -0.127443 -0.0112121 -0.164647 -0.0914502 0.160322 0.194292 0.403772 0.401498 -0.192433 0.139476 0.239106 0.201722 0.130943 -0.0585425 0.040389 0.325878 0.495585 0.512091 0.27394 -0.201331 -0.00670026 0.311001 0.886793 0.978212 0.984647 0.995289 1.07527 1.20914 1.09649 0.96797 -0.111401 0.140564 0.489144 -0.04886 -0.966981 -0.770809 -0.478319 -0.392272 -0.0551244 0.205482 0.439636 -0.171158 -0.118648 0.121703 -0.333832 -0.732648 -0.0631182 -0.730144 -0.36116 -0.323687 -0.245054 -0.89988 -0.171116 -0.132863 0.379033 0.00308355 -0.546653 -0.0644819 -0.485042 -0.369826 0.506073 0.567823 -0.403702 -0.239263 -0.0225456 0.712313 0.46387 -0.709948 -0.58197 -0.27564 0.0808718 0.587175 0.265332 -0.436749 -0.655639 -0.0787892 0.0707744 -0.193251 -0.698709 -0.679835 -0.0374942 0.311071 0.394394 0.0760054 -0.446119 -0.447946 -0.316069 0.0351712 -0.32474 -0.690759 -0.648234 -0.224159 -0.130384 -0.0617364 -0.0468425 -0.462598 3 11 11 3 2 0 -18.5058 5.54936 11 11 5 0.265933 0.181381 0.169686 0.107429 0.103787 0.0764818 0.124068 0.122573 0.0863274 0.0600268 0.233508 -0.0227107 -0.153713 -0.124535 -0.00608341 0.120619 0.0886167 0.101124 0.011105 0.0352709 0.0618022 0.118535 -0.189192 -0.21549 -0.114689 0.236783 0.520345 0.550844 0.340285 0.0637734 -0.131743 -0.171021 -0.00943401 -0.143075 -0.195766 -0.0193197 0.319498 0.609101 0.621631 0.380194 0.214389 0.0859785 -0.12405 -0.146614 -0.0136051 -0.142722 -0.135416 0.129483 0.421635 0.360673 0.205726 0.203879 0.152048 0.0230877 -0.0306091 0.0849703 -0.900843 -1.46986 -1.53553 -1.294 -0.964885 -0.774348 -0.765747 -0.351002 -0.0428517 -0.0502036 0.145537 -0.543561 -0.141907 -0.721516 -0.27545 0.433123 0.333681 -1.22494 -0.914255 -0.420024 -0.0923812 0.437096 -0.164618 -0.000262479 -0.551268 -0.0702491 0.946976 1.15274 0.140652 -0.246122 -0.145246 -0.0175575 0.380198 -0.299539 -0.10862 -0.117393 0.206868 0.694609 0.475074 0.0521067 0.0240203 0.196479 0.300115 0.395334 -0.163817 -0.264338 -0.087433 0.0667138 0.213738 0.0965531 0.0104817 0.149488 0.308705 0.448821 0.493829 -0.0129829 -0.189354 -0.143118 0.0363741 0.0886035 0.183544 0.215418 0.2442 0.3121 0.379251 2 1 -12.7753 1.81861 11 11 5 0.102384 0.270352 0.196894 0.0373332 -0.0337142 0.0790732 0.198265 0.158469 0.0480144 0.0830474 -0.170751 0.21828 0.210321 0.228607 -0.091631 -0.376407 -0.321704 -0.281546 -0.0753823 0.134314 0.0266315 -0.0897376 0.131405 -0.190651 -0.31582 -0.395744 -0.41467 -0.403048 -0.405392 -0.397724 -0.0889359 0.170379 0.0166567 -0.572232 -0.561419 -0.325489 -0.414261 -0.644281 -0.716141 -0.516312 -0.40583 0.0128557 -0.0354092 0.0231351 -0.547974 -0.288559 0.395107 1.12695 1.01201 0.621962 0.324402 0.0590956 -0.0545846 -0.135939 -0.0835396 0.0993678 0.137303 -0.703327 -0.0558695 0.303143 0.146096 -0.0549917 1.01427 0.997731 0.368641 0.0219744 -0.219336 -0.543145 -0.0179863 0.325484 1.08367 0.899915 0.334117 0.0799879 0.321929 0.503914 0.337564 -0.26891 -0.469126 -0.491707 0.389573 1.15012 0.918487 -0.243487 0.85189 0.787948 0.483651 0.139422 -0.17452 -0.278786 -0.451115 -0.0847005 0.322076 -0.506809 -0.806082 -0.28499 0.199751 0.163601 0.0585984 -0.280993 -0.182808 -0.34698 -0.0878563 -0.308491 -0.641596 -0.253461 -0.0365704 0.0128159 -0.303766 -0.265285 0.081476 0.0349951 -0.107553 -0.131783 -0.00513354 -0.0088208 0.138455 0.124624 -0.0599127 -0.34603 -0.341779 2 2 -17.8856 4.02348 11 11 5 0.280699 0.15033 -0.0676988 -0.134047 -0.20017 -0.0784796 0.0194882 0.135757 -0.0210803 0.0210401 0.114304 0.0690991 -0.0463631 -0.252598 -0.291325 -0.309007 -0.22496 0.0770125 0.0289449 0.208185 0.0289441 0.0509801 -0.00208198 0.110711 -0.182921 0.000559014 -0.0140897 0.161177 0.251903 0.353476 0.341073 0.295406 0.201768 0.0907784 0.0525582 -0.0873582 -0.124027 0.194418 0.44337 0.440332 0.389988 0.144733 -0.00743335 -0.0652483 0.612523 0.864034 1.06611 1.1127 1.13331 1.00434 1.06853 0.901422 0.606778 0.260385 -0.0165494 0.339045 -0.692078 -0.610874 -0.778408 -0.539938 -0.651104 0.0780432 0.252553 0.299285 0.415259 0.141227 0.037929 -0.712711 0.16541 -0.631898 -0.317535 0.0138728 -0.0993849 -1.16523 -0.901243 -0.437811 -0.223455 0.0795454 -0.322819 -0.0950807 -0.548728 -0.0970113 0.545599 0.59089 -0.309487 -0.66863 -0.427074 -0.482872 0.289948 -0.580011 -0.28762 -0.322112 0.0321321 0.692299 0.524933 -0.12853 -0.245446 -0.251793 -0.527524 0.0858252 -0.395503 -0.57703 -0.0166389 0.252186 0.52516 0.256764 -0.0798869 -0.204717 -0.265363 -0.260269 -0.0631312 -0.532898 -0.602495 -0.347945 0.0556524 0.195473 0.292037 0.0503758 -0.182823 -0.269818 -0.518262 3 11 11 3 2 0 -15.2542 4.43371 11 11 5 -0.190565 -0.0768881 0.0161434 0.0885054 0.0582497 0.142077 0.0949916 0.13755 0.0276182 0.0913167 0.265488 -0.223353 0.190287 0.372572 0.301269 0.19246 0.0724582 -0.0288574 -0.010299 0.0725696 0.082403 0.0962918 -0.040673 0.333559 0.575173 0.543624 0.237017 0.0882846 -0.0167692 -0.0201518 -0.086157 -0.077248 -0.0393866 -0.322464 0.00797722 0.25537 0.374039 0.118567 0.168807 0.0674859 -0.109033 -0.177192 -0.151419 -0.0440938 -0.788889 -0.745086 -0.050992 -0.115721 -0.718186 -0.610886 -0.411041 -0.283317 -0.285482 -0.143258 0.0613484 -1.19925 -1.40416 -0.370062 -0.0351433 -0.999298 -2.30764 -1.33062 -0.527084 -0.14286 0.145722 0.285263 -0.488283 -0.0635101 0.688028 0.975273 0.0460872 -0.374536 -0.2921 -0.10462 0.118713 0.230421 0.328456 -0.141112 0.307783 0.593173 0.535712 0.165788 0.128473 0.236333 0.216478 0.224992 0.345893 0.417616 -0.201048 0.053723 0.236947 0.168997 0.168832 0.207028 0.226629 0.177982 0.207552 0.220657 0.272456 -0.115064 -0.0936964 0.0153205 0.0667942 0.0987371 0.146277 0.130184 0.149239 0.208388 0.228838 0.300578 0.0474191 -0.00182835 0.0535492 0.0471744 0.121963 0.174637 0.111633 0.190142 0.239563 0.279867 0.284515 2 1 -12.4276 1.93193 11 11 5 0.164202 0.100508 -0.152594 -0.253923 0.0497488 0.169939 0.220783 0.141733 0.018776 -0.299411 -0.469926 -0.247181 -0.304961 -0.333098 -0.373109 -0.617589 -0.161256 0.0131649 -0.0283796 0.0513373 -0.123969 -0.162414 -0.580985 -0.440544 -0.627368 -0.583863 -0.191863 -0.201391 -0.144526 -0.0332673 -0.160089 -0.153269 -0.138796 0.0716696 0.264488 -0.0169822 -0.0764183 -0.130487 -0.100945 -0.0901131 -0.270424 0.0162142 0.126605 0.116755 -0.122351 0.506357 0.570185 0.827057 1.23959 1.37036 0.302937 0.206955 0.132761 0.223335 0.0789193 -0.48956 0.21311 1.36627 -0.0255628 0.032555 -0.226571 0.493452 0.264462 0.318364 0.312358 0.171034 -0.232216 0.624435 0.94234 0.171913 0.643828 1.68072 0.601376 0.228769 0.150408 0.0874243 -0.00805609 -0.48168 -0.0927634 -0.460158 -0.847203 -0.33254 0.0891237 0.144201 -0.00849859 -0.0894385 -0.160095 -0.0800566 -0.213436 -0.4144 -0.574285 -0.45572 -0.0867073 -0.188616 -0.343096 -0.298093 -0.169492 -0.248844 -0.127311 -0.217247 -0.0927413 -0.0219716 0.0708165 0.00442299 -0.0337038 -0.117527 -0.207566 -0.184761 -0.0545482 -0.0569924 0.000877005 0.0719996 0.0572869 -0.0198738 -0.0453448 0.00604026 -0.147259 -0.15303 -0.114764 -0.0355224 0.0167748 2 2 -15.5254 2.83139 11 11 5 -0.234145 -0.145556 -0.24587 -0.184217 -0.203248 0.0102435 0.121069 0.0279112 -0.0153001 -0.117808 0.0819959 -0.355386 -0.0800595 0.0745159 0.155879 0.180015 0.523303 0.440777 0.264718 0.0795961 0.0589703 -0.0359896 0.205083 0.224138 0.080107 0.372663 0.250232 0.408798 0.335152 0.420095 0.438765 0.0794249 -0.128509 0.561434 0.640663 0.706104 1.04518 0.733401 0.495035 0.304002 0.027815 -0.112747 -0.156121 -0.250004 0.394868 0.177679 0.278277 0.311683 0.882407 0.830797 0.723901 0.46314 0.0471199 -0.347352 -0.557573 -0.884072 -1.17224 -0.358704 0.407964 -0.286869 -1.77045 -1.00805 -0.301929 -0.219948 -0.258797 -0.174986 -0.723687 -0.43838 0.332018 0.693589 -0.242794 -0.636947 -0.588546 -0.511264 -0.549569 -0.320468 -0.043061 -0.47945 0.139669 0.641995 0.554414 0.201407 -0.172382 -0.178939 -0.315697 -0.38144 0.0332895 0.515143 -0.384171 0.171352 0.475949 0.418139 0.0752757 0.0886322 0.0129936 -0.152305 -0.267337 -0.297732 0.000451276 -0.542542 -0.0908212 0.184347 0.329381 -0.033486 -0.0125811 -0.30007 -0.253445 -0.295075 -0.135018 0.0938964 -0.321348 -0.23258 -0.00223149 -0.000363288 0.243499 0.0911023 -0.115773 -0.340496 -0.0859015 0.0366559 -0.146279 3 11 11 3 2 0 -21.1621 8.18881 11 11 5 -0.038171 -0.229448 -0.151905 0.131548 0.272117 0.200722 0.172298 0.275431 0.19814 0.126347 0.233841 -0.298319 -0.497787 -0.269481 0.149362 0.385566 0.323483 0.203692 0.128615 0.0544255 0.0909898 0.0517654 -0.259654 -0.430824 -0.280201 0.0852221 0.412618 0.476808 0.312973 0.0555547 -0.0646904 -0.0741798 -0.0331061 -0.0742139 -0.410598 -0.493812 -0.662133 0.144178 0.310484 -0.0497897 -0.559012 -0.443477 -0.306836 -0.159742 0.0339507 -0.484441 -0.744679 -1.00243 -0.369898 0.622249 0.198888 -1.20385 -0.907405 -0.480416 -0.143925 -0.0851547 -0.867206 -1.08664 -1.402 -0.765975 -0.606881 -0.976995 -1.23371 -0.706017 -0.213763 0.0227908 0.408787 -0.478658 -0.351934 0.565937 1.00127 0.981313 0.566002 0.23103 0.103886 0.236643 0.310584 0.213918 -0.328708 -0.209255 0.233655 0.455873 0.404077 0.321928 0.258418 0.303798 0.286764 0.368841 0.424637 -0.0454073 -0.178097 -0.095301 0.0231178 0.108735 0.13185 0.168699 0.230561 0.369248 0.507829 0.670032 0.294557 0.0180188 -0.0741924 -0.0959327 -0.0537151 0.0763712 0.217076 0.333441 0.409679 0.621021 0.827078 0.482573 0.189222 0.0199772 -0.0740706 -0.0166609 0.117562 0.277017 0.384614 0.530484 0.710492 2 1 -13.3499 2.21219 11 11 5 -0.0850436 0.0945689 0.054794 0.00286868 -0.102831 -0.280304 -0.271373 -0.19212 0.115747 0.0718916 -0.148986 -0.175421 -0.0423166 -0.106177 -0.323348 -0.397492 -0.476066 -0.499486 -0.443122 -0.211011 0.0490344 -0.02474 -0.404942 -0.343664 -0.194859 0.303835 -0.0142983 -0.0274987 -0.0926453 -0.0252931 -0.110256 -0.226372 -0.162211 -0.468923 -0.286737 -0.404515 0.643855 0.720345 0.0541407 0.0887221 0.580928 0.437914 0.102759 0.0269299 -0.269688 -0.388105 0.0439383 0.57929 1.73689 1.24407 0.545359 0.4569 0.638983 0.535444 0.239304 0.143866 -0.496504 -0.787528 0.18321 0.531642 0.0195072 -0.888393 0.752195 0.883462 0.56243 0.281181 -0.259967 -0.103695 0.111047 1.12088 0.983296 0.057522 0.398766 0.861115 0.643521 0.262659 -0.0154548 -0.471913 -0.247469 -0.179635 -0.456126 -0.728489 -0.74654 -0.374538 -0.227071 -0.127084 -0.150756 -0.128464 0.0805311 -0.168397 -0.218288 -0.254241 -0.254994 -0.343218 -0.176653 -0.144698 -0.131882 -0.229332 -0.30221 0.039941 -0.0267171 -0.183814 -0.108252 0.072989 0.0761771 0.0389303 0.0421155 0.117412 -0.160664 -0.209534 -0.277844 -0.196687 -0.135613 -0.162746 -0.107869 -0.0395963 -0.00818028 -0.0165938 -0.0356671 -0.0378032 -0.111933 2 2 -17.4654 3.65199 11 11 5 0.0709891 0.118497 -0.0952105 -0.180971 -0.0397061 -0.148111 0.100333 0.199074 0.284686 0.1519 0.223896 0.0536085 0.0189912 -0.0573849 0.00821879 0.0874365 0.15336 0.331494 0.590007 0.420419 0.540882 0.125353 0.191294 0.0486331 0.196475 0.150303 0.270125 0.61907 0.668474 0.432099 0.512654 0.443507 0.0778872 0.181766 0.2612 0.361582 -0.134013 0.442356 0.479439 0.792315 0.683532 0.442856 0.211399 -0.0475108 0.389982 0.481075 0.484354 -0.329119 0.221279 1.32018 1.02803 -0.29613 -0.0785326 -0.0121082 -0.0180988 -0.44758 -0.680803 -1.07263 -1.44398 -0.408523 -0.447766 -0.686162 -1.10718 -0.792532 -0.521908 -0.559883 0.134073 -1.02774 -0.630673 -0.203153 0.390532 0.647437 0.354812 -0.242727 -0.312652 -0.251577 -0.718222 -0.308545 -0.775676 -0.374974 0.207994 0.654243 0.584184 0.336201 0.033929 -0.150319 -0.41075 -0.57044 -0.309837 -0.512568 -0.386316 -0.0196384 0.307652 0.482299 0.266653 0.106863 -0.090472 -0.342766 -0.326841 -0.0871643 -0.214511 -0.442427 -0.242109 -0.000414729 0.119457 0.0320294 -0.0247883 -0.233667 -0.434465 0.0203953 0.558032 0.292137 -0.198283 -0.442007 -0.28516 -0.150511 0.0597527 -0.0419685 -0.152049 -0.0912064 0.152779 3 11 11 3 2 0 -20.5767 8.22 11 11 5 0.339604 0.0917604 -0.120361 -0.230905 -0.226852 -0.110999 0.20927 0.21579 0.213945 0.203321 0.290045 0.115344 -0.0975247 -0.412762 -0.539745 -0.396173 -0.0104501 0.328473 0.445387 0.3464 0.13722 0.137206 0.115975 -0.13812 -0.395552 -0.566968 -0.418649 -0.15298 0.0965513 0.509836 0.224565 -0.102778 -0.349671 0.218879 0.0979712 -0.135954 -0.584681 -0.310171 -0.638427 -0.429813 0.0730533 0.265779 -0.0948429 -0.740115 0.329361 0.38039 0.190748 -0.672334 -0.443293 -1.01659 -0.820374 0.0157894 0.566214 -0.387866 -0.808704 0.15639 0.497465 -0.000665201 -1.16314 -1.59304 -1.28111 -0.960503 -0.42829 -0.58152 -0.76468 -0.548638 0.0311447 0.183724 0.0808261 -0.425036 -0.4716 0.147257 0.780501 0.960689 0.682755 0.355664 0.284754 0.214177 0.17926 -0.11718 -0.421044 -0.372487 -0.0440548 0.288054 0.414519 0.372636 0.309851 0.463589 0.497659 0.471472 0.319688 0.0252384 -0.191529 -0.0781801 0.107362 0.201816 0.207387 0.273011 0.385067 0.587152 0.523948 0.403932 0.294432 0.0788592 -0.0751814 -0.0565353 0.0228008 0.172168 0.258187 0.41559 0.502311 0.494857 0.471432 0.379368 0.316962 0.0864086 0.00275 0.0292113 0.17676 0.282847 0.377257 2 1 -11.216 1.50483 11 11 5 0.235797 0.173862 0.0335781 0.0472381 0.115062 -0.1807 -0.354545 -0.36914 -0.623189 -0.325795 -0.0752166 0.0333292 -0.0287056 -0.0933133 -0.255531 -0.0271286 0.0193808 -0.210481 -0.557704 -0.324948 -0.40468 -0.103389 -0.323063 -0.571545 -0.409424 -0.323449 -0.275016 0.0887478 0.587337 -0.0987389 -0.0368113 0.0490211 0.206163 -0.476152 -0.531773 -0.183968 -0.391383 -0.27845 0.286665 0.662986 0.775495 0.0719765 0.428025 0.781361 -0.151692 -0.192966 0.073822 -0.110257 -0.290685 0.650245 1.40072 1.47351 0.550417 0.506144 0.918674 -0.0813245 -0.271217 0.400738 0.174487 -0.970019 -0.0581653 0.747921 0.267561 -0.609211 -0.0581171 0.952579 -0.111586 -0.496831 -0.758203 -0.117574 0.341748 0.755137 0.909611 0.229722 0.264557 0.509644 0.827269 0.131745 -0.000546867 -0.172239 -0.194348 -0.265724 -0.485992 -0.443524 -0.694268 -0.221936 -0.0781615 0.108066 -0.0734368 -0.105279 0.178764 0.250611 0.00407012 -0.0743 -0.0348517 -0.0605432 0.00710798 0.0196499 -0.0391314 -0.0870044 -0.194231 -0.168261 -0.0335469 0.0398485 -0.142879 -0.0970668 0.0464868 0.0271363 -0.0198648 0.0394497 -0.211507 -0.206168 -0.29701 -0.293197 -0.21367 -0.183689 -0.195863 -0.0512342 -0.0111048 0.0497477 0.00944858 2 2 -20.6518 4.03663 11 11 5 0.00985159 0.00505794 0.23282 0.181668 -0.0844577 -0.361388 -0.179352 -0.219409 -0.0824026 0.103347 0.28534 -0.0361213 0.327054 0.205031 0.177062 0.124483 0.0649966 -0.0716203 0.0865193 0.315418 0.406153 0.666258 0.0849976 0.233183 0.181745 -0.132049 0.0320296 -0.0262404 -0.114026 0.39803 0.325136 0.470252 0.464071 -0.120618 0.105784 0.566845 -0.16997 0.47786 0.348928 0.232929 0.421803 0.796702 0.861619 0.347743 -0.243937 0.442655 1.04078 0.0805941 0.681568 -0.496227 -0.358909 0.590284 1.285 0.230488 -0.352671 -0.28945 0.795867 0.261456 -1.1675 -1.56933 -1.25962 -0.975898 -0.551654 -0.397749 -0.644524 -0.882941 -0.393339 0.522878 0.499875 -0.453639 -0.823888 -0.187299 0.444174 0.694717 0.372217 0.110606 -0.424257 -0.432304 -0.123021 -0.28125 -0.813945 -0.608329 -0.239718 0.332626 0.4498 0.249138 0.18021 -0.211687 -0.321547 -0.175054 -0.239831 -0.435608 -0.585523 -0.355936 0.190809 0.288534 0.361668 0.0868452 -0.252138 0.0748092 0.0614889 0.222218 -0.0388945 -0.478621 -0.675645 -0.332068 0.0771576 0.00235082 -0.0910949 -0.35161 0.664363 0.430087 0.356702 0.457057 0.0846701 -0.288551 -0.482957 -0.446848 -0.337462 -0.281045 -0.21325 3 0 0 0 3 0 0 0 3 12966640 12966048 0 3 11 11 3 2 0 -10.6288 1.50754 11 11 5 -0.31467 -0.292744 -0.350376 -0.404958 -0.199717 -0.15771 -0.169357 -0.457385 -0.730333 -0.730053 -0.406962 0.191271 -0.191264 -0.186604 -0.236171 0.0552689 0.215223 0.542256 0.402023 0.110847 0.0262806 0.490336 0.38793 -0.0385663 -0.271962 -0.094027 0.4331 0.534799 0.317805 0.337968 0.375103 0.318868 0.617822 0.233635 -0.0593277 -0.323816 -0.360141 0.214999 0.336097 -0.239457 0.274107 0.496768 0.455241 0.517805 -0.0369751 -0.0804835 -0.176785 0.00630992 0.393174 0.106875 -0.207666 0.695331 1.03157 0.890514 0.759472 -0.0255376 -0.0619457 -0.00815564 0.0447344 0.149355 0.533935 0.100528 -0.122266 0.136186 0.212346 0.10871 0.070398 -0.116289 -0.26006 -0.718135 -1.23609 -1.2202 -0.90368 -0.877023 -0.886032 -0.864492 -0.943761 0.129176 0.0818803 -0.0922736 -0.1322 -0.445644 -0.326199 -0.158488 0.51363 0.298935 -0.166558 -0.654724 0.255469 0.166332 0.0774249 0.274761 0.27828 0.201774 0.454915 0.743889 0.519328 0.28184 -0.539318 0.370461 0.0655651 -0.0670538 0.062763 -0.0339568 -0.0462548 0.163628 0.187195 0.05028 -0.172936 -0.41654 0.452127 0.180768 0.17917 0.31438 0.069662 -0.0773758 -0.121157 -0.153668 -0.13426 -0.323405 -0.475426 2 1 -10.1638 1.81324 11 11 5 0.031915 0.0435174 0.563138 0.235811 -0.131487 0.097937 0.293869 0.72568 0.297398 -0.1107 0.0708058 -0.0615398 -0.162923 0.240091 0.10838 -0.512549 -0.750094 -0.509487 -0.507277 -0.427377 -0.359241 -0.309791 -0.0116657 -0.161076 0.0740093 -0.047637 -0.424488 -0.706423 -0.254613 -0.457246 -0.336362 -0.448805 -0.672567 -0.0106257 -0.0217498 -0.0584892 -0.208691 -0.419304 -0.552837 -0.394441 -0.189126 -0.568518 -0.604824 -0.668061 0.00911424 0.0215197 -0.198185 -0.372516 -0.448307 -0.549029 -0.301077 0.0927093 -0.0664634 -0.168997 -0.354788 0.129316 0.190431 -0.179234 -0.0784888 0.448356 -0.157522 0.0942626 0.690002 0.939268 0.984067 1.27319 0.287496 0.316187 0.189425 -0.170232 -0.216176 0.0862868 -0.0221654 0.342982 0.492461 0.791986 0.819327 0.328344 0.412112 0.193505 0.269575 -0.114169 -0.135948 -0.176314 0.0276885 0.145023 0.498359 0.887692 0.035817 0.160722 0.250479 0.204845 0.183801 0.0937596 0.269305 0.122645 0.572781 0.623311 0.551545 0.21428 -0.0845649 0.0293308 -0.121549 -0.100107 0.0408522 0.330225 0.365975 0.266599 0.28783 -0.0639858 -0.162613 -0.0822894 0.00246941 -0.329179 -0.410838 -0.540649 -0.295962 -0.0867474 -0.431924 -0.569804 -0.299964 2 2 -10.0663 1.3163 11 11 5 -0.242945 0.000527199 0.122389 -0.132004 -0.222724 -0.258957 -0.262747 -0.290502 -0.590732 -0.96407 -0.831567 -0.172417 -0.191561 -0.0196788 -0.397089 -0.343872 -0.297524 0.0323641 -0.211104 -0.727917 -1.1595 -0.555558 0.517605 0.238662 0.0754933 -0.159091 -0.123533 0.287868 0.13079 -0.132532 -0.55654 -0.616246 -0.0331118 0.422897 0.0841934 -0.0275695 -0.242884 0.297185 0.591957 -0.395634 -0.320893 -0.517165 -0.361376 -0.185439 0.194253 0.13624 0.143345 0.080133 0.46433 0.406882 0.136037 0.69804 0.574339 0.507814 0.540657 -0.142969 0.0729672 0.625903 0.962832 1.04415 1.49793 0.903748 0.589189 0.535505 0.544884 0.6873 -0.115155 -0.121141 -0.162887 -0.171841 -0.419316 -0.226078 -0.321078 -0.392188 -0.306098 -0.202595 0.0282764 -0.234632 0.00516469 -0.160667 -0.00703246 -0.234684 -0.411759 -0.381477 -0.209753 -0.283393 0.0118364 0.080656 -0.03032 0.0343425 -0.00839792 0.0183388 -0.124975 -0.184091 -0.00267471 0.158894 0.183865 0.112152 -0.337426 -0.139565 0.0520005 0.0336213 -0.0409348 0.0437728 0.108109 0.200009 0.238699 0.0683762 0.0285678 -0.0919845 0.135798 -0.0830431 0.0959825 0.0621841 0.00177369 0.17583 0.109864 0.254595 0.318614 0.264764 0.118143 3 11 11 3 2 0 -12.5266 1.54757 11 11 5 -0.245388 -0.110317 -0.200465 -0.258954 -0.713845 -0.717585 -0.829958 -0.1876 0.267607 0.142435 -0.257893 -0.363537 0.105052 0.381264 0.454273 0.0574641 -0.222775 0.123372 0.60886 0.557488 0.121589 -0.287022 -0.177806 0.514792 0.367317 0.34846 0.287071 0.169462 0.465307 0.666728 0.539056 0.11021 -0.254589 -0.208807 0.576877 0.238369 0.0737505 0.306712 0.208502 0.0973211 0.299036 0.271564 0.0127955 -0.170117 0.0374203 0.398899 -0.132053 0.00289879 0.617746 0.636669 0.594152 0.557489 0.423256 0.168148 -0.0570024 0.19118 0.23368 -0.0571634 0.162978 0.606079 1.07302 1.11346 0.837806 0.482345 0.040278 -0.298804 -0.696697 -0.914905 -0.713116 -0.695117 -0.69736 -0.940825 -1.01792 -0.747375 -0.496298 -0.571694 -0.629896 -0.343691 -0.377209 0.039567 0.236657 0.140064 -0.176549 -0.501016 -0.672224 -0.452889 -0.424354 -0.479868 0.184615 0.126049 0.344723 0.554217 0.757811 0.343886 0.0368517 -0.28586 -0.380479 -0.562024 -0.432093 0.146946 0.229799 0.271125 0.161948 0.0231484 0.0973797 0.035924 -0.209671 -0.385115 -0.29958 -0.0877286 0.0178679 -0.0745026 0.0624652 0.0987164 0.069417 0.0378747 0.00816879 -0.0847438 -0.231333 -0.313133 0.0714787 2 1 -9.23059 1.67262 11 11 5 0.202629 0.17396 0.102204 0.594008 0.480294 -0.0696585 -0.173895 0.0713912 0.0680696 -0.0476719 -0.0269745 -0.0979343 -0.435963 -0.44091 -0.34339 -0.304105 -0.248652 -0.0995495 -0.102801 -0.387354 -0.229011 0.0611253 -0.241144 -0.61016 -0.515741 -0.381569 -0.412725 -0.249343 -0.357073 -0.525569 -0.303184 -0.122318 -0.164332 -0.144027 -0.406434 -0.450683 -0.247281 -0.303456 -0.491295 -0.519021 -0.414606 -0.368531 -0.246645 -0.201925 -0.338366 -0.413268 -0.296557 -0.187783 -0.322318 -0.526121 -0.59686 -0.496286 -0.269154 -0.162564 -0.151787 -0.0736744 0.244773 -0.0485819 0.222959 0.599619 0.546279 0.519286 0.60466 0.609409 0.636301 0.450265 -0.176424 -0.0429851 -0.129854 0.153619 0.279326 0.545094 0.618221 0.857982 0.477184 0.380398 0.671102 -0.111512 -0.0182107 -0.0642537 0.0538219 0.205669 0.30979 0.572492 0.540908 0.563725 0.384918 0.318332 0.0471711 -0.0343638 -0.0877675 -0.182627 0.344269 0.359809 0.0420658 0.209486 0.430612 0.542062 0.582543 0.0625232 0.149978 0.367179 0.505979 0.568365 0.12148 -0.134597 -0.150868 -0.109386 0.4668 0.400495 -0.284851 -0.445968 -0.419646 -0.132027 -0.227858 -0.585181 -0.512656 -0.17572 -0.0848109 0.211286 0.1479 2 2 -11.6998 1.78118 11 11 5 -0.0673698 -0.322509 -0.307849 -0.125951 -0.308737 -0.586705 -0.835239 -0.340588 0.127404 0.0696494 -0.368444 -0.485743 -0.434098 -0.156817 -0.0579554 -0.492289 -0.85 -0.620597 0.00673148 0.171875 0.155087 -0.319738 -0.380889 0.0653216 -0.135731 -0.029347 -0.449289 -0.800811 -0.239877 0.349571 0.38546 -0.00273503 -0.0937872 -0.405574 0.797368 0.336978 0.00492497 -0.202596 -0.459209 -0.443695 -0.148703 0.229191 0.0802219 -0.0128187 -0.0315851 0.611015 -0.159856 -0.0295859 -0.0272573 -0.0977937 0.076697 0.164991 0.345839 0.269952 0.492092 0.903995 1.03784 0.770221 0.740744 1.07285 1.2674 1.06534 0.852847 0.600176 0.527632 0.536913 -0.167113 -0.157104 -0.100939 -0.343458 -0.439916 -0.264534 -0.0688924 0.232332 0.339366 0.0754541 0.1279 -0.314353 -0.304533 -0.382923 -0.332285 -0.213009 -0.357463 -0.287243 -0.0829779 0.0914164 0.206449 0.00337464 0.0111191 -0.232564 -0.102128 -0.0090528 0.0951342 0.100968 -0.0214835 -0.0827653 -0.142224 -0.298114 -0.47649 0.105853 -0.0501235 0.12067 0.0358114 0.0609514 -0.0526319 -0.00786875 -0.201475 -0.309259 -0.169859 -0.176524 0.132232 0.0329556 0.248798 0.199237 0.490368 0.244699 0.292499 0.200458 0.0561855 -0.364441 -0.27504 3 11 11 3 2 0 -12.8799 2.01036 11 11 5 0.148557 -0.0414888 -0.152843 0.136184 0.39137 0.252455 -0.277219 -0.455262 -0.34112 -0.0656032 0.0922287 0.306213 0.313814 0.376114 0.5802 0.605733 0.432086 -0.0385307 -0.372481 -0.24356 0.049932 0.202252 0.263408 0.409268 0.427147 0.466666 0.39106 0.24957 0.152526 -0.153991 -0.0929491 0.0458135 0.217021 0.0777797 0.504976 0.499954 0.559448 0.462403 0.213912 0.100661 -0.0171618 -0.0705955 0.00873907 0.181179 -0.154816 0.136012 0.289483 0.409713 0.607146 0.444741 0.225306 -0.03953 -0.20065 -0.0218871 0.0922286 -0.0302796 -0.164037 -0.448829 -0.845766 -0.624917 -0.0470637 -0.0949781 -0.455095 -0.714536 -0.313048 0.0767244 0.0822306 -0.00404607 -0.437628 -0.885058 -1.2315 -1.52315 -1.05686 -0.889237 -0.626217 -0.161666 0.141753 0.33652 0.0742496 0.302112 0.271968 -0.00489199 -0.488782 -0.80646 -0.429961 0.0654536 0.0664032 0.238713 0.366233 0.271675 0.313104 0.0584205 0.0786637 -0.36967 -0.432905 0.13297 0.467424 0.161106 0.24713 0.0899817 0.0599265 0.10128 -0.0783663 -0.166329 -0.294645 -0.178805 0.301352 0.449432 0.0950366 0.172667 -0.0510522 -0.0807293 -0.0220561 0.00223874 0.00903085 -0.168824 -0.119743 0.365594 0.249632 -0.0530857 0.0676084 2 1 -9.8153 1.55482 11 11 5 -0.273917 -0.334278 -0.135323 -0.150122 -0.346808 -0.431876 -0.27626 0.105581 0.177586 0.221354 0.12461 -0.533015 -0.403522 -0.346509 -0.368833 -0.418086 -0.343094 -0.344084 -0.26284 0.0211743 0.127507 0.1086 -0.418011 -0.453327 -0.624555 -0.547204 -0.351123 -0.0915873 -0.110831 -0.141746 -0.0422774 0.00350888 0.00764425 -0.0297885 -0.232268 -0.320381 -0.360048 -0.43123 -0.339942 -0.127236 -0.11297 -0.04598 0.0118997 0.151738 0.299065 0.373633 0.274022 0.360463 0.0691923 -0.224984 -0.319429 -0.0560209 0.158094 0.0969789 0.283417 -0.207899 0.179226 0.553455 0.830367 1.29571 1.23861 0.407421 0.432819 0.244176 0.163588 0.347404 -0.309052 -0.00486407 0.108778 -0.329958 -0.256968 0.179035 0.720159 0.511083 0.422772 0.217401 0.171229 0.450943 0.225688 0.0919068 -0.0659909 0.0723934 0.251554 0.797209 0.751314 0.461752 -0.0891874 -0.0330361 0.0080691 0.0619255 0.0340371 -0.0633298 -0.20402 -0.0398241 0.437199 0.542041 -0.417378 -0.475876 -0.100567 -0.0820705 -0.188673 -0.336578 -0.432751 -0.341618 0.0933176 0.443098 0.0335744 -0.559766 -0.412817 -0.0503224 -0.00519852 -0.0946848 -0.238439 -0.00340781 -0.00341089 0.122316 0.238779 0.0533837 -0.329202 -0.262843 0.119441 2 2 -12.1005 1.44366 11 11 5 -0.272231 -0.66105 -1.05078 -0.535413 0.0838709 0.506653 -0.129437 -0.331237 -0.335666 -0.16381 -0.0249458 0.0253309 -0.2865 -0.229559 0.170237 0.486183 0.428747 0.175146 -0.579087 -0.505324 -0.279687 -0.0483878 0.0562547 -0.123376 0.119561 0.274003 0.289172 0.0645989 0.213267 -0.320284 -0.204127 -0.160829 0.0675911 0.290086 0.264254 0.405959 0.504273 0.197691 0.00466932 0.101611 0.111097 0.0886823 0.0584172 0.0529096 0.0792083 0.262671 0.676933 0.946066 1.1339 0.841886 0.954962 0.762322 0.309492 0.109852 -0.0488408 -0.0933065 -0.0852072 0.115866 0.170303 0.553861 0.856401 1.04807 0.723966 -0.440278 -0.236486 -0.293557 -0.259264 -0.153138 -0.432945 -0.609241 -0.576149 -0.373194 -0.0890959 -0.329109 -0.748223 -0.368007 -0.339932 -0.058456 -0.0990466 -0.087539 -0.114786 -0.251825 -0.399714 -0.483108 -0.580413 -0.557329 -0.71348 -0.25968 0.245279 0.211741 0.385397 0.293515 0.17257 -0.286642 -0.390099 -0.463684 -0.309051 -0.354661 -0.229798 0.0977669 0.334327 0.332919 0.239724 0.164598 -0.198263 -0.0758463 0.0194428 0.146724 -0.29971 -0.184207 0.269013 0.197095 0.443092 0.321447 0.177768 -0.112206 -0.0105616 0.137757 -0.0335179 -0.372393 -0.132481 3 11 11 3 2 0 -15.0128 3.87144 11 11 5 0.855112 0.818479 0.522241 0.195052 0.0131057 0.0236843 0.107801 0.186901 0.0463285 -0.084104 -0.117299 0.594981 0.382474 0.209976 0.0511486 0.0231275 0.133141 0.193159 0.228273 0.104969 -0.00600646 0.0256151 0.275482 -0.065706 0.036794 0.0645157 -0.0651648 -0.073721 0.0342866 0.170793 0.145874 0.0819721 0.116357 -0.148473 -0.142813 -0.200748 -0.216832 0.0697562 -0.141085 -0.227203 0.0714709 0.14839 0.154751 0.114649 -0.354216 -0.462825 -0.372857 -0.763833 -0.827732 -0.35606 -0.384646 -0.0187538 0.10602 0.139466 0.221594 -0.130828 -0.292242 -0.611999 -1.20636 -2.45131 -1.3049 -0.374333 0.0799431 0.339638 0.268437 0.210706 0.180738 0.00651523 0.0234649 -0.492463 -0.614531 0.48886 0.110796 0.0811717 0.313996 0.249044 0.154073 0.527211 0.168716 -0.242125 -0.106827 0.224658 0.691982 0.22854 0.071779 0.234159 0.163976 0.0964861 -0.114409 -0.180803 -0.206888 -0.00417146 0.248717 0.390422 0.0904721 -0.0688965 0.0707375 0.0557187 0.10291 -0.0528559 -0.0564093 -0.0871381 0.0629011 0.258754 0.151284 -0.0795806 -0.194151 -0.10841 -0.0168271 0.176067 -0.153748 0.182441 0.103718 0.235441 0.316891 0.10237 -0.0249699 -0.139829 -0.0148968 -0.00065686 0.231114 2 1 -12.4279 1.91055 11 11 5 -0.478581 -0.348536 -0.415172 -0.296005 -0.307306 -0.158102 -0.0715346 -0.0959919 -0.0931466 -0.0246434 0.0207919 -0.418978 -0.312113 -0.295155 -0.379945 -0.32973 -0.0483798 -0.0154667 -0.0353179 -0.0944885 -0.0873043 0.0708482 0.280336 -0.0345625 0.199875 -0.0390101 -0.450309 -0.370674 0.125302 0.0384591 0.06169 -0.030131 -0.00520835 -0.014609 0.139475 0.595507 0.795204 0.142165 -0.808667 -0.250247 0.354578 0.118027 0.0888654 0.0374723 0.0145236 0.238426 0.518703 0.783686 1.81461 0.432298 -0.299439 0.259146 0.1129 0.0735716 0.0548448 -0.451816 -0.0733081 -0.319419 -0.258248 -0.331118 0.560114 0.0508578 0.140661 0.0677435 0.077896 0.00926556 -0.0490859 -0.178414 0.0489206 0.768322 1.7643 0.996607 -0.591918 -0.246769 -0.0441974 0.0346992 0.0188179 -0.0220097 -0.116396 0.188068 0.607052 0.499007 -0.604127 -0.743843 -0.363053 -0.0287276 -0.0291315 0.0222369 -0.215441 -0.357 0.240452 0.130471 -0.113579 -0.681124 -0.579173 -0.209025 0.103545 0.0398454 -0.0220862 -0.268625 0.018477 0.095943 -0.0184245 -0.103448 -0.390885 -0.255369 -0.0896003 0.08776 0.08075 -0.0410718 0.43055 0.300905 0.0618166 0.0662584 -0.149101 -0.27234 -0.109931 -0.0165911 0.0553764 0.0271824 -0.012054 2 2 -15.4723 1.86799 11 11 5 0.53285 0.668871 0.564618 0.163489 -0.0538823 -0.348595 -0.341308 -0.0911823 0.0777511 0.0356797 -0.0908373 0.63479 0.584283 0.306638 -0.1391 -0.165366 -0.148169 -0.216403 0.141584 0.0242356 0.18151 -0.0105014 0.540314 0.329464 0.636643 0.409638 0.128662 0.00900526 -0.304602 -0.00995508 0.188071 0.100316 0.061396 0.468723 0.311826 0.804148 1.1249 0.819284 0.300479 -0.140641 -0.0913757 0.321148 -0.0367719 -0.247197 0.20675 0.0258596 0.303148 0.965883 0.841531 0.239425 -0.0388696 -0.337818 -0.210826 0.00172427 0.180112 -0.48119 -0.405613 -0.269779 -0.530519 -1.99691 -1.54908 -0.652319 -0.107225 0.509577 0.615305 0.113828 0.045554 0.161284 0.346696 -0.171238 -1.01751 -0.783447 -0.964412 -0.482133 0.276858 0.33261 0.0766661 0.558858 0.362094 0.00994062 -0.419322 -0.169553 -0.242579 -0.421528 -0.374537 0.261359 0.523526 0.0966217 0.387425 0.0260115 0.0197389 -0.134072 -0.0242774 0.328766 0.0710226 -0.124117 -0.252633 0.00897386 -0.272963 0.184185 0.00848345 -0.01884 -0.116672 0.220498 0.139096 -0.160457 -0.48626 -0.0962444 0.0313936 -0.0555499 -0.107132 -0.0200981 -0.258462 -0.402874 -0.137571 -0.203768 -0.178233 -0.583639 -0.367917 -0.544804 -0.342233 3 11 11 3 2 0 -13.8575 2.41271 11 11 5 0.349554 0.177013 -0.0158048 0.101415 -0.141876 0.116769 0.611417 0.311155 0.126323 0.227424 0.448939 0.132999 0.3397 0.104028 -0.0875833 -0.44691 -0.816607 -0.0116681 -0.0681661 -0.146051 0.108109 0.354312 -0.0434059 -0.0552815 -0.0944133 -0.201961 -0.574891 -0.985892 -0.493261 -0.525647 -0.380443 0.0334566 0.317359 0.253913 0.138656 0.0714507 -0.548311 -1.3442 -0.990239 -0.725064 -0.846804 -0.578101 -0.0971036 0.33691 0.0834382 0.152087 0.027612 -0.544401 -1.19396 -0.670605 -0.290817 -0.198495 -0.318871 -0.113576 0.287556 0.0800063 0.219315 0.102828 -0.505498 0.0168747 1.02518 1.12467 0.730144 0.104492 -0.164102 0.131104 0.0728501 0.239917 -0.0282905 0.215056 0.636249 1.0245 0.714374 0.314625 -0.133837 -0.283276 -0.158048 -0.0839606 -0.0708608 -0.175932 0.00451341 0.356979 0.509902 0.238315 -0.0709807 -0.262312 -0.274868 -0.172291 -0.481546 -0.480213 -0.310324 -0.100324 0.264854 0.316604 0.0176656 -0.189661 -0.210688 -0.235065 -0.165585 -0.466503 -0.289608 -0.170835 0.102824 0.441227 0.314497 0.131091 0.00659493 -0.00820919 0.078934 0.246198 -0.157519 -0.11206 0.160799 0.424977 0.560634 0.550778 0.525324 0.483159 0.486052 0.496798 0.630295 2 1 -11.9397 1.8554 11 11 5 -0.315292 0.0272179 -0.31006 0.0828049 0.0605644 0.34688 -0.709061 -0.976673 -0.565261 0.0772723 -0.126445 -0.0730587 -0.0144055 -0.103776 -0.13158 -0.218241 0.406908 0.565228 -0.439956 -0.456686 -0.0468274 0.189983 -0.147343 0.187447 0.27172 0.227679 0.339867 0.944681 0.877951 0.665883 0.392457 0.0830339 0.226464 -0.303642 -0.27754 -0.0194576 0.0467161 0.372123 1.35909 1.20747 0.490129 0.44499 0.32555 0.345913 -0.156531 0.296766 -0.121507 -0.358237 0.609754 1.22269 0.833974 0.526602 -0.14467 -0.210721 0.184336 0.267774 -0.0153192 -0.284414 0.0284044 1.14976 0.907581 0.0856678 -0.384865 -0.421609 -0.113074 -0.168672 -0.234148 -0.318663 -0.233994 -0.14446 -0.136832 -0.74039 -1.07435 -0.931482 -0.614922 -0.247508 -0.0318797 -0.277443 0.0741532 0.165748 -0.125561 -0.452641 -0.638335 -0.585413 -0.485829 -0.260052 -0.0655646 0.0107843 -0.244243 0.358308 0.246582 0.241683 -0.0123461 -0.295217 -0.238113 -0.185356 -0.12486 0.0506302 0.0471383 -0.0716984 0.281137 0.543124 0.395364 0.00422366 -0.152244 -0.157525 -0.125248 -0.0698023 -0.0403768 -0.0939331 -0.381561 0.016077 0.0893488 -0.0118807 -0.241029 -0.346111 -0.311873 -0.291956 -0.266653 -0.19372 -0.133504 2 2 -10.6645 0.491783 11 11 5 0.285059 0.0395925 0.0676001 0.47305 0.597091 0.603908 0.4732 0.291959 -0.0302279 -0.32383 0.256126 0.565216 0.328389 0.197993 0.446539 0.458162 -0.0236116 0.622293 0.389916 0.0759624 0.100966 0.193299 0.355871 0.264638 0.177622 0.303968 0.223793 -0.0039769 0.127366 -0.10385 -0.0455326 0.420291 0.193432 0.512482 0.275031 0.397532 0.296681 -0.462129 -0.264428 -0.334745 -0.685723 -0.778022 -0.0699457 0.347673 0.222925 0.16039 0.510076 -0.366566 -1.15578 -1.08903 -0.55538 -0.666563 -0.959236 -0.586693 0.189452 0.419603 0.54565 0.243858 -0.673335 -0.665282 -0.208626 0.27619 0.162511 -0.375383 -0.42895 0.0733983 0.809943 0.783538 0.551635 -0.207178 -0.0971704 0.663952 0.660689 0.366368 -0.259204 -0.221509 -0.246401 0.498254 0.520888 0.381429 -0.210743 -0.162364 0.548639 0.258717 0.0679381 -0.20727 -0.168434 -0.216805 0.218338 -0.0651117 -0.239307 -0.711297 0.00493879 0.519528 0.277116 -0.0278938 -0.0849352 -0.30785 -0.253249 -0.448958 -0.342975 -0.373 -0.241802 0.246499 0.0857533 -0.343431 -0.203459 -0.429526 -0.426988 -0.194452 -0.556812 -0.675022 -0.301352 -0.391047 -0.115089 -0.0364305 -0.178032 -0.187908 -0.354055 -0.160615 -0.126399 3 11 11 3 2 0 -8.2538 1.33186 11 11 5 0.0781408 0.123861 0.0935647 0.285852 0.247877 -0.182229 -0.68294 -0.525362 -0.0431104 -0.221699 -0.398362 -0.151408 -0.237857 0.022246 0.151763 -0.0112577 -0.541857 -0.822067 -0.378713 -0.4007 -0.522608 -0.586622 -0.134821 -0.132855 0.109841 -0.0186292 -0.352931 -0.661274 -0.395497 -0.443869 -0.478866 -0.428285 -0.550596 -0.194412 -0.240367 -0.241118 -0.211415 0.110661 0.0823218 -0.24382 -0.220865 -0.291194 -0.324998 -0.53582 0.273644 0.224413 0.0306693 0.421849 0.826718 0.137322 0.0899682 0.500742 0.602098 0.611524 0.238129 -0.108578 -0.204066 -0.342553 -0.0939031 0.0539737 0.553597 0.739562 0.819183 0.669134 0.409995 0.000702014 0.0945186 -0.175954 -0.508756 -0.586978 -0.300947 -0.0731359 0.0538095 0.145566 0.154868 0.00705138 -0.191485 0.150665 -0.164949 -0.501148 -0.724585 -0.629313 -0.311927 0.0574972 0.119811 0.173629 0.00578465 -0.169806 0.287334 -0.102177 -0.374001 -0.42183 -0.287016 -0.0205343 0.308333 0.435182 0.396895 0.207781 0.00473035 0.245919 0.0735723 -0.0983865 -0.0635309 0.0277423 0.26244 0.45723 0.523283 0.515789 0.423852 0.17262 0.162096 0.0718939 0.113147 0.276758 0.389336 0.554394 0.6409 0.698788 0.615281 0.52149 0.404665 2 1 -7.89423 1.07662 11 11 5 -0.143455 -0.194594 0.0720389 -0.239532 -0.378814 -0.350773 -0.017133 0.854242 0.313903 0.0367824 -0.21008 0.0574566 -0.46894 0.110973 -0.0178496 0.0551807 0.477351 1.05292 1.16565 0.704962 0.362732 0.686662 0.311069 -0.182661 0.193359 0.386148 0.553777 0.453723 0.555281 0.648421 1.04545 0.893746 0.697978 -0.0367299 0.0404048 -0.00943448 0.213576 0.600492 -0.179954 -0.432789 0.16887 0.209343 0.403987 0.493644 -0.767019 -0.673396 -0.531614 0.0705316 -0.405356 -0.206372 0.0827526 0.0750273 0.124377 0.304798 0.0586931 -0.48374 -0.760367 -0.678365 -0.36692 0.243035 0.319968 -0.434443 -0.421637 -0.45659 -0.300173 -0.255191 0.0634556 -0.198627 -0.193747 0.242177 0.491172 0.00545376 -0.149618 -0.362134 -0.337836 -0.186467 -0.0798694 -0.191155 -0.423885 -0.266771 0.0641828 0.279866 0.349626 0.228076 -0.0278226 -0.157437 -0.0943146 -0.176914 -0.230632 -0.322283 -0.184933 0.173359 0.319967 0.223288 -0.0180042 -0.104217 -0.168396 -0.0447226 -0.0572422 0.0751008 -0.237127 -0.224112 -0.119262 -0.0699966 0.0566126 -0.17577 -0.288957 -0.233251 -0.239133 -0.140735 0.127506 -0.205449 -0.249032 -0.177561 -0.136455 -0.18123 -0.26505 -0.403737 -0.331628 -0.283037 -0.256682 2 2 -7.66177 0.58306 11 11 5 0.734154 0.597211 0.244129 0.392758 0.72936 0.345664 -0.0632769 0.202497 0.62695 0.147236 0.154892 0.209986 0.30006 0.524036 0.380129 0.239626 -0.00464753 -0.329504 -0.0738783 0.106868 -0.0713943 -0.0266461 0.231687 0.11135 0.405771 0.296104 -0.195946 -0.332089 -0.504799 -0.407432 0.0128259 0.00666374 -0.0994475 -0.261862 -0.296791 -0.322078 -0.26186 0.116373 -0.0698776 -0.462003 -0.467213 -0.13895 -0.332408 -0.506132 0.854652 0.693729 0.333424 0.659303 0.991742 -0.0824866 -0.384716 -0.13655 0.216233 0.252873 0.174047 -0.355711 -0.0939286 0.00681337 0.218196 -0.168099 0.148405 0.44782 0.511674 0.823169 0.593351 0.270884 0.024435 0.176833 0.221727 0.0675082 0.174122 0.460019 0.183126 -0.0589412 -0.0051109 -0.306644 -0.223266 0.137142 -0.210498 -0.418037 -0.728429 -0.493525 -0.681545 -0.571314 -0.503817 -0.0667537 -0.256976 -0.301758 0.0117594 -0.171825 -0.612788 -0.818889 -0.567826 -0.575398 -0.238618 -0.0216402 -0.0973569 -0.17005 0.0718226 0.2365 0.108822 -0.33297 -0.526805 -0.544606 -0.587789 -0.390791 -0.120779 0.357229 0.0903972 0.0951063 0.270534 0.193577 0.0324881 -0.206906 -0.379963 -0.157923 -0.0450508 0.150711 0.377975 0.133854 -0.0440223 3 11 11 3 2 0 -7.30895 1.26844 11 11 5 0.0343188 0.211433 0.0349315 0.0938588 0.0946568 -0.225916 0.0339324 0.378476 -0.000518942 -0.643729 -0.738277 -0.00429308 -0.257667 -0.344919 -0.338135 -0.138948 -0.474609 -0.0612829 -0.282648 -0.618391 -0.699837 -0.783257 0.0600263 -0.266226 -0.345753 -0.39648 -0.452285 -0.429993 -0.277655 -0.128833 -0.125215 -0.327937 -0.430304 0.236386 -0.339572 -0.292401 -0.023408 0.225774 0.0258017 0.160089 0.552231 0.413281 0.229354 0.124475 0.353457 -0.0399089 -0.218597 -0.121648 -0.173218 -0.227792 -0.233979 -0.0372262 0.339635 0.641081 0.878958 0.346207 0.143589 0.186138 0.173678 -0.0529786 -0.395466 -0.439535 -0.239894 0.215008 0.479019 0.535649 0.229795 0.333463 0.360459 0.311802 -0.115708 -0.428824 -0.718324 -0.86032 -0.543684 -0.21772 -0.109407 0.118331 0.296732 0.328296 0.237609 -0.132586 -0.422149 -0.485817 -0.415451 -0.173704 0.149234 0.300424 0.119929 0.155958 0.352268 0.105111 -0.0100801 -0.121383 -0.00544647 0.00936081 0.298561 0.482078 0.595627 0.0493184 -0.0158625 0.143265 -0.177832 -0.0447938 0.0353491 0.192437 0.202219 0.461465 0.694804 0.731058 -0.14384 -0.20532 -0.232255 -0.286249 -0.218727 0.0912822 0.331262 0.467964 0.689867 0.791895 0.845554 2 1 -6.93648 0.938216 11 11 5 -0.0267812 -0.299519 -0.12016 0.155413 -0.360355 -0.477415 0.302077 0.403102 0.3151 0.855551 1.40515 0.0593194 -0.10966 -0.156541 0.413734 0.32512 -0.0581886 0.463152 0.464162 0.977947 0.661091 1.47054 0.0292681 0.113086 -0.0868862 -0.0773733 0.200553 -0.248469 -0.148016 0.752456 0.433486 0.221654 0.9519 0.0755563 0.248253 -0.270597 -0.285106 -0.696198 -0.791975 -0.304291 -0.27445 -0.17841 -0.059724 0.104089 0.152553 0.255129 -0.204313 -0.276541 -0.544968 -0.533246 -0.430316 0.0820064 0.405972 0.0704167 0.0427978 0.0621614 -0.00254583 0.230044 0.119675 0.170133 -0.0824177 -0.16469 0.177884 -0.0100427 -0.142743 -0.534567 -0.27763 0.117561 -0.0221288 -0.160674 -0.272739 -0.146097 -0.0720691 0.0940477 0.283795 0.116138 -0.20315 -0.290156 -0.00179419 -0.10585 -0.262574 -0.583279 -0.189778 0.220579 0.464771 0.34771 0.293421 0.0153646 -0.122613 -0.0259509 0.0699942 -0.0298786 -0.35334 -0.147273 0.0621284 0.0599385 0.0468139 -0.13154 -0.380098 -0.231244 0.246502 0.00380849 -0.00279744 -0.0276202 -0.414391 -0.129567 -0.152732 -0.268336 -0.289225 -0.559284 -0.0543989 0.0824378 0.0564218 -0.102907 0.105009 -0.115889 -0.0667264 -0.219696 -0.372333 -0.556348 -0.558358 2 2 -6.97072 0.674976 11 11 5 0.208767 0.334853 0.276192 0.380943 0.538793 0.390121 0.792278 0.765657 0.470368 0.157002 0.345175 0.463539 0.333584 0.0886431 0.147721 0.114158 -0.0344886 0.256168 -0.150648 -0.139684 -0.403501 -0.472044 -0.0576463 0.11145 -0.176836 -0.125744 -0.569388 -0.376663 -0.489908 -0.198975 -0.0979317 -0.57291 -0.671884 0.134616 0.202049 0.234556 0.452354 0.884659 0.508529 0.392707 0.656641 0.306752 -0.244163 -0.144642 0.291563 0.13206 -0.439895 -0.296827 0.0495949 -0.0133505 0.222368 0.107202 -0.179064 -0.13129 0.242028 0.0810858 0.0342804 -0.218093 -0.0274133 0.136575 0.121122 0.0854992 0.278686 0.628923 0.291096 0.844722 0.125661 -0.0571864 -0.366367 0.146588 0.083666 -0.172034 -0.697302 -0.704437 -0.591826 -0.547972 -0.590899 0.113058 0.164056 0.0118125 0.296757 -0.140916 -0.423755 -0.788699 -0.762903 -0.923897 -0.546217 -0.723438 0.234232 0.208529 0.35667 0.388933 0.0842166 -0.344876 -0.342068 -0.555111 -0.38621 -0.101232 -0.32508 0.234731 0.247542 0.208264 0.0507033 -0.00530798 0.0625874 -0.249555 -0.431784 -0.367987 -0.232666 -0.276585 0.230083 0.495307 0.0776042 0.0900869 0.131938 0.206216 -0.0291533 -0.118091 -0.0456002 0.0322711 0.305564 3 0 0 0 3 0 0 0 3 12937152 3 0 3 11 11 3 2 0 -12.5881 2.22799 11 11 5 0.157335 -0.277565 -0.560623 -0.369009 0.392066 0.259867 0.299886 0.323877 0.188523 0.281927 0.750333 0.205897 -0.149162 -0.444328 -0.0819301 0.635505 0.086992 0.170104 0.446818 0.429042 0.388805 0.515071 -0.176104 -0.251446 -0.350163 0.0454953 0.42357 -0.175456 0.0645453 0.653981 0.574066 0.476936 0.403183 -0.268255 -0.158026 -0.0825302 0.267992 0.587323 0.258008 0.254079 0.526484 0.596265 0.514892 0.290245 -0.0253335 0.030921 -0.114615 -0.416798 -0.58619 -0.370645 -0.579728 -0.577595 -0.658751 -0.660803 -0.747529 0.0479935 -0.0496438 -0.359575 -1.04569 -1.46657 -1.4984 -0.799387 -0.00793224 -0.118366 -0.310617 -0.729589 0.0427104 0.0800964 0.125781 -0.008622 0.33061 0.652928 0.925952 1.23121 0.519301 -0.127864 -0.657421 0.232092 0.0753186 -0.0396854 -0.0659718 0.0824492 0.184617 0.339982 0.395938 0.291255 -0.289787 -0.387867 0.265706 0.0347562 -0.126215 0.0210643 -0.0765077 -0.0520327 -0.0321731 -0.165617 -0.29555 -0.318724 -0.234852 0.263064 0.238252 0.0742075 0.18074 0.0340013 -0.188414 -0.261247 -0.376263 -0.194624 -0.0950129 -0.16361 0.294078 0.370086 0.390176 0.354746 0.274785 0.00983329 -0.214356 -0.282357 -0.253493 -0.142705 -0.344467 2 1 -9.22658 1.53019 11 11 5 0.0532757 -0.0708323 0.0262413 -0.206001 -0.69091 -0.540038 -0.493999 -0.439905 -0.50945 -0.529091 -0.598646 0.18053 -0.221355 -0.330651 -0.460337 -0.726915 -0.759868 -0.549134 -0.487233 -0.550864 -0.601199 -0.67003 0.045123 -0.170279 -0.342815 -0.117985 -0.250494 -0.237229 -0.0724918 -0.0295917 -0.198562 -0.12031 -0.266673 -0.0418603 -0.118513 -0.117863 0.0451494 -0.0142784 -0.417633 0.239702 0.551079 0.587434 0.943221 1.21578 0.223475 0.252705 0.0229659 0.0492101 0.284996 0.096759 0.111787 0.42035 0.524237 0.697673 0.778167 0.357497 0.0975792 0.184993 -0.0947654 -0.424539 -0.398176 0.280295 -0.0595346 0.351485 0.832219 0.758708 0.249985 0.390158 0.333144 0.327957 0.534856 0.0595118 -0.16577 0.05577 0.385284 0.388448 0.728487 -0.00724407 0.120377 0.126211 0.271397 -0.000757154 0.56406 0.489939 0.329387 0.348183 0.242953 -0.156424 -0.18524 -0.287424 -0.264329 -0.443482 -0.390563 -0.296596 -0.0745593 0.068805 0.133982 -0.225587 -0.193602 0.0790455 -0.0327619 0.00987023 -0.0658485 -0.19054 -0.428423 -0.217302 -0.337808 -0.25237 -0.279871 0.258892 0.115635 0.261935 0.0182983 0.0872897 -0.218433 -0.456709 -0.163128 -0.00289782 0.34308 0.38666 0.345475 2 2 -11.9801 2.00328 11 11 5 0.0188326 -0.020221 -0.596028 -0.978337 -0.072833 -0.0233471 -0.0302137 -0.315909 -0.714467 -0.588337 -0.208752 0.324356 0.268081 -0.330377 -0.353192 0.676985 0.157286 -0.0723476 -0.218116 -0.498857 -0.357745 0.0725453 0.0557534 0.0689846 -0.37228 -0.237155 0.692609 -0.171477 -0.114956 0.00824619 -0.0315934 -0.0453228 0.3364 -0.336115 0.0673372 0.0860662 0.805827 1.15669 1.05303 0.961285 1.22973 0.954991 0.799469 0.996145 -0.283201 0.174705 0.29735 0.509984 0.781663 0.52576 -0.224553 -0.250008 -0.234576 0.113455 0.195038 -0.0520717 -0.115593 -0.192046 -0.597615 -1.07564 -1.04807 -0.890314 -0.439966 -0.190117 0.0206307 0.203183 -0.0778217 0.00440751 0.340807 -0.180415 -0.162304 0.132308 0.129561 0.311616 0.197905 -0.0879762 -0.145254 -0.0248174 -0.010166 -0.127174 -0.157771 -0.0325602 0.00877948 0.147405 0.632034 0.184772 -0.0830083 -0.206968 -0.0550822 -0.0189015 -0.115424 -0.0800734 -0.168684 -0.0887239 0.115747 0.0557122 -0.0110227 0.124366 -0.0195757 0.186629 0.124872 -0.0488237 -0.055343 0.0818403 0.030106 -0.144601 -0.022656 -0.0979984 0.159199 -0.173579 0.160158 -0.0754756 0.24022 0.113011 -0.0497303 -0.50943 -0.321524 -0.154335 -0.415588 -0.276087 -0.613233 3 11 11 3 2 0 -12.9524 1.6562 11 11 5 0.548095 0.337392 0.276047 0.152244 0.316091 0.607468 0.537341 0.217522 -0.272087 -0.412362 -0.103901 0.502611 0.171057 0.23831 0.257072 0.211523 0.339064 0.348574 0.164162 -0.0692488 -0.315673 -0.0918811 0.00439281 -0.0353261 0.321893 0.470351 0.584435 0.538114 0.348237 0.112574 0.0660779 -0.130287 -0.021621 -0.0792204 -0.000653313 0.429511 0.748698 0.92513 0.859684 0.784052 0.400293 0.102768 -0.147407 -0.195557 -0.325188 -0.224805 -0.260367 -0.343782 -0.251045 -0.0420767 0.120629 -0.0657554 -0.381604 -0.692245 -0.542337 -0.412342 0.012812 -0.0919344 -0.477552 -1.41743 -1.57088 -1.25607 -0.84315 -0.636696 -0.459707 -0.220999 0.0170117 0.385842 0.479442 0.476654 0.216235 0.0284693 -0.488271 -0.717013 -0.435821 -0.0199459 0.0787586 0.366763 0.496183 0.559137 0.467626 0.26473 0.102242 -0.144964 -0.459845 -0.44499 0.285413 0.375774 -0.0314314 -0.0759591 0.0689444 -0.000235495 -0.221468 -0.0343993 -0.0439094 -0.339099 -0.253063 0.392606 0.301402 0.152208 -0.104719 -0.0614845 -0.120491 -0.0370999 -0.00617893 -0.0987354 -0.345338 -0.161586 0.192424 0.157889 0.190594 -0.0690403 -0.234457 -0.258566 -0.0421774 -0.102837 -0.162635 -0.32264 -0.140895 0.140443 0.119478 2 1 -9.76908 1.55592 11 11 5 -0.676076 -0.506879 -0.341825 -0.290707 -0.343923 -0.457632 -0.223032 -0.118492 -0.112426 0.0749596 0.317994 -0.529129 -0.460615 -0.507283 -0.659699 -0.655059 -0.595412 -0.341329 -0.18773 -0.209077 -0.074997 0.170552 -0.149285 -0.0646875 -0.141838 -0.333803 -0.343019 -0.374642 -0.347285 -0.292845 -0.253123 -0.202462 -0.0444033 -0.163148 0.0292356 0.249761 0.23215 0.0538149 0.0745875 0.112836 0.147162 0.0307395 0.143983 0.126887 -0.244196 -0.137147 0.312904 0.561063 1.02212 1.1881 0.808954 0.533454 0.466669 0.313949 0.345473 -0.347964 -0.419948 -0.441177 -0.047085 0.191149 0.351158 0.447366 0.239449 0.37164 0.439679 0.259721 0.0759907 0.202353 0.406042 0.59285 0.207584 -0.489088 0.106525 0.654084 0.82654 0.469147 0.23851 0.0201339 0.350167 0.420933 0.388044 0.0351453 0.0637703 -0.265249 0.174561 0.553918 0.363874 -0.452506 -0.348192 0.124125 0.0281439 -0.425542 -0.326845 -0.410877 -0.349659 0.0345672 0.468399 -0.165018 -0.675896 -0.427557 -0.127073 0.00141786 -0.232323 -0.276084 -0.11341 -0.0371918 0.132683 0.116004 -0.0109378 -0.276757 -0.272305 -0.107288 0.0199524 0.0654031 0.0821418 0.106012 0.0454191 0.144682 0.309545 0.186119 -0.203123 2 2 -13.631 1.93415 11 11 5 -0.190743 -0.307564 -0.424052 -0.546803 -0.698779 0.0722437 0.35178 0.358694 -0.209407 -0.429083 -0.416304 0.492954 0.0805117 -0.329098 -0.472239 -0.383499 0.101909 0.442672 0.356957 0.151513 -0.515315 -0.250367 0.32859 -0.0673466 0.0540512 -0.185691 -0.0440497 0.0483506 0.0570739 -0.0194535 0.320879 -0.0103282 0.0259642 0.537693 0.42191 0.724654 0.956685 1.07139 1.04836 0.911758 0.601777 0.66978 0.640059 -0.161524 0.100983 -0.00843688 -0.250408 0.178612 0.696667 0.76703 1.05671 0.806443 0.511641 -0.0554244 -0.568599 -0.672235 -0.518284 -0.596163 -0.511123 -0.74435 -0.680216 -0.388476 0.081523 0.111765 -0.468352 -0.603983 -0.572626 -0.208317 0.0298011 -0.0194185 -0.0160235 -0.000980679 -0.197742 -0.0736796 -0.296096 -0.396467 -0.385646 0.0986579 0.259804 0.286636 0.302353 0.147667 -0.128221 -0.127772 -0.304232 -0.544663 -0.236647 -0.266544 0.0354894 0.0946855 0.266982 0.229626 0.1421 0.11382 -0.0165919 -0.129291 0.0340091 0.122432 -0.103554 0.154503 0.0992405 0.179291 0.255273 0.147563 0.309087 -0.0301999 -0.0930286 -0.109676 -0.325961 -0.575375 0.0365861 -0.0243177 -0.0528561 -0.102734 0.165723 -0.0742634 -0.154718 -0.28497 -0.406324 -0.295424 -0.368856 3 11 11 3 2 0 -13.6754 1.97086 11 11 5 0.358152 0.212263 0.134606 -0.198977 -0.0553073 0.131244 0.00689694 0.400261 0.624534 0.341951 0.153748 0.239535 0.286985 0.403613 0.251805 0.168234 0.188925 -0.250279 -0.000549938 0.536797 0.296656 0.160272 0.0962966 0.0221681 0.251218 0.188057 0.0580352 -0.0585264 -0.56958 -0.362471 -0.0581843 -0.20294 -0.125361 -0.0605003 0.190512 0.157899 0.413897 0.214806 -0.251518 -0.682226 -0.149435 -0.106479 -0.391426 -0.363019 -0.241457 0.309533 0.152524 0.233236 -0.292085 -0.979943 -0.715801 -0.527453 -0.40609 -0.400103 -0.148866 -0.172377 0.239331 0.0921408 -0.480444 -1.63696 -1.46304 -0.939478 -0.574646 -0.488706 -0.380751 0.0396656 -0.290209 -0.273292 -0.0551943 -0.050105 0.595479 0.597655 0.492176 0.492679 0.475285 0.355497 -0.0212088 0.379813 0.220705 0.450533 1.00386 0.801226 0.2543 0.678503 0.897589 0.71333 0.396217 0.0784954 -0.113424 -0.315888 -0.292858 0.0831689 -0.010118 0.220382 0.540595 0.575546 0.29574 0.118167 -0.00446334 -0.307049 -0.556386 -0.73074 -0.606221 -0.382533 -0.0274128 0.16576 0.149132 -0.0188335 -0.0345268 -0.0365229 -0.0132185 -0.385532 -0.606777 -0.566284 -0.240325 0.0610801 0.185454 0.243518 0.203453 0.188589 0.204392 2 1 -12.3813 1.59259 11 11 5 -0.225995 0.0361179 -0.219141 -0.290789 -0.287945 -0.186317 -0.0210118 0.168815 -0.756293 -0.782661 -0.14988 -0.251909 -0.275417 -0.409269 -0.251517 -0.262523 -0.312597 -0.0439878 0.809077 -0.140895 -0.51753 -0.374637 -0.493907 -0.202972 -0.0970899 -0.0491608 -0.111915 -0.196926 0.124021 0.627968 0.364208 -0.175182 -0.210479 0.0779187 0.64896 0.254695 0.353062 0.0378238 -0.0040263 0.66061 1.06238 0.43211 0.135999 0.0923697 0.405221 0.0503505 0.208805 -0.00640394 0.269012 0.776201 1.68053 1.13874 0.789223 0.648543 0.191549 -0.137687 -0.000328982 0.228805 0.000983492 -0.240671 0.353324 0.291318 0.302712 0.383224 0.297161 0.129364 0.0316049 0.136043 -0.0765886 0.476203 1.05313 0.0468524 0.0936089 0.186938 -0.0779029 -0.245534 -0.226813 -0.689783 -0.525992 0.00542277 -0.176752 -0.904681 -0.511707 -0.39682 -0.64081 -0.623869 -0.523009 -0.393035 -0.749212 -0.534438 -0.387622 -0.431989 0.0177906 -0.154361 -0.388643 -0.365247 -0.332201 -0.33606 -0.180668 -0.461479 -0.137367 -0.0180241 0.506159 0.514885 0.223525 0.0172054 -0.111848 -0.0780064 -0.0562614 -0.0863463 -0.361747 0.0201112 0.243646 0.430582 0.486408 0.355502 0.134818 -0.046415 -0.045887 -0.0332131 -0.0142386 2 2 -13.8315 1.26175 11 11 5 0.0593772 -0.068829 -0.0385012 -0.472811 -0.133615 0.223498 0.25929 0.206536 0.0117112 0.00202996 -0.225247 0.217638 0.391035 0.333068 0.149097 0.274297 0.366532 0.0840043 -0.15848 0.235096 0.153258 -0.0723147 0.379711 0.316047 0.412062 0.234015 0.0999067 0.154442 -0.112319 -0.201651 0.11574 -0.0317434 -0.00352436 0.391642 0.40488 0.228865 0.455643 0.728316 0.429023 0.0948781 0.499251 0.523572 -0.0102277 -0.306979 0.137085 0.312202 0.278692 0.873298 0.619331 -0.136199 -0.00217033 -0.228893 -0.106111 -0.331673 -0.80912 -0.134332 0.239942 0.267568 -0.353067 -1.34795 -1.75269 -1.35486 -0.775799 -0.483654 -0.572952 -0.669925 -0.452714 -0.265808 -0.443134 -0.481023 -0.163729 -0.124044 -0.328347 0.0992506 0.14876 -0.429211 -0.63575 0.547071 0.324894 0.476911 1.15235 0.728175 -0.0229083 0.0486303 0.421555 0.258087 -0.0352516 0.0271326 0.308894 0.415824 0.477156 0.589812 0.191836 0.0844204 0.166386 0.619896 0.382327 0.31323 -0.129537 -0.164186 -0.0485877 0.153772 -0.0185915 -0.279655 0.0542654 0.264489 0.206971 0.0316264 -0.184059 -0.238059 0.0921326 -0.194278 -0.489147 -0.764422 -0.434024 -0.309354 -0.406505 -0.510003 -0.418064 -0.502021 -0.38038 3 11 11 3 2 0 -13.1989 1.56222 11 11 5 0.134529 -0.0283493 -0.386079 -0.0369413 0.461618 0.348431 0.476647 0.357364 0.0905265 -0.0405531 0.101701 0.271222 0.224122 -0.139933 0.0388338 0.291746 -0.127872 0.0307796 0.265918 0.196697 0.00652797 -0.45551 0.195588 0.24496 -0.0702435 -0.098469 -0.0550078 -0.235323 0.0561433 0.563932 0.246465 -0.173642 -0.460614 0.124559 0.128428 -0.0232659 -0.206713 0.0327978 0.0552394 0.144468 0.186575 -0.13833 -0.512823 -0.462254 0.147488 -0.117948 -0.309352 -0.599367 -0.307177 0.308789 0.590832 0.126711 -0.806793 -1.11574 -1.03191 0.23332 -0.0404301 -0.319308 -0.725801 -0.970867 -1.32981 -1.2409 -0.653732 -0.144583 -0.0541576 -0.274118 0.295485 0.0126135 -0.0206559 0.285658 0.622842 0.531456 0.462823 0.863844 1.26078 0.983255 0.859858 0.214336 0.0808649 -0.0483176 -0.28693 -0.153758 0.0107835 -0.138626 0.0192604 0.398388 0.648406 0.880537 0.0775516 0.037131 0.023755 0.01431 -0.248337 -0.485317 -0.655102 -0.690338 -0.331305 0.132376 0.387755 0.0741202 0.0711185 0.231331 0.264975 -0.0201284 -0.586363 -0.85759 -0.861358 -0.511889 -0.0655089 0.150214 0.0301975 0.0761522 0.43534 0.367204 0.257519 -0.00283017 -0.0383179 0.0777683 0.330863 0.65387 0.888874 2 1 -9.46589 0.793841 11 11 5 -0.15696 -0.194124 0.1379 -0.115108 -0.504317 -0.420174 -0.433842 -0.362789 -0.408809 -0.481247 -0.247845 -0.0250809 -0.232855 -0.0338778 -0.0862363 -0.28358 -0.551283 -0.409524 0.0818972 -0.329496 -0.246905 -0.09943 0.0305458 -0.0287816 0.0794022 0.224746 0.130325 0.0969273 0.319541 0.26314 -0.00328965 0.127036 0.791582 0.019418 0.166412 0.0100701 0.028148 0.13135 -0.0624422 0.447143 0.427296 0.13595 1.05845 2.09655 -0.0389465 0.234227 0.307238 0.330756 0.77687 0.433176 -0.15418 0.0541002 0.470006 1.00916 1.04554 -0.18574 -0.0910741 -0.389323 -0.24005 -0.206499 -0.671405 -0.324394 0.0652592 0.425692 0.219603 0.0540884 0.123584 -0.0695291 -0.0918268 -0.0904723 -0.0809212 -0.0677155 0.0709661 0.156356 -0.0521822 -0.177097 -0.0072699 -0.0252515 0.252174 -0.010615 -0.504213 -0.82448 -0.836191 -0.792467 -0.481404 -0.244662 -0.411346 -0.607499 -0.164605 0.0675202 0.0607705 0.138736 -0.142663 -0.355092 -0.094691 0.160535 0.479962 0.20195 -0.0819193 -0.0625793 0.0626687 0.221246 0.0113472 0.0709738 -0.171993 -0.102611 0.128254 0.254011 0.294895 0.0253317 -0.201836 0.0286732 0.0286328 -0.0147542 -0.597551 -0.446149 -0.12306 0.328127 0.342213 0.264838 -0.0490515 2 2 -13.5039 1.72067 11 11 5 0.127229 0.098663 -0.112729 -0.159725 0.30289 0.219718 0.254064 0.0730621 -0.212712 0.0682254 0.27 0.152109 0.277057 -0.333 -0.0694035 0.292671 0.243435 0.190298 0.178267 0.0488032 0.137847 -0.0261521 0.114256 0.447122 0.161274 0.250468 0.216088 0.0136209 0.141235 0.522958 0.490608 0.118263 0.0685317 0.279964 0.227704 0.0654022 0.359236 0.210515 0.0815464 0.309141 0.478006 0.349059 0.0922891 0.230011 0.0742869 0.188894 0.0322544 0.235225 0.471906 0.910252 0.890181 0.277731 -0.213711 -0.888301 -0.881987 0.0321911 0.0749265 -0.439629 -0.725671 -1.17928 -1.39639 -1.19592 -0.820949 -0.476701 -0.709172 -0.62609 0.0391226 0.0967592 0.141045 0.347364 0.656516 0.616482 0.343127 0.484407 0.685737 0.316052 0.177425 0.144183 0.0994075 -0.0247006 -0.241827 -0.104346 0.248343 0.332727 0.460121 0.62088 0.173548 0.379008 0.0694088 -0.195201 -0.32627 -0.186118 -0.15761 0.155786 0.152006 0.026463 -0.0779646 0.0736481 0.332261 0.0852642 -0.362533 -0.449862 0.100081 -0.253552 -0.343466 -0.351667 -0.50958 -0.361326 -0.109136 -0.298068 0.0107561 0.00889886 0.367375 0.266247 -0.0242099 -0.425103 -0.77433 -0.751372 -0.834495 -0.863091 -0.866593 3 1610612736 -1071999177 0 3 11 11 3 2 0 -6.25369 1.74808 11 11 5 0.203296 0.0746849 0.0930618 0.0658162 0.0691657 0.0906961 0.0443161 -0.107348 -0.0704967 0.106935 0.0351288 -0.126829 -0.312093 -0.214587 -0.196507 -0.191234 -0.225962 -0.182659 -0.258315 -0.167583 -0.109674 0.0640432 -0.220271 -0.401256 -0.419518 -0.161025 -0.338851 -0.510371 -0.533062 -0.428214 -0.312589 0.0252996 0.274605 0.126074 -0.0789416 -0.202348 -0.194458 -0.425131 -0.646706 -0.69554 -0.520028 -0.23084 0.19572 0.463237 0.31182 0.286076 0.274486 0.131966 -0.14645 -0.576773 -0.624027 -0.499743 -0.098113 0.252802 0.432083 0.467307 0.235869 0.384579 0.379378 0.245552 -0.44343 -0.674625 -0.492983 -0.0349996 0.236543 0.476737 0.541434 0.184149 0.245982 0.644666 0.572045 -0.152045 -0.757847 -0.573193 -0.12214 0.195321 0.400304 0.487894 0.225237 0.0447987 0.470028 0.393332 -0.15465 -0.572212 -0.509342 -0.113412 0.194041 0.331323 0.569796 0.125238 -0.118104 0.104564 0.432287 -0.0593449 -0.36969 -0.36143 -0.135842 0.150439 0.360864 0.587683 -0.0449896 -0.253408 0.0169369 0.436112 0.292346 -0.205835 -0.194994 0.109368 0.239223 0.413577 0.507034 0.0213797 -0.355819 -0.0437626 0.470533 0.594341 -0.0745065 -0.136121 0.05193 0.30999 0.610757 2 1 -5.7748 0.391836 11 11 5 -0.423128 -0.208382 -0.650347 -0.840375 -0.75957 -0.606538 -0.295024 -0.048523 0.108464 0.186438 0.0375423 0.128986 0.23679 -0.387677 -0.699352 -0.753207 -0.587583 -0.400887 -0.22509 0.0951343 0.154493 0.318166 0.408717 0.533414 0.228264 -0.43398 -0.800052 -0.662661 -0.385207 -0.268502 0.158352 0.25713 0.33317 0.715003 0.352604 0.24792 0.274969 -0.328497 -0.612237 -0.253611 0.281909 0.388661 0.372582 0.30892 0.253777 0.366461 0.375642 0.213441 0.380686 -0.244648 -0.144749 0.156275 0.2583 0.128183 -0.000718954 0.658582 0.208332 0.46639 0.215461 0.363394 0.0434579 -0.390877 -0.000853613 0.10604 -0.0483867 0.0492317 0.337419 0.0649973 -0.271055 -0.0691968 0.128521 -0.00895313 -0.253342 0.203587 0.116106 0.155248 0.0521669 -0.30395 -0.265056 -0.535472 -0.275155 0.0212281 -0.0775521 -0.0641819 0.313356 0.294304 0.127444 0.0820504 -0.468829 -0.22455 -0.173877 -0.447867 -0.0863469 0.0504016 -0.0629556 0.399292 0.507987 0.304751 0.267693 -0.41803 -0.214407 -0.13643 -0.313562 -0.00826994 0.235672 0.106221 0.357146 0.518651 0.0819739 0.142721 -0.955679 -0.00464023 0.119953 0.146647 0.265764 0.551556 0.168421 0.0670714 0.0986129 0.245646 0.196137 2 2 -6.44405 0.44776 11 11 5 0.520482 0.25103 -0.1407 0.199103 0.558228 0.343574 0.507457 -0.0284942 0.217853 0.15559 0.0126634 0.264508 0.0954429 -0.171161 0.17884 0.446399 0.509601 0.728498 0.202026 0.0319239 -0.23067 -0.167479 -0.502395 -0.206353 -0.312784 0.0577883 0.222824 -0.0548081 -0.229025 -0.277118 -0.333148 -0.16016 -0.129513 -0.5552 -0.18071 -0.124522 -0.0920818 -0.184854 -0.247508 -0.349914 -0.550536 -0.272864 -0.187297 -0.229771 0.0813597 0.376652 -0.253987 -0.0416835 0.152981 -0.280779 -0.228435 -0.160238 -0.0593707 0.0956475 -0.181723 -0.02919 0.0440713 0.350141 0.365887 0.267505 -0.149534 -0.305287 -0.0759804 -0.05323 0.29538 0.116777 0.0329143 -0.00810083 0.183527 0.783726 1.11432 0.44198 -0.502386 -0.56075 -0.0528464 -0.062663 0.0781112 0.0215942 0.174424 0.469794 0.726039 1.11903 0.504575 -0.506237 -0.885245 -0.502962 -0.146435 0.015315 0.232193 -0.111075 0.321075 0.290461 0.620217 0.323185 -0.600847 -1.18603 -0.241458 -0.301692 -0.065087 0.405154 0.191741 0.0281709 0.178026 0.469827 0.564792 -0.143833 -0.720176 -0.258904 -0.328479 -0.342557 -0.094489 -0.265825 -0.265825 0.282518 0.398591 0.791199 0.0397832 -0.810791 -0.840314 -0.447664 -0.46134 3 11 11 3 2 0 -6.0012 0.777483 11 11 5 0.241062 0.323007 0.420775 0.484038 -0.173128 -0.717596 -0.645096 -0.425572 0.0102671 0.0660008 0.280905 0.209569 0.0731391 0.0531672 0.397851 -0.199844 -0.594929 -0.647786 -0.45174 -0.0298652 0.0349063 0.160469 0.146317 -0.353545 -0.175899 0.31125 -0.1259 -0.438452 -0.524312 -0.369416 -0.0395752 0.0319295 0.0130633 -0.0908927 -0.37519 -0.270274 0.328908 0.155027 -0.31138 -0.460427 -0.264697 -0.00969836 0.0754602 0.0691889 0.129652 -0.298795 -0.239402 0.128258 0.605268 -0.0981674 -0.348922 -0.300158 0.0345239 0.142432 0.0801662 0.163408 -0.142893 -0.309114 -0.15514 0.618076 -0.0167205 -0.369643 -0.262216 0.0162245 0.0975946 0.0622062 -0.0486404 -0.13328 -0.360678 -0.301411 0.389356 0.0255801 -0.437426 -0.172895 0.0878407 0.084536 0.104838 -0.0727464 0.21577 0.0399998 0.0650431 0.154733 0.175821 -0.5355 -0.215406 0.0347036 0.117162 0.246226 0.0667359 0.407031 0.383209 0.493861 0.402419 0.212403 -0.575628 -0.233137 0.118864 0.120714 0.204108 0.113759 0.344802 0.65895 0.73005 0.594964 0.211348 -0.505095 -0.18397 0.115106 0.0757156 0.185952 -0.469556 -0.0154488 0.559113 0.786342 0.481758 0.0699917 -0.576155 -0.358195 0.0406709 0.155954 0.192 2 1 -5.86893 -0.133757 11 11 5 -0.334949 0.0256555 0.0777918 0.334071 -0.00939933 -0.289051 -0.193129 0.28242 0.238507 0.0326838 -0.0255733 -0.349782 -0.349232 -0.544736 -0.288609 0.0864963 -0.121768 0.132005 0.398067 0.236716 0.202055 0.0829309 -0.313398 -0.448185 -0.579397 -0.52308 0.242855 0.0225084 0.194785 0.531323 0.411491 0.231838 0.296958 -0.60693 0.0624674 -0.288762 -0.155712 0.102304 0.206739 0.100789 0.310237 0.388945 0.197964 0.16676 -0.365206 0.00105657 0.127167 0.164606 0.00877921 0.0895248 -0.100835 0.280587 0.261201 0.0387136 0.234766 -0.690357 0.00263087 0.228267 0.666744 -0.0306474 0.0984134 -0.172828 0.0467598 -0.139296 -0.0779111 0.175763 -0.868303 -0.155011 -0.088186 0.836212 0.385103 0.398095 -0.323022 -0.207844 -0.246889 -0.118175 0.0920312 -0.653493 -0.594272 -0.0213972 0.680584 0.504367 0.162639 -0.0415992 -0.423096 -0.311032 -0.0717613 0.0552761 -0.846834 -0.567876 -0.321241 0.617187 0.313607 0.266715 -0.10105 -0.468732 -0.282327 0.00957002 -0.00496763 -0.106793 -0.679602 -0.486678 -0.043274 0.568186 0.319 0.00517916 -0.582696 -0.296222 0.132242 -0.0323454 0.598671 0.164442 -0.264628 0.354566 0.83596 0.9167 0.615307 -0.533042 -0.206692 0.0979866 -0.00411801 2 2 -8.13574 0.551254 11 11 5 0.161877 0.191992 0.782339 1.19386 0.4123 -0.169841 -0.115951 -0.215458 0.0269914 0.123973 0.122009 0.276976 0.298747 0.714201 0.918564 0.455071 -0.311796 -0.726991 -0.31308 -0.00674115 0.230255 0.0797632 0.310352 -0.126141 0.0736826 0.568373 0.200371 -0.231896 -0.756178 -0.236762 -0.235068 0.131747 0.00595604 0.093501 0.0275779 -0.00732978 0.198789 0.412666 -0.0589684 -0.584884 0.0211915 -0.162636 -0.114539 -0.00879729 0.327378 0.155303 -0.082345 0.316635 1.02882 0.0959501 -0.56308 -0.551798 -0.232477 -0.202755 -0.348136 -0.226069 -0.244554 -0.304114 -0.0121185 1.21874 0.227378 -0.550797 -0.491945 -0.451297 -0.269537 -0.192508 -0.308654 -0.536869 -0.37378 -0.351705 0.600216 0.369544 -0.361216 -0.528121 -0.455204 -0.243757 -0.163077 -0.452044 -0.4852 -0.47411 -0.478139 -0.0132542 0.515357 -0.639735 -0.592244 -0.106435 -0.155346 0.179051 -0.170786 -0.336808 -0.182963 0.00567797 0.256608 0.713287 -0.584925 -0.392506 0.0139392 -0.055831 0.0577758 -0.0602592 -0.190464 0.264933 0.406718 0.352373 0.732947 -0.100664 -0.104957 -0.209719 -0.149071 -0.00479655 0.410787 0.447952 0.719091 0.636017 0.524959 0.431382 -0.0580295 -0.283297 -0.117366 -0.0290968 -0.184913 3 11 11 3 2 0 -5.98731 0.645899 11 11 5 -0.14184 0.125218 -0.117557 0.284101 -0.326823 -0.761132 -0.447139 -0.190587 -0.00676912 -0.242305 -0.335436 0.0773654 0.311675 0.30591 0.513556 -0.272952 -0.551932 -0.236382 -0.102837 0.0160508 -0.15672 -0.180436 0.349233 0.691607 0.661409 0.58864 0.016805 -0.32849 -0.123263 -0.07828 0.0412549 -0.0709628 -0.256041 0.38669 0.904272 0.964998 0.574007 0.176204 -0.472069 -0.0148651 0.0108281 0.0819236 -0.128532 -0.0808457 0.0743105 0.713459 0.865585 0.607458 0.10125 -0.685494 0.00568497 0.0815881 0.123925 -0.136762 -0.0278974 -0.134018 0.333183 0.52862 0.347371 -0.0471061 -0.71768 -0.0773716 0.172773 0.254692 0.0241288 0.0455853 -0.222562 0.245426 0.0889976 -0.0563109 -0.210225 -0.820456 -0.205962 0.155281 0.227281 0.105797 0.0479017 -0.35417 0.0346793 -0.112732 -0.229114 -0.277864 -0.727351 -0.31452 0.213541 0.219029 0.135996 -0.0231954 -0.391812 -0.115568 -0.0608334 -0.116821 -0.0848769 -0.474899 -0.370824 0.170561 0.241897 0.212097 0.115863 -0.257088 -0.247682 -0.0743963 -0.0793813 0.0214315 -0.367262 -0.384196 0.00958884 0.223304 0.222032 0.16083 0.0244174 0.0340281 -0.0571582 0.00569128 0.159992 -0.225533 -0.433718 -0.109852 0.118574 0.142641 0.158641 2 1 -5.77373 0.0934483 11 11 5 -0.81561 -0.0166318 0.396592 0.175241 -0.0289473 -0.327977 -0.294893 -0.372827 -0.134505 0.0920091 0.0560643 -1.00347 -0.188576 0.16864 -0.0365048 0.133202 -0.474225 -0.426169 -0.305592 -0.0505618 0.105353 0.0122612 -0.824674 -0.808724 -0.269575 0.0344106 0.215691 -0.292907 -0.502862 -0.197146 -0.0482548 0.128888 -0.0277277 -0.550168 -0.485888 -0.11097 0.421288 0.78471 0.0837141 -0.421729 -0.206381 0.0163491 0.0584956 -0.0434544 0.225898 -0.316245 0.0430779 0.831607 0.974676 0.288354 -0.260239 -0.0483659 0.00202905 -0.0978854 -0.146324 0.45431 0.0111599 0.140556 0.655328 1.14767 0.422492 -0.299075 -0.165303 0.0515847 -0.0166433 -0.210933 -0.240284 0.267606 0.330113 0.574935 0.893672 0.472139 -0.204641 -0.222685 0.105013 -0.0305413 -0.178971 -0.46079 0.217706 -0.0790866 0.313359 0.622336 0.1912 0.114782 -0.115994 0.0440938 -0.0913817 -0.156944 -0.325016 0.405369 0.246874 -0.00193546 0.234258 0.231363 0.0174765 -0.0397967 0.115591 -0.0309322 -0.0258441 -0.661183 -0.207403 0.144638 0.176805 0.141451 -0.0486165 0.138175 0.0109281 0.160061 0.0826277 -0.0745097 -0.249673 -0.166881 -0.259073 0.05436 0.0036432 -0.165259 -0.0530908 -0.0399088 0.181933 0.21293 0.121314 2 2 -8.02331 0.576115 11 11 5 -0.579883 -0.257908 -0.580605 0.935822 -0.0560132 -0.605251 -0.526024 -0.36325 -0.24746 -0.292045 -0.505425 -0.444395 -0.323084 -0.339062 0.509434 0.00681373 -0.770679 -0.513685 -0.117323 -0.242192 0.0261557 -0.388171 -0.237051 0.282238 0.353487 0.90742 0.574702 -0.275989 -0.656444 -0.338457 0.0153113 -0.103352 -0.175899 0.178055 0.343833 0.563315 0.393237 0.725215 -0.68272 -0.220128 -0.182591 0.212416 0.0111307 0.0586974 0.417262 0.608389 0.848962 0.688912 0.846478 -0.695329 -0.0774994 -0.130405 -0.144857 -0.106929 -0.297252 -0.113091 0.689948 0.965299 0.929738 0.562062 -0.245064 0.0987097 0.0558834 0.257802 0.0153836 -0.0674616 -0.517107 0.24782 0.626094 0.669715 0.212164 -0.634444 0.000151067 0.0733477 0.264592 -0.04896 -0.480186 -0.56339 -0.0739928 0.376653 0.420473 -0.0138972 -0.239824 -0.132585 0.205936 0.105713 -0.0173255 -0.416272 -0.632488 0.00766177 0.248935 0.637525 0.00550517 -0.40125 -0.230315 -0.0210331 0.125387 -0.336597 -0.560445 -0.547667 -0.0552121 0.0481182 0.00604348 0.135047 -0.248825 -0.00606313 -0.289277 -0.278353 0.16957 -0.0902738 -0.222055 -0.0550524 0.109587 0.418769 0.75377 -0.023981 -0.209356 -0.453436 0.163035 0.473198 0.115713 3 11 11 3 2 0 -4.75043 0.146752 11 11 5 1.59445 0.871591 0.142356 -0.543989 -0.350274 0.0848518 -0.00391822 0.0176936 -0.155316 -0.195252 -0.311395 0.306156 0.0245933 -0.131832 -0.587335 -0.332751 0.0194803 0.0391507 0.0816291 0.128702 -0.143925 -0.239782 -0.0755887 0.0323174 0.104534 -0.485741 -0.537272 0.00213582 0.203272 0.214495 0.216354 0.0213872 -0.0477968 -0.202299 -0.0911876 0.0610146 -0.604046 -0.86106 -0.0634648 0.251568 0.15572 0.233631 0.184761 0.114354 -0.11519 -0.000754686 0.0567168 -0.338054 -0.600435 -0.327335 0.121289 0.130542 0.284757 0.216354 0.222671 0.0521543 -0.112165 0.0170282 -0.153975 -0.318555 -0.617238 -0.0156512 -0.0439243 0.125556 0.240762 0.241295 0.180514 -0.016224 0.0378457 0.0229715 0.0435384 -0.587961 -0.359702 -0.253833 0.00599998 0.142828 0.407965 0.198775 0.0692965 0.161698 0.24059 0.234919 -0.194165 -0.542785 -0.4186 -0.228786 0.0342729 0.307496 0.186963 0.0999815 0.178587 0.418538 0.436817 0.326718 -0.341442 -0.419651 -0.276899 -0.116872 0.11268 0.103808 -0.0856116 -0.0545808 0.357833 0.520378 0.690437 0.117452 -0.380076 -0.417933 -0.251989 0.0648449 0.040828 -0.384477 -0.23511 0.342451 0.56511 0.81214 0.570862 0.0342743 -0.32102 -0.264541 -0.125006 2 1 -2.06882 0.258912 11 11 5 0.430622 0.971639 0.974145 0.940851 0.236441 -0.565751 -0.274293 -0.120343 -0.0505571 -0.00424372 -0.162442 0.00992718 0.404353 0.581536 0.642735 0.376399 -0.297232 -0.322462 -0.115553 -0.214957 -0.229346 -0.0887929 -0.111892 0.144721 0.403287 0.506963 0.196093 -0.233882 -0.135265 -0.0540769 -0.0746978 -0.197712 0.0025741 -0.308345 -0.0124801 0.196857 0.347689 0.0784576 0.0283389 -0.109402 0.130371 -0.03823 -0.24648 -0.0928282 -0.213611 -0.102608 0.330188 -0.0732778 0.347308 0.255388 -0.210712 -0.181628 0.044585 -0.147959 -0.191532 -0.235784 -0.0856889 0.0254061 -0.0859044 0.232652 0.141514 0.0440283 -0.000112077 0.0569791 -0.036036 -0.216566 -0.154299 -0.172021 -0.142193 -0.24546 -0.136307 0.325009 0.104928 0.110681 0.0193386 -0.024855 -0.116411 -0.188235 -0.126329 -0.164308 -0.177163 -0.224629 0.160242 0.0973168 0.0895006 0.178844 0.133728 -0.0373693 -0.0394674 0.0173941 -0.150101 0.0334683 -0.269975 0.0201472 0.0386992 0.0130016 0.170981 0.0885715 0.039316 -0.0684096 0.117952 -0.0844956 0.0770836 -0.199307 -0.0212556 0.0691904 -0.168062 0.14169 -0.161874 -0.0991441 -0.641702 -0.173019 -0.272292 -0.176627 -0.277147 -0.0861934 -0.0441414 -0.0837187 -0.187354 -0.00116026 -0.171434 2 2 -5.74742 0.17773 11 11 5 1.02081 0.707376 0.0439747 -0.596458 -0.178789 0.174835 0.119423 0.0234209 -0.613342 -0.222255 -0.458306 0.801736 0.657967 0.276717 -0.290483 0.220598 0.223379 -0.1426 -0.243672 -0.3025 -0.43441 -0.654291 0.289393 0.43194 0.0958432 0.151347 -0.0563177 -0.145123 0.00901445 -0.0349218 -0.344692 -0.136635 -0.271213 0.260365 0.247908 0.260253 0.152443 -0.433537 -0.0500438 0.357429 0.35274 -0.0689628 0.225547 -0.469677 0.607104 0.379631 0.789974 0.336628 -0.151371 -0.228652 0.395075 0.637598 0.0177865 0.00778577 -0.576208 0.0814571 -0.0326237 0.195616 -0.169082 0.332501 -0.677014 -0.00237234 -0.138041 -0.0644646 0.268677 -0.341009 0.184981 0.171734 -0.0508308 -0.285397 0.54672 -0.675557 -0.3986 0.0483982 0.193158 0.289456 0.193747 0.134897 0.0103692 -0.0640192 -0.0101813 0.305187 -0.133746 -0.513671 -0.439786 -0.0757815 0.0125532 0.217792 0.0774098 0.506629 0.231418 0.102432 -0.000657734 -0.0632098 -0.878657 -0.728375 -0.0456736 0.188536 0.139511 0.263682 0.308099 -0.0625164 0.347069 0.0302368 0.0818231 -0.519381 -1.26362 -0.493461 -0.0168683 0.482496 0.224713 0.231008 0.0456148 0.303075 -0.198137 0.135226 -0.353681 -0.927384 -0.710031 -0.130024 0.406041 3 11 11 3 2 0 -3.83069 0.875138 11 11 5 -0.341348 -0.689498 -0.366296 -0.0727713 0.0756954 0.191275 0.0516203 0.0576974 -0.0373745 0.0219231 0.140659 -0.30493 -0.439644 -0.598213 -0.235503 -0.112852 0.0999756 0.213495 0.104108 0.199419 0.217375 0.255076 -0.122283 -0.199071 -0.586428 -0.421265 -0.183817 -0.105399 0.110368 0.133685 0.304059 0.295243 0.355802 0.109114 0.0534325 -0.273222 -0.394941 -0.388031 -0.222054 -0.00694253 0.300174 0.263681 0.370675 0.452134 0.252192 0.30409 -0.0210772 -0.367234 -0.331414 -0.352502 -0.0670179 0.111797 0.147933 0.183667 0.395784 0.21733 0.371216 0.214561 -0.0395507 -0.153009 -0.515527 -0.393015 -0.142548 0.0977709 0.400471 0.38826 0.234009 0.313474 0.38904 0.372404 0.0728061 -0.191214 -0.49576 -0.287023 -0.0389997 0.0959167 0.387244 -0.0796264 0.293935 0.378045 0.455715 0.394241 0.165901 -0.298709 -0.526225 -0.278985 -0.138188 0.161901 -0.262 0.0933602 0.277429 0.514877 0.37943 0.345906 0.0349007 -0.398636 -0.46392 -0.267979 0.00825141 -0.460831 -0.0770754 0.0577491 0.367271 0.407944 0.32859 0.204182 -0.153049 -0.391183 -0.33442 -0.120663 -0.520377 -0.262274 -0.119208 0.142998 0.348711 0.432591 0.286353 0.0544985 -0.135207 -0.37576 -0.299378 2 1 -1.72183 0.100783 11 11 5 0.379192 0.230616 0.499996 0.230532 -0.137917 -0.291229 -0.454021 -0.117297 -0.0945729 -0.1135 -0.686806 0.483822 -0.16861 0.446158 0.308336 0.17035 0.0944551 -0.444035 -0.623671 -0.129089 -0.133509 -0.499994 0.297032 0.136226 -0.114294 0.279931 0.526005 0.200642 -0.190133 -0.359202 -0.200467 -0.400258 -0.265495 0.266852 0.222626 0.173285 -0.0489242 0.430689 0.333751 0.19386 -0.0386207 -0.0758898 -0.091797 -0.156258 -0.0446522 0.283173 0.111115 0.0362903 -0.0184468 0.14387 0.324247 0.0859066 0.0418369 0.0656 0.118718 0.0138389 0.0717057 -0.0879799 0.392632 0.169848 0.282791 -0.0412554 0.356877 0.13763 0.238259 0.108276 0.258255 0.105258 -0.126071 0.0764025 0.492308 0.640777 -0.131518 0.0198872 0.163989 0.0672531 0.142449 0.354711 0.398948 -0.252061 -0.26789 0.0903392 0.523842 0.399306 -0.129254 -0.11637 -0.0221567 0.0378557 0.198278 0.334891 -0.0718304 -0.288076 -0.200436 -0.0747616 0.190186 0.116219 -0.330948 -0.50683 -0.342797 -0.101807 0.325706 -0.26213 -0.159862 -0.226639 -0.326332 -0.397363 -0.0853734 0.0839505 -0.220575 -0.750833 -0.0393074 -0.347167 -0.220768 -0.405748 -0.53635 -0.525531 -0.232766 0.013466 0.174218 -0.114304 -0.253687 2 2 -3.99835 0.230707 11 11 5 0.329676 0.36801 0.203974 -0.0159249 0.112191 -0.0438445 -0.0549591 -0.359426 -0.448886 -0.157474 -0.767807 0.110952 0.308064 -0.144142 -0.36767 0.00076122 0.0851644 0.0582065 0.183442 -0.283821 -0.054977 -0.373619 -0.0443298 0.0798324 -0.308889 -0.178719 -0.312364 -0.0684994 -0.0195815 -0.0866629 0.207273 -0.411897 -0.523432 -0.131737 -0.0744568 0.132768 -0.141398 -0.453756 0.0263252 0.121016 0.706765 0.103391 0.00358471 -0.286282 -0.121813 -0.0951209 -0.788229 -0.915135 -0.125414 0.00522956 0.632398 0.592351 0.118084 0.155111 0.102446 -0.22855 0.025167 -0.481217 -0.497348 -0.323617 -0.0598069 0.216702 0.631779 1.05791 0.680147 0.240256 -0.1291 0.0674954 -0.285098 -0.0285941 -0.197445 -0.109291 -0.276118 0.491214 1.08249 0.729388 0.592049 0.364697 0.44509 0.179576 -0.20414 -0.328553 -0.360592 -0.435182 -0.495831 -0.163999 -0.0293418 0.512202 0.240948 0.355433 0.00316014 0.25903 -0.211597 -0.219066 -0.0427898 -0.14159 -0.136332 0.249938 0.560028 0.607835 0.250674 0.148366 0.304357 0.803733 0.0530097 -0.117723 -0.220267 -0.526948 -0.141852 0.0491364 -0.420011 -0.193907 0.188303 0.188566 0.282109 -0.0350087 0.0655387 -0.215513 -0.553674 -0.526626 -0.176348 3 11 11 3 2 0 -3.81608 1.1264 11 11 5 -0.309968 -0.151221 -0.00399087 -0.121759 -0.00721097 0.111767 0.302127 0.167206 0.144128 0.0402323 -0.0829918 -0.435516 -0.353221 -0.119362 -0.0661203 0.0206806 0.264101 0.474059 0.509573 0.208142 0.162587 -0.0820887 -0.559326 -0.378706 -0.256263 -0.121964 -0.0100535 0.217932 0.463053 0.620583 0.572188 0.232632 0.178018 -0.230266 -0.414725 -0.507412 -0.436713 -0.197821 0.0111513 0.273774 0.488573 0.501393 0.306195 0.37029 0.0170228 -0.255341 -0.447638 -0.425202 -0.422749 -0.293141 -0.103518 0.216903 0.379265 0.420343 0.367719 0.176539 0.0361287 -0.120305 -0.151373 -0.418456 -0.586777 -0.451921 -0.0920976 0.114823 0.169861 0.0702251 -0.000119388 0.174101 0.176604 0.20573 0.0598972 -0.214809 -0.464244 -0.372084 -0.153369 -0.107936 -0.0969196 0.00141168 0.202672 0.377366 0.064604 -0.0923938 -0.117149 -0.248713 -0.446587 -0.455864 -0.237339 -0.0427691 -0.185905 0.164288 0.256891 0.253389 -0.0347012 0.0236563 -0.0447869 -0.0715212 -0.303573 -0.245925 -0.12501 -0.188551 0.269013 0.205079 0.185409 0.183046 0.152341 0.123905 -0.0797607 -0.00751137 0.0305746 -0.12886 -0.0744375 0.312293 0.419329 0.286284 0.264622 0.144131 0.110684 -0.109874 -0.0271472 0.0358488 0.000745196 2 1 -3.44938 0.121739 11 11 5 0.383498 0.0958738 -0.131458 0.0183468 -0.101679 -0.246151 -0.310435 -0.446456 -0.379748 -0.318768 -0.602793 0.204941 0.30053 0.251002 0.446997 0.0762663 -0.0968821 -0.259756 -0.235555 -0.437741 -0.208152 -0.465209 0.175261 0.277808 0.502168 0.509474 0.471438 0.238248 -0.242123 -0.0836531 -0.207345 -0.0936599 -0.526926 0.383787 0.319052 0.0358863 0.464764 0.543676 0.615008 0.490301 0.175814 0.0340132 -0.214726 -0.366797 0.0815261 0.424016 -0.0178178 0.0492509 0.520564 0.299578 0.645129 0.339389 0.475334 -0.0735016 -0.122716 -0.394113 0.0144387 0.27655 -0.149788 0.16117 0.144652 0.00760378 0.0425026 0.199498 0.355689 0.127136 0.127625 -0.156401 0.143165 0.0692908 -0.111452 0.0191335 -0.433315 -0.245884 -0.304887 -0.181655 -0.163894 0.280258 -0.0768142 -0.070823 0.0568734 0.0609934 -0.0380418 0.0548111 -0.243145 -0.684488 -0.380529 -0.821033 0.0276858 -0.0302371 -0.176256 0.094257 -0.0607131 0.211532 0.272546 0.0804804 0.0528204 -0.481857 -0.898986 -0.213267 -0.018038 -0.0783158 -0.251849 0.15119 0.0213954 0.192767 0.326203 -0.0309326 0.0104437 -0.00851925 -0.293679 -0.0375998 -0.232119 -0.384428 -0.310001 0.0933834 0.184192 0.188149 0.391208 -0.0871158 -0.0483628 2 2 -4.35702 0.549867 11 11 5 -0.0815491 0.123448 0.442054 -0.0425604 -0.0956042 -0.325303 -0.124621 -0.344956 0.0649831 -0.213502 -0.0550162 -0.120663 0.146464 0.362276 0.341432 -0.11453 -0.160374 -0.185989 -0.0691616 -0.458085 -0.313678 -0.520471 -0.282256 0.469772 0.584954 0.436479 0.286615 0.11927 0.409139 0.289966 0.327397 -0.190289 -0.40603 -0.319083 -0.113997 -0.107877 0.287388 0.340193 0.381729 0.0985609 -0.0716113 0.367072 0.181582 -0.221859 -0.312198 -0.305045 -0.32816 -0.159866 0.199577 0.151389 0.377163 0.676591 0.551627 0.717962 0.48474 0.0499509 -0.261715 -0.437323 -0.572843 -0.335993 -0.375154 -0.241462 0.524382 0.657446 0.893848 1.00037 -0.0318986 -0.326404 -0.171999 0.023741 0.307792 -0.227521 -0.0704368 -0.16499 0.0177125 0.356601 0.644707 0.461235 -0.285893 -0.11129 0.0135897 -0.173463 -0.208978 -0.346029 -0.403703 0.0102371 -0.049645 0.345468 -0.0541161 -0.0505932 -0.260126 0.0659231 -0.277606 -0.538467 -0.436593 -0.387852 -0.615947 -0.190831 0.170214 -0.202916 -0.0816262 0.176036 -0.00533882 0.148098 -0.0858447 0.103504 -0.234659 -0.0990683 -0.0277076 0.119848 0.199436 0.315577 0.231318 -0.472603 -0.233152 -0.414783 -0.117156 -0.121962 -0.217247 0.181868 -0.271464 3 11 11 3 2 0 -5.47972 1.4683 11 11 5 0.0656263 0.262306 0.412748 0.25413 0.0751581 -0.253254 -0.283777 -0.166785 -0.0242549 0.186266 0.324463 -0.0461255 0.0929938 0.269435 0.345606 0.286728 -0.0277706 0.0129991 0.163299 0.445614 0.565844 0.912304 -0.208651 -0.233302 -0.178373 0.241292 0.286836 0.0956447 -0.0969626 0.0899842 0.47571 0.725269 1.09938 -0.358448 -0.313 -0.25884 0.0484472 0.0705049 0.0144675 -0.134771 -0.0146722 0.249469 0.574534 0.950147 -0.293981 -0.355575 -0.272608 -0.328315 -0.216923 -0.0127034 -0.27052 -0.311619 -0.190899 0.113652 0.464904 -0.209969 -0.162919 -0.208764 -0.144193 -0.194166 -0.315039 -0.3846 -0.52196 -0.6573 -0.558178 -0.292959 0.051419 -0.0350798 -0.0784078 -0.130845 -0.041738 -0.170403 -0.117032 -0.544945 -0.785431 -0.759982 -0.732382 0.0318118 0.12845 0.0337854 0.0500276 -0.045851 -0.044764 0.0854768 0.0905737 -0.124902 -0.398162 -0.388512 0.0861016 0.0310197 0.0585582 0.164351 0.0234271 0.0249245 -0.0681176 0.0400596 0.151751 0.255111 0.188929 0.196528 0.0326675 -0.0710436 -0.167713 -0.0573696 0.0547512 -0.0610834 0.00489019 -0.0351011 0.0227627 0.203595 0.388167 0.320914 0.113398 -0.0650317 -0.108667 -0.123341 -0.0758184 0.121584 0.213645 0.195662 0.193705 2 1 -4.09673 0.103438 11 11 5 0.359641 0.0833535 -0.114585 -0.335051 -0.314205 -0.195617 0.0353836 -0.317384 -0.48023 -0.829796 -1.14475 0.688908 0.529224 0.227167 -0.230583 -0.324651 -0.0627981 -0.100671 -0.0214525 -0.228948 -0.457506 -0.866165 0.567514 0.569195 0.436291 0.198791 -0.133157 -0.0285696 0.16747 0.0559308 0.158302 -0.303174 -0.678241 0.169575 0.41453 0.301909 0.466815 0.289398 -0.0325525 0.0421591 0.202338 0.33493 0.341023 -0.211598 0.0684054 -0.0745417 0.17298 0.111975 0.139687 0.15261 0.00518121 0.152818 0.577452 0.744415 0.591193 0.00513029 0.0846536 0.0111661 -0.156354 -0.3354 -0.297536 -0.366843 -0.266054 0.134379 0.287619 0.506609 -0.0398815 -0.157733 -0.0724452 0.0129053 0.000246612 -0.145422 -0.323475 -0.480323 -0.465309 -0.00430476 -0.117042 0.103583 0.0798007 0.0156414 0.11645 -0.0632043 -0.131267 -0.0961498 0.0788424 -0.225497 -0.0486865 -0.281132 0.341311 0.311281 0.0908596 0.160284 0.39337 0.0339869 -0.211008 -0.322504 -0.361382 -0.219143 -0.561571 0.269372 0.397606 0.166914 0.197587 0.0583986 0.294015 0.148871 -0.141709 -0.346811 -0.123479 0.0232116 0.00212983 -0.171872 -0.172898 -0.0459692 0.120091 -0.0717317 -0.057039 0.0670253 0.0252131 0.0171886 0.455081 2 2 -6.08812 0.870996 11 11 5 -0.266911 0.168894 0.165323 0.225021 0.135605 -0.43302 -0.508379 -0.450893 -0.889746 -0.933205 -1.03231 0.189704 0.561503 0.428905 0.409721 0.177309 0.252623 0.104158 -0.0747869 -0.236139 -0.35196 -0.544778 -0.0504468 0.424162 -0.020625 0.485457 0.812519 0.747966 0.292747 0.312313 0.2827 0.446292 0.0767252 -0.124914 -0.00720746 0.0231769 0.495444 0.467477 0.733826 0.383947 0.464766 0.381283 0.572385 0.435385 -0.461105 -0.282978 -0.180948 -0.0372701 -0.00123299 0.286928 0.269876 0.152195 0.682549 0.512949 0.694433 -0.359524 -0.357171 -0.541099 -0.218292 -0.257747 -0.252918 -0.00681131 -0.010336 0.246402 0.200586 0.437611 -0.197982 -0.106241 -0.244782 -0.10728 -0.0536764 -0.208194 -0.0719814 -0.327428 -0.295983 -0.560587 -0.444198 -0.210819 -0.0399402 -0.253774 0.0638131 0.0592129 -0.0486346 0.26159 0.114054 -0.0842287 -0.723089 -0.595089 -0.118901 0.0101661 -0.0107665 0.0477626 -0.113759 -0.0239175 0.191893 0.261757 0.0811524 0.0784462 -0.274401 0.103655 -0.303704 -0.084298 -0.205421 -0.0577224 -0.0759136 -0.0145718 -0.11712 0.105996 0.0329505 0.183525 -0.346027 -0.368873 0.113116 -0.17365 0.099926 0.0018508 -0.0540793 -0.0683855 0.0461717 0.0740993 -0.19384 3 11 11 3 2 0 -6.70879 1.78806 11 11 5 -0.293368 -0.355442 -0.193609 -0.0458044 0.106579 0.358955 0.634935 0.780926 0.794603 0.616988 0.500935 -0.119102 -0.101283 -0.0216589 0.169779 0.294119 0.527698 0.742603 0.913049 0.975947 0.739767 0.411449 -0.203029 -0.0922856 -0.130301 -0.030408 0.114558 0.223544 0.489958 0.65939 0.605473 0.342673 0.12539 -0.353805 -0.403939 -0.350305 -0.37787 -0.274688 -0.0455372 0.187391 0.253753 0.164951 0.0207225 -0.0693223 -0.282028 -0.440357 -0.53211 -0.556996 -0.621177 -0.529418 -0.325235 -0.269496 -0.231587 -0.282939 -0.299405 -0.118972 -0.270269 -0.189366 -0.343132 -0.411666 -0.701936 -0.668886 -0.6094 -0.632775 -0.498287 -0.481435 -0.169614 -0.103143 -0.0969654 -0.064954 0.113373 0.00413971 0.217262 0.239362 0.0564459 -0.207854 -0.463434 -0.0295342 0.0335211 0.0544036 0.0934575 0.092669 0.0130385 0.165017 0.316455 0.268184 0.0594785 -0.13204 -0.00202117 0.0133746 -0.0309555 -0.0944196 -0.118323 -0.0150563 -0.147814 -0.063942 0.0141242 0.220592 0.10116 0.141644 0.0273921 0.0207032 -0.0571222 -0.0488964 -0.0174426 -0.0429578 0.0208566 0.0511573 -0.0949839 -0.178171 0.308278 0.153281 0.203629 0.0648734 0.160268 0.168465 0.0805272 -0.112179 -0.0712119 -0.0525881 -0.059032 2 1 -6.32317 0.568755 11 11 5 0.191534 0.0126448 0.0738845 -0.335754 -0.529278 -0.681367 -0.808491 -0.677796 -0.793684 -0.82368 -0.776345 0.159899 0.300403 0.290506 0.129991 -0.0469936 -0.275659 -0.364672 -0.316945 -0.314454 -0.401992 -0.596565 0.31368 0.358727 0.277007 0.427588 0.260484 0.161545 0.174319 -0.00318579 -0.0155281 -0.320221 -0.921802 0.211888 0.192963 0.344888 0.512819 0.807034 0.492699 0.357391 0.309768 0.0388255 -0.265372 -0.981197 -0.219315 -0.0206086 0.0213661 0.26281 0.101153 0.483197 0.549132 0.729926 0.963838 0.866619 0.630034 -0.227726 -0.218263 -0.2943 -0.224666 -0.0797774 -0.0297019 0.049376 -0.0579966 -0.144088 0.0475011 0.408184 -0.226185 -0.161491 -0.266201 -0.372541 -0.25533 -0.120844 -0.0783331 -0.0343309 -0.0978676 -0.252436 0.261313 0.121751 -0.166941 -0.129938 0.0423067 0.100412 0.00416233 -0.161967 -0.249651 0.0643601 0.0557783 0.299935 0.132056 -0.0179943 0.0561279 -0.0225681 0.196781 0.14427 0.143647 0.0423935 0.186535 0.371573 0.378878 -0.292783 -0.162689 0.0552681 0.0709512 0.00166764 0.00812002 -0.18716 -0.21957 0.372243 0.42995 0.36294 0.196917 -0.159196 -0.327116 -0.128074 -0.000766211 0.057979 0.301656 0.233816 -0.0148277 0.0491452 -0.382337 2 2 -7.44384 1.82645 11 11 5 0.335948 -0.340612 -0.0889486 0.139511 -0.103821 -0.26728 0.0690018 -0.227659 -0.00715317 0.284028 -0.0214158 0.314555 0.298506 0.456795 0.485467 0.16701 0.411996 0.388859 0.656561 0.754456 0.875738 0.522331 0.206381 0.316356 0.277873 0.219002 0.0656679 0.338641 0.463133 0.589362 0.832516 0.830648 0.549402 -0.318803 -0.0541163 0.110566 0.158542 0.118726 0.446998 0.697162 0.562381 0.784224 0.789223 0.694922 -0.056217 -0.123107 -0.0675239 -0.38566 -0.424466 -0.184926 0.134528 0.2993 0.490226 0.451002 0.80567 -0.404634 -0.128896 -0.265885 -0.491924 -0.55573 -0.852759 -0.851533 -0.772367 -0.423793 -0.261548 -0.162595 -0.47476 -0.281315 -0.082964 -0.166335 -0.29723 -0.206817 -0.274752 -0.253696 -0.299376 -0.476271 -0.43746 -0.14454 -0.0305648 0.0529647 0.168151 -0.00408759 -0.226024 -0.135915 0.186783 -0.0800227 0.0840541 -0.204269 -0.394228 -0.288591 -0.13097 -0.230671 -0.240083 -0.111072 -0.184737 -0.444601 -0.285592 -0.0987672 -0.123871 0.0162071 -0.297115 -0.287026 -0.180833 -0.0790757 -0.165472 -0.216112 -0.316601 -0.0341215 -0.0835859 -0.048165 -0.116086 -0.538452 -0.473938 -0.0707456 -0.021052 -0.186946 -0.186448 -0.12296 0.205301 -0.0493586 -0.179632 3 11 11 3 2 0 -7.17531 1.64261 11 11 5 -0.0476179 0.226427 0.526064 0.490153 0.412997 0.381353 0.27749 0.041305 0.230825 0.079675 -0.0784581 0.293307 0.660907 0.801775 0.5803 0.424961 0.523588 0.492771 0.268465 0.314023 -0.00258063 -0.297104 0.259017 0.594004 0.629306 0.396637 0.284109 0.545485 0.584556 0.242796 0.0357843 -0.0752605 -0.274957 -0.0041122 0.125346 0.157312 0.184587 0.166691 0.369321 0.0677291 -0.119319 -0.332765 -0.308026 -0.152368 -0.548102 -0.386552 -0.290231 -0.210092 -0.0688457 -0.300711 -0.749219 -0.646724 -0.624135 -0.378566 -0.154814 -0.709997 -0.710956 -0.873431 -0.94669 -1.1956 -1.08394 -0.653643 -0.466955 -0.519403 -0.262276 -0.0368585 -0.333941 -0.232699 -0.15551 -0.00836856 0.0510496 0.102857 -0.0280399 -0.211025 -0.138822 0.126199 0.288745 0.0681565 0.300361 0.289433 0.301346 0.314879 0.169006 0.160744 0.0134257 0.191149 0.220101 0.225467 -0.0123835 0.0869661 0.274596 0.143343 0.203957 0.151759 0.00986564 0.0530532 0.00163326 0.0747068 0.259397 -0.0311711 0.0960755 0.223664 -0.0688531 0.0673729 0.0333697 -0.0487374 -0.117205 -0.144588 0.034725 0.0767823 -0.0879951 -0.0954094 -0.0521283 -0.123952 -0.217225 -0.209202 -0.28116 -0.246668 -0.0305575 0.112649 -0.00993463 2 1 -7.98566 0.812817 11 11 5 -0.432367 -0.412266 -0.48873 -0.533323 -0.443167 -0.458463 -0.389503 -0.342863 -0.117367 -0.29614 0.0617819 -0.238158 -0.323674 -0.32391 -0.318468 -0.319257 -0.491319 -0.44719 -0.0911404 0.133176 0.161608 0.233813 0.0703063 -0.0394455 -0.15672 -0.206563 -0.442729 -0.749199 -0.528182 0.235482 0.336691 0.388668 0.459317 0.46091 0.527691 0.221087 -0.284889 -0.652147 -0.570278 0.341523 1.35425 0.774921 0.192727 0.278974 0.541383 0.715064 0.524768 0.304936 0.0667626 0.591632 1.68994 0.944017 0.0824492 0.0259654 -0.158148 -0.00507597 -0.200319 -0.397256 -0.488394 -0.0139742 0.85906 0.161804 -0.203999 -0.446609 -0.228936 -0.35654 -0.266665 -0.227961 0.0701202 0.678578 0.602056 0.25513 0.123465 -0.054356 -0.0807111 0.135659 -0.0632718 0.0633478 0.143989 0.0712657 -0.119348 -0.21779 -0.305688 0.0820454 0.043573 0.122102 0.00278732 0.151403 -0.187526 -0.0270342 0.0726126 -0.260077 -0.31747 -0.0354266 -0.243037 -0.114032 -0.222528 0.295453 0.110621 -0.0444839 0.202732 0.129417 -0.0756106 0.0948291 -0.0887327 -0.127615 0.000518653 0.0959017 -0.145894 0.193404 0.0660858 -0.12978 -0.00599093 -0.0290339 -0.142501 0.079238 0.391748 0.0752822 -0.457494 -0.226202 -0.281095 2 2 -10.9649 2.52559 11 11 5 -0.38283 -0.145804 0.409932 0.477906 0.20266 0.182927 0.0717245 -0.291539 -0.221901 -0.215187 -0.0181052 0.432879 0.95619 0.71324 0.409417 0.268785 0.405485 0.490657 0.0177151 0.18947 -0.317893 -0.433314 0.509495 0.598599 0.850228 0.310281 0.514088 0.902135 0.790301 0.0898248 -0.235632 -0.083129 -0.0240688 0.551317 0.488339 0.553337 0.501141 0.810898 1.31752 0.605124 -0.0917358 -0.0191653 -0.154794 0.103831 -0.124335 0.0116689 0.457623 1.00998 0.903387 0.374836 -0.0526171 -0.275137 -0.235758 -0.367484 -0.149494 -0.624798 -0.448989 -0.843971 -0.788622 -0.892988 -0.518002 -0.614349 -0.42897 -0.414301 -0.269871 -0.119889 -0.608923 -0.342135 -0.367977 -0.211854 -0.219159 -0.0994845 -0.511896 -0.440751 -0.615559 -0.130833 -0.17615 -0.0884396 -0.00482179 0.0519896 -0.109302 0.0435438 -0.164252 -0.347243 -0.233666 0.0685427 -0.297993 0.033301 -0.334447 -0.41109 0.155629 0.0823022 0.153419 -0.0971578 -0.321072 -0.157423 -0.0183267 -0.651774 0.0513101 -0.238666 -0.205854 0.0518558 -0.266274 0.140857 -0.0840517 -0.214808 -0.293446 -0.331871 0.103803 0.168376 -0.0210493 0.264512 0.0113406 -0.0277179 0.113005 -0.195508 -0.195419 -0.0845165 0.0145058 0.0321171 -0.0977615 3 131072 6 0 3 131072 3 0 3 196608 2 0 3 131072 0 0 3 0 0 0 3 131072 5 0 3 196608 4 0 3 12936896 3 0 3 11 11 3 2 0 -9.66034 1.52866 11 11 5 -0.693187 -0.344343 -0.160797 -0.0700653 -0.0478811 -0.112757 0.10384 0.427013 0.533204 0.684676 0.768995 -0.328094 -0.0558647 -0.0501835 -0.158137 -0.227771 -0.337691 -0.0576732 0.194667 0.469633 0.416733 0.209706 -0.0585011 0.0120967 -0.166835 -0.263339 -0.434377 -0.23127 -0.0343014 0.305017 0.257671 -0.0166049 -0.255157 0.000535611 -0.0145385 -0.177008 -0.293423 -0.261649 0.0588341 0.424951 0.328478 -0.155727 -0.29544 -0.554454 0.0568835 -0.0108445 -0.0955296 0.026011 0.142673 0.487071 0.48866 -0.610677 -0.665695 -0.298888 -0.00235782 -0.0769018 0.114248 0.239122 0.362246 0.472303 0.262371 -1.20681 -1.10897 -0.159359 0.524585 1.08859 -0.0620086 0.106478 0.26213 0.268126 0.0728813 -0.670471 -0.658313 0.0862626 0.743148 1.10862 1.05599 -0.0228469 0.0579982 0.192404 0.120608 -0.147571 -0.462412 -0.0789442 0.477038 0.512209 0.0167568 -0.0625574 -0.0880392 -0.0117064 -0.0435056 -0.0897675 -0.19135 -0.13026 0.0238987 -0.27124 -0.3763 -0.708804 -0.689577 -0.0933311 0.0317603 0.161976 0.190391 0.172486 0.338947 0.13902 -0.486081 -0.847005 -0.804839 -0.741046 -0.0824628 0.233644 0.398732 0.583268 0.65598 0.573441 0.190882 -0.246955 -0.276476 -0.0102096 0.211255 2 1 -7.24952 0.837036 11 11 5 0.142622 0.225476 0.480679 0.190385 -0.0400847 -0.141422 -0.250755 -0.413582 -0.350319 -0.668925 -0.625394 0.282527 0.364394 0.311891 -0.0960374 -0.0866618 -0.114999 -0.152515 -0.207829 -0.24579 -0.118724 0.179984 0.226105 0.302454 0.2415 0.053977 -0.0279976 -0.114025 -0.271761 -0.302946 0.215087 0.424312 0.704684 0.174148 0.360126 0.169647 -0.00702766 -0.150613 -0.557703 -0.451944 0.302281 0.433738 0.419948 0.304489 0.108535 0.0589645 0.138473 -0.183158 -0.646378 -0.820916 0.240106 0.559176 0.109733 -0.298398 -0.784782 -0.0128599 -0.0263647 -0.111562 -0.629521 -0.798859 -0.0298604 -0.128143 0.399383 -0.0262852 -0.917491 -1.29925 0.0466205 -0.062849 -0.257404 -0.621539 -0.450716 -0.486572 0.518392 0.365178 -0.618715 -0.55308 0.107903 -0.0281406 -0.0539791 -0.0396369 -0.165728 -0.0684391 0.091568 -0.0289708 -0.431588 0.112996 0.38778 0.502037 0.0799782 0.117181 -0.0202816 -0.205177 -0.197703 -0.0254677 -0.0978656 0.0610153 0.384437 0.621228 0.72327 0.273215 0.228828 0.174851 -0.0119839 0.113986 -0.00752967 0.0505505 0.445961 0.119509 0.578413 1.01831 0.243286 0.269677 0.0295908 -0.175731 -0.159817 0.0102451 -0.0475337 0.0238463 0.0438903 0.102513 0.956243 2 2 -11.4949 1.20293 11 11 5 -0.464937 -0.367389 -0.17875 -0.0121329 0.148316 -0.216545 -0.0596507 0.151842 -0.130749 0.251474 0.110535 -0.423879 -0.193843 0.207287 0.327187 0.239114 -0.195192 -0.19072 -0.082808 0.0283154 0.344488 0.424765 0.0683504 0.355459 0.193338 0.312866 -0.0960574 -0.381855 -0.44915 0.0834408 0.19826 0.00711201 -0.249315 0.0680892 0.237294 0.051944 -0.0892581 -0.311501 -0.35858 0.220352 0.447531 -0.04724 -0.46306 -0.538374 -0.024654 -0.130673 -0.368052 -0.229162 0.0343488 1.07632 0.811831 -0.150829 -0.65503 -0.737284 -0.511386 -0.208702 -0.0563036 -0.137099 0.289533 0.901421 0.920392 -0.803623 -1.22606 -0.577536 -0.0837916 0.437518 -0.266457 -0.0789352 0.0878817 0.406144 0.585932 -0.44748 -0.312502 0.214818 0.623832 0.816513 0.764024 -0.0863474 0.0930777 0.277524 0.277929 0.140046 -0.351954 0.213213 0.974563 1.14768 0.79901 0.719462 0.168411 -0.175356 -0.416215 -0.275439 -0.168389 0.0682263 0.523502 0.355932 0.412593 0.140073 0.512249 -0.131477 -0.334529 -0.454663 -0.717287 -0.410222 -0.117979 0.134106 0.0521291 -0.243088 -0.193168 0.288985 -0.122973 -0.248623 -0.607572 -0.552766 -0.0987809 0.0175966 -0.208199 -0.473132 -0.609342 -0.227619 -0.0325129 3 11 11 3 2 0 -11.486 1.91363 11 11 5 -0.00303613 -0.117113 -0.158713 -0.0901942 -0.0789131 -0.176647 -0.177761 -0.225319 -0.140132 0.0735543 0.214931 -0.0661522 -0.112052 -0.166893 -0.0453466 -0.0208976 0.0158667 0.0689375 0.100667 0.234557 0.534906 0.68708 -0.0213698 -0.070578 -0.116019 -0.0420621 0.157127 0.175261 0.22552 0.318345 0.359426 0.510234 0.730316 -0.0681198 -0.252813 -0.146405 -0.134705 0.0454426 0.0917283 0.208788 0.241552 0.210626 0.237816 0.405609 -0.192221 -0.352722 -0.238653 -0.0550985 0.177189 0.363738 0.530076 0.117371 -0.274673 -0.284154 -0.258904 -0.292551 -0.261475 -0.0421871 0.366734 0.653888 0.523488 -0.268622 -0.729626 -0.774773 -0.649335 -0.769349 -0.0431211 0.129704 0.348095 0.308936 -0.356874 -0.817489 -0.478837 -0.133157 -0.0448222 -0.306724 -0.645241 0.336858 0.294616 0.0510222 -0.487496 -0.655902 -0.291926 0.429953 0.999923 1.02646 0.662621 0.132589 0.337083 0.100584 -0.263039 -0.3802 -0.146018 0.409204 0.830352 1.03132 0.854341 0.349641 -0.294674 0.233528 -0.045768 -0.337591 -0.280089 -0.0434978 0.283868 0.326611 0.0703098 -0.0746847 -0.446805 -0.786833 0.16475 -0.0888154 -0.19278 -0.270821 -0.261872 -0.294488 -0.163599 -0.0120118 0.00653703 -0.586797 -1.19214 2 1 -9.28712 1.1247 11 11 5 -0.0385973 -0.00280252 0.312453 0.457468 0.240152 0.128675 0.0157401 -0.380665 -0.558287 -0.61023 -0.477066 0.108869 0.0723709 0.142205 0.0520056 -0.135299 -0.188894 -0.224497 -0.405699 -0.498133 -0.455058 -0.35547 -0.0336257 -0.0564012 0.0230886 -0.0779009 -0.117469 -0.116608 -0.201839 -0.449354 -0.531974 -0.297418 -0.339918 -0.0855042 -0.0743998 0.116522 0.00837252 -0.000585767 -0.052297 -0.233801 -0.152605 0.168092 0.347893 0.384136 -0.0594366 0.170104 -0.0402361 -0.129599 -0.230216 -0.375577 0.156241 1.0057 0.8351 0.798584 1.08313 0.189578 0.140729 -0.301299 -0.277456 -0.0431812 0.786903 0.926524 0.0585352 -0.126304 0.325806 1.0157 0.0373166 -0.364564 -0.360324 0.0861327 0.46465 -0.626423 -0.850115 -0.374358 -0.478219 -0.616464 -0.584084 -0.22402 -0.416418 -0.233198 -0.232983 -0.159545 0.293061 -0.117179 -0.401395 -0.369196 -0.277778 -0.666984 -0.249613 -0.187031 -0.0512716 0.39636 0.395443 -0.143085 -0.570514 -0.321194 0.112732 0.0270254 -0.202749 -0.131371 -0.00326211 0.0456474 0.236222 0.263624 0.152494 0.232708 0.313742 0.405794 0.682821 0.45696 0.100508 -0.0810978 0.168223 0.269628 0.106961 0.0549917 0.134854 0.0848179 0.436913 0.920523 1.0793 2 2 -10.4428 1.30424 11 11 5 -0.195221 -0.273991 -0.249927 -0.478209 -0.294708 -0.474687 -0.303201 -0.484282 -0.642232 -0.154461 -0.18513 -0.00272438 -0.329133 -0.358115 -0.203219 -0.236842 -0.105549 -0.193593 -0.030919 -0.148327 0.0139841 -0.0340524 0.184755 -0.113771 -0.0895388 0.08885 0.130404 0.197467 0.132481 0.27461 0.163309 0.162028 0.178276 0.400098 -0.109259 -0.1269 -0.380991 -0.471571 -0.37694 0.0737485 0.35425 0.407525 0.434639 0.450135 -0.00776237 -0.136573 -0.288149 -0.383656 -0.0162297 0.355801 0.393439 0.291396 0.140416 0.184261 0.287863 0.15172 -0.153231 -0.276986 0.107181 0.503896 0.368846 -0.291853 -0.422001 -0.351004 -0.104893 -0.0984092 -0.127666 0.0631683 0.499226 0.552831 -0.103815 -1.10273 -1.05267 -0.843939 -0.695668 -0.635178 -0.421744 0.39383 0.514559 0.485506 -0.28893 -0.949169 -0.909605 -0.0611324 0.174842 0.276889 0.199333 0.394478 0.389783 0.381697 0.0575801 -0.101629 -0.239841 0.19286 0.566559 0.820537 0.802108 0.818492 0.704341 -0.04208 -0.177228 -0.154881 0.176136 0.339158 0.747769 0.54623 0.384899 0.116591 0.401548 0.644555 -0.449933 -0.310717 0.0321211 -0.209795 0.0418753 -0.0476641 -0.107175 0.229394 0.169404 0.0954399 -0.0336865 3 11 11 3 2 0 -11.4471 2.19807 11 11 5 0.00842009 -0.0860875 -0.177577 -0.213817 -0.300128 -0.298871 -0.252838 -0.282385 -0.342464 -0.398475 -0.303359 -0.00817514 -0.0287892 -0.0499373 -0.145537 -0.105909 -0.0328889 0.0490575 0.0312733 0.0297792 0.0500958 0.21321 0.0292947 0.0220304 0.0346411 0.0546946 0.0395615 0.203364 0.371731 0.45822 0.476761 0.579371 0.653398 -0.0479261 0.0303879 0.0773203 0.122905 0.0829358 0.206289 0.374739 0.458542 0.490601 0.587855 0.632763 -0.0776055 0.0318414 0.0107625 0.17644 0.167458 0.141523 0.205356 0.371758 0.437904 0.493843 0.466487 0.0388677 0.0656173 0.151063 0.215566 0.0289702 -0.178329 -0.120184 -0.0597731 -0.00652416 -0.00179941 0.107475 0.122039 0.182654 0.121744 -0.287309 -0.658526 -0.868599 -0.834159 -0.832772 -0.905065 -0.820514 -0.742739 -0.111751 -0.0721901 -0.133617 -0.180808 0.0404999 0.0977138 -0.0506011 -0.408374 -0.656887 -0.816014 -0.903022 -0.252949 -0.0973779 0.194002 0.513352 0.78334 0.822273 0.669524 0.278037 0.00934745 -0.0259721 -0.0422293 -0.283362 0.0329766 0.323475 0.589642 0.718408 0.534822 0.137516 -0.0293215 -0.045996 0.101714 0.253878 -0.170044 -0.0851948 0.121819 0.240713 0.0982298 -0.167828 -0.508027 -0.689932 -0.71293 -0.444387 -0.109985 2 1 -9.30949 1.46394 11 11 5 0.164492 0.0977201 0.00145564 0.106843 0.170842 0.0347172 -0.0477442 -0.182559 -0.0863978 -0.133572 -0.138926 0.241345 0.184312 0.127034 -0.0224765 -0.276994 -0.305023 -0.320094 -0.146306 -0.0275703 -0.337696 -0.502857 0.0106285 -0.0198306 -0.111712 -0.126398 -0.436499 -0.402045 -0.168287 -0.152311 -0.235422 -0.414362 -0.69766 0.00279953 -0.0458484 -0.143584 -0.0709212 -0.214876 -0.0662515 -0.219521 -0.35995 -0.233746 -0.413686 -0.461484 0.0939234 0.0524172 0.165435 0.0957309 -0.0614622 -0.0269876 -0.140876 0.0492521 0.0852187 0.177488 0.077666 -0.198721 -0.0931247 0.0957291 0.223213 0.494409 0.558696 0.800573 1.01017 1.18721 1.24635 0.948308 -0.0983422 0.0755731 0.25693 0.416031 -0.148039 -0.51244 -0.323599 0.452588 0.675923 1.05883 0.99211 -0.196648 -0.172584 -0.269338 -0.393505 -0.354221 -0.415613 -0.315931 -0.298554 -0.410317 -0.425616 0.009661 0.0415085 -0.243356 -0.221777 -0.0841768 -0.013661 0.0810075 -0.051954 -0.179807 -0.16391 -0.428072 -0.315654 -0.0536021 0.0656777 0.147185 -0.227452 -0.364922 -0.0861566 -0.0450329 0.0563542 -0.132623 -0.15443 -0.0546513 0.167308 -0.0293448 -0.104474 0.157979 0.413805 0.544163 0.414537 0.463091 0.295294 0.125302 -0.0812788 2 2 -9.12211 1.29937 11 11 5 -0.33661 -0.195152 -0.117791 -0.09914 -0.554174 -0.560336 -0.444769 -0.315188 -0.432979 -0.249084 -0.460883 -0.215337 -0.253797 -0.363291 -0.482969 -0.255627 -0.318991 -0.238725 -0.0646872 -0.30592 -0.144286 -0.588339 -0.0424549 -0.0313644 -0.0813581 0.115759 -0.101495 0.0426152 0.0660089 0.247887 0.0545243 0.232929 0.15824 0.190013 0.129876 0.12882 0.0853851 0.0587819 -0.149326 0.0614364 0.249934 0.107899 0.198961 0.217308 -0.0616405 -0.136768 0.110362 0.352718 0.387281 0.450426 0.527305 0.519216 0.459994 0.574309 0.474524 0.0927796 0.0384365 0.246399 0.228117 0.209182 0.371315 0.427901 0.432223 0.438023 0.623361 0.695914 -0.0409922 0.133926 0.0744941 -0.326833 -0.453448 -0.422081 -0.176115 -0.0692603 -0.0523692 -0.190594 -0.2426 -0.108411 -0.181394 -0.612757 -0.906494 -0.585286 -0.453658 -0.214848 -0.587304 -0.674197 -0.732074 -1.03106 -0.105068 -0.50136 -0.366781 -0.006641 0.255058 0.27612 0.392515 0.209571 0.0509962 -0.103795 -0.491036 -0.0815573 -0.13535 0.333229 0.632235 0.601127 0.611563 0.532529 0.574944 0.371248 0.342445 0.0105462 -0.0162438 0.0807902 0.39067 0.438277 0.382889 0.225502 0.185034 0.187667 0.143093 0.0801186 -0.0506612 3 11 11 3 2 0 -12.1447 2.62951 11 11 5 -0.196633 -0.285346 -0.159484 -0.234267 -0.277742 -0.404541 -0.445981 -0.346977 -0.34976 -0.231583 -0.0873085 -0.147706 -0.0595985 0.0512894 0.0308039 0.00207518 -0.103892 -0.0311858 0.0314194 -0.0332834 -0.0632093 0.0349673 0.00812576 0.154323 0.318301 0.359526 0.423482 0.38757 0.459268 0.480341 0.36046 0.236751 0.191905 0.090464 0.157146 0.289652 0.333023 0.394041 0.379511 0.510513 0.491693 0.404286 0.342561 0.299559 -0.0385145 -0.00522964 0.0703819 0.202525 0.364029 0.398475 0.436711 0.381893 0.172775 0.185315 0.287911 -0.110694 -0.147209 -0.116741 -0.0352085 0.13263 0.211432 0.172709 0.12562 -0.0890152 -0.036315 0.204964 -0.135842 -0.352692 -0.483598 -0.693034 -0.876861 -0.987659 -0.998115 -0.940143 -0.779063 -0.41204 0.0653393 -0.0235803 0.011453 0.0446927 -0.190846 -0.439902 -0.61309 -0.762397 -0.775626 -0.721227 -0.321061 0.265318 0.21936 0.349634 0.455863 0.363629 0.270428 0.184856 0.0384796 -0.019008 0.0343649 0.224636 0.655007 0.307932 0.331778 0.215548 0.0228524 -0.00214782 0.0372061 0.0723147 0.0551917 0.199235 0.459978 0.776392 0.104311 -0.0724649 -0.300552 -0.679555 -0.674314 -0.487393 -0.411952 -0.304143 0.00225374 0.352343 0.804911 2 1 -9.30886 1.76081 11 11 5 0.0541507 0.223068 0.179496 -0.103356 -0.215617 -0.052975 0.0347622 0.0611368 0.0474457 0.0675301 0.0348332 -0.0148729 -0.172439 -0.238626 -0.254947 -0.0766277 -0.13285 -0.337131 -0.317603 -0.389225 -0.211055 -0.201637 -0.204655 -0.269644 -0.227251 -0.0360247 -0.142927 -0.155413 -0.237186 -0.34169 -0.444678 -0.217969 -0.254005 -0.0153978 -0.162448 -0.0262387 -0.189058 -0.176104 -0.0290819 -0.0432665 -0.200819 -0.163198 -0.174727 -0.275768 0.0847399 0.21313 0.116817 0.154489 -0.127393 -0.172512 -0.00249632 0.0343205 0.0665611 -0.0376595 -0.192961 0.248093 0.111284 0.267079 0.703395 1.15824 1.38899 1.19333 0.731535 0.281848 -0.0554284 -0.152242 -0.0826972 -0.134972 -0.0599519 0.254117 0.478799 0.579454 0.725517 0.939389 0.663474 0.103086 -0.096693 -0.208565 -0.164741 -0.0906197 -0.339345 -0.608562 -0.624809 -0.514748 -0.454317 -0.296384 0.0159753 -0.251344 -0.0973065 -0.108082 -0.229559 -0.19373 -0.168244 0.0105392 -0.044138 0.0330934 -0.00944116 -0.182032 -0.359214 -0.0627703 -0.125789 -0.0444061 0.00307759 -0.129791 -0.111749 -0.0495959 -0.119814 -0.0743131 -0.125726 -0.281981 0.198701 0.553594 0.365946 0.816869 0.501686 0.325323 0.236718 -0.00272131 -0.0293011 0.000936055 -0.337924 2 2 -11.0518 1.95513 11 11 5 -0.199722 -0.214099 -0.209775 -0.208308 -0.206171 -0.33794 -0.253579 -0.271596 -0.251112 -0.35781 -0.258688 -0.322924 -0.346949 -0.129047 -0.114459 -0.169525 -0.148259 -0.375401 -0.382014 -0.325313 -0.387908 -0.280739 -0.0340035 0.12081 0.129276 0.11909 0.259657 0.330302 0.217301 0.215612 0.162795 -0.193996 -0.0437988 0.234445 0.232805 0.0313322 -0.0678544 0.0539499 -0.151186 -0.0298846 0.177131 0.347962 0.190289 0.0423026 0.329769 0.296274 0.308349 0.379106 0.553371 0.532797 0.559343 0.463978 0.448242 0.284305 0.269615 0.218967 0.26801 0.350736 0.471489 0.525301 0.437075 0.547516 0.615117 0.337121 0.133534 0.0867628 -0.275397 -0.503326 -0.207546 -0.157776 -0.0191276 -0.156917 -0.218202 -0.138396 -0.193116 -0.216596 -0.312368 -0.368235 -0.331224 -0.156308 -0.446288 -0.682434 -0.722368 -0.829799 -1.07713 -1.09751 -0.871905 -0.387718 -0.0637206 0.27624 0.206653 0.306642 0.312854 0.228809 -0.0671224 -0.427514 -0.46727 -0.569699 -0.027825 0.490028 0.444026 0.431406 0.372997 0.422839 0.573739 0.471921 0.101832 -0.154545 -0.261464 0.048877 0.543041 0.420315 0.292733 0.204769 0.206927 0.165812 0.161492 -0.13166 -0.0919409 -0.217083 0.155803 3 11 11 3 2 0 -10.2593 2.60278 11 11 5 -0.285019 -0.150137 -0.293002 -0.289345 -0.358785 -0.452922 -0.408941 -0.343769 -0.153072 -0.130317 -0.0536144 0.25016 0.337021 0.292713 0.288111 0.209536 0.0696089 0.0999268 0.00752016 0.0510336 0.0361928 0.131928 0.406317 0.460043 0.519547 0.514376 0.469772 0.349158 0.373828 0.149387 0.130592 0.14047 0.339606 0.230605 0.411289 0.476936 0.482242 0.408086 0.236004 0.346722 0.201766 0.168768 0.148979 0.281038 -0.155676 -0.0153541 0.145315 0.297832 0.269497 0.155833 0.243646 0.20593 0.202042 0.129639 0.0381504 -0.433943 -0.525582 -0.569368 -0.662916 -0.693068 -0.328774 -0.0118819 0.0682096 0.110395 -0.00831141 -0.382407 -0.22285 -0.491286 -0.80395 -1.28295 -1.32477 -0.896605 -0.0935585 0.00524773 0.267262 -0.0765602 -0.607848 0.255486 0.0371087 -0.205566 -0.433907 -0.326046 -0.0314131 0.343616 0.323438 0.417897 -0.0647737 -0.363566 0.386623 0.380399 0.320258 0.257886 0.285741 0.485414 0.578895 0.413775 0.227336 0.0277467 -0.192609 -0.163177 -0.274166 -0.378691 -0.284156 -0.00296523 0.288188 0.373223 0.243389 0.139614 0.118946 -0.0161944 -0.57126 -0.503101 -0.506606 -0.530557 -0.297869 0.0630879 0.241444 0.236576 0.13636 0.0683807 -0.15591 2 1 -8.92877 1.92495 11 11 5 -0.249337 -0.187403 -0.149496 -0.341211 -0.351411 -0.315813 -0.179382 -0.0272769 -0.00365489 -0.0164043 -0.0473525 -0.233126 -0.372756 -0.354819 -0.239893 -0.328201 -0.361729 -0.279574 -0.285478 -0.0678431 -0.112594 -0.113734 -0.247608 -0.276955 -0.164635 -0.0513931 -0.23976 -0.235588 -0.258111 -0.363003 -0.157108 -0.185751 0.0352449 0.254209 0.207559 0.0949344 -0.0286132 -0.143208 -0.122878 -0.194543 -0.147699 -0.124053 -0.154575 -0.0514361 0.773183 0.71095 0.840749 0.671082 0.474346 0.0367048 -0.161529 -0.146138 -0.205286 -0.136315 0.163451 0.608394 0.845802 1.34321 1.41959 1.17192 0.545549 -0.0806855 -0.268062 -0.136234 0.118482 0.175168 0.223606 0.265624 0.260677 0.02202 -0.396187 0.0446773 -0.173388 -0.256968 0.077294 0.087979 -0.0224239 -0.616199 -0.544292 -0.554342 -0.363171 -0.124671 -0.0333389 -0.282403 -0.345767 -0.122171 0.0472395 -0.0962848 -0.246638 -0.159396 -0.116733 -0.0619557 0.000923289 -0.0755335 -0.345191 -0.15593 -0.137015 -0.208628 0.156815 0.760491 0.105302 -0.0541893 0.0211755 -0.0509134 -0.252383 -0.297796 0.128653 0.191934 0.0824182 0.290952 0.854403 0.386677 0.334814 0.0630678 -0.00864552 -0.154695 -0.261146 0.0897065 0.330386 0.0684061 0.0322894 2 2 -11.8081 1.6538 11 11 5 -0.295195 -0.170281 -0.376731 -0.191164 -0.509053 -0.673556 -0.672018 -0.582508 -0.317073 -0.581478 -0.294272 0.0166168 0.187583 0.17351 0.167043 -0.0782317 -0.244334 -0.350156 -0.368943 -0.32775 -0.432951 -0.230632 0.257564 0.0477833 0.348553 0.178998 0.260185 0.172943 0.312003 -0.0593072 0.120583 -0.139696 0.160348 0.225998 0.261475 0.150142 0.294566 0.235897 0.136857 0.279195 0.222621 0.132677 0.043199 0.235953 0.334415 0.523845 0.862962 0.872104 0.862477 0.644081 0.533217 0.346019 0.0665918 -0.0254319 0.0731969 -0.313027 -0.0275888 -0.077677 0.0846333 0.0087429 -0.0957019 0.217087 -0.0906902 0.055404 0.157069 0.172289 -0.295553 -0.311615 -0.536257 -1.13551 -1.41509 -1.4663 -0.375337 -0.0538343 0.277114 0.29714 0.0970736 0.211642 -0.187431 -0.460818 -0.890585 -0.882223 -1.08874 -0.161975 0.173652 0.430887 0.178475 -0.115403 0.693282 0.632881 0.540358 0.247018 -0.0262506 -0.102945 0.196199 0.1906 0.344752 0.111232 -0.104318 0.582072 0.437214 0.201486 0.0870968 0.180026 0.127789 -0.0117699 0.133009 0.178993 0.251956 0.0734777 0.149342 0.117581 0.0842166 -0.231636 -0.31509 -0.227718 -0.0339911 0.0644466 0.00553083 0.39133 -0.168463 3 262144 4 0 3 327680 3 0 3 393216 2 0 3 131072 0 0 3 0 0 0 3 11 11 3 2 0 -12.996 4.56566 11 11 5 -0.0244302 0.0514301 0.202417 0.343953 0.292862 0.232871 0.382361 0.360133 0.254269 -0.003779 -0.0907675 -0.298481 -0.200215 0.0047247 0.231342 0.248891 0.0623575 -0.0796262 -0.0287295 0.0308594 0.0205611 0.0773887 -0.293474 -0.177138 -0.0177255 0.180927 0.370205 0.0338935 -0.407429 -0.400981 -0.0822377 -0.0230905 -0.219535 -0.358244 -0.148282 0.189971 0.301396 0.651808 0.0966763 -0.680374 -0.5405 -0.10075 -0.165702 -0.382553 -0.308982 -0.00413008 0.254315 0.604682 1.04632 0.440318 -0.646685 -0.646103 -0.403538 -0.173779 -0.232899 -0.138059 0.00944639 0.202483 0.603171 1.00945 0.697285 -0.507806 -0.878017 -0.522963 -0.282106 -0.207685 -0.247315 -0.219241 -0.0198492 0.300963 0.725267 0.78123 -0.161771 -1.09323 -0.796183 -0.19397 -0.20103 -0.40874 -0.410585 -0.272159 0.107967 0.526194 0.684851 0.362073 -0.766497 -0.673289 -0.264788 -0.248794 -0.356713 -0.361588 -0.365509 0.08026 0.454335 0.613199 0.452807 -0.27119 -0.55328 -0.120983 -0.126726 -0.135149 -0.13484 -0.0504437 0.223409 0.324873 0.417146 0.389552 0.0555439 -0.469608 -0.196384 0.30375 0.058881 0.168506 0.124727 0.309284 0.372935 0.376842 0.379195 0.20572 -0.0909368 0.125377 0.473929 2 1 -11.145 1.97144 11 11 5 0.411485 -0.0328213 -0.300955 -0.309529 -0.403408 -0.567244 -0.348785 -0.24928 -0.203294 -0.0864346 0.0218634 0.510253 0.279232 -0.00392719 -0.248912 -0.349733 -0.2502 -0.0517455 -0.0432738 -0.0871214 0.151028 0.244984 0.462758 0.138954 -0.162414 -0.20694 -0.421648 -0.0191476 0.166499 -0.034507 -0.0666926 0.0287397 0.158274 0.452282 0.0299586 -0.186607 -0.308391 -0.272452 0.43749 0.0228605 -0.327463 -0.177337 -0.331101 0.0456419 0.0431189 -0.107368 -0.167399 -0.12779 -0.484332 0.540593 0.56382 0.111793 0.0793081 0.0301355 0.204056 0.0756773 -0.222066 -0.323173 -0.1454 -0.691629 0.469226 1.17389 0.272784 -0.0584612 0.244876 0.553663 0.0813355 -0.222915 -0.0448285 0.0380253 -0.543413 -0.10721 1.70631 0.668275 -0.359954 -0.0990027 -0.00691855 0.0404718 -0.172015 0.0517972 -0.107229 -0.521552 -0.537901 1.28472 1.14865 -0.112501 0.0966612 0.277292 0.254942 -0.0084428 -0.247897 -0.316297 -0.34601 -0.455524 0.543188 1.19632 0.411642 0.298204 0.21888 0.241443 0.0885001 -0.202096 -0.369511 -0.528865 -0.485799 -0.121157 0.716715 0.166138 0.0298448 -0.27297 0.271288 0.0987965 -0.268352 -0.615374 -0.670568 -0.631281 -0.408761 0.191247 -0.123223 -0.260236 -0.499142 2 2 -15.8513 2.9785 11 11 5 0.145764 0.145207 0.0529312 0.203595 0.126526 0.380987 0.824114 0.847331 0.250861 0.0988674 -0.0612648 -0.124871 -0.335057 -0.331767 0.122738 0.159017 0.353605 0.573205 0.486374 0.0730155 0.0138676 0.0433451 0.111505 -0.483635 -0.542463 -0.335498 0.0688365 0.748869 0.284895 0.200122 0.287286 0.281548 0.235962 -0.178893 -0.491575 -0.703697 -0.440866 0.147528 0.564814 0.10088 -0.0129502 0.196962 0.178226 -0.00905316 -0.330322 -0.455037 -0.421023 -0.0486343 0.515301 0.582278 -0.0929792 -0.171604 -0.0806106 0.0969823 0.00828775 0.284851 0.153622 -0.068698 0.267577 0.954998 0.988849 -0.160529 -0.354296 -0.0253408 0.262979 -0.0218982 0.249251 0.173439 0.130997 0.12402 0.766188 0.970037 0.237706 -0.627399 -0.410891 0.187202 0.19 -0.294693 -0.280851 -0.21215 -0.157731 0.542422 0.852102 0.452692 -0.698669 -0.644341 -0.0165112 -0.0593114 -0.57302 -0.88101 -0.907813 -0.288572 0.230101 0.738763 0.775268 -0.104027 -0.870388 -0.573092 -0.495271 -0.491853 -0.713413 -0.530398 -0.235104 -0.0521617 0.464658 0.605074 0.259233 -0.971044 -0.727494 -0.470199 -0.403957 -0.362183 -0.602484 -0.199231 -0.210492 0.500002 0.737501 0.59844 -0.177715 -0.94601 -0.737564 3 11 11 3 2 0 -14.965 5.93283 11 11 5 -0.246614 0.229565 0.642043 0.638991 -0.056493 -0.598015 -0.512417 -0.336147 -0.220549 -0.281956 -0.125175 0.0404377 0.354677 0.861153 0.900952 0.131829 -0.549496 -0.67079 -0.353164 -0.210095 -0.0962989 -0.115004 -0.161106 0.18009 0.680339 0.932964 0.0441925 -0.745908 -0.986135 -0.518743 -0.245337 -0.247765 -0.139304 -0.501662 -0.0781474 0.391357 0.724061 0.459087 -0.574297 -0.9459 -0.535811 -0.0715968 -0.148411 -0.236116 -0.595068 -0.345388 0.0527444 0.576055 0.759239 -0.0774025 -0.773032 -0.784902 -0.221359 -0.0398091 -0.28867 -0.409881 -0.279451 0.089613 0.406926 0.645591 0.400319 -0.275266 -0.606466 -0.195479 0.0181398 -0.0456773 -0.130914 -0.0381542 0.229198 0.33267 0.449399 0.407009 -0.115624 -0.38633 -0.318373 -0.0405308 0.143586 -0.0817206 -0.0171589 0.199073 0.1924 0.188413 0.319391 0.174538 -0.286759 -0.209388 0.00575099 0.197983 0.127093 0.0297739 0.0772454 0.118954 0.134084 0.36869 0.34909 -0.141239 -0.202831 -0.0263995 0.0812889 0.241789 -0.0502675 -0.0443438 0.0692199 0.244242 0.387296 0.416599 0.131428 -0.174789 -0.00717743 0.119593 -0.0469332 -0.243716 -0.187859 0.134396 0.490987 0.689805 0.667938 0.402646 -0.0300835 -0.0717051 0.0166406 2 1 -10.0246 2.21359 11 11 5 -0.0209439 -0.322273 -0.571547 0.105597 0.314033 -0.062425 -0.0447341 -0.430293 -0.12398 0.156715 0.229069 0.213038 -0.190584 -0.156973 -0.108148 0.399549 0.501567 0.530719 -0.0409872 0.0801597 0.39949 0.315819 -0.137901 -0.12645 -0.282607 0.138248 0.736852 0.8883 0.489804 -0.0911909 0.405867 0.436663 0.261593 -0.0110641 -0.0200831 -0.357403 -0.47979 0.559486 1.0891 0.602017 -0.34307 0.423969 0.180078 0.178021 -0.0986726 -0.335933 -0.281132 -0.557117 -0.127621 1.0763 0.867829 -0.218075 0.0173838 0.151407 0.350988 0.0803264 -0.389759 -0.152134 -0.27708 -0.660698 0.615986 1.05814 0.324077 -0.246367 0.1859 -0.0152538 0.0232603 -0.229925 -0.280129 -0.235364 -0.467874 -0.0868332 0.67311 0.480758 -0.0376632 -0.245388 -0.206062 0.150687 -0.0187872 -0.350246 -0.414457 -0.273317 -0.24849 0.383626 0.361879 -0.307257 -0.108791 -0.194082 0.0915831 -0.11607 -0.472402 -0.597877 -0.358125 -0.263947 0.26804 0.342695 -0.227533 -0.150782 0.0925481 0.0667936 -0.0924696 -0.377743 -0.582344 -0.517385 -0.353746 -0.0704489 0.213308 -0.101287 -0.300046 0.400471 0.0534989 -0.0454978 -0.272348 -0.61123 -0.563701 -0.412079 -0.402673 0.0324781 -0.0520499 -0.160624 0.0905356 2 2 -15.7543 2.41272 11 11 5 -0.989464 -0.506544 -0.138205 0.549136 0.424218 0.137288 -0.160881 -0.0316714 0.130982 0.017841 0.427198 -0.21034 -0.116779 0.248889 0.686549 0.502265 0.0319791 -0.0510745 0.0643424 -0.0402527 0.0468583 0.144157 0.143662 0.144338 0.582244 0.991834 0.628283 -0.127829 -0.356411 -0.089813 0.0198037 0.0378505 0.249554 -0.334677 0.0206431 0.491727 0.906832 0.961803 -0.196601 -0.485122 -0.38401 0.018081 0.0760828 0.0514703 -0.604905 -0.477711 -0.314198 0.369798 0.913849 0.0931777 -0.754692 -0.641242 -0.0989775 -0.0480564 0.0425962 -1.01848 -0.650937 -0.528808 0.100025 1.01337 0.911737 -0.515316 -0.808594 -0.625507 -0.243588 -0.173548 -0.687277 -0.401812 -0.109407 0.112305 1.02121 1.02989 0.117791 -0.705627 -0.605619 -0.326775 -0.112394 -0.44483 -0.173469 -0.0488481 0.0870064 0.391502 0.614788 0.333083 -0.526902 -0.884149 -0.496621 -0.381861 0.129267 0.0606771 0.214337 0.215408 0.176118 0.554498 0.562181 -0.0519536 -0.794778 -0.61831 -0.147884 0.356543 0.0447255 0.247837 0.0524785 -0.224758 0.143568 0.495929 0.297711 -0.528142 -0.0493292 -0.0643683 0.251463 0.128233 -0.334449 -0.55955 -0.446033 -0.0306843 0.647417 0.773398 0.0966139 0.20053 -0.0568999 3 11 11 3 2 0 -13.0464 4.70523 11 11 5 0.2183 0.667878 0.397331 -0.100796 -0.544187 -0.7828 -0.876608 -0.348622 -0.225101 -0.0943062 -0.349023 -0.0829454 0.409756 0.515826 0.203708 -0.332069 -0.567301 -0.47926 -0.17454 -0.175297 0.02779 -0.186083 -0.199061 0.204208 0.507926 0.425694 -0.0755312 -0.477066 -0.47231 -0.192427 -0.0646287 -0.0420686 -0.0519286 -0.141217 0.204285 0.407302 0.572281 0.218807 -0.273749 -0.515639 -0.303183 -0.0595714 -0.0877186 0.0508775 -0.184481 -0.0573795 0.0783732 0.39225 0.438376 0.0559953 -0.364992 -0.271955 -0.144832 0.0627043 0.0590349 -0.250483 -0.2618 -0.126486 0.206148 0.536721 0.243224 -0.166498 -0.282768 -0.205339 0.0249912 0.17142 -0.0292816 -0.0795113 -0.00345614 0.228074 0.61822 0.529643 0.0472256 -0.186545 -0.159798 -0.0983136 0.133336 -0.00809741 -0.0328816 0.066352 0.341541 0.726889 0.755211 0.351861 0.077022 -0.117333 -0.109083 -0.0214799 -0.210036 -0.0729265 0.196483 0.579563 0.971246 0.925065 0.478692 -0.00373601 -0.165154 -0.103114 -0.251993 -0.11357 0.199925 0.405653 0.551631 0.761065 0.910545 0.455418 -0.316581 -0.449494 -0.19388 -0.321614 -0.0526797 -0.223434 -0.282301 -0.412666 -0.294186 -0.135769 -0.503949 -0.914689 -0.848544 -0.148938 -0.154768 2 1 -13.5144 2.59092 11 11 5 -0.472783 -0.212407 0.359715 0.401745 0.685105 0.240311 0.109541 0.136547 0.0865241 0.172868 0.097572 -0.506776 -0.399186 -0.0192858 0.406503 0.559768 0.462509 0.0279815 -0.0164064 0.119932 -0.094625 0.0238263 -0.501366 -0.369868 -0.493959 0.118831 0.512444 0.560181 0.0879369 -0.415888 -0.04672 -0.275441 -0.0663658 -0.300787 -0.303395 -0.467712 -0.275994 0.386369 0.485377 0.135286 -0.381827 -0.117707 -0.0439826 -0.130556 -0.245808 -0.438753 -0.508664 -0.47602 0.0642085 0.412451 0.197541 -0.062578 -0.259694 0.183722 -0.274466 -0.380978 -0.523252 -0.512321 -0.517199 -0.25667 0.0702304 0.147067 0.00929812 -0.274824 0.252443 -0.104738 -0.31172 -0.461771 -0.635989 -0.588771 -0.487212 -0.263652 -0.110709 0.022438 -0.157127 0.192085 0.376816 -0.189374 -0.421762 -0.63833 -0.606158 -0.522197 -0.355376 -0.294707 0.11502 -0.0158143 -0.125381 0.485532 -0.0233396 -0.345111 -0.467127 -0.474662 -0.400804 -0.102832 0.0159566 0.110226 0.100146 -0.0782152 0.337732 -0.100093 0.313301 0.120628 0.199824 0.387078 0.148296 0.606233 0.609776 0.232163 -0.0796957 0.254009 0.659534 0.963211 1.06333 0.854635 0.677571 0.850191 0.761666 0.849038 0.159328 -0.0788827 0.106216 2 2 -16.4968 3.11645 11 11 5 0.0288601 0.388529 0.677707 0.615142 0.00197752 -0.613877 -0.501354 -0.260221 -0.0214363 0.198338 -0.161242 -0.619654 -0.120718 0.366932 0.521238 0.122703 -0.480595 -0.517456 -0.374525 -0.190003 0.0401452 -0.171805 -0.818032 -0.255377 0.0920715 0.715262 0.325466 -0.0822264 -0.426678 -0.356672 -0.216887 -0.0352459 -0.176739 -0.287922 -0.0824163 0.328113 1.09595 0.618395 -0.28739 -0.6526 -0.325552 -0.232952 -0.113121 -0.205296 -0.124645 0.35076 0.307815 0.30549 0.471817 -0.108239 -0.745473 -0.6149 -0.515683 -0.071596 -0.442708 -0.237844 -0.0491437 0.337182 -0.194338 0.288006 0.149146 -0.521721 -0.710252 -0.402423 -0.462934 -0.122227 0.205139 -0.10605 -0.198463 -0.537257 0.100803 0.474678 -0.235576 -0.0642883 -0.205168 -0.273438 0.270247 -0.238784 -0.519332 -0.807308 -0.565885 0.181533 0.594366 0.278541 0.0578811 -0.255794 0.0349549 0.152078 -0.48132 -0.738742 -0.567991 0.0355267 0.474181 0.698179 0.545131 0.295337 0.111906 -0.0120955 -0.161429 -0.0640484 0.0565618 0.168257 0.918244 1.29349 1.6445 1.23952 0.306945 0.00747934 -0.0670444 -0.437137 0.0805157 0.0750649 0.164569 0.367791 0.655649 1.03743 0.456673 -0.273618 -0.264313 -0.044719 -0.2983 3 11 11 3 2 0 -16.0321 4.54026 11 11 5 0.127441 0.371299 0.101283 -0.0973491 -0.286134 -0.239942 -0.117962 -0.123179 -0.109346 0.0139844 -0.111672 -0.210694 0.10928 0.220764 0.0633058 -0.104517 -0.26709 -0.247263 -0.169507 -0.155274 0.131671 0.0143787 -0.257504 0.0637524 0.370332 0.345158 0.157814 -0.0829346 -0.270629 -0.218386 -0.295933 0.0226846 0.107138 -0.0814926 0.16124 0.529639 0.71377 0.549165 0.0667362 -0.0507381 -0.0953768 -0.219721 -0.0419499 0.138843 0.0414314 0.236296 0.697928 0.920514 0.91572 0.39504 0.149484 -0.0626523 -0.116385 -0.387671 0.0570092 0.177513 0.465375 0.886823 1.1842 1.4155 0.548322 0.125984 -0.182386 -0.178777 -0.473316 -0.184066 0.12201 0.420906 0.613722 0.79603 0.80898 0.205006 -0.281623 -0.602803 -0.298118 -0.420186 -0.0566304 -0.454192 -0.515779 -0.58176 -0.297952 -0.264355 -0.642448 -0.777246 -0.877525 -0.114554 -0.082002 0.130184 -0.690807 -0.894316 -0.948566 -0.719097 -0.598007 -0.751151 -0.682906 -0.293866 0.282902 0.204772 0.271388 -0.0936621 -0.364442 -0.415793 -0.28524 -0.337973 -0.427015 -0.132597 0.346737 0.426562 0.260765 0.24942 0.384184 0.204154 0.108499 -0.0611557 -0.133057 -0.0620338 0.120625 0.519148 0.246645 0.156051 0.123168 2 1 -11.3619 1.60798 11 11 5 -0.75247 -0.313558 0.133517 0.579516 0.362259 -0.156414 -0.284757 -0.164815 -0.00544676 0.0930523 0.176449 -0.635556 -0.570041 -0.0386035 0.182714 0.138447 0.165003 -0.303274 -0.0722641 0.200692 0.0555937 0.123665 -0.631293 -0.635583 -0.423084 0.199707 0.0886997 0.208365 0.0161542 -0.254825 0.0380061 0.150632 -0.0180236 -0.769637 -0.699513 -0.579895 -0.407026 -0.0898235 0.032999 0.296352 -0.147673 -0.1711 0.30441 0.108762 -0.765767 -0.712708 -0.805677 -0.690995 -0.0877975 -0.218408 0.12348 -0.0353253 -0.232013 0.257874 0.346812 -0.318518 -0.326543 -0.304813 0.0100477 -0.252811 0.143644 0.173704 0.204426 0.138461 0.174737 0.527137 0.444746 0.290784 0.614169 0.757951 0.826865 0.677439 0.738289 0.292632 0.0383233 0.131278 0.579394 0.995014 0.989435 1.10839 0.771489 0.694635 0.525471 0.673489 0.0680443 -0.0891776 0.0796645 0.204531 0.335143 0.443071 -0.0995541 -0.213605 -0.14654 0.168143 0.0408303 0.00826323 -0.219964 -0.137938 -0.0683523 0.160248 -0.0691078 -0.228835 -0.306035 -0.231589 -0.0822711 -0.0276381 -0.0139928 -0.297666 -0.201676 -0.124247 -0.23084 -0.355891 -0.545198 -0.663801 -0.490373 -0.00687421 -0.00345719 -0.172848 -0.394399 -0.0568991 -0.0582247 2 2 -15.033 2.14292 11 11 5 0.0916544 0.558244 0.743185 0.628151 -0.351168 -0.301383 -0.166113 -0.182219 -0.0832965 -0.379237 -0.220024 0.095804 0.267495 0.377794 0.185282 -0.457552 -0.7368 -0.2123 -0.0211886 -0.177064 -0.100758 -0.0737947 -0.591986 -0.142549 -0.0253834 0.0280801 -0.0547305 -0.377143 -0.0786595 -0.359558 -0.216573 -0.1097 -0.123318 -0.379216 -0.463501 -0.236102 0.331454 -0.0371614 -0.377178 -0.306061 -0.242189 0.0461059 0.130728 -0.161558 -0.368044 -0.66147 -0.304669 -0.112885 0.62227 0.0961423 0.141819 0.156982 0.10654 -0.0157574 -0.0746698 -0.558415 -0.101266 0.515853 1.14716 1.76866 1.09147 0.704745 0.0729267 -0.143563 -0.247953 -0.352071 0.288083 0.853192 1.24921 1.30946 1.60474 0.991435 0.0975463 -0.267615 -0.0932669 -0.447068 -0.078151 -0.31376 -0.29805 0.0784889 0.516394 0.692127 0.0801178 -0.215918 -0.584391 -0.0431046 -0.0162245 -0.307741 -0.696514 -0.520455 -0.381791 -0.227445 -0.337261 -0.410441 -0.326349 -0.256241 0.0707311 -0.0408225 0.15058 -0.519555 -0.22639 -0.223017 -0.0133964 -0.42506 -0.423557 -0.121978 0.134627 0.173246 -0.0152425 0.434138 0.0392942 -0.00818119 0.00789945 -0.203406 -0.319529 0.0348266 -0.00898159 0.237139 0.0871205 0.0400939 -0.0219024 3 11 11 3 2 0 -13.1578 2.78906 11 11 5 0.294455 0.499942 0.555228 0.265182 -0.165079 -0.449148 -0.325701 0.121689 0.586544 1.00819 0.873233 0.296005 0.213177 -0.0697356 -0.354349 -0.6368 -0.608611 0.0489054 0.432897 0.827811 0.871142 0.609039 0.115602 -0.0776995 -0.422931 -0.664078 -0.551893 0.149382 0.333674 0.0465075 0.251622 0.374483 0.180628 0.0299152 -0.193709 -0.366919 -0.546051 -0.23799 0.222259 -0.589696 -0.789911 -0.578224 -0.1123 -0.588442 0.0138624 0.0820413 0.170499 -0.272995 -0.779676 -0.206823 -0.486291 -0.708052 -0.343204 -0.0661199 -0.60044 -0.152337 0.279359 0.601674 0.567628 -0.215725 -0.705065 -0.21477 0.377949 0.379366 -0.127597 -0.675072 -0.218462 0.183013 0.569046 0.600392 0.243948 0.140481 0.358981 0.609287 0.367538 -0.00576375 -0.408473 -0.413708 0.0618319 0.270194 0.168766 0.0110201 -0.0190011 0.231781 0.516821 0.183904 -0.193897 -0.15149 -0.254027 0.0618891 0.135139 0.0328655 0.0455337 0.284421 0.32708 0.331986 -0.0853476 -0.35572 -0.116579 -0.0580185 -0.162418 0.0635719 0.278221 0.321136 0.540144 0.413536 0.289083 0.0994462 -0.364592 -0.269396 -0.487072 -0.29686 -0.0841992 0.144007 0.157632 0.0904818 -0.0117906 -0.315585 -0.405019 -0.476265 -0.775921 2 1 -13.5592 2.05504 11 11 5 -0.0328148 -0.183523 0.0815177 0.294392 0.2889 -0.0519889 -0.534783 -0.758967 -0.718826 -0.447503 -0.192589 -0.219417 0.085975 0.329363 0.524925 0.541547 -0.156283 -0.350693 -0.17906 0.0652508 -0.102194 0.439327 -0.167668 0.193886 0.260826 0.371069 0.164299 -0.0753569 0.496478 0.619233 0.527437 0.324688 0.525003 0.278946 0.311472 0.196657 -0.167946 -0.395709 0.413998 1.17998 1.13094 0.757607 0.289095 0.516562 0.187804 0.22491 0.07129 -0.0697353 -0.417655 0.132682 0.0921592 -0.517427 -0.42721 0.0891027 0.683724 -0.0864177 -0.0254839 -0.473197 0.0748055 0.775974 -0.398358 -0.648338 -0.316557 -0.620252 -0.191464 0.178409 -0.119644 -0.188496 -0.395691 -0.307001 -0.0338331 0.266356 -0.0096626 -0.397193 -0.273616 -0.436753 -0.124166 0.0776933 -0.20144 -0.272327 -0.314725 -0.313222 -0.412806 -0.665073 -0.644447 -0.39409 -0.569596 -0.403486 -0.0791667 -0.245369 -0.446943 -0.424163 -0.49175 -0.379434 -0.397692 -0.460039 -0.0604279 -0.135061 -0.154196 0.079445 -0.126996 -0.204991 -0.132058 0.166263 0.337474 0.121583 0.177055 0.275808 -0.110424 0.193689 0.358837 -0.0211628 -0.0679351 0.290043 0.46077 0.583285 0.376418 0.58166 0.379176 0.259069 0.63763 2 2 -13.8242 1.73926 11 11 5 -0.494162 -0.0438613 0.45745 0.694356 0.105725 -0.441941 -0.640818 -0.561628 -0.264505 0.412547 0.607267 -0.080086 0.293279 0.610874 0.379383 -0.589383 -0.869593 -0.369503 -0.173808 0.0062762 0.422037 0.470152 -0.00297218 0.222856 0.273734 -0.229142 -0.703342 -0.165049 0.630198 0.556551 0.340228 0.624608 0.591305 -0.0166565 -0.223008 -0.0593061 -0.180102 -0.133167 0.424671 -0.164868 -0.174429 -0.144543 0.279149 0.223973 -0.170321 -0.333185 -0.623359 -0.580751 -0.694874 -0.265566 -0.447196 -0.767085 -0.314972 0.376247 -6.04456e-05 -0.00488124 -0.170936 -0.0422244 0.105475 -0.794667 -1.69414 -0.924283 0.0367508 0.346374 0.164167 -0.292104 -0.143971 -0.0364676 0.429799 0.150043 -0.0840215 -0.61904 -0.439008 0.127685 0.23139 -0.125506 -0.375767 -0.146523 0.0690534 0.334878 0.143898 -0.348338 -0.809282 -0.168241 0.539621 0.292353 -0.19503 -0.137183 -0.0625914 0.370841 0.13303 -0.253877 -0.424366 -0.0520156 -0.109283 0.361896 0.051189 -0.212097 0.435374 0.342517 0.0877719 0.00224224 0.158141 0.140222 0.199521 0.23846 0.549479 0.620245 0.514665 0.806269 0.160962 0.208881 0.179968 0.353906 0.548325 0.323086 0.351028 0.0526657 0.0749514 0.135951 0.213139 3 11 11 3 2 0 -14.5978 3.36793 11 11 5 0.371309 -0.0045378 -0.371192 -0.397147 -0.0653499 0.486894 0.830073 1.13501 1.03807 0.589026 -0.0198761 -0.206933 -0.750821 -0.603422 0.0851825 0.562658 0.611352 0.635635 0.843475 0.684941 0.486353 -0.239574 -0.479189 -0.765965 -0.152467 0.566744 0.28532 -0.390856 -0.0374873 0.260703 0.210844 -0.318317 -0.701562 -0.144483 -0.455517 -0.174847 0.12865 -0.65445 -0.977396 -0.481258 -0.230807 -0.415692 -0.617153 -0.713355 0.425452 -0.0681979 -0.572008 -0.514087 -0.261553 0.0622789 0.138632 -0.193177 -0.644402 -0.823358 -0.511755 0.642443 0.47482 -0.0212875 -0.145974 0.253057 0.624786 0.394921 -0.0566219 -0.413825 -0.296909 0.211309 0.436411 0.310837 0.0684672 0.0962253 0.480852 0.592746 0.163439 -0.0976317 -0.0750451 -0.0391193 0.360095 0.183617 0.121243 0.0396704 0.0867904 0.351704 0.252514 -0.201971 -0.262722 0.00994236 -0.0619762 0.13584 0.0380533 0.0547952 0.113986 0.304447 0.334462 0.292497 -0.0294413 -0.0358623 0.0805028 -0.090557 0.0680977 -0.0432059 0.135513 0.195393 0.377259 0.32111 0.0747688 -0.142749 -0.301476 -0.308842 -0.313786 -0.121383 -0.32948 -0.196565 -0.0472894 0.00953142 -0.0137216 -0.0555686 -0.252637 -0.360303 -0.535586 -0.323096 0.00205225 2 1 -13.4731 2.29754 11 11 5 0.413221 0.527596 0.0700964 -0.383709 -0.732219 -0.815343 -0.722505 -0.274785 -0.18645 -0.0833786 -0.030408 0.485485 0.308132 -0.0972318 -0.290712 0.0549188 0.268231 0.292035 0.129172 0.34562 0.387897 0.241234 0.217605 -0.0995516 -0.262046 0.0723176 0.926414 0.877853 0.806892 0.548314 0.412501 0.659323 0.374712 -0.0123254 -0.805316 -0.267714 0.600948 0.929686 0.0835704 0.168551 0.564909 0.614349 0.648141 0.425039 0.112668 0.105236 -0.242426 -0.305069 -0.475251 -0.570706 -0.796681 -0.270193 0.0671703 0.387896 0.0155496 -0.656518 0.0894884 0.214411 -0.112203 -0.285405 -0.496777 -0.523795 -0.310905 -0.161309 0.16151 -0.256033 -0.447474 -0.1896 -0.0654432 -0.120195 -0.53405 -0.646167 -0.511784 -0.454656 -0.254495 -0.0883946 -0.182119 -0.447454 -0.334879 -0.336017 -0.390895 -0.49082 -0.416578 -0.450664 -0.512825 -0.340907 -0.198882 -0.0719078 -0.370364 -0.331139 -0.209987 -0.284417 -0.226047 -0.0385867 0.0370138 -0.0532888 0.0381761 -0.0397487 0.198973 -0.120348 0.170561 0.362818 0.381431 0.304178 0.294055 -0.00758749 0.024713 0.27412 0.19274 0.179858 -0.130302 0.167793 0.334776 0.655782 0.473036 0.586464 0.266668 0.268621 0.471304 0.273441 0.259777 2 2 -15.2437 2.32086 11 11 5 0.66762 0.325391 -0.307384 -0.725906 -1.03042 -0.293332 0.0286339 0.297436 0.435245 0.376256 0.157554 0.446417 -0.28013 -0.72396 -0.32476 0.0731946 0.261861 0.506155 0.459136 0.595053 0.758781 0.423334 0.160116 -0.603904 -0.28579 0.508937 0.606042 0.355748 0.395446 0.58569 0.73813 0.434665 0.134211 -0.265263 -0.574375 -0.162882 0.0549097 -0.606189 -0.736848 -0.34692 0.205814 0.437008 -0.044764 -0.431414 -0.101623 -0.461424 -0.897772 -0.723755 -0.542703 0.01137 0.417999 0.233356 -0.499757 -0.68466 -0.523537 0.130842 0.0571058 -0.829674 -1.08182 -0.455511 0.416955 0.50022 -0.112213 -0.657069 -0.792982 -0.608497 0.391167 -0.0143565 -0.386503 -0.598269 0.19828 0.806499 0.122942 -0.167206 -0.169465 -0.293217 -0.0753375 0.238112 0.0123516 -0.38506 -0.534191 0.160254 0.438921 0.0535742 -0.228952 0.0612166 -0.126832 -0.354125 0.210996 -0.0676299 -0.137471 0.108923 0.278351 0.431715 0.256265 0.350212 0.714034 0.135733 -0.0342688 0.30064 0.0776794 0.0713206 0.35065 0.456131 0.475527 0.445672 0.29707 0.375503 0.10201 -0.178479 -0.0969899 0.10426 0.193191 0.212153 0.0596674 -0.0206166 -0.0178712 0.0297258 0.129774 -0.0480154 -0.195053 3 11 11 3 2 0 -15.4651 3.40874 11 11 5 -0.589183 -0.294431 0.149869 0.628924 1.04993 1.282 1.13791 0.651751 0.0363961 0.0651667 0.110416 -0.534531 0.187735 0.505091 0.45478 0.65413 1.08467 0.894308 0.471664 -0.201384 -0.275752 -0.24535 0.00519748 0.285818 -0.0903899 -0.31679 0.0567193 0.205946 0.22095 -0.52275 -0.711111 -0.411283 -0.412444 -0.288187 -0.309397 -0.761397 -0.973976 -0.564707 -0.253948 -0.500935 -1.06368 -0.808649 -0.300021 0.0758959 -0.39022 -0.18813 -0.200264 0.164205 -0.185615 -0.379171 -0.905321 -1.09691 -0.299156 0.393685 0.577755 0.0506102 0.0113644 0.345197 0.50419 0.0884222 -0.397808 -0.410766 -0.00161898 0.378819 0.49095 0.426973 0.164078 0.258231 0.41511 0.349718 -0.0813584 -0.175972 -0.102853 0.207419 0.202132 0.207017 0.153507 0.191998 0.301688 0.291452 0.160069 -0.123171 -0.198996 -0.119029 0.0798117 0.0605014 0.0775174 0.0512751 0.252029 0.429539 0.285331 0.167878 0.115812 0.117704 -0.0642643 -0.067558 -0.0767796 -0.0167186 -0.0578784 0.122643 0.333088 0.189342 -0.00372877 -0.162017 -0.3871 -0.410016 -0.303354 -0.216693 -0.177566 0.00417174 -0.0508735 0.142174 0.0655005 0.0660395 -0.119145 -0.42399 -0.491006 -0.280482 -0.069761 -0.122057 0.0773908 2 1 -12.4395 2.06923 11 11 5 -0.148765 -0.472147 -0.896496 -0.785001 -0.608783 -0.440081 -0.00659169 0.0128506 -0.168027 -0.0872433 0.00791206 -0.197242 -0.328406 0.219823 0.21709 0.285847 0.233803 0.260844 0.58877 0.174134 0.0409403 0.27719 -0.145016 0.526901 0.99717 0.815032 0.984765 0.718748 0.737043 0.887194 0.35674 0.0105285 0.160313 -0.295888 0.369675 0.784806 0.0407089 0.137913 0.469252 0.790926 0.87925 -0.131837 -0.0335136 0.168431 -0.505269 -0.208344 -0.434512 -0.545142 -0.790495 -0.445156 0.245178 -0.137713 0.020595 0.0481656 -0.301394 -0.0631232 -0.180716 -0.309924 -0.2938 -0.446827 -0.47013 -0.0501779 0.0952027 -0.248994 -0.269937 -0.282063 -0.203015 -0.250871 -0.612696 -0.578588 -0.520064 -0.478162 -0.325341 -0.0840214 -0.25981 -0.057042 -0.10275 -0.44271 -0.522373 -0.533652 -0.533245 -0.535019 -0.35861 -0.351899 -0.0480171 -0.0608821 0.0769673 -0.0302739 -0.282796 -0.331272 -0.166204 -0.0332443 -0.159218 -0.0803978 0.0256719 0.0749586 0.142537 0.236068 0.174792 0.288277 0.284401 0.244833 0.26044 0.0951283 -0.0245612 0.21086 0.0549947 0.152434 0.138303 0.0343281 0.370302 0.524899 0.42851 0.378102 0.218114 0.40776 0.332554 0.428488 0.201195 0.198938 0.147896 2 2 -13.7478 1.87321 11 11 5 -0.425535 -0.82003 -0.640001 -0.340139 0.0611564 0.338692 0.647814 0.595006 0.208565 -0.129548 -0.0631444 -0.478915 -0.10759 0.0885809 0.541555 0.571023 0.833749 0.921026 0.826155 0.269727 0.133332 -0.270636 -0.119388 0.475906 0.366652 0.25673 0.433428 0.616697 0.9133 0.413122 -0.271517 -0.21659 -0.320814 -0.53329 -0.318415 -0.727553 -0.751746 -0.242992 0.417012 0.35209 -0.423847 -0.792867 -0.398091 -0.159276 -0.915127 -0.488017 -0.308042 0.227567 0.376732 -0.225433 -1.04996 -1.06138 -0.467096 -0.0932258 0.407715 -0.728033 -0.818642 -0.196724 0.527423 0.274636 -0.642872 -0.793178 -0.432429 -0.212686 0.262808 0.419946 -0.447672 -0.299767 0.245683 0.494982 0.203318 -0.116059 -0.277277 -0.334759 -0.199223 -0.175629 -0.00478672 -0.403856 -0.334934 0.15301 0.29077 0.162089 0.0489301 -0.0186943 -0.167563 -0.217358 0.0247842 0.160773 -0.0263935 0.126714 0.488773 0.521824 0.40886 0.538107 0.434143 -0.165788 -0.0367534 0.0946579 0.0898972 0.0290166 0.534839 0.65745 0.465595 0.242205 0.346646 0.344613 -0.00307093 -0.0417917 -0.0673157 0.0658925 0.148377 0.22406 -0.00205837 0.0920319 0.0947927 0.141848 0.138472 0.0408332 -0.207079 -0.0754333 -0.224106 3 131072 0 0 3 0 0 0 3 11 11 3 2 0 -17.7471 5.50548 11 11 5 -0.0357995 0.00868398 0.132137 0.17322 0.120121 0.220691 0.181897 -0.0155281 -0.121369 -0.129572 -0.2169 -0.102817 0.00157574 0.00205206 -0.0532993 -0.101265 0.217065 0.475165 0.474976 0.323636 0.165299 0.0379674 -0.145954 -0.195484 -0.220701 -0.323347 -0.104709 0.331986 0.632644 0.62361 0.391933 0.030069 -0.124444 -0.226532 -0.270739 -0.303866 -0.203023 -0.0378619 0.335862 0.507443 0.289666 0.0812361 -0.49412 -0.892859 -0.147839 -0.189464 -0.219374 -0.148294 -0.10369 -0.199727 -0.365951 0.0490111 -0.533775 -1.61241 -1.82749 0.156977 0.149161 -0.0421221 -0.331705 -0.82037 -1.65124 -0.587325 0.194649 -0.343445 -1.21033 -1.02383 0.453728 0.335775 -0.0486942 -0.524903 -0.438168 0.0702103 0.455441 0.778742 0.725104 0.102305 -0.318692 0.446585 0.260001 0.0210678 -0.000264454 0.181285 0.478359 0.555338 0.499721 0.25325 -0.0485193 -0.168075 0.177119 0.156255 0.0793158 0.110981 0.299259 0.490838 0.48678 0.263643 0.0296928 -0.182419 -0.21474 0.0223373 0.0265563 0.126294 0.258413 0.344896 0.345747 0.329073 0.210467 0.106755 0.0236174 -0.0169579 0.00446724 0.000805661 0.0728951 0.191363 0.226568 0.322694 0.327555 0.203074 0.139968 0.161394 0.175502 2 1 -12.1448 2.44503 11 11 5 -0.7379 -0.468731 0.0212509 0.165505 0.0464872 0.105848 -0.10579 -0.0955592 -0.0116827 0.0355937 0.16022 -0.621689 -0.255714 0.175361 0.207438 -0.0127927 -0.496164 -0.500317 -0.42003 -0.495303 -0.458158 -0.487093 -0.210365 -0.0288817 0.0598163 0.00635113 -0.220943 -0.23001 -0.403245 -0.599864 -0.130562 0.224767 0.0486514 -0.175582 -0.0801881 -0.00291542 0.00118814 -0.21232 -0.340562 -0.160475 0.4313 0.658335 0.900056 0.312141 0.213563 0.0854563 -0.0671787 -0.0562328 -0.301455 1.09618 1.05459 1.02411 1.03105 0.367786 0.0479152 0.0312795 -0.0669043 -0.107524 -0.136606 0.0826166 -0.712469 -0.00854882 0.269155 1.3574 0.679934 -0.0662475 -0.0904336 -0.0649361 -0.0725131 -0.191183 -0.0594631 1.43629 0.669071 -0.0377357 0.334611 0.484016 -0.169551 -0.2524 -0.313497 -0.070138 0.260383 0.216714 -0.175061 -0.431972 -0.60787 -0.514885 -0.373646 -0.213158 -0.187693 -0.273507 -0.159377 -0.133897 -0.310649 -0.420926 -0.14488 -0.0868674 -0.131482 -0.164099 0.0223574 -0.0242884 -0.0496464 0.0385376 -0.0186408 -0.115307 -0.0429675 -0.0765642 -0.00923094 0.129988 0.230209 0.0970661 0.11249 0.128434 0.179423 0.090053 0.0907446 0.0999571 0.0154203 -0.0163138 -0.00600798 -0.0435061 0.00318127 2 2 -20.4812 4.28471 11 11 5 0.0100133 -0.274032 -0.112807 -0.172882 -0.0905836 -0.232159 -0.254059 -0.264854 0.00239568 0.187619 0.211757 0.173714 0.183011 0.0965203 0.156818 0.256081 0.163829 0.14302 0.103428 0.249738 0.209509 0.309431 0.143431 0.188855 0.13061 0.0881951 -0.0469571 0.210636 0.295168 0.400391 0.593728 0.640686 0.839263 -0.241783 0.0806898 -0.0255787 -0.0775477 0.103258 0.678382 0.678028 0.793303 1.11949 0.756116 0.409146 -0.416806 -0.32166 0.300907 0.719592 0.942867 0.65309 0.139601 0.246767 0.476755 -0.386226 -0.637341 -0.49058 -0.0733369 0.12909 -0.179522 -0.842505 -2.16067 -0.547155 0.432201 -0.119358 -0.746089 -0.758784 -0.129966 -0.0628935 -0.520864 -1.22165 -0.980054 -0.509975 0.0587022 0.584441 0.540105 0.0438095 -0.662889 0.335878 0.173689 -0.308028 -0.792765 -0.548167 -0.154936 0.0992974 0.589699 0.436298 0.120117 -0.525521 0.603111 0.0964823 -0.283338 -0.554266 -0.277963 0.0556011 0.158969 0.241732 0.0619325 -0.215463 -0.580693 0.0887145 -0.0470124 -0.123108 -0.149857 -0.0345831 -0.249741 0.108998 0.336454 0.168402 -0.274223 -0.572326 0.206915 -0.0348681 -0.0331325 -0.0743145 -0.293977 -0.0414159 0.0769811 0.32862 0.200742 -0.0392641 -0.592295 3 11 11 3 2 0 -19.4657 6.22819 11 11 5 0.0407034 0.182109 0.24522 0.125067 0.0986572 0.0327906 -0.00320021 0.0408233 0.102139 0.188225 0.254932 -0.00587541 -0.0140195 0.111567 0.0449306 0.0136099 -0.0636816 0.0448222 -0.0102046 -0.0842356 -0.0718225 0.0832086 0.0185774 -0.0660062 -0.058771 0.230984 0.438388 0.424823 0.293772 0.0568969 -0.115903 0.0158899 0.0159534 -0.225909 -0.277407 0.0308148 0.452324 0.569234 0.452221 0.244041 0.0765863 -0.0223892 0.0184028 0.0748697 -0.27884 -0.0494407 0.232915 0.479484 0.610128 0.445088 0.0698381 -0.491476 -0.87774 -0.576022 -0.0667267 -0.0689978 0.0354084 0.0828232 -0.112844 -0.283865 -0.99124 -1.61841 -1.7073 -1.29448 -0.824122 -0.19375 -0.0295579 -0.249622 -0.524726 -0.798004 -0.142882 0.61532 -0.192655 -0.742398 -0.213958 0.114319 0.120996 -0.134196 -0.51336 -0.527002 -0.132206 0.904646 1.08922 -0.122978 -0.629621 -0.24219 0.00321249 0.072545 -0.0614748 -0.133641 0.0766717 0.250423 0.481864 0.647134 -0.000192868 -0.312752 -0.0904257 -0.0784619 0.124177 0.319933 0.285417 0.391842 0.350499 0.36679 0.255323 0.0528588 -0.0788931 -0.0569927 -0.0405515 0.0786432 0.337363 0.424781 0.402132 0.430481 0.41793 0.278085 0.105495 0.0697567 0.043617 0.0963012 0.317388 2 1 -13.7303 2.20443 11 11 5 -0.263632 -0.0365521 -0.0678276 0.0930677 0.110515 0.129039 0.130714 0.312414 0.362889 0.495486 0.499349 -0.0013709 -0.062252 -0.14928 -0.232187 -0.241222 -0.204512 -0.186721 -0.113365 0.0805919 0.221012 0.334646 0.125947 -0.0179951 -0.324806 -0.224467 -0.286108 -0.376686 -0.5037 -0.498845 -0.451472 -0.400963 -0.120732 0.148136 -0.178884 -0.349915 -0.38402 -0.367627 -0.508709 -0.451015 -0.252704 -0.123351 -0.554342 -0.413117 -0.0112717 -0.0339102 -0.417321 -0.30161 0.172587 1.0078 1.30318 1.41066 -0.0537671 -0.124725 0.0838642 -0.18737 -0.177669 0.172971 0.660851 0.382746 0.744006 0.566223 -0.482543 -0.937332 -0.149671 0.32363 -0.175442 0.0762108 0.116972 -0.379456 0.478183 0.981473 1.48365 0.460818 0.109111 -0.312889 -0.172732 -0.0874292 -0.247588 -0.419035 0.540646 0.349127 0.598902 1.08385 -0.0301878 -0.471199 -0.411898 0.0846595 -0.0398798 0.20036 0.129105 -0.31721 -0.642723 -0.671459 0.239055 -0.0580511 -0.170288 -0.0557055 0.0638794 -0.0873395 0.010237 -0.195464 -0.178563 -0.14817 -0.225432 -0.147037 -0.17664 -0.284497 -0.115145 0.094106 0.0780952 -0.0726557 -0.140333 0.0930374 0.0800521 0.111912 0.0530926 0.0254503 -0.0845566 0.147178 0.183085 2 2 -19.2244 4.72745 11 11 5 -0.133706 -0.0834947 -0.0552964 -0.151616 -0.188794 0.0296034 0.0815026 0.257715 0.194798 0.205481 0.0284716 -0.0606755 -0.0413202 -0.00518051 -0.126776 -0.17911 -0.142009 0.148104 0.1136 0.148887 0.082591 0.0652875 0.219327 0.112249 -0.129364 -0.0262454 0.0421267 0.177246 0.354182 0.296401 0.445824 0.366994 -0.246224 0.0829555 -0.0884877 -0.0339042 0.222835 0.355462 0.446614 0.563217 0.813574 0.903277 0.501257 -0.0526876 -0.419655 -0.18947 0.508496 0.887526 0.900083 1.14203 1.26668 0.848547 0.47609 0.098281 0.125363 0.163017 0.335105 0.424993 0.0238381 -0.0567472 -0.28093 -0.332367 -1.09534 -0.874483 -0.7625 -0.238109 0.0402179 -0.052135 -0.268179 -1.24058 -0.752091 0.263731 0.0816828 -0.266111 -0.106212 -0.138498 -0.296229 -0.275995 -0.573283 -0.557745 -0.388239 0.658177 0.959933 0.0514565 -0.634738 -0.489244 -0.416967 -0.29153 -0.490204 -0.669506 -0.450938 -0.0583952 0.572945 0.779611 0.205081 -0.403868 -0.538578 -0.571059 -0.0639944 -0.334631 -0.357853 -0.157618 -0.267032 0.15621 0.459949 0.278731 -0.115592 -0.47865 -0.349448 -0.371312 -0.207791 -0.15487 -0.244542 0.10071 0.358429 0.278883 0.287146 -0.0361312 -0.345015 -0.39813 -0.185096 3 11 11 3 2 0 -17.7641 5.94886 11 11 5 0.283863 0.235275 0.0746949 0.0409558 0.0422896 0.201333 0.184098 0.219714 0.320336 0.216141 0.268608 0.0576202 0.0135275 -0.0229845 -0.00454236 -0.021196 0.0249343 -0.100365 -0.0624746 0.0377007 -0.0362897 0.104725 0.0453748 0.13278 0.207165 0.231568 0.151265 0.0212647 -0.0605609 -0.159143 -0.174018 -0.235843 0.0884262 0.269839 0.504446 0.419834 0.317038 0.223486 0.0960155 -0.038746 -0.175545 -0.257855 -0.136935 0.167639 0.60694 0.569568 0.371832 0.232961 0.0383747 -0.175581 -0.381179 -0.221689 -0.00846794 -0.0528113 0.181007 0.176395 0.072604 0.00480984 -0.418706 -1.30835 -2.03025 -1.68453 -0.716524 0.077828 0.0776214 0.0834887 -0.645442 -0.426612 -0.495711 -0.744934 -1.10709 -0.660015 -0.45351 -0.146128 0.281018 0.0634411 0.0802711 -0.541541 0.469059 0.718602 -0.141855 -0.743675 -0.265339 -0.235727 -0.0653906 0.360807 0.114292 0.119959 0.152637 0.628854 0.840127 0.173285 -0.336334 -0.136367 -0.244804 0.0406609 0.229831 0.165273 0.16721 0.284957 0.3896 0.372865 0.162054 -0.00309169 -0.0868572 -0.243814 -0.121588 0.149846 0.240305 0.291866 0.388878 0.312863 0.21359 0.10441 0.0211448 -0.106291 -0.116447 0.131785 0.39967 0.405649 0.382947 2 1 -12.2665 1.67314 11 11 5 -0.283915 -0.0697238 0.0287388 0.0134304 0.223784 0.206602 0.349154 0.441937 0.319936 0.313636 -0.0768946 -0.0416985 0.00529841 -0.326214 -0.257421 -0.0495451 0.19759 0.440559 0.500346 0.456738 0.269914 -0.121877 -0.313546 -0.45886 -0.44874 -0.545087 -0.472705 -0.349753 -0.200958 0.100433 0.167063 0.0570001 -0.334725 -0.457601 -0.381619 -0.499098 -0.721486 -0.590788 -0.550688 -0.468661 -0.501099 -0.164153 0.114212 -0.392069 -0.52712 -0.405841 -0.130345 0.259568 0.572227 0.902866 0.18462 -0.318248 -0.145425 -0.241405 -0.280449 0.0848434 0.48442 0.673784 1.20257 1.05455 -0.475756 -0.747357 0.629697 0.349947 -0.318542 -0.345854 0.162027 0.0310406 0.263282 0.68089 0.683868 0.325151 0.0157979 0.213639 0.239114 -0.243864 -0.165932 -0.121556 0.611875 1.55797 0.954599 0.430643 -0.288541 -0.536293 0.26442 0.205366 -0.0999067 -0.139412 -0.153697 -0.430999 -0.186341 0.50595 0.147237 -0.57594 -0.345857 0.131397 -0.00812657 -0.0294246 -0.0229748 -0.495191 -0.507873 -0.340911 -0.0123718 -0.0296901 -0.225672 -0.183538 -0.0453156 0.177061 0.153306 -0.10265 -0.110243 -0.0103998 -0.0604577 -0.0199845 0.0482743 -0.163096 -0.0414219 0.331512 0.269593 -0.0763721 -0.220166 2 2 -14.8825 3.29218 11 11 5 -0.107886 -0.0321712 0.147738 0.175048 0.11573 0.124135 0.00618185 0.24342 0.0582734 0.0849993 -0.142498 -0.177462 -0.238232 -0.0487692 0.0314502 -0.0652497 0.0660371 3.35509e-05 0.130553 -0.0114526 -0.0611453 0.00609088 -0.0275932 -0.0357233 0.149429 0.229396 0.145001 0.405876 0.346057 0.114412 -0.184719 -0.530169 -0.22975 0.162139 0.184013 0.152844 0.264211 0.457648 0.761936 0.639583 0.107529 -0.206485 -0.546 -0.292049 0.637732 0.78438 0.564852 0.92496 1.25699 1.56217 0.970159 0.365694 0.202795 -0.252062 -0.324933 0.94181 0.547074 0.512545 0.361003 -0.166653 -0.843769 -0.815906 -0.674208 0.0587827 0.0223095 -0.239078 -0.403843 -0.752606 -0.406216 -0.317587 -0.590143 -0.0187261 -0.286089 -0.242305 0.0820091 -0.0720503 -0.321227 -0.674006 0.230048 0.46813 0.0130234 -0.393168 -0.0578501 -0.423922 -0.524263 0.0630418 -0.0153731 -0.295656 -0.399412 0.120612 0.638108 0.492615 -0.332784 -0.308058 -0.520163 -0.1296 0.165171 -0.0401156 -0.42352 -0.300906 0.0271483 0.487227 0.448906 0.051536 -0.375378 -0.569206 -0.520613 -0.278901 -0.30161 -0.54513 -0.248126 0.0970802 0.152214 0.334837 0.212329 -0.181534 -0.405541 -0.342405 -0.220216 -0.189258 -0.425576 3 11 11 3 2 0 -14.0443 5.92097 11 11 5 0.106091 0.0128514 -0.00904838 -0.0142249 -0.0848334 -0.0911109 -0.0862994 -0.0859236 0.130506 0.265301 0.242538 0.265031 0.0451395 0.0463234 -0.0903467 -0.184195 -0.281096 -0.211195 -0.30801 -0.0458248 0.19414 0.217143 0.199363 0.169103 0.0347554 -0.191782 -0.269575 -0.0962628 -0.107601 -0.120107 -0.0296156 0.243385 0.505987 0.230918 0.00531138 -0.190616 -0.220169 -0.343747 -0.116289 0.0541909 0.0689982 0.16252 0.341682 0.716302 -0.217879 -0.472202 -0.889907 -0.598703 -0.768546 -0.285471 0.0450371 -0.0167685 0.0489082 0.339325 0.720402 -0.243043 -0.816713 -1.44099 -1.30981 -1.37585 -1.02997 0.40727 0.0614857 -0.0606527 0.129556 0.621583 -0.369438 -0.387911 -0.680769 -0.546452 -0.237933 0.0854517 0.263717 -0.016774 -0.206525 -0.00948638 0.575579 0.380021 0.383425 0.189631 -0.00705305 -0.136318 -0.102469 -0.0405153 -0.00866246 -0.0700281 0.0503469 0.585521 0.366843 0.269515 0.0336811 -0.171704 -0.20866 0.0157815 0.194077 0.23268 0.156423 0.220215 0.489309 0.271307 0.0689368 -0.0972065 -0.235139 -0.029996 0.32283 0.434583 0.383943 0.314461 0.267521 0.369711 0.166391 0.124193 0.0735808 0.0776769 0.331023 0.498961 0.456426 0.352966 0.235627 0.179063 0.214841 2 1 -10.1421 1.57468 11 11 5 -0.0357867 -0.0646287 0.0556288 0.0454816 0.130445 0.390051 0.494436 0.41173 0.169842 -0.0745783 -0.525888 -0.592904 -0.541095 -0.376363 -0.270782 0.112875 0.192068 0.22375 0.144431 -0.0325603 -0.210545 -0.302543 -0.453968 -0.166455 -0.195001 -0.425719 -0.495972 -0.315675 -0.322605 -0.361828 -0.30194 0.0191828 -0.374558 0.376644 0.304954 0.252077 0.0414717 -0.484389 -0.303277 -0.315222 -0.318659 0.0141373 -0.0412791 -0.0885701 0.825187 0.757597 0.971748 0.365648 0.144469 0.256426 0.280719 -0.0728844 0.151194 -0.157464 -0.362702 1.31892 0.975372 0.762074 -0.0715181 -0.475176 0.929519 0.705757 -0.349254 -0.0305222 -0.165332 -0.556797 0.635498 0.870081 0.639135 -0.005487 0.421378 0.586789 -0.216702 -0.108984 -0.052108 -0.275637 -0.561335 -0.0131556 -0.0619146 -0.0436663 -0.188128 -0.257014 -0.116786 0.250916 0.160458 -0.0630801 -0.274089 -0.537634 0.0753053 -0.0707471 -0.28566 -0.155852 0.087303 0.433277 0.426376 -0.0320485 -0.100769 -0.268255 -0.610388 0.125729 0.0545286 0.0198114 -0.0301815 0.133138 0.229917 -0.0846239 -0.190706 -0.272248 -0.367399 -0.595292 0.0572065 0.205386 0.0793566 0.0271609 0.0497668 -0.127122 -0.18111 -0.179219 -0.157411 -0.230972 -0.44218 2 2 -13.5039 2.34416 11 11 5 -0.00625043 0.00832048 0.0663758 0.391297 0.212933 -0.0973698 -0.356232 -0.436096 -0.328824 0.0619655 0.243966 0.344929 0.237624 0.310038 0.509178 0.349755 -0.12531 -0.0799039 -0.239844 -0.445647 -0.125346 0.0803315 0.378721 0.514128 0.595324 0.454906 0.197472 0.0429627 0.0223688 -0.622979 -0.700864 -0.239079 0.307916 0.888076 0.926915 0.780139 0.607806 0.213115 0.238912 0.0162531 -0.368148 -0.0430511 0.0697076 0.293591 0.655242 0.620401 0.375156 0.859706 0.233107 0.380107 0.18361 -0.199072 -0.000471494 0.0230039 0.480662 0.189954 -0.306592 -0.744431 -0.371544 -0.865679 -0.994864 0.728789 0.0692258 -0.0118429 -0.13284 0.398966 0.126121 -0.276345 -0.688311 -0.856706 -0.303693 -0.0907764 0.309836 0.163335 -0.310361 -0.395769 0.00439654 0.672943 0.646487 0.229575 -0.439058 -0.538936 -0.663902 -0.404204 -0.589667 -0.71499 -0.547152 0.137089 0.438267 0.507199 -0.0560832 -0.444684 -0.566623 -0.642068 -0.731174 -0.619651 -0.582189 -0.304075 0.250823 0.539923 0.393168 -0.0235185 -0.719741 -0.833974 -0.161685 -0.024248 -0.101881 -0.0661103 0.162248 0.181246 0.435762 0.145337 -0.141861 -0.500437 -0.0645762 0.172353 0.148438 0.204305 0.351163 0.18594 0.277818 3 11 11 3 2 0 -17.3554 7.37909 11 11 5 0.524868 0.376432 0.0960495 -0.159507 -0.134412 -0.125101 -0.102556 -0.0363939 -0.0508639 -0.000171984 0.14563 0.192967 0.157999 0.124095 0.128695 0.0567579 -0.114025 -0.298388 -0.23278 -0.097874 -0.119615 0.0164692 0.128441 0.276626 0.337239 0.321503 -0.0677847 -0.301175 -0.406962 -0.282273 -0.0798028 -0.079214 0.142467 -0.249433 0.166788 0.496382 -0.136388 -0.690979 -0.780941 -0.3664 -0.384059 0.068529 0.0958731 0.238005 -0.431663 0.194012 0.5759 -0.191245 -1.01764 -1.09563 -0.502168 -0.740355 0.181294 0.208154 0.0143877 -0.4127 -0.213034 -0.26197 -0.842481 -1.91448 -1.59378 -1.13901 -0.604239 0.111907 0.126393 -0.146381 -0.169734 -0.229377 0.0669138 0.308694 0.262742 0.11956 0.0113505 -0.0967538 0.0972548 0.0543297 -0.0288645 0.3196 0.47663 0.595447 0.461276 0.145151 -0.0758302 -0.185977 -0.185764 -0.00781286 0.190125 0.176188 0.459562 0.422475 0.303014 0.236957 0.0687809 -0.0646878 -0.102356 0.120294 0.40273 0.407777 0.365589 0.390919 0.320772 0.250899 0.0967572 -0.0257992 -0.0994368 0.0639757 0.357796 0.515346 0.470245 0.513496 0.400759 0.381881 0.217901 0.0515114 -0.0435955 0.0694577 0.240967 0.416175 0.496577 0.463312 0.424802 2 1 -12.2526 1.75478 11 11 5 -0.259796 -0.140928 -0.19992 -0.192095 -0.148949 -0.0809197 0.12124 0.279031 0.237929 0.489438 0.185887 -0.613998 -0.575718 -0.384771 -0.452157 -0.193945 0.086758 -0.109291 -0.306505 0.0226541 0.171045 -0.23219 -0.564246 -0.358803 -0.155514 0.132074 0.457756 -0.231373 -0.400273 -0.355117 -0.510673 -0.443279 -0.441484 0.114593 0.419084 0.270162 0.731406 0.623969 0.0938132 -0.599105 -0.429027 -0.076159 -0.0556458 -0.30638 -0.120803 0.107852 0.805975 1.76269 1.43931 0.66703 -0.552681 0.0663055 0.670924 -0.242134 -0.462862 -0.2267 0.108373 0.434 0.907799 0.538166 -0.464258 -0.807359 0.775156 0.458152 -0.223975 -0.136107 -0.0579396 -0.13887 0.16835 0.611562 1.28898 0.499771 0.204432 0.143407 -0.0686763 0.194249 0.116969 -0.161192 0.0953385 0.0516042 -0.402467 -0.375544 -0.669506 -0.453941 -0.0053075 0.425459 0.414779 -0.0460144 -0.422245 -0.317944 -0.217621 -0.0845316 -0.0466616 -0.0558848 -0.0194483 0.419156 0.455125 0.00264802 -0.314774 -0.0677161 -0.0445906 0.0205497 -0.0811488 -0.0821645 -0.165711 -0.00632964 0.0520001 -0.196383 -0.310487 -0.243925 0.122156 0.105627 0.0541433 0.0333775 -0.0524246 -0.126718 -0.212551 -0.244023 -0.369006 -0.338867 -0.202495 2 2 -16.7057 3.19359 11 11 5 0.252185 0.0424517 -0.00080799 -0.118218 -0.0281792 0.242634 0.38394 0.0866354 -0.156674 -0.175399 -0.365391 0.259221 0.149413 0.0723006 0.318373 0.405901 0.473421 0.37761 0.0852241 -0.0794364 -0.259654 -0.631602 0.52798 0.353247 0.335609 0.545454 0.523711 0.419628 0.143965 -0.219833 -0.105317 -0.508887 -0.503406 0.132172 0.271972 0.804148 0.809604 0.430433 0.0965967 0.547209 -0.153066 0.263416 0.0796933 -0.17907 0.00191909 0.476119 1.31648 0.814525 -0.0373354 0.114049 0.730565 -0.448327 0.517879 0.210324 -0.26362 -0.36661 -0.253408 -0.233232 -0.497051 -1.46364 -1.08498 -1.16513 -0.68062 0.354101 0.452023 -0.338396 -0.578208 -0.22185 0.167813 0.664039 0.191354 -0.11732 -0.393729 -0.572125 -0.0764863 -0.0490138 -0.686454 -0.307532 0.0637341 0.425753 0.595939 0.238876 -0.386823 -0.595799 -0.728211 -0.469054 -0.402209 -0.854507 0.0564076 0.189102 0.468934 0.490428 0.328391 -0.242245 -0.507489 -0.590722 -0.107458 -0.142421 -0.530774 0.0458121 0.0874632 0.372599 0.584787 0.115323 -0.408467 -0.649725 -0.249871 0.159773 -0.0203776 0.116599 -0.00840551 0.227832 0.372799 0.264489 -0.254122 -0.520056 -0.291697 0.0214423 0.119336 0.329566 0.15973 3 11 11 3 2 0 -18.5815 7.58587 11 11 5 0.0992192 0.202966 0.411043 0.45397 0.267559 -0.0153048 -0.148749 -0.14541 -0.100124 -0.0687354 0.00334942 -0.117868 -0.0993632 0.135703 0.19246 0.231244 0.215875 0.160383 -0.0333464 -0.290695 -0.320792 -0.216709 -0.169531 -0.169995 0.0712149 0.365768 0.612523 0.547161 0.128103 -0.391464 -0.407565 -0.304132 -0.00922849 -0.301077 -0.200131 -0.10454 0.0226694 0.443125 0.314327 -0.27816 -1.13456 -0.665099 -0.380999 -0.0770686 -0.229877 -0.336968 -0.352764 -0.351243 0.693249 0.527572 -0.828997 -1.64096 -0.959269 -0.52274 -0.3427 -0.0885795 -0.371922 -0.525944 -0.650827 -0.76723 -0.798271 -1.0582 -1.36291 -0.694591 -0.398275 0.0795942 -0.155423 -0.243681 -0.121332 0.128523 0.493288 0.780848 0.553822 0.178304 0.0203376 0.0362125 0.136091 0.125021 0.154525 0.308837 0.467026 0.566334 0.468249 0.206041 -0.0629303 -0.151755 -0.0468568 0.0254263 0.267876 0.363191 0.412241 0.394302 0.333141 0.218589 0.0370901 -0.0306299 -0.0688983 0.0152935 0.323489 0.478057 0.451925 0.383051 0.336398 0.248389 0.123961 -0.00732387 -0.0626135 0.00334998 0.205122 0.560493 0.455653 0.502903 0.442244 0.417769 0.328502 0.118639 0.00189835 -0.0147486 0.15952 0.393836 0.594223 2 1 -12.1401 2.0375 11 11 5 -0.0911283 -0.0679423 -0.239039 0.031257 -0.0670017 -0.0609686 -0.383126 -0.200082 0.0495305 0.0716662 0.372752 -0.019011 -0.0410704 -0.414208 -0.483389 -0.537017 -0.605264 -0.311576 0.0556404 -0.144218 -0.2186 -0.0533706 -0.0317198 -0.297296 -0.541182 -0.376377 -0.188527 0.153586 0.413092 0.501295 -0.319564 -0.425797 -0.44722 -0.050552 -0.00774765 0.106313 0.117816 0.182909 0.479964 0.973566 0.486664 -0.155637 -0.364195 -0.0494024 0.0949618 0.0272776 0.00916716 0.147048 0.855236 1.81534 1.88626 0.437241 -0.49315 -0.174089 0.417505 -0.0877041 0.0857691 -0.0956613 0.165017 -0.490975 0.00617789 0.709585 0.429016 -0.423504 -0.100607 0.495908 -0.270084 -0.130335 0.0544889 0.687438 0.798057 0.620659 0.731363 0.364962 -0.174965 -0.100485 -0.188593 -0.137992 0.0516999 -0.0823109 -0.228866 -0.306195 -0.461574 -0.480402 -0.567538 -0.411731 -0.119296 0.0921394 -0.229773 -0.273519 -0.279544 -0.288103 -0.141345 -0.206065 -0.18378 -0.0543773 0.0110016 0.0742832 0.498544 -0.0708876 -0.127174 0.000153755 0.0105398 -0.0361953 -0.051787 -0.0489501 -0.0469095 -0.125647 0.0678116 -0.0481876 0.0657926 0.0569267 0.0741776 0.0723373 0.0254152 -0.0653939 -0.107539 -0.152349 -0.135781 -0.165025 -0.378727 2 2 -16.8835 3.66888 11 11 5 -0.023751 0.0489399 0.0685554 0.00359653 -0.119007 -0.0139307 0.00162335 0.166691 0.293176 0.225344 -0.108076 0.271418 0.232435 0.195952 -0.0446183 0.108946 0.15972 0.337136 0.455368 0.358444 0.113946 -0.293906 0.247073 0.24048 0.332254 0.207411 0.191894 0.465754 0.823577 0.384391 0.420372 0.0753844 -0.317963 0.23146 0.291901 0.177519 0.282125 0.559035 1.02638 0.790595 0.274431 0.409466 0.243256 0.122039 0.192899 0.0346563 0.052023 -0.0477413 1.36068 1.24769 0.142549 -0.547677 0.0196833 -0.0251979 -0.289952 -0.0993306 -0.600679 -0.71326 -0.89787 -0.701579 -0.496009 -0.58282 -1.14703 -0.805748 -0.782851 0.0487349 -0.608443 -0.853298 -0.587051 -0.290957 0.234042 0.764503 0.758633 -0.0159389 -0.51298 -0.649221 -0.277892 -0.239262 -0.408083 -0.294427 0.138104 0.525773 0.689373 0.423078 -0.101059 -0.512372 -0.629415 -0.53211 -0.370897 -0.367396 -0.194809 0.114934 0.327475 0.411159 0.339868 -0.0065418 -0.47746 -0.51907 -0.272858 -0.21932 -0.20614 -0.176198 0.0891531 0.209231 0.435238 0.451383 -0.0461316 -0.64747 -0.552772 -0.239962 0.0225676 -0.0297823 -0.0429748 0.0935232 0.258807 0.377749 -0.0702787 -0.387638 -0.441927 -0.279374 0.118929 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 12951088 3 0 3 11 11 3 2 0 -16.3873 4.14789 11 11 5 -0.0169805 0.155967 0.225595 0.0996388 -0.0615401 0.0621552 0.379554 0.585115 0.655194 0.687922 0.744197 0.03751 0.185161 0.331226 0.115538 -0.171566 -0.100765 0.110362 0.317988 0.200919 0.0789203 0.223238 0.0888156 0.115378 0.291537 0.0767093 -0.294617 -0.292265 0.0992424 0.0307713 -0.0359054 -0.0293777 0.101723 0.0381257 -0.0371173 0.00173245 -0.0265849 -0.210459 0.0795195 0.0285144 -0.456621 -0.275675 -0.34849 -0.294309 0.0194807 0.0529327 0.0180562 -0.0653597 0.00589584 0.129808 -1.0043 -1.02833 -0.661416 -0.536497 -0.377205 0.162128 0.387283 0.541881 0.400973 0.0154251 -1.05903 -2.76181 -1.19061 -0.385932 -0.0261359 -0.0718248 0.223501 0.549838 0.77851 0.379859 0.0459998 0.479187 -0.391456 -0.418598 0.165336 0.518962 0.525146 0.154721 0.239518 0.324609 0.0415331 -0.09215 0.53662 0.517936 -0.051796 -0.121031 0.0304125 -0.163234 -0.039609 -0.105448 -0.0542984 -0.0911449 -0.105433 0.365636 0.427606 -0.0972345 -0.099797 -0.0265071 -0.228147 -0.126933 -0.264065 -0.343751 -0.333525 -0.242867 0.0884253 0.289876 0.11361 -0.0407648 0.147956 0.121673 -0.153435 -0.280969 -0.334036 -0.271771 -0.141792 0.023447 0.162865 0.323414 0.287377 0.402693 0.292116 2 1 -11.8068 2.5314 11 11 5 -0.077416 -0.321788 -0.222761 -0.0780359 0.014931 -0.0969509 -0.311891 -0.449052 -0.498625 -0.309758 -0.321181 0.00670294 -0.337194 -0.192968 0.140148 0.243772 -0.0707341 -0.531889 -0.380047 -0.180174 0.0268935 0.437776 -0.0365039 -0.20869 -0.121878 0.233941 0.257299 -0.511453 -0.472236 0.0445113 0.203298 0.388632 0.4799 0.0973706 0.0740243 -0.0285075 0.209426 -0.349004 -0.597718 0.53458 0.72806 0.575404 0.241662 0.506881 0.0874833 0.111498 -0.0495982 -0.246647 -0.785743 0.920215 1.74455 0.563746 0.19935 0.048937 -0.192491 -0.0506911 -0.182336 -0.357026 -0.195116 0.238164 0.648381 -0.297616 -0.195358 -0.541991 -0.277362 -0.0905337 -0.184398 -0.407378 -0.367294 -0.0998381 -0.251899 1.21835 2.06514 0.568034 0.0416397 0.171755 0.446004 -0.161552 -0.409088 -0.368948 -0.21025 -0.147648 -0.220093 0.211149 -0.0449238 -0.358493 -0.119876 0.13644 0.00478115 -0.22798 -0.287458 -0.296488 -0.20693 -0.330076 -0.066635 -0.240523 -0.213978 0.184208 0.121284 0.0997837 0.037937 -0.0415615 -0.198069 -0.211645 -0.185911 -0.181016 -0.0103881 -0.238157 0.126975 0.541413 0.114899 0.114498 0.109914 0.0270633 0.0333818 0.0116057 -0.119629 0.00619741 0.0181948 -0.00313313 0.162037 2 2 -14.4253 2.22488 11 11 5 -0.324425 0.229036 0.350598 -0.0518964 -0.15539 -0.126972 0.263812 0.261626 0.286177 0.338928 0.372904 -0.000603435 0.0450792 0.449497 0.0525112 -0.220372 0.0556739 0.354157 0.215279 0.0749101 0.0150202 0.267503 0.233404 0.102759 0.521809 -0.0189286 -0.353979 0.000856123 0.557055 0.39309 0.349783 0.344747 0.239411 -0.124193 0.077181 0.0674901 -0.0244261 0.223052 0.83149 1.17506 0.623336 0.332469 0.12262 0.141447 -0.335685 -0.172875 -0.0423115 -0.124181 0.625345 1.23536 0.340474 -0.218876 -0.442785 -0.490667 -0.116825 -0.00872367 -0.232279 0.241646 0.410051 -0.343372 -1.22924 -2.04129 -0.600759 -0.295333 -0.442459 -0.530175 0.0590066 0.205703 1.04448 0.159488 -0.872095 -0.665697 -0.772504 -0.300424 0.0959834 0.33802 0.338219 0.582432 0.501322 0.972128 0.14215 -0.76427 -0.453145 0.188874 -0.803805 -0.581879 -0.0481092 0.0537976 0.182915 0.487935 0.686513 -0.052464 -0.169925 -0.0638046 0.110759 -0.297202 -0.393292 -0.239687 -0.0499369 0.0627243 0.113967 -0.0419763 -0.235402 -0.259225 -0.22694 0.0533173 -0.10439 -0.378469 -0.00905111 0.00989307 0.028441 0.141402 -0.257089 -0.217777 -0.513054 -0.366995 -0.422968 -0.223717 -0.231897 -0.198796 -0.0971146 3 11 11 3 2 0 -12.1422 2.21428 11 11 5 -0.205456 -0.405743 -0.226888 0.0339194 0.36086 0.397279 0.220482 0.082806 0.353748 0.50469 0.277403 -0.187426 -0.249727 -0.0509237 0.191663 0.508344 0.312302 0.170656 0.182779 0.329551 0.568271 0.19975 0.0321835 -0.0674355 -0.0317402 0.261814 0.265208 0.110543 0.183753 0.342272 0.481655 0.464476 0.139758 0.064985 -0.0995463 -0.0994669 -0.0300314 0.0180811 0.0861791 0.401052 0.585574 0.536408 0.236292 -0.181267 -0.0999999 -0.232912 -0.300089 -0.0836365 0.225225 0.558691 0.739847 0.291176 0.0155503 -0.11908 -0.251938 -0.264606 -0.331098 -0.33985 0.105955 0.500707 0.243954 -0.926966 -1.28404 -0.680153 -0.278766 -0.182685 -0.00917034 -0.114592 -0.497787 -0.621367 -0.766225 -1.55066 -1.27119 -0.573932 -0.102306 0.123815 0.0825238 0.327932 0.205278 0.0210174 -0.481023 -0.586866 -0.661764 -0.128823 0.587065 0.534809 0.328912 0.0792687 0.292961 0.293788 0.48249 0.432332 -0.428186 -0.48539 -0.0812194 0.328828 0.0526679 0.0363512 -0.168803 0.134977 0.183413 0.418765 0.528864 -0.055857 -0.321635 -0.120907 0.063783 -0.0412955 -0.150219 -0.338152 -0.128631 -0.00544408 0.0860182 0.34702 0.0946358 -0.0673474 0.0536055 0.268058 0.0374694 -0.286112 -0.756099 2 1 -11.5303 2.54234 11 11 5 0.137661 0.123067 -0.24224 -0.273604 -0.326905 -0.30977 -0.145459 -0.324194 -0.314274 -0.269368 -0.514329 0.0754256 -0.156414 -0.141809 -0.261624 -0.132888 -0.142345 -0.237067 -0.314943 -0.430549 -0.441138 -0.421687 -0.0243281 -0.0576907 -0.0108371 -0.117195 -0.0429228 -0.060387 -0.393503 -0.525928 -0.426206 -0.155231 -0.0271122 0.143679 0.206041 0.0839301 -0.0794101 -0.265943 -0.52333 -0.406755 -0.20057 0.124044 0.225399 0.160649 0.30885 0.167444 -0.135782 -0.470817 -0.899613 -0.617782 0.383882 0.892513 0.823312 0.53002 0.225194 0.0686587 -0.168332 -0.00913529 0.194304 0.373055 1.4043 1.32809 0.589896 0.488153 0.0901712 0.128047 0.0267581 0.0429779 0.0915442 0.0848608 0.389839 0.110573 -0.396863 -0.468574 -0.0979923 0.495182 0.981044 -0.235937 -0.189947 0.182721 0.524761 0.766702 0.147594 0.0869907 0.1633 0.143914 0.603791 0.397635 -0.33829 -0.373158 0.0338256 0.714204 0.485761 -0.257676 -0.282213 -0.315802 -0.251078 -0.0523879 0.0275839 -0.295445 -0.247069 -0.375446 -0.275013 0.345087 0.0441068 -0.37981 -0.265227 -0.161627 0.0633354 0.0886888 -0.333117 -0.248001 -0.296667 -0.195002 0.0921667 0.137325 -0.0360784 0.192582 0.229918 0.260914 0.156364 2 2 -12.7679 1.90924 11 11 5 0.276767 -0.239931 -0.611741 -0.67153 0.059676 0.098289 -0.57999 -1.00214 -0.589067 0.0182084 0.212333 0.0265865 -0.0599933 -0.201487 0.180704 0.495097 0.318507 -0.0368871 -0.328971 0.0364537 0.515083 0.384765 0.235777 0.139602 0.00594023 0.308559 0.186943 0.0219075 -0.158488 -0.301442 0.470366 0.882626 0.911704 0.00960983 0.127748 0.062398 -0.141123 -0.463912 -0.535608 -0.0768125 0.459522 0.607978 0.4961 0.322924 0.201387 0.328783 0.0374866 0.203236 0.653379 1.12952 1.32626 0.810825 0.37278 0.144735 0.131961 -0.0423296 0.0999535 0.177735 0.599824 1.0351 0.896055 0.198969 -0.448146 -0.317026 -0.38357 -0.230453 0.091444 -0.388973 -0.40357 -0.11082 -0.232096 -0.876416 -1.17493 -0.770498 -0.45497 -0.324358 -0.142392 0.124344 -0.219556 -0.403029 -0.205484 -0.406122 -0.391154 -0.235524 0.157004 0.0757945 0.174162 -0.220664 0.184141 -0.397469 -0.565114 0.0386064 -0.62354 -0.493059 -0.0588208 0.16684 0.0957986 0.0603181 -0.0203084 0.461747 -0.168375 -0.0363112 0.076928 -0.239262 -0.499503 -0.173038 0.067479 -0.046833 0.187567 0.21702 0.194538 -0.0977728 -0.0813266 0.245875 0.00119644 -0.426879 -0.370277 -0.131317 -0.127198 0.251843 -0.155194 3 11 11 3 2 0 -11.9437 2.38589 11 11 5 0.130001 0.221141 -0.0583842 -0.679397 -0.639293 -0.441802 -0.0693351 0.024225 -0.335467 -0.682495 -0.735422 0.231386 0.528823 0.400049 -0.02792 -0.177845 0.345637 0.662016 0.495092 -0.0432647 -0.247242 -0.408426 0.26136 0.493396 0.423353 0.246747 0.29035 0.651824 0.806157 0.524016 0.233741 0.0451994 -0.329858 0.160588 0.239024 -0.0117295 -0.0472215 0.0397009 0.468651 0.577194 0.0157356 0.000966796 0.137495 -0.269875 -0.00584773 0.0118061 0.00243092 0.283641 0.4782 0.601548 0.707058 0.138669 -0.176956 0.207685 0.070794 -0.117623 0.131668 0.551111 0.921583 1.25887 1.08118 0.277414 -0.225584 -0.193279 -0.333811 -0.567647 -0.353511 -0.147364 0.0693276 -0.0738384 -0.810579 -1.11301 -0.790728 -0.56783 -0.481288 -0.867372 -0.949391 -0.197315 -0.18251 -0.359805 -0.590202 -0.763874 -0.161684 0.19827 0.325673 0.0660894 -0.126768 -0.11462 -0.054066 -0.273746 -0.673741 -0.353334 -0.226525 0.319608 0.624914 0.546266 0.374246 0.311787 0.329316 0.15807 -0.395477 -0.339121 -0.141479 0.0443263 0.162462 -0.0199791 -0.0622232 -0.129861 -0.122634 -0.0467691 0.177113 -0.244514 -0.227234 -0.0125502 0.201483 0.0447729 -0.176355 -0.21897 -0.11548 -0.0539868 0.0342411 2 1 -10.7452 2.1948 11 11 5 -0.277939 -0.0664071 -0.325581 -0.246108 -0.00384572 0.369634 0.286541 -0.197726 -0.0823209 0.398972 0.502379 -0.31492 -0.415903 -0.0262734 -0.134466 -0.253289 -0.417164 -0.61767 -0.701222 -0.509186 -0.220414 0.182371 -0.321425 -0.419677 -0.427001 -0.204721 -0.261664 -0.357565 -0.454341 -0.277642 -0.503499 -0.290429 0.048042 -0.309683 -0.264892 -0.236152 -0.30038 -0.436155 -0.559081 -0.285573 -0.349946 -0.488828 -0.407018 -0.154379 -0.240803 -0.325298 -0.398307 -0.542109 -0.47382 -0.572518 -0.163695 -0.0628637 -0.326017 -0.126805 -0.0112137 0.00620183 -0.181325 -0.04666 0.255333 0.565149 0.794014 0.853992 0.334782 0.0144603 0.384912 0.424072 0.235382 0.236333 0.586786 0.870215 0.935816 0.532231 0.140126 0.10107 0.132774 0.333357 0.162313 -0.146297 0.132769 0.719591 0.500776 0.484429 0.189262 0.12907 0.133313 0.0148008 0.434418 0.579598 -0.0804708 0.200349 0.320124 0.155519 -0.24021 0.190925 0.537175 0.319618 0.387808 0.64 0.730785 0.279094 0.295709 0.219897 -0.25759 -0.127116 0.15773 0.449708 0.359745 0.185925 0.227222 0.469991 0.160919 0.175738 -0.218815 -0.652863 -0.630326 -0.387231 -0.184997 -0.346333 -0.316888 -0.169074 -0.119138 2 2 -12.1369 1.57444 11 11 5 -0.234199 -0.109632 -0.0930531 -0.605349 -1.00615 -0.846619 -0.2125 -0.0268488 0.00766457 -0.183886 -0.535987 -0.0721817 0.0779811 -0.172264 -0.521667 -1.25572 -0.686656 0.211058 0.353106 -0.255798 -0.219104 -0.423255 0.249889 0.371113 0.410666 0.0467884 -0.599662 -0.397003 0.555787 0.10236 -0.145877 0.0700485 -0.352178 0.259061 0.350448 -0.114715 -0.41281 -0.420352 0.058769 0.721025 0.217242 0.373552 0.524947 -0.267166 0.298555 0.0148043 -0.390439 -0.513603 -0.261338 0.367646 1.02422 0.666424 0.180866 0.754385 0.773704 0.244496 0.17401 0.376444 0.868517 1.2715 1.18706 0.846027 0.561666 0.388219 0.561172 0.315792 0.0548972 0.0666735 0.324387 0.38562 -0.114199 -0.411385 -0.492938 -0.225733 -0.169302 -0.354117 -0.563713 -0.268735 -0.0730553 -0.251516 -0.320076 -0.395729 -0.14277 -0.22724 -0.27984 -0.173395 -0.171512 -0.213404 -0.247068 0.062436 -0.159326 -0.0976579 -0.0158679 0.144771 0.15052 0.136316 -0.00851513 -0.112271 -0.222825 -0.0398028 -0.290216 -0.2328 -0.12898 -0.0701433 0.115153 0.169047 0.0946627 -0.00666652 -0.0267238 -0.111837 -0.0436997 -0.269909 -0.175696 -0.288167 0.048431 0.489266 0.178088 0.446536 0.219274 0.0422185 -0.232475 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 12951232 5 0 3 11 11 3 2 0 -6.98515 1.52457 11 11 5 -0.0439695 0.439375 0.436884 0.1143 -0.301008 -0.16519 -0.177563 -0.332977 -0.00470923 -0.0756559 0.188205 -0.789884 -0.510501 -0.261499 -0.0896173 -0.43592 -0.508884 -0.597528 -0.576742 -0.388627 -0.28268 0.070571 -0.465663 -0.249085 -0.132684 -0.327878 -0.733397 -0.636326 -0.505746 -0.482088 -0.497156 -0.376975 0.0581175 -0.0442121 0.109026 0.451631 0.201697 -0.0676669 0.0615962 0.0851623 -0.251575 -0.438263 -0.186926 0.143418 0.548913 0.417915 0.264905 0.194842 -0.0219942 -0.142884 -0.390359 -0.363262 -0.213543 0.110802 0.349236 0.748994 0.699079 0.358528 -0.05093 -0.165295 -0.238794 0.023132 0.260738 0.291001 0.238979 0.224027 0.213322 -0.0691023 -0.386843 -0.657319 -0.538296 -0.362284 -0.120173 0.158243 0.245464 0.215138 0.0874359 -0.101518 -0.201169 -0.485174 -0.615664 -0.521651 -0.346643 -0.0585405 0.190226 0.178801 0.153314 0.0102901 0.3422 0.257511 0.0562071 -0.00649697 0.0101583 0.106913 0.187245 0.136623 0.119392 0.188991 0.184415 0.595532 0.522892 0.430782 0.294389 0.25976 0.314683 0.185822 -0.0701094 -0.074604 -0.0112224 0.156605 0.789282 0.695049 0.723529 0.761123 0.701697 0.573759 0.268543 -0.0115246 -0.12091 -0.131206 0.00970908 2 1 -6.12922 1.04958 11 11 5 0.129539 0.18197 0.199737 0.143504 -0.363511 -0.0149798 0.839063 0.323051 -0.0308714 0.0602033 -0.276757 0.97253 0.722988 0.291492 -0.0177399 0.272356 0.714842 0.797404 0.496944 0.209111 0.294719 0.205487 0.642883 0.48356 0.50709 0.356872 -0.113054 0.199392 0.707481 0.457133 0.256382 0.321742 0.345402 0.221311 0.219947 -0.146353 0.0428229 -0.156557 -0.580397 -0.498572 -0.128031 0.0452956 0.694203 0.496918 -0.0828851 0.0992512 0.0435483 -0.260911 -0.216572 -0.528558 -0.214097 0.119821 0.47394 0.467813 0.358367 -0.738452 -0.0758182 0.37064 0.0702815 -0.509005 -0.235764 0.31526 0.44864 0.205028 0.155919 -0.00601963 -0.590182 -0.202823 -0.222592 -0.258329 -0.267239 -0.194918 -0.212458 -0.0859173 -0.3226 0.0785989 -0.163783 -0.489964 -0.0135013 0.0241008 -0.0854402 -0.115165 -0.177077 -0.143191 -0.303724 -0.145238 0.226828 -0.0461855 -0.365978 3.46121e-05 0.109011 -0.137203 -0.153126 -0.100392 -0.207204 -0.0430417 0.0675877 0.127372 -0.0556004 -0.57078 -0.298552 -0.261563 -0.346328 -0.317123 -0.280003 -0.198646 0.159117 0.141545 0.113435 -0.205194 -0.849881 -0.638228 -0.691458 -0.677315 -0.44253 -0.497398 -0.152437 -0.0557349 0.106693 -0.147396 -0.207864 2 2 -7.88453 0.513056 11 11 5 0.0870303 0.876567 0.793594 0.998212 0.45876 0.483647 0.145932 -0.0387792 0.141663 0.244749 0.266349 -0.723281 0.252806 0.377457 0.715185 0.224691 0.0705945 -0.137113 0.0437709 0.138252 0.219389 0.0787306 -0.370988 -0.0750801 -0.195719 -0.439173 -0.939156 -0.544703 -0.349111 -0.0520554 -0.243945 -0.42009 -0.0592941 -0.283045 -0.0497649 0.34385 0.649973 0.284616 0.67763 0.947476 0.206398 -0.473866 -0.337845 -0.0472648 0.0913235 0.235183 0.423752 0.575496 0.26657 -0.368886 -0.732101 -0.843093 -0.933578 -0.359519 0.0389463 0.250323 0.683425 0.51821 0.115701 0.153356 -0.193809 -0.119706 0.088534 -0.037526 -0.0404794 -0.0888301 0.226402 0.316046 0.229668 -0.188083 0.101709 -0.345876 -0.284125 0.119693 -0.0471321 0.110948 0.0115234 -0.88835 -0.420714 -0.429151 -0.568916 -0.446627 -0.659274 -0.211564 0.192955 -0.102256 0.136067 -0.0350802 -0.617145 -0.127039 -0.316476 -0.417276 -0.454131 -0.618792 -0.095914 0.261352 0.195795 0.241636 0.415785 -0.167571 -0.0203087 -0.221107 -0.540567 -0.363993 -0.0926865 -0.228237 -0.00534642 -0.17455 0.380086 0.491846 0.242046 0.261544 0.0785319 0.305488 0.360545 0.104017 0.0550264 0.0888383 -0.0651526 0.141756 0.413792 3 11 11 3 2 0 -8.49405 1.66292 11 11 5 0.0905568 0.146653 -0.17008 -0.236743 0.331203 0.541889 0.312458 -0.0175007 -0.0658408 -0.32294 -0.35706 -0.326579 -0.230949 -0.33931 -0.454708 -0.527614 0.00367584 -0.0992772 -0.0811047 -0.263401 -0.455058 -0.435132 -0.19276 -0.22059 -0.306701 -0.328618 -0.554 -0.465823 -0.511761 -0.140349 -0.287101 -0.37304 -0.525936 -0.0753588 -0.229936 -0.284206 -0.292191 -0.126498 0.141272 0.0520807 -0.281332 -0.444665 -0.382583 -0.311344 -0.0857124 -0.0341699 0.155539 0.295787 0.298328 0.471612 0.894331 0.297185 0.00915605 -0.10329 -0.34281 0.0741893 0.276999 0.53132 0.870399 1.0088 0.766726 0.00914047 -0.278608 -0.469367 -0.500783 -0.222443 -0.362468 -0.0733873 0.156987 0.277167 0.206912 -0.0571558 -0.345019 -0.453912 -0.368915 -0.217137 0.188317 -0.572422 -0.259814 0.000751176 0.138724 0.0436558 -0.250807 -0.529838 -0.505986 -0.462483 -0.332614 0.153503 -0.36603 -0.135805 0.219881 0.433481 0.374547 0.090323 -0.275398 -0.35428 -0.107194 0.0319003 0.280558 -0.108385 0.00623251 0.311777 0.514103 0.413426 0.267714 0.047881 0.0444828 0.297202 0.375416 0.331609 -0.0272869 0.243672 0.440315 0.737599 0.794747 0.716657 0.694963 0.684346 0.761896 0.662459 0.399073 2 1 -7.3157 1.61771 11 11 5 -0.968739 0.0382756 0.302995 0.0412599 -0.217071 -0.16545 -0.426161 -0.18993 -0.087102 0.419367 0.500236 0.337419 0.565537 0.861368 0.987775 0.608155 0.131471 0.0408534 0.187288 0.292098 0.411041 0.531171 0.518454 0.855065 0.591061 0.684592 0.596695 0.609184 0.231299 0.163413 0.376237 0.646501 0.873328 0.558443 0.730731 0.285605 -0.204234 -0.368109 0.40843 0.567262 -0.179596 -0.337468 0.0254393 0.245914 0.0147553 -0.0695135 0.00953835 0.0601891 0.393655 -0.0746161 -0.21235 0.0428746 -0.302582 -0.509228 -0.140256 -0.336612 -0.267595 -0.549093 -0.334236 -0.0837647 0.672686 0.495808 -0.392112 -0.429005 -0.167093 0.206903 -0.430886 -0.616931 -0.709584 -0.532799 -0.198569 0.0163095 0.273598 0.106797 -0.134464 0.0103214 0.282371 -0.16409 -0.373696 -0.408761 -0.156934 0.258574 0.320851 0.0494903 -0.0953718 -0.164044 -0.071584 -0.0696761 -0.146652 -0.277692 -0.311845 -0.231536 -0.0222296 0.148752 0.00620897 -0.139748 -0.175635 -0.0240841 0.00887669 -0.165161 -0.338497 -0.392422 -0.378337 -0.227545 0.0128122 -0.223426 -0.426129 -0.292416 -0.219444 0.132328 -0.252161 -0.447504 -0.518581 -0.502564 -0.467318 -0.231919 -0.409838 -0.246452 -0.349607 -0.312916 0.123307 2 2 -7.39386 0.311777 11 11 5 0.629309 0.27192 -0.141006 0.129716 0.380356 0.639451 0.82978 0.704584 0.552858 0.259199 0.0247569 -0.0853067 -0.0223457 0.125654 0.00616018 0.130457 0.56433 0.484593 0.655856 0.180372 0.0392614 0.198195 -0.50092 -0.246494 -0.142753 -0.179576 -0.206199 -0.332248 0.00280475 0.0297254 -0.0667237 -0.400255 -0.179521 -0.205543 -0.197934 -0.24292 -0.271437 -0.0320555 -0.0379989 -0.0108415 -0.267043 -0.157722 0.365142 0.598446 0.00206493 0.134787 -0.329291 -0.28471 -0.242443 0.33363 1.13179 0.860041 0.537551 0.225264 -0.380201 0.443817 0.189747 0.0366593 0.345529 0.503815 0.456689 0.0368648 0.0162579 0.0371419 -0.559395 -0.67694 -0.121921 0.00724586 0.324707 0.418948 0.501987 0.655061 0.336676 0.223658 0.468338 -0.205547 0.067232 -0.735623 -0.783288 -0.395621 -0.47163 -0.291079 -0.196011 -0.0812062 -0.160532 -0.37918 -0.729478 -0.24575 -0.581325 -0.793049 -0.440151 -0.2343 -0.0781946 -0.202622 -0.462791 -0.525029 -0.600276 -0.0932588 0.226296 -0.212735 -0.282957 -0.205681 0.109163 -0.31899 -0.298387 -0.450067 -0.431352 -0.147555 0.0213245 -0.025615 -0.0704264 -0.289644 -0.0549344 0.338191 0.599047 0.304528 0.102494 0.216405 0.123472 0.123721 -0.267039 3 11 11 3 2 0 -14.1039 2.55771 11 11 5 0.22648 0.195346 0.513238 0.852163 0.55178 -0.168837 0.126846 0.26404 0.519856 0.548292 0.174975 -0.115437 0.0269496 0.186526 0.504668 -0.386423 -0.825465 -0.203175 0.229273 0.242825 0.096469 -0.343646 -0.191282 -0.104531 -0.104251 -0.197873 -0.639202 -1.04834 -0.6262 -0.123054 0.0793274 0.0976312 -0.1903 0.216741 0.0730626 -0.52548 -0.659009 -0.60737 -1.27701 -1.16879 -0.312392 -0.0881822 0.11099 -0.131903 0.452272 -0.0456865 -0.499265 -0.266094 -0.358624 -0.705488 -1.11289 -0.402283 -0.00826857 -0.202413 -0.255014 0.252512 -0.100664 0.193116 0.895911 1.02006 0.883197 0.0918796 -0.306843 0.143458 0.22577 -0.244397 -0.307138 -0.29006 0.240453 0.66151 0.690926 0.745222 0.607885 0.530529 0.335201 0.0469624 -0.208118 -0.653693 -0.501768 -0.151314 0.0668341 0.113759 0.291778 0.421541 0.215649 0.0553073 -0.197097 -0.344065 -0.500947 -0.503078 -0.325155 -0.252153 -0.00865403 0.20753 0.379753 0.147191 -0.135155 -0.310706 -0.557069 -0.275269 -0.358126 -0.219492 -0.105018 0.14346 0.39596 0.494951 0.388215 -0.0216771 -0.191193 -0.429532 0.120182 0.0550036 0.152546 0.260449 0.412403 0.684626 0.696849 0.6843 0.577623 0.366109 0.20619 2 1 -11.1437 2.39631 11 11 5 -0.103739 -0.263283 -0.92116 -1.07029 0.236045 0.0795271 -0.0607736 -0.272916 0.0527151 0.0358129 -0.198823 0.0710527 -0.571553 -0.888855 0.0539616 0.855678 -0.0713388 -0.156093 0.169823 0.112597 0.27727 -0.0259331 -0.0100691 -0.414204 -0.0370633 0.645814 1.35759 0.567033 0.227807 0.218606 -0.0546216 -0.214831 0.00191718 -0.317147 -0.00265337 0.717305 0.761936 1.3012 1.03457 -0.0832915 -0.00451484 0.135528 0.17448 0.0852195 -0.241482 -0.105103 0.057034 0.49425 0.722226 0.89143 0.0511655 -0.245993 0.225867 0.554074 0.490269 -0.463732 -0.306502 0.366152 0.448386 0.204841 0.742333 0.968513 0.230357 0.110252 0.127586 0.0567255 -0.729407 -0.521826 -0.50308 -0.543388 -0.771744 -0.872768 -0.607694 -0.370382 0.122383 0.20139 0.0345055 -0.242955 -0.267887 -0.383682 -0.368505 -0.429529 -0.469727 -0.249165 0.021463 0.19199 0.216352 -0.134567 0.103821 0.0672127 -0.114004 -0.297768 -0.360884 -0.246004 -0.0167968 0.304178 0.0978975 0.146121 0.0597745 0.120489 0.0772832 0.0242626 -0.0821711 -0.164561 -0.163626 -0.0578352 0.145567 0.220531 0.0599022 -0.0714797 0.0472746 -0.035611 -0.0825371 -0.231237 -0.19852 -0.19364 -0.298054 -0.404862 -0.258356 -0.124194 -0.202925 2 2 -11.5005 0.862103 11 11 5 0.0588111 0.0677171 0.482135 1.24007 0.673035 0.0195084 -0.152153 0.0280716 0.363211 0.822577 0.575356 0.0157172 0.338889 0.22854 0.970871 0.148712 -0.366957 0.0151411 -0.0760517 0.333097 0.561556 0.399591 0.176522 0.659573 0.377704 0.445604 0.14517 -0.357293 -0.0491965 -0.0483476 0.287294 0.461903 0.30385 0.371226 0.36167 -0.418576 -0.509909 0.169137 -0.367257 -0.682245 0.0957507 -0.0480347 0.184178 0.177984 0.736538 -0.405527 -1.32984 -1.02727 -0.597907 -0.647375 -0.699579 -0.154992 0.161259 0.0847424 0.0784042 0.888364 -0.409826 -0.703284 0.0637779 -0.0379969 -0.0244808 -0.560221 -0.521188 0.00999371 0.459122 0.144256 0.438303 -0.303545 -0.0103436 0.557388 0.388542 0.489697 0.321295 0.155852 0.445376 0.225878 0.222798 -0.163284 -0.266013 -0.236138 -0.0434979 -0.107196 0.0253744 0.336163 -0.0610884 0.041081 0.327145 0.377842 -0.317058 -0.580237 -0.203117 -0.384486 -0.351621 -0.128514 0.304925 0.156631 -0.00661407 0.290949 0.0545861 -0.558508 -0.569132 -0.569119 -0.742851 -0.241929 0.055088 0.0828546 0.153306 -0.215844 -0.176928 -0.216938 -0.234003 -0.434731 -0.635499 -0.506222 -0.246535 -0.029548 -0.00209434 -0.102488 -0.0868128 -0.302803 -0.407461 3 11 11 3 2 0 -13.3864 2.65891 11 11 5 -0.221171 0.170099 0.534337 0.491001 0.288473 0.212264 0.432354 0.751155 0.481967 0.127541 -0.0075722 -0.155468 0.142646 0.452451 0.13641 0.071871 0.0753591 0.413669 0.618622 0.331985 0.0455409 0.0233557 -0.179579 -0.0691286 0.0835672 -0.107131 0.0840386 0.412725 0.638259 0.741458 0.379581 0.0310331 -0.0270411 -0.316375 -0.213387 0.0722536 0.195373 0.652647 0.852652 0.871342 0.507253 0.0905907 -0.150055 -0.298369 -0.374198 -0.179963 0.115657 0.348811 0.27592 -0.125875 -0.577971 -0.603644 -0.534245 -0.437632 -0.8175 -0.367922 -0.489638 -0.296997 -0.579267 -1.10557 -1.60908 -1.16685 0.0788261 0.151819 0.079242 -0.42572 0.165952 0.0406146 -0.321225 -0.489725 -0.579584 0.233071 0.438322 0.583234 0.581801 0.486182 0.0799827 0.405476 0.338375 -0.189016 -0.558321 -0.277606 0.0773899 0.340129 0.388048 0.221124 0.110302 -0.212746 0.361517 0.417913 -0.240295 -0.51367 -0.129975 0.234282 0.0461997 -0.117791 -0.239487 -0.216928 -0.251474 0.08335 0.358946 0.0256112 -0.363603 -0.0250159 0.233311 0.134606 -0.275267 -0.503464 -0.413026 -0.31163 -0.0287256 0.19688 -0.037285 -0.16881 -0.0861665 0.174548 0.125529 -0.210491 -0.423679 -0.503925 -0.220567 2 1 -11.3076 2.34867 11 11 5 -0.31687 -0.45613 -0.299313 -0.133888 -0.233509 -0.306481 -0.480282 -0.577185 -0.64734 -0.605826 -0.587762 -0.0162228 -0.0976969 -0.0880509 -0.149829 -0.354445 -0.536068 -0.599922 -0.465979 -0.344978 -0.444013 -0.540831 0.111327 -0.0488668 -0.21538 -0.407122 -0.541143 -0.482957 -0.154987 0.00584555 0.270488 -0.0525431 -0.165761 0.00619594 -0.175398 -0.388044 -0.279121 0.0312783 0.371043 0.557193 0.539404 0.408042 0.0676746 0.0727734 -0.00930501 0.198169 0.430276 0.78345 0.991897 1.37406 1.09117 0.221397 0.0838561 0.00396636 0.100722 -0.271499 -0.0583806 0.053485 -0.0468858 0.462101 0.429817 0.131575 -0.0994657 -0.0806073 0.480223 0.580051 -0.16144 0.183527 0.478119 0.491006 0.276416 -0.470385 0.126938 0.531651 0.519293 0.486714 0.425557 -0.311159 0.412377 0.755386 -0.0147944 -0.498026 0.0241872 0.13581 0.0971643 0.273759 0.551848 0.431449 -0.612666 -0.042976 0.431101 -0.275099 -0.512962 -0.534299 -0.302782 -0.0595555 -0.134678 -0.206336 -0.149597 -0.471059 -0.190467 0.178505 0.19982 -0.231838 -0.0585824 -0.0455177 0.122799 -0.029438 -0.257007 -0.0200403 -0.258139 -0.0995772 0.097875 0.15868 -0.0282796 0.192831 0.186121 0.151652 0.00826098 -0.109074 0.0595258 2 2 -14.5462 2.26144 11 11 5 -0.432294 -0.477465 0.100525 0.26546 -0.251392 -0.803566 -0.523842 0.434065 0.580436 0.158962 -0.0773861 0.120203 -0.0159093 0.664327 0.337035 -0.0438925 -0.485133 -0.14553 0.373538 0.703683 0.26341 0.357988 0.247235 0.247221 0.0107259 -0.585705 -0.519035 -0.310497 -0.00961907 0.589851 0.918528 0.525553 0.640044 0.182715 0.14117 0.0859729 -0.153323 0.559015 0.870957 1.00526 0.87138 0.631739 0.909474 0.879258 0.100711 0.195958 0.437949 0.986951 1.32671 0.847166 -0.0772814 -0.493069 -0.223423 -0.114697 -0.325345 -0.486613 -0.191225 0.00636891 -0.205878 -0.532993 -0.832594 -1.11215 -0.409427 -0.432331 -0.442666 -0.805741 -0.285227 -0.033372 -0.024467 -0.0931161 -0.467598 -0.175428 0.0186661 0.0573035 0.0824232 0.00290164 0.0182963 -0.317407 0.13635 -0.228309 -0.502733 -0.499145 -0.240992 0.0208209 0.300393 0.172511 0.128699 -0.209036 -0.0345523 0.158698 -0.117798 -0.412431 -0.191288 0.15708 -0.0173033 0.262937 0.0462482 0.057522 -0.213964 -0.168179 0.413208 0.143827 -0.342367 -0.254733 0.0715022 -0.0108874 0.221377 -0.0891724 0.0451897 -0.414058 -0.514518 -0.244752 -0.318038 -0.240484 -0.346294 -0.0732193 0.0221017 -0.0244466 -0.359252 -0.444815 -0.686191 3 11 11 3 2 0 -11.8216 2.36044 11 11 5 -0.116674 0.0584312 0.46834 0.594053 0.252705 0.0291036 -0.437731 -0.684702 -0.283564 0.142924 0.452242 0.366828 0.564086 0.759603 0.72848 0.132307 0.171591 0.0659858 -0.238762 -0.107151 0.05526 0.202308 0.221998 0.44878 0.560101 0.498705 -0.152337 0.0291567 0.404045 -0.0133851 -0.082109 -0.0575704 -0.0632233 0.324449 0.570621 0.568653 0.508406 0.313737 0.300759 0.312503 -0.0918627 -0.133211 -0.16207 -0.157563 0.253015 0.364942 0.166764 -0.117186 -0.246038 -0.425018 -0.886058 -0.795137 -0.37562 -0.231002 -0.304273 -0.444712 -0.479516 -0.69249 -0.723677 -1.00016 -1.43299 -1.1295 -0.797873 -0.0975201 -0.132611 -0.171621 -0.381798 -0.127987 0.467067 1.21954 0.955957 0.436239 0.337912 0.0741081 0.136128 -0.0141337 0.0168517 -0.414185 -0.0213638 0.506033 0.408772 0.361031 -0.0393218 0.0406143 0.00545891 0.0108196 0.00334506 0.129132 -0.239201 -0.105859 0.0265022 -0.0533533 -0.105178 -0.172958 -0.102022 0.04796 0.100412 0.237774 0.166987 -0.191145 0.0602396 -0.105193 -0.31313 -0.431853 -0.356367 -0.185394 0.0213778 0.107045 0.24772 0.224148 -0.120741 -0.043326 -0.243514 -0.471464 -0.424184 -0.278817 -0.0730989 0.192754 0.189697 0.286142 0.371844 2 1 -10.7136 1.65442 11 11 5 -0.436673 -0.49943 -0.785282 -0.814992 -0.745298 -0.709131 -0.22869 -0.224431 -0.0521053 0.150517 0.19935 -0.669122 -0.744621 -0.950419 -0.72912 -0.81235 -0.772049 -0.506072 -0.418871 -0.3172 -0.149306 0.0790369 -0.706898 -0.639514 -0.513787 -0.23216 -0.194199 -0.335707 -0.113289 -0.0555143 -0.278532 -0.0921978 0.0698771 -0.117802 0.108911 0.303423 0.344591 -0.171685 -0.161669 0.401979 0.383273 0.197772 0.23177 0.225266 0.785351 0.672041 0.557913 0.399867 0.270765 0.331025 0.471046 0.150613 0.284749 0.222775 0.310522 0.42124 0.582812 0.25355 -0.174036 -0.155539 -0.281248 0.141117 0.223514 0.282775 0.28285 0.444191 0.524379 0.377298 0.429333 0.0764187 0.200751 0.442396 0.906809 0.465763 0.304012 0.250542 0.241911 0.236711 0.0456747 0.264982 0.557256 0.305882 0.529736 0.514323 0.27637 0.137659 -0.0116909 0.090705 -0.65728 -0.350979 0.186185 0.37736 0.00805611 -0.00416345 -0.00683827 -0.0511144 0.0279192 0.146834 -0.0224164 -0.31745 -0.368099 -0.2224 -0.364884 -0.397147 -0.359523 -0.00106176 -0.0420612 0.0963222 0.153975 0.110758 -0.0591026 0.103685 -0.0682293 -0.161769 -0.247345 -0.203057 -0.0930667 0.114748 0.214613 0.245685 0.0490949 2 2 -14.5993 2.34825 11 11 5 -0.625012 -0.994139 -0.111876 0.809904 0.139505 0.0709223 -0.397381 -0.953539 -0.192977 -0.0322482 0.389133 -0.32013 -0.524713 0.437921 0.768862 0.160538 -0.0196177 0.0518952 -0.576803 -0.0947764 0.0201177 0.211793 -0.101604 0.0049699 0.217366 0.479912 -0.33987 -0.145302 0.714145 0.101079 -0.102057 -0.21048 -0.0307631 -0.0356976 0.357772 0.625863 0.827786 0.911223 1.25553 1.28342 0.543921 0.218105 -0.0423606 -0.100578 0.699171 0.679305 0.426631 0.584546 0.744769 0.77526 0.373248 -0.0815485 0.0270577 0.002556 0.0980168 -0.290698 -0.410683 -1.06157 -0.837721 -0.918303 -0.87844 -0.927382 -0.689141 -0.162817 -0.127038 -0.229746 0.125395 -0.0507048 -0.0780146 0.432985 0.162518 0.246441 -0.0491244 -0.147586 -0.239769 -0.247029 -0.131133 -0.211089 -0.0698071 0.399063 0.343278 0.16541 0.0251959 0.0358277 -0.157148 -0.193035 -0.179639 -0.124767 -0.122704 0.0667504 0.119742 0.182265 0.0698467 -0.109648 -0.136446 -0.294112 0.0358457 -0.12579 -0.058529 -0.0929232 0.334476 0.30659 -0.112891 0.0460108 -0.196433 -0.134878 -0.178466 0.00102851 -0.188692 -0.0370846 -0.0864085 0.0913933 0.0355901 -0.211769 -0.105548 -0.58718 -0.457293 -0.366664 -0.219886 -0.087884 0.1192 3 0 0 0 3 0 12887712 0 3 11 11 3 2 0 -13.085 1.84256 11 11 5 -0.0989187 0.19906 0.491586 0.669641 0.22526 0.0347991 -0.289197 -0.510856 0.0493725 0.362975 0.53603 0.276803 0.385622 0.293515 0.362859 0.0319906 -0.157372 -0.18248 -0.380515 0.197929 0.342233 0.317059 -0.295933 0.227588 0.14193 0.228963 -0.222816 -0.192284 -0.181841 -0.2655 0.0811877 0.0996456 0.109541 -0.315246 0.0463575 0.249666 0.236533 0.05431 0.0382853 -0.2614 -0.397098 -0.0926063 -0.090777 0.0308717 -0.547816 -0.750961 -0.249494 0.349434 0.43228 0.0612489 -0.671895 -0.683036 -0.331816 -0.27739 -0.0242733 -0.577156 -0.628226 -0.821094 -1.15545 -1.54462 -1.30541 -0.493939 -0.192527 -0.218035 -0.248554 -0.0383897 0.343998 0.827684 1.09238 0.867063 0.477123 0.539676 0.516026 0.0320339 -0.253412 -0.159345 0.00567257 0.804828 0.769468 0.68501 0.382751 0.107978 0.157849 -0.137865 -0.411723 -0.148422 -0.0251465 0.112167 0.551205 0.350861 -0.024187 -0.358621 -0.391945 -0.292652 -0.299616 0.00390503 0.117256 0.297262 0.0549004 0.259039 -0.0799518 -0.406649 -0.753032 -0.753376 -0.534597 -0.078923 0.247988 0.307917 0.290257 0.0441494 0.349384 0.193896 0.00275729 -0.164832 0.0444975 0.202219 0.355643 0.508389 0.389218 0.406304 0.105881 2 1 -8.27077 0.85125 11 11 5 -0.356754 -0.603678 -0.698964 -0.392078 -0.385717 -0.284346 -0.120139 -0.159709 -0.116889 0.0893822 0.223161 -0.506906 -0.635518 -0.333337 -0.0651472 -0.581392 -0.224788 0.0714501 0.21064 0.072196 -0.0148894 0.051972 -0.233136 0.127143 -0.112682 -0.00202685 0.0744432 0.321272 0.664229 0.531456 0.0624345 0.15227 0.00644695 0.79375 0.456782 0.150288 0.402825 0.279392 0.150378 0.727307 0.229335 0.369301 0.219366 -0.108025 1.29925 0.930434 0.539978 0.104348 0.175735 0.591008 0.808086 0.644446 0.374815 -0.0313533 0.0532705 -0.0648791 0.0861026 0.0688732 -0.262122 -0.444485 -0.129702 0.235974 -0.00985348 -0.253964 -0.029264 0.321434 -0.100756 0.297639 0.417382 0.575743 0.50846 -0.0771051 -0.400784 -0.277756 -0.0616891 0.166295 0.26712 -0.49058 -0.560224 -0.491527 -0.661927 -1.07263 -0.95145 -0.675713 -0.322334 0.0791584 0.200444 0.167141 -0.571497 -0.2104 0.109601 0.0530558 -0.322502 -0.36657 -0.149056 0.285051 0.0297366 0.350408 -0.222355 -0.0458047 0.133213 0.0632379 -0.163536 -0.221431 -0.199599 0.0796713 -0.0031331 0.0800555 0.181077 -0.0590627 -0.146511 -0.0293028 -0.120948 -0.0914788 -0.0435951 -0.0646039 -0.287852 -0.325538 -0.0665676 0.181004 0.121102 2 2 -15.4135 1.95709 11 11 5 -0.161585 -0.178641 0.275317 0.877696 0.462955 0.230765 0.159481 -0.252037 -0.119741 -0.0177116 0.256224 -0.185721 -0.125919 0.264727 0.703974 0.422908 0.136145 0.209975 -0.372358 -0.248628 0.220723 0.344301 -0.0221966 0.249413 0.226164 0.458489 0.0774468 -0.00134766 0.174255 -0.00718506 0.0251693 0.278638 0.253398 0.0649072 0.310344 0.45347 0.580671 0.327415 0.283992 0.255437 -0.0522397 0.222594 0.1164 0.0910145 -0.0544715 0.0337365 0.407562 1.01008 0.910122 0.785072 -0.176397 -0.157532 -0.0514101 -0.0878471 -0.0163072 -1.00922 -1.02455 -1.16133 -1.36318 -1.65098 -1.57508 -0.769536 -0.0976404 -0.305537 -0.209674 0.0662815 -0.189628 0.194153 0.721399 0.57232 0.245114 0.632564 0.767707 0.0684554 -0.308036 -0.320337 -0.160165 0.30145 0.446776 0.437973 0.352423 0.213922 0.278673 -0.196641 -0.365444 -0.147012 -0.222991 0.00382937 0.174062 0.330789 0.168102 0.105423 0.28921 0.172634 -0.260279 -0.25879 -0.0452983 -0.0863971 -0.125437 -0.23058 -0.0952683 0.138486 -0.169792 -0.276343 -0.460084 -0.437943 0.0516539 -0.311405 0.114382 0.125416 -0.344559 -0.0786672 -0.26396 -0.565359 -0.750731 -0.718538 -0.588339 -0.106287 -0.102621 0.256819 0.251947 3 11 11 3 2 0 -15.3001 2.3487 11 11 5 0.0953178 0.717429 0.642504 0.0230282 -0.146052 -0.0255504 0.233276 0.605788 0.490267 -0.000829569 -0.266021 0.229334 0.657964 0.586993 -0.376102 -0.0281643 0.403516 0.51739 0.752972 0.382508 0.180762 -0.107776 0.0277376 0.222358 -0.0918204 -0.733788 -0.431108 0.123054 0.15216 0.316413 0.160986 -0.0825123 -0.360239 -0.235273 -0.263246 -0.144115 -0.49509 -0.798139 0.135509 0.378997 0.266737 0.0296361 0.0756103 -0.45427 -0.255118 -0.294739 -0.139997 -0.199567 -0.767355 -0.778173 -0.247776 0.262205 0.25005 0.0800288 -0.410318 0.157266 -0.0642542 -0.257078 -0.654831 -1.05877 -1.28249 -1.55939 -0.78576 -0.5157 -0.599982 -0.620943 0.151451 0.103596 0.0204512 0.134682 0.452011 0.659872 0.918992 0.603086 0.0928717 -0.0671164 0.0348774 0.00606898 0.387255 0.713565 0.739195 0.676601 0.544745 0.827563 1.19769 0.441128 0.00585032 -0.0855623 -0.128584 0.123501 0.16848 0.251576 0.374071 0.371403 0.262109 -0.0352341 -0.387675 -0.440688 -0.33044 -0.344888 -0.114041 -0.0688996 0.037495 0.172905 0.15522 -0.148771 -0.624904 -0.644823 -0.502185 -0.139158 -0.285804 -0.133022 -0.0648161 0.162308 0.261313 0.255341 0.0447245 -0.265004 -0.236461 -0.117003 0.187621 2 1 -11.085 1.69634 11 11 5 -0.842703 -0.753393 -0.11201 0.433467 -0.0714589 -0.420745 -0.539473 -0.538303 -0.143669 0.0239648 -0.303466 -0.526815 -0.515968 0.7228 0.126089 -0.257686 -0.328212 -0.300526 -0.184828 -0.236175 -0.251183 -0.223523 -0.612729 -0.180609 0.575933 0.392907 -0.25689 -0.148347 -0.101639 -0.0921075 0.118282 0.473624 0.187305 -0.228111 0.196065 0.628705 0.708807 0.0161042 0.00728838 0.0198446 0.203535 0.430995 0.785575 0.741256 -0.335614 0.503041 0.893496 1.1179 1.22658 0.618946 0.274013 -0.0307519 0.0635922 0.188595 0.399093 -0.227144 0.381343 0.39756 0.119155 0.247181 0.166363 -0.398652 -0.335724 0.0606135 0.348842 0.489403 -0.102782 0.193819 0.258153 0.27504 0.284962 0.362738 0.982501 0.733867 0.0951546 -0.233077 -0.201309 -0.422535 -0.255672 -0.143722 -0.356045 -0.559178 -0.524965 -0.822106 -0.681772 -0.255603 -0.483172 -0.583118 -0.421189 -0.407196 -0.519093 -0.571135 -0.486478 -0.179695 0.163399 0.246552 -0.14764 -0.382088 -0.361432 -0.156381 -0.076566 -0.105458 -0.11456 -0.0857975 0.132217 0.34793 0.366726 0.106315 -0.0876991 0.00589283 0.00963652 -0.130561 -0.13288 -0.0961594 -0.0201425 0.243284 0.216731 0.18557 0.0752518 0.017793 0.0138616 2 2 -15.324 1.79215 11 11 5 -0.531755 0.201061 0.218114 0.115342 -0.223851 -0.201153 -0.0779621 0.4245 0.456924 0.14702 -0.0996816 0.259728 0.583808 0.639687 -0.220512 -0.341701 0.178369 0.207263 0.381553 0.52496 0.335411 0.285614 0.525577 0.270616 0.166873 -0.273899 -0.169337 0.207881 0.138906 0.431831 0.519192 0.384947 0.229019 0.230266 0.0584364 0.244848 0.189302 -0.209693 0.439654 0.391845 0.460198 0.307422 0.508124 0.162631 -0.428359 -0.524012 -0.185964 -0.00929982 -0.0143241 0.277656 0.658255 0.616595 0.635737 0.228623 -0.30577 -0.534849 -0.570856 -0.394635 -0.882751 -1.2661 -1.7053 -1.54 -0.594943 -0.260539 -0.593587 -0.50431 -0.288984 -0.455404 0.0547851 -0.353427 -0.00925801 0.0761078 -0.0357765 0.0753265 -0.19368 -0.0417887 0.38153 -0.300478 -0.0776836 0.294223 0.124367 0.0407048 -0.0399919 0.303451 1.12376 0.63524 0.355783 0.35796 0.0568545 0.245317 0.324639 0.141622 0.106583 0.174701 0.244637 0.243162 0.320588 0.264693 -0.116487 -0.148999 0.171623 0.0771106 0.176751 0.258643 -0.079827 -0.0838102 0.0869074 0.13336 -0.0664879 -0.398203 -0.833523 -0.406114 -0.648688 -0.320276 -0.338059 -0.110381 -0.0914046 -0.243269 -0.391246 -0.695328 -0.660497 5 2 30 1.3 1.1 20 20 20 -1 -1 1 0.350692 3 2 0.00432723 0 1 0.0383819 0 -1 2 7 16 4 2 2 9 16 2 0 0 0 0 0 0.0130762 -1 -2 0.896526 0 -1 8 4 3 14 2 8 11 3 7 0 0 0 0 0 0.262931 2 0.000524346 0 1 0.102166 0 -1 13 6 1 6 2 13 9 1 3 0 0 0 0 0 0.0044573 -1 -2 0.12384 0 -1 4 2 12 8 3 8 2 4 8 0 0 0 0 0 0.691038 2 -0.000927083 1 0 0.19537 0 -1 6 3 1 9 3 6 6 1 3 0 0 0 0 0 0.000339891 -1 -2 0.210144 0 -1 3 7 14 9 3 3 10 14 3 0 0 0 0 0 0.825867 0 -1 2 3.47218 9 2 0.00230257 0 1 0.101838 0 -1 4 7 4 4 2 4 9 4 2 0 0 0 0 0 0.00441743 -1 -2 0.821906 0 -1 9 4 2 16 2 9 12 2 8 0 0 0 0 0 0.195655 2 0.0222032 0 1 0.220541 0 -1 1 1 18 5 3 7 1 6 5 0 0 0 0 0 -0.000172831 -1 -2 0.0732633 0 -1 4 5 13 8 2 4 9 13 4 0 0 0 0 0 0.593148 2 0.00435673 0 1 0.184411 0 -1 1 7 16 9 3 1 10 16 3 0 0 0 0 0 -0.00260329 -1 -2 0.403221 0 -1 2 0 15 4 2 2 2 15 2 0 0 0 0 0 0.806652 2 0.00173096 0 1 0.254833 0 -1 7 5 6 4 3 9 5 2 4 0 0 0 0 0 -0.00781464 -1 -2 0.605707 0 -1 6 3 8 9 3 6 6 8 3 0 0 0 0 0 0.277906 2 -0.00873434 0 1 0.288998 0 -1 8 12 3 8 2 8 16 3 4 0 0 0 0 0 0.000945223 -1 -2 0.761659 0 -1 3 16 2 2 2 3 17 2 1 0 0 0 0 0 0.349564 2 0.0494149 1 0 0.815165 0 -1 14 1 6 12 2 14 1 3 12 0 0 0 0 0 0.00448918 -1 -2 0.280878 0 -1 4 4 12 6 3 8 4 4 6 0 0 0 0 0 0.602777 2 0.0603136 1 0 0.76075 0 -1 0 2 6 15 2 3 2 3 15 0 0 0 0 0 -0.00107629 -1 -2 0.444404 0 -1 5 4 9 6 3 5 6 9 2 0 0 0 0 0 0.143731 2 -0.00950832 1 0 0.531817 0 -1 13 11 6 3 3 13 12 6 1 0 0 0 0 0 0.00766013 -1 -2 0.541105 0 -1 12 12 6 4 2 12 14 6 2 0 0 0 0 0 0.218069 2 0.00764677 1 0 0.115896 0 -1 1 11 6 3 3 1 12 6 1 0 0 0 0 0 -0.000846629 -1 -2 0.234068 0 -1 2 5 5 8 2 2 9 5 4 0 0 0 0 0 0.599038 1 -1 3 5.98449 14 2 -0.00485062 1 0 0.18055 0 -1 5 4 10 4 2 5 6 10 2 0 0 0 0 0 -0.00461417 -1 -2 0.217789 0 -1 2 4 16 12 3 2 8 16 4 0 0 0 0 0 0.801824 2 -0.00243013 0 1 0.114135 0 -1 4 5 12 6 3 8 5 4 6 0 0 0 0 0 0.00041788 -1 -2 0.120309 0 -1 13 7 2 9 3 13 10 2 3 0 0 0 0 0 0.610853 2 0.00100109 0 1 0.207996 0 -1 5 7 2 9 3 5 10 2 3 0 0 0 0 0 0.00105771 -1 -2 0.330205 0 -1 7 1 6 8 3 9 1 2 8 0 0 0 0 0 0.751109 2 0.00123765 1 0 0.276822 0 -1 12 0 4 12 2 14 0 2 6 2 12 6 2 6 0.00035315 -1 -2 0.166829 0 -1 5 8 10 2 2 5 9 10 1 0 0 0 0 0 0.582948 2 -0.0119537 0 1 0.150879 0 -1 5 1 6 4 3 7 1 2 4 0 0 0 0 0 0.0014183 -1 -2 0.439123 0 -1 0 3 9 12 3 3 3 3 12 0 0 0 0 0 0.76466 2 0.0034643 1 0 0.265156 0 -1 9 8 3 12 3 9 12 3 4 0 0 0 0 0 -0.014949 -1 -2 0.229805 0 -1 0 5 20 15 3 0 10 20 5 0 0 0 0 0 0.544217 2 -0.00105068 1 0 0.362284 0 -1 2 2 6 8 2 2 2 3 4 2 5 6 3 4 -0.00407829 -1 -2 0.260126 0 -1 2 1 6 2 2 2 2 6 1 0 0 0 0 0 0.723366 2 0.000542428 0 1 0.384968 0 -1 10 15 6 4 2 13 15 3 2 2 10 17 3 2 -0.00732041 -1 -2 0.296551 0 -1 12 14 2 6 3 12 16 2 2 0 0 0 0 0 0.548031 2 0.00114213 0 1 0.410477 0 -1 5 15 4 4 2 5 15 2 2 2 7 17 2 2 0.00117834 -1 -2 0.723902 0 -1 7 18 1 2 2 7 19 1 1 0 0 0 0 0 0.278728 2 0.0440771 0 1 0.564052 0 -1 4 5 12 10 2 10 5 6 5 2 4 10 6 5 0.00379001 -1 -2 0.594755 0 -1 7 4 8 12 2 11 4 4 6 2 7 10 4 6 0.331202 2 -0.00242914 0 1 0.660323 0 -1 9 11 2 3 3 9 12 2 1 0 0 0 0 0 0.00942623 -1 -2 0.468067 0 -1 3 3 12 12 2 3 3 6 6 2 9 9 6 6 0.206434 2 0.00806303 0 1 0.529885 0 -1 15 11 5 3 3 15 12 5 1 0 0 0 0 0 0.00522408 -1 -2 0.52816 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.190955 2 -0.00706306 0 1 0.138065 0 -1 0 11 5 3 3 0 12 5 1 0 0 0 0 0 0.00568975 -1 -2 0.549064 0 -1 7 18 3 2 3 8 18 1 2 0 0 0 0 0 0.126028 2 0.00124729 0 1 0.237266 0 -1 2 8 16 2 2 2 9 16 1 0 0 0 0 0 0.0495435 -1 -2 0.524017 0 -1 9 6 5 12 2 9 12 5 6 0 0 0 0 0 0.176922 2 -1 4 8.51179 19 2 -0.00493261 1 0 0.199806 0 -1 6 3 8 6 2 6 6 8 3 0 0 0 0 0 2.79181e-05 -1 -2 0.229938 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 0.739321 2 0.00308762 1 0 0.153384 0 -1 10 9 6 8 2 10 13 6 4 0 0 0 0 0 7.46697e-06 -1 -2 0.203686 0 -1 12 5 3 10 2 12 10 3 5 0 0 0 0 0 0.585492 2 0.00187397 0 1 0.20499 0 -1 4 6 3 9 3 4 9 3 3 0 0 0 0 0 0.000933803 -1 -2 0.32342 0 -1 7 4 6 4 3 9 4 2 4 0 0 0 0 0 0.732301 2 0.00191519 0 1 0.304515 0 -1 12 3 8 3 2 12 3 4 3 0 0 0 0 0 -0.00596838 -1 -2 0.293213 0 -1 15 0 3 6 2 15 3 3 3 0 0 0 0 0 0.56213 2 -0.000721156 0 1 0.365804 0 -1 2 12 10 8 2 2 12 5 4 2 7 16 5 4 -0.00596631 -1 -2 0.271216 0 -1 5 5 6 8 2 5 9 6 4 0 0 0 0 0 0.722633 2 0.0308742 0 1 0.441984 0 -1 12 3 8 3 2 12 3 4 3 0 0 0 0 0 -0.0110997 -1 -2 0.361298 0 -1 15 0 3 6 2 15 3 3 3 0 0 0 0 0 0.525145 2 0.00211642 0 1 0.362862 0 -1 0 3 8 3 2 4 3 4 3 0 0 0 0 0 -0.00943174 -1 -2 0.16011 0 -1 2 1 4 4 2 2 3 4 2 0 0 0 0 0 0.705228 2 -0.0035266 0 1 0.130129 0 -1 10 2 3 2 3 11 2 1 2 0 0 0 0 0 -0.00169076 -1 -2 0.178632 0 -1 10 3 3 1 3 11 3 1 1 0 0 0 0 0 0.552153 2 0.000464709 0 1 0.348738 0 -1 7 15 3 4 2 7 17 3 2 0 0 0 0 0 -0.0102156 -1 -2 0.267399 0 -1 4 13 3 6 3 4 15 3 2 0 0 0 0 0 0.666792 2 0.00126347 1 0 0.343786 0 -1 10 5 1 14 2 10 12 1 7 0 0 0 0 0 -0.0118753 -1 -2 0.599534 0 -1 5 4 10 6 3 5 6 10 2 0 0 0 0 0 0.349772 2 -0.0107323 0 1 0.215049 0 -1 5 0 6 3 3 7 0 2 3 0 0 0 0 0 0.00718365 -1 -2 0.627144 0 -1 6 0 3 5 3 7 0 1 5 0 0 0 0 0 0.251954 2 -0.0283409 0 1 0.0824119 0 -1 7 15 6 5 3 9 15 2 5 0 0 0 0 0 -0.000458132 -1 -2 0.591006 0 -1 9 10 2 6 3 9 12 2 2 0 0 0 0 0 0.37052 2 0.00429403 1 0 0.159473 0 -1 8 17 3 2 3 9 17 1 2 0 0 0 0 0 0.0107511 -1 -2 0.598048 0 -1 1 12 7 6 3 1 14 7 2 0 0 0 0 0 0.283251 2 0.0224651 1 0 0.787709 0 -1 9 6 3 7 3 10 6 1 7 0 0 0 0 0 -0.0579885 -1 -2 0.155574 0 -1 16 3 4 9 3 16 6 4 3 0 0 0 0 0 0.523966 2 0.00721109 1 0 0.662037 0 -1 8 6 3 7 3 9 6 1 7 0 0 0 0 0 -0.0483676 -1 -2 0.142472 0 -1 0 5 18 8 2 0 5 9 4 2 9 9 9 4 0.442983 2 -0.0144181 0 1 0.158854 0 -1 13 5 2 10 2 13 10 2 5 0 0 0 0 0 -0.0231564 -1 -2 0.23758 0 -1 12 10 2 6 2 12 13 2 3 0 0 0 0 0 0.521713 2 0.00769853 1 0 0.194173 0 -1 7 0 3 5 3 8 0 1 5 0 0 0 0 0 -0.00562486 -1 -2 0.627841 0 -1 6 5 8 6 3 6 7 8 2 0 0 0 0 0 0.374604 2 -0.000729367 1 0 0.384092 0 -1 10 3 6 14 2 13 3 3 7 2 10 10 3 7 0.000617839 -1 -2 0.310649 0 -1 13 5 1 8 2 13 9 1 4 0 0 0 0 0 0.553785 2 -4.58039e-05 1 0 0.344445 0 -1 4 3 6 14 2 4 3 3 7 2 7 10 3 7 -1.47194e-05 -1 -2 0.272955 0 -1 6 5 1 8 2 6 9 1 4 0 0 0 0 0 0.642895 3 -1 5 8.46802 19 2 -0.00134694 0 1 0.165709 0 -1 8 1 1 6 3 8 3 1 2 0 0 0 0 0 -0.00247748 -1 -2 0.227385 0 -1 2 0 15 2 2 2 1 15 1 0 0 0 0 0 0.698935 2 0.00526328 0 1 0.151207 0 -1 0 7 20 6 3 0 9 20 2 0 0 0 0 0 0.00490753 -1 -2 0.556447 0 -1 10 10 6 8 2 10 14 6 4 0 0 0 0 0 0.160544 2 -0.00232543 0 1 0.188026 0 -1 7 1 3 2 3 8 1 1 2 0 0 0 0 0 -0.00146655 -1 -2 0.31225 0 -1 8 1 2 2 2 9 1 1 2 0 0 0 0 0 0.71654 2 -0.123117 1 0 0.385958 0 -1 4 3 12 9 3 4 6 12 3 0 0 0 0 0 0.00221083 -1 -2 0.245529 0 -1 6 5 9 5 3 9 5 3 5 0 0 0 0 0 0.569571 2 0.00206615 0 1 0.271652 0 -1 5 5 9 5 3 8 5 3 5 0 0 0 0 0 0.000361303 -1 -2 0.229336 0 -1 4 6 6 12 3 4 10 6 4 0 0 0 0 0 0.720863 2 0.0799579 1 0 0.783362 0 -1 13 0 6 18 2 13 0 3 18 0 0 0 0 0 0.00260647 -1 -2 0.554523 0 -1 10 8 1 12 3 10 12 1 4 0 0 0 0 0 0.255069 2 0.0065699 1 0 0.181939 0 -1 3 2 6 10 2 3 2 3 5 2 6 7 3 5 0.00162596 -1 -2 0.352988 0 -1 1 2 4 6 2 3 2 2 6 0 0 0 0 0 0.655282 2 0.0036205 0 1 0.546231 0 -1 9 18 3 2 3 10 18 1 2 0 0 0 0 0 -0.0044392 -1 -2 0.135984 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.541582 2 -0.00905409 0 1 0.111512 0 -1 2 8 2 6 3 2 10 2 2 0 0 0 0 0 -0.000460675 -1 -2 0.584672 0 -1 7 5 6 6 3 7 7 6 2 0 0 0 0 0 0.259835 2 -0.0056621 0 1 0.161057 0 -1 7 19 6 1 3 9 19 2 1 0 0 0 0 0 0.00511658 -1 -2 0.537668 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.173946 2 -0.00213623 0 1 0.190207 0 -1 8 3 3 1 3 9 3 1 1 0 0 0 0 0 -0.00548099 -1 -2 0.327201 0 -1 2 2 16 2 2 2 2 8 1 2 10 3 8 1 0.636484 2 -0.00810619 0 1 0.691485 0 -1 8 11 5 3 3 8 12 5 1 0 0 0 0 0 0.00600487 -1 -2 0.432733 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.696384 2 -0.0870285 0 1 0.859413 0 -1 0 1 6 15 3 2 1 2 15 0 0 0 0 0 -0.00478096 -1 -2 0.0973945 0 -1 2 12 2 3 3 2 13 2 1 0 0 0 0 0 0.458703 2 -0.00221667 0 1 0.255463 0 -1 16 13 1 3 3 16 14 1 1 0 0 0 0 0 0.00136427 -1 -2 0.331909 0 -1 13 7 6 4 2 16 7 3 2 2 13 9 3 2 0.59641 2 -0.00900779 0 1 0.266659 0 -1 7 13 3 6 2 7 16 3 3 0 0 0 0 0 -0.0154941 -1 -2 0.184819 0 -1 7 5 1 14 2 7 12 1 7 0 0 0 0 0 0.624597 2 -0.0042165 1 0 0.537993 0 -1 15 12 2 3 3 15 13 2 1 0 0 0 0 0 0.0432498 -1 -2 0.518303 0 -1 10 5 3 14 2 10 12 3 7 0 0 0 0 0 0.217042 2 0.000287865 1 0 0.261338 0 -1 6 10 2 6 2 6 13 2 3 0 0 0 0 0 0.00123732 -1 -2 0.278653 0 -1 6 5 1 8 2 6 9 1 4 0 0 0 0 0 0.590899 2 0.00195283 1 0 0.261287 0 -1 13 11 2 1 2 13 11 1 1 0 0 0 0 0 -0.00149471 -1 -2 0.591541 0 -1 12 1 6 10 2 15 1 3 5 2 12 6 3 5 0.345578 2 0.00358787 1 0 0.158705 0 -1 3 12 2 3 3 3 13 2 1 0 0 0 0 0 -0.00259387 -1 -2 0.127041 0 -1 9 18 2 1 2 10 18 1 1 0 0 0 0 0 0.597943 4 -1 6 12.5785 27 2 0.00358107 0 1 0.19951 0 -1 1 0 17 9 3 1 3 17 3 0 0 0 0 0 -0.00285524 -1 -2 0.737307 0 -1 1 2 8 8 2 1 2 4 4 2 5 6 4 4 0.292174 2 0.00197585 0 1 0.195642 0 -1 9 5 6 4 2 9 5 3 4 0 0 0 0 0 0.00325831 -1 -2 0.569205 0 -1 10 9 7 10 2 10 14 7 5 0 0 0 0 0 0.183906 2 0.000237117 0 1 0.217167 0 -1 5 5 6 4 2 8 5 3 4 0 0 0 0 0 0.00259425 -1 -2 0.271999 0 -1 0 7 20 6 3 0 9 20 2 0 0 0 0 0 0.715024 2 -0.0250324 0 1 0.182518 0 -1 6 5 9 10 2 6 10 9 5 0 0 0 0 0 0.00630879 -1 -2 0.569984 0 -1 8 4 4 12 2 8 10 4 6 0 0 0 0 0 0.350985 2 -0.00324949 1 0 0.402393 0 -1 6 6 8 3 3 6 7 8 1 0 0 0 0 0 -0.0148857 -1 -2 0.36041 0 -1 3 13 10 6 2 3 13 5 3 2 8 16 5 3 0.7292 2 0.00806232 1 0 0.649149 0 -1 15 1 4 11 2 15 1 2 11 0 0 0 0 0 0.0274057 -1 -2 0.551899 0 -1 5 7 10 10 2 10 7 5 5 2 5 12 5 5 0.265968 2 0.0343686 1 0 0.671251 0 -1 1 1 4 11 2 3 1 2 11 0 0 0 0 0 -0.027293 -1 -2 0.169138 0 -1 1 5 8 12 2 1 11 8 6 0 0 0 0 0 0.432628 2 0.000744521 0 1 0.34051 0 -1 13 7 6 4 2 16 7 3 2 2 13 9 3 2 0.000703363 -1 -2 0.551679 0 -1 11 10 7 4 2 11 12 7 2 0 0 0 0 0 0.331139 2 -0.122755 0 1 0.167532 0 -1 0 4 20 12 2 0 4 10 6 2 10 10 10 6 0.00325599 -1 -2 0.361575 0 -1 1 5 6 15 3 1 10 6 5 0 0 0 0 0 0.642078 2 -0.0320904 0 1 0.292108 0 -1 11 10 3 8 2 11 14 3 4 0 0 0 0 0 0.0032958 -1 -2 0.561303 0 -1 11 12 7 6 3 11 14 7 2 0 0 0 0 0 0.335786 2 -0.00322732 0 1 0.697064 0 -1 9 11 2 3 3 9 12 2 1 0 0 0 0 0 0.00111717 -1 -2 0.354115 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 0.614401 2 -0.01728 1 0 0.553718 0 -1 3 14 14 4 2 10 14 7 2 2 3 16 7 2 0.0117412 -1 -2 0.534196 0 -1 18 7 2 4 2 18 9 2 2 0 0 0 0 0 0.27571 2 0.00464052 1 0 0.248952 0 -1 3 12 6 6 3 3 14 6 2 0 0 0 0 0 -0.016913 -1 -2 0.171193 0 -1 0 4 3 6 3 0 6 3 2 0 0 0 0 0 0.552395 2 0.0100602 1 0 0.827345 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 -0.000607155 -1 -2 0.377939 0 -1 10 7 10 4 2 15 7 5 2 2 10 9 5 2 0.547625 2 -0.00108654 1 0 0.329654 0 -1 7 2 6 8 2 7 6 6 4 0 0 0 0 0 0.00893621 -1 -2 0.606288 0 -1 6 3 6 2 3 8 3 2 2 0 0 0 0 0 0.243422 2 -0.000263727 1 0 0.381409 0 -1 10 6 3 5 3 11 6 1 5 0 0 0 0 0 0.0131101 -1 -2 0.551762 0 -1 9 0 6 19 3 11 0 2 19 0 0 0 0 0 0.372689 2 -0.00298063 0 1 0.122966 0 -1 3 12 1 2 2 3 13 1 1 0 0 0 0 0 -0.00416196 -1 -2 0.725227 0 -1 7 14 5 3 3 7 15 5 1 0 0 0 0 0 0.497346 2 0.0338423 0 1 0.534831 0 -1 2 1 18 4 2 11 1 9 2 2 2 3 9 2 -0.00125646 -1 -2 0.585191 0 -1 10 5 3 8 3 11 5 1 8 0 0 0 0 0 0.438417 2 -0.0196352 0 1 0.229783 0 -1 0 1 18 4 2 0 1 9 2 2 9 3 9 2 -0.000996255 -1 -2 0.629594 0 -1 7 5 3 8 3 8 5 1 8 0 0 0 0 0 0.41316 2 -0.0231271 0 1 0.169546 0 -1 9 5 2 6 3 9 7 2 2 0 0 0 0 0 0.0235257 -1 -2 0.517413 0 -1 10 8 5 2 2 10 9 5 1 0 0 0 0 0 0.0595194 2 -0.0193565 0 1 0.135725 0 -1 2 10 15 1 3 7 10 5 1 0 0 0 0 0 -0.00417871 -1 -2 0.299663 0 -1 2 7 2 6 3 2 9 2 2 0 0 0 0 0 0.57917 2 0.00314888 1 0 0.659259 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 0.00739723 -1 -2 0.530717 0 -1 9 7 4 10 2 9 12 4 5 0 0 0 0 0 0.379512 2 7.19551e-06 0 1 0.312831 0 -1 0 8 8 2 2 0 8 4 1 2 4 9 4 1 0.0471144 -1 -2 0.553789 0 -1 5 9 10 8 2 5 9 5 4 2 10 13 5 4 0.102731 2 0.00728787 0 1 0.466086 0 -1 9 7 2 4 2 9 7 1 4 0 0 0 0 0 -0.00618875 -1 -2 0.715886 0 -1 9 6 3 4 3 10 6 1 4 0 0 0 0 0 0.472445 2 0.00297573 1 0 0.0593457 0 -1 8 3 2 1 2 9 3 1 1 0 0 0 0 0 -0.00184498 -1 -2 0.70273 0 -1 8 6 3 4 3 9 6 1 4 0 0 0 0 0 0.471873 2 0.000102395 0 1 0.589473 0 -1 12 0 4 14 2 14 0 2 7 2 12 7 2 7 0.0024277 -1 -2 0.486236 0 -1 12 5 6 9 2 12 5 3 9 0 0 0 0 0 0.524759 2 -0.0647513 0 1 0.691747 0 -1 0 2 6 16 2 3 2 3 16 0 0 0 0 0 0.000393802 -1 -2 0.466962 0 -1 1 12 4 2 2 1 13 4 1 0 0 0 0 0 0.238241 5 -1 7 14.5468 31 2 0.00143974 0 1 0.277347 0 -1 7 7 6 1 3 9 7 2 1 0 0 0 0 0 -0.000540686 -1 -2 0.742715 0 -1 8 3 4 9 3 8 6 4 3 0 0 0 0 0 0.247974 2 -7.1238e-06 1 0 0.21995 0 -1 12 10 4 6 2 12 13 4 3 0 0 0 0 0 -0.0023661 -1 -2 0.588999 0 -1 8 1 8 16 2 12 1 4 8 2 8 9 4 8 0.259572 2 0.00173433 0 1 0.186013 0 -1 4 6 3 6 2 4 9 3 3 0 0 0 0 0 0.00158746 -1 -2 0.415187 0 -1 1 3 6 2 2 4 3 3 2 0 0 0 0 0 0.710347 2 0.00372856 1 0 0.252797 0 -1 9 8 3 12 3 9 12 3 4 0 0 0 0 0 -0.128838 -1 -2 0.1393 0 -1 10 9 7 10 2 10 14 7 5 0 0 0 0 0 0.525451 2 0.00794122 1 0 0.248773 0 -1 3 9 7 10 2 3 14 7 5 0 0 0 0 0 -0.0126617 -1 -2 0.27107 0 -1 7 5 1 14 2 7 12 1 7 0 0 0 0 0 0.661884 2 3.01468e-05 0 1 0.381283 0 -1 13 14 1 6 3 13 16 1 2 0 0 0 0 0 -0.0163302 -1 -2 0.232643 0 -1 14 12 3 6 3 14 14 3 2 0 0 0 0 0 0.526301 2 1.46228e-05 0 1 0.429333 0 -1 6 14 1 6 3 6 16 1 2 0 0 0 0 0 -0.0208587 -1 -2 0.16004 0 -1 3 12 3 6 3 3 14 3 2 0 0 0 0 0 0.678231 2 0.00281946 1 0 0.667929 0 -1 8 13 5 3 3 8 14 5 1 0 0 0 0 0 0.00378994 -1 -2 0.458771 0 -1 9 14 2 3 3 9 15 2 1 0 0 0 0 0 0.717624 2 0.0353446 1 0 0.186408 0 -1 5 1 10 8 2 5 1 5 4 2 10 5 5 4 -0.00115716 -1 -2 0.553826 0 -1 6 4 5 4 2 6 6 5 2 0 0 0 0 0 0.315045 2 -0.00587428 0 1 0.282879 0 -1 1 10 18 1 3 7 10 6 1 0 0 0 0 0 -1.52018e-05 -1 -2 0.587022 0 -1 11 10 4 3 2 11 10 2 3 0 0 0 0 0 0.370482 2 -0.000226819 1 0 0.421893 0 -1 5 11 6 1 3 7 11 2 1 0 0 0 0 0 0.00378457 -1 -2 0.6667 0 -1 3 13 2 3 3 3 14 2 1 0 0 0 0 0 0.246118 2 -8.5296e-05 1 0 0.355759 0 -1 12 12 3 4 2 12 14 3 2 0 0 0 0 0 -0.0443949 -1 -2 0.166555 0 -1 11 10 5 6 3 11 12 5 2 0 0 0 0 0 0.523485 2 0.0010126 0 1 0.288461 0 -1 0 8 16 2 2 0 9 16 1 0 0 0 0 0 -0.00763278 -1 -2 0.296934 0 -1 2 1 3 4 2 2 3 3 2 0 0 0 0 0 0.608011 2 0.00403304 0 1 0.453639 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 0.136767 -1 -2 0.517726 0 -1 5 6 12 6 3 9 6 4 6 0 0 0 0 0 0.144918 2 -0.00500605 0 1 0.761691 0 -1 8 7 3 3 3 9 7 1 3 0 0 0 0 0 -0.0124758 -1 -2 0.215971 0 -1 3 6 12 6 3 7 6 4 6 0 0 0 0 0 0.546019 2 -0.000940123 1 0 0.39263 0 -1 10 5 6 5 3 12 5 2 5 0 0 0 0 0 -0.012192 -1 -2 0.347888 0 -1 5 7 10 2 2 5 7 5 2 0 0 0 0 0 0.554266 2 -0.000549595 0 1 0.606428 0 -1 4 5 6 5 3 6 5 2 5 0 0 0 0 0 -0.000218024 -1 -2 0.569741 0 -1 9 3 2 10 2 9 8 2 5 0 0 0 0 0 0.177971 2 0.00691158 0 1 0.537937 0 -1 3 1 16 2 2 11 1 8 1 2 3 2 8 1 -0.000976317 -1 -2 0.332784 0 -1 9 9 3 2 2 9 10 3 1 0 0 0 0 0 0.546153 2 -0.00878702 0 1 0.211616 0 -1 1 1 16 2 2 1 1 8 1 2 9 2 8 1 -0.0016761 -1 -2 0.663582 0 -1 8 14 1 3 3 8 15 1 1 0 0 0 0 0 0.436586 2 -0.0556949 1 0 0.538742 0 -1 4 5 12 10 2 10 5 6 5 2 4 10 6 5 -0.0198444 -1 -2 0.16028 0 -1 7 13 6 6 2 10 13 3 3 2 7 16 3 3 0.533046 2 -0.000747516 0 1 0.291748 0 -1 8 9 3 2 2 8 10 3 1 0 0 0 0 0 0.0230329 -1 -2 0.560812 0 -1 7 2 6 4 3 9 2 2 4 0 0 0 0 0 0.199798 2 -0.00307003 1 0 0.393831 0 -1 6 6 9 3 3 6 7 9 1 0 0 0 0 0 -0.00116368 -1 -2 0.575744 0 -1 10 7 6 1 3 12 7 2 1 0 0 0 0 0 0.423946 2 0.224643 1 0 0.767655 0 -1 0 0 18 6 3 6 0 6 6 0 0 0 0 0 0.00144121 -1 -2 0.535387 0 -1 6 10 2 6 2 6 13 2 3 0 0 0 0 0 0.251478 2 -0.0300112 0 1 0.23649 0 -1 11 12 3 6 2 11 15 3 3 0 0 0 0 0 -0.053079 -1 -2 0.238586 0 -1 4 4 12 12 2 10 4 6 6 2 4 10 6 6 0.541466 2 0.00208009 1 0 0.651161 0 -1 1 2 3 6 3 2 2 1 6 0 0 0 0 0 -0.00407382 -1 -2 0.603041 0 -1 1 5 3 7 3 2 5 1 7 0 0 0 0 0 0.35877 2 -0.0195294 1 0 0.542359 0 -1 4 13 12 4 2 10 13 6 2 2 4 15 6 2 -0.0533095 -1 -2 0.236095 0 -1 3 3 17 12 2 3 9 17 6 0 0 0 0 0 0.540176 2 -0.0348496 0 1 0.283699 0 -1 3 3 14 12 2 3 3 7 6 2 10 9 7 6 -0.126585 -1 -2 0.181352 0 -1 2 11 16 9 3 2 14 16 3 0 0 0 0 0 0.542105 2 7.33251e-06 0 1 0.398037 0 -1 9 14 3 6 2 9 17 3 3 0 0 0 0 0 -0.0118439 -1 -2 0.261638 0 -1 8 14 4 6 2 10 14 2 3 2 8 17 2 3 0.523773 2 -0.00484707 0 1 0.243811 0 -1 6 2 6 1 3 8 2 2 1 0 0 0 0 0 0.0081694 -1 -2 0.532715 0 -1 9 5 2 5 2 10 5 1 5 0 0 0 0 0 0.819038 2 -0.00647168 1 0 0.467969 0 -1 9 8 3 5 3 10 8 1 5 0 0 0 0 0 -1.51885e-05 -1 -2 0.556391 0 -1 9 12 6 1 2 9 12 3 1 0 0 0 0 0 0.436759 2 0.00306967 1 0 0.666435 0 -1 8 8 3 5 3 9 8 1 5 0 0 0 0 0 -0.000162967 -1 -2 0.559461 0 -1 6 10 4 3 2 8 10 2 3 0 0 0 0 0 0.304271 6 -1 8 18.5723 39 2 -0.00982759 1 0 0.211602 0 -1 0 4 20 6 3 0 6 20 2 0 0 0 0 0 -0.00416939 -1 -2 0.692469 0 -1 1 3 8 6 2 1 3 4 3 2 5 6 4 3 0.304378 2 0.000353413 0 1 0.318329 0 -1 7 15 6 4 2 7 17 6 2 0 0 0 0 0 0.00480545 -1 -2 0.545656 0 -1 3 10 14 10 2 3 15 14 5 0 0 0 0 0 0.252227 2 0.000210712 0 1 0.290262 0 -1 6 4 4 4 2 8 4 2 4 0 0 0 0 0 -0.00283189 -1 -2 0.313046 0 -1 0 4 20 10 2 0 9 20 5 0 0 0 0 0 0.688494 2 -7.56337e-06 1 0 0.296247 0 -1 9 4 2 14 2 9 11 2 7 0 0 0 0 0 -0.000828881 -1 -2 0.309963 0 -1 2 0 16 4 2 2 2 16 2 0 0 0 0 0 0.575252 2 0.00162093 0 1 0.39932 0 -1 4 12 6 8 2 4 12 3 4 2 7 16 3 4 0.0091339 -1 -2 0.482737 0 -1 0 5 6 7 2 3 5 3 7 0 0 0 0 0 0.753783 2 -0.00412123 0 1 0.261693 0 -1 10 7 10 4 2 15 7 5 2 2 10 9 5 2 -0.00254473 -1 -2 0.31087 0 -1 5 8 12 1 3 9 8 4 1 0 0 0 0 0 0.549124 2 -0.000626528 0 1 0.323969 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 -3.65963e-05 -1 -2 0.651741 0 -1 9 4 2 4 2 9 6 2 2 0 0 0 0 0 0.417891 2 0.0138827 1 0 0.67712 0 -1 9 6 3 6 3 10 6 1 6 0 0 0 0 0 0.00104937 -1 -2 0.415951 0 -1 12 7 6 4 2 15 7 3 2 2 12 9 3 2 0.565289 2 0.0182154 1 0 0.76896 0 -1 8 6 3 6 3 9 6 1 6 0 0 0 0 0 -0.0113346 -1 -2 0.287332 0 -1 1 6 18 6 2 1 6 9 3 2 10 9 9 3 0.498893 2 -0.00410976 1 0 0.546301 0 -1 9 1 3 3 3 10 1 1 3 0 0 0 0 0 0.000426129 -1 -2 0.363124 0 -1 10 8 5 2 2 10 9 5 1 0 0 0 0 0 0.551255 2 0.00603015 1 0 0.114377 0 -1 8 1 3 3 3 9 1 1 3 0 0 0 0 0 0.000335877 -1 -2 0.289108 0 -1 5 8 5 2 2 5 9 5 1 0 0 0 0 0 0.544734 2 0.000622795 1 0 0.302343 0 -1 8 6 8 8 2 12 6 4 4 2 8 10 4 4 -0.0258371 -1 -2 0.216701 0 -1 5 7 10 2 2 5 7 5 2 0 0 0 0 0 0.527815 2 0.0217749 1 0 0.325483 0 -1 4 5 12 10 2 4 5 6 5 2 10 10 6 5 0.00176823 -1 -2 0.526305 0 -1 5 5 2 3 3 5 6 2 1 0 0 0 0 0 0.752633 2 -0.0137938 0 1 0.741033 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 -0.00508528 -1 -2 0.683661 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 0.457907 2 0.0061795 1 0 0.744994 0 -1 8 14 3 3 3 8 15 3 1 0 0 0 0 0 0.0100303 -1 -2 0.486078 0 -1 1 10 8 9 3 1 13 8 3 0 0 0 0 0 0.236146 2 -0.00642019 0 1 0.146733 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 -0.00569613 -1 -2 0.234782 0 -1 12 3 3 3 3 13 3 1 3 0 0 0 0 0 0.532338 2 -0.00714982 0 1 0.147706 0 -1 5 3 3 3 3 6 3 1 3 0 0 0 0 0 0.00244507 -1 -2 0.349853 0 -1 5 6 2 12 3 5 10 2 4 0 0 0 0 0 0.580356 2 -0.0375034 1 0 0.525955 0 -1 1 11 18 4 2 10 11 9 2 2 1 13 9 2 0.000477994 -1 -2 0.436288 0 -1 7 12 6 2 2 7 13 6 1 0 0 0 0 0 0.620892 2 -0.00708061 0 1 0.203946 0 -1 6 0 3 6 3 7 0 1 6 0 0 0 0 0 0.032818 -1 -2 0.519836 0 -1 0 11 18 4 2 0 11 9 2 2 9 13 9 2 0.13712 2 0.00065189 1 0 0.632343 0 -1 7 12 6 2 2 7 13 6 1 0 0 0 0 0 0.00464856 -1 -2 0.472016 0 -1 9 12 3 3 3 9 13 3 1 0 0 0 0 0 0.656709 2 -0.00198279 0 1 0.605306 0 -1 9 12 2 3 3 9 13 2 1 0 0 0 0 0 -0.00160113 -1 -2 0.509052 0 -1 8 11 4 3 3 8 12 4 1 0 0 0 0 0 0.311693 2 -0.00305399 0 1 0.34298 0 -1 13 3 4 2 2 13 4 4 1 0 0 0 0 0 0.00043212 -1 -2 0.38384 0 -1 4 0 12 2 2 4 1 12 1 0 0 0 0 0 0.57756 2 -0.0274521 0 1 0.214347 0 -1 6 9 8 8 2 6 9 4 4 2 10 13 4 4 0.000930994 -1 -2 0.595297 0 -1 1 11 6 2 2 1 12 6 1 0 0 0 0 0 0.376016 2 0.00671442 0 1 0.569263 0 -1 2 5 18 8 2 11 5 9 4 2 2 9 9 4 -0.00337017 -1 -2 0.57843 0 -1 7 1 6 10 2 7 6 6 5 0 0 0 0 0 0.397428 2 -0.018904 0 1 0.181889 0 -1 0 3 3 6 3 0 5 3 2 0 0 0 0 0 -0.00658509 -1 -2 0.684911 0 -1 4 5 4 3 3 4 6 4 1 0 0 0 0 0 0.435158 2 0.00588105 1 0 0.272666 0 -1 19 3 1 6 3 19 5 1 2 0 0 0 0 0 0.000800921 -1 -2 0.423643 0 -1 6 15 8 2 2 6 16 8 1 0 0 0 0 0 0.584468 2 0.00185106 1 0 0.337132 0 -1 0 3 1 6 3 0 5 1 2 0 0 0 0 0 0.00632737 -1 -2 0.527022 0 -1 5 5 3 3 3 5 6 3 1 0 0 0 0 0 0.805365 2 -0.00338209 0 1 0.286602 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 -0.0019293 -1 -2 0.588895 0 -1 10 6 6 3 3 12 6 2 3 0 0 0 0 0 0.389579 2 0.0149952 1 0 0.217782 0 -1 8 13 2 6 2 8 16 2 3 0 0 0 0 0 -0.0263308 -1 -2 0.177532 0 -1 9 11 2 8 2 9 15 2 4 0 0 0 0 0 0.567147 2 -0.00417342 1 0 0.465296 0 -1 10 6 6 3 3 12 6 2 3 0 0 0 0 0 0.0272684 -1 -2 0.476831 0 -1 5 15 15 5 3 10 15 5 5 0 0 0 0 0 0.569524 2 0.000988803 1 0 0.33974 0 -1 2 14 2 2 2 2 15 2 1 0 0 0 0 0 -0.00105288 -1 -2 0.625004 0 -1 4 7 6 2 3 6 7 2 2 0 0 0 0 0 0.428841 2 0.00522881 0 1 0.534776 0 -1 8 3 6 1 3 10 3 2 1 0 0 0 0 0 0.0303955 -1 -2 0.411552 0 -1 1 0 18 12 3 7 0 6 12 0 0 0 0 0 0.566075 2 -0.0791139 0 1 0.788132 0 -1 0 14 8 6 2 4 14 4 6 0 0 0 0 0 0.0182317 -1 -2 0.360434 0 -1 0 15 15 5 3 5 15 5 5 0 0 0 0 0 0.556951 2 0.00522881 0 1 0.541664 0 -1 8 3 6 1 3 10 3 2 1 0 0 0 0 0 0.000439228 -1 -2 0.550716 0 -1 11 11 3 6 2 11 14 3 3 0 0 0 0 0 0.388228 2 -0.00086502 0 1 0.318585 0 -1 6 3 6 1 3 8 3 2 1 0 0 0 0 0 0.0010327 -1 -2 0.557836 0 -1 6 11 3 6 2 6 14 3 3 0 0 0 0 0 0.321925 2 -0.00729977 0 1 0.707323 0 -1 9 6 3 4 3 10 6 1 4 0 0 0 0 0 -0.00093629 -1 -2 0.555802 0 -1 12 10 4 7 2 12 10 2 7 0 0 0 0 0 0.461384 2 -0.00604832 0 1 0.686929 0 -1 8 6 3 4 3 9 6 1 4 0 0 0 0 0 0.00675292 -1 -2 0.487032 0 -1 4 6 4 7 2 6 6 2 7 0 0 0 0 0 0.265037 2 0.053078 0 1 0.528152 0 -1 10 3 4 12 2 10 3 2 12 0 0 0 0 0 -0.00102258 -1 -2 0.608588 0 -1 10 8 3 4 3 11 8 1 4 0 0 0 0 0 0.430487 2 0.0312706 1 0 0.544583 0 -1 1 0 18 14 3 7 0 6 14 0 0 0 0 0 -0.00635222 -1 -2 0.532834 0 -1 2 8 6 11 2 5 8 3 11 0 0 0 0 0 0.236432 7 -1 9 21.5781 45 2 -0.00622156 1 0 0.262558 0 -1 1 4 15 4 2 1 6 15 2 0 0 0 0 0 0.00210974 -1 -2 0.156499 0 -1 5 5 10 8 2 5 9 10 4 0 0 0 0 0 0.679288 2 0.0108459 0 1 0.348581 0 -1 14 2 6 8 2 14 2 3 8 0 0 0 0 0 0.000642304 -1 -2 0.369826 0 -1 11 6 6 14 2 14 6 3 7 2 11 13 3 7 0.592166 2 0.000733117 1 0 0.300708 0 -1 9 5 2 12 2 9 11 2 6 0 0 0 0 0 0.00101342 -1 -2 0.362492 0 -1 3 7 4 6 3 3 9 4 2 0 0 0 0 0 0.707243 2 0.0110936 0 1 0.44167 0 -1 14 3 6 6 2 14 3 3 6 0 0 0 0 0 -0.00791275 -1 -2 0.302871 0 -1 15 2 4 4 2 15 4 4 2 0 0 0 0 0 0.541738 2 0.0129053 0 1 0.43745 0 -1 0 2 6 7 2 3 2 3 7 0 0 0 0 0 -0.00424309 -1 -2 0.440159 0 -1 3 6 6 14 2 3 6 3 7 2 6 13 3 7 0.756519 2 -0.000213043 0 1 0.231079 0 -1 4 6 16 8 2 4 10 16 4 0 0 0 0 0 -0.00223086 -1 -2 0.35682 0 -1 10 12 2 8 2 10 16 2 4 0 0 0 0 0 0.575 2 0.00264005 0 1 0.359369 0 -1 7 0 6 20 3 9 0 2 20 0 0 0 0 0 0.075101 -1 -2 0.636357 0 -1 1 7 16 12 2 1 7 8 6 2 9 13 8 6 0.232703 2 -0.0077013 0 1 0.707462 0 -1 9 11 3 3 3 9 12 3 1 0 0 0 0 0 0.00155884 -1 -2 0.570024 0 -1 11 9 4 5 2 11 9 2 5 0 0 0 0 0 0.359045 2 -0.000476879 0 1 0.280544 0 -1 3 3 1 2 2 3 4 1 1 0 0 0 0 0 0.000842347 -1 -2 0.412542 0 -1 7 17 5 3 3 7 18 5 1 0 0 0 0 0 0.6178 2 -0.0128251 1 0 0.540308 0 -1 8 12 4 8 2 10 12 2 4 2 8 16 2 4 -0.000651566 -1 -2 0.563364 0 -1 7 4 10 12 2 12 4 5 6 2 7 10 5 6 0.335654 2 -0.0120062 0 1 0.710951 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 0.00132134 -1 -2 0.490385 0 -1 5 9 4 5 2 7 9 2 5 0 0 0 0 0 0.282458 2 -0.0203074 0 1 0.189137 0 -1 9 9 8 2 2 9 9 4 2 0 0 0 0 0 0.00401809 -1 -2 0.537797 0 -1 14 15 5 2 2 14 16 5 1 0 0 0 0 0 0.311949 2 0.00453153 1 0 0.720676 0 -1 9 14 2 3 3 9 15 2 1 0 0 0 0 0 -0.00443817 -1 -2 0.185467 0 -1 1 7 8 4 2 1 7 4 2 2 5 9 4 2 0.498173 2 0.0015692 1 0 0.263827 0 -1 19 3 1 2 2 19 4 1 1 0 0 0 0 0 -0.00495164 -1 -2 0.687107 0 -1 9 12 2 3 3 9 13 2 1 0 0 0 0 0 0.471469 2 -0.0274297 0 1 0.154829 0 -1 3 14 14 4 2 3 14 7 2 2 10 16 7 2 0.0014182 -1 -2 0.437684 0 -1 5 0 10 2 2 5 1 10 1 0 0 0 0 0 0.632737 2 -0.0130789 0 1 0.316681 0 -1 11 14 4 6 3 11 16 4 2 0 0 0 0 0 -0.00350928 -1 -2 0.619974 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.437969 2 0.0189207 1 0 0.147071 0 -1 7 13 6 6 2 7 13 3 3 2 10 16 3 3 0.00216834 -1 -2 0.580946 0 -1 0 2 1 6 3 0 4 1 2 0 0 0 0 0 0.343195 2 0.00164016 0 1 0.395946 0 -1 6 7 8 2 2 6 8 8 1 0 0 0 0 0 0.000140059 -1 -2 0.324003 0 -1 9 7 6 1 2 9 7 3 1 0 0 0 0 0 0.564665 2 -0.00331376 1 0 0.427453 0 -1 7 1 6 10 2 7 6 6 5 0 0 0 0 0 -0.0029459 -1 -2 0.334167 0 -1 0 2 6 2 2 0 3 6 1 0 0 0 0 0 0.662796 2 0.000136122 0 1 0.404693 0 -1 11 4 2 4 2 11 4 1 4 0 0 0 0 0 0.00060512 -1 -2 0.548406 0 -1 11 10 3 6 2 11 13 3 3 0 0 0 0 0 0.356994 2 -0.017514 0 1 0.182415 0 -1 3 9 8 2 2 7 9 4 2 0 0 0 0 0 -0.018735 -1 -2 0.797182 0 -1 0 0 4 6 2 2 0 2 6 0 0 0 0 0 0.506857 2 0.0120656 1 0 0.216701 0 -1 7 0 6 2 3 9 0 2 2 0 0 0 0 0 -0.00265442 -1 -2 0.658418 0 -1 9 15 2 3 3 9 16 2 1 0 0 0 0 0 0.462824 2 0.00145013 1 0 0.209025 0 -1 3 12 1 2 2 3 13 1 1 0 0 0 0 0 0.010954 -1 -2 0.511231 0 -1 4 5 11 3 3 4 6 11 1 0 0 0 0 0 0.778458 2 0.0157717 0 1 0.513236 0 -1 11 4 2 4 2 11 4 1 4 0 0 0 0 0 -0.0142527 -1 -2 0.174241 0 -1 8 3 6 3 3 10 3 2 3 0 0 0 0 0 0.526715 2 3.04119e-05 0 1 0.341845 0 -1 7 4 2 4 2 8 4 1 4 0 0 0 0 0 0.0234863 -1 -2 0.563127 0 -1 6 3 6 3 3 8 3 2 3 0 0 0 0 0 0.200639 2 0.00522054 1 0 0.624965 0 -1 11 4 4 3 3 11 5 4 1 0 0 0 0 0 -0.0258124 -1 -2 0.320323 0 -1 11 8 2 8 2 11 12 2 4 0 0 0 0 0 0.519933 2 -0.00195267 0 1 0.614071 0 -1 8 7 3 5 3 9 7 1 5 0 0 0 0 0 -0.008147 -1 -2 0.65929 0 -1 9 7 2 5 2 10 7 1 5 0 0 0 0 0 0.371112 2 0.00329624 1 0 0.295211 0 -1 14 11 1 6 3 14 13 1 2 0 0 0 0 0 -0.00139613 -1 -2 0.33208 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 0.552841 2 -0.00410554 0 1 0.171055 0 -1 0 3 2 2 2 0 4 2 1 0 0 0 0 0 -0.0108888 -1 -2 0.335943 0 -1 4 14 5 6 3 4 16 5 2 0 0 0 0 0 0.567491 2 -0.00767684 1 0 0.477324 0 -1 11 4 4 3 3 11 5 4 1 0 0 0 0 0 -0.00977298 -1 -2 0.808105 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.484583 2 0.00604397 1 0 0.6784 0 -1 5 4 4 3 3 5 5 4 1 0 0 0 0 0 -0.000461346 -1 -2 0.551464 0 -1 5 15 4 2 2 7 15 2 2 0 0 0 0 0 0.364236 2 0.0579924 1 0 0.125444 0 -1 15 1 5 9 3 15 4 5 3 0 0 0 0 0 0.00059385 -1 -2 0.442488 0 -1 9 10 3 3 3 9 11 3 1 0 0 0 0 0 0.572846 2 -0.00623535 0 1 0.280504 0 -1 1 6 2 6 3 1 8 2 2 0 0 0 0 0 -0.0127849 -1 -2 0.195091 0 -1 2 4 8 15 3 2 9 8 5 0 0 0 0 0 0.565292 2 0.000419737 1 0 0.616648 0 -1 9 12 3 2 2 9 13 3 1 0 0 0 0 0 0.000806468 -1 -2 0.452658 0 -1 9 12 3 3 3 9 13 3 1 0 0 0 0 0 0.594449 2 -0.0016339 1 0 0.408694 0 -1 7 6 3 5 3 8 6 1 5 0 0 0 0 0 -0.00483 -1 -2 0.279353 0 -1 5 3 6 2 3 7 3 2 2 0 0 0 0 0 0.644494 2 -0.00639921 1 0 0.567166 0 -1 6 1 8 10 2 10 1 4 5 2 6 6 4 5 0.108192 -1 -2 0.531181 0 -1 0 0 20 10 2 10 0 10 5 2 0 5 10 5 0.261436 2 0.000650566 1 0 0.299677 0 -1 6 3 3 1 3 7 3 1 1 0 0 0 0 0 0.0206113 -1 -2 0.448994 0 -1 0 2 6 8 3 2 2 2 8 0 0 0 0 0 0.688828 2 -0.0251291 1 0 0.519686 0 -1 11 10 3 4 2 11 12 3 2 0 0 0 0 0 0.00179229 -1 -2 0.3467 0 -1 12 6 3 8 2 12 10 3 4 0 0 0 0 0 0.553359 2 0.00156262 1 0 0.308144 0 -1 6 10 3 4 2 6 12 3 2 0 0 0 0 0 -0.000618987 -1 -2 0.269387 0 -1 5 6 3 8 2 5 10 3 4 0 0 0 0 0 0.554449 2 0.00481114 0 1 0.558785 0 -1 2 6 18 6 2 11 6 9 3 2 2 9 9 3 0.00224842 -1 -2 0.467211 0 -1 7 14 7 3 3 7 15 7 1 0 0 0 0 0 0.609083 2 -0.0301472 0 1 0.902759 0 -1 0 0 2 12 2 1 0 1 12 0 0 0 0 0 0.275487 -1 -2 0.471983 0 -1 1 2 18 16 2 1 10 18 8 0 0 0 0 0 0.219692 2 0.00368946 1 0 0.627301 0 -1 9 13 5 3 3 9 14 5 1 0 0 0 0 0 0.00729577 -1 -2 0.483922 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 0.690906 2 -0.0562111 0 1 0.173849 0 -1 0 6 18 6 2 0 6 9 3 2 9 9 9 3 -0.00264786 -1 -2 0.630414 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.44743 2 -0.0014534 1 0 0.530254 0 -1 17 4 1 3 3 17 5 1 1 0 0 0 0 0 0.00285409 -1 -2 0.53384 0 -1 12 11 1 9 3 12 14 1 3 0 0 0 0 0 0.379688 2 0.00058243 1 0 0.326984 0 -1 2 4 1 3 3 2 5 1 1 0 0 0 0 0 0.000925095 -1 -2 0.455481 0 -1 5 4 2 3 3 5 5 2 1 0 0 0 0 0 0.635835 8 -1 10 22.5853 47 2 0.0198064 0 1 0.280973 0 -1 1 2 18 3 3 7 2 6 3 0 0 0 0 0 0.000703956 -1 -2 0.311983 0 -1 0 1 20 6 3 0 3 20 2 0 0 0 0 0 0.709031 2 0.00255638 0 1 0.298195 0 -1 7 5 6 3 3 9 5 2 3 0 0 0 0 0 0.00108242 -1 -2 0.302056 0 -1 13 7 6 4 2 16 7 3 2 2 13 9 3 2 0.580881 2 -0.000928938 1 0 0.37381 0 -1 3 1 4 10 2 3 1 2 5 2 5 6 2 5 -0.0180097 -1 -2 0.216313 0 -1 0 4 19 10 2 0 9 19 5 0 0 0 0 0 0.661925 2 0.00235002 1 0 0.29104 0 -1 9 8 3 12 3 9 12 3 4 0 0 0 0 0 0.000818225 -1 -2 0.557862 0 -1 11 18 5 2 2 11 19 5 1 0 0 0 0 0 0.336663 2 0.000620953 0 1 0.407243 0 -1 5 16 6 4 2 5 16 3 2 2 8 18 3 2 0.00096781 -1 -2 0.68596 0 -1 5 18 3 2 2 5 19 3 1 0 0 0 0 0 0.310546 2 0.000480002 1 0 0.333733 0 -1 13 11 3 2 2 13 12 3 1 0 0 0 0 0 9.05386e-05 -1 -2 0.337096 0 -1 8 5 8 4 2 8 5 4 4 0 0 0 0 0 0.545121 2 -0.0439148 0 1 0.262567 0 -1 1 2 18 6 2 1 2 9 3 2 10 5 9 3 -0.00565013 -1 -2 0.605046 0 -1 3 5 14 6 3 3 7 14 2 0 0 0 0 0 0.323242 2 0.00386615 1 0 0.326261 0 -1 18 1 2 6 3 18 3 2 2 0 0 0 0 0 -6.30694e-05 -1 -2 0.581731 0 -1 9 11 6 1 3 11 11 2 1 0 0 0 0 0 0.416439 2 0.0525337 1 0 0.70954 0 -1 0 2 6 11 2 3 2 3 11 0 0 0 0 0 0.00138187 -1 -2 0.529288 0 -1 4 12 2 3 3 4 13 2 1 0 0 0 0 0 0.254139 2 -0.000892641 1 0 0.408534 0 -1 6 12 9 2 3 9 12 3 2 0 0 0 0 0 0.0855795 -1 -2 0.526324 0 -1 9 4 6 15 2 9 4 3 15 0 0 0 0 0 0.30032 2 -0.000183433 1 0 0.402921 0 -1 5 11 6 1 3 7 11 2 1 0 0 0 0 0 -0.00979248 -1 -2 0.352132 0 -1 5 4 6 15 2 8 4 3 15 0 0 0 0 0 0.6664 2 0.0144286 0 1 0.459357 0 -1 14 12 6 7 2 14 12 3 7 0 0 0 0 0 -0.045687 -1 -2 0.147476 0 -1 18 3 2 9 3 18 6 2 3 0 0 0 0 0 0.517863 2 -0.00257631 0 1 0.183728 0 -1 8 1 3 1 3 9 1 1 1 0 0 0 0 0 -0.0383019 -1 -2 0.808266 0 -1 0 12 6 7 2 3 12 3 7 0 0 0 0 0 0.516669 2 0.00289783 0 1 0.479801 0 -1 13 7 6 4 2 16 7 3 2 2 13 9 3 2 -0.00251651 -1 -2 0.33463 0 -1 8 0 10 2 2 8 1 10 1 0 0 0 0 0 0.544445 2 0.00056282 0 1 0.358903 0 -1 1 7 6 4 2 1 7 3 2 2 4 9 3 2 0.00366844 -1 -2 0.598313 0 -1 1 2 3 3 3 1 3 3 1 0 0 0 0 0 0.298396 2 0.00213198 1 0 0.616322 0 -1 9 13 4 3 3 9 14 4 1 0 0 0 0 0 0.00760373 -1 -2 0.521713 0 -1 12 13 7 2 2 12 14 7 1 0 0 0 0 0 0.205416 2 -0.000116681 1 0 0.344667 0 -1 5 12 9 2 3 8 12 3 2 0 0 0 0 0 0.00316595 -1 -2 0.559748 0 -1 6 10 4 8 2 6 14 4 4 0 0 0 0 0 0.267379 2 -0.0225695 0 1 0.690027 0 -1 1 0 18 4 3 7 0 6 4 0 0 0 0 0 0.000271296 -1 -2 0.448664 0 -1 12 0 5 2 2 12 1 5 1 0 0 0 0 0 0.550879 2 -0.0154345 0 1 0.204832 0 -1 7 7 1 12 2 7 13 1 6 0 0 0 0 0 -0.00848617 -1 -2 0.125495 0 -1 6 2 3 4 3 7 2 1 4 0 0 0 0 0 0.506036 2 -0.118075 0 1 0.0676331 0 -1 0 13 20 6 3 0 15 20 2 0 0 0 0 0 -0.00123001 -1 -2 0.56607 0 -1 8 5 12 2 2 14 5 6 1 2 8 6 6 1 0.42922 2 -0.00702904 0 1 0.71364 0 -1 8 14 2 3 3 8 15 2 1 0 0 0 0 0 0.00893252 -1 -2 0.433888 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 0.706088 2 -0.047736 1 0 0.526869 0 -1 12 13 7 6 3 12 15 7 2 0 0 0 0 0 -0.0441556 -1 -2 0.258058 0 -1 6 0 8 12 2 10 0 4 6 2 6 6 4 6 0.540696 2 -0.0259835 0 1 0.190505 0 -1 0 15 9 4 2 0 17 9 2 0 0 0 0 0 -0.00478858 -1 -2 0.255189 0 -1 9 0 2 5 2 10 0 1 5 0 0 0 0 0 0.533908 2 0.00674235 0 1 0.469331 0 -1 9 5 2 6 2 9 5 1 6 0 0 0 0 0 0.0116548 -1 -2 0.526196 0 -1 17 2 3 6 3 17 4 3 2 0 0 0 0 0 0.314543 2 -0.00569827 0 1 0.175685 0 -1 3 11 2 3 3 3 12 2 1 0 0 0 0 0 -0.00729833 -1 -2 0.777473 0 -1 7 13 3 3 3 7 14 3 1 0 0 0 0 0 0.512429 2 0.00790918 0 1 0.528456 0 -1 14 12 5 3 3 14 13 5 1 0 0 0 0 0 -0.00015875 -1 -2 0.38878 0 -1 4 8 14 3 3 4 9 14 1 0 0 0 0 0 0.550117 2 -0.00622359 0 1 0.248983 0 -1 1 12 5 3 3 1 13 5 1 0 0 0 0 0 0.00133089 -1 -2 0.426215 0 -1 1 15 12 2 2 1 15 6 1 2 7 16 6 1 0.593506 2 0.00520553 1 0 0.254522 0 -1 12 11 4 2 2 12 12 4 1 0 0 0 0 0 0.0140652 -1 -2 0.485199 0 -1 9 8 3 5 3 10 8 1 5 0 0 0 0 0 0.702142 2 -0.00673841 0 1 0.714327 0 -1 9 5 2 6 2 10 5 1 6 0 0 0 0 0 0.00334068 -1 -2 0.517573 0 -1 0 2 3 6 3 0 4 3 2 0 0 0 0 0 0.280864 2 -0.0118807 1 0 0.517322 0 -1 12 11 4 2 2 12 12 4 1 0 0 0 0 0 0.00142264 -1 -2 0.450287 0 -1 9 7 3 5 3 10 7 1 5 0 0 0 0 0 0.57957 2 0.00298581 1 0 0.191512 0 -1 4 11 4 2 2 4 12 4 1 0 0 0 0 0 -0.00204816 -1 -2 0.650243 0 -1 8 8 3 5 3 9 8 1 5 0 0 0 0 0 0.455932 2 0.00171227 0 1 0.537625 0 -1 9 3 3 1 3 10 3 1 1 0 0 0 0 0 -0.0169809 -1 -2 0.705623 0 -1 16 5 3 8 3 17 5 1 8 0 0 0 0 0 0.491461 2 -0.00112905 0 1 0.267871 0 -1 8 3 3 1 3 9 3 1 1 0 0 0 0 0 0.00286201 -1 -2 0.441085 0 -1 1 5 3 8 3 2 5 1 8 0 0 0 0 0 0.636832 2 -0.00380658 0 1 0.276356 0 -1 10 1 3 3 3 11 1 1 3 0 0 0 0 0 0.00590903 -1 -2 0.48673 0 -1 17 5 2 4 2 17 5 1 4 0 0 0 0 0 0.672878 2 0.00110044 0 1 0.407051 0 -1 2 8 14 3 3 2 9 14 1 0 0 0 0 0 -0.00233963 -1 -2 0.260495 0 -1 9 7 1 3 3 9 8 1 1 0 0 0 0 0 0.615486 2 -0.00360682 0 1 0.5732 0 -1 6 1 8 10 2 6 6 8 5 0 0 0 0 0 0.0408312 -1 -2 0.497338 0 -1 13 0 6 8 2 16 0 3 4 2 13 4 3 4 0.738701 2 -0.00710823 0 1 0.698475 0 -1 1 5 2 4 2 2 5 1 4 0 0 0 0 0 -0.000937597 -1 -2 0.269117 0 -1 4 2 12 2 2 4 3 12 1 0 0 0 0 0 0.474178 2 -0.00167408 0 1 0.355101 0 -1 8 8 4 4 2 8 10 4 2 0 0 0 0 0 0.0882877 -1 -2 0.524461 0 -1 5 6 12 4 3 9 6 4 4 0 0 0 0 0 0.209665 2 0.000820096 0 1 0.41311 0 -1 1 2 8 1 2 5 2 4 1 0 0 0 0 0 -0.000766246 -1 -2 0.462029 0 -1 1 1 6 10 3 3 1 2 10 0 0 0 0 0 0.677541 2 0.000657697 1 0 0.562828 0 -1 8 6 8 2 2 8 6 4 2 0 0 0 0 0 -0.00213048 -1 -2 0.557686 0 -1 10 7 6 6 3 12 7 2 6 0 0 0 0 0 0.457765 2 -0.000373171 1 0 0.495926 0 -1 4 6 8 2 2 8 6 4 2 0 0 0 0 0 -0.0111722 -1 -2 0.562564 0 -1 4 7 6 6 3 6 7 2 6 0 0 0 0 0 0.204711 2 0.0434352 1 0 0.224215 0 -1 3 14 16 4 2 3 16 16 2 0 0 0 0 0 0.000967362 -1 -2 0.453334 0 -1 8 12 4 2 2 8 13 4 1 0 0 0 0 0 0.619993 2 -0.00314529 0 1 0.666276 0 -1 8 12 3 3 3 8 13 3 1 0 0 0 0 0 0.00152331 -1 -2 0.500799 0 -1 5 12 6 1 2 8 12 3 1 0 0 0 0 0 0.238499 2 0.00208543 1 0 0.37535 0 -1 18 10 2 3 3 18 11 2 1 0 0 0 0 0 0.0360982 -1 -2 0.517717 0 -1 16 8 4 6 3 16 10 4 2 0 0 0 0 0 0.163449 2 0.00161796 1 0 0.258738 0 -1 8 3 2 1 2 9 3 1 1 0 0 0 0 0 -0.000621323 -1 -2 0.629953 0 -1 7 1 3 9 3 8 1 1 9 0 0 0 0 0 0.465879 2 0.000718785 1 0 0.335408 0 -1 5 11 11 6 2 5 14 11 3 0 0 0 0 0 -0.0393395 -1 -2 0.215413 0 -1 12 2 3 14 2 12 9 3 7 0 0 0 0 0 0.523571 2 -0.00109888 0 1 0.64689 0 -1 8 7 3 3 3 9 7 1 3 0 0 0 0 0 0.00211914 -1 -2 0.289309 0 -1 3 5 12 5 3 7 5 4 5 0 0 0 0 0 0.525482 9 -1 11 25.6093 53 2 0.00523599 0 1 0.329971 0 -1 1 2 6 3 2 4 2 3 3 0 0 0 0 0 -0.00221699 -1 -2 0.704159 0 -1 5 5 6 10 2 5 5 3 5 2 8 10 3 5 0.323547 2 -0.00823036 1 0 0.496117 0 -1 16 18 2 2 2 16 18 1 2 0 0 0 0 0 -0.00823036 -1 -2 0.712804 0 -1 16 18 2 2 2 16 18 1 2 0 0 0 0 0 0.496117 2 0.000453433 0 1 0.320847 0 -1 8 4 2 5 2 9 4 1 5 0 0 0 0 0 -0.000417771 -1 -2 0.661392 0 -1 8 4 1 4 2 8 6 1 2 0 0 0 0 0 0.355133 2 0.00278238 0 1 0.371013 0 -1 7 15 12 4 2 13 15 6 2 2 7 17 6 2 -6.03619e-05 -1 -2 0.574639 0 -1 11 18 6 2 2 11 19 6 1 0 0 0 0 0 0.389488 2 0.00350618 1 0 0.30541 0 -1 7 7 4 10 2 7 12 4 5 0 0 0 0 0 0.000170131 -1 -2 0.288558 0 -1 5 6 10 8 2 5 10 10 4 0 0 0 0 0 0.648775 2 -0.00233789 1 0 0.317443 0 -1 11 1 6 12 2 14 1 3 6 2 11 7 3 6 -0.00213692 -1 -2 0.382092 0 -1 5 8 12 1 3 9 8 4 1 0 0 0 0 0 0.523289 2 0.00102504 0 1 0.36228 0 -1 4 7 3 6 3 4 9 3 2 0 0 0 0 0 -4.47262e-05 -1 -2 0.653896 0 -1 4 11 3 4 2 4 13 3 2 0 0 0 0 0 0.400368 2 0.000571023 1 0 0.389317 0 -1 14 16 2 2 2 14 17 2 1 0 0 0 0 0 0.00057743 -1 -2 0.561453 0 -1 15 15 2 2 2 15 16 2 1 0 0 0 0 0 0.368764 2 0.000796921 1 0 0.644303 0 -1 7 12 6 2 2 7 13 6 1 0 0 0 0 0 0.000359459 -1 -2 0.338085 0 -1 8 13 4 2 2 8 14 4 1 0 0 0 0 0 0.582465 2 0.000439739 1 0 0.393877 0 -1 11 1 6 12 2 14 1 3 6 2 11 7 3 6 -0.000890614 -1 -2 0.342797 0 -1 12 2 4 2 2 12 3 4 1 0 0 0 0 0 0.55157 2 0.00541102 1 0 0.380354 0 -1 3 10 12 6 2 3 10 6 3 2 9 13 6 3 -0.000857649 -1 -2 0.643951 0 -1 3 1 6 12 2 3 1 3 6 2 6 7 3 6 0.416835 2 -0.0220006 0 1 0.66546 0 -1 16 6 4 14 2 18 6 2 7 2 16 13 2 7 -0.00787317 -1 -2 0.418272 0 -1 5 1 10 8 2 10 1 5 4 2 5 5 5 4 0.560472 2 -0.0274445 0 1 0.658686 0 -1 0 6 4 14 2 0 6 2 7 2 2 13 2 7 0.00197923 -1 -2 0.324491 0 -1 1 15 12 4 2 1 15 6 2 2 7 17 6 2 0.488287 2 -0.00567837 0 1 0.222908 0 -1 10 17 3 3 3 11 17 1 3 0 0 0 0 0 1.50572e-05 -1 -2 0.410729 0 -1 11 2 2 6 2 12 2 1 3 2 11 5 1 3 0.574759 2 -0.00541367 0 1 0.20658 0 -1 7 17 3 3 3 8 17 1 3 0 0 0 0 0 0.00536792 -1 -2 0.492642 0 -1 8 15 4 3 3 8 16 4 1 0 0 0 0 0 0.713948 2 -0.00314267 0 1 0.678009 0 -1 10 15 4 2 2 12 15 2 1 2 10 16 2 1 0.0109074 -1 -2 0.521493 0 -1 13 13 4 3 3 13 14 4 1 0 0 0 0 0 0.1144 2 0.00584368 1 0 0.193753 0 -1 3 13 4 3 3 3 14 4 1 0 0 0 0 0 9.05072e-05 -1 -2 0.381258 0 -1 7 2 2 6 2 7 2 1 3 2 8 5 1 3 0.551419 2 -0.0163458 0 1 0.247402 0 -1 2 1 16 3 3 2 2 16 1 0 0 0 0 0 0.00159875 -1 -2 0.481778 0 -1 10 15 4 2 2 12 15 2 1 2 10 16 2 1 0.592308 2 -0.0040258 0 1 0.750821 0 -1 6 15 4 2 2 6 15 2 1 2 8 16 2 1 -0.00677505 -1 -2 0.287981 0 -1 3 0 13 3 3 3 1 13 1 0 0 0 0 0 0.51997 2 -0.00324707 0 1 0.304491 0 -1 0 9 20 3 3 0 10 20 1 0 0 0 0 0 0.00154096 -1 -2 0.406348 0 -1 6 7 9 2 2 6 8 9 1 0 0 0 0 0 0.567656 2 -0.0128581 0 1 0.0967176 0 -1 8 14 3 6 3 9 14 1 6 0 0 0 0 0 -0.000148247 -1 -2 0.453783 0 -1 9 10 2 2 2 9 11 2 1 0 0 0 0 0 0.611538 2 -0.00902108 1 0 0.480775 0 -1 9 7 2 5 2 9 7 1 5 0 0 0 0 0 -0.028795 -1 -2 0.34038 0 -1 5 6 10 3 2 5 6 5 3 0 0 0 0 0 0.525553 2 0.00902108 1 0 0.750584 0 -1 9 7 2 5 2 10 7 1 5 0 0 0 0 0 0.00741212 -1 -2 0.545545 0 -1 5 6 10 3 2 10 6 5 3 0 0 0 0 0 0.322607 2 -0.00372175 0 1 0.231185 0 -1 13 9 2 2 2 13 9 1 2 0 0 0 0 0 0.198659 -1 -2 0.527105 0 -1 4 3 12 11 3 8 3 4 11 0 0 0 0 0 0.146993 2 1.52087e-05 0 1 0.367814 0 -1 7 1 2 7 2 8 1 1 7 0 0 0 0 0 -0.00390899 -1 -2 0.713193 0 -1 7 4 3 8 3 8 4 1 8 0 0 0 0 0 0.499387 2 0.00251063 0 1 0.531205 0 -1 13 9 2 2 2 13 9 1 2 0 0 0 0 0 0.000239217 -1 -2 0.468938 0 -1 11 6 2 2 2 12 6 1 1 2 11 7 1 1 0.571402 2 0.00694431 1 0 0.69488 0 -1 5 4 2 3 3 5 5 2 1 0 0 0 0 0 0.00120656 -1 -2 0.40045 0 -1 6 5 1 3 3 6 6 1 1 0 0 0 0 0 0.587488 2 0.00251063 0 1 0.532957 0 -1 13 9 2 2 2 13 9 1 2 0 0 0 0 0 0.0017514 -1 -2 0.554585 0 -1 16 14 3 3 3 16 15 3 1 0 0 0 0 0 0.344958 2 -0.00419782 0 1 0.121718 0 -1 5 9 2 2 2 6 9 1 2 0 0 0 0 0 0.00130929 -1 -2 0.537505 0 -1 1 14 3 3 3 1 15 3 1 0 0 0 0 0 0.341563 2 0.000673962 0 1 0.419518 0 -1 13 1 1 6 3 13 3 1 2 0 0 0 0 0 -0.0105307 -1 -2 0.346075 0 -1 13 3 7 2 2 13 4 7 1 0 0 0 0 0 0.515586 2 -0.406723 0 1 0.0580657 0 -1 0 6 20 14 2 0 13 20 7 0 0 0 0 0 -0.0263145 -1 -2 0.147345 0 -1 0 4 3 6 3 0 6 3 2 0 0 0 0 0 0.555938 2 0.00225571 1 0 0.547772 0 -1 10 1 9 6 3 10 3 9 2 0 0 0 0 0 0.0121549 -1 -2 0.420779 0 -1 8 0 12 5 2 8 0 6 5 0 0 0 0 0 0.562188 2 -0.0184365 0 1 0.644715 0 -1 0 0 18 5 3 6 0 6 5 0 0 0 0 0 0.000536761 -1 -2 0.276513 0 -1 1 1 9 6 3 1 3 9 2 0 0 0 0 0 0.48886 2 -0.00262655 1 0 0.526469 0 -1 15 15 2 2 2 15 16 2 1 0 0 0 0 0 -0.000511198 -1 -2 0.578531 0 -1 13 16 3 4 2 13 18 3 2 0 0 0 0 0 0.42911 2 0.000414548 1 0 0.345541 0 -1 3 15 2 2 2 3 16 2 1 0 0 0 0 0 -0.000550287 -1 -2 0.602692 0 -1 4 16 3 4 2 4 18 3 2 0 0 0 0 0 0.414389 2 -0.00103477 0 1 0.609529 0 -1 11 14 1 3 3 11 15 1 1 0 0 0 0 0 -0.00339666 -1 -2 0.610828 0 -1 9 13 5 3 3 9 14 5 1 0 0 0 0 0 0.470772 2 0.00317959 1 0 0.324437 0 -1 0 0 3 6 3 0 2 3 2 0 0 0 0 0 -0.00016529 -1 -2 0.383076 0 -1 4 1 6 3 3 6 1 2 3 0 0 0 0 0 0.573433 2 0.00837252 1 0 0.661092 0 -1 9 13 4 3 3 9 14 4 1 0 0 0 0 0 -0.00257998 -1 -2 0.613931 0 -1 8 15 5 3 3 8 16 5 1 0 0 0 0 0 0.468615 2 0.000901944 1 0 0.352002 0 -1 8 3 3 2 3 9 3 1 2 0 0 0 0 0 0.000369522 -1 -2 0.257875 0 -1 1 8 18 2 2 1 9 18 1 0 0 0 0 0 0.546724 2 0.000997461 0 1 0.482015 0 -1 11 14 1 3 3 11 15 1 1 0 0 0 0 0 -0.0036688 -1 -2 0.571015 0 -1 8 13 6 3 3 8 14 6 1 0 0 0 0 0 0.483191 2 -0.00089501 0 1 0.613368 0 -1 8 14 1 3 3 8 15 1 1 0 0 0 0 0 0.00519049 -1 -2 0.492858 0 -1 4 13 12 4 2 4 13 6 2 2 10 15 6 2 0.258131 2 0.000422744 0 1 0.447112 0 -1 10 7 2 2 2 10 7 1 2 0 0 0 0 0 0.00851767 -1 -2 0.516102 0 -1 13 4 2 8 2 14 4 1 4 2 13 8 1 4 0.331653 2 -0.0366236 0 1 0.0926062 0 -1 0 5 4 6 3 0 7 4 2 0 0 0 0 0 -0.00411037 -1 -2 0.852211 0 -1 8 7 2 2 2 9 7 1 2 0 0 0 0 0 0.513791 2 -0.00660173 1 0 0.545906 0 -1 13 0 3 7 3 14 0 1 7 0 0 0 0 0 0.0255786 -1 -2 0.521935 0 -1 11 2 2 14 2 11 2 1 14 0 0 0 0 0 0.192719 2 0.0114474 1 0 0.1916 0 -1 4 0 3 7 3 5 0 1 7 0 0 0 0 0 0.000724275 -1 -2 0.523157 0 -1 5 5 8 12 2 5 5 4 6 2 9 11 4 6 0.353534 2 0.00971275 1 0 0.64641 0 -1 11 4 6 3 3 11 5 6 1 0 0 0 0 0 -0.0113376 -1 -2 0.738304 0 -1 12 3 4 3 3 12 4 4 1 0 0 0 0 0 0.496474 2 -0.00814539 0 1 0.361171 0 -1 5 5 10 12 2 5 5 5 6 2 10 11 5 6 -0.00855708 -1 -2 0.342191 0 -1 3 6 12 3 2 9 6 6 3 0 0 0 0 0 0.594351 2 0.00229933 0 1 0.45501 0 -1 9 6 2 7 2 9 6 1 7 0 0 0 0 0 0.00384309 -1 -2 0.471686 0 -1 9 5 2 4 2 9 5 1 4 0 0 0 0 0 0.665619 2 -0.000991165 1 0 0.459272 0 -1 8 7 3 3 3 9 7 1 3 0 0 0 0 0 0.0254965 -1 -2 0.65634 0 -1 5 1 6 4 3 7 1 2 4 0 0 0 0 0 0.125884 2 -0.0157484 1 0 0.52395 0 -1 13 16 7 3 3 13 17 7 1 0 0 0 0 0 -0.0180461 -1 -2 0.801585 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.500796 2 0.0103234 1 0 0.227482 0 -1 0 16 7 3 3 0 17 7 1 0 0 0 0 0 0.00164522 -1 -2 0.435195 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.586763 2 0.0158811 0 1 0.446505 0 -1 12 9 8 10 2 12 9 4 10 0 0 0 0 0 0.0105865 -1 -2 0.454446 0 -1 8 10 12 5 3 12 10 4 5 0 0 0 0 0 0.570711 2 -0.0215317 0 1 0.652764 0 -1 0 9 8 10 2 4 9 4 10 0 0 0 0 0 0.00524805 -1 -2 0.344473 0 -1 0 10 12 5 3 4 10 4 5 0 0 0 0 0 0.532464 10 -1 12 32.6471 67 2 0.00182193 0 1 0.310879 0 -1 2 3 6 2 2 5 3 3 2 0 0 0 0 0 0.00813139 -1 -2 0.313324 0 -1 0 0 17 9 3 0 3 17 3 0 0 0 0 0 0.664587 2 0.0017056 0 1 0.264013 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 -7.44835e-05 -1 -2 0.564721 0 -1 10 4 6 4 3 12 4 2 4 0 0 0 0 0 0.348537 2 0.000383424 1 0 0.314065 0 -1 0 10 20 4 2 0 12 20 2 0 0 0 0 0 0.00318689 -1 -2 0.64892 0 -1 4 3 6 5 3 6 3 2 5 0 0 0 0 0 0.388773 2 0.160443 1 0 0.721653 0 -1 1 1 18 4 3 7 1 6 4 0 0 0 0 0 -0.00672856 -1 -2 0.165314 0 -1 13 9 2 3 2 13 9 1 3 0 0 0 0 0 0.513983 2 7.26385e-06 0 1 0.314062 0 -1 6 15 7 4 2 6 17 7 2 0 0 0 0 0 0.000555512 -1 -2 0.59937 0 -1 3 17 4 2 2 3 18 4 1 0 0 0 0 0 0.33174 2 -0.0108223 0 1 0.265294 0 -1 9 4 8 10 2 9 9 8 5 0 0 0 0 0 -0.0045834 -1 -2 0.184957 0 -1 9 17 3 2 3 10 17 1 2 0 0 0 0 0 0.531396 2 -0.00302051 1 0 0.40401 0 -1 8 2 4 8 2 8 6 4 4 0 0 0 0 0 0.0778646 -1 -2 0.615819 0 -1 3 4 14 12 2 3 4 7 6 2 10 10 7 6 0.178649 2 0.0264944 0 1 0.451109 0 -1 7 7 6 4 3 9 7 2 4 0 0 0 0 0 0.0369121 -1 -2 0.452822 0 -1 6 7 9 4 2 6 9 9 2 0 0 0 0 0 0.597228 2 0.00578578 1 0 0.253389 0 -1 2 10 3 3 3 2 11 3 1 0 0 0 0 0 0.000938498 -1 -2 0.341041 0 -1 4 6 2 9 3 4 9 2 3 0 0 0 0 0 0.592364 2 -0.0110032 0 1 0.695804 0 -1 9 11 3 3 3 9 12 3 1 0 0 0 0 0 -0.00117376 -1 -2 0.385108 0 -1 3 1 15 2 2 3 2 15 1 0 0 0 0 0 0.540819 2 -0.00365967 0 1 0.200931 0 -1 9 8 2 3 3 9 9 2 1 0 0 0 0 0 -0.00248228 -1 -2 0.629539 0 -1 9 6 2 5 2 10 6 1 5 0 0 0 0 0 0.439504 2 -0.00446061 0 1 0.24053 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 -0.00359696 -1 -2 0.545017 0 -1 4 10 12 10 2 4 15 12 5 0 0 0 0 0 0.378236 2 -0.00362226 0 1 0.30339 0 -1 0 10 4 2 2 0 11 4 1 0 0 0 0 0 0.00120593 -1 -2 0.463378 0 -1 5 15 9 2 2 5 16 9 1 0 0 0 0 0 0.633595 2 0.00431249 1 0 0.659883 0 -1 8 14 6 3 3 8 15 6 1 0 0 0 0 0 -0.00449613 -1 -2 0.66217 0 -1 8 16 4 3 3 8 17 4 1 0 0 0 0 0 0.475525 2 -0.00138607 0 1 0.28012 0 -1 8 9 4 2 2 8 10 4 1 0 0 0 0 0 -0.000515885 -1 -2 0.382949 0 -1 3 3 14 2 2 3 4 14 1 0 0 0 0 0 0.562363 2 7.033e-05 0 1 0.453634 0 -1 11 12 1 2 2 11 13 1 1 0 0 0 0 0 -0.000209765 -1 -2 0.560814 0 -1 4 12 12 1 3 8 12 4 1 0 0 0 0 0 0.426578 2 0.00136423 1 0 0.263709 0 -1 0 2 1 2 2 0 3 1 1 0 0 0 0 0 0.00154837 -1 -2 0.417075 0 -1 7 4 4 6 2 9 4 2 6 0 0 0 0 0 0.593299 2 0.191796 0 1 0.525676 0 -1 0 2 20 14 2 10 2 10 7 2 0 9 10 7 -0.00447769 -1 -2 0.663262 0 -1 14 6 1 3 3 14 7 1 1 0 0 0 0 0 0.489259 2 -0.126492 0 1 0.149978 0 -1 0 4 20 12 2 0 4 10 6 2 10 10 10 6 6.52533e-05 -1 -2 0.423332 0 -1 8 12 1 2 2 8 13 1 1 0 0 0 0 0 0.575604 2 0.00418564 0 1 0.528883 0 -1 9 18 3 2 3 10 18 1 2 0 0 0 0 0 0.000274782 -1 -2 0.452402 0 -1 9 17 6 2 3 11 17 2 2 0 0 0 0 0 0.560413 2 -0.00229068 0 1 0.557827 0 -1 5 6 2 3 3 5 7 2 1 0 0 0 0 0 0.00167445 -1 -2 0.332306 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.555879 2 0.00123498 1 0 0.365395 0 -1 14 15 3 2 2 14 16 3 1 0 0 0 0 0 -0.00871588 -1 -2 0.192453 0 -1 11 3 3 4 3 12 3 1 4 0 0 0 0 0 0.531365 2 0.00466136 1 0 0.202773 0 -1 3 15 3 2 2 3 16 3 1 0 0 0 0 0 -0.0085816 -1 -2 0.763606 0 -1 9 12 2 3 3 9 13 2 1 0 0 0 0 0 0.514083 2 0.0143521 0 1 0.525298 0 -1 9 13 3 7 3 10 13 1 7 0 0 0 0 0 -0.00779487 -1 -2 0.263294 0 -1 12 12 5 3 3 12 13 5 1 0 0 0 0 0 0.532869 2 -0.00341557 0 1 0.241609 0 -1 8 18 3 2 3 9 18 1 2 0 0 0 0 0 -0.00426391 -1 -2 0.393654 0 -1 4 7 12 4 2 4 7 6 2 2 10 9 6 2 0.547874 2 0.00871777 0 1 0.47882 0 -1 6 19 14 1 2 6 19 7 1 0 0 0 0 0 -0.00322326 -1 -2 0.363161 0 -1 16 14 3 2 2 16 15 3 1 0 0 0 0 0 0.528832 2 -0.0421884 0 1 0.693114 0 -1 1 0 6 10 2 1 0 3 5 2 4 5 3 5 0.0198757 -1 -2 0.45201 0 -1 1 0 4 10 2 1 0 2 5 2 3 5 2 5 0.685506 2 -0.0311345 1 0 0.530042 0 -1 15 3 5 6 3 15 5 5 2 0 0 0 0 0 0.00570324 -1 -2 0.560689 0 -1 9 5 2 15 3 9 10 2 5 0 0 0 0 0 0.423062 2 0.00527337 1 0 0.324723 0 -1 0 3 5 6 3 0 5 5 2 0 0 0 0 0 -0.00312311 -1 -2 0.19857 0 -1 6 0 3 2 3 7 0 1 2 0 0 0 0 0 0.534987 2 0.000464538 0 1 0.420751 0 -1 12 8 8 2 2 16 8 4 1 2 12 9 4 1 0.0303559 -1 -2 0.515346 0 -1 5 8 12 1 3 9 8 4 1 0 0 0 0 0 0.31181 2 -0.00429928 0 1 0.327451 0 -1 3 13 3 3 3 3 14 3 1 0 0 0 0 0 0.000195092 -1 -2 0.595308 0 -1 5 13 3 2 2 5 14 3 1 0 0 0 0 0 0.422552 2 -0.00777845 0 1 0.721118 0 -1 9 15 3 3 3 9 16 3 1 0 0 0 0 0 0.0169176 -1 -2 0.493659 0 -1 7 15 7 3 3 7 16 7 1 0 0 0 0 0 0.703028 2 -0.0519486 0 1 0.142553 0 -1 3 14 11 6 3 3 16 11 2 0 0 0 0 0 -0.00547512 -1 -2 0.605933 0 -1 0 19 14 1 2 7 19 7 1 0 0 0 0 0 0.4394 2 1.52108e-05 0 1 0.448885 0 -1 9 17 6 2 3 11 17 2 2 0 0 0 0 0 0.00102356 -1 -2 0.425655 0 -1 12 11 6 2 3 14 11 2 2 0 0 0 0 0 0.579544 2 -0.000104277 0 1 0.424604 0 -1 5 17 6 2 3 7 17 2 2 0 0 0 0 0 0.00878538 -1 -2 0.495801 0 -1 0 1 9 10 3 3 1 3 10 0 0 0 0 0 0.675943 2 0.00340127 0 1 0.542348 0 -1 10 1 3 3 3 11 1 1 3 0 0 0 0 0 0.000585824 -1 -2 0.363654 0 -1 9 5 6 4 2 9 5 3 4 0 0 0 0 0 0.546435 2 -0.00229734 0 1 0.254882 0 -1 7 1 3 3 3 8 1 1 3 0 0 0 0 0 -0.0143302 -1 -2 0.658766 0 -1 0 4 4 11 2 2 4 2 11 0 0 0 0 0 0.45328 2 0.00098566 0 1 0.382277 0 -1 9 5 6 4 2 9 5 3 4 0 0 0 0 0 -0.0466408 -1 -2 0.307732 0 -1 6 0 8 10 2 10 0 4 5 2 6 5 4 5 0.524413 2 -0.119073 0 1 0.103386 0 -1 6 6 5 14 2 6 13 5 7 0 0 0 0 0 0.0193333 -1 -2 0.555475 0 -1 8 5 4 14 2 8 12 4 7 0 0 0 0 0 0.322132 2 0.0314278 0 1 0.468238 0 -1 7 7 6 5 3 9 7 2 5 0 0 0 0 0 0.000200821 -1 -2 0.537307 0 -1 9 3 3 9 3 9 6 3 3 0 0 0 0 0 0.380067 2 -0.00625849 0 1 0.179921 0 -1 8 1 3 3 3 9 1 1 3 0 0 0 0 0 0.0082861 -1 -2 0.509507 0 -1 9 6 2 4 2 10 6 1 4 0 0 0 0 0 0.754461 2 0.00205297 0 1 0.562864 0 -1 10 8 6 9 2 10 8 3 9 0 0 0 0 0 0.00325249 -1 -2 0.480169 0 -1 16 4 3 8 3 17 4 1 8 0 0 0 0 0 0.58021 2 -0.0318849 0 1 0.174275 0 -1 5 9 10 6 2 5 9 5 3 2 10 12 5 3 0.00183793 -1 -2 0.34666 0 -1 5 5 6 4 2 8 5 3 4 0 0 0 0 0 0.510715 2 -0.000485127 1 0 0.532609 0 -1 9 8 4 2 2 9 9 4 1 0 0 0 0 0 -0.00254079 -1 -2 0.634278 0 -1 11 7 2 2 2 11 7 1 2 0 0 0 0 0 0.499269 2 -0.00515591 0 1 0.343343 0 -1 8 12 4 8 2 8 12 2 4 2 10 16 2 4 -0.0449688 -1 -2 0.186814 0 -1 0 1 4 9 3 0 4 4 3 0 0 0 0 0 0.521546 2 0.00589843 1 0 0.622931 0 -1 9 10 3 3 3 9 11 3 1 0 0 0 0 0 0.00327631 -1 -2 0.493577 0 -1 8 11 4 2 2 8 12 4 1 0 0 0 0 0 0.721794 2 -0.000101615 1 0 0.500798 0 -1 7 8 4 2 2 7 9 4 1 0 0 0 0 0 -0.000162903 -1 -2 0.602415 0 -1 7 8 6 1 3 9 8 2 1 0 0 0 0 0 0.232951 2 0.00905414 0 1 0.451042 0 -1 16 0 4 9 2 16 0 2 9 0 0 0 0 0 0.0353985 -1 -2 0.5142 0 -1 16 0 3 6 2 16 3 3 3 0 0 0 0 0 0.286029 2 0.00564694 0 1 0.470493 0 -1 0 0 4 9 2 2 0 2 9 0 0 0 0 0 -0.00248072 -1 -2 0.417985 0 -1 1 0 3 6 2 1 3 3 3 0 0 0 0 0 0.672665 2 -0.00410888 0 1 0.58098 0 -1 9 7 6 9 3 11 7 2 9 0 0 0 0 0 -0.00207145 -1 -2 0.607478 0 -1 10 6 3 6 3 11 6 1 6 0 0 0 0 0 0.452406 2 -0.00289391 0 1 0.338352 0 -1 1 2 18 2 2 1 2 9 1 2 10 3 9 1 0.00134673 -1 -2 0.569691 0 -1 5 8 6 8 3 7 8 2 8 0 0 0 0 0 0.397085 2 -0.0907791 0 1 0.15027 0 -1 9 0 6 16 3 11 0 2 16 0 0 0 0 0 -0.0831718 -1 -2 0.757367 0 -1 14 1 6 18 2 17 1 3 9 2 14 10 3 9 0.493644 2 -0.0014107 0 1 0.339093 0 -1 2 9 2 3 3 2 10 2 1 0 0 0 0 0 0.0556688 -1 -2 0.50251 0 -1 0 1 6 18 2 0 1 3 9 2 3 10 3 9 0.742208 2 0.0577015 0 1 0.519737 0 -1 11 8 4 12 2 11 8 2 12 0 0 0 0 0 -0.425033 -1 -2 0.0973469 0 -1 2 1 18 18 2 2 10 18 9 0 0 0 0 0 0.518574 2 -0.000443807 0 1 0.364935 0 -1 6 3 3 1 3 7 3 1 1 0 0 0 0 0 0.000179248 -1 -2 0.561928 0 -1 4 12 2 2 2 4 13 2 1 0 0 0 0 0 0.37603 2 0.00503825 1 0 0.632845 0 -1 8 13 5 3 3 8 14 5 1 0 0 0 0 0 0.0151912 -1 -2 0.493608 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 0.742652 2 -0.0123004 0 1 0.138935 0 -1 3 12 5 3 3 3 13 5 1 0 0 0 0 0 0.0015168 -1 -2 0.509196 0 -1 6 3 3 4 3 7 3 1 4 0 0 0 0 0 0.348265 2 0.000957545 1 0 0.603632 0 -1 11 10 2 2 2 12 10 1 1 2 11 11 1 1 -0.0189622 -1 -2 0.231917 0 -1 5 8 12 1 3 9 8 4 1 0 0 0 0 0 0.511665 2 -0.0222723 0 1 0.655502 0 -1 8 4 4 8 2 10 4 2 8 0 0 0 0 0 -0.0251452 -1 -2 0.132607 0 -1 6 6 8 5 2 10 6 4 5 0 0 0 0 0 0.467403 2 0.0195339 0 1 0.518203 0 -1 10 4 6 4 3 12 4 2 4 0 0 0 0 0 -0.00112313 -1 -2 0.631824 0 -1 12 7 2 2 2 13 7 1 1 2 12 8 1 1 0.482552 2 -0.00148611 0 1 0.291867 0 -1 3 5 10 8 2 3 9 10 4 0 0 0 0 0 0.000350029 -1 -2 0.562137 0 -1 7 1 2 12 2 7 7 2 6 0 0 0 0 0 0.424921 2 -0.00112313 1 0 0.481375 0 -1 12 7 2 2 2 13 7 1 1 2 12 8 1 1 0.0104097 -1 -2 0.518401 0 -1 11 13 1 6 2 11 16 1 3 0 0 0 0 0 0.205122 2 -0.0878326 0 1 0.117992 0 -1 5 1 6 15 3 7 1 2 15 0 0 0 0 0 0.00165849 -1 -2 0.498781 0 -1 6 7 2 2 2 6 7 1 1 2 7 8 1 1 0.697376 2 -0.00230088 1 0 0.533983 0 -1 17 5 2 2 2 17 6 2 1 0 0 0 0 0 0.0330262 -1 -2 0.503329 0 -1 10 3 4 10 2 12 3 2 5 2 10 8 2 5 0.685191 2 -0.00135851 0 1 0.300282 0 -1 1 5 2 2 2 1 6 2 1 0 0 0 0 0 0.000780675 -1 -2 0.459308 0 -1 7 10 2 2 2 7 10 1 1 2 8 11 1 1 0.644005 2 -0.0180258 1 0 0.531129 0 -1 3 12 14 4 2 10 12 7 2 2 3 14 7 2 0.00123549 -1 -2 0.472911 0 -1 9 15 3 2 2 9 16 3 1 0 0 0 0 0 0.572146 2 -0.00092583 0 1 0.366233 0 -1 1 13 3 3 3 1 14 3 1 0 0 0 0 0 0.00080124 -1 -2 0.536199 0 -1 0 3 1 2 2 0 4 1 1 0 0 0 0 0 0.300863 11 -1 13 30.6721 63 2 0.00249148 0 1 0.342239 0 -1 7 7 6 1 3 9 7 2 1 0 0 0 0 0 -0.0504886 -1 -2 0.770346 0 -1 0 4 16 6 3 0 6 16 2 0 0 0 0 0 0.451639 2 -0.000778384 1 0 0.325634 0 -1 9 3 2 14 2 9 10 2 7 0 0 0 0 0 0.000235729 -1 -2 0.340656 0 -1 12 0 4 3 2 12 0 2 3 0 0 0 0 0 0.589703 2 0.00455751 0 1 0.430658 0 -1 4 18 12 2 3 8 18 4 2 0 0 0 0 0 0.0081242 -1 -2 0.714959 0 -1 4 10 12 4 3 8 10 4 4 0 0 0 0 0 0.434568 2 -0.000446122 0 1 0.329597 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 -0.000289729 -1 -2 0.584562 0 -1 14 1 2 8 2 15 1 1 4 2 14 5 1 4 0.352669 2 7.16048e-06 0 1 0.408195 0 -1 3 4 9 1 3 6 4 3 1 0 0 0 0 0 -0.000384977 -1 -2 0.420311 0 -1 3 3 4 2 2 3 4 4 1 0 0 0 0 0 0.663413 2 0.000194899 0 1 0.394247 0 -1 11 15 2 4 2 11 17 2 2 0 0 0 0 0 -0.0170838 -1 -2 0.229407 0 -1 14 13 2 6 3 14 15 2 2 0 0 0 0 0 0.523896 2 0.000835137 0 1 0.302603 0 -1 6 6 1 6 2 6 9 1 3 0 0 0 0 0 0.000754996 -1 -2 0.60322 0 -1 6 10 8 8 2 6 14 8 4 0 0 0 0 0 0.341246 2 0.00802167 1 0 0.730624 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 -0.0389305 -1 -2 0.359933 0 -1 10 11 4 8 2 10 15 4 4 0 0 0 0 0 0.523438 2 -7.03488e-05 1 0 0.349376 0 -1 5 11 6 1 3 7 11 2 1 0 0 0 0 0 -0.00853506 -1 -2 0.274611 0 -1 5 4 6 10 2 8 4 3 10 0 0 0 0 0 0.562659 2 0.0108545 0 1 0.528223 0 -1 14 2 6 3 3 14 3 6 1 0 0 0 0 0 0.000453295 -1 -2 0.452205 0 -1 9 12 3 2 2 9 13 3 1 0 0 0 0 0 0.60543 2 0.000181172 0 1 0.330686 0 -1 8 1 4 6 3 8 3 4 2 0 0 0 0 0 0.000466416 -1 -2 0.1455 0 -1 3 5 13 8 2 3 9 13 4 0 0 0 0 0 0.538493 2 -0.00848548 1 0 0.481416 0 -1 12 5 5 3 3 12 6 5 1 0 0 0 0 0 -0.0189343 -1 -2 0.356374 0 -1 5 14 15 6 3 5 16 15 2 0 0 0 0 0 0.540515 2 0.00498145 1 0 0.695774 0 -1 3 5 5 3 3 3 6 5 1 0 0 0 0 0 0.00342868 -1 -2 0.505089 0 -1 9 14 2 6 2 9 14 1 3 2 10 17 1 3 0.231699 2 0.000442038 1 0 0.601858 0 -1 9 12 3 2 2 9 13 3 1 0 0 0 0 0 0.000238226 -1 -2 0.475508 0 -1 9 13 3 2 2 9 14 3 1 0 0 0 0 0 0.558524 2 -0.00642616 0 1 0.228247 0 -1 0 2 6 3 3 0 3 6 1 0 0 0 0 0 0.00996378 -1 -2 0.404059 0 -1 0 1 9 11 3 3 1 3 11 0 0 0 0 0 0.565017 2 0.0136541 0 1 0.526774 0 -1 8 13 4 6 2 10 13 2 3 2 8 16 2 3 -0.00998929 -1 -2 0.679405 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.479703 2 0.0365586 1 0 0.0884257 0 -1 3 12 14 4 2 3 12 7 2 2 10 14 7 2 4.89994e-05 -1 -2 0.402079 0 -1 7 14 1 4 2 7 16 1 2 0 0 0 0 0 0.545733 2 0.0136541 0 1 0.526761 0 -1 8 13 4 6 2 10 13 2 3 2 8 16 2 3 0.00188028 -1 -2 0.480605 0 -1 10 14 1 3 3 10 15 1 1 0 0 0 0 0 0.639436 2 -0.0136541 0 1 0.172481 0 -1 8 13 4 6 2 8 13 2 3 2 10 16 2 3 0.00127787 -1 -2 0.447982 0 -1 9 14 1 3 3 9 15 1 1 0 0 0 0 0 0.631001 2 0.000988434 1 0 0.594817 0 -1 10 15 2 3 3 10 16 2 1 0 0 0 0 0 1.45115e-05 -1 -2 0.485417 0 -1 11 16 1 2 2 11 17 1 1 0 0 0 0 0 0.530936 2 -0.000227754 0 1 0.318363 0 -1 9 0 2 2 2 9 1 2 1 0 0 0 0 0 -0.0147537 -1 -2 0.308498 0 -1 0 1 5 8 2 0 5 5 4 0 0 0 0 0 0.535203 2 -0.00341483 0 1 0.611533 0 -1 10 14 2 3 3 10 15 2 1 0 0 0 0 0 0.00758067 -1 -2 0.495165 0 -1 10 13 2 3 3 10 14 2 1 0 0 0 0 0 0.706133 2 -0.00577347 1 0 0.375422 0 -1 0 3 16 6 2 0 6 16 3 0 0 0 0 0 7.40337e-05 -1 -2 0.411552 0 -1 4 1 2 2 2 5 1 1 2 0 0 0 0 0 0.588944 2 -0.00822781 0 1 0.0956106 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 0.00533809 -1 -2 0.530051 0 -1 10 8 2 12 3 10 12 2 4 0 0 0 0 0 0.39619 2 -0.00270491 0 1 0.648187 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 0.00773413 -1 -2 0.511044 0 -1 5 0 6 8 3 7 0 2 8 0 0 0 0 0 0.312152 2 0.0108866 0 1 0.480143 0 -1 9 7 3 6 3 10 7 1 6 0 0 0 0 0 0.0110387 -1 -2 0.542971 0 -1 8 12 10 8 2 8 16 10 4 0 0 0 0 0 0.416236 2 -0.0100542 0 1 0.732934 0 -1 8 7 3 6 3 9 7 1 6 0 0 0 0 0 0.00770729 -1 -2 0.535687 0 -1 4 7 12 2 2 10 7 6 2 0 0 0 0 0 0.345555 2 -0.000582781 0 1 0.365502 0 -1 8 6 8 3 2 8 6 4 3 0 0 0 0 0 -0.00257392 -1 -2 0.377676 0 -1 16 15 3 3 3 16 16 3 1 0 0 0 0 0 0.539177 2 -0.00701678 0 1 0.40393 0 -1 4 6 12 3 2 10 6 6 3 0 0 0 0 0 -0.00177273 -1 -2 0.695044 0 -1 7 8 3 5 3 8 8 1 5 0 0 0 0 0 0.498112 2 -0.0163183 1 0 0.529673 0 -1 0 10 20 2 2 10 10 10 1 2 0 11 10 1 -0.011663 -1 -2 0.584264 0 -1 11 16 9 4 3 14 16 3 4 0 0 0 0 0 0.47895 2 0.00258815 1 0 0.609218 0 -1 0 5 3 4 3 1 5 1 4 0 0 0 0 0 -0.0037329 -1 -2 0.672174 0 -1 8 15 4 2 2 8 15 2 1 2 10 16 2 1 0.406689 2 -0.00143559 0 1 0.358509 0 -1 1 8 19 3 3 1 9 19 1 0 0 0 0 0 0.00183409 -1 -2 0.537116 0 -1 15 16 3 3 3 15 17 3 1 0 0 0 0 0 0.403351 2 0.122803 1 0 0.154757 0 -1 0 4 20 10 2 0 4 10 5 2 10 9 10 5 0.0502287 -1 -2 0.543384 0 -1 2 14 7 6 3 2 16 7 2 0 0 0 0 0 0.0842927 2 -0.021437 1 0 0.486005 0 -1 8 6 6 6 3 10 6 2 6 0 0 0 0 0 -0.0310096 -1 -2 0.183301 0 -1 16 4 4 6 3 16 6 4 2 0 0 0 0 0 0.520755 2 -0.0129737 0 1 0.704824 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.0015818 -1 -2 0.417059 0 -1 7 13 4 3 3 7 14 4 1 0 0 0 0 0 0.586516 2 -0.00978062 1 0 0.530792 0 -1 13 13 6 2 2 13 14 6 1 0 0 0 0 0 0.00117357 -1 -2 0.552245 0 -1 14 12 2 3 3 14 13 2 1 0 0 0 0 0 0.350717 2 0.00146516 1 0 0.304265 0 -1 1 13 6 2 2 1 14 6 1 0 0 0 0 0 0.00235321 -1 -2 0.533932 0 -1 4 12 2 3 3 4 13 2 1 0 0 0 0 0 0.280624 2 -0.00618097 0 1 0.641013 0 -1 17 4 3 5 3 18 4 1 5 0 0 0 0 0 0.000656886 -1 -2 0.562087 0 -1 5 5 14 8 2 12 5 7 4 2 5 9 7 4 0.439032 2 0.026228 1 0 0.644556 0 -1 6 8 6 5 3 8 8 2 5 0 0 0 0 0 -0.0179581 -1 -2 0.200271 0 -1 0 4 4 6 3 0 6 4 2 0 0 0 0 0 0.462467 2 -0.00764687 1 0 0.52632 0 -1 9 1 3 6 3 10 1 1 6 0 0 0 0 0 -0.00274828 -1 -2 0.587398 0 -1 10 4 6 3 3 10 5 6 1 0 0 0 0 0 0.48366 2 0.0138519 1 0 0.156613 0 -1 8 1 3 6 3 9 1 1 6 0 0 0 0 0 0.00263692 -1 -2 0.427018 0 -1 4 4 6 3 3 4 5 6 1 0 0 0 0 0 0.580666 2 -0.00315136 0 1 0.621587 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 -1.47885e-05 -1 -2 0.557664 0 -1 12 11 4 2 2 12 12 4 1 0 0 0 0 0 0.4122 2 -0.073677 0 1 0.153671 0 -1 0 2 20 6 2 0 2 10 3 2 10 5 10 3 -0.00309128 -1 -2 0.634427 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.450741 2 0.0079241 0 1 0.545798 0 -1 2 10 16 4 2 10 10 8 2 2 2 12 8 2 0.0085778 -1 -2 0.540166 0 -1 3 10 16 6 2 11 10 8 3 2 3 13 8 3 0.38908 2 0.00554032 1 0 0.355561 0 -1 1 10 16 6 2 1 10 8 3 2 9 13 8 3 -0.000118865 -1 -2 0.583675 0 -1 4 7 2 4 2 5 7 1 4 0 0 0 0 0 0.427432 2 -0.0184084 0 1 0.586044 0 -1 11 16 9 4 3 14 16 3 4 0 0 0 0 0 -0.00234906 -1 -2 0.449896 0 -1 3 16 14 4 2 10 16 7 2 2 3 18 7 2 0.54982 2 -0.00761574 1 0 0.410099 0 -1 0 16 9 4 3 3 16 3 4 0 0 0 0 0 -0.0033191 -1 -2 0.670138 0 -1 1 14 6 6 2 1 14 3 3 2 4 17 3 3 0.4353 2 -0.00094643 1 0 0.539118 0 -1 9 0 2 1 2 9 0 1 1 0 0 0 0 0 0.00878586 -1 -2 0.550405 0 -1 6 7 8 10 2 10 7 4 5 2 6 12 4 5 0.399094 2 0.000163955 1 0 0.359293 0 -1 2 15 1 2 2 2 16 1 1 0 0 0 0 0 -0.00235089 -1 -2 0.403417 0 -1 0 14 7 6 3 0 16 7 2 0 0 0 0 0 0.580608 2 7.545e-05 1 0 0.541238 0 -1 7 8 6 2 2 7 9 6 1 0 0 0 0 0 0.0270185 -1 -2 0.494492 0 -1 9 2 2 15 3 9 7 2 5 0 0 0 0 0 0.558944 2 0.000845612 1 0 0.580922 0 -1 5 6 2 2 2 5 7 2 1 0 0 0 0 0 -0.00116871 -1 -2 0.474696 0 -1 6 6 8 3 3 6 7 8 1 0 0 0 0 0 0.28459 2 0.0228975 1 0 0.241441 0 -1 12 13 5 6 3 12 15 5 2 0 0 0 0 0 0.708793 -1 -2 0.519576 0 -1 0 0 20 18 2 0 9 20 9 0 0 0 0 0 0.103009 2 0.0374838 1 0 0.181464 0 -1 5 1 6 6 3 7 1 2 6 0 0 0 0 0 0.00128275 -1 -2 0.424607 0 -1 5 1 4 9 2 7 1 2 9 0 0 0 0 0 0.570797 2 -0.00517183 0 1 0.614332 0 -1 1 19 18 1 3 7 19 6 1 0 0 0 0 0 0.00275459 -1 -2 0.520567 0 -1 14 16 5 2 2 14 17 5 1 0 0 0 0 0 0.422044 2 -0.00360729 0 1 0.318259 0 -1 0 5 15 10 2 0 10 15 5 0 0 0 0 0 -0.000252587 -1 -2 0.571047 0 -1 7 15 4 2 2 7 15 2 1 2 9 16 2 1 0.422609 2 -0.00705147 1 0 0.516283 0 -1 14 11 2 2 2 14 12 2 1 0 0 0 0 0 -0.00543238 -1 -2 0.266629 0 -1 9 8 3 3 3 9 9 3 1 0 0 0 0 0 0.521468 2 -1.46529e-05 1 0 0.398176 0 -1 4 11 2 2 2 4 12 2 1 0 0 0 0 0 -0.00185569 -1 -2 0.332276 0 -1 8 8 3 3 3 8 9 3 1 0 0 0 0 0 0.570583 2 0.00476095 1 0 0.663656 0 -1 9 10 2 3 3 9 11 2 1 0 0 0 0 0 0.00156763 -1 -2 0.550557 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 0.442066 2 0.00542399 1 0 0.595994 0 -1 1 9 4 10 2 1 9 2 5 2 3 14 2 5 -0.00646924 -1 -2 0.536959 0 -1 0 12 6 8 3 2 12 2 8 0 0 0 0 0 0.374434 2 -0.000780385 0 1 0.41036 0 -1 9 1 4 2 2 11 1 2 1 2 9 2 2 1 0.0450865 -1 -2 0.517751 0 -1 12 13 7 6 3 12 15 7 2 0 0 0 0 0 0.18781 2 -0.00514054 0 1 0.235289 0 -1 7 0 2 3 3 7 1 2 1 0 0 0 0 0 -0.0212361 -1 -2 0.170875 0 -1 7 14 6 3 3 9 14 2 3 0 0 0 0 0 0.542497 2 -0.00237633 0 1 0.583653 0 -1 9 6 6 4 3 11 6 2 4 0 0 0 0 0 0.0541226 -1 -2 0.511743 0 -1 8 10 8 3 2 8 10 4 3 0 0 0 0 0 0.186593 2 -0.00053493 0 1 0.510869 0 -1 6 10 4 3 2 8 10 2 3 0 0 0 0 0 -0.00058454 -1 -2 0.477549 0 -1 6 8 3 5 3 7 8 1 5 0 0 0 0 0 0.243985 12 -1 14 34.6771 71 2 0.00300319 0 1 0.334965 0 -1 0 4 8 1 2 4 4 4 1 0 0 0 0 0 0.000691612 -1 -2 0.451837 0 -1 8 2 2 6 2 8 2 1 3 2 9 5 1 3 0.728935 2 0.0112128 0 1 0.29508 0 -1 0 7 20 6 3 0 9 20 2 0 0 0 0 0 -0.000761082 -1 -2 0.566905 0 -1 12 10 3 6 2 12 13 3 3 0 0 0 0 0 0.283085 2 0.000119846 0 1 0.409058 0 -1 8 15 1 4 2 8 17 1 2 0 0 0 0 0 -0.000197253 -1 -2 0.695149 0 -1 5 16 2 4 2 5 18 2 2 0 0 0 0 0 0.463787 2 -0.00551804 1 0 0.316768 0 -1 6 2 8 12 3 6 6 8 4 0 0 0 0 0 0.00121482 -1 -2 0.331671 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 0.53964 2 -0.00424974 0 1 0.260057 0 -1 7 0 6 1 3 9 0 2 1 0 0 0 0 0 -0.00949157 -1 -2 0.748429 0 -1 8 11 3 3 3 8 12 3 1 0 0 0 0 0 0.507319 2 0.000653786 1 0 0.395201 0 -1 12 11 3 6 2 12 14 3 3 0 0 0 0 0 -0.000497411 -1 -2 0.588027 0 -1 11 2 6 10 2 14 2 3 5 2 11 7 3 5 0.355212 2 -0.0430792 0 1 0.243488 0 -1 5 7 10 12 2 5 7 5 6 2 10 13 5 6 -0.000519991 -1 -2 0.319556 0 -1 4 4 2 10 2 4 9 2 5 0 0 0 0 0 0.558545 2 -0.00454516 1 0 0.484529 0 -1 9 7 2 3 2 9 7 1 3 0 0 0 0 0 -0.00796104 -1 -2 0.380118 0 -1 11 9 6 2 2 11 9 3 2 0 0 0 0 0 0.535851 2 -0.000319193 1 0 0.435633 0 -1 4 7 2 2 2 5 7 1 2 0 0 0 0 0 -0.0192239 -1 -2 0.261307 0 -1 0 2 4 6 3 0 4 4 2 0 0 0 0 0 0.61555 2 -0.0013077 0 1 0.594206 0 -1 10 7 3 4 3 11 7 1 4 0 0 0 0 0 0.019825 -1 -2 0.494543 0 -1 9 7 3 5 3 10 7 1 5 0 0 0 0 0 0.738486 2 -0.00220133 0 1 0.221448 0 -1 9 1 1 3 3 9 2 1 1 0 0 0 0 0 -0.00785967 -1 -2 0.360098 0 -1 0 6 16 6 2 0 6 8 3 2 8 9 8 3 0.529855 2 0.00141422 1 0 0.577657 0 -1 10 15 3 3 3 10 16 3 1 0 0 0 0 0 -0.0112328 -1 -2 0.693446 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 0.482721 2 0.00297463 1 0 0.321668 0 -1 3 2 6 10 2 3 2 3 5 2 6 7 3 5 0.000532838 -1 -2 0.39625 0 -1 3 0 14 2 2 3 1 14 1 0 0 0 0 0 0.568036 2 0.0101053 1 0 0.756742 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 -0.0116537 -1 -2 0.652356 0 -1 10 15 3 3 3 10 16 3 1 0 0 0 0 0 0.502705 2 -0.007061 0 1 0.253877 0 -1 9 13 2 6 2 9 16 2 3 0 0 0 0 0 0.00223431 -1 -2 0.438728 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.617763 2 -0.0298023 1 0 0.520114 0 -1 12 11 3 6 2 12 14 3 3 0 0 0 0 0 0.00116118 -1 -2 0.464791 0 -1 8 12 5 2 2 8 13 5 1 0 0 0 0 0 0.618425 2 0.000948244 1 0 0.304099 0 -1 5 11 3 6 2 5 14 3 3 0 0 0 0 0 0.000412846 -1 -2 0.451881 0 -1 8 12 3 2 2 8 13 3 1 0 0 0 0 0 0.624578 2 -0.0312035 0 1 0.278894 0 -1 11 13 7 6 3 11 15 7 2 0 0 0 0 0 0.00276529 -1 -2 0.46985 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.650245 2 0.0256448 1 0 0.180517 0 -1 3 13 14 4 2 3 13 7 2 2 10 15 7 2 -0.00753315 -1 -2 0.320807 0 -1 8 14 4 6 2 8 14 2 3 2 10 17 2 3 0.552202 2 0.00320471 1 0 0.643693 0 -1 8 15 4 3 3 8 16 4 1 0 0 0 0 0 -0.000242825 -1 -2 0.567671 0 -1 7 16 6 2 3 9 16 2 2 0 0 0 0 0 0.45091 2 -0.000619793 0 1 0.312215 0 -1 7 7 6 2 2 7 8 6 1 0 0 0 0 0 -0.00080101 -1 -2 0.296519 0 -1 3 9 13 3 3 3 10 13 1 0 0 0 0 0 0.523049 2 -0.000918168 1 0 0.546471 0 -1 9 8 3 4 2 9 10 3 2 0 0 0 0 0 0.00122395 -1 -2 0.46185 0 -1 8 10 4 3 3 8 11 4 1 0 0 0 0 0 0.567955 2 -0.000687437 0 1 0.543088 0 -1 7 7 3 4 3 8 7 1 4 0 0 0 0 0 -0.00182525 -1 -2 0.543362 0 -1 8 7 3 5 3 9 7 1 5 0 0 0 0 0 0.338522 2 -0.00745708 1 0 0.526559 0 -1 12 3 3 4 3 13 3 1 4 0 0 0 0 0 0.00537757 -1 -2 0.485722 0 -1 9 7 2 3 2 9 7 1 3 0 0 0 0 0 0.681512 2 0.00376023 1 0 0.283216 0 -1 5 3 3 4 3 6 3 1 4 0 0 0 0 0 0.000877522 -1 -2 0.396683 0 -1 3 7 12 1 3 7 7 4 1 0 0 0 0 0 0.551248 2 0.00550845 1 0 0.678462 0 -1 12 5 3 3 3 12 6 3 1 0 0 0 0 0 -0.00075949 -1 -2 0.39065 0 -1 11 2 6 2 2 11 3 6 1 0 0 0 0 0 0.54572 2 0.00163527 1 0 0.36402 0 -1 3 2 14 2 2 3 2 7 1 2 10 3 7 1 -0.000127508 -1 -2 0.582972 0 -1 6 1 7 14 2 6 8 7 7 0 0 0 0 0 0.419498 2 0.0220676 0 1 0.46067 0 -1 8 0 12 5 2 8 0 6 5 0 0 0 0 0 -0.0192038 -1 -2 0.326148 0 -1 1 9 18 1 3 7 9 6 1 0 0 0 0 0 0.523608 2 -0.0129981 0 1 0.702211 0 -1 0 0 10 5 2 5 0 5 5 0 0 0 0 0 -0.00313327 -1 -2 0.287047 0 -1 2 5 8 15 3 2 10 8 5 0 0 0 0 0 0.507648 2 -0.00529376 1 0 0.470952 0 -1 12 5 3 3 3 12 6 3 1 0 0 0 0 0 0.00218571 -1 -2 0.470829 0 -1 13 4 2 3 3 13 5 2 1 0 0 0 0 0 0.616984 2 -0.00457507 0 1 0.311425 0 -1 2 15 4 3 3 2 16 4 1 0 0 0 0 0 -0.0451521 -1 -2 0.185144 0 -1 5 6 10 3 2 10 6 5 3 0 0 0 0 0 0.550481 2 -0.00277836 1 0 0.493735 0 -1 11 6 2 2 2 12 6 1 1 2 11 7 1 1 -0.00257525 -1 -2 0.615295 0 -1 12 4 4 3 3 12 5 4 1 0 0 0 0 0 0.47355 2 0.00116141 1 0 0.651057 0 -1 7 6 2 2 2 7 6 1 1 2 8 7 1 1 0.00233502 -1 -2 0.408834 0 -1 4 4 4 3 3 4 5 4 1 0 0 0 0 0 0.568415 2 0.00384993 1 0 0.302583 0 -1 11 4 3 3 3 12 4 1 3 0 0 0 0 0 0.00245296 -1 -2 0.52325 0 -1 9 3 2 1 2 9 3 1 1 0 0 0 0 0 0.201762 2 0.00367314 1 0 0.642843 0 -1 4 5 5 3 3 4 6 5 1 0 0 0 0 0 0.00219371 -1 -2 0.432887 0 -1 4 6 4 3 3 4 7 4 1 0 0 0 0 0 0.642051 2 -0.00646669 1 0 0.525407 0 -1 11 4 3 3 3 12 4 1 3 0 0 0 0 0 -0.00571863 -1 -2 0.249098 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 0.528762 2 0.000999419 1 0 0.33298 0 -1 6 4 3 3 3 7 4 1 3 0 0 0 0 0 -0.000782765 -1 -2 0.359834 0 -1 4 14 1 3 3 4 15 1 1 0 0 0 0 0 0.549834 2 0.00432312 0 1 0.481871 0 -1 9 7 2 3 2 9 7 1 3 0 0 0 0 0 0.00408383 -1 -2 0.526633 0 -1 17 0 3 2 2 17 1 3 1 0 0 0 0 0 0.310579 2 0.000305159 1 0 0.399529 0 -1 8 10 2 9 3 8 13 2 3 0 0 0 0 0 0.00126403 -1 -2 0.322844 0 -1 0 8 18 2 2 0 9 18 1 0 0 0 0 0 0.581922 2 -0.0101527 0 1 0.802607 0 -1 9 15 2 3 3 9 16 2 1 0 0 0 0 0 -0.00268637 -1 -2 0.387562 0 -1 8 7 4 3 3 8 8 4 1 0 0 0 0 0 0.546657 2 -0.00905156 1 0 0.437206 0 -1 1 14 6 6 2 1 14 3 3 2 4 17 3 3 -0.00632042 -1 -2 0.112655 0 -1 0 18 6 2 2 0 19 6 1 0 0 0 0 0 0.639542 2 0.00261173 0 1 0.542399 0 -1 12 9 4 3 2 12 9 2 3 0 0 0 0 0 0.014339 -1 -2 0.497927 0 -1 9 8 3 8 3 10 8 1 8 0 0 0 0 0 0.604224 2 0.00284528 1 0 0.349109 0 -1 4 9 4 3 2 6 9 2 3 0 0 0 0 0 1.47833e-05 -1 -2 0.419507 0 -1 4 18 6 1 3 6 18 2 1 0 0 0 0 0 0.577597 2 0.00818146 0 1 0.488599 0 -1 9 7 3 2 3 10 7 1 2 0 0 0 0 0 0.0066322 -1 -2 0.544447 0 -1 6 7 8 12 2 10 7 4 6 2 6 13 4 6 0.4421 2 -0.00224835 0 1 0.669979 0 -1 8 7 3 2 3 9 7 1 2 0 0 0 0 0 0.0123746 -1 -2 0.447861 0 -1 8 7 3 6 3 9 7 1 6 0 0 0 0 0 0.656489 2 -0.00665167 1 0 0.551188 0 -1 3 16 14 4 2 10 16 7 2 2 3 18 7 2 -0.00857506 -1 -2 0.401745 0 -1 1 14 18 4 2 10 14 9 2 2 1 16 9 2 0.540554 2 0.00650784 1 0 0.229439 0 -1 8 7 3 3 3 8 8 3 1 0 0 0 0 0 0.0286752 -1 -2 0.51779 0 -1 0 4 20 12 2 0 4 10 6 2 10 10 10 6 0.356776 2 0.00706739 0 1 0.55647 0 -1 5 5 10 12 2 10 5 5 6 2 5 11 5 6 0.00123678 -1 -2 0.36277 0 -1 10 2 4 7 2 10 2 2 7 0 0 0 0 0 0.557241 2 0.00748187 1 0 0.678491 0 -1 8 11 4 3 3 8 12 4 1 0 0 0 0 0 0.00471098 -1 -2 0.412125 0 -1 8 12 3 3 3 8 13 3 1 0 0 0 0 0 0.607224 2 -0.00694058 1 0 0.545977 0 -1 13 13 5 6 3 13 15 5 2 0 0 0 0 0 0.0333021 -1 -2 0.527671 0 -1 7 0 6 6 3 9 0 2 6 0 0 0 0 0 0.237492 2 0.0361046 1 0 0.0724928 0 -1 2 13 5 6 3 2 15 5 2 0 0 0 0 0 0.0196746 -1 -2 0.462635 0 -1 0 4 2 12 2 0 4 1 6 2 1 10 1 6 0.820896 2 0.00347662 0 1 0.520873 0 -1 9 19 3 1 3 10 19 1 1 0 0 0 0 0 0.00139874 -1 -2 0.548441 0 -1 18 0 2 6 3 18 2 2 2 0 0 0 0 0 0.423003 2 0.00409742 1 0 0.278055 0 -1 0 3 1 6 3 0 5 1 2 0 0 0 0 0 0.00269738 -1 -2 0.540383 0 -1 0 0 3 6 3 0 2 3 2 0 0 0 0 0 0.379099 2 -0.00565917 1 0 0.479834 0 -1 17 2 3 7 3 18 2 1 7 0 0 0 0 0 0.00039461 -1 -2 0.376695 0 -1 10 3 4 7 2 10 3 2 7 0 0 0 0 0 0.542923 2 0.00217506 1 0 0.620716 0 -1 0 2 3 7 3 1 2 1 7 0 0 0 0 0 0.00146144 -1 -2 0.335795 0 -1 6 2 4 8 2 8 2 2 8 0 0 0 0 0 0.514263 2 -0.000530066 1 0 0.534464 0 -1 13 0 1 4 2 13 2 1 2 0 0 0 0 0 0.148693 -1 -2 0.515961 0 -1 5 1 12 5 3 9 1 4 5 0 0 0 0 0 0.256182 2 -5.88165e-05 1 0 0.512309 0 -1 6 0 1 4 2 6 2 1 2 0 0 0 0 0 -0.00162754 -1 -2 0.601765 0 -1 3 1 12 5 3 7 1 4 5 0 0 0 0 0 0.310937 2 -0.0128818 0 1 0.271229 0 -1 9 12 3 8 3 10 12 1 8 0 0 0 0 0 0.000949829 -1 -2 0.544244 0 -1 7 13 6 1 3 9 13 2 1 0 0 0 0 0 0.402889 2 -0.012316 1 0 0.473607 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.00902866 -1 -2 0.745143 0 -1 5 16 7 3 3 5 17 7 1 0 0 0 0 0 0.348799 2 -0.0868761 0 1 0.229033 0 -1 0 12 20 6 3 0 14 20 2 0 0 0 0 0 -1.51076e-05 -1 -2 0.551789 0 -1 4 18 14 2 2 4 19 14 1 0 0 0 0 0 0.439315 2 -0.0174577 0 1 0.0901679 0 -1 8 12 3 8 3 9 12 1 8 0 0 0 0 0 -0.00252195 -1 -2 0.623354 0 -1 7 13 3 3 3 7 14 3 1 0 0 0 0 0 0.478946 2 0.00106565 0 1 0.54897 0 -1 5 5 12 10 2 11 5 6 5 2 5 10 6 5 -0.00425403 -1 -2 0.557981 0 -1 8 1 5 10 2 8 6 5 5 0 0 0 0 0 0.437588 2 -0.00903491 0 1 0.357916 0 -1 5 4 9 12 2 5 10 9 6 0 0 0 0 0 -0.0015231 -1 -2 0.561366 0 -1 7 13 6 6 3 7 15 6 2 0 0 0 0 0 0.393904 2 0.00284412 1 0 0.390155 0 -1 8 4 5 16 2 8 12 5 8 0 0 0 0 0 -0.00328244 -1 -2 0.452862 0 -1 8 12 4 6 2 8 15 4 3 0 0 0 0 0 0.544134 2 3.21617e-05 1 0 0.580311 0 -1 7 13 2 2 2 7 13 1 1 2 8 14 1 1 3.01184e-05 -1 -2 0.333685 0 -1 7 12 2 2 2 7 12 1 1 2 8 13 1 1 0.550486 2 -0.00561501 0 1 0.612479 0 -1 18 0 2 14 2 18 0 1 14 0 0 0 0 0 -0.0173892 -1 -2 0.0872716 0 -1 12 11 7 2 2 12 12 7 1 0 0 0 0 0 0.520459 2 -4.43611e-05 0 1 0.393533 0 -1 1 18 1 2 2 1 19 1 1 0 0 0 0 0 0.000103549 -1 -2 0.591885 0 -1 2 18 1 2 2 2 19 1 1 0 0 0 0 0 0.411961 2 0.00159396 0 1 0.483962 0 -1 9 7 2 1 2 9 7 1 1 0 0 0 0 0 0.00254408 -1 -2 0.478736 0 -1 9 6 2 3 2 9 6 1 3 0 0 0 0 0 0.636066 2 1.50832e-05 0 1 0.423112 0 -1 3 1 2 2 2 4 1 1 2 0 0 0 0 0 -9.92822e-05 -1 -2 0.427459 0 -1 3 0 3 2 2 3 1 3 1 0 0 0 0 0 0.609405 2 0.000553717 1 0 0.427199 0 -1 12 10 3 4 2 12 12 3 2 0 0 0 0 0 0.00191868 -1 -2 0.449711 0 -1 7 7 8 2 2 7 8 8 1 0 0 0 0 0 0.554912 2 -0.000507642 1 0 0.54772 0 -1 8 8 3 4 2 8 10 3 2 0 0 0 0 0 0.00172365 -1 -2 0.288292 0 -1 7 12 6 3 3 7 13 6 1 0 0 0 0 0 0.561513 13 -1 15 36.7265 75 2 0.0130922 0 1 0.333887 0 -1 0 2 10 3 2 5 2 5 3 0 0 0 0 0 0.000414465 -1 -2 0.309935 0 -1 0 1 20 6 3 0 3 20 2 0 0 0 0 0 0.667749 2 0.0218357 0 1 0.436905 0 -1 7 6 6 3 3 9 6 2 3 0 0 0 0 0 0.0483239 -1 -2 0.430172 0 -1 3 7 14 4 2 3 9 14 2 0 0 0 0 0 0.615389 2 0.0016092 0 1 0.338733 0 -1 5 7 3 6 3 5 9 3 2 0 0 0 0 0 0.00134698 -1 -2 0.624871 0 -1 8 8 3 12 3 8 12 3 4 0 0 0 0 0 0.359413 2 0.000177291 0 1 0.386842 0 -1 9 17 6 2 2 12 17 3 1 2 9 18 3 1 0.000367436 -1 -2 0.440935 0 -1 10 17 4 3 3 10 18 4 1 0 0 0 0 0 0.547647 2 -0.00123521 0 1 0.326017 0 -1 4 2 4 2 2 4 3 4 1 0 0 0 0 0 0.00117055 -1 -2 0.411135 0 -1 7 3 6 14 3 9 3 2 14 0 0 0 0 0 0.608816 2 -2.96954e-05 1 0 0.426942 0 -1 15 13 1 6 2 15 16 1 3 0 0 0 0 0 0.000270507 -1 -2 0.430647 0 -1 13 14 2 6 3 13 16 2 2 0 0 0 0 0 0.581051 2 -7.96262e-05 1 0 0.366914 0 -1 4 11 5 6 2 4 14 5 3 0 0 0 0 0 0.000331524 -1 -2 0.461066 0 -1 4 17 4 2 2 6 17 2 2 0 0 0 0 0 0.629059 2 -0.0523058 1 0 0.532869 0 -1 0 6 20 2 2 0 6 10 2 0 0 0 0 0 0.0268805 -1 -2 0.521326 0 -1 6 5 10 12 2 11 5 5 6 2 6 11 5 6 0.323122 2 -0.00024203 1 0 0.356857 0 -1 4 0 2 12 2 4 0 1 6 2 5 6 1 6 -0.00164246 -1 -2 0.344066 0 -1 4 1 6 2 3 6 1 2 2 0 0 0 0 0 0.56256 2 -0.000268303 1 0 0.456117 0 -1 13 7 2 1 2 13 7 1 1 0 0 0 0 0 -0.00226496 -1 -2 0.532135 0 -1 5 5 15 6 3 5 7 15 2 0 0 0 0 0 0.367415 2 0.0156272 1 0 0.202935 0 -1 1 10 18 2 2 1 10 9 1 2 10 11 9 1 0.162113 -1 -2 0.556303 0 -1 1 6 15 7 3 6 6 5 7 0 0 0 0 0 0.261885 2 -0.00373917 0 1 0.606219 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 -0.00208784 -1 -2 0.595076 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 0.454512 2 0.00233342 1 0 0.643552 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 6.51164e-05 -1 -2 0.352073 0 -1 8 13 3 2 2 8 14 3 1 0 0 0 0 0 0.517978 2 0.00746257 0 1 0.532669 0 -1 15 14 5 3 3 15 15 5 1 0 0 0 0 0 -0.0220327 -1 -2 0.349198 0 -1 0 14 20 1 2 0 14 10 1 0 0 0 0 0 0.542924 2 -0.00830816 0 1 0.208402 0 -1 0 14 6 3 3 0 15 6 1 0 0 0 0 0 -0.000432594 -1 -2 0.396527 0 -1 5 3 4 2 2 5 4 4 1 0 0 0 0 0 0.542545 2 -0.0322092 1 0 0.530641 0 -1 0 6 20 1 2 0 6 10 1 0 0 0 0 0 -0.000904248 -1 -2 0.545039 0 -1 6 3 10 14 2 11 3 5 7 2 6 10 5 7 0.42567 2 0.00227275 1 0 0.596861 0 -1 8 12 4 2 2 8 13 4 1 0 0 0 0 0 0.005982 -1 -2 0.475814 0 -1 6 3 8 6 2 6 3 4 3 2 10 6 4 3 0.315094 2 -0.000588566 1 0 0.484775 0 -1 13 7 2 1 2 13 7 1 1 0 0 0 0 0 -0.000882272 -1 -2 0.542632 0 -1 6 3 10 14 2 11 3 5 7 2 6 10 5 7 0.433834 2 -7.44735e-05 1 0 0.428751 0 -1 5 7 2 1 2 6 7 1 1 0 0 0 0 0 0.00039149 -1 -2 0.634519 0 -1 4 3 10 14 2 4 3 5 7 2 9 10 5 7 0.410185 2 -0.00369396 1 0 0.48491 0 -1 9 7 2 2 2 9 7 1 2 0 0 0 0 0 -0.0112078 -1 -2 0.414634 0 -1 0 3 20 1 2 0 3 10 1 0 0 0 0 0 0.547126 2 -0.0103374 0 1 0.287718 0 -1 2 1 10 3 3 2 2 10 1 0 0 0 0 0 0.00368836 -1 -2 0.51019 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 0.721695 2 -0.00389843 1 0 0.527618 0 -1 9 17 3 2 3 10 17 1 2 0 0 0 0 0 -0.00599867 -1 -2 0.661846 0 -1 9 7 3 6 3 10 7 1 6 0 0 0 0 0 0.484163 2 0.00450437 1 0 0.187416 0 -1 8 17 3 2 3 9 17 1 2 0 0 0 0 0 0.0177995 -1 -2 0.461693 0 -1 8 7 3 6 3 9 7 1 6 0 0 0 0 0 0.708897 2 -0.0184626 0 1 0.300198 0 -1 16 3 4 6 3 16 5 4 2 0 0 0 0 0 1.49313e-05 -1 -2 0.456181 0 -1 15 6 2 12 2 16 6 1 6 2 15 12 1 6 0.561079 2 -0.0860212 0 1 0.23417 0 -1 1 4 18 10 2 1 4 9 5 2 10 9 9 5 -6.08188e-05 -1 -2 0.567229 0 -1 9 4 2 4 2 9 6 2 2 0 0 0 0 0 0.419996 2 0.00126707 1 0 0.620748 0 -1 12 5 3 2 2 12 6 3 1 0 0 0 0 0 0.00136999 -1 -2 0.539496 0 -1 5 12 10 4 2 5 14 10 2 0 0 0 0 0 0.382386 2 0.00331628 1 0 0.706168 0 -1 5 5 3 2 2 5 6 3 1 0 0 0 0 0 -0.0014532 -1 -2 0.306551 0 -1 4 6 12 6 3 8 6 4 6 0 0 0 0 0 0.482737 2 -0.0714921 1 0 0.519312 0 -1 14 4 6 6 3 14 6 6 2 0 0 0 0 0 0.0019858 -1 -2 0.464244 0 -1 16 0 4 6 2 18 0 2 3 2 16 3 2 3 0.580769 2 0.00625165 1 0 0.294981 0 -1 0 4 6 6 3 0 6 6 2 0 0 0 0 0 0.00270055 -1 -2 0.458589 0 -1 0 0 4 6 2 0 0 2 3 2 2 3 2 3 0.602235 2 0.0111304 0 1 0.435784 0 -1 12 0 8 5 2 12 0 4 5 0 0 0 0 0 0.0150928 -1 -2 0.456154 0 -1 16 0 4 17 2 16 0 2 17 0 0 0 0 0 0.611906 2 -0.0279433 0 1 0.653714 0 -1 1 0 18 20 3 7 0 6 20 0 0 0 0 0 4.4037e-05 -1 -2 0.347472 0 -1 6 0 2 5 2 7 0 1 5 0 0 0 0 0 0.533697 2 -0.0122328 0 1 0.373168 0 -1 0 6 20 1 2 0 6 10 1 0 0 0 0 0 -0.000685914 -1 -2 0.571723 0 -1 8 7 6 4 3 10 7 2 4 0 0 0 0 0 0.479338 2 -0.0038993 0 1 0.405644 0 -1 1 1 16 4 2 1 1 8 2 2 9 3 8 2 0.000491139 -1 -2 0.617405 0 -1 7 2 4 2 2 7 2 2 1 2 9 3 2 1 0.447175 2 0.00821177 1 0 0.61797 0 -1 7 4 9 3 3 7 5 9 1 0 0 0 0 0 -0.0455645 -1 -2 0.228549 0 -1 10 4 5 12 2 10 10 5 6 0 0 0 0 0 0.524957 2 -0.00536319 0 1 0.178495 0 -1 3 12 2 3 3 3 13 2 1 0 0 0 0 0 -0.012275 -1 -2 0.726195 0 -1 8 8 3 5 3 9 8 1 5 0 0 0 0 0 0.45504 2 0.0054186 0 1 0.525299 0 -1 13 9 2 3 2 13 9 1 3 0 0 0 0 0 0.00081847 -1 -2 0.544522 0 -1 15 11 2 2 2 15 12 2 1 0 0 0 0 0 0.327222 2 0.00413581 1 0 0.701383 0 -1 5 6 2 3 3 5 7 2 1 0 0 0 0 0 0.00039578 -1 -2 0.496594 0 -1 2 11 6 2 2 2 12 6 1 0 0 0 0 0 0.32956 2 0.00468877 0 1 0.536264 0 -1 15 11 4 3 3 15 12 4 1 0 0 0 0 0 -0.0182554 -1 -2 0.649611 0 -1 16 0 4 17 2 16 0 2 17 0 0 0 0 0 0.475714 2 -0.00627365 0 1 0.234374 0 -1 1 11 4 3 3 1 12 4 1 0 0 0 0 0 0.00243202 -1 -2 0.462012 0 -1 9 11 1 3 3 9 12 1 1 0 0 0 0 0 0.689842 2 -0.0496176 0 1 0.210072 0 -1 10 9 6 7 2 10 9 3 7 0 0 0 0 0 0.00117012 -1 -2 0.462153 0 -1 8 15 4 2 2 8 16 4 1 0 0 0 0 0 0.579714 2 -0.0452373 0 1 0.211826 0 -1 4 9 6 7 2 7 9 3 7 0 0 0 0 0 0.00475634 -1 -2 0.488461 0 -1 9 14 2 3 3 9 15 2 1 0 0 0 0 0 0.68725 2 -0.014836 1 0 0.527511 0 -1 0 2 20 2 2 10 2 10 1 2 0 3 10 1 0.000774366 -1 -2 0.417232 0 -1 6 7 8 2 2 6 8 8 1 0 0 0 0 0 0.549114 2 0.014836 1 0 0.212488 0 -1 0 2 20 2 2 0 2 10 1 2 10 3 10 1 -0.000808925 -1 -2 0.549522 0 -1 3 1 2 10 2 3 1 1 5 2 4 6 1 5 0.42078 2 0.000775177 0 1 0.332194 0 -1 13 4 1 10 2 13 9 1 5 0 0 0 0 0 -0.0067619 -1 -2 0.221296 0 -1 9 8 4 3 3 9 9 4 1 0 0 0 0 0 0.523265 2 -0.0401359 0 1 0.11018 0 -1 2 11 16 4 2 2 11 8 2 2 10 13 8 2 -0.00336515 -1 -2 0.38101 0 -1 5 1 3 5 3 6 1 1 5 0 0 0 0 0 0.561729 2 0.00074713 1 0 0.579506 0 -1 9 10 2 3 3 9 11 2 1 0 0 0 0 0 -0.00427274 -1 -2 0.639227 0 -1 9 11 2 2 2 9 12 2 1 0 0 0 0 0 0.471144 2 0.00362025 1 0 0.340988 0 -1 0 10 20 2 2 0 11 20 1 0 0 0 0 0 0.000473076 -1 -2 0.36593 0 -1 1 7 6 4 2 1 7 3 2 2 4 9 3 2 0.538817 2 0.0330949 1 0 0.717039 0 -1 12 0 8 8 2 16 0 4 4 2 12 4 4 4 -0.0115441 -1 -2 0.638682 0 -1 14 1 6 4 3 16 1 2 4 0 0 0 0 0 0.46813 2 -0.00742345 0 1 0.32637 0 -1 6 3 2 14 2 6 10 2 7 0 0 0 0 0 -0.0042253 -1 -2 0.576782 0 -1 6 1 7 12 2 6 7 7 6 0 0 0 0 0 0.434642 2 0.0181331 0 1 0.469783 0 -1 5 0 15 5 3 10 0 5 5 0 0 0 0 0 0.0070903 -1 -2 0.443739 0 -1 15 0 4 10 2 15 0 2 10 0 0 0 0 0 0.606167 2 -0.0132729 0 1 0.655851 0 -1 1 0 18 3 3 7 0 6 3 0 0 0 0 0 0.000146322 -1 -2 0.337635 0 -1 0 0 17 2 2 0 1 17 1 0 0 0 0 0 0.509166 2 -0.00357902 0 1 0.294788 0 -1 10 0 3 3 3 11 0 1 3 0 0 0 0 0 -0.000469971 -1 -2 0.555698 0 -1 10 0 3 12 3 11 0 1 12 0 0 0 0 0 0.466546 2 -0.0481794 0 1 0.733836 0 -1 1 3 4 16 2 1 3 2 8 2 3 11 2 8 -0.000925814 -1 -2 0.354387 0 -1 7 0 3 3 3 8 0 1 3 0 0 0 0 0 0.528515 2 -0.0147807 0 1 0.194444 0 -1 9 13 2 6 2 9 16 2 3 0 0 0 0 0 -0.100275 -1 -2 0.0990493 0 -1 9 0 6 13 3 11 0 2 13 0 0 0 0 0 0.513985 2 -0.000938481 0 1 0.582711 0 -1 7 7 3 2 3 8 7 1 2 0 0 0 0 0 -0.00288614 -1 -2 0.344143 0 -1 8 2 1 12 3 8 6 1 4 0 0 0 0 0 0.514884 2 -0.0436828 1 0 0.5208 0 -1 4 10 12 6 2 10 10 6 3 2 4 13 6 3 0.00261157 -1 -2 0.48355 0 -1 13 5 2 3 3 13 6 2 1 0 0 0 0 0 0.632222 2 0.0436828 1 0 0.136454 0 -1 4 10 12 6 2 4 10 6 3 2 10 13 6 3 0.00171795 -1 -2 0.453732 0 -1 5 5 2 3 3 5 6 2 1 0 0 0 0 0 0.606675 2 -0.0339649 1 0 0.496837 0 -1 8 6 6 7 3 10 6 2 7 0 0 0 0 0 -0.00109936 -1 -2 0.583168 0 -1 9 6 2 4 2 9 6 1 4 0 0 0 0 0 0.468824 2 0.0543011 1 0 0.756829 0 -1 6 6 6 7 3 8 6 2 7 0 0 0 0 0 0.00109936 -1 -2 0.433015 0 -1 9 6 2 4 2 10 6 1 4 0 0 0 0 0 0.576847 2 -1.49541e-05 1 0 0.444328 0 -1 12 9 2 3 2 12 9 1 3 0 0 0 0 0 0.0314159 -1 -2 0.527447 0 -1 0 6 20 1 2 0 6 10 1 0 0 0 0 0 0.303786 2 0.0108318 1 0 0.358172 0 -1 5 7 10 2 2 10 7 5 2 0 0 0 0 0 0.000865457 -1 -2 0.593758 0 -1 1 16 4 3 3 1 17 4 1 0 0 0 0 0 0.429463 2 0.00227432 1 0 0.595458 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.00393408 -1 -2 0.479222 0 -1 10 3 5 3 3 10 4 5 1 0 0 0 0 0 0.585613 2 0.00814519 1 0 0.357348 0 -1 3 9 14 8 2 3 9 7 4 2 10 13 7 4 -0.00527633 -1 -2 0.402602 0 -1 6 8 8 10 2 6 8 4 5 2 10 13 4 5 0.576474 2 -0.00837879 1 0 0.498133 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.00156219 -1 -2 0.473659 0 -1 10 3 5 3 3 10 4 5 1 0 0 0 0 0 0.558361 2 0.00323187 1 0 0.616744 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.0066804 -1 -2 0.413142 0 -1 5 3 5 3 3 5 4 5 1 0 0 0 0 0 0.62807 2 -0.00333965 0 1 0.344636 0 -1 13 16 2 3 3 13 17 2 1 0 0 0 0 0 -0.209335 -1 -2 0.103866 0 -1 0 5 20 6 3 0 7 20 2 0 0 0 0 0 0.520449 2 0.00638058 1 0 0.21674 0 -1 3 14 3 3 3 3 15 3 1 0 0 0 0 0 -0.00601378 -1 -2 0.67384 0 -1 7 15 5 3 3 7 16 5 1 0 0 0 0 0 0.489665 2 -0.00817561 1 0 0.517792 0 -1 12 9 2 3 2 12 9 1 3 0 0 0 0 0 0.000639518 -1 -2 0.481965 0 -1 15 13 2 6 2 15 13 1 6 0 0 0 0 0 0.546444 2 0.00101278 1 0 0.34236 0 -1 6 9 2 3 2 7 9 1 3 0 0 0 0 0 0.000497846 -1 -2 0.448846 0 -1 3 13 2 6 2 4 13 1 6 0 0 0 0 0 0.591267 2 0.000135965 1 0 0.556886 0 -1 11 4 2 4 2 11 4 1 4 0 0 0 0 0 0.0135717 -1 -2 0.516107 0 -1 13 4 2 5 2 13 4 1 5 0 0 0 0 0 0.1713 2 3.02591e-05 1 0 0.49162 0 -1 7 4 2 4 2 8 4 1 4 0 0 0 0 0 -0.00326258 -1 -2 0.640466 0 -1 5 4 2 5 2 6 4 1 5 0 0 0 0 0 0.285908 2 -0.00019217 1 0 0.545928 0 -1 19 6 1 2 2 19 7 1 1 0 0 0 0 0 0.0219939 -1 -2 0.471571 0 -1 12 7 8 13 2 12 7 4 13 0 0 0 0 0 0.569008 2 0.000789078 1 0 0.327983 0 -1 0 6 1 2 2 0 7 1 1 0 0 0 0 0 0.000508939 -1 -2 0.430201 0 -1 6 15 4 3 3 6 16 4 1 0 0 0 0 0 0.569605 2 0.000116627 1 0 0.538724 0 -1 11 8 2 2 2 11 9 2 1 0 0 0 0 0 0.00806041 -1 -2 0.502142 0 -1 11 7 2 4 2 11 7 1 4 0 0 0 0 0 0.596532 2 0.00095926 1 0 0.347349 0 -1 4 13 2 3 3 4 14 2 1 0 0 0 0 0 -0.0195261 -1 -2 0.647555 0 -1 0 17 18 3 3 6 17 6 3 0 0 0 0 0 0.464378 14 -1 16 38.236 78 2 0.0412424 0 1 0.339332 0 -1 1 0 18 5 3 7 0 6 5 0 0 0 0 0 0.0156267 -1 -2 0.51041 0 -1 5 7 3 4 2 5 9 3 2 0 0 0 0 0 0.777282 2 0.000299472 0 1 0.366467 0 -1 10 6 2 2 2 10 6 1 2 0 0 0 0 0 -0.00100376 -1 -2 0.540565 0 -1 6 4 14 4 2 13 4 7 2 2 6 6 7 2 0.392621 2 0.000681282 0 1 0.425152 0 -1 5 16 6 4 2 5 16 3 2 2 8 18 3 2 0.00013099 -1 -2 0.413514 0 -1 7 15 2 4 2 7 17 2 2 0 0 0 0 0 0.692575 2 0.00316967 1 0 0.345587 0 -1 8 5 5 14 2 8 12 5 7 0 0 0 0 0 -0.00205874 -1 -2 0.223419 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 0.528612 2 -0.00046395 1 0 0.420652 0 -1 7 5 3 7 3 8 5 1 7 0 0 0 0 0 0.00350895 -1 -2 0.650298 0 -1 0 0 3 9 3 0 3 3 3 0 0 0 0 0 0.41176 2 -0.0023976 1 0 0.36733 0 -1 8 6 8 8 2 12 6 4 4 2 8 10 4 4 0.00109013 -1 -2 0.290624 0 -1 4 8 13 2 2 4 9 13 1 0 0 0 0 0 0.544511 2 -0.000165244 0 1 0.423352 0 -1 4 3 6 1 3 6 3 2 1 0 0 0 0 0 -0.000416023 -1 -2 0.388636 0 -1 9 1 2 6 3 9 3 2 2 0 0 0 0 0 0.626917 2 -0.000237399 0 1 0.552445 0 -1 10 5 6 4 3 12 5 2 4 0 0 0 0 0 0.0247398 -1 -2 0.49601 0 -1 9 5 2 12 3 9 9 2 4 0 0 0 0 0 0.537349 2 -0.0153428 0 1 0.684941 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 0.0115405 -1 -2 0.403724 0 -1 8 12 4 3 3 8 13 4 1 0 0 0 0 0 0.678694 2 0.00642306 1 0 0.381468 0 -1 10 3 6 7 3 12 3 2 7 0 0 0 0 0 0.0129778 -1 -2 0.552706 0 -1 3 10 16 6 3 3 12 16 2 0 0 0 0 0 0.374496 2 0.00110634 0 1 0.352093 0 -1 5 5 3 10 2 5 10 3 5 0 0 0 0 0 0.00137437 -1 -2 0.56419 0 -1 6 10 3 6 2 6 13 3 3 0 0 0 0 0 0.307503 2 0.0162338 0 1 0.488883 0 -1 17 2 2 12 2 17 2 1 12 0 0 0 0 0 -0.000815194 -1 -2 0.545632 0 -1 16 6 2 14 2 16 13 2 7 0 0 0 0 0 0.474355 2 -0.0907825 0 1 0.292525 0 -1 3 11 12 9 3 3 14 12 3 0 0 0 0 0 0.0116652 -1 -2 0.468845 0 -1 0 2 4 12 2 2 2 2 12 0 0 0 0 0 0.623035 2 -0.0232864 0 1 0.689584 0 -1 18 0 2 18 2 18 0 1 18 0 0 0 0 0 0.00215593 -1 -2 0.53558 0 -1 16 12 3 2 2 16 13 3 1 0 0 0 0 0 0.342347 2 -0.00431672 0 1 0.593708 0 -1 0 2 2 15 2 1 2 1 15 0 0 0 0 0 0.00156106 -1 -2 0.470866 0 -1 1 10 2 4 2 1 12 2 2 0 0 0 0 0 0.2737 2 0.0140766 0 1 0.528716 0 -1 11 1 2 18 2 11 1 1 18 0 0 0 0 0 0.00710186 -1 -2 0.533619 0 -1 3 2 14 2 2 10 2 7 1 2 3 3 7 1 0.322481 2 -0.00482216 0 1 0.298391 0 -1 7 1 2 18 2 8 1 1 18 0 0 0 0 0 -0.00538529 -1 -2 0.5624 0 -1 6 1 8 12 2 6 7 8 6 0 0 0 0 0 0.429591 2 0.00734833 1 0 0.681396 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 -0.00357075 -1 -2 0.585797 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.460343 2 0.00233401 1 0 0.274485 0 -1 0 13 5 2 2 0 14 5 1 0 0 0 0 0 0.00474328 -1 -2 0.504753 0 -1 9 0 2 6 2 9 0 1 3 2 10 3 1 3 0.236274 2 0.00650555 0 1 0.524225 0 -1 9 0 2 6 2 10 0 1 3 2 9 3 1 3 0.0125892 -1 -2 0.482369 0 -1 9 7 3 6 3 10 7 1 6 0 0 0 0 0 0.675254 2 -0.00633584 0 1 0.173463 0 -1 9 0 2 6 2 9 0 1 3 2 10 3 1 3 -0.00576397 -1 -2 0.635438 0 -1 8 7 3 6 3 9 7 1 6 0 0 0 0 0 0.458748 2 0.00135997 0 1 0.458038 0 -1 9 6 2 6 2 9 6 1 6 0 0 0 0 0 0.0284043 -1 -2 0.517638 0 -1 9 4 4 3 2 9 4 2 3 0 0 0 0 0 0.120439 2 -0.00929582 0 1 0.233796 0 -1 0 4 4 3 3 0 5 4 1 0 0 0 0 0 -0.00118003 -1 -2 0.390281 0 -1 8 7 4 2 2 8 8 4 1 0 0 0 0 0 0.565293 2 -0.00209481 0 1 0.551203 0 -1 10 6 6 3 3 12 6 2 3 0 0 0 0 0 0.004168 -1 -2 0.545598 0 -1 9 6 3 12 3 9 10 3 4 0 0 0 0 0 0.479895 2 0.00544589 1 0 0.612709 0 -1 5 4 2 3 3 5 5 2 1 0 0 0 0 0 -0.00127665 -1 -2 0.531713 0 -1 5 6 1 3 3 5 7 1 1 0 0 0 0 0 0.385093 2 0.000594043 0 1 0.544644 0 -1 9 17 3 2 3 10 17 1 2 0 0 0 0 0 0.0423096 -1 -2 0.523464 0 -1 0 7 20 2 2 0 8 20 1 0 0 0 0 0 0.221304 2 0.00561897 0 1 0.49162 0 -1 4 3 6 7 3 6 3 2 7 0 0 0 0 0 0.00724012 -1 -2 0.147148 0 -1 5 10 6 10 2 5 10 3 5 2 8 15 3 5 0.485289 2 -0.00456107 0 1 0.277377 0 -1 9 17 3 2 3 10 17 1 2 0 0 0 0 0 4.55062e-05 -1 -2 0.462646 0 -1 9 10 2 2 2 9 11 2 1 0 0 0 0 0 0.576808 2 -0.00619038 0 1 0.164429 0 -1 8 17 3 2 3 9 17 1 2 0 0 0 0 0 0.000811865 -1 -2 0.477859 0 -1 5 6 1 3 3 5 7 1 1 0 0 0 0 0 0.626186 2 0.0137798 0 1 0.525731 0 -1 0 1 20 2 2 10 1 10 1 2 0 2 10 1 0.00112903 -1 -2 0.549805 0 -1 14 2 6 9 3 14 5 6 3 0 0 0 0 0 0.398311 2 -0.000106104 0 1 0.403352 0 -1 5 3 3 2 2 5 4 3 1 0 0 0 0 0 0.000166958 -1 -2 0.414934 0 -1 5 4 4 2 2 7 4 2 2 0 0 0 0 0 0.579534 2 0.00112903 1 0 0.393411 0 -1 14 2 6 9 3 14 5 6 3 0 0 0 0 0 -0.120193 -1 -2 0.0734005 0 -1 0 12 20 6 3 0 14 20 2 0 0 0 0 0 0.520259 2 -0.0152307 0 1 0.374951 0 -1 2 2 16 4 2 2 2 8 2 2 10 4 8 2 0.00357598 -1 -2 0.507815 0 -1 7 12 5 3 3 7 13 5 1 0 0 0 0 0 0.660607 2 0.0134795 0 1 0.454771 0 -1 14 9 6 10 2 14 9 3 10 0 0 0 0 0 -0.0021163 -1 -2 0.331101 0 -1 16 6 3 2 2 16 7 3 1 0 0 0 0 0 0.538426 2 -0.0178777 0 1 0.651325 0 -1 0 9 6 10 2 3 9 3 10 0 0 0 0 0 0.0010932 -1 -2 0.526477 0 -1 0 16 5 2 2 0 17 5 1 0 0 0 0 0 0.345699 2 -0.00305532 0 1 0.626861 0 -1 9 12 2 3 3 9 13 2 1 0 0 0 0 0 0.0036365 -1 -2 0.539921 0 -1 9 7 2 12 3 9 11 2 4 0 0 0 0 0 0.43454 2 9.78965e-05 0 1 0.383561 0 -1 3 2 6 2 3 5 2 2 2 0 0 0 0 0 -0.000327144 -1 -2 0.333767 0 -1 4 1 1 2 2 4 2 1 1 0 0 0 0 0 0.553917 2 0.00043425 1 0 0.578827 0 -1 11 15 1 2 2 11 16 1 1 0 0 0 0 0 0.0140056 -1 -2 0.527508 0 -1 3 1 16 2 2 11 1 8 1 2 3 2 8 1 0.270113 2 -0.000926549 0 1 0.585228 0 -1 3 6 2 2 2 3 6 1 1 2 4 7 1 1 0.00395043 -1 -2 0.472834 0 -1 5 11 10 6 2 5 11 5 3 2 10 14 5 3 0.331392 2 -0.000580869 1 0 0.425881 0 -1 10 11 4 6 2 10 14 4 3 0 0 0 0 0 -0.012018 -1 -2 0.560979 0 -1 14 9 6 11 3 16 9 2 11 0 0 0 0 0 0.489519 2 -0.145215 0 1 0.0438945 0 -1 0 9 6 11 3 2 9 2 11 0 0 0 0 0 -0.0066049 -1 -2 0.422917 0 -1 2 11 16 6 2 2 11 8 3 2 10 14 8 3 0.561629 2 -0.0349098 1 0 0.478813 0 -1 12 0 8 10 2 16 0 4 5 2 12 5 4 5 0.00374784 -1 -2 0.480028 0 -1 14 2 6 4 3 16 2 2 4 0 0 0 0 0 0.580139 2 0.033038 1 0 0.707818 0 -1 0 0 8 10 2 0 0 4 5 2 4 5 4 5 0.00368726 -1 -2 0.444962 0 -1 0 2 6 4 3 2 2 2 4 0 0 0 0 0 0.595773 2 -0.00453119 0 1 0.417705 0 -1 4 9 15 2 3 9 9 5 2 0 0 0 0 0 0.00410585 -1 -2 0.537295 0 -1 12 3 4 8 2 14 3 2 4 2 12 7 2 4 0.373693 2 -0.00875998 0 1 0.665881 0 -1 9 2 2 9 2 10 2 1 9 0 0 0 0 0 -0.0230033 -1 -2 0.264792 0 -1 0 2 20 1 2 10 2 10 1 0 0 0 0 0 0.510182 2 0.00536648 0 1 0.454863 0 -1 16 1 4 5 2 16 1 2 5 0 0 0 0 0 0.0389718 -1 -2 0.515706 0 -1 16 0 4 6 2 16 3 4 3 0 0 0 0 0 0.343644 2 -0.0277672 0 1 0.235439 0 -1 4 3 6 4 3 6 3 2 4 0 0 0 0 0 -0.00988941 -1 -2 0.688774 0 -1 0 0 18 5 3 6 0 6 5 0 0 0 0 0 0.511105 2 -0.00320731 0 1 0.543887 0 -1 6 2 12 14 2 12 2 6 7 2 6 9 6 7 -0.00067485 -1 -2 0.545115 0 -1 11 8 3 5 3 12 8 1 5 0 0 0 0 0 0.483135 2 -0.00519475 0 1 0.211342 0 -1 5 12 2 2 2 5 13 2 1 0 0 0 0 0 -0.000261699 -1 -2 0.527368 0 -1 5 10 4 3 2 7 10 2 3 0 0 0 0 0 0.399259 2 0.00224215 0 1 0.468826 0 -1 4 9 15 2 3 9 9 5 2 0 0 0 0 0 -0.00121398 -1 -2 0.550424 0 -1 10 7 6 2 3 12 7 2 2 0 0 0 0 0 0.438487 2 -0.00294698 0 1 0.389285 0 -1 1 9 15 2 3 6 9 5 2 0 0 0 0 0 -0.000392918 -1 -2 0.600172 0 -1 5 0 2 10 2 5 0 1 5 2 6 5 1 5 0.456166 2 0.625507 1 0 0.0681256 0 -1 0 0 20 14 2 0 7 20 7 0 0 0 0 0 0.00977445 -1 -2 0.481303 0 -1 12 7 8 4 2 12 7 4 4 0 0 0 0 0 0.562066 2 0.0943782 1 0 0.0666323 0 -1 0 7 8 4 2 4 7 4 4 0 0 0 0 0 -0.00195609 -1 -2 0.358823 0 -1 8 1 3 3 3 9 1 1 3 0 0 0 0 0 0.529541 2 0.00906528 0 1 0.482269 0 -1 9 7 3 4 3 10 7 1 4 0 0 0 0 0 0.000421381 -1 -2 0.467033 0 -1 9 9 3 1 3 10 9 1 1 0 0 0 0 0 0.568311 2 -0.000442202 1 0 0.53608 0 -1 8 9 3 2 2 8 10 3 1 0 0 0 0 0 -0.00473135 -1 -2 0.613725 0 -1 8 4 2 8 2 8 4 1 4 2 9 8 1 4 0.318809 2 0.00153955 0 1 0.448772 0 -1 5 8 12 3 3 5 9 12 1 0 0 0 0 0 0.0024315 -1 -2 0.489417 0 -1 11 14 1 3 3 11 15 1 1 0 0 0 0 0 0.671665 2 -0.0155816 0 1 0.333674 0 -1 6 10 3 6 3 6 12 3 2 0 0 0 0 0 0.00108169 -1 -2 0.471822 0 -1 4 17 8 3 3 4 18 8 1 0 0 0 0 0 0.596063 2 -0.00221977 0 1 0.358855 0 -1 17 6 2 3 3 17 7 2 1 0 0 0 0 0 -0.000930487 -1 -2 0.621871 0 -1 9 12 2 2 2 10 12 1 1 2 9 13 1 1 0.48173 2 -0.00474187 0 1 0.255003 0 -1 9 13 2 4 2 9 13 1 2 2 10 15 1 2 -0.00629504 -1 -2 0.672808 0 -1 9 11 2 3 3 9 12 2 1 0 0 0 0 0 0.505106 2 0.0035216 0 1 0.540191 0 -1 5 5 12 10 2 11 5 6 5 2 5 10 6 5 -0.00242894 -1 -2 0.541946 0 -1 6 3 12 12 2 12 3 6 6 2 6 9 6 6 0.434714 2 -0.00252615 0 1 0.697062 0 -1 5 7 2 2 2 5 7 1 1 2 6 8 1 1 -0.00148173 -1 -2 0.326342 0 -1 4 3 3 2 3 5 3 1 2 0 0 0 0 0 0.491787 2 -0.224745 0 1 0.00729373 0 -1 6 2 12 14 2 12 2 6 7 2 6 9 6 7 0.00283425 -1 -2 0.457923 0 -1 5 2 12 3 3 9 2 4 3 0 0 0 0 0 0.537988 2 -0.0208216 0 1 0.602409 0 -1 1 1 18 17 3 7 1 6 17 0 0 0 0 0 0.000148963 -1 -2 0.333614 0 -1 0 9 10 1 2 5 9 5 1 0 0 0 0 0 0.496282 2 -0.00335245 0 1 0.355875 0 -1 16 8 4 3 3 16 9 4 1 0 0 0 0 0 -0.0372799 -1 -2 0.169856 0 -1 7 13 6 6 2 7 16 6 3 0 0 0 0 0 0.520899 2 0.000138968 1 0 0.559069 0 -1 6 14 1 6 3 6 16 1 2 0 0 0 0 0 -0.000319126 -1 -2 0.584873 0 -1 6 17 4 2 2 6 18 4 1 0 0 0 0 0 0.379584 2 0.000540035 1 0 0.567029 0 -1 10 18 6 2 2 13 18 3 1 2 10 19 3 1 0.00389569 -1 -2 0.518269 0 -1 16 8 1 3 3 16 9 1 1 0 0 0 0 0 0.332771 2 0.00160845 1 0 0.541049 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 -0.000574746 -1 -2 0.602264 0 -1 9 15 1 2 2 9 16 1 1 0 0 0 0 0 0.364464 2 0.013435 1 0 0.344128 0 -1 13 0 3 12 3 14 0 1 12 0 0 0 0 0 0.00213681 -1 -2 0.529243 0 -1 15 11 1 3 3 15 12 1 1 0 0 0 0 0 0.274708 2 0.0141576 1 0 0.802787 0 -1 8 15 3 3 3 8 16 3 1 0 0 0 0 0 0.00538844 -1 -2 0.522232 0 -1 4 0 3 12 3 5 0 1 12 0 0 0 0 0 0.358673 2 0.00880134 0 1 0.490039 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 0.000388588 -1 -2 0.468106 0 -1 9 9 3 1 3 10 9 1 1 0 0 0 0 0 0.572195 2 -0.00221436 0 1 0.538881 0 -1 2 2 12 14 2 2 2 6 7 2 8 9 6 7 -0.0084643 -1 -2 0.667554 0 -1 4 2 12 3 3 8 2 4 3 0 0 0 0 0 0.344844 2 0.0150444 1 0 0.923961 0 -1 18 18 2 2 2 18 18 1 2 0 0 0 0 0 0.00763464 -1 -2 0.48849 0 -1 17 2 3 8 3 18 2 1 8 0 0 0 0 0 0.630605 2 0.000338951 1 0 0.399743 0 -1 0 18 2 2 2 1 18 1 2 0 0 0 0 0 0.000211576 -1 -2 0.566398 0 -1 6 11 2 6 2 6 14 2 3 0 0 0 0 0 0.397298 2 -0.0275149 1 0 0.520106 0 -1 13 10 5 6 3 13 12 5 2 0 0 0 0 0 0.0516031 -1 -2 0.514073 0 -1 5 8 15 3 3 5 9 15 1 0 0 0 0 0 0.124513 2 0.00375107 1 0 0.38021 0 -1 2 10 5 6 3 2 12 5 2 0 0 0 0 0 -0.00214576 -1 -2 0.330945 0 -1 0 8 15 3 3 0 9 15 1 0 0 0 0 0 0.547454 2 -0.00058178 1 0 0.48926 0 -1 16 2 3 1 3 17 2 1 1 0 0 0 0 0 -0.000936385 -1 -2 0.59374 0 -1 17 4 3 2 3 18 4 1 2 0 0 0 0 0 0.466467 2 0.0416675 1 0 0.702135 0 -1 0 8 8 12 2 0 8 4 6 2 4 14 4 6 -0.00677638 -1 -2 0.322275 0 -1 1 7 8 6 2 1 7 4 3 2 5 10 4 3 0.50684 2 -0.00291706 1 0 0.47177 0 -1 14 1 6 2 3 16 1 2 2 0 0 0 0 0 0.000327895 -1 -2 0.450938 0 -1 15 0 4 4 2 17 0 2 2 2 15 2 2 2 0.565116 15 -1 17 44.683 91 2 0.0117298 0 1 0.380522 0 -1 1 1 4 11 2 3 1 2 11 0 0 0 0 0 0.00117122 -1 -2 0.314002 0 -1 5 5 1 8 2 5 9 1 4 0 0 0 0 0 0.685815 2 0.00935551 1 0 0.683467 0 -1 7 7 6 1 3 9 7 2 1 0 0 0 0 0 0.00165706 -1 -2 0.299247 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 0.547568 2 -0.00133878 1 0 0.294141 0 -1 8 4 4 4 2 8 6 4 2 0 0 0 0 0 0.000175806 -1 -2 0.389698 0 -1 2 4 9 1 3 5 4 3 1 0 0 0 0 0 0.587297 2 -0.00294732 0 1 0.357657 0 -1 9 12 2 8 2 9 16 2 4 0 0 0 0 0 0.00832209 -1 -2 0.52324 0 -1 3 8 14 12 2 3 14 14 6 0 0 0 0 0 0.323109 2 0.00743667 1 0 0.671567 0 -1 6 13 7 3 3 6 14 7 1 0 0 0 0 0 -0.000213229 -1 -2 0.547054 0 -1 5 9 6 3 3 7 9 2 3 0 0 0 0 0 0.38634 2 -0.00780246 0 1 0.277146 0 -1 12 1 6 3 3 12 2 6 1 0 0 0 0 0 0.000566112 -1 -2 0.468914 0 -1 8 12 6 2 2 8 13 6 1 0 0 0 0 0 0.585196 2 -0.00923465 0 1 0.27044 0 -1 0 2 18 2 2 0 2 9 1 2 9 3 9 1 -1.46765e-05 -1 -2 0.562255 0 -1 6 10 3 6 2 6 13 3 3 0 0 0 0 0 0.357932 2 0.00970079 0 1 0.417387 0 -1 14 0 6 6 2 14 0 3 6 0 0 0 0 0 -0.00353207 -1 -2 0.419501 0 -1 15 0 5 8 2 15 4 5 4 0 0 0 0 0 0.554947 2 0.0216164 1 0 0.285739 0 -1 7 16 6 4 3 9 16 2 4 0 0 0 0 0 0.00345676 -1 -2 0.602453 0 -1 2 11 14 4 2 2 11 7 2 2 9 13 7 2 0.437751 2 0.0229143 0 1 0.468935 0 -1 14 10 6 10 2 14 10 3 10 0 0 0 0 0 0.00343289 -1 -2 0.46646 0 -1 9 8 10 12 2 14 8 5 6 2 9 14 5 6 0.576256 2 -0.00865108 0 1 0.638174 0 -1 0 10 6 10 2 3 10 3 10 0 0 0 0 0 0.001451 -1 -2 0.371149 0 -1 1 8 10 12 2 1 8 5 6 2 6 14 5 6 0.553075 2 0.00781917 0 1 0.526436 0 -1 9 3 6 1 3 11 3 2 1 0 0 0 0 0 0.000207986 -1 -2 0.373051 0 -1 7 4 6 3 3 9 4 2 3 0 0 0 0 0 0.544573 2 -0.00399622 0 1 0.243817 0 -1 5 3 6 1 3 7 3 2 1 0 0 0 0 0 -1.50101e-05 -1 -2 0.532467 0 -1 4 5 6 3 3 6 5 2 3 0 0 0 0 0 0.368299 2 -0.00424288 0 1 0.648147 0 -1 9 16 3 3 3 9 17 3 1 0 0 0 0 0 0.0091375 -1 -2 0.489616 0 -1 8 14 6 3 3 8 15 6 1 0 0 0 0 0 0.655884 2 0.00882546 1 0 0.361387 0 -1 6 0 8 12 2 6 0 4 6 2 10 6 4 6 0.000940922 -1 -2 0.55029 0 -1 4 12 2 3 3 4 13 2 1 0 0 0 0 0 0.363252 2 -0.0125034 0 1 0.226113 0 -1 12 16 6 3 3 12 17 6 1 0 0 0 0 0 0.00867596 -1 -2 0.498789 0 -1 7 12 7 2 2 7 13 7 1 0 0 0 0 0 0.68472 2 -0.0104168 0 1 0.24463 0 -1 2 16 6 3 3 2 17 6 1 0 0 0 0 0 0.00274325 -1 -2 0.351153 0 -1 0 7 16 6 2 0 10 16 3 0 0 0 0 0 0.539983 2 -0.00423857 0 1 0.682367 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 0.0183259 -1 -2 0.489158 0 -1 9 7 3 5 3 10 7 1 5 0 0 0 0 0 0.713562 2 -0.0243345 0 1 0.352252 0 -1 0 5 20 10 2 0 5 10 5 2 10 10 10 5 0.000464694 -1 -2 0.404987 0 -1 3 1 4 2 2 5 1 2 2 0 0 0 0 0 0.551583 2 0.003426 1 0 0.412677 0 -1 7 6 8 10 2 11 6 4 5 2 7 11 4 5 -0.00258273 -1 -2 0.289943 0 -1 17 6 3 2 2 17 7 3 1 0 0 0 0 0 0.538643 2 0.00105457 1 0 0.377134 0 -1 5 6 8 10 2 5 6 4 5 2 9 11 4 5 -0.000912577 -1 -2 0.582739 0 -1 5 12 10 6 3 5 14 10 2 0 0 0 0 0 0.426756 2 0.0026589 0 1 0.468812 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 0.00485984 -1 -2 0.485392 0 -1 10 3 2 6 2 11 3 1 3 2 10 6 1 3 0.616364 2 0.00806387 1 0 0.17492 0 -1 0 4 3 3 3 0 5 3 1 0 0 0 0 0 -0.00758984 -1 -2 0.682619 0 -1 3 16 8 4 2 3 16 4 2 2 7 18 4 2 0.489407 2 0.000363681 0 1 0.46146 0 -1 8 13 5 2 2 8 14 5 1 0 0 0 0 0 0.062595 -1 -2 0.518302 0 -1 8 7 4 12 3 8 11 4 4 0 0 0 0 0 0.26867 2 -0.00497532 0 1 0.175847 0 -1 5 9 2 2 2 6 9 1 2 0 0 0 0 0 -0.00208801 -1 -2 0.636938 0 -1 9 15 2 3 3 9 16 2 1 0 0 0 0 0 0.493004 2 0.000956445 1 0 0.41394 0 -1 13 9 2 3 2 13 9 1 3 0 0 0 0 0 -0.0317215 -1 -2 0.604556 0 -1 14 0 6 17 3 16 0 2 17 0 0 0 0 0 0.481636 2 0.00128987 0 1 0.545081 0 -1 5 10 2 2 2 6 10 1 2 0 0 0 0 0 0.00984052 -1 -2 0.2924 0 -1 2 9 9 1 3 5 9 3 1 0 0 0 0 0 0.669961 2 0.00122371 1 0 0.628284 0 -1 9 11 2 3 3 9 12 2 1 0 0 0 0 0 -0.00842326 -1 -2 0.598657 0 -1 7 11 6 3 3 7 12 6 1 0 0 0 0 0 0.485258 2 -0.000727263 0 1 0.334005 0 -1 0 6 3 2 2 0 7 3 1 0 0 0 0 0 0.00468429 -1 -2 0.516892 0 -1 7 0 6 1 3 9 0 2 1 0 0 0 0 0 0.267948 2 -0.00103796 0 1 0.592579 0 -1 9 16 3 3 3 9 17 3 1 0 0 0 0 0 0.00913427 -1 -2 0.543773 0 -1 2 13 17 6 2 2 16 17 3 0 0 0 0 0 0.43468 2 0.00149711 0 1 0.41295 0 -1 1 3 3 7 3 2 3 1 7 0 0 0 0 0 0.00157623 -1 -2 0.452287 0 -1 1 1 6 4 3 3 1 2 4 0 0 0 0 0 0.655629 2 0.00874962 0 1 0.453203 0 -1 14 1 6 5 2 14 1 3 5 0 0 0 0 0 -0.000851036 -1 -2 0.378598 0 -1 13 2 3 2 2 13 3 3 1 0 0 0 0 0 0.541698 2 -0.0173256 0 1 0.688425 0 -1 0 1 6 5 2 3 1 3 5 0 0 0 0 0 -0.00832664 -1 -2 0.309133 0 -1 2 3 2 6 3 2 5 2 2 0 0 0 0 0 0.524365 2 1.51579e-05 0 1 0.476579 0 -1 9 10 3 2 2 9 11 3 1 0 0 0 0 0 0.00180415 -1 -2 0.472539 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 0.571656 2 0.00306916 1 0 0.214336 0 -1 6 3 3 1 3 7 3 1 1 0 0 0 0 0 -5.22255e-05 -1 -2 0.565321 0 -1 8 2 3 12 3 8 6 3 4 0 0 0 0 0 0.438511 2 0.000100722 1 0 0.592478 0 -1 11 12 1 2 2 11 13 1 1 0 0 0 0 0 0.000135737 -1 -2 0.457345 0 -1 11 12 2 2 2 12 12 1 1 2 11 13 1 1 0.576938 2 0.000921379 1 0 0.599261 0 -1 5 5 2 2 2 5 6 2 1 0 0 0 0 0 0.000303166 -1 -2 0.361008 0 -1 5 4 1 3 3 5 5 1 1 0 0 0 0 0 0.504933 2 0.0395825 1 0 0.153849 0 -1 3 11 16 4 2 11 11 8 2 2 3 13 8 2 0.0475197 -1 -2 0.521614 0 -1 0 10 20 3 3 0 11 20 1 0 0 0 0 0 0.142839 2 0.0188718 1 0 0.282551 0 -1 1 11 16 4 2 1 11 8 2 2 9 13 8 2 -0.000398765 -1 -2 0.403502 0 -1 4 2 4 2 2 4 3 4 1 0 0 0 0 0 0.543779 2 0.000465566 0 1 0.4669 0 -1 12 6 2 2 2 13 6 1 1 2 12 7 1 1 0.00670906 -1 -2 0.533135 0 -1 12 11 6 6 3 12 13 6 2 0 0 0 0 0 0.413657 2 -0.00189312 0 1 0.715516 0 -1 6 6 2 2 2 6 6 1 1 2 7 7 1 1 -0.0130569 -1 -2 0.31179 0 -1 6 4 4 16 2 8 4 2 16 0 0 0 0 0 0.520844 2 -0.000194841 1 0 0.463766 0 -1 11 18 3 2 2 11 19 3 1 0 0 0 0 0 1.50932e-05 -1 -2 0.456165 0 -1 9 17 6 2 2 12 17 3 1 2 9 18 3 1 0.544523 2 -7.1618e-06 1 0 0.419311 0 -1 2 13 5 2 2 2 14 5 1 0 0 0 0 0 0.000301647 -1 -2 0.596624 0 -1 3 15 2 2 2 3 16 2 1 0 0 0 0 0 0.41005 2 0.00441952 0 1 0.484506 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 -0.00739842 -1 -2 0.620685 0 -1 9 6 2 6 2 9 6 1 6 0 0 0 0 0 0.493121 2 -0.00780312 1 0 0.528246 0 -1 1 14 7 6 3 1 16 7 2 0 0 0 0 0 -0.0107314 -1 -2 0.910483 0 -1 8 1 2 11 2 9 1 1 11 0 0 0 0 0 0.345592 2 0.00142468 0 1 0.470855 0 -1 9 7 2 4 2 9 7 1 4 0 0 0 0 0 -8.27176e-05 -1 -2 0.565162 0 -1 11 10 2 1 2 11 10 1 1 0 0 0 0 0 0.473102 2 0.00448034 1 0 0.617589 0 -1 0 3 3 9 3 1 3 1 9 0 0 0 0 0 0.00307891 -1 -2 0.513953 0 -1 0 3 3 6 3 0 5 3 2 0 0 0 0 0 0.342309 2 -0.00113103 1 0 0.491828 0 -1 11 15 2 2 2 12 15 1 1 2 11 16 1 1 -0.00104107 -1 -2 0.594209 0 -1 11 14 2 2 2 12 14 1 1 2 11 15 1 1 0.492304 2 0.00116485 1 0 0.640527 0 -1 7 15 2 2 2 7 15 1 1 2 8 16 1 1 0.000900574 -1 -2 0.45044 0 -1 7 14 2 2 2 7 14 1 1 2 8 15 1 1 0.619208 2 0.00687815 0 1 0.537481 0 -1 8 13 4 6 2 10 13 2 3 2 8 16 2 3 -0.0352839 -1 -2 0.22471 0 -1 2 14 16 4 2 10 14 8 2 2 2 16 8 2 0.521717 2 -0.00133202 0 1 0.25547 0 -1 9 8 2 2 2 9 9 2 1 0 0 0 0 0 -0.00231776 -1 -2 0.379252 0 -1 7 7 5 3 3 7 8 5 1 0 0 0 0 0 0.524323 2 0.000213329 0 1 0.386034 0 -1 7 5 6 2 3 9 5 2 2 0 0 0 0 0 0.0134679 -1 -2 0.538069 0 -1 9 1 6 18 3 11 1 2 18 0 0 0 0 0 0.417836 2 -0.00128292 0 1 0.613362 0 -1 8 6 3 4 3 9 6 1 4 0 0 0 0 0 0.000515716 -1 -2 0.402854 0 -1 8 5 2 4 2 8 5 1 2 2 9 7 1 2 0.553685 2 0.00392542 0 1 0.527992 0 -1 9 13 2 6 2 10 13 1 3 2 9 16 1 3 -0.0337806 -1 -2 0.233468 0 -1 11 0 3 18 3 12 0 1 18 0 0 0 0 0 0.517591 2 -0.0378537 0 1 0.107485 0 -1 6 0 3 18 3 7 0 1 18 0 0 0 0 0 -0.000407529 -1 -2 0.534593 0 -1 5 15 4 2 2 7 15 2 2 0 0 0 0 0 0.419894 2 -0.00311938 0 1 0.385583 0 -1 1 9 18 1 3 7 9 6 1 0 0 0 0 0 -0.015715 -1 -2 0.333519 0 -1 0 0 20 3 3 0 1 20 1 0 0 0 0 0 0.52632 2 -0.000785257 0 1 0.58604 0 -1 9 6 2 4 2 10 6 1 4 0 0 0 0 0 -0.000287505 -1 -2 0.543778 0 -1 6 10 6 2 3 8 10 2 2 0 0 0 0 0 0.37161 2 0.0280169 1 0 0.333075 0 -1 0 7 20 1 2 0 7 10 1 0 0 0 0 0 -0.00190188 -1 -2 0.53666 0 -1 11 3 5 4 2 11 5 5 2 0 0 0 0 0 0.469379 2 0.0206476 1 0 0.100696 0 -1 5 7 10 1 2 10 7 5 1 0 0 0 0 0 0.00430026 -1 -2 0.481604 0 -1 8 10 3 3 3 8 11 3 1 0 0 0 0 0 0.621568 2 0.0134591 0 1 0.546195 0 -1 2 0 16 8 2 10 0 8 4 2 2 4 8 4 -0.01032 -1 -2 0.457845 0 -1 11 0 9 10 2 11 5 9 5 0 0 0 0 0 0.541931 2 0.319907 1 0 0.200805 0 -1 0 2 8 18 2 4 2 4 18 0 0 0 0 0 0.000921988 -1 -2 0.519328 0 -1 0 0 2 6 3 0 2 2 2 0 0 0 0 0 0.391219 2 0.000418525 0 1 0.429974 0 -1 6 0 9 2 2 6 1 9 1 0 0 0 0 0 0.000358911 -1 -2 0.43445 0 -1 4 1 12 2 2 4 2 12 1 0 0 0 0 0 0.553197 2 -0.209924 0 1 0.107572 0 -1 2 1 16 14 2 2 8 16 7 0 0 0 0 0 -0.00493282 -1 -2 0.57628 0 -1 5 1 8 12 2 5 7 8 6 0 0 0 0 0 0.457464 2 0.00234091 1 0 0.747681 0 -1 9 11 2 2 2 9 12 2 1 0 0 0 0 0 0.00471203 -1 -2 0.526177 0 -1 9 10 5 6 3 9 12 5 2 0 0 0 0 0 0.450555 2 0.0287132 0 1 0.44071 0 -1 3 0 13 8 2 3 4 13 4 0 0 0 0 0 -0.00261566 -1 -2 0.424427 0 -1 6 7 5 8 2 6 11 5 4 0 0 0 0 0 0.689298 2 -0.013559 0 1 0.125227 0 -1 9 5 2 3 3 9 6 2 1 0 0 0 0 0 -0.000303318 -1 -2 0.407779 0 -1 6 8 8 3 3 6 9 8 1 0 0 0 0 0 0.544282 2 -0.000556018 0 1 0.5378 0 -1 2 2 7 6 2 2 5 7 3 0 0 0 0 0 0.00240253 -1 -2 0.316658 0 -1 2 1 14 4 2 2 1 7 2 2 9 3 7 2 0.528574 2 -0.00340899 1 0 0.490521 0 -1 11 14 1 3 3 11 15 1 1 0 0 0 0 0 0.000800196 -1 -2 0.452274 0 -1 6 15 8 2 2 6 16 8 1 0 0 0 0 0 0.558061 2 0.00219011 1 0 0.661268 0 -1 8 14 1 3 3 8 15 1 1 0 0 0 0 0 0.00337454 -1 -2 0.510777 0 -1 8 11 2 8 2 8 15 2 4 0 0 0 0 0 0.338693 2 0.000800196 1 0 0.570756 0 -1 6 15 8 2 2 6 16 8 1 0 0 0 0 0 0.0173461 -1 -2 0.501602 0 -1 7 16 8 3 3 7 17 8 1 0 0 0 0 0 0.630646 2 -0.00195684 0 1 0.301781 0 -1 0 16 2 2 2 0 17 2 1 0 0 0 0 0 -0.011229 -1 -2 0.629385 0 -1 1 16 8 4 2 1 16 4 2 2 5 18 4 2 0.452049 2 -0.00266084 0 1 0.334401 0 -1 2 9 16 3 3 2 10 16 1 0 0 0 0 0 -0.0116151 -1 -2 0.282538 0 -1 13 11 2 4 2 13 11 1 4 0 0 0 0 0 0.515097 2 -0.0952486 0 1 0.139827 0 -1 0 13 16 6 3 0 15 16 2 0 0 0 0 0 0.00737018 -1 -2 0.5294 0 -1 5 11 2 4 2 6 11 1 4 0 0 0 0 0 0.233173 2 -0.0149539 1 0 0.494047 0 -1 18 2 2 18 2 19 2 1 9 2 18 11 1 9 0.000570388 -1 -2 0.546657 0 -1 19 7 1 9 3 19 10 1 3 0 0 0 0 0 0.462677 2 0.00585162 1 0 0.627004 0 -1 0 2 2 18 2 0 2 1 9 2 1 11 1 9 0.000211505 -1 -2 0.550814 0 -1 0 7 1 9 3 0 10 1 3 0 0 0 0 0 0.406187 2 -6.96792e-06 1 0 0.409657 0 -1 14 12 2 2 2 14 13 2 1 0 0 0 0 0 -0.000796774 -1 -2 0.561556 0 -1 11 14 2 3 3 11 15 2 1 0 0 0 0 0 0.466689 2 0.0194595 1 0 0.231148 0 -1 7 8 6 2 2 7 9 6 1 0 0 0 0 0 -0.0111608 -1 -2 0.308701 0 -1 7 12 4 6 2 7 12 2 3 2 9 15 2 3 0.551466 2 0.0140561 1 0 0.700506 0 -1 8 13 5 3 3 8 14 5 1 0 0 0 0 0 -0.000329584 -1 -2 0.579749 0 -1 12 14 2 2 2 13 14 1 1 2 12 15 1 1 0.469165 2 -0.00546364 0 1 0.59286 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 5.88817e-05 -1 -2 0.37414 0 -1 7 13 5 2 2 7 14 5 1 0 0 0 0 0 0.517017 2 0.00663434 0 1 0.541499 0 -1 2 10 16 4 2 10 10 8 2 2 2 12 8 2 0.0452634 -1 -2 0.518033 0 -1 7 0 6 6 3 9 0 2 6 0 0 0 0 0 0.152968 2 -0.00806461 0 1 0.251547 0 -1 7 1 6 3 3 7 2 6 1 0 0 0 0 0 0.000473895 -1 -2 0.5122 0 -1 0 12 6 2 2 0 13 6 1 0 0 0 0 0 0.372595 2 1.48774e-05 1 0 0.553244 0 -1 6 3 11 2 2 6 4 11 1 0 0 0 0 0 0.0243212 -1 -2 0.496077 0 -1 12 0 8 6 2 16 0 4 3 2 12 3 4 3 0.598332 2 6.99314e-05 0 1 0.416395 0 -1 8 12 1 2 2 8 13 1 1 0 0 0 0 0 0.00262878 -1 -2 0.588014 0 -1 8 8 1 12 3 8 12 1 4 0 0 0 0 0 0.339966 2 0.00381905 1 0 0.784662 0 -1 11 11 2 2 2 12 11 1 1 2 11 12 1 1 -0.0259892 -1 -2 0.328811 0 -1 12 7 3 13 3 13 7 1 13 0 0 0 0 0 0.515509 2 0.00120624 0 1 0.459606 0 -1 7 11 2 2 2 7 11 1 1 2 8 12 1 1 -0.00155574 -1 -2 0.312699 0 -1 3 13 1 3 3 3 14 1 1 0 0 0 0 0 0.71834 2 -0.00226919 1 0 0.527401 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.000232872 -1 -2 0.487867 0 -1 11 11 2 1 2 11 11 1 1 0 0 0 0 0 0.561515 2 -0.00559997 1 0 0.516081 0 -1 1 10 5 9 3 1 13 5 3 0 0 0 0 0 -0.0104962 -1 -2 0.570161 0 -1 4 8 6 4 3 6 8 2 4 0 0 0 0 0 0.320485 2 -1.48149e-05 0 1 0.553884 0 -1 13 12 1 4 2 13 14 1 2 0 0 0 0 0 -0.000642871 -1 -2 0.534943 0 -1 11 3 4 14 2 13 3 2 7 2 11 10 2 7 0.447215 2 -0.000188919 0 1 0.501284 0 -1 6 12 1 4 2 6 14 1 2 0 0 0 0 0 -0.00904135 -1 -2 0.256294 0 -1 5 3 4 14 2 5 3 2 7 2 7 10 2 7 0.450338 2 0.00795347 1 0 0.26305 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 -0.0027909 -1 -2 0.575651 0 -1 9 12 3 3 3 9 13 3 1 0 0 0 0 0 0.485486 2 0.00328571 1 0 0.408475 0 -1 2 2 12 6 2 2 2 6 3 2 8 5 6 3 0.00077063 -1 -2 0.407336 0 -1 6 6 6 2 2 9 6 3 2 0 0 0 0 0 0.592024 16 -1 18 47.7635 97 2 0.0630219 0 1 0.341938 0 -1 1 0 18 12 3 7 0 6 12 0 0 0 0 0 -0.00283746 -1 -2 0.682956 0 -1 5 7 6 4 2 5 7 3 2 2 8 9 3 2 0.440452 2 0.046462 0 1 0.439175 0 -1 5 7 10 4 2 5 9 10 2 0 0 0 0 0 0.0291525 -1 -2 0.460106 0 -1 7 7 6 4 3 9 7 2 4 0 0 0 0 0 0.635794 2 -1.40003e-05 1 0 0.373001 0 -1 9 5 2 2 2 9 6 2 1 0 0 0 0 0 -0.00127571 -1 -2 0.309382 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 0.590137 2 0.00135965 0 1 0.433757 0 -1 6 17 8 3 3 6 18 8 1 0 0 0 0 0 0.000179919 -1 -2 0.42175 0 -1 9 17 6 2 2 12 17 3 1 2 9 18 3 1 0.584685 2 -1.41666e-05 1 0 0.408469 0 -1 4 12 2 2 2 4 13 2 1 0 0 0 0 0 6.02524e-05 -1 -2 0.508729 0 -1 3 12 9 2 2 3 13 9 1 0 0 0 0 0 0.727718 2 0.00643204 1 0 0.29679 0 -1 8 3 6 1 3 10 3 2 1 0 0 0 0 0 0.000466823 -1 -2 0.411046 0 -1 9 3 4 6 2 11 3 2 3 2 9 6 2 3 0.558122 2 0.00574363 0 1 0.428731 0 -1 0 3 6 5 2 3 3 3 5 0 0 0 0 0 0.00320192 -1 -2 0.42662 0 -1 2 0 2 18 3 2 6 2 6 0 0 0 0 0 0.644405 2 -0.000576379 1 0 0.408482 0 -1 14 2 4 9 3 14 5 4 3 0 0 0 0 0 -0.00379019 -1 -2 0.318192 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.523069 2 0.00489141 1 0 0.354836 0 -1 2 2 4 9 3 2 5 4 3 0 0 0 0 0 0.00464593 -1 -2 0.56106 0 -1 7 18 3 2 3 8 18 1 2 0 0 0 0 0 0.269385 2 -0.00687994 0 1 0.623541 0 -1 10 14 3 3 3 10 15 3 1 0 0 0 0 0 -0.0181475 -1 -2 0.286198 0 -1 10 12 2 6 2 10 15 2 3 0 0 0 0 0 0.522685 2 0.000114092 1 0 0.325783 0 -1 7 5 3 6 3 7 7 3 2 0 0 0 0 0 -0.000543343 -1 -2 0.388297 0 -1 3 3 6 2 2 3 4 6 1 0 0 0 0 0 0.534117 2 -0.00276025 0 1 0.635397 0 -1 8 4 7 3 3 8 5 7 1 0 0 0 0 0 -0.00197306 -1 -2 0.588076 0 -1 13 6 2 3 3 13 7 2 1 0 0 0 0 0 0.459309 2 0.00245652 1 0 0.313401 0 -1 8 8 2 12 3 8 12 2 4 0 0 0 0 0 0.00019392 -1 -2 0.527713 0 -1 5 4 8 14 2 5 4 4 7 2 9 11 4 7 0.360411 2 0.078643 0 1 0.529034 0 -1 0 1 20 8 2 10 1 10 4 2 0 5 10 4 0.00652769 -1 -2 0.465448 0 -1 4 0 12 2 2 4 1 12 1 0 0 0 0 0 0.604491 2 -0.0787168 0 1 0.254113 0 -1 0 1 20 8 2 0 1 10 4 2 10 5 10 4 0.00572985 -1 -2 0.436692 0 -1 4 0 12 2 2 4 1 12 1 0 0 0 0 0 0.582289 2 0.000623866 1 0 0.547269 0 -1 9 5 6 3 2 9 5 3 3 0 0 0 0 0 -0.0852672 -1 -2 0.146161 0 -1 8 13 10 6 3 8 15 10 2 0 0 0 0 0 0.518181 2 0.0409811 1 0 0.127014 0 -1 5 5 6 3 2 8 5 3 3 0 0 0 0 0 0.00771357 -1 -2 0.483268 0 -1 6 3 6 1 3 8 3 2 1 0 0 0 0 0 0.222358 2 -0.00686639 0 1 0.591893 0 -1 11 18 9 2 3 14 18 3 2 0 0 0 0 0 0.0145596 -1 -2 0.476151 0 -1 13 11 6 7 2 13 11 3 7 0 0 0 0 0 0.572722 2 -0.0100643 0 1 0.363673 0 -1 4 6 12 10 2 4 6 6 5 2 10 11 6 5 0.00362741 -1 -2 0.527173 0 -1 8 17 3 3 3 9 17 1 3 0 0 0 0 0 0.274053 2 -0.00234215 0 1 0.549778 0 -1 11 18 9 2 3 14 18 3 2 0 0 0 0 0 -0.0246864 -1 -2 0.60599 0 -1 13 11 6 8 2 13 11 3 8 0 0 0 0 0 0.496031 2 0.000194561 1 0 0.376947 0 -1 4 16 2 2 2 4 17 2 1 0 0 0 0 0 0.000317142 -1 -2 0.406236 0 -1 7 15 4 4 2 7 17 4 2 0 0 0 0 0 0.566822 2 0.0020794 0 1 0.461866 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.00179827 -1 -2 0.486751 0 -1 13 6 2 3 3 13 7 2 1 0 0 0 0 0 0.651845 2 -0.000222871 0 1 0.56776 0 -1 5 11 6 1 3 7 11 2 1 0 0 0 0 0 0.000326239 -1 -2 0.371073 0 -1 7 10 3 1 3 8 10 1 1 0 0 0 0 0 0.567661 2 -0.0667927 0 1 0.251152 0 -1 0 12 20 4 2 0 14 20 2 0 0 0 0 0 -0.00148699 -1 -2 0.388675 0 -1 10 2 3 2 2 10 3 3 1 0 0 0 0 0 0.526225 2 -0.00504549 0 1 0.655747 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 -0.00482976 -1 -2 0.593411 0 -1 5 5 4 3 3 5 6 4 1 0 0 0 0 0 0.428592 2 -0.00107226 1 0 0.542606 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 0.00879012 -1 -2 0.53513 0 -1 10 4 2 12 3 10 8 2 4 0 0 0 0 0 0.483428 2 -0.00717504 0 1 0.206717 0 -1 0 3 4 3 3 0 4 4 1 0 0 0 0 0 0.00112512 -1 -2 0.511225 0 -1 1 3 2 3 3 1 4 2 1 0 0 0 0 0 0.346871 2 0.0106347 0 1 0.447901 0 -1 16 1 4 11 2 16 1 2 11 0 0 0 0 0 -0.0117632 -1 -2 0.62539 0 -1 18 2 2 16 2 19 2 1 8 2 18 10 1 8 0.496899 2 0.0923241 1 0 0.20313 0 -1 1 8 6 12 3 3 8 2 12 0 0 0 0 0 0.00189911 -1 -2 0.561872 0 -1 7 2 6 2 2 7 2 3 1 2 10 3 3 1 0.404657 2 -0.0105103 1 0 0.494326 0 -1 12 4 8 2 2 16 4 4 1 2 12 5 4 1 -0.000745313 -1 -2 0.561343 0 -1 10 6 6 2 3 12 6 2 2 0 0 0 0 0 0.384533 2 0.0080041 1 0 0.775984 0 -1 0 4 8 2 2 0 4 4 1 2 4 5 4 1 0.00581105 -1 -2 0.462473 0 -1 1 3 3 5 3 2 3 1 5 0 0 0 0 0 0.628628 2 -0.0279186 0 1 0.240931 0 -1 16 3 4 6 3 16 5 4 2 0 0 0 0 0 0.00217394 -1 -2 0.53455 0 -1 8 6 4 3 3 8 7 4 1 0 0 0 0 0 0.350796 2 -0.00406396 0 1 0.66471 0 -1 8 14 1 3 3 8 15 1 1 0 0 0 0 0 0.000600171 -1 -2 0.499851 0 -1 4 11 1 2 2 4 12 1 1 0 0 0 0 0 0.302217 2 0.00192148 1 0 0.591915 0 -1 8 14 6 3 3 8 15 6 1 0 0 0 0 0 -0.0138608 -1 -2 0.635177 0 -1 7 15 7 3 3 7 16 7 1 0 0 0 0 0 0.499331 2 0.0230069 1 0 0.190234 0 -1 9 12 2 8 2 9 16 2 4 0 0 0 0 0 -0.00138579 -1 -2 0.525337 0 -1 4 6 6 2 3 6 6 2 2 0 0 0 0 0 0.398586 2 0.00126374 0 1 0.46661 0 -1 12 7 4 2 2 12 8 4 1 0 0 0 0 0 -0.0146752 -1 -2 0.382316 0 -1 5 3 13 10 2 5 8 13 5 0 0 0 0 0 0.532663 2 -0.00295351 0 1 0.706366 0 -1 4 7 4 2 2 4 8 4 1 0 0 0 0 0 -0.00171898 -1 -2 0.381346 0 -1 0 8 16 2 2 0 8 8 1 2 8 9 8 1 0.524674 2 -0.000424841 1 0 0.479164 0 -1 11 8 2 5 2 11 8 1 5 0 0 0 0 0 -0.000852487 -1 -2 0.449122 0 -1 10 0 6 13 2 10 0 3 13 0 0 0 0 0 0.53709 2 0.00890346 1 0 0.207647 0 -1 1 6 4 2 2 1 7 4 1 0 0 0 0 0 1.48956e-05 -1 -2 0.444764 0 -1 4 3 2 1 2 5 3 1 1 0 0 0 0 0 0.566716 2 -0.000470916 0 1 0.546507 0 -1 11 8 2 5 2 11 8 1 5 0 0 0 0 0 0.000430848 -1 -2 0.549326 0 -1 12 10 4 8 2 12 10 2 8 0 0 0 0 0 0.458071 2 -0.00063894 0 1 0.550157 0 -1 7 8 2 5 2 8 8 1 5 0 0 0 0 0 -7.37337e-05 -1 -2 0.508579 0 -1 4 10 4 8 2 6 10 2 8 0 0 0 0 0 0.33057 2 -0.00889915 0 1 0.427647 0 -1 6 7 9 12 3 9 7 3 12 0 0 0 0 0 -0.0102534 -1 -2 0.112322 0 -1 11 13 2 3 2 11 13 1 3 0 0 0 0 0 0.515272 2 -0.0596375 0 1 0.738677 0 -1 7 10 6 10 2 10 10 3 10 0 0 0 0 0 0.0217072 -1 -2 0.499629 0 -1 8 11 4 8 2 8 11 2 4 2 10 15 2 4 0.133941 2 0.0099107 0 1 0.467901 0 -1 16 1 4 11 2 16 1 2 11 0 0 0 0 0 -0.0109983 -1 -2 0.692866 0 -1 18 2 2 4 2 18 2 1 4 0 0 0 0 0 0.501207 2 0.000746089 1 0 0.583358 0 -1 5 6 6 2 2 5 6 3 1 2 8 7 3 1 0.000295392 -1 -2 0.382639 0 -1 5 4 1 3 3 5 5 1 1 0 0 0 0 0 0.556635 2 0.0500541 1 0 0.300272 0 -1 11 1 4 14 2 11 1 2 14 0 0 0 0 0 -0.00723307 -1 -2 0.590804 0 -1 4 2 12 3 3 8 2 4 3 0 0 0 0 0 0.500087 2 -0.00268634 0 1 0.397503 0 -1 5 1 4 14 2 7 1 2 14 0 0 0 0 0 -0.00101958 -1 -2 0.369769 0 -1 7 3 6 2 3 9 3 2 2 0 0 0 0 0 0.575619 2 -0.0202049 0 1 0.637527 0 -1 2 0 18 4 3 8 0 6 4 0 0 0 0 0 0.00213404 -1 -2 0.536327 0 -1 9 5 2 10 2 9 10 2 5 0 0 0 0 0 0.443317 2 -0.00183489 0 1 0.5829 0 -1 8 6 3 4 3 9 6 1 4 0 0 0 0 0 -0.00594895 -1 -2 0.268067 0 -1 5 5 9 11 3 8 5 3 11 0 0 0 0 0 0.464289 2 -0.000230301 0 1 0.547532 0 -1 10 6 3 5 3 11 6 1 5 0 0 0 0 0 0.0050581 -1 -2 0.532083 0 -1 8 9 6 5 2 8 9 3 5 0 0 0 0 0 0.464649 2 -0.0005195 0 1 0.523274 0 -1 7 6 3 5 3 8 6 1 5 0 0 0 0 0 -0.000686209 -1 -2 0.493509 0 -1 6 10 6 3 2 9 10 3 3 0 0 0 0 0 0.310312 2 -0.00749363 0 1 0.288305 0 -1 10 0 3 7 3 11 0 1 7 0 0 0 0 0 -0.0156829 -1 -2 0.364031 0 -1 0 3 20 12 2 0 9 20 6 0 0 0 0 0 0.536875 2 -0.00326498 0 1 0.646863 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 0.000384639 -1 -2 0.525966 0 -1 5 9 4 1 2 7 9 2 1 0 0 0 0 0 0.383143 2 0.00444924 1 0 0.208682 0 -1 13 13 3 2 2 13 14 3 1 0 0 0 0 0 0.0231183 -1 -2 0.497853 0 -1 16 9 4 6 2 16 9 2 6 0 0 0 0 0 0.596126 2 0.00208352 1 0 0.574642 0 -1 7 15 6 3 3 7 16 6 1 0 0 0 0 0 0.00115132 -1 -2 0.358685 0 -1 6 16 7 3 3 6 17 7 1 0 0 0 0 0 0.536347 2 0.0361047 1 0 0.283314 0 -1 11 14 9 6 3 11 16 9 2 0 0 0 0 0 0.000362562 -1 -2 0.547772 0 -1 19 14 1 3 3 19 15 1 1 0 0 0 0 0 0.411053 2 -0.00346355 0 1 0.599039 0 -1 0 9 6 6 2 3 9 3 6 0 0 0 0 0 -0.00287968 -1 -2 0.572525 0 -1 0 19 9 1 3 3 19 3 1 0 0 0 0 0 0.414951 2 -0.00811195 1 0 0.539635 0 -1 11 14 9 6 3 11 16 9 2 0 0 0 0 0 0.00459321 -1 -2 0.53797 0 -1 12 12 6 6 3 12 14 6 2 0 0 0 0 0 0.38913 2 0.00700147 1 0 0.371467 0 -1 1 14 8 6 3 1 16 8 2 0 0 0 0 0 0.000801695 -1 -2 0.552957 0 -1 8 1 3 2 3 9 1 1 2 0 0 0 0 0 0.37558 2 -0.00866523 1 0 0.502577 0 -1 18 2 2 4 2 18 2 1 4 0 0 0 0 0 -0.00273151 -1 -2 0.585032 0 -1 14 0 6 3 3 16 0 2 3 0 0 0 0 0 0.461757 2 0.00133016 1 0 0.59377 0 -1 0 2 2 4 2 1 2 1 4 0 0 0 0 0 -0.00426482 -1 -2 0.564537 0 -1 0 0 6 3 3 2 0 2 3 0 0 0 0 0 0.393762 2 0.00632515 0 1 0.518211 0 -1 9 0 3 2 3 10 0 1 2 0 0 0 0 0 -0.00307537 -1 -2 0.300742 0 -1 12 1 2 2 2 12 1 1 2 0 0 0 0 0 0.51964 2 -0.000736221 0 1 0.369758 0 -1 8 0 3 2 3 9 0 1 2 0 0 0 0 0 3.00825e-05 -1 -2 0.432759 0 -1 6 1 2 2 2 7 1 1 2 0 0 0 0 0 0.571581 2 -0.00387227 0 1 0.347371 0 -1 10 8 2 3 3 10 9 2 1 0 0 0 0 0 0.000628791 -1 -2 0.543826 0 -1 13 15 6 2 2 13 16 6 1 0 0 0 0 0 0.445391 2 0.00134116 1 0 0.651171 0 -1 8 12 2 2 2 8 12 1 1 2 9 13 1 1 -0.00836819 -1 -2 0.14433 0 -1 8 15 3 5 3 9 15 1 5 0 0 0 0 0 0.48882 2 0.000933058 1 0 0.395111 0 -1 8 6 4 12 2 8 12 4 6 0 0 0 0 0 -0.00107465 -1 -2 0.391027 0 -1 7 6 7 8 2 7 10 7 4 0 0 0 0 0 0.53495 2 -0.0186101 0 1 0.127574 0 -1 0 11 8 2 2 0 12 8 1 0 0 0 0 0 0.00136514 -1 -2 0.503829 0 -1 8 11 2 2 2 8 11 1 1 2 9 12 1 1 0.69513 2 0.00737444 0 1 0.525344 0 -1 7 7 12 1 3 11 7 4 1 0 0 0 0 0 0.00841633 -1 -2 0.501124 0 -1 10 8 3 2 3 11 8 1 2 0 0 0 0 0 0.731133 2 0.0051414 0 1 0.495354 0 -1 1 7 12 1 3 5 7 4 1 0 0 0 0 0 0.0045847 -1 -2 0.253556 0 -1 6 5 8 2 2 6 5 4 1 2 10 6 4 1 0.646244 2 0.0285652 1 0 0.233072 0 -1 9 10 3 10 3 10 10 1 10 0 0 0 0 0 0.000439588 -1 -2 0.470224 0 -1 16 0 2 4 2 16 0 1 4 0 0 0 0 0 0.554455 2 0.0314595 1 0 0.0336897 0 -1 8 10 3 10 3 9 10 1 10 0 0 0 0 0 0.00560116 -1 -2 0.478712 0 -1 9 10 2 3 3 9 11 2 1 0 0 0 0 0 0.633835 2 0.000718357 0 1 0.543149 0 -1 8 9 4 2 2 10 9 2 1 2 8 10 2 1 -0.00553031 -1 -2 0.410583 0 -1 12 14 7 6 3 12 16 7 2 0 0 0 0 0 0.540399 2 0.00141293 1 0 0.310554 0 -1 6 1 3 1 3 7 1 1 1 0 0 0 0 0 0.000255307 -1 -2 0.425447 0 -1 2 0 2 4 2 3 0 1 4 0 0 0 0 0 0.544715 2 0.000319664 1 0 0.611836 0 -1 11 11 2 2 2 12 11 1 1 2 11 12 1 1 0.00504114 -1 -2 0.529004 0 -1 12 12 6 6 3 12 14 6 2 0 0 0 0 0 0.422479 2 0.00776179 0 1 0.431535 0 -1 1 0 6 10 2 1 0 3 5 2 4 5 3 5 0.00293746 -1 -2 0.662926 0 -1 3 0 2 9 3 3 3 2 3 0 0 0 0 0 0.302896 2 -0.00164977 1 0 0.549185 0 -1 14 13 3 2 2 14 14 3 1 0 0 0 0 0 -0.00588344 -1 -2 0.318855 0 -1 15 2 3 2 2 15 3 3 1 0 0 0 0 0 0.518429 2 0.000874592 1 0 0.332883 0 -1 2 13 5 2 2 2 14 5 1 0 0 0 0 0 -0.0153088 -1 -2 0.392361 0 -1 3 4 12 10 2 3 4 6 5 2 9 9 6 5 0.523514 2 0.0322925 1 0 0.597765 0 -1 5 1 14 6 3 5 3 14 2 0 0 0 0 0 -0.000438425 -1 -2 0.454169 0 -1 15 3 3 2 2 15 4 3 1 0 0 0 0 0 0.536943 2 0.00154295 1 0 0.631814 0 -1 7 11 2 2 2 7 11 1 1 2 8 12 1 1 -0.0024733 -1 -2 0.349063 0 -1 2 14 6 6 3 2 16 6 2 0 0 0 0 0 0.475902 2 0.00209949 1 0 0.58872 0 -1 6 13 8 3 3 6 14 8 1 0 0 0 0 0 -0.00575411 -1 -2 0.596133 0 -1 1 19 18 1 3 7 19 6 1 0 0 0 0 0 0.484198 2 -0.0102331 0 1 0.17054 0 -1 8 12 1 6 2 8 15 1 3 0 0 0 0 0 0.225545 -1 -2 0.477938 0 -1 0 0 14 15 3 0 5 14 5 0 0 0 0 0 0.0978797 2 0.0296666 1 0 0.582222 0 -1 3 0 16 8 2 3 4 16 4 0 0 0 0 0 -0.00285184 -1 -2 0.545963 0 -1 6 1 8 12 2 6 7 8 6 0 0 0 0 0 0.461007 2 0.000974653 1 0 0.367032 0 -1 5 3 3 3 3 6 3 1 3 0 0 0 0 0 1.40447e-05 -1 -2 0.430239 0 -1 5 1 3 4 3 6 1 1 4 0 0 0 0 0 0.569171 2 -0.0175794 0 1 0.691732 0 -1 15 14 4 6 2 17 14 2 3 2 15 17 2 3 -0.0523817 -1 -2 0.711004 0 -1 12 11 6 8 2 15 11 3 4 2 12 15 3 4 0.506015 2 -0.0112421 0 1 0.876919 0 -1 8 7 2 4 2 9 7 1 4 0 0 0 0 0 -0.00367284 -1 -2 0.651919 0 -1 6 11 3 1 3 7 11 1 1 0 0 0 0 0 0.454607 2 0.00350828 0 1 0.532987 0 -1 12 3 2 14 2 12 3 1 14 0 0 0 0 0 0.00616797 -1 -2 0.522046 0 -1 12 11 6 2 2 15 11 3 1 2 12 12 3 1 0.295352 2 -0.000970099 1 0 0.504863 0 -1 0 2 5 2 2 0 3 5 1 0 0 0 0 0 -0.010957 -1 -2 0.583736 0 -1 0 0 15 1 3 5 0 5 1 0 0 0 0 0 0.302009 2 -0.00832725 0 1 0.315806 0 -1 12 11 6 2 2 15 11 3 1 2 12 12 3 1 2.97984e-05 -1 -2 0.438639 0 -1 10 5 2 2 2 10 5 1 2 0 0 0 0 0 0.544321 2 0.00028244 1 0 0.56254 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 -0.000813641 -1 -2 0.52812 0 -1 9 0 2 10 2 9 0 1 5 2 10 5 1 5 0.340141 2 0.0018008 1 0 0.347166 0 -1 18 14 2 2 2 18 15 2 1 0 0 0 0 0 -0.00699448 -1 -2 0.44817 0 -1 13 11 4 9 3 13 14 4 3 0 0 0 0 0 0.538577 2 4.56254e-05 0 1 0.449251 0 -1 8 13 2 2 2 8 13 1 1 2 9 14 1 1 -0.000731899 -1 -2 0.416731 0 -1 7 8 4 3 3 7 9 4 1 0 0 0 0 0 0.60211 2 -0.000299802 0 1 0.414843 0 -1 8 9 4 2 2 8 10 4 1 0 0 0 0 0 -2.90609e-05 -1 -2 0.559209 0 -1 13 12 4 2 2 13 13 4 1 0 0 0 0 0 0.407321 2 -0.000597427 0 1 0.608891 0 -1 6 14 2 2 2 6 14 1 1 2 7 15 1 1 0.000148318 -1 -2 0.529831 0 -1 0 14 2 2 2 0 15 2 1 0 0 0 0 0 0.376195 2 -0.0029441 1 0 0.471608 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.137412 -1 -2 0.510134 0 -1 7 9 10 6 3 7 11 10 2 0 0 0 0 0 0.0467468 2 -0.0884142 0 1 0.118187 0 -1 2 9 12 4 3 6 9 4 4 0 0 0 0 0 0.0706103 -1 -2 0.511906 0 -1 7 9 6 11 2 10 9 3 11 0 0 0 0 0 0.777844 2 -0.0077189 0 1 0.187413 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 0.0151154 -1 -2 0.498003 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 0.700582 2 0.00106719 0 1 0.448224 0 -1 2 3 3 17 3 3 3 1 17 0 0 0 0 0 0.000704879 -1 -2 0.626575 0 -1 0 11 6 3 3 0 12 6 1 0 0 0 0 0 0.440266 17 -1 19 44.2513 90 2 -0.0986907 1 0 0.399947 0 -1 4 3 11 9 3 4 6 11 3 0 0 0 0 0 0.0623734 -1 -2 0.524778 0 -1 0 2 6 11 2 3 2 3 11 0 0 0 0 0 0.819358 2 0.00194965 0 1 0.352982 0 -1 13 0 4 5 2 13 0 2 5 0 0 0 0 0 -0.000891391 -1 -2 0.585273 0 -1 9 7 6 4 2 12 7 3 2 2 9 9 3 2 0.324598 2 -0.000551504 0 1 0.389282 0 -1 5 7 8 2 2 9 7 4 2 0 0 0 0 0 -0.00117219 -1 -2 0.433505 0 -1 1 8 15 1 3 6 8 5 1 0 0 0 0 0 0.652062 2 -0.000744806 1 0 0.404114 0 -1 4 12 12 2 3 8 12 4 2 0 0 0 0 0 -0.00262648 -1 -2 0.562498 0 -1 13 0 4 10 2 15 0 2 5 2 13 5 2 5 0.396753 2 -0.000397127 0 1 0.385611 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 0.00359849 -1 -2 0.599789 0 -1 3 9 6 2 2 6 9 3 2 0 0 0 0 0 0.424161 2 0.00530806 1 0 0.666017 0 -1 8 17 4 3 3 8 18 4 1 0 0 0 0 0 0.000963199 -1 -2 0.448138 0 -1 8 3 9 2 3 11 3 3 2 0 0 0 0 0 0.558349 2 0.000507765 0 1 0.353546 0 -1 3 3 9 2 3 6 3 3 2 0 0 0 0 0 0.00362232 -1 -2 0.340981 0 -1 5 0 9 14 3 8 0 3 14 0 0 0 0 0 0.542069 2 -0.0620614 0 1 0.193408 0 -1 7 3 7 10 2 7 8 7 5 0 0 0 0 0 0.000643872 -1 -2 0.408363 0 -1 4 8 13 3 3 4 9 13 1 0 0 0 0 0 0.549022 2 0.0262399 1 0 0.228571 0 -1 3 12 14 4 2 3 12 7 2 2 10 14 7 2 0.000819403 -1 -2 0.464867 0 -1 8 12 4 2 2 8 13 4 1 0 0 0 0 0 0.601736 2 0.000238331 1 0 0.359804 0 -1 6 10 9 8 2 6 14 9 4 0 0 0 0 0 -0.00158698 -1 -2 0.425965 0 -1 9 12 2 8 2 9 16 2 4 0 0 0 0 0 0.547643 2 -0.00672634 0 1 0.650724 0 -1 8 12 3 3 3 8 13 3 1 0 0 0 0 0 0.0110061 -1 -2 0.514941 0 -1 5 5 4 10 2 7 5 2 10 0 0 0 0 0 0.336298 2 0.00714458 1 0 0.267293 0 -1 14 15 3 3 3 14 16 3 1 0 0 0 0 0 -0.00472338 -1 -2 0.565218 0 -1 4 6 13 3 3 4 7 13 1 0 0 0 0 0 0.429814 2 0.00984374 1 0 0.115189 0 -1 3 15 3 3 3 3 16 3 1 0 0 0 0 0 1.51246e-05 -1 -2 0.43736 0 -1 3 9 4 2 2 3 9 2 1 2 5 10 2 1 0.561213 2 0.0399089 0 1 0.520465 0 -1 0 11 20 4 2 10 11 10 2 2 0 13 10 2 0.00539037 -1 -2 0.481347 0 -1 8 15 4 3 3 8 16 4 1 0 0 0 0 0 0.636121 2 -0.0399089 0 1 0.150687 0 -1 0 11 20 4 2 0 11 10 2 2 10 13 10 2 0.00539037 -1 -2 0.458169 0 -1 8 15 4 3 3 8 16 4 1 0 0 0 0 0 0.620024 2 0.00670052 1 0 0.343224 0 -1 10 13 1 6 2 10 16 1 3 0 0 0 0 0 -0.0126238 -1 -2 0.308823 0 -1 2 1 18 2 2 11 1 9 1 2 2 2 9 1 0.522674 2 0.0118066 1 0 0.718794 0 -1 8 14 3 3 3 8 15 3 1 0 0 0 0 0 -0.00342572 -1 -2 0.312081 0 -1 4 1 6 1 3 6 1 2 1 0 0 0 0 0 0.506584 2 0.000393853 0 1 0.475458 0 -1 11 13 1 3 3 11 14 1 1 0 0 0 0 0 0.0343882 -1 -2 0.526166 0 -1 13 5 2 12 2 13 11 2 6 0 0 0 0 0 0.335017 2 -0.07501 0 1 0.171348 0 -1 1 14 18 6 3 1 16 18 2 0 0 0 0 0 0.000490225 -1 -2 0.47258 0 -1 8 13 1 3 3 8 14 1 1 0 0 0 0 0 0.595647 2 -0.00855253 0 1 0.655822 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.000131355 -1 -2 0.48354 0 -1 9 10 3 2 2 9 11 3 1 0 0 0 0 0 0.558691 2 0.00479487 1 0 0.264571 0 -1 5 1 3 3 3 6 1 1 3 0 0 0 0 0 0.00201247 -1 -2 0.365795 0 -1 5 5 6 5 2 8 5 3 5 0 0 0 0 0 0.512477 2 -0.117855 0 1 0.238565 0 -1 7 5 6 14 2 7 12 6 7 0 0 0 0 0 0.0015575 -1 -2 0.549047 0 -1 7 16 6 2 3 9 16 2 2 0 0 0 0 0 0.427475 2 -0.0155738 0 1 0.69389 0 -1 0 2 2 12 2 1 2 1 12 0 0 0 0 0 -0.00218548 -1 -2 0.364599 0 -1 1 0 5 3 3 1 1 5 1 0 0 0 0 0 0.509253 2 0.00292723 0 1 0.468581 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.00646637 -1 -2 0.497341 0 -1 12 6 3 3 3 12 7 3 1 0 0 0 0 0 0.77261 2 -0.00761404 0 1 0.687747 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.00415126 -1 -2 0.478853 0 -1 5 6 3 3 3 5 7 3 1 0 0 0 0 0 0.692166 2 0.00277116 0 1 0.548184 0 -1 8 12 4 8 2 10 12 2 4 2 8 16 2 4 -0.0128361 -1 -2 0.380016 0 -1 2 17 18 2 2 11 17 9 1 2 2 18 9 1 0.520449 2 -0.00243801 0 1 0.258244 0 -1 9 3 2 2 2 9 4 2 1 0 0 0 0 0 0.00217133 -1 -2 0.496116 0 -1 8 5 4 6 3 8 7 4 2 0 0 0 0 0 0.32152 2 0.000628007 1 0 0.546042 0 -1 9 0 8 6 3 9 2 8 2 0 0 0 0 0 -0.00979824 -1 -2 0.604654 0 -1 1 0 18 4 3 7 0 6 4 0 0 0 0 0 0.493992 2 0.00735438 1 0 0.529109 0 -1 0 0 4 8 2 2 0 2 8 0 0 0 0 0 -0.014665 -1 -2 0.544612 0 -1 0 4 6 9 3 2 4 2 9 0 0 0 0 0 0.356736 2 0.0302445 0 1 0.551833 0 -1 1 4 18 2 3 7 4 6 2 0 0 0 0 0 -0.0566602 -1 -2 0.693098 0 -1 8 16 12 4 2 14 16 6 2 2 8 18 6 2 0.509339 2 -0.00569675 0 1 0.320153 0 -1 0 0 18 2 2 0 0 9 1 2 9 1 9 1 0.0308068 -1 -2 0.498925 0 -1 3 0 3 18 3 4 0 1 18 0 0 0 0 0 0.227705 2 0.00227488 0 1 0.481093 0 -1 14 9 4 7 2 14 9 2 7 0 0 0 0 0 0.00204369 -1 -2 0.528387 0 -1 15 14 2 2 2 15 15 2 1 0 0 0 0 0 0.325592 2 -0.0086278 0 1 0.626654 0 -1 2 9 4 7 2 4 9 2 7 0 0 0 0 0 0.000651134 -1 -2 0.509714 0 -1 3 14 2 2 2 3 15 2 1 0 0 0 0 0 0.319191 2 0.000881883 0 1 0.454959 0 -1 11 0 6 6 3 11 2 6 2 0 0 0 0 0 -0.0145949 -1 -2 0.264504 0 -1 14 0 2 6 2 15 0 1 3 2 14 3 1 3 0.515387 2 -0.00123046 0 1 0.619758 0 -1 7 11 2 2 2 7 11 1 1 2 8 12 1 1 -0.000218673 -1 -2 0.54692 0 -1 7 10 2 2 2 8 10 1 2 0 0 0 0 0 0.420686 2 -0.001091 0 1 0.414076 0 -1 9 14 2 6 2 9 17 2 3 0 0 0 0 0 0.000352104 -1 -2 0.547661 0 -1 12 18 4 2 2 12 19 4 1 0 0 0 0 0 0.415502 2 -0.00725638 0 1 0.716047 0 -1 8 17 4 3 3 8 18 4 1 0 0 0 0 0 0.00147019 -1 -2 0.524081 0 -1 2 18 8 2 2 2 19 8 1 0 0 0 0 0 0.372966 2 0.000114727 0 1 0.40338 0 -1 2 9 16 3 3 2 10 16 1 0 0 0 0 0 0.00305065 -1 -2 0.526399 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 0.356009 2 0.000262699 0 1 0.45698 0 -1 5 14 2 4 2 5 14 1 2 2 6 16 1 2 -0.00363656 -1 -2 0.304257 0 -1 8 9 4 2 2 8 9 2 1 2 10 10 2 1 0.586825 2 -0.00848933 1 0 0.491416 0 -1 9 5 2 5 2 9 5 1 5 0 0 0 0 0 0.00581074 -1 -2 0.491853 0 -1 9 9 3 2 3 10 9 1 2 0 0 0 0 0 0.626696 2 0.00075584 1 0 0.563324 0 -1 8 9 3 2 3 9 9 1 2 0 0 0 0 0 -0.00220177 -1 -2 0.555392 0 -1 8 8 3 6 3 9 8 1 6 0 0 0 0 0 0.382765 2 0.00279089 0 1 0.54987 0 -1 8 12 4 8 2 10 12 2 4 2 8 16 2 4 -0.00182286 -1 -2 0.438228 0 -1 2 17 16 2 2 10 17 8 1 2 2 18 8 1 0.542403 2 -0.00724955 0 1 0.288812 0 -1 8 12 3 8 3 9 12 1 8 0 0 0 0 0 -0.000687445 -1 -2 0.347266 0 -1 3 10 1 3 3 3 11 1 1 0 0 0 0 0 0.507637 2 0.00251744 0 1 0.466121 0 -1 9 14 10 6 2 14 14 5 3 2 9 17 5 3 -0.0101514 -1 -2 0.374478 0 -1 14 13 3 6 3 14 15 3 2 0 0 0 0 0 0.5294 2 -0.00414 1 0 0.466049 0 -1 1 19 18 1 3 7 19 6 1 0 0 0 0 0 -0.00470786 -1 -2 0.417506 0 -1 2 10 15 2 3 7 10 5 2 0 0 0 0 0 0.691631 2 0.041981 1 0 0.201822 0 -1 4 17 16 3 3 4 18 16 1 0 0 0 0 0 -0.014273 -1 -2 0.75112 0 -1 8 6 4 9 3 8 9 4 3 0 0 0 0 0 0.503208 2 0.00408695 1 0 0.250451 0 -1 9 16 2 4 2 9 16 1 2 2 10 18 1 2 0.00176068 -1 -2 0.33014 0 -1 5 5 10 8 2 5 9 10 4 0 0 0 0 0 0.521834 2 0.000125505 0 1 0.461444 0 -1 13 1 4 2 2 13 1 2 2 0 0 0 0 0 -0.00295032 -1 -2 0.461995 0 -1 14 0 3 6 3 14 2 3 2 0 0 0 0 0 0.524703 2 -0.00113124 0 1 0.631437 0 -1 6 7 2 2 2 6 7 1 1 2 7 8 1 1 -0.00169832 -1 -2 0.340131 0 -1 7 1 6 1 3 9 1 2 1 0 0 0 0 0 0.505553 2 -0.0114578 1 0 0.494 0 -1 9 11 3 3 3 9 12 3 1 0 0 0 0 0 -0.00849626 -1 -2 0.296545 0 -1 12 9 3 3 3 13 9 1 3 0 0 0 0 0 0.519437 2 0.0119191 1 0 0.7887 0 -1 8 11 3 3 3 8 12 3 1 0 0 0 0 0 0.00644164 -1 -2 0.510699 0 -1 5 9 3 3 3 6 9 1 3 0 0 0 0 0 0.296715 2 -0.000878578 0 1 0.571437 0 -1 10 11 1 3 3 10 12 1 1 0 0 0 0 0 -0.00203127 -1 -2 0.44812 0 -1 7 9 6 4 2 10 9 3 2 2 7 11 3 2 0.538491 2 -0.00152624 0 1 0.619357 0 -1 4 7 2 2 2 4 7 1 1 2 5 8 1 1 0.00428609 -1 -2 0.433989 0 -1 5 7 3 1 3 6 7 1 1 0 0 0 0 0 0.76973 2 0.00350109 1 0 0.317139 0 -1 18 3 2 3 3 18 4 2 1 0 0 0 0 0 0.0125877 -1 -2 0.52467 0 -1 13 1 4 2 2 13 1 2 2 0 0 0 0 0 0.424121 2 0.000262075 0 1 0.42319 0 -1 3 1 4 2 2 5 1 2 2 0 0 0 0 0 4.47017e-05 -1 -2 0.417414 0 -1 3 0 5 2 2 3 1 5 1 0 0 0 0 0 0.59196 2 0.000780847 0 1 0.427739 0 -1 14 7 6 4 2 17 7 3 2 2 14 9 3 2 0.000888512 -1 -2 0.372016 0 -1 4 8 16 2 2 4 9 16 1 0 0 0 0 0 0.522682 2 0.00233691 0 1 0.547807 0 -1 2 11 5 6 3 2 13 5 2 0 0 0 0 0 0.00166884 -1 -2 0.362868 0 -1 5 16 2 4 2 5 16 1 2 2 6 18 1 2 0.615 2 0.000308445 0 1 0.474708 0 -1 15 6 2 12 2 16 6 1 6 2 15 12 1 6 0.00346176 -1 -2 0.458014 0 -1 13 3 6 16 3 15 3 2 16 0 0 0 0 0 0.558568 2 0.0189613 0 1 0.52988 0 -1 4 5 12 12 2 4 5 6 6 2 10 11 6 6 0.173473 -1 -2 0.369839 0 -1 5 1 10 13 2 10 1 5 13 0 0 0 0 0 0.849862 2 0.000200205 1 0 0.556566 0 -1 11 5 2 2 2 12 5 1 1 2 11 6 1 1 0.00109671 -1 -2 0.479571 0 -1 13 5 1 3 3 13 6 1 1 0 0 0 0 0 0.628626 2 0.000151071 0 1 0.405241 0 -1 7 4 2 4 2 7 4 1 2 2 8 6 1 2 -0.00344635 -1 -2 0.617302 0 -1 7 5 6 4 2 10 5 3 4 0 0 0 0 0 0.441426 2 0.00851766 1 0 0.357057 0 -1 12 4 4 6 2 14 4 2 3 2 12 7 2 3 -0.0358121 -1 -2 0.315133 0 -1 12 11 7 6 3 12 13 7 2 0 0 0 0 0 0.52527 2 -0.0211554 0 1 0.612472 0 -1 5 6 6 6 3 7 6 2 6 0 0 0 0 0 0.000898909 -1 -2 0.516998 0 -1 9 8 2 2 2 9 9 2 1 0 0 0 0 0 0.359627 2 -0.00156138 1 0 0.491499 0 -1 15 6 2 2 2 16 6 1 1 2 15 7 1 1 0.000671209 -1 -2 0.454621 0 -1 14 7 4 4 2 16 7 2 2 2 14 9 2 2 0.539581 2 -0.021597 0 1 0.190313 0 -1 5 5 6 2 3 7 5 2 2 0 0 0 0 0 -0.0249472 -1 -2 0.697408 0 -1 1 19 18 1 3 7 19 6 1 0 0 0 0 0 0.496772 2 0.0018726 0 1 0.474895 0 -1 12 3 3 3 3 12 4 3 1 0 0 0 0 0 0.00639127 -1 -2 0.518018 0 -1 16 0 2 3 3 16 1 2 1 0 0 0 0 0 0.292432 2 -0.00915524 0 1 0.766587 0 -1 5 3 3 3 3 5 4 3 1 0 0 0 0 0 0.00217157 -1 -2 0.521555 0 -1 2 0 2 3 3 2 1 2 1 0 0 0 0 0 0.336572 2 0.00123304 1 0 0.626096 0 -1 15 6 2 2 2 16 6 1 1 2 15 7 1 1 -0.000407859 -1 -2 0.453351 0 -1 10 13 1 6 2 10 16 1 3 0 0 0 0 0 0.538649 2 0.000464376 0 1 0.41035 0 -1 0 7 10 2 2 0 7 5 1 2 5 8 5 1 -0.000116002 -1 -2 0.583039 0 -1 3 10 6 2 2 3 11 6 1 0 0 0 0 0 0.430411 2 -0.0127187 0 1 0.213258 0 -1 12 18 4 2 2 12 19 4 1 0 0 0 0 0 8.94319e-05 -1 -2 0.487289 0 -1 12 18 2 2 2 13 18 1 1 2 12 19 1 1 0.545892 2 -0.000339137 0 1 0.397436 0 -1 6 19 2 1 2 7 19 1 1 0 0 0 0 0 -0.0180263 -1 -2 0.756855 0 -1 0 4 2 16 2 0 4 1 8 2 1 12 1 8 0.504561 2 0.00691792 1 0 0.39663 0 -1 16 1 4 9 3 16 4 4 3 0 0 0 0 0 -0.000118397 -1 -2 0.419808 0 -1 10 2 1 2 2 10 3 1 1 0 0 0 0 0 0.54358 2 -0.00394742 0 1 0.636946 0 -1 4 14 4 6 2 4 14 2 3 2 6 17 2 3 6.00509e-05 -1 -2 0.526957 0 -1 4 15 1 4 2 4 17 1 2 0 0 0 0 0 0.381224 2 0.00914236 1 0 0.415676 0 -1 0 2 20 4 2 10 2 10 2 2 0 4 10 2 0.000213054 -1 -2 0.352353 0 -1 14 5 2 8 2 14 9 2 4 0 0 0 0 0 0.534945 2 -0.000208559 1 0 0.440332 0 -1 5 12 4 5 2 7 12 2 5 0 0 0 0 0 0.00131304 -1 -2 0.605816 0 -1 0 13 9 6 3 0 15 9 2 0 0 0 0 0 0.446822 2 -0.00291348 1 0 0.482571 0 -1 9 14 11 3 3 9 15 11 1 0 0 0 0 0 0.00296458 -1 -2 0.4836 0 -1 7 14 7 3 3 7 15 7 1 0 0 0 0 0 0.603928 2 0.00177725 1 0 0.687183 0 -1 3 6 2 2 2 3 6 1 1 2 4 7 1 1 -0.00771363 -1 -2 0.284222 0 -1 6 7 2 7 2 7 7 1 7 0 0 0 0 0 0.514543 2 0.000510275 1 0 0.602443 0 -1 14 5 1 3 3 14 6 1 1 0 0 0 0 0 0.00174606 -1 -2 0.475661 0 -1 13 4 4 3 3 13 5 4 1 0 0 0 0 0 0.572115 2 0.000380683 1 0 0.493107 0 -1 2 7 4 4 2 2 7 2 2 2 4 9 2 2 0.00282289 -1 -2 0.33117 0 -1 2 9 13 6 2 2 12 13 3 0 0 0 0 0 0.62276 2 -0.00530005 1 0 0.523209 0 -1 10 1 3 4 3 11 1 1 4 0 0 0 0 0 4.49513e-05 -1 -2 0.399523 0 -1 9 8 5 2 2 9 9 5 1 0 0 0 0 0 0.53148 2 0.00327525 0 1 0.448162 0 -1 0 14 11 3 3 0 15 11 1 0 0 0 0 0 -0.00281626 -1 -2 0.390797 0 -1 8 11 2 8 2 8 15 2 4 0 0 0 0 0 0.667164 2 0.00141123 0 1 0.535701 0 -1 5 11 10 6 2 5 14 10 3 0 0 0 0 0 0.0083062 -1 -2 0.477097 0 -1 5 13 15 5 3 10 13 5 5 0 0 0 0 0 0.55701 2 0.00221648 0 1 0.494712 0 -1 8 10 1 10 2 8 15 1 5 0 0 0 0 0 -0.00498686 -1 -2 0.524131 0 -1 4 14 6 2 3 6 14 2 2 0 0 0 0 0 0.251265 2 -0.00366643 1 0 0.461955 0 -1 7 14 7 3 3 7 15 7 1 0 0 0 0 0 -0.0105812 -1 -2 0.630172 0 -1 7 16 9 3 3 7 17 9 1 0 0 0 0 0 0.497303 2 0.00733665 1 0 0.287097 0 -1 8 7 3 3 3 8 8 3 1 0 0 0 0 0 -0.000393189 -1 -2 0.425281 0 -1 3 5 1 6 2 3 8 1 3 0 0 0 0 0 0.557925 2 -0.00813753 0 1 0.574732 0 -1 6 5 11 2 2 6 6 11 1 0 0 0 0 0 0.00248092 -1 -2 0.520337 0 -1 9 0 3 2 3 10 0 1 2 0 0 0 0 0 0.390357 2 0.000887498 1 0 0.553432 0 -1 5 5 1 3 3 5 6 1 1 0 0 0 0 0 -0.000421949 -1 -2 0.533804 0 -1 8 7 3 2 3 9 7 1 2 0 0 0 0 0 0.392584 2 -0.00797901 0 1 0.414432 0 -1 5 2 10 6 2 10 2 5 3 2 5 5 5 3 0.00114396 -1 -2 0.470137 0 -1 8 4 6 4 2 8 4 3 4 0 0 0 0 0 0.528174 2 0.00755421 1 0 0.252726 0 -1 8 16 3 4 3 9 16 1 4 0 0 0 0 0 0.00102884 -1 -2 0.560515 0 -1 9 13 2 6 2 9 13 1 3 2 10 16 1 3 0.429786 2 -0.00172347 1 0 0.483968 0 -1 9 8 3 1 3 10 8 1 1 0 0 0 0 0 0.575867 -1 -2 0.51105 0 -1 2 5 18 15 3 2 10 18 5 0 0 0 0 0 0.0804893 18 -1 -1 53.7556 109 2 0.00666405 0 1 0.382892 0 -1 1 3 6 2 2 4 3 3 2 0 0 0 0 0 0.00899055 -1 -2 0.485843 0 -1 7 6 6 2 3 9 6 2 2 0 0 0 0 0 0.735496 2 0.00571542 1 0 0.672322 0 -1 8 17 4 3 3 8 18 4 1 0 0 0 0 0 0.00112579 -1 -2 0.442958 0 -1 10 13 2 3 3 10 14 2 1 0 0 0 0 0 0.607078 2 -0.00091789 1 0 0.307635 0 -1 0 10 20 4 2 0 12 20 2 0 0 0 0 0 -0.00104929 -1 -2 0.559364 0 -1 5 7 6 4 2 5 7 3 2 2 8 9 3 2 0.365102 2 3.54539e-05 0 1 0.427797 0 -1 11 12 1 2 2 11 13 1 1 0 0 0 0 0 0.000290157 -1 -2 0.458355 0 -1 10 10 2 3 3 10 11 2 1 0 0 0 0 0 0.528468 2 0.000160717 1 0 0.379819 0 -1 9 5 2 2 2 9 6 2 1 0 0 0 0 0 -0.000529611 -1 -2 0.385044 0 -1 4 4 1 10 2 4 9 1 5 0 0 0 0 0 0.593969 2 0.000266826 0 1 0.412302 0 -1 11 18 4 2 2 11 18 2 2 0 0 0 0 0 -0.000134925 -1 -2 0.57606 0 -1 12 18 3 2 2 12 19 3 1 0 0 0 0 0 0.423765 2 -0.0108417 0 1 0.392992 0 -1 0 6 16 6 2 0 6 8 3 2 8 9 8 3 0.0120778 -1 -2 0.576192 0 -1 7 6 4 12 2 7 12 4 6 0 0 0 0 0 0.278044 2 0.00221289 0 1 0.479451 0 -1 11 18 4 2 2 11 18 2 2 0 0 0 0 0 -0.0152662 -1 -2 0.0740559 0 -1 12 18 3 2 2 12 19 3 1 0 0 0 0 0 0.515358 2 6.79295e-05 1 0 0.585874 0 -1 8 12 1 2 2 8 13 1 1 0 0 0 0 0 0.000176336 -1 -2 0.356761 0 -1 8 13 1 3 3 8 14 1 1 0 0 0 0 0 0.559896 2 0.000813114 1 0 0.534685 0 -1 11 18 4 2 2 11 18 2 2 0 0 0 0 0 0.00326305 -1 -2 0.478254 0 -1 14 12 4 6 2 14 12 2 6 0 0 0 0 0 0.545675 2 -0.00395039 0 1 0.283181 0 -1 6 0 3 4 3 7 0 1 4 0 0 0 0 0 -0.000398646 -1 -2 0.548522 0 -1 4 0 2 8 2 4 0 1 4 2 5 4 1 4 0.41597 2 -0.0114325 0 1 0.56391 0 -1 11 17 9 3 3 14 17 3 3 0 0 0 0 0 0.00533392 -1 -2 0.459698 0 -1 16 2 4 5 2 16 2 2 5 0 0 0 0 0 0.593124 2 0.00831933 1 0 0.323062 0 -1 0 2 5 9 3 0 5 5 3 0 0 0 0 0 -0.000424799 -1 -2 0.379529 0 -1 7 2 3 2 3 8 2 1 2 0 0 0 0 0 0.540861 2 -0.111894 0 1 0.11323 0 -1 11 17 9 3 3 14 17 3 3 0 0 0 0 0 -0.00755538 -1 -2 0.633937 0 -1 16 2 4 5 2 16 2 2 5 0 0 0 0 0 0.483877 2 -0.0070337 0 1 0.566526 0 -1 0 17 9 3 3 3 17 3 3 0 0 0 0 0 -0.0148337 -1 -2 0.675142 0 -1 0 2 4 5 2 2 2 2 5 0 0 0 0 0 0.414095 2 0.00875067 1 0 0.356126 0 -1 5 11 10 9 3 5 14 10 3 0 0 0 0 0 0.0016645 -1 -2 0.534728 0 -1 9 6 3 3 3 9 7 3 1 0 0 0 0 0 0.364978 2 0.00949008 1 0 0.275466 0 -1 3 17 5 3 3 3 18 5 1 0 0 0 0 0 0.00111331 -1 -2 0.422599 0 -1 7 5 4 7 2 9 5 2 7 0 0 0 0 0 0.562918 2 0.00949408 0 1 0.490604 0 -1 9 8 2 5 2 9 8 1 5 0 0 0 0 0 -0.00153966 -1 -2 0.400705 0 -1 2 2 18 2 2 2 3 18 1 0 0 0 0 0 0.538071 2 0.13435 1 0 0.221467 0 -1 2 8 15 6 3 7 8 5 6 0 0 0 0 0 -0.00949408 -1 -2 0.735316 0 -1 9 8 2 5 2 10 8 1 5 0 0 0 0 0 0.500503 2 0.0200118 1 0 0.332791 0 -1 12 10 4 6 3 12 12 4 2 0 0 0 0 0 -0.0018875 -1 -2 0.391529 0 -1 14 3 6 2 2 14 4 6 1 0 0 0 0 0 0.540185 2 0.00718428 1 0 0.71766 0 -1 5 5 2 3 3 5 6 2 1 0 0 0 0 0 0.0016977 -1 -2 0.452698 0 -1 4 6 3 3 3 4 7 3 1 0 0 0 0 0 0.607691 2 0.004922 1 0 0.256983 0 -1 14 12 3 3 3 14 13 3 1 0 0 0 0 0 0.0118032 -1 -2 0.499964 0 -1 6 12 11 3 3 6 13 11 1 0 0 0 0 0 0.595823 2 -0.00977034 0 1 0.345909 0 -1 1 2 3 6 3 1 4 3 2 0 0 0 0 0 0.00211749 -1 -2 0.451513 0 -1 1 0 4 7 2 3 0 2 7 0 0 0 0 0 0.582972 2 0.00948014 0 1 0.480739 0 -1 9 8 3 4 3 10 8 1 4 0 0 0 0 0 -0.00260788 -1 -2 0.346222 0 -1 10 9 2 2 2 10 10 2 1 0 0 0 0 0 0.520159 2 -0.00572527 0 1 0.659985 0 -1 8 8 3 4 3 9 8 1 4 0 0 0 0 0 -0.00823256 -1 -2 0.282183 0 -1 4 4 10 10 2 4 9 10 5 0 0 0 0 0 0.512528 2 0.00089572 0 1 0.488382 0 -1 9 10 3 2 3 10 10 1 2 0 0 0 0 0 -0.000150216 -1 -2 0.482992 0 -1 9 10 3 2 2 9 11 3 1 0 0 0 0 0 0.542872 2 0.000484897 0 1 0.44346 0 -1 8 10 3 2 3 9 10 1 2 0 0 0 0 0 -0.0961927 -1 -2 0.225664 0 -1 2 4 14 12 2 2 4 7 6 2 9 10 7 6 0.595623 2 -0.00110535 0 1 0.452722 0 -1 10 12 1 6 2 10 15 1 3 0 0 0 0 0 -0.10215 -1 -2 0.284435 0 -1 7 3 8 16 2 11 3 4 8 2 7 11 4 8 0.518645 2 0.00301479 1 0 0.3809 0 -1 5 6 8 10 2 5 6 4 5 2 9 11 4 5 0.00761316 -1 -2 0.57187 0 -1 6 2 8 8 2 6 2 4 4 2 10 6 4 4 0.426256 2 0.00151976 1 0 0.594272 0 -1 10 5 4 2 2 12 5 2 1 2 10 6 2 1 -0.0141973 -1 -2 0.77311 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.499765 2 -0.0138189 0 1 0.668114 0 -1 4 19 12 1 3 8 19 4 1 0 0 0 0 0 -0.000507013 -1 -2 0.330561 0 -1 8 2 3 1 3 9 2 1 1 0 0 0 0 0 0.474997 2 -0.00935375 0 1 0.286093 0 -1 13 17 4 3 3 13 18 4 1 0 0 0 0 0 -0.00947711 -1 -2 0.618888 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.48421 2 0.00169237 1 0 0.607025 0 -1 9 14 2 3 3 9 15 2 1 0 0 0 0 0 0.000586525 -1 -2 0.378269 0 -1 7 15 6 3 3 7 16 6 1 0 0 0 0 0 0.53682 2 -0.00258266 0 1 0.369021 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 -0.00273076 -1 -2 0.385711 0 -1 14 12 2 3 3 14 13 2 1 0 0 0 0 0 0.531811 2 0.0218716 1 0 0.232701 0 -1 4 10 4 6 3 4 12 4 2 0 0 0 0 0 -1.50103e-05 -1 -2 0.556072 0 -1 4 13 3 2 2 4 14 3 1 0 0 0 0 0 0.430141 2 0.00535837 1 0 0.676764 0 -1 9 16 2 3 3 9 17 2 1 0 0 0 0 0 0.00500575 -1 -2 0.51949 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.361285 2 -0.00190301 0 1 0.323785 0 -1 7 18 3 2 3 8 18 1 2 0 0 0 0 0 -0.00785067 -1 -2 0.119485 0 -1 1 10 4 2 2 1 11 4 1 0 0 0 0 0 0.499172 2 -0.00270937 1 0 0.485496 0 -1 12 4 6 3 3 12 5 6 1 0 0 0 0 0 0.00141381 -1 -2 0.487232 0 -1 14 4 1 3 3 14 5 1 1 0 0 0 0 0 0.590358 2 0.00903002 1 0 0.654732 0 -1 2 4 6 3 3 2 5 6 1 0 0 0 0 0 -0.000979257 -1 -2 0.584927 0 -1 5 4 1 3 3 5 5 1 1 0 0 0 0 0 0.455423 2 0.00139844 1 0 0.406463 0 -1 14 12 3 3 3 14 13 3 1 0 0 0 0 0 0.000833721 -1 -2 0.539954 0 -1 15 12 2 3 3 15 13 2 1 0 0 0 0 0 0.415281 2 0.0105511 1 0 0.179668 0 -1 3 16 4 3 3 3 17 4 1 0 0 0 0 0 8.83441e-05 -1 -2 0.425186 0 -1 8 0 4 2 2 8 1 4 1 0 0 0 0 0 0.541352 2 -0.0410223 1 0 0.522812 0 -1 0 0 20 1 2 0 0 10 1 0 0 0 0 0 0.00750656 -1 -2 0.485374 0 -1 9 7 3 4 3 10 7 1 4 0 0 0 0 0 0.609344 2 0.0410223 1 0 0.220502 0 -1 0 0 20 1 2 10 0 10 1 0 0 0 0 0 -0.000539614 -1 -2 0.569273 0 -1 8 7 3 4 3 9 7 1 4 0 0 0 0 0 0.446876 2 -0.068696 0 1 0.148331 0 -1 1 6 19 3 3 1 7 19 1 0 0 0 0 0 -0.00184479 -1 -2 0.621128 0 -1 12 7 4 2 2 12 8 4 1 0 0 0 0 0 0.49666 2 -0.00609599 0 1 0.229467 0 -1 7 8 3 3 3 7 9 3 1 0 0 0 0 0 -0.00420683 -1 -2 0.640709 0 -1 7 7 3 3 3 8 7 1 3 0 0 0 0 0 0.474856 2 -0.000713328 1 0 0.535494 0 -1 2 9 16 3 3 2 10 16 1 0 0 0 0 0 0.117568 -1 -2 0.513698 0 -1 9 4 2 12 3 9 8 2 4 0 0 0 0 0 0.0105957 2 5.93543e-05 0 1 0.37118 0 -1 7 3 2 5 2 8 3 1 5 0 0 0 0 0 -0.00631737 -1 -2 0.171207 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 0.506176 2 0.0149415 1 0 0.672912 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 -0.00207894 -1 -2 0.441065 0 -1 7 8 6 4 2 10 8 3 2 2 7 10 3 2 0.544403 2 -0.000707362 0 1 0.556891 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 -0.00312471 -1 -2 0.502387 0 -1 5 5 6 6 3 7 5 2 6 0 0 0 0 0 0.356241 2 -0.000789194 1 0 0.545679 0 -1 9 1 3 6 3 10 1 1 6 0 0 0 0 0 0.0101796 -1 -2 0.554514 0 -1 4 5 12 2 3 8 5 4 2 0 0 0 0 0 0.462231 2 -0.00275061 1 0 0.494254 0 -1 4 2 6 4 3 6 2 2 4 0 0 0 0 0 0.0106013 -1 -2 0.296123 0 -1 4 7 8 2 2 4 8 8 1 0 0 0 0 0 0.596434 2 0.00514668 0 1 0.549523 0 -1 3 6 14 6 2 10 6 7 3 2 3 9 7 3 0.0763211 -1 -2 0.517396 0 -1 3 6 14 3 2 3 6 7 3 0 0 0 0 0 0.294022 2 -0.00150277 0 1 0.31063 0 -1 0 5 2 2 2 0 6 2 1 0 0 0 0 0 0.0122667 -1 -2 0.465115 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 0.684661 2 -0.0311186 1 0 0.522606 0 -1 13 0 3 20 3 14 0 1 20 0 0 0 0 0 0.0289056 -1 -2 0.518224 0 -1 10 8 10 3 3 10 9 10 1 0 0 0 0 0 0.270543 2 0.0475984 1 0 0.110951 0 -1 4 0 3 20 3 5 0 1 20 0 0 0 0 0 0.0308085 -1 -2 0.493863 0 -1 0 8 10 3 3 0 9 10 1 0 0 0 0 0 0.140411 2 -0.000212778 1 0 0.439236 0 -1 12 5 3 4 3 13 5 1 4 0 0 0 0 0 0.07897 -1 -2 0.521655 0 -1 6 7 12 4 3 10 7 4 4 0 0 0 0 0 0.229411 2 -0.010258 0 1 0.617665 0 -1 1 14 6 6 2 1 14 3 3 2 4 17 3 3 0.00126049 -1 -2 0.523622 0 -1 1 17 6 2 2 1 18 6 1 0 0 0 0 0 0.332897 2 -0.0334905 1 0 0.486619 0 -1 14 8 6 12 2 17 8 3 6 2 14 14 3 6 -0.000592028 -1 -2 0.411641 0 -1 18 5 2 2 2 18 6 2 1 0 0 0 0 0 0.539564 2 3.03208e-05 1 0 0.561074 0 -1 3 16 4 2 2 3 16 2 1 2 5 17 2 1 -0.000543697 -1 -2 0.562139 0 -1 2 16 6 2 3 4 16 2 2 0 0 0 0 0 0.34612 2 -0.0334905 1 0 0.489676 0 -1 14 8 6 12 2 17 8 3 6 2 14 14 3 6 -0.000592028 -1 -2 0.43054 0 -1 18 5 2 2 2 18 6 2 1 0 0 0 0 0 0.534071 2 0.00205509 0 1 0.5545 0 -1 5 16 9 2 3 8 16 3 2 0 0 0 0 0 -0.00443536 -1 -2 0.603854 0 -1 3 14 6 6 2 3 14 3 3 2 6 17 3 3 0.374659 2 -0.0841704 1 0 0.500735 0 -1 14 8 6 12 2 17 8 3 6 2 14 14 3 6 0.0067419 -1 -2 0.52981 0 -1 11 7 2 12 3 11 11 2 4 0 0 0 0 0 0.471615 2 0.0102782 1 0 0.626938 0 -1 0 8 6 12 2 0 8 3 6 2 3 14 3 6 0.00588009 -1 -2 0.515483 0 -1 7 7 2 12 3 7 11 2 4 0 0 0 0 0 0.381304 2 -6.96792e-06 1 0 0.444024 0 -1 14 12 1 2 2 14 13 1 1 0 0 0 0 0 0.000824195 -1 -2 0.469753 0 -1 12 13 8 1 2 12 13 4 1 0 0 0 0 0 0.54855 2 -0.00552683 0 1 0.55136 0 -1 0 3 16 6 2 0 6 16 3 0 0 0 0 0 0.000961287 -1 -2 0.361864 0 -1 1 4 8 2 2 1 4 4 1 2 5 5 4 1 0.583846 2 0.00248105 1 0 0.252322 0 -1 14 12 1 2 2 14 13 1 1 0 0 0 0 0 -0.00104806 -1 -2 0.411726 0 -1 15 12 2 3 3 15 13 2 1 0 0 0 0 0 0.5393 2 -0.00612879 0 1 0.672633 0 -1 8 16 3 3 3 8 17 3 1 0 0 0 0 0 0.000116823 -1 -2 0.504119 0 -1 5 12 1 2 2 5 13 1 1 0 0 0 0 0 0.360773 2 -0.0399095 0 1 0.156374 0 -1 13 4 3 15 3 14 4 1 15 0 0 0 0 0 0.00158595 -1 -2 0.489198 0 -1 17 3 2 6 2 18 3 1 3 2 17 6 1 3 0.577985 2 -0.0226902 0 1 0.218688 0 -1 4 4 3 15 3 5 4 1 15 0 0 0 0 0 0.00209161 -1 -2 0.477158 0 -1 1 3 2 6 2 1 3 1 3 2 2 6 1 3 0.609923 2 -0.0247154 0 1 0.3464 0 -1 7 15 12 4 2 7 17 12 2 0 0 0 0 0 -0.0134195 -1 -2 0.363069 0 -1 1 0 19 3 3 1 1 19 1 0 0 0 0 0 0.52522 2 -0.00606295 0 1 0.666632 0 -1 3 17 10 2 2 3 17 5 1 2 8 18 5 1 -0.0020921 -1 -2 0.339955 0 -1 2 5 10 15 3 2 10 10 5 0 0 0 0 0 0.50357 2 0.0259619 0 1 0.50368 0 -1 13 8 3 4 2 13 10 3 2 0 0 0 0 0 0.000179087 -1 -2 0.541853 0 -1 19 13 1 2 2 19 14 1 1 0 0 0 0 0 0.431898 2 -0.00315469 0 1 0.722103 0 -1 4 8 3 4 2 4 10 3 2 0 0 0 0 0 -0.00113978 -1 -2 0.332097 0 -1 0 13 1 2 2 0 14 1 1 0 0 0 0 0 0.502443 2 -0.0478402 0 1 0.193877 0 -1 12 7 2 12 2 12 13 2 6 0 0 0 0 0 0.000415771 -1 -2 0.480219 0 -1 14 7 2 2 2 15 7 1 1 2 14 8 1 1 0.573071 2 -0.00044247 0 1 0.426252 0 -1 5 3 8 2 2 5 4 8 1 0 0 0 0 0 0.00144794 -1 -2 0.571917 0 -1 0 2 2 6 3 0 4 2 2 0 0 0 0 0 0.406415 2 0.0157015 0 1 0.499573 0 -1 18 2 2 12 2 19 2 1 6 2 18 8 1 6 0.000278057 -1 -2 0.528929 0 -1 18 1 1 2 2 18 2 1 1 0 0 0 0 0 0.458173 2 -0.00290105 0 1 0.601215 0 -1 0 2 2 12 2 0 2 1 6 2 1 8 1 6 0.000208305 -1 -2 0.505798 0 -1 1 1 1 2 2 1 2 1 1 0 0 0 0 0 0.359943 2 -0.05153 1 0 0.49918 0 -1 16 4 4 14 2 18 4 2 7 2 16 11 2 7 0.000171634 -1 -2 0.467547 0 -1 10 14 1 6 2 10 17 1 3 0 0 0 0 0 0.537477 2 0.0236143 1 0 0.658648 0 -1 0 4 4 14 2 0 4 2 7 2 2 11 2 7 -0.000564278 -1 -2 0.38533 0 -1 9 14 1 6 2 9 17 1 3 0 0 0 0 0 0.519604 2 0.0066904 1 0 0.600424 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 -0.00487895 -1 -2 0.329323 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 0.524524 2 -0.00685373 0 1 0.256591 0 -1 0 8 4 3 3 0 9 4 1 0 0 0 0 0 0.000998938 -1 -2 0.461549 0 -1 4 7 2 2 2 4 7 1 1 2 5 8 1 1 0.594243 2 -0.000133547 0 1 0.548738 0 -1 13 7 2 1 2 13 7 1 1 0 0 0 0 0 0.00101651 -1 -2 0.457836 0 -1 11 4 4 5 2 11 4 2 5 0 0 0 0 0 0.542693 2 0.000912168 1 0 0.393946 0 -1 4 8 3 3 3 5 8 1 3 0 0 0 0 0 0.00100803 -1 -2 0.404979 0 -1 0 3 8 1 2 4 3 4 1 0 0 0 0 0 0.55207 2 -0.000131025 1 0 0.487909 0 -1 13 7 2 1 2 13 7 1 1 0 0 0 0 0 0.000552287 -1 -2 0.484494 0 -1 14 7 3 2 3 15 7 1 2 0 0 0 0 0 0.551283 2 -0.00012131 1 0 0.436797 0 -1 5 7 2 1 2 6 7 1 1 0 0 0 0 0 -1.5113e-05 -1 -2 0.642596 0 -1 3 7 3 2 3 4 7 1 2 0 0 0 0 0 0.488183 2 -0.000401258 1 0 0.53721 0 -1 18 5 2 2 2 18 6 2 1 0 0 0 0 0 -0.000657669 -1 -2 0.583455 0 -1 12 14 2 2 2 13 14 1 1 2 12 15 1 1 0.486908 2 0.000622204 1 0 0.382464 0 -1 0 5 2 2 2 0 6 2 1 0 0 0 0 0 0.00146634 -1 -2 0.481349 0 -1 6 14 2 2 2 6 14 1 1 2 7 15 1 1 0.696674 2 -0.0495477 0 1 0.0539277 0 -1 7 12 6 5 3 9 12 2 5 0 0 0 0 0 0.00130176 -1 -2 0.533746 0 -1 12 17 5 2 2 12 18 5 1 0 0 0 0 0 0.416075 2 -0.00449145 0 1 0.599744 0 -1 1 11 6 3 2 4 11 3 3 0 0 0 0 0 0.00165924 -1 -2 0.372719 0 -1 1 9 6 3 2 4 9 3 3 0 0 0 0 0 0.511563 2 0.00646955 0 1 0.525204 0 -1 12 7 2 12 2 12 13 2 6 0 0 0 0 0 0.00498103 -1 -2 0.525672 0 -1 8 7 5 3 3 8 8 5 1 0 0 0 0 0 0.393441 2 -0.038537 0 1 0.206192 0 -1 6 7 2 12 2 6 13 2 6 0 0 0 0 0 -0.282757 -1 -2 0.0618832 0 -1 1 2 9 18 3 4 2 3 18 0 0 0 0 0 0.492506 2 -0.00903018 0 1 0.315759 0 -1 12 17 5 2 2 12 18 5 1 0 0 0 0 0 -0.0438663 -1 -2 0.203368 0 -1 4 7 12 2 2 4 7 6 2 0 0 0 0 0 0.516477 2 -0.00457011 0 1 0.661118 0 -1 6 7 6 1 3 8 7 2 1 0 0 0 0 0 -0.00233624 -1 -2 0.280779 0 -1 7 3 3 2 3 8 3 1 2 0 0 0 0 0 0.496288 2 0.00539603 0 1 0.514639 0 -1 9 4 3 1 3 10 4 1 1 0 0 0 0 0 -0.00262976 -1 -2 0.628449 0 -1 11 11 3 1 3 12 11 1 1 0 0 0 0 0 0.495559 2 -0.00385775 0 1 0.148675 0 -1 8 4 3 1 3 9 4 1 1 0 0 0 0 0 0.00139638 -1 -2 0.470134 0 -1 6 11 3 1 3 7 11 1 1 0 0 0 0 0 0.632097 2 -0.00886995 1 0 0.528682 0 -1 12 13 6 6 3 12 15 6 2 0 0 0 0 0 -0.000706263 -1 -2 0.464837 0 -1 14 13 1 6 3 14 15 1 2 0 0 0 0 0 0.533321 2 0.00426458 0 1 0.508488 0 -1 2 13 6 6 3 2 15 6 2 0 0 0 0 0 0.0615721 -1 -2 0.362963 0 -1 1 5 18 1 3 7 5 6 1 0 0 0 0 0 0.875716 2 -0.0045382 1 0 0.48567 0 -1 4 7 12 2 2 10 7 6 1 2 4 8 6 1 -0.00408779 -1 -2 0.458412 0 -1 6 1 8 10 2 10 1 4 5 2 6 6 4 5 0.542024 2 0.00643086 1 0 0.27073 0 -1 3 13 4 3 3 3 14 4 1 0 0 0 0 0 0.00704553 -1 -2 0.505749 0 -1 6 13 4 3 3 6 14 4 1 0 0 0 0 0 0.702652 2 -0.00232464 1 0 0.482728 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 6.02766e-05 -1 -2 0.424725 0 -1 12 9 2 3 3 12 10 2 1 0 0 0 0 0 0.550876 2 0.0180846 1 0 0.81048 0 -1 7 14 4 3 3 7 15 4 1 0 0 0 0 0 0.000846935 -1 -2 0.515462 0 -1 9 0 2 1 2 10 0 1 1 0 0 0 0 0 0.351438 2 -0.026931 1 0 0.488689 0 -1 5 0 10 5 2 5 0 5 5 0 0 0 0 0 -0.00423466 -1 -2 0.462238 0 -1 6 6 8 7 2 6 6 4 7 0 0 0 0 0 0.538248 2 0.0269471 1 0 0.63666 0 -1 5 0 10 5 2 10 0 5 5 0 0 0 0 0 0.00464469 -1 -2 0.536851 0 -1 6 6 8 7 2 10 6 4 7 0 0 0 0 0 0.376543 2 -0.00695777 0 1 0.423469 0 -1 5 9 10 8 2 10 9 5 4 2 5 13 5 4 0.000876097 -1 -2 0.467241 0 -1 10 0 4 10 2 12 0 2 5 2 10 5 2 5 0.535068 2 0.00161033 1 0 0.573276 0 -1 1 4 8 3 3 1 5 8 1 0 0 0 0 0 -0.00128486 -1 -2 0.54818 0 -1 4 4 8 3 3 4 5 8 1 0 0 0 0 0 0.378459 2 0.0102435 0 1 0.515591 0 -1 9 7 4 3 3 9 8 4 1 0 0 0 0 0 0.000268893 -1 -2 0.535319 0 -1 12 8 3 12 2 12 14 3 6 0 0 0 0 0 0.438715 2 0.00379037 0 1 0.5032 0 -1 7 7 4 3 3 7 8 4 1 0 0 0 0 0 -0.0293697 -1 -2 0.587354 0 -1 5 8 3 12 2 5 14 3 6 0 0 0 0 0 0.221545 2 0.00607431 1 0 0.541703 0 -1 10 0 7 6 3 10 2 7 2 0 0 0 0 0 -0.0127107 -1 -2 0.605651 0 -1 2 1 18 1 3 8 1 6 1 0 0 0 0 0 0.498518 2 -0.00594454 0 1 0.335207 0 -1 5 0 3 8 3 6 0 1 8 0 0 0 0 0 -0.00289275 -1 -2 0.692924 0 -1 4 7 4 2 2 4 8 4 1 0 0 0 0 0 0.477822 7 3 6 -2.2435 1328 1 6 0.623263 0.483043 0.507911 0.606885 0.747231 0.618075 0.413542 -0.0788034 -0.447611 -0.589104 -0.549595 -0.570635 -0.462644 -0.327687 -0.0261964 0.113736 0.0216082 -0.0707817 -0.143685 -0.356914 -0.4188 -0.420425 -0.13388 0.267355 0.598552 0.704435 0.623869 0.576048 0.5079 0.407373 0.333783 -0.0230939 -0.424639 -0.800567 -0.85576 -0.637587 -0.409775 -0.159687 0.00580683 0.0538857 -0.0650469 -0.247039 -0.292479 -0.167995 -0.251696 -0.30552 -0.372988 -0.429569 -0.619078 -0.880047 -0.959196 -0.760656 -0.377095 0.0032958 0.34763 0.50114 0.530526 0.486292 0.331617 -0.0338176 -0.329994 -0.464074 -0.569984 -0.441663 -0.120354 0.0658776 0.279776 0.474369 0.417247 0.353382 0.0945356 -0.183757 -0.16674 -0.473743 -0.30617 0.0500787 0.198275 0.16764 0.0493832 -0.160088 -0.383436 -0.601355 -0.555673 -0.475544 -0.32011 -0.0257607 0.31611 0.511375 0.527629 0.156016 -0.295657 -0.56454 -0.487654 -0.34828 -0.0806881 0.353766 0.510522 0.552885 0.456441 0.427701 0.469433 0.266274 0.0615987 -0.20363 -0.0590605 -0.421882 -0.27799 0.0938345 0.393059 0.499345 0.41622 0.372375 0.355672 0.212244 -0.0907458 -0.277528 -0.411423 -0.509004 -0.541882 0.117594 0.550819 0.563411 0.0522097 -0.508403 -0.618534 -0.502627 -0.128908 -0.0839776 -0.178831 -0.0506758 0.0613511 -0.0924506 0.132522 0.405745 0.380923 0.156544 -0.121531 -0.134284 -0.384511 -0.0746661 0.143788 0.372547 0.285758 0.337977 0.374313 0.242372 0.092176 -0.0317277 -0.0163867 -0.268412 -0.59841 -0.662903 -0.144459 0.354344 0.425123 -0.0554344 -0.635616 -0.56972 -0.394723 -0.283875 -0.214016 -0.342304 -0.875061 -0.847186 -0.575329 -0.233163 -0.175979 0.0671294 0.133296 0.00778021 -0.0915352 0.225348 -0.148476 -0.382253 0.052214 0.187279 0.154906 -0.196671 -0.198184 -0.241995 -0.483503 -0.304471 -0.0904829 -0.168743 -0.29292 -0.566755 -0.713779 -0.47494 0.175347 0.426339 -0.0938432 -0.569342 -0.325556 -0.299704 -0.27622 0.152017 -0.732922 -0.198797 0.146543 0.229469 0.122645 0.213106 0.0728031 0.00754986 -0.256208 -0.00885472 0.0574308 -0.431565 -0.470053 -0.64451 -0.265541 -0.187388 -0.188222 -0.567154 -0.516763 0.0735278 0.456418 -0.0149528 -0.631314 -0.285895 -0.332067 -0.48671 -0.107058 0.461135 0.138153 -0.142573 -0.499076 -0.345633 -0.0250756 0.222695 0.341164 0.333272 0.176499 0.792731 0.20126 -0.054062 0.0629747 -0.182098 -0.86873 -0.880631 0.560894 -0.154317 -0.230849 -0.247199 -0.397215 -0.267403 0.209019 0.527688 0.238439 -0.227373 -0.347374 -0.172703 -0.440755 -0.298795 -0.140066 -0.11819 -0.242167 -0.27637 -0.30061 -0.309257 -0.237203 -0.0953731 0.251542 0.394132 0.392159 0.262255 -0.53759 0.802862 0.618264 0.24887 -0.000607345 -0.520761 -0.683721 -0.540254 -0.232894 -0.170648 -0.195386 -0.166846 -0.210557 -0.227176 -0.408013 -0.0310326 -0.253013 -0.0966267 0.342917 0.576731 0.451113 0.084285 -0.107413 0.0188512 -0.0467256 -0.184215 0.0865749 0.115687 0.00161995 -0.0766908 -0.0745084 -0.120601 -0.130329 0.00956071 0.215522 0.390962 0.356257 0.296431 -0.163502 -0.3506 0.782788 0.920884 0.371487 0.0152024 -0.421811 -0.462868 -0.432138 -0.322713 -0.145826 -0.11808 -0.131083 -0.0194955 -0.0817828 0.230268 0.108118 -0.0912658 0.138755 0.282545 0.578954 0.532475 0.251844 0.0150014 -0.0466376 0.20553 0.167832 0.41159 0.463175 0.389144 0.24173 0.0936452 0.100279 0.0661405 0.0488136 0.260757 0.262533 0.290279 0.198091 0.16227 -1.11622 -0.266298 0.499278 0.916079 0.373187 0.10122 -0.193115 -0.259686 -0.179204 -0.11667 0.00161173 0.225175 0.286377 0.305577 0.27342 0.270517 0.05651 0.106794 0.0815307 0.163393 0.596403 0.523328 0.336469 0.0170639 -0.0284378 -0.00729964 0.182776 0.299261 0.443811 0.560756 0.52916 0.467163 0.333445 0.239134 0.216961 0.266955 0.250008 0.194922 0.0690718 0.254464 -0.843211 -0.185913 0.330949 0.829082 0.316452 0.142833 -0.0650101 -0.0317445 0.0712205 0.150274 0.325089 0.552534 0.401585 0.228266 0.331911 0.0146361 -0.00483019 0.0873858 0.098003 0.095111 0.666065 0.523416 0.44632 0.122535 -0.208729 -0.0878723 0.181921 0.365009 0.385014 0.314717 0.253436 0.242877 0.314812 0.245453 0.1299 0.127829 0.130294 0.0447218 -0.0329502 0.283927 -0.668002 -0.154312 0.118434 0.626158 0.329032 0.227282 0.140448 0.197139 0.323922 0.504761 0.490004 0.454104 0.332927 0.293357 0.264276 -0.116108 -0.237846 0.0382578 0.158377 0.0585711 0.539075 0.451824 0.416212 0.187817 -0.146804 -0.268859 -0.0902684 0.263549 0.324032 0.126692 0.12377 0.0967073 0.181919 0.192044 0.115094 0.0699337 0.111989 -0.0364491 -0.0293226 0.210436 -0.437033 -0.19999 0.0220828 0.386548 0.406336 0.202597 0.21603 0.297865 0.37421 0.321277 0.23938 0.212098 0.147517 0.216604 -0.0495292 -0.409215 -0.299607 -0.0621216 0.0982613 -0.0245607 0.79098 0.793322 0.420879 0.158652 -0.131508 -0.375441 -0.444836 0.00947073 0.372586 0.332723 0.201544 0.0949147 0.0672706 0.0839739 0.0697231 0.0709288 0.0283635 -0.085697 -0.0728764 0.21025 -0.307015 -0.236751 -0.0355751 0.172644 0.315563 0.210813 0.150589 0.290837 0.278371 0.207841 0.141689 0.103703 0.189153 0.0715613 -0.415714 -0.493206 -0.219465 -0.0207913 0.15743 0.0583034 0.910402 1.10435 0.458918 0.242169 0.0113538 -0.302871 -0.554352 -0.286339 0.287368 0.44243 0.340116 0.195549 0.104374 0.00273475 -0.0238324 0.0169021 -0.0386063 -0.149476 -0.125719 0.136947 -0.240394 -0.238869 -0.0948088 0.0609419 0.256115 0.204913 0.20898 0.176384 0.204222 0.162884 0.169778 0.217984 0.249199 -0.0463073 -0.57683 -0.5618 -0.104793 -0.0403155 -0.109285 -0.307186 0.460908 0.70152 0.197084 -0.0743892 0.0704459 -0.127106 -0.554249 -0.367274 0.0682696 0.412486 0.4526 0.237009 0.124307 0.022155 -0.0708431 -0.0948125 -0.0906122 -0.19656 -0.102837 0.0937425 -0.187048 -0.147502 -0.170265 -0.0735227 0.0976562 0.0820412 0.0943118 0.0697737 0.129332 0.215483 0.290502 0.319495 0.234636 -0.116433 -0.618983 -0.566617 -0.131257 -0.371754 -1.19586 -0.592758 0.250622 0.456967 0.170544 -0.843114 -0.553434 -0.155863 -0.40714 -0.217984 0.0389639 0.196358 0.268867 0.240493 0.096747 -0.0457327 -0.066532 -0.134587 -0.1256 -0.180205 -0.117818 0.046955 -0.214118 -0.0850684 -0.223239 -0.154275 -0.0336591 0.0427423 0.0279175 0.0119131 0.0971068 0.209588 0.332141 0.289189 0.19009 -0.0367319 -0.262312 -0.333354 -0.321604 -0.472757 -0.739472 -0.495998 -0.240784 -0.00516839 -0.0264473 -0.23163 -0.270976 -0.056838 0.0967693 0.117016 0.144921 0.0624376 0.101378 0.093626 0.0565668 -0.0384202 -0.0823131 -0.14858 -0.160279 -0.201999 -0.13674 -0.061341 -0.432605 -0.0669298 -0.200048 -0.249886 -0.181021 0.0265039 -0.0365465 -0.0313269 0.0431565 0.153364 0.234334 0.194019 0.0992613 0.0654941 0.117347 0.0667366 -0.0651208 -0.324014 -0.567268 -0.293573 -0.158033 -0.193238 0.0988836 -0.127469 -0.220659 0.207307 0.514127 0.47163 0.296795 0.173791 0.0768499 0.0761019 0.00190138 -0.0653883 -0.0978477 -0.101574 -0.143221 -0.218033 -0.113413 -0.0115242 -0.427477 -0.138923 -0.303002 -0.249552 -0.061375 -0.0538632 -0.0681422 -0.0504605 0.0336572 0.0686103 0.113085 0.107453 0.243433 0.487195 0.439762 0.29221 -0.0517288 -0.273226 -0.088153 -0.0651453 -0.380128 0.138393 0.0618526 -0.0199152 0.126399 0.294552 0.402038 0.325159 0.193101 0.0882709 0.0665189 0.0654924 -0.0557314 -0.0698695 -0.0717502 -0.0827326 -0.175777 -0.0958071 -0.0704699 -0.0923878 -0.211431 -0.253392 -0.130693 -0.048849 -0.0942271 -0.105673 -0.0201833 0.0345279 0.0320925 0.154522 0.227781 0.410461 0.324288 0.212696 -0.0223608 -0.161056 -0.0559766 0.0448842 -0.380541 0.173924 0.224521 0.0546289 0.0652742 0.128447 0.224259 0.114977 0.0438755 0.0432644 0.0458123 0.0605269 0.00961362 -0.0506206 -0.0462234 -0.0833507 -0.130439 -0.112767 -0.123041 -0.0915796 -0.10812 -0.156969 -0.0145134 0.0170459 -0.0738564 -0.109064 -0.049948 -0.0338808 -0.0637681 -0.026078 0.119938 0.158368 0.182976 0.0941058 0.0389003 0.000184166 0.108778 0.00696453 -0.266861 0.106738 0.179122 0.0828993 0.110769 0.0384154 -0.0176822 -0.101101 -0.138105 -0.0803424 0.0275096 0.0757786 0.0925191 -0.0190242 -0.0247351 -0.0578282 -0.129062 -0.114197 -0.144627 -0.159352 -0.0952682 -0.123988 0.0502635 0.105232 -0.0308314 -0.1136 -0.0674647 -0.0671404 -0.135782 -0.235845 -0.127744 -0.0205892 0.0735144 0.0521831 0.0283412 0.0120333 -0.166074 -0.311511 -0.197455 -0.235039 -0.127196 -0.13948 -0.0843294 0.0212085 0.00757653 -0.0826418 -0.17432 -0.1111 0.00995712 0.166446 0.144419 0.0362309 -0.0205815 -0.04086 -0.0969934 -0.13439 -0.196608 -0.307173 -0.0349412 -0.0390054 0.0949899 0.180582 0.0341116 -0.0763702 -0.0103158 -0.0698275 -0.207767 -0.340443 -0.191968 -0.0809141 0.0295565 -0.00376214 -0.145893 -0.220311 -0.314655 -0.585054 -0.547231 -0.451091 -0.251155 -0.199701 -0.299378 -0.374119 -0.107932 0.0095834 0.000815142 -0.0308762 0.0623372 0.203897 0.177339 0.0298429 -0.043939 -0.0582814 -0.0728402 -0.109557 -0.264819 -0.0838517 0.00915912 0.130454 0.218996 0.0847602 -0.00134005 0.0551891 0.0591578 -0.100281 -0.271786 -0.170135 -0.14511 -0.18948 -0.460811 -0.479773 -0.647904 -0.640693 -0.582825 -0.879117 -0.98972 -0.661657 0.0740377 0.202867 0.0842365 0.200001 0.181099 -0.0288996 -0.0809209 -0.0489607 -0.0530027 -0.0869673 -0.410557 -0.229187 -0.0102453 0.147006 0.281609 0.136781 0.0639054 0.11661 0.149216 0.0403784 -0.0305627 0.0283547 -0.760816 -1.14673 -0.554597 -0.540861 -0.0902951 0.263148 0.264529 0.172 0.189827 0.133965 -0.0713434 -0.0970904 -0.0228955 -0.0179342 -0.0417786 -0.581129 -0.466255 0.0286439 0.142622 0.304099 0.192566 0.0325709 0.0728117 0.204462 0.173013 0.107919 0.0644596 -0.175886 -0.499747 -0.543826 -0.416797 -0.359511 -0.402662 -0.352673 -0.37864 -0.253359 -0.137456 -0.00895678 0.05295 -0.00969408 -0.00611944 0.156579 0.237378 0.270053 0.28132 0.234689 0.0941361 -0.0945024 -0.0796037 -0.0275497 -0.00932472 -0.0800757 -0.0120123 0.19372 0.273178 0.210342 0.00567843 -0.00283292 0.201832 0.253539 0.172137 0.117014 0.149038 0.00901804 -0.122188 -0.0722821 0.0201007 0.0802847 -0.0243579 0.0445901 0.0819032 0.182211 0.229003 0.187653 0.113802 0.16418 0.163456 0.224466 0.197192 0.218439 0.219593 0.0540844 -0.0574774 -0.0238332 0.0254588 0.0232885 -0.159292 -0.136792 0.178828 0.249012 0.232975 0.0394712 0.00509086 0.132469 0.307946 0.117873 0.143296 0.210802 0.100329 -0.0254813 0.00382121 0.0525701 0.102713 0.117823 0.0907234 0.0841288 0.160271 0.210963 0.211773 0.226445 0.172373 0.130619 0.137655 0.105002 0.165565 0.174217 0.0225662 -0.0187576 0.0310166 0.0854026 0.0146607 -0.369738 0.0471242 0.227176 0.277906 0.111811 0.00875457 0.0666216 0.212289 0.0914203 0.113587 0.16511 0.0920289 -0.0168675 0.00848272 0.0522136 0.0355221 0.0247475 -0.0437243 -0.0612469 0.0630056 0.201033 0.216024 0.11202 0.10722 0.0839167 0.0714075 0.0243558 0.0749034 0.0111036 0.0122681 0.0387482 0.0765993 0.0492888 -0.0673475 -0.100036 0.157014 0.271421 0.159213 0.0390859 0.0202626 0.0892168 0.0776694 0.0516584 0.13188 0.0761023 0.0321381 0.0377984 0.0310917 -0.0226604 0.00939599 -0.010491 0.00167948 0.0842227 0.133719 0.143288 0.14654 0.119993 0.0386336 -0.00977325 -0.00507006 -0.0181704 -0.0594402 0.0217064 0.104754 0.11144 -0.0113311 -0.26035 0.0719817 0.25643 0.246072 0.0729775 0.000142584 -0.0742654 0.0204304 0.0390969 0.0574038 0.0733148 0.103874 0.116067 0.116707 0.0478852 -0.0457853 -0.0884643 -0.154953 -0.0831672 0.0284784 0.104334 0.162593 0.112541 -0.0152012 -0.0499033 -0.0197497 -0.0751873 -0.086733 0.0717776 0.124932 0.0870143 -0.1362 0.121139 0.249655 0.110271 -0.0310497 -0.120413 -0.0384219 0.0432405 0.0100535 0.0165787 0.0510185 0.108241 0.122484 0.174961 0.128217 0.117936 0.147005 0.12121 0.135299 0.132812 0.126817 0.0960166 -0.0400675 -0.0920112 -0.0768674 -0.108704 -0.0944974 0.0851858 0.085144 -0.0553785 -0.140276 0.116583 0.15274 0.0405587 -0.109368 -0.116483 -0.0148225 -0.0114241 -0.00423647 0.0288036 0.106686 0.12954 0.180491 0.253741 0.250511 0.212939 0.237834 0.15854 0.12938 0.0383797 0.0181169 -0.107004 -0.10965 -0.115292 -0.131517 -0.00805002 0.0888623 -0.021489 -0.177876 -0.0229225 0.0531726 -0.0421281 -0.141093 -0.0745302 -0.0219588 -0.0217425 0.0378178 0.0864688 0.15972 0.237779 0.241924 0.246606 0.217723 0.244793 0.152 0.0796913 0.00844192 -0.048649 -0.113 -0.133845 -0.165849 -0.121878 0.0085247 0.00700563 -0.230371 -0.0876582 -0.0303734 -0.152799 -0.121337 -0.0448916 0.0178635 0.0367903 0.0756181 0.0905979 0.155266 0.145826 0.118731 0.125491 0.127101 0.0829068 0.0346941 -0.04352 -0.0436702 -0.0650366 -0.146588 -0.185721 -0.100031 -0.101273 -0.19747 -0.140505 -0.214079 -0.116899 0.0151634 0.026216 0.072928 0.0606477 0.0547937 0.0979792 0.080449 0.0857663 0.062053 0.00994852 0.016529 -0.0453253 -0.0490256 -0.066189 -0.171531 -0.148674 -0.111521 -0.264624 -0.269639 -0.242598 -0.109868 -0.00728914 0.030653 0.0524402 0.0807258 0.0602077 0.0588578 0.0492709 0.051759 0.0442122 0.00179862 0.00966734 -0.0300758 -0.0849871 -0.16344 -0.121469 -0.350259 -0.326249 -0.200494 -0.10128 -0.00445752 0.0282298 0.0455222 0.082789 0.0286826 -0.00581873 -0.0202676 -0.00992105 -0.0909018 -0.161074 -0.192008 -0.395061 -0.279311 -0.214642 -0.198601 -0.123433 -0.129753 -0.15099 -0.156039 -0.143937 1 1328 -20.6547 -18.6656 132 1 6 -20.6547 -20.0519 -19.1146 -17.7568 -15.6469 -12.4006 -8.27017 -3.55056 1.65875 6.75338 11.0958 14.7165 17.3322 18.7221 19.3316 19.5157 19.3623 -16.9434 -14.6923 -11.7473 -8.64008 -5.61118 3.24342 6.14406 9.21432 12.2557 14.7675 -0.800008 -0.571382 -0.341526 -0.111056 -3.34691 -1.6415 0.142254 1.89493 3.5165 -12.5316 -10.6698 -8.3451 -6.35058 -8.3556 -10.5048 4.83678 6.66716 8.99246 11.0209 9.08377 6.92444 -6.63855 -4.73902 -2.32888 0.427259 3.15408 5.72158 7.86034 6.14905 3.75933 0.883179 -2.0422 -4.62825 -2.38864 0.55887 3.50364 3.65722 0.689237 -2.33557 -5.64822 -0.423649 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.90089 1.2941 1.35258 1.04463 0.412997 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 91 3 4 20 21 23 21 22 23 0 1 36 15 16 45 0 17 36 16 26 45 17 18 37 25 26 44 17 36 37 26 44 45 18 19 38 24 25 43 18 37 38 25 43 44 19 20 38 23 24 43 20 21 39 22 23 42 20 38 39 23 42 43 21 22 27 21 27 39 22 27 42 27 28 42 27 28 39 28 42 47 28 39 40 1 36 41 15 45 46 1 2 41 14 15 46 28 29 40 28 29 47 2 40 41 14 46 47 2 29 40 14 29 47 2 3 29 13 14 29 29 30 31 29 30 35 3 29 31 13 29 35 30 32 33 30 33 34 30 31 32 30 34 35 3 4 31 12 13 35 4 5 48 11 12 54 5 6 48 10 11 54 6 48 59 10 54 55 6 7 59 9 10 55 7 58 59 9 55 56 8 57 58 8 56 57 7 8 58 8 9 56 4 31 48 12 35 54 31 48 49 35 53 54 31 49 50 35 52 53 31 32 50 34 35 52 32 33 50 33 34 52 33 50 51 33 51 52 48 49 60 49 60 50 50 60 61 50 51 61 51 52 61 61 62 52 52 53 62 53 54 62 54 55 63 55 56 63 56 63 64 56 57 64 64 65 57 57 58 65 58 59 65 48 59 65 42 41 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 17 17 15 15 15 11 11 11 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10 10 14 14 14 16 16 16 20 20 20 20 20 20 20 20 22 17 17 15 15 15 11 11 13 7 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 10 10 10 14 14 14 16 16 21 21 20 20 20 20 20 20 22 22 17 17 19 15 11 11 13 7 7 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 6 6 10 10 10 14 14 16 16 21 21 20 20 20 20 20 20 22 22 17 17 19 15 11 13 7 7 9 9 5 5 -1 -1 -1 -1 -1 -1 -1 -1 4 6 6 6 12 12 10 14 14 18 16 21 21 21 20 20 20 20 22 22 22 17 19 19 11 13 13 7 9 9 5 5 5 -1 -1 -1 -1 -1 -1 -1 -1 4 4 8 6 6 12 12 10 14 18 16 21 21 21 21 20 20 22 22 22 22 22 19 19 13 13 9 9 9 5 5 5 5 5 -1 -1 -1 -1 -1 -1 4 4 4 4 8 8 6 12 12 10 18 16 21 21 21 21 21 22 22 22 22 22 22 19 -1 -1 -1 -1 -1 5 5 5 5 5 5 5 -1 -1 -1 -1 -1 4 4 4 4 4 8 8 -1 -1 -1 -1 18 21 21 24 24 24 23 23 23 23 23 25 25 25 -1 -1 28 28 28 3 5 5 5 5 5 -1 -1 -1 -1 4 4 4 4 4 4 2 -1 -1 -1 -1 26 26 26 26 24 24 24 24 23 23 25 25 32 32 36 36 34 34 30 28 28 3 3 3 5 5 5 -1 -1 -1 4 4 4 4 2 2 27 27 33 33 35 35 35 31 31 31 31 31 24 32 32 32 32 36 36 36 36 36 34 34 30 28 28 3 3 3 3 3 -1 -1 4 4 4 4 2 2 27 27 29 33 35 35 35 35 35 35 31 31 31 31 32 32 32 36 36 36 36 36 36 36 34 34 30 28 28 3 3 3 3 3 -1 4 4 2 2 2 27 27 29 33 33 35 35 35 35 35 35 35 35 31 31 32 36 36 36 36 36 36 36 36 36 36 34 30 30 30 28 3 3 3 3 -1 2 2 2 2 27 27 29 33 33 35 35 35 35 35 35 35 35 35 35 35 36 36 36 36 36 36 36 36 36 36 36 36 34 30 30 30 28 3 3 3 -1 2 2 2 2 27 29 29 33 35 35 35 35 35 35 35 35 35 35 37 39 42 38 36 36 36 36 36 36 36 36 36 36 36 34 30 30 30 30 3 3 -1 2 2 2 27 29 29 33 35 35 35 35 35 35 35 35 35 37 37 41 39 40 42 42 38 38 36 36 36 36 36 36 36 36 36 34 30 30 30 30 3 -1 2 2 27 29 29 29 33 35 35 35 35 35 35 35 37 37 41 41 39 39 40 40 42 42 38 38 38 36 36 36 36 36 36 36 36 34 30 30 30 30 -1 2 29 29 29 29 33 35 35 35 35 35 35 35 37 37 41 41 41 39 45 44 40 42 42 42 42 38 38 38 38 36 36 36 36 36 36 34 30 30 30 -1 29 29 29 29 33 35 35 35 35 35 35 37 37 37 41 41 41 41 45 43 44 46 40 42 42 42 42 38 38 38 38 38 38 36 36 36 36 30 30 30 -1 29 29 29 29 35 35 35 35 35 37 37 37 37 41 41 41 41 45 45 43 44 44 46 46 42 42 42 42 42 38 38 38 38 38 38 36 36 36 30 30 -1 29 29 29 33 35 35 35 37 37 37 37 37 41 41 41 41 63 69 69 71 72 72 70 70 64 48 42 42 42 42 38 38 38 38 38 38 38 38 36 30 -1 -1 29 29 35 35 37 37 37 37 37 37 41 41 41 47 63 67 69 71 71 74 72 70 70 66 64 48 48 42 42 42 42 38 38 38 38 38 38 38 -1 -1 -1 29 35 35 37 37 37 37 37 37 41 41 41 47 47 63 67 69 71 73 74 74 72 68 68 64 64 48 48 48 42 42 42 38 38 38 38 38 38 -1 -1 -1 35 37 37 37 37 37 37 37 41 41 47 47 47 63 65 67 67 73 73 73 74 74 68 68 66 64 64 48 48 48 48 48 42 42 38 38 38 38 -1 -1 -1 37 37 37 37 37 37 41 41 41 47 47 47 63 63 65 67 67 73 73 73 79 79 81 68 68 66 64 64 64 48 48 48 48 48 42 38 38 38 -1 -1 -1 37 37 37 37 37 41 41 47 47 47 47 63 63 63 65 76 76 77 78 78 79 80 80 81 82 66 64 64 64 64 48 48 48 48 48 48 42 38 -1 -1 -1 -1 37 37 37 41 47 47 47 47 47 63 63 63 65 75 75 76 77 77 -1 -1 -1 -1 -1 82 82 66 64 64 64 64 48 48 48 48 48 48 48 -1 -1 -1 -1 37 37 41 47 47 47 47 47 63 63 63 63 75 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 83 83 83 50 64 64 64 64 48 48 48 48 48 48 -1 -1 -1 -1 37 47 47 47 47 47 47 63 63 63 63 53 90 90 90 89 87 87 87 85 85 85 84 83 83 54 52 50 50 50 64 64 48 48 48 48 -1 -1 -1 -1 -1 -1 47 47 47 47 47 63 63 63 49 49 53 53 90 89 89 88 87 87 86 86 85 84 84 56 54 54 52 50 50 50 50 64 64 48 48 -1 -1 -1 -1 -1 -1 47 47 47 47 63 63 49 49 49 51 53 53 55 57 89 88 88 87 86 86 86 58 58 56 54 54 52 52 50 50 50 50 50 64 48 -1 -1 -1 -1 -1 -1 -1 47 47 63 63 49 49 49 51 51 53 53 55 57 57 59 59 59 60 60 60 58 58 56 56 54 52 52 52 50 50 50 50 50 -1 -1 -1 -1 -1 -1 -1 -1 47 63 49 49 49 49 49 51 51 53 53 55 57 57 61 59 59 60 60 60 58 58 56 56 54 54 52 52 52 50 50 50 50 -1 -1 -1 -1 -1 -1 -1 -1 -1 49 49 49 49 49 51 51 51 53 55 55 57 57 61 59 59 60 60 62 62 58 58 56 56 54 52 52 52 52 50 50 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 49 49 49 51 51 51 51 53 55 55 57 57 61 59 59 60 60 62 62 58 58 56 56 54 52 52 52 52 50 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 49 49 49 51 51 51 53 55 55 55 57 61 61 61 59 60 60 62 62 58 58 56 56 56 52 52 52 52 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 49 51 51 51 51 53 55 55 55 57 61 61 61 59 60 60 62 62 62 58 56 56 56 54 52 52 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 51 51 51 51 53 55 55 55 57 61 61 61 59 60 60 62 62 62 58 56 56 56 56 52 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 51 51 55 55 55 55 57 61 61 61 61 59 62 62 62 62 58 56 56 56 56 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 51 55 55 55 55 57 61 61 61 61 59 62 62 62 62 58 56 56 56 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 55 55 55 57 61 61 61 61 59 62 62 62 62 62 56 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 55 61 61 61 61 61 62 62 62 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 42 41 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 91 3 6 22.7259 0.0907014 1.27152 29.386 0.232632 1.68286 2.90581 0.0912225 0.180878 -4.31161 0.18827 -0.195723 -2.47823 -0.0777993 -0.154262 -2.4839 0.0568033 -0.162574 -1.89812 0.145961 -0.312175 -0.48549 0.280494 0.163289 2.7705 -0.213046 0.455652 0.767628 -0.352395 -0.272673 -1.46301 0.234737 -0.304078 -0.523497 0.305164 0.122599 2.43132 -0.390101 0.505336 0.773074 -0.446646 -0.260015 0.59289 0.316655 -0.182134 -2.49716 0.322454 -0.0281788 1.06275 0.351718 -0.114513 -2.41943 0.317198 -0.0803081 -1.82068 -0.602557 0.196182 3.98322 -0.514345 0.0449479 -1.07853 0.105808 -0.100216 1.39466 0.185445 0.0212205 1.38962 -0.182185 0.0461255 3.85597 -0.0346672 0.334609 3.8466 0.0811239 0.325821 -8.8991 -0.271891 -1.01737 -8.9492 0.123005 -1.04945 -8.09861 -0.394885 -0.425869 -8.04398 0.333844 -0.46944 3.13835 0.153024 0.165031 -3.98752 0.225212 -0.181891 2.87904 -0.039572 0.337619 2.86765 0.0876143 0.327838 8.06473 0.498066 0.305369 -7.76091 0.447292 -0.440064 1.41689 0.0912848 0.068808 1.42484 -0.0821193 0.0807923 1.01351 0.0966422 0.174915 -0.975205 0.121061 -0.181346 1.82125 0.621421 0.287038 1.93223 -0.59421 0.3809 -0.246688 -0.131415 -0.214394 -0.263686 0.102193 -0.231659 0.0314727 -0.56179 0.0358161 0.68874 -0.520504 0.284866 -0.610815 -0.537886 -0.21028 1.27171 -0.420725 0.503085 0.199862 0.10647 0.173698 -0.425377 0.140995 -0.170537 -0.86832 0.105554 0.177491 -0.213512 0.164396 -0.138216 0.171067 0.168239 0.106989 -1.24097 0.21862 -0.0611774 -0.288381 -0.374091 -0.135184 -0.345274 0.35591 -0.186086 0.142352 0.18466 0.06673 -1.26388 0.223629 -0.0112285 2.24312 0.401516 -0.0360487 -0.202544 0.358392 -0.10108 2.04844 0.345212 -0.114453 -0.0189783 0.343515 -0.0240527 0.0808773 0.190838 0.0263122 -1.1817 0.203232 0.0368803 0.817858 -0.09942 -0.167177 0.804519 0.0767781 -0.180412 -2.18916 -0.698085 -0.163472 2.87993 -0.879693 0.516981 -1.29993 -0.3662 0.08246 1.55837 -0.464307 0.180047 2.19546 0.61848 -0.139268 -0.859465 0.549147 -0.173391 0.795097 0.557571 0.0928493 0.481249 0.498823 -0.408263 0.0166435 -0.362205 0.0257889 -0.322539 -0.334317 0.273623 4.80307 -0.208128 -0.699621 -1.90977 0.278837 0.472002 -3.13447 -0.283352 0.456404 3.86363 0.349267 -0.562575 -0.0175149 0.363678 -0.0257437 -3.17789 0.347731 0.413537 -0.972417 0.418074 -0.0687976 -3.23979 0.174961 0.367039 -5.2933 0.111014 0.566432 -2.5536 -0.193774 0.378093 3.28188 0.275357 -0.381182 -3.34157 -0.280364 0.388114 0.0129238 -0.33101 0.0236308 -4.55225 -0.353973 0.41143 -1.34658 -0.404899 0.0442741 -5.28975 -0.0288067 0.576747 91 3 6 -4.07155 0.0490576 -0.260502 -21.6576 -0.0901608 -1.26761 2.32708 0.116336 -0.0134226 2.37523 -0.121119 0.00353436 3.67497 0.158651 0.0704798 3.68947 -0.151174 0.0895525 3.38183 0.107024 0.112015 3.38199 -0.0905406 0.125688 0.75244 0.309219 -0.320429 2.75835 0.276275 0.4203 2.99358 0.0486356 0.141087 2.99242 -0.0282196 0.146387 0.773933 0.404774 -0.320254 2.43174 0.45847 0.445295 2.91137 0.00472711 0.166343 2.91127 0.0190857 0.165391 2.36782 -0.0285296 0.151496 2.36888 0.0501598 0.146197 4.00836 0.51441 -0.0252762 -1.79101 0.626281 0.112329 3.15124 0.0131187 0.18444 1.48601 -0.145782 0.138079 1.49081 0.165279 0.117051 -0.0144706 0.178812 -0.0135716 0.0143094 -0.17682 0.0134204 6.49684 0.329575 0.734024 6.57071 -0.219787 0.779141 8.47963 0.415797 0.335459 8.42104 -0.367711 0.382269 1.7922 0.0897204 -0.0162022 1.81477 -0.0935358 -0.00326762 0.011611 -0.129634 0.00996937 -0.0117084 0.130721 -0.010053 -7.85776 -0.506247 -0.381596 7.96831 -0.450044 0.363476 -0.695669 -0.0663349 -0.120061 -0.701168 0.0496119 -0.128106 0.944888 0.0462779 -0.0126511 0.950906 -0.0485854 -0.00579798 0.0260259 -0.285082 0.0220117 -0.0269036 0.294697 -0.0227541 1.5304 0.22822 0.259109 1.56185 -0.193887 0.290437 0.628571 0.553521 0.216393 -0.0316098 0.564236 -0.035972 1.2189 0.483859 0.444601 -0.672621 0.508322 -0.278199 1.203 0.0538075 -0.0254329 1.21174 -0.0581969 -0.0171565 2.04985 0.07297 -0.0639618 2.06501 -0.0831352 -0.0527308 2.02949 0.0529499 -0.0766932 2.04071 -0.0644247 -0.0684616 2.40002 0.442178 0.0605639 2.46888 -0.434939 0.121711 2.08635 0.0352768 -0.0864762 2.09335 -0.0478382 -0.0806827 -0.155085 -0.365939 -0.0504545 2.29648 -0.406335 0.0204023 0.0189247 -0.342544 0.0239847 2.08735 -0.358987 -0.0651451 2.0746 0.00388833 -0.0908724 2.07637 -0.0168479 -0.0894475 0.620231 0.246756 0.228263 0.656386 -0.217565 0.26315 2.77206 0.932287 0.38653 -2.27149 0.676773 -0.262437 1.51004 0.481527 0.11276 -1.3386 0.377186 0.029592 -0.390215 -0.0537916 0.233302 -0.398083 0.0869791 0.223298 -0.324773 -0.0078993 0.240944 -0.327286 0.0417437 0.237581 -0.354821 0.368216 0.223603 -0.0167104 0.36366 -0.0258926 -0.584725 0.328323 0.312701 3.8287 0.142991 -0.460298 0.741603 0.340427 0.00944494 -2.88107 0.0129414 0.536935 -2.88349 0.0631785 0.533379 3.39058 -0.00924361 -0.469238 -1.88065 -0.209995 0.505315 -0.544448 -0.282154 0.353936 4.02527 -0.283117 -0.230621 4.91664 -0.215478 -0.3626 1.11535 -0.334881 0.012678 4.35498 -0.0630698 -0.363597 -3.35226 -0.00640786 0.368557 4.41172 0.0110311 -0.37393 4.90886 0.160514 -0.390276 4.01409 0.245855 -0.269449 6 -1.41084 642 1 6 -0.229138 -0.342096 -0.435054 -0.497543 -0.473292 -0.410801 -0.259749 -0.188997 -0.0891568 -0.313809 -0.578583 -0.631612 -0.608174 -0.52452 -0.354501 -0.287024 -0.27085 -0.255214 -0.246498 -0.158981 -0.157238 -0.246565 -0.332129 -0.327564 -0.288244 -0.143322 -0.104807 0.00969226 0.00823118 -0.00921247 -0.110622 -0.182004 -0.177111 -0.0710213 -0.118147 -0.202979 -0.231444 -0.14728 0.00933428 0.0968805 0.164604 0.182241 0.137217 0.0709353 -0.00203208 -0.0845348 -0.01734 0.131079 -0.0411704 -0.0992257 -0.178669 -0.288786 -0.328105 -0.213287 -0.0412528 0.00877609 0.11068 0.161382 0.163185 0.119232 -0.00420354 -0.000347168 0.360222 0.132415 -0.0347328 -0.0756998 -0.206521 -0.429496 -0.426498 -0.381032 -0.195975 -0.127047 -0.0611995 -0.0892674 -0.0129688 0.0759774 0.081313 0.0821374 0.137196 0.449483 0.361856 0.0503861 -0.0243986 -0.0710027 -0.265362 -0.498382 -0.510169 -0.0583733 0.0972897 0.156185 0.0944394 0.159709 0.218012 0.34422 0.339807 0.0437636 -0.064934 -0.0484084 -0.202793 -0.366114 -0.457795 0.0266252 -0.140781 -0.194509 -0.0517417 0.156725 0.146521 0.128616 0.128561 0.133954 0.303174 0.0981582 -0.0468601 -0.0628898 -0.141841 -0.258679 -0.219613 -0.0558679 0.0461725 0.042142 0.0081171 0.0610856 0.0733726 0.177568 0.131711 0.107395 0.140225 0.0346425 -0.153247 0.261082 0.187549 0.0854307 0.00307952 -0.0264841 -0.158934 -0.157064 0.00310336 0.00424241 0.0428952 0.0663485 0.133913 0.156927 0.1668 0.119175 0.0691781 0.115149 -0.0210788 -0.168654 0.226825 0.17563 0.153301 0.105573 0.106449 0.0547876 -0.0233314 0.0658891 0.0976637 0.153281 0.159065 0.178442 0.192328 0.11882 0.0810918 0.0203633 0.0646629 -0.00545284 -0.159905 -0.210331 0.201427 0.143093 0.127276 0.180399 0.193085 0.178461 0.0938818 0.170798 0.221838 0.265582 0.218584 0.211523 0.200701 0.117625 0.0278791 -0.012134 0.0305471 -0.0156446 -0.183543 -0.168981 0.175422 0.0882466 0.101788 0.154166 0.191616 0.187154 0.146299 0.184549 0.259641 0.259257 0.248737 0.210442 0.137973 0.0825725 0.00482543 -0.0247265 0.0128163 -0.0121374 -0.13813 -0.10499 0.145193 0.0533783 0.011672 0.0832952 0.219978 0.222641 0.215035 0.173664 0.205639 0.249126 0.206432 0.148102 0.0949642 0.0262702 -0.0185792 -0.0266492 0.0187361 -0.0322968 -0.114993 -0.0414796 0.245142 0.111649 -0.0401896 -0.117109 0.159479 0.157637 0.177991 0.181959 0.208288 0.21212 0.148182 0.124594 0.0616133 -0.0209508 -0.0216908 -0.0262879 0.0110096 -0.0410204 -0.116593 -0.0270853 0.315634 0.201775 0.177457 -0.0427288 -0.0756415 0.0703775 0.0816063 0.190621 0.230739 0.204243 0.12655 0.07134 0.0381182 -0.00404485 -0.0215907 -0.00865347 0.0017018 -0.0476841 -0.125073 -0.039106 0.144883 -0.170021 -0.00751101 0.0712355 -0.231243 0.0240905 0.0563357 0.139673 0.21313 0.184238 0.0932578 0.0570697 0.015701 -0.0089469 -0.044044 -0.0233585 -0.0247527 -0.0582376 -0.0974607 -0.0297168 -0.1562 -0.289255 -0.33037 -0.0464933 -0.23575 -0.0158885 0.0139892 0.083424 0.142293 0.121535 0.0605468 0.0290612 -0.00326567 -0.0185593 -0.0342025 -0.02121 -0.0574236 -0.0752143 -0.108567 -0.0743619 -0.183352 0.0226307 -0.0205212 -0.185863 -0.0442135 0.0946416 -0.0789009 0.0351899 0.052456 0.0511055 0.0258277 0.020872 0.00141575 -0.0124566 -0.0331589 -0.0293904 -0.0596236 -0.0753986 -0.0974114 -0.0956824 -0.176061 -0.026241 0.0165459 0.000799791 0.0565201 0.107067 -0.0758108 -0.0489389 0.00388595 0.0124476 0.00240463 0.00626842 0.00110845 -0.020014 -0.0288288 -0.0469481 -0.0691599 -0.0891266 -0.146963 -0.11131 -0.247355 -0.0923444 0.0160489 0.0386353 0.0377207 0.0487897 -0.0683742 -0.0948205 -0.0283998 -0.0283121 -0.00792872 -0.00231621 -0.00767136 -0.0271916 -0.0342774 -0.0237391 -0.0559661 -0.0904784 -0.142792 -0.202677 -0.0948073 0.0461865 0.038093 0.0440789 0.00830153 -0.0133566 -0.0689964 -0.0324316 -0.00395833 -0.00355956 0.0114843 0.0131352 -0.0318672 -0.0221516 -0.025695 -0.0379526 -0.0789668 -0.164661 -0.000738646 0.132441 0.171507 0.14303 0.114406 0.0415121 -0.0576986 -0.0569161 0.00775604 0.0389119 0.0373291 0.0187183 -0.00809879 -0.0183155 -0.00730157 -0.0343966 -0.0635447 -0.15888 -0.147617 -0.0474673 0.0716807 0.133625 0.235253 0.0666988 -0.0467351 -0.027641 0.0276273 0.0520571 0.0814359 0.0417175 0.00221689 -0.00421763 0.00221261 -0.0138004 -0.0594484 -0.174633 -0.303034 -0.281213 -0.330283 -0.408104 -0.168204 -0.0604001 -0.0305703 -0.0153369 0.094119 0.0931352 0.10239 0.0473788 0.0199307 -0.00287946 0.00537511 -0.00315129 -0.0491345 -0.187168 -0.470086 -0.417353 -0.279156 0.0352802 0.0937176 0.144504 0.0791088 0.0413956 0.0331328 0.0140807 -0.00432201 -0.0141012 -0.0463092 -0.188401 -0.462145 -0.486097 -0.204723 0.0365832 0.0867299 0.136793 0.076672 0.0583754 0.0572949 0.0274796 -0.00257327 -0.00633421 -0.0565259 -0.192409 -0.241994 -0.163531 -0.00329836 -0.0103637 -0.0387723 -0.0567753 0.146717 -0.00950213 0.0156434 0.0900663 0.0739471 0.067142 0.0521588 0.013624 0.0159171 -0.0109652 -0.0735784 -0.0960133 0.0435681 0.117909 0.135601 0.0759608 0.149461 0.184945 0.0591852 -0.00505096 0.0382164 0.0506666 0.0475438 0.0327374 -0.0139075 -0.0130354 -0.00236552 -0.0464339 -0.0988322 -0.0288621 -0.00213429 0.0396101 0.116323 0.177676 0.162036 0.0579 -0.0153517 0.0200273 0.0233199 0.0423598 0.0320809 -0.00038944 -0.0319774 -0.0259382 -0.0498243 -0.143768 -0.182309 -0.126565 0.0401184 0.116245 0.152559 0.139714 0.0491775 -0.0239676 -0.0292883 -0.00491885 0.0214951 0.0274669 -0.0182689 -0.0273807 -0.0291538 -0.0999042 -0.0904442 -0.0306169 0.0506478 0.12121 0.138187 0.0864958 0.0151197 0.00975271 -0.0167952 -0.0388751 0.00923133 0.0146675 -0.00648375 -0.0210482 -0.0659143 -0.00323474 0.011808 0.0429001 0.0878522 0.131457 0.12006 0.0712131 0.0232431 -0.00619243 -0.058229 -0.0425944 0.01377 0.00921718 -0.0037824 -0.0553703 0.106752 0.12724 0.116897 0.13672 0.154118 0.136275 0.0907085 0.0377523 -0.00588459 -0.0583466 -0.039738 -0.0249391 0.00175965 -0.0321719 0.137511 0.186052 0.190132 0.173419 0.179223 0.15314 0.10992 0.0380026 -0.0276196 -0.0590655 -0.0271101 0.00691691 -0.0216868 0.139236 0.189689 0.214823 0.210466 0.194385 0.150269 0.115546 0.0279836 -0.0537297 -0.0496783 -0.0205187 -0.0319495 0.140441 0.182164 0.250387 0.230456 0.185829 0.142997 0.0899882 -0.00628175 -0.0743692 -0.0528165 -0.0466005 0.133484 0.187869 0.203883 0.186129 0.145956 0.0416264 -0.0457256 -0.0935063 -0.0628973 0.0805673 0.130514 0.15426 0.134912 0.0778683 -0.0103545 -0.101087 -0.0768935 -0.0344459 -0.0138445 -0.0229982 0.0134838 -0.0512096 -0.074295 -0.198002 -0.209223 -0.196956 1 642 -20.6547 -18.6656 132 1 6 -20.6547 -20.0519 -19.1146 -17.7568 -15.6469 -12.4006 -8.27017 -3.55056 1.65875 6.75338 11.0958 14.7165 17.3322 18.7221 19.3316 19.5157 19.3623 -16.9434 -14.6923 -11.7473 -8.64008 -5.61118 3.24342 6.14406 9.21432 12.2557 14.7675 -0.800008 -0.571382 -0.341526 -0.111056 -3.34691 -1.6415 0.142254 1.89493 3.5165 -12.5316 -10.6698 -8.3451 -6.35058 -8.3556 -10.5048 4.83678 6.66716 8.99246 11.0209 9.08377 6.92444 -6.63855 -4.73902 -2.32888 0.427259 3.15408 5.72158 7.86034 6.14905 3.75933 0.883179 -2.0422 -4.62825 -2.38864 0.55887 3.50364 3.65722 0.689237 -2.33557 -5.64822 -0.423649 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.90089 1.2941 1.35258 1.04463 0.412997 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 44 3 4 15 16 45 16 26 45 25 26 44 26 44 45 24 25 43 25 43 44 23 24 43 22 23 42 23 42 43 22 27 42 27 28 42 28 42 47 15 45 46 14 15 46 28 29 47 14 46 47 14 29 47 13 14 29 29 30 35 13 29 35 30 33 34 30 34 35 12 13 35 11 12 54 10 11 54 10 54 55 9 10 55 9 55 56 8 56 57 8 9 56 12 35 54 35 53 54 35 52 53 34 35 52 33 34 52 33 51 52 51 52 61 61 62 52 52 53 62 53 54 62 54 55 63 55 56 63 56 63 64 56 57 64 42 41 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 7 7 6 6 6 4 4 4 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 7 7 6 6 6 4 4 5 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 7 7 8 6 4 4 5 2 2 2 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 7 7 8 6 4 5 2 2 3 3 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 9 7 8 8 4 5 5 2 3 3 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 9 9 9 8 8 5 5 3 3 3 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 9 9 9 9 8 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10 10 10 10 10 11 11 11 -1 -1 12 12 12 0 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10 10 11 11 14 14 16 16 15 15 13 12 12 0 0 0 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 14 14 14 14 16 16 16 16 16 15 15 13 12 12 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 14 14 14 16 16 16 16 16 16 16 15 15 13 12 12 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 14 16 16 16 16 16 16 16 16 16 16 15 13 13 13 12 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 16 16 16 16 16 16 16 16 16 16 16 15 13 13 13 12 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 19 17 16 16 16 16 16 16 16 16 16 16 16 15 13 13 13 13 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 18 19 19 17 17 16 16 16 16 16 16 16 16 16 15 13 13 13 13 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 18 18 19 19 17 17 17 16 16 16 16 16 16 16 16 15 13 13 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 20 18 19 19 19 19 17 17 17 17 16 16 16 16 16 16 15 13 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 20 21 18 19 19 19 19 17 17 17 17 17 17 16 16 16 16 13 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 20 20 21 21 19 19 19 19 19 17 17 17 17 17 17 16 16 16 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 34 34 33 33 30 22 19 19 19 19 17 17 17 17 17 17 17 17 16 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 35 34 33 33 31 30 22 22 19 19 19 19 17 17 17 17 17 17 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 35 35 34 32 32 30 30 22 22 22 19 19 19 17 17 17 17 17 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 35 35 32 32 31 30 30 22 22 22 22 22 19 19 17 17 17 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 36 36 38 32 32 31 30 30 30 22 22 22 22 22 19 17 17 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 36 37 37 38 39 31 30 30 30 30 22 22 22 22 22 22 19 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 39 39 31 30 30 30 30 22 22 22 22 22 22 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 40 40 40 23 30 30 30 30 22 22 22 22 22 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 42 42 42 41 40 40 25 24 23 23 23 30 30 22 22 22 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 43 43 42 41 41 26 25 25 24 23 23 23 23 30 30 22 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 43 43 43 27 27 26 25 25 24 24 23 23 23 23 23 30 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 28 27 27 26 26 25 24 24 24 23 23 23 23 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 28 27 27 26 26 25 25 24 24 24 23 23 23 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 27 27 26 26 25 24 24 24 24 23 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 27 27 26 26 25 24 24 24 24 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 27 27 26 26 26 24 24 24 24 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 29 27 26 26 26 25 24 24 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 29 27 26 26 26 26 24 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 29 29 29 29 27 26 26 26 26 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 29 29 29 29 27 26 26 26 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 29 29 29 29 29 26 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 29 29 29 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 42 41 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   44 3 6 -4.31161 0.18827 -0.195723 -2.4839 0.0568033 -0.162574 -0.48549 0.280494 0.163289 0.767628 -0.352395 -0.272673 -0.523497 0.305164 0.122599 0.773074 -0.446646 -0.260015 -2.49716 0.322454 -0.0281788 -2.41943 0.317198 -0.0803081 3.98322 -0.514345 0.0449479 1.38962 -0.182185 0.0461255 3.85597 -0.0346672 0.334609 -8.8991 -0.271891 -1.01737 -8.04398 0.333844 -0.46944 -3.98752 0.225212 -0.181891 2.86765 0.0876143 0.327838 -7.76091 0.447292 -0.440064 1.42484 -0.0821193 0.0807923 -0.975205 0.121061 -0.181346 1.93223 -0.59421 0.3809 -0.263686 0.102193 -0.231659 0.68874 -0.520504 0.284866 1.27171 -0.420725 0.503085 -0.425377 0.140995 -0.170537 -0.213512 0.164396 -0.138216 -1.24097 0.21862 -0.0611774 -0.345274 0.35591 -0.186086 -1.26388 0.223629 -0.0112285 -0.202544 0.358392 -0.10108 -0.0189783 0.343515 -0.0240527 -1.1817 0.203232 0.0368803 0.804519 0.0767781 -0.180412 2.87993 -0.879693 0.516981 1.55837 -0.464307 0.180047 -0.859465 0.549147 -0.173391 0.481249 0.498823 -0.408263 -0.322539 -0.334317 0.273623 -0.0175149 0.363678 -0.0257437 -3.17789 0.347731 0.413537 -0.972417 0.418074 -0.0687976 -3.23979 0.174961 0.367039 -5.2933 0.111014 0.566432 -2.5536 -0.193774 0.378093 3.28188 0.275357 -0.381182 -3.34157 -0.280364 0.388114 44 3 6 2.37523 -0.121119 0.00353436 3.68947 -0.151174 0.0895525 3.38199 -0.0905406 0.125688 2.75835 0.276275 0.4203 2.99242 -0.0282196 0.146387 2.43174 0.45847 0.445295 2.91127 0.0190857 0.165391 2.36888 0.0501598 0.146197 -1.79101 0.626281 0.112329 1.49081 0.165279 0.117051 -0.0144706 0.178812 -0.0135716 6.49684 0.329575 0.734024 8.42104 -0.367711 0.382269 1.81477 -0.0935358 -0.00326762 -0.0117084 0.130721 -0.010053 7.96831 -0.450044 0.363476 -0.701168 0.0496119 -0.128106 0.950906 -0.0485854 -0.00579798 -0.0269036 0.294697 -0.0227541 1.56185 -0.193887 0.290437 -0.0316098 0.564236 -0.035972 -0.672621 0.508322 -0.278199 1.21174 -0.0581969 -0.0171565 2.06501 -0.0831352 -0.0527308 2.04071 -0.0644247 -0.0684616 2.46888 -0.434939 0.121711 2.09335 -0.0478382 -0.0806827 2.29648 -0.406335 0.0204023 2.08735 -0.358987 -0.0651451 2.07637 -0.0168479 -0.0894475 0.656386 -0.217565 0.26315 -2.27149 0.676773 -0.262437 -1.3386 0.377186 0.029592 -0.398083 0.0869791 0.223298 -0.327286 0.0417437 0.237581 -0.0167104 0.36366 -0.0258926 -2.88349 0.0631785 0.533379 3.39058 -0.00924361 -0.469238 -1.88065 -0.209995 0.505315 -0.544448 -0.282154 0.353936 4.02527 -0.283117 -0.230621 4.91664 -0.215478 -0.3626 1.11535 -0.334881 0.012678 4.35498 -0.0630698 -0.363597 6 -1.35685 653 1 6 -0.1098 -0.211349 -0.312218 -0.329083 -0.322195 -0.276521 -0.204835 -0.0361057 -0.140523 -0.305985 -0.391965 -0.390452 -0.455127 -0.512671 -0.559451 -0.513571 -0.490571 -0.277802 -0.0333117 -0.206069 -0.276326 -0.233597 -0.152524 -0.137754 -0.146755 -0.191939 -0.281475 -0.364643 -0.31651 -0.251553 -0.128505 -0.144964 -0.170683 -0.095257 0.0123117 0.0838017 0.125275 0.0812552 -0.0388612 -0.120785 -0.242729 -0.205848 -0.126245 -0.0216738 0.0822074 -0.10687 -0.0184377 0.0682778 0.122225 0.130139 0.103574 0.0963061 -0.0697316 -0.244103 -0.34209 -0.197172 -0.0563225 0.0175577 0.0827474 0.312059 0.00566386 -0.0415579 0.0716005 0.103446 0.0450845 -0.0146125 -0.0925795 -0.0990304 -0.244961 -0.442316 -0.461251 -0.335267 -0.112719 -0.0180612 0.0327305 0.198577 0.427527 0.0677001 -0.00160185 0.0796855 0.0431031 -0.138431 -0.253547 -0.327676 -0.447526 -0.122557 0.0359831 -0.0410852 0.100638 0.376312 0.231054 0.107182 0.0707745 0.0977549 0.0410471 -0.168042 -0.592087 -0.443013 -0.324582 -0.0496244 0.00532065 -0.0317698 0.112496 0.2782 0.33706 0.173718 0.151612 0.140253 0.166212 0.117761 -0.0526467 -0.108083 -0.0592217 -0.0244675 -0.0507921 -0.166631 -0.219314 -0.202927 -0.0574452 0.0129191 0.0208015 0.16938 0.256726 0.363296 -0.161302 0.0570747 0.1619 0.143915 0.150639 0.152873 0.126492 0.108373 0.0445161 0.0130894 0.0174787 -0.0553333 -0.11529 -0.130493 0.0331928 0.0721688 0.153201 0.176987 0.207237 0.334254 -0.210865 -0.00819124 0.13789 0.115843 0.153191 0.184456 0.145956 0.156605 0.113403 0.118173 0.0738238 0.0346273 0.0452499 0.0974988 0.174328 0.189664 0.212382 0.104264 0.146593 0.269318 -0.185857 -0.0497556 0.105906 0.0970851 0.123261 0.145807 0.164657 0.19103 0.18931 0.183885 0.151852 0.13684 0.122255 0.188143 0.248004 0.224631 0.170985 0.0524169 0.0970537 0.255172 -0.208495 -0.0893337 0.0761735 0.059234 0.0642052 0.0874943 0.14861 0.200985 0.226071 0.248516 0.195226 0.142646 0.132068 0.199223 0.237888 0.192365 0.0775725 -0.0143053 0.028969 0.228331 -0.202502 -0.0953761 0.045672 0.0502379 0.0183664 0.0666487 0.134391 0.161803 0.202372 0.237145 0.207897 0.148158 0.137296 0.16872 0.175707 0.139839 -0.0694222 -0.0692079 0.0230107 0.263003 -0.176166 -0.0659921 0.0116594 0.0347963 0.00305719 0.0263498 0.0637447 0.124708 0.182316 0.218197 0.235301 0.189637 0.173696 0.144519 0.106203 0.0231482 -0.1078 0.0680429 0.122139 0.329013 -0.0976383 -0.0758124 0.0217611 0.0345143 -0.004716 -0.00689305 0.0249401 0.0740927 0.131801 0.172749 0.216012 0.240643 0.204053 0.110484 0.0468854 -0.0837928 -0.0482264 0.149829 -0.119901 0.102163 0.0133592 -0.0538652 -0.00462294 0.00977685 -0.0218277 -0.0356321 -0.0121193 0.0149026 0.0884582 0.142171 0.203942 0.20704 0.171499 0.0682697 0.0199595 -0.113025 -0.100976 -0.347098 -0.421744 -0.266188 0.055822 -0.0630405 -0.0341456 -0.00172322 -0.0180043 -0.0467841 -0.0288743 -0.00781338 0.0469965 0.0683338 0.119253 0.143582 0.102324 0.0159166 -0.00672509 -0.0272345 -0.203273 -0.0938749 0.0121025 -0.0532965 0.0667043 -0.0482105 -0.0442173 -0.0509093 -0.0145393 -0.0548868 -0.0445648 -0.0243641 0.00138075 0.0151432 0.0338352 0.0576139 0.0385988 -0.0285342 0.00960517 0.119383 -0.0416415 -0.0829324 0.00132579 -0.050498 -0.0626203 -0.0697639 -0.0420595 -0.0346471 -0.0370465 -0.0452066 -0.0374199 -0.0202013 -0.0141998 -0.0133042 0.000416262 -0.00514089 -0.0655234 0.0250193 0.140183 0.0580999 -0.00746433 -0.0154728 -0.12677 -0.0764455 -0.0474155 -0.0577616 -0.0371724 -0.0396205 -0.0569209 -0.054872 -0.0206026 -0.0356152 -0.0252482 -0.0184496 -0.034308 -0.0647248 -0.0305155 0.0749458 0.0398899 0.0101691 0.00397646 -0.0827515 -0.0857373 -0.063861 -0.0407783 -0.0324608 -0.0306425 -0.0402907 -0.0596773 -0.0267509 0.0106291 0.00408676 -0.0244404 -0.0430118 -0.0650145 -0.0304257 0.0439901 0.0758004 0.07707 0.0877745 -0.017723 -0.110189 -0.102596 -0.100083 -0.0533799 -0.0328175 -0.0201284 -0.0195591 -0.0483811 -0.00349751 0.012961 -0.0110591 -0.032614 -0.0626239 -0.0700576 -0.00842555 0.095857 0.126673 0.119792 0.0353096 -0.131831 -0.211061 -0.165584 -0.0810638 -0.0627594 -0.0290699 -0.0100143 -0.0134837 -0.0210609 0.0144445 0.0308056 -0.0118519 -0.0247454 -0.063684 -0.0734964 -0.0167584 0.0662864 -0.0339124 -0.17237 -0.322669 -0.27379 -0.295613 -0.130846 -0.0852942 -0.0284661 -0.0114784 -0.0128179 -0.00802686 0.0341804 0.0573941 0.0355876 0.0214973 -0.0356826 -0.0857869 -0.12105 -0.241469 -0.428758 -0.49764 -0.435445 -0.317376 -0.158998 -0.0835252 -0.0179585 0.0166161 -0.00159016 0.00803864 0.0561073 0.0712137 0.0466256 0.0520652 -0.0409669 -0.183255 -0.435711 -0.162719 -0.0908093 -0.0298288 0.0164219 0.0412218 0.0319229 0.0612769 0.0649102 0.080704 0.0677866 0.00335052 -0.0864381 -0.275475 -0.307744 -0.260612 -0.210563 -0.217846 -0.225578 -0.187828 -0.0830118 -0.0201334 0.0118158 0.0413162 0.0372302 0.0489428 0.0432502 0.0695059 0.0738667 -0.00101631 -0.00730479 0.0929783 0.0374697 -0.0192633 -0.00408658 0.0637097 0.0436661 -0.0389302 -0.105206 -0.00875169 0.0104858 0.0209764 0.0384004 0.0630279 0.0494571 0.0453783 0.0556259 -0.0199507 0.0242607 0.129767 0.153967 0.0752776 0.0430211 0.0487952 0.0504643 -0.0519514 -0.0260151 0.0127588 0.0169443 0.0178278 0.0520955 0.061707 0.0489218 0.0381496 -0.00498182 0.0360127 0.0926927 0.115552 0.113574 0.0351675 -0.0153387 -0.0718983 -0.149644 -0.0298004 0.012503 0.0113469 0.00635995 0.0331221 0.0609931 0.0477704 0.0282339 -0.00941507 0.02073 0.0674168 0.0811155 0.0767169 0.0631551 0.0135107 -0.0642434 -0.118162 0.0146882 0.0116869 0.00411791 0.0337086 0.0610205 0.0360355 -0.000783214 0.0226398 0.0418133 0.0478023 0.0764996 0.0861692 0.0945795 0.0832353 0.0106318 -0.00938577 -0.00662454 0.00618966 0.0305577 0.0434248 0.0375327 0.00281279 0.0107827 0.0343775 0.0719598 0.0911631 0.113717 0.119473 0.115514 0.13562 0.123796 -0.0133937 -0.00516196 0.036545 0.0679044 0.0519343 0.00870685 -0.00580157 0.0383404 0.0819867 0.0992864 0.107126 0.15136 0.177436 0.175792 0.184582 -0.0188941 0.00322551 0.0307536 0.0494038 0.021831 -0.0103495 -0.00374629 0.0589839 0.101298 0.126017 0.189852 0.213409 0.222514 0.197826 -0.0472999 0.00821943 0.020567 0.0273177 0.00941736 -0.0109966 0.0234136 0.105071 0.138474 0.174881 0.189462 0.240013 0.198392 -0.0206917 0.00948281 0.00368 -0.0437657 -0.0120675 0.0532602 0.107015 0.133217 0.140208 0.181327 0.165085 0.0936744 -0.0412768 -0.0212722 -0.0327954 -0.0246955 -0.012377 0.0572379 0.0720384 0.110237 0.122175 0.0805515 0.0308916 -0.0538278 -0.048487 -0.101114 -0.0850886 -0.0394513 -0.00308506 0.00720565 0.0148116 -0.0871444 -0.166542 -0.188835 -0.185787 -0.176831 -0.214663 -0.229556 1 653 -20.6547 -18.6656 132 1 6 -20.6547 -20.0519 -19.1146 -17.7568 -15.6469 -12.4006 -8.27017 -3.55056 1.65875 6.75338 11.0958 14.7165 17.3322 18.7221 19.3316 19.5157 19.3623 -16.9434 -14.6923 -11.7473 -8.64008 -5.61118 3.24342 6.14406 9.21432 12.2557 14.7675 -0.800008 -0.571382 -0.341526 -0.111056 -3.34691 -1.6415 0.142254 1.89493 3.5165 -12.5316 -10.6698 -8.3451 -6.35058 -8.3556 -10.5048 4.83678 6.66716 8.99246 11.0209 9.08377 6.92444 -6.63855 -4.73902 -2.32888 0.427259 3.15408 5.72158 7.86034 6.14905 3.75933 0.883179 -2.0422 -4.62825 -2.38864 0.55887 3.50364 3.65722 0.689237 -2.33557 -5.64822 -0.423649 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.90089 1.2941 1.35258 1.04463 0.412997 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 44 3 4 0 1 36 0 17 36 17 18 37 17 36 37 18 19 38 18 37 38 19 20 38 20 21 39 20 38 39 21 27 39 27 28 39 28 39 40 1 36 41 1 2 41 28 29 40 2 40 41 2 29 40 2 3 29 29 30 31 3 29 31 30 32 33 30 31 32 3 4 31 4 5 48 5 6 48 6 48 59 6 7 59 7 58 59 8 57 58 7 8 58 4 31 48 31 48 49 31 49 50 31 32 50 32 33 50 33 50 51 48 49 60 49 60 50 50 60 61 50 51 61 64 65 57 57 58 65 58 59 65 48 59 65 42 41 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 4 4 6 6 6 7 7 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 4 4 4 6 6 6 7 7 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 2 2 4 4 4 6 6 7 7 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 2 2 5 5 4 6 6 8 7 9 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 3 2 2 5 5 4 6 8 7 9 9 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 3 3 2 5 5 4 8 7 9 9 9 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 3 3 -1 -1 -1 -1 8 9 9 10 10 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 0 -1 -1 -1 -1 11 11 11 11 10 10 10 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 0 0 12 12 15 15 16 16 16 14 14 14 14 14 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 0 0 12 12 13 15 16 16 16 16 16 16 14 14 14 14 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 0 0 0 12 12 13 15 15 16 16 16 16 16 16 16 16 14 14 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 12 12 13 15 15 16 16 16 16 16 16 16 16 16 16 16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 12 13 13 15 16 16 16 16 16 16 16 16 16 16 17 18 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 12 13 13 15 16 16 16 16 16 16 16 16 16 17 17 19 18 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 12 13 13 13 15 16 16 16 16 16 16 16 17 17 19 19 18 18 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 13 13 13 13 15 16 16 16 16 16 16 16 17 17 19 19 19 18 21 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 13 13 13 15 16 16 16 16 16 16 17 17 17 19 19 19 19 21 20 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 13 13 13 16 16 16 16 16 17 17 17 17 19 19 19 19 21 21 20 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 13 13 15 16 16 16 17 17 17 17 17 19 19 19 19 30 33 33 34 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 13 16 16 17 17 17 17 17 17 19 19 19 22 30 32 33 34 34 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 16 16 17 17 17 17 17 17 19 19 19 22 22 30 32 33 34 35 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 17 17 17 17 17 17 17 19 19 22 22 22 30 31 32 32 35 35 35 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 17 17 17 17 17 19 19 19 22 22 22 30 30 31 32 32 35 35 35 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 17 17 17 17 19 19 22 22 22 22 30 30 30 31 37 37 38 39 39 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 17 17 19 22 22 22 22 22 30 30 30 31 36 36 37 38 38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 17 19 22 22 22 22 22 30 30 30 30 36 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 22 22 22 22 22 22 30 30 30 30 25 43 43 43 42 40 40 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 22 22 22 22 22 30 30 30 23 23 25 25 43 42 42 41 40 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 22 22 22 22 30 30 23 23 23 24 25 25 26 27 42 41 41 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 22 22 30 30 23 23 23 24 24 25 25 26 27 27 28 28 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 22 30 23 23 23 23 23 24 24 25 25 26 27 27 29 28 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 23 23 23 23 23 24 24 24 25 26 26 27 27 29 28 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 23 23 23 24 24 24 24 25 26 26 27 27 29 28 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 23 23 23 24 24 24 25 26 26 26 27 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 23 24 24 24 24 25 26 26 26 27 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 24 24 24 24 25 26 26 26 27 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 24 24 26 26 26 26 27 29 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 24 26 26 26 26 27 29 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 26 26 26 27 29 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 26 29 29 29 29 29 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 42 41 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              44 3 6 2.90581 0.0912225 0.180878 -2.47823 -0.0777993 -0.154262 -1.89812 0.145961 -0.312175 2.7705 -0.213046 0.455652 -1.46301 0.234737 -0.304078 2.43132 -0.390101 0.505336 0.59289 0.316655 -0.182134 1.06275 0.351718 -0.114513 -1.82068 -0.602557 0.196182 1.39466 0.185445 0.0212205 3.8466 0.0811239 0.325821 -8.9492 0.123005 -1.04945 -8.09861 -0.394885 -0.425869 3.13835 0.153024 0.165031 2.87904 -0.039572 0.337619 8.06473 0.498066 0.305369 1.41689 0.0912848 0.068808 1.01351 0.0966422 0.174915 1.82125 0.621421 0.287038 -0.246688 -0.131415 -0.214394 0.0314727 -0.56179 0.0358161 -0.610815 -0.537886 -0.21028 0.199862 0.10647 0.173698 -0.86832 0.105554 0.177491 0.171067 0.168239 0.106989 -0.288381 -0.374091 -0.135184 0.142352 0.18466 0.06673 2.24312 0.401516 -0.0360487 2.04844 0.345212 -0.114453 0.0808773 0.190838 0.0263122 0.817858 -0.09942 -0.167177 -2.18916 -0.698085 -0.163472 -1.29993 -0.3662 0.08246 2.19546 0.61848 -0.139268 0.795097 0.557571 0.0928493 0.0166435 -0.362205 0.0257889 4.80307 -0.208128 -0.699621 -1.90977 0.278837 0.472002 -3.13447 -0.283352 0.456404 3.86363 0.349267 -0.562575 0.0129238 -0.33101 0.0236308 -4.55225 -0.353973 0.41143 -1.34658 -0.404899 0.0442741 -5.28975 -0.0288067 0.576747 44 3 6 2.32708 0.116336 -0.0134226 3.67497 0.158651 0.0704798 3.38183 0.107024 0.112015 0.75244 0.309219 -0.320429 2.99358 0.0486356 0.141087 0.773933 0.404774 -0.320254 2.91137 0.00472711 0.166343 2.36782 -0.0285296 0.151496 4.00836 0.51441 -0.0252762 1.48601 -0.145782 0.138079 0.0143094 -0.17682 0.0134204 6.57071 -0.219787 0.779141 8.47963 0.415797 0.335459 1.7922 0.0897204 -0.0162022 0.011611 -0.129634 0.00996937 -7.85776 -0.506247 -0.381596 -0.695669 -0.0663349 -0.120061 0.944888 0.0462779 -0.0126511 0.0260259 -0.285082 0.0220117 1.5304 0.22822 0.259109 0.628571 0.553521 0.216393 1.2189 0.483859 0.444601 1.203 0.0538075 -0.0254329 2.04985 0.07297 -0.0639618 2.02949 0.0529499 -0.0766932 2.40002 0.442178 0.0605639 2.08635 0.0352768 -0.0864762 -0.155085 -0.365939 -0.0504545 0.0189247 -0.342544 0.0239847 2.0746 0.00388833 -0.0908724 0.620231 0.246756 0.228263 2.77206 0.932287 0.38653 1.51004 0.481527 0.11276 -0.390215 -0.0537916 0.233302 -0.324773 -0.0078993 0.240944 -0.354821 0.368216 0.223603 -0.584725 0.328323 0.312701 3.8287 0.142991 -0.460298 0.741603 0.340427 0.00944494 -2.88107 0.0129414 0.536935 -3.35226 -0.00640786 0.368557 4.41172 0.0110311 -0.37393 4.90886 0.160514 -0.390276 4.01409 0.245855 -0.269449 132 1 6 -1.48514 -1.46509 -1.41889 -1.34124 -1.18709 -0.937523 -0.621347 -0.268475 0.117437 0.496454 0.822908 1.10406 1.30944 1.41162 1.43416 1.42476 1.38928 -1.20848 -1.07764 -0.878198 -0.655394 -0.434822 0.264582 0.477937 0.699107 0.90952 1.06351 -0.0579142 -0.0401739 -0.0225292 -0.00496145 -0.261042 -0.126064 0.0119111 0.147738 0.278208 -0.877872 -0.746557 -0.576717 -0.431194 -0.574253 -0.730215 0.324609 0.457678 0.627624 0.772099 0.631309 0.474522 -0.453414 -0.317312 -0.15224 0.0335401 0.21521 0.391274 0.543732 0.39817 0.232665 0.054876 -0.125037 -0.297861 -0.136382 0.0408012 0.216349 0.220279 0.0457716 -0.132065 -0.571236 -0.180538 0.208769 0.592441 0.948413 1.24275 1.46757 1.62901 1.65024 1.57457 1.36479 1.09746 0.77075 0.396537 0.0057352 -0.386191 -0.77579 -0.937727 -1.11049 -1.20218 -1.2065 -1.17123 -1.221 -1.28715 -1.31443 -1.25191 -1.09941 -0.813817 -0.56453 -0.316582 -0.0697161 0.139796 0.162023 0.167377 0.142538 0.101422 -0.684455 -0.786728 -0.799568 -0.721978 -0.663401 -0.646474 -0.775765 -0.87318 -0.884519 -0.801873 -0.743364 -0.738036 0.670062 0.544878 0.455505 0.471311 0.429356 0.494452 0.599101 0.680016 0.743476 0.771125 0.768931 0.729549 0.574397 0.573345 0.549296 0.607259 0.643189 0.632333 0.277703 0.0709181 0.00378804 0.112153 \ No newline at end of file diff --git a/model/face.tri b/model/face.tri new file mode 100644 index 0000000..a81a1b0 --- /dev/null +++ b/model/face.tri @@ -0,0 +1,94 @@ +n_tri: 91 +{ +20 21 23 +21 22 23 +0 1 36 +15 16 45 +0 17 36 +16 26 45 +17 18 37 +25 26 44 +17 36 37 +26 44 45 +18 19 38 +24 25 43 +18 37 38 +25 43 44 +19 20 38 +23 24 43 +20 21 39 +22 23 42 +20 38 39 +23 42 43 +21 22 27 +21 27 39 +22 27 42 +27 28 42 +27 28 39 +28 42 47 +28 39 40 +1 36 41 +15 45 46 +1 2 41 +14 15 46 +28 29 40 +28 29 47 +2 40 41 +14 46 47 +2 29 40 +14 29 47 +2 3 29 +13 14 29 +29 30 31 +29 30 35 +3 29 31 +13 29 35 +30 32 33 +30 33 34 +30 31 32 +30 34 35 +3 4 31 +12 13 35 +4 5 48 +11 12 54 +5 6 48 +10 11 54 +6 48 59 +10 54 55 +6 7 59 +9 10 55 +7 58 59 +9 55 56 +8 57 58 +8 56 57 +7 8 58 +8 9 56 +4 31 48 +12 35 54 +31 48 49 +35 53 54 +31 49 50 +35 52 53 +31 32 50 +34 35 52 +32 33 50 +33 34 52 +33 50 51 +33 51 52 +48 49 60 +49 60 50 +50 60 61 +50 51 61 +51 52 61 +61 62 52 +52 53 62 +53 54 62 +54 55 63 +55 56 63 +56 63 64 +56 57 64 +64 65 57 +57 58 65 +58 59 65 +48 59 65 +} diff --git a/model/face2.tracker b/model/face2.tracker new file mode 100644 index 0000000..d43586b --- /dev/null +++ b/model/face2.tracker @@ -0,0 +1 @@ +8 4 3 0 198 24 6 -0.130185 0.0668425 -0.00755756 0.102841 -0.0532439 0.0411516 -0.0719725 0.038035 -0.120688 0.117858 -0.0306167 0.00393536 -0.106838 0.083814 -0.18281 0.00809827 -0.0142928 0.0225008 -0.0108525 0.0530746 -0.0983608 0.131567 -0.0357964 0.034486 -0.129319 0.0800168 0.00877025 0.12835 -0.0908262 0.0046755 -0.0594128 0.0119199 -0.0999291 0.118184 -0.0343811 -0.0326971 -0.0722609 0.0900118 -0.147978 0.00501757 -0.0179255 0.0117871 -0.022942 0.0758111 -0.0573034 0.0575416 -0.0419501 0.0401123 -0.130014 0.0991705 0.0205108 0.145788 -0.121119 -0.0105751 -0.0413775 -0.00920554 -0.0713056 0.111826 -0.0331359 -0.054583 -0.000979465 0.074718 -0.106921 0.00265915 -0.0171275 -0.0120761 -0.035891 0.0912709 -0.0163054 -0.0229193 -0.0442927 0.035556 -0.136417 0.110019 0.0291905 0.137579 -0.119151 0.0117714 -0.0184509 -0.0277042 -0.0120293 0.0716231 -0.011813 -0.0551098 0.0782911 0.029537 -0.0118018 0.00805545 -0.0241647 -0.022077 -0.0410335 0.0630502 0.0345087 -0.057747 -0.0452061 0.0172387 -0.133759 0.107108 0.0465922 0.101801 -0.101517 0.0607046 0.00225002 -0.0377449 0.0684078 0.0125691 0.0399644 -0.043774 0.143118 -0.0395622 0.126203 0.0136693 -0.0378072 -0.0201189 -0.0147679 -0.0111066 0.107207 -0.0316625 -0.022344 -0.00759827 -0.100708 0.0840524 0.0570771 0.0636771 -0.0699253 0.0535625 0.00422452 -0.0359842 0.104009 -0.0190834 0.0729825 -0.0327755 0.134206 -0.123177 0.190867 -0.00186669 -0.020218 -0.0451131 0.0217728 -0.0700815 0.147537 -0.00469701 0.0149855 -0.0165992 -0.0561773 0.0500891 0.0461323 0.0370913 -0.0283027 0.0195523 0.00160212 -0.0322155 0.0803045 -0.0178565 0.0751437 -0.0333392 0.0701263 -0.202732 0.160964 -0.0109649 0.0305359 -0.0593656 0.046665 -0.06927 0.14223 0.0181782 0.0266698 0.00867098 -0.0205822 0.0165766 0.0194682 0.0240674 -0.0075345 0.00459292 -0.0105211 -0.0258281 0.0346797 -0.00372573 0.0696266 -0.0192265 0.0276948 -0.273499 0.0878306 -0.00900322 0.112057 -0.0479425 0.0446371 -0.0513839 0.111823 0.0283545 0.0366306 0.0151139 -0.0120767 -0.00926349 -0.0111876 0.00806855 -0.0111473 0.0233282 -0.021512 -0.0113109 -0.000311627 0.00387629 0.0621319 0.00486203 0.0131368 -0.346283 0.0114112 -0.00962226 0.178893 0.00241935 0.00750274 -0.0452423 0.112129 0.00996373 0.0458444 -0.00585324 0.00164554 -0.0319399 -0.0436341 -0.0113154 -0.0158081 0.01209 -0.0247162 0.0101131 -0.0380355 0.00883609 0.0626766 0.0313658 -0.0019585 -0.270172 -0.0742661 -0.0039776 0.1015 0.0553991 -0.0390448 -0.0343358 0.126208 -0.0127722 0.0469207 -0.0215253 0.0460436 -0.0653762 -0.0686127 -0.0260001 0.0128626 0.0400289 -0.0322272 0.0207893 -0.0901441 0.0250663 0.0655455 0.044215 -0.0582228 -0.204341 -0.162238 0.0118066 0.0136692 0.064498 -0.0416352 -0.0343435 0.175155 -0.00763 0.0321346 -0.000478832 0.0983773 -0.097515 -0.0750855 -0.0566714 0.0647372 0.084332 -0.0286086 0.0309541 -0.115135 0.0253612 0.0608785 0.0401771 -0.136393 -0.131882 -0.201456 0.00950011 -0.0354254 0.0491168 -0.0172729 -0.0336255 0.182492 0.00601484 0.00994478 0.0338988 0.135577 -0.11564 -0.0581598 -0.100527 0.0990683 0.095949 -0.017265 0.0408658 -0.0749445 -0.011007 0.0247614 0.0499433 -0.149622 -0.0539682 -0.141925 -0.00444587 -0.0493866 0.0250709 0.0141506 -0.0587572 0.106984 0.00760104 -0.0390106 0.0187167 0.139105 -0.112044 -0.0344807 -0.141807 0.11235 0.0410663 0.0163727 0.0357397 0.0101628 -0.0742992 -0.0302227 0.0583381 -0.083996 0.0115302 -0.00674596 0.000407229 -0.0268643 0.0292481 0.0337065 -0.0763075 -0.0044211 0.0163223 -0.0762306 -0.0157948 0.132744 -0.0954322 -0.0203772 -0.150817 0.11328 0.00484036 0.0468031 0.0165553 0.0740177 -0.117608 -0.0560957 0.0539488 -0.00196641 0.0521839 0.0950339 0.00428846 -0.00862288 0.0141008 0.0296934 -0.0683975 -0.0674313 -0.0133084 -0.0624783 -0.0382507 0.132211 -0.0712039 -0.00325796 -0.131302 0.0860858 0.00596928 0.0675867 -0.00770428 0.107898 -0.12686 -0.0626875 0.0275475 0.0741285 0.0619786 0.149764 0.000195717 -0.000323362 -0.0191009 0.0236422 -0.0316385 -0.0937624 -0.0793341 -0.0242333 -0.042232 0.133204 -0.0532544 0.0181546 -0.103249 0.0532387 0.0298341 0.0814089 -0.0360444 0.133313 -0.129162 -0.0637759 -0.0128797 0.113359 0.0488056 0.197269 -0.00422111 0.0115955 -0.0385204 0.0179336 0.0111717 -0.115374 -0.137615 0.0162193 -0.0344866 -0.103069 0.00904193 -0.11347 -0.1964 0.0535944 0.140996 -0.187591 0.103678 -0.0252977 -0.0129165 0.145092 0.0506047 -0.0287148 0.00740756 0.0458316 0.20026 -0.00298113 -0.0366921 0.206563 -0.0548119 -0.126629 0.0283826 0.00837059 0.0214 -0.0808659 -0.0011272 -0.0999564 -0.258175 -0.000804187 0.109646 -0.110997 0.0140682 -0.0144766 0.0532391 0.169814 0.0304007 -0.0218408 -0.0455244 0.00510546 0.146046 -0.0236238 -0.0538788 0.0879774 -0.0239427 -0.138884 -0.0354682 -0.0539777 0.0291589 -0.0594665 -0.00987523 -0.0727733 -0.242453 -0.049109 0.0569658 0.0164 -0.11059 -0.0369919 0.0723821 0.164756 0.00326148 -0.0171212 -0.0644847 -0.00894325 0.051642 -0.00227522 0.00253794 0.0379934 0.0102467 -0.109952 -0.0562023 -0.135404 0.0156833 -0.0420429 -0.017146 -0.0414745 -0.192505 -0.0878456 -0.00434743 0.151535 -0.241071 -0.0771397 0.0459994 0.142312 -0.0385386 -0.0118624 -0.0628982 -0.0109029 -0.0260657 0.0437376 0.0659248 0.0509941 0.0325129 -0.0700082 -0.067725 -0.214123 0.00269627 -0.0256112 -0.0255568 -0.0146918 -0.133863 -0.124444 -0.0706338 0.278695 -0.356972 -0.117184 0.0029937 0.112111 -0.086281 -0.00437064 -0.0492154 -0.00649439 -0.0908608 0.101081 0.110366 0.0923778 0.04475 -0.033253 -0.0781342 -0.287528 -0.0079025 0.030389 0.00263153 0.00974868 0.118526 0.107242 -0.119948 -0.25449 0.345921 0.135689 0.0214989 0.116327 0.0972752 0.00779285 -0.0508049 0.0143608 0.0574778 0.107374 -0.104638 -0.127928 -0.00522067 -0.0362666 -0.0647469 -0.267413 0.0272125 0.0459109 -0.00560039 0.0327707 0.18185 0.076285 -0.0486225 -0.137735 0.246741 0.093552 -0.0292031 0.147818 0.049921 0.0144728 -0.0722619 0.0159057 0.0136225 0.03896 -0.0693606 -0.0737082 0.0217486 -0.0625923 -0.0420087 -0.206622 0.00925653 0.0620563 -0.012057 0.0628091 0.239833 0.0433691 0.0220728 -0.00903608 0.125297 0.0474991 -0.067606 0.171078 0.00538429 0.0166806 -0.0814073 0.0107345 -0.0430314 -0.0210238 -0.0101155 -0.0431461 0.0566145 -0.0870238 -0.0167512 -0.138464 -0.0147479 0.081956 -0.0198572 0.0915135 0.272143 0.00231312 0.0920614 0.120068 0.00133997 0.0154115 -0.0675961 0.180399 -0.027828 0.0188187 -0.0730256 -0.00747574 -0.125307 -0.0635809 0.0543045 -0.0690778 0.0994525 -0.0974687 0.00541148 -0.0608478 -0.0410494 0.104072 -0.0297651 0.108497 0.231537 -0.0485685 0.143719 0.209559 -0.0958036 0.0148601 -0.0176189 0.160858 -0.0534865 0.0214349 -0.0298235 -0.0543481 -0.186389 -0.0613468 0.0584294 -0.167997 0.119805 -0.0743581 -0.0156035 0.0264089 -0.0450186 0.00426261 0.00154626 0.0106364 -0.00444034 0.00750927 -0.178676 -0.00616094 -0.00727546 0.00873313 0.0059598 -0.0362066 0.00583462 -0.0110882 0.0849487 0.00505592 -0.020823 0.0116658 0.00628646 0.0225756 -0.0173561 0.115777 -0.0227936 -0.0930347 -0.0290308 0.00517435 0.00197386 0.0147127 -0.000684213 0.000981349 -0.137706 -0.0067766 -0.0131205 0.00932915 0.0022836 -0.0357296 0.00443941 -0.0189864 0.090556 0.00159003 -0.00407305 -0.0283888 -6.94953e-05 0.0129633 -0.0427569 0.157128 -0.0267884 -0.119987 -0.0155614 0.006163 0.00248999 0.0184269 0.00297776 -0.00505656 -0.0918991 -0.00724287 -0.0185152 0.0100866 -0.00185366 -0.0347198 0.00323318 -0.0257348 0.0946441 -0.00100502 0.0109161 -0.0615769 -0.00659162 0.00295319 -0.0675621 0.195962 -0.030679 -0.145767 -0.00233173 0.00718121 0.00305368 0.0218594 0.00643693 -0.0108758 -0.0439096 -0.00743583 -0.0233595 0.0107309 -0.00627009 -0.0352938 0.00209203 -0.0314743 0.0932108 -0.00330429 0.0251831 -0.0922922 -0.0128504 -0.0080236 -0.0902126 0.228393 -0.0322506 -0.159954 0.0108488 -0.0105702 0.0400609 -0.040751 0.0676338 0.0699387 -0.0570107 0.0148807 -0.0428619 -0.0321479 0.0211915 -0.0654417 -0.0335392 -0.144825 0.0855072 0.0425183 0.0159097 -0.087158 -0.0242121 -0.0768408 -0.112438 0.109355 -0.527556 0.0824139 -0.017992 -0.00188424 0.0237607 -0.0172072 0.0335334 0.0333658 -0.0809003 0.00603527 -0.0189552 -0.0191467 0.0106901 -0.0714577 -0.0141488 -0.0731136 0.0925222 0.0217932 0.0128251 -0.0995796 -0.0219621 -0.0361916 -0.0799437 0.125572 -0.29038 -0.0124829 -0.0178244 0.00812429 0.00544387 0.00891515 -0.00762352 -0.0153813 -0.106352 -0.00167154 -0.000578488 0.000566187 -0.00606184 -0.0767541 0.0031732 0.0108983 0.10297 -0.00788892 0.00543213 -0.107623 0.000967021 0.00566933 -0.0397901 0.144747 -0.0287481 -0.115781 0.00168839 0.0181786 -0.0105969 0.0322841 -0.0481893 -0.0597682 -0.0822876 -0.00788929 0.0198412 0.0184851 -0.024311 -0.0720154 0.0234118 0.0969487 0.0957935 -0.0378141 -0.00483867 -0.101268 0.0234754 0.0438473 0.00332367 0.153384 0.239597 -0.154305 0.0189897 0.025887 -0.0247139 0.0525545 -0.0780231 -0.087547 -0.0570431 -0.0176739 0.0479206 0.0265338 -0.032065 -0.0648128 0.0445315 0.160897 0.0918121 -0.0570412 -0.00643618 -0.0905394 0.0167806 0.0795653 0.0338569 0.160319 0.470214 -0.184191 0.0110291 -0.0606059 0.011559 -0.052 -0.058255 0.0739524 0.0223832 -0.139092 0.00710005 -0.0194188 -0.256188 0.0498281 -0.128944 -0.0558482 0.0799671 -0.031951 -0.253685 0.121747 -0.00720901 -0.0263739 0.0515568 0.04622 0.0203903 0.149219 0.0994712 -0.0552061 0.00558533 -0.0350596 -0.0585683 0.0324302 -0.00235549 -0.0636872 2.21607e-05 -0.0507578 -0.217043 0.051898 -0.0529497 -0.0379268 0.0730199 -0.0316732 -0.12509 0.125413 -0.0346742 -0.11218 0.0292393 0.0459413 0.0482755 0.154554 -0.0134169 -0.0420265 0.0263137 -0.0190424 -0.0303998 -0.0263387 -0.0122451 0.0384728 0.0093811 -0.128443 -0.156395 0.0446447 0.126659 -0.049397 0.0714894 0.0567262 -0.029175 0.127449 -0.0496676 -0.130146 -0.00389067 0.0328949 0.0794509 0.156372 -0.0620684 -0.0328043 0.0178871 -0.0121688 -0.00465138 -0.0667223 -0.0209393 0.117493 -0.00310405 -0.172799 -0.128317 0.0343095 0.196898 -0.0185522 0.0804958 0.101466 0.0928368 0.137152 -0.0792006 -0.177761 -0.0431533 0.015282 0.122972 0.138917 -0.157192 -0.0411128 0.0176147 -0.0308702 -0.0148281 -0.0122511 0.00238345 0.0275855 0.00504124 -0.124626 -0.168574 0.0382365 0.0942706 -0.0313645 0.0855389 0.0751772 -0.036311 0.130853 -0.0461547 -0.11196 -0.0177809 0.0219417 0.0860567 0.132919 -0.0568578 -0.0514555 0.00792338 -0.0401424 -0.0352956 0.032017 0.0163466 -0.0584352 -0.00348768 -0.0652158 -0.22232 0.042797 -0.0411581 -0.0381964 0.0864116 0.0159982 -0.138239 0.128157 -0.0318303 -0.0758136 0.0120069 0.0307644 0.0590141 0.134696 0.0124376 0.0389173 -0.0185561 0.0257829 0.00321937 0.0846578 -0.0446511 -0.108682 -0.00380102 0.149574 0.133513 0.0432008 -0.182496 0.0246611 0.0734436 -0.100165 -0.107976 0.114396 0.0847912 0.174983 0.026653 0.0289713 -0.0406464 0.17825 0.164443 0.0436539 -0.0372049 0.0287275 0.0266205 0.0564456 -0.0337409 -0.0400698 -0.0246627 0.121317 0.152066 0.0500379 -0.154021 0.0711372 0.0659651 -0.0703803 0.0259615 0.117191 0.0514836 0.115925 -0.0183404 0.0240071 0.00941622 0.177817 0.0571443 0.056237 -0.0186718 0.0426244 0.0575704 0.000520065 -0.0143684 0.0600464 -0.0167832 0.0475534 0.21075 0.0485294 0.0183816 0.061552 0.0671091 0.018572 0.124759 0.125684 0.0363786 0.0981976 -0.0569327 0.0177883 0.0382789 0.169092 0.0063619 0.0643116 -0.0182842 0.0597407 0.0658599 -0.0464247 0.0153849 0.142405 -0.0181686 0.00383901 0.255891 0.0414382 0.122609 0.0694571 0.0749706 0.0377861 0.247377 0.137315 0.0105309 0.0275971 -0.0810965 0.0106087 0.0632238 0.153588 -0.0955746 0.0574468 -0.00610933 0.0488052 0.0422864 -0.00584744 0.00353223 0.0652219 0.00258157 0.0377661 0.230741 0.0372841 0.0661751 0.0442585 0.0811552 0.00263903 0.115326 0.131643 0.0421039 0.0844616 -0.0352683 0.016778 0.0165878 0.153774 0.00939302 0.0477647 -0.0144676 0.0411521 0.0192664 0.0369028 -0.0149708 -0.0211755 -0.00529266 0.096584 0.1779 0.0405437 -0.065288 0.0353193 0.0793929 -0.0582903 0.00972338 0.123609 0.0587296 0.120143 -0.00300369 0.0245223 -0.0107855 0.161788 0.0794853 -0.0240244 0.129893 -0.21748 0.0656442 0.12466 0.0654384 0.0576003 -0.096559 0.155124 -0.0441383 -0.0785977 0.159397 0.0613734 -0.00260364 -0.058045 0.159877 -0.0716456 0.0809778 -0.0610954 0.107711 -0.0696956 0.0517023 0.0586229 -0.116475 0.033904 0.108165 -0.130572 0.0333632 0.0404945 0.0241408 0.00685092 -0.0142194 0.068348 -0.0135447 -0.0856613 0.0579789 -0.00245526 0.022068 -0.0190128 0.0995551 -0.0745518 0.195565 -0.0867494 0.0309377 -0.0704901 -0.00756571 0.0363786 -0.10673 0.0392217 0.0587045 -0.0514461 0.00935713 -0.0105638 0.0037011 -0.0155704 0.0141329 0.0270146 -0.00173644 -0.0885597 0.0108664 -0.015621 0.038139 -0.0028094 0.0607321 -0.0757472 0.160404 -0.0645165 -0.00807032 -0.0606379 -0.000796854 0.0159615 -0.0711661 0.00984588 0.00962396 -0.00252391 -0.00121322 -0.00836827 -0.00633076 -0.00524066 0.00737825 -0.00159871 0.00303344 -0.0927683 -0.015678 -0.0121311 0.0417562 0.013974 0.00743 -0.0737591 0.0112898 -0.00543422 0.0131466 -0.0444563 0.00564387 -0.00636859 -0.00446487 -0.0221127 -0.0384004 0.0434037 -0.0146072 -0.00259376 0.000437676 0.00972749 0.000555037 -0.030788 0.00512148 -0.0870561 -0.0386543 -0.00225904 0.0374086 0.027281 -0.0483449 -0.0820997 -0.137849 0.0518175 0.0465438 -0.0398378 0.0138164 0.0140811 0.0701869 -0.0247809 -0.0860665 0.112474 -0.0335744 -0.0372939 0.0237276 -0.00265681 0.0230107 -0.0709244 0.018441 -0.0812658 -0.0780827 -0.0120736 0.0221198 0.0332328 -0.0911995 -0.0871227 -0.20595 0.0819258 0.0321567 -0.0621739 0.02514 0.032829 0.114122 0.022393 -0.111112 0.191296 -0.0604928 -0.106251 0.0653985 -0.0439296 0.0964093 -0.153272 0.0501267 -0.0732053 -0.164077 -0.0665003 -0.00246892 0.0536372 -0.152912 -0.0908898 -0.134222 0.0681288 -0.0209931 -0.101321 -0.0119507 0.0808949 0.128852 -0.0425818 -0.0893634 0.17479 -0.0596607 -0.080614 0.0241643 -0.0264106 0.0912021 -0.0757943 0.0243544 -0.0983346 -0.0785917 -0.0413652 -0.0221159 0.00784134 -0.127566 -0.0760434 -0.00590693 0.023065 -0.0831224 -0.142571 -0.00311404 0.0472419 0.0474349 -0.0692105 -0.0522443 0.108434 -0.041129 -0.0363734 0.00127083 -0.0031513 0.0554559 -0.0163229 -0.00192678 -0.105711 -0.0257479 -0.0145038 -0.0338526 -0.00940831 -0.0591162 -0.0523992 0.0495393 -0.0160297 -0.036511 -0.15592 -0.00313279 0.0396186 0.0201252 -0.0222296 0.00194641 0.00783379 -0.00313622 0.00239553 -0.0143368 0.00533045 0.00555825 0.0104608 0.000223304 -0.1063 0.00328683 -0.000441011 -0.0510482 -0.00681914 -0.00399985 -0.0382015 0.0031671 -0.0035425 0.0250145 -0.135627 0.0125469 0.0345104 -0.00888008 0.0320919 0.0588892 -0.0993307 0.0342574 0.0421668 0.00282741 0.0155461 -0.0422943 0.0342328 0.00119996 -0.10588 0.0332577 0.0173064 -0.0347412 -0.00543267 0.0486713 -0.0442945 -0.0501273 0.00927708 0.0932056 -0.11634 0.0285341 0.0320591 -0.0355606 0.0233438 0.101124 -0.180921 0.0581039 0.0900525 0.0243988 0.0385765 -0.0832474 0.0855092 -0.0200513 -0.100595 0.0799803 0.0394175 -0.0222575 -0.0185976 0.121647 -0.0583952 -0.0205381 -0.0217363 0.146573 -0.075188 0.0330533 0.0381615 -0.0525805 0.062675 0.101716 -0.121672 0.0535683 0.0483178 -0.0121013 -0.0134159 -0.072226 0.123701 -0.0521766 -0.100681 0.0357589 0.0194979 0.00239248 -0.0574452 -0.120812 -0.0691677 0.124827 0.00969323 -0.0985407 -0.144762 0.0297473 0.020645 0.242753 0.00955621 0.0108386 -0.00397245 -0.00067045 -0.00653583 -0.0183567 -0.00387704 0.00656896 -0.000963807 0.00480775 -0.104229 -0.0103761 -0.00273019 0.0169597 0.00137252 -0.00502274 -0.0609523 -0.00389197 -0.000963506 0.00886511 -0.0918083 0.0067867 -0.00417599 -0.0144701 -0.0477811 -0.0786218 0.108983 -0.0559706 -0.0558704 -0.0109006 0.013616 0.0836224 -0.125129 0.0579512 -0.101423 -0.0541878 -0.0236801 0.00515188 0.0545227 0.111372 -0.0544239 -0.134444 -0.0146362 0.13963 -0.0539222 -0.00659251 0.0304032 -0.260495 -0.078441 -0.096548 0.14403 -0.0685282 -0.0623548 -0.0282728 0.00201197 0.102317 -0.128965 0.0491319 -0.113848 -0.0538444 -0.0317859 -0.0186649 0.0686798 0.128052 -0.050282 -0.0468041 -0.0371805 0.145545 -0.0634284 -0.0255642 0.0354589 -0.245368 -0.0209318 -0.000107604 0.00719684 -0.00544793 0.00356712 -0.039928 0.00280956 0.0063118 0.00732754 -0.00350252 -0.114732 -0.0053323 -0.00741575 -0.0127799 0.00883748 0.00953396 -0.052047 0.0105379 -0.00481955 0.0471274 -0.094975 0.00453604 0.0107859 0.0076229 0.048428 0.10206 -0.136019 0.0576207 0.067578 -0.0310366 0.00544233 -0.0897361 0.137306 -0.0556734 -0.11302 0.0442227 0.0196282 -0.0213098 -0.0585934 -0.114495 -0.0642434 0.0596185 0.028894 -0.0473819 -0.140084 0.0393509 0.0167841 0.263989 0.0223202 0.0709852 0.0733485 0.00661149 -0.0329767 0.112431 0.0596888 -0.00640837 0.102106 -0.0576481 0.295466 -0.0416961 0.0365665 0.220145 0.121743 0.035237 -0.178749 -0.110297 0.056324 -0.0238641 0.0248756 0.022979 0.0556877 0.0567824 0.0239419 0.0437192 0.0406482 -0.010668 -0.0409642 0.00342009 0.0513896 0.0119736 0.0625346 -0.0428377 0.245148 -0.014847 0.00791913 0.158584 0.0327981 0.0367801 -0.118656 -0.0484925 0.00674731 -0.0176091 0.00123559 -0.00626268 0.0496687 0.0278999 0.0262311 0.015067 0.00935291 -0.0284068 -0.0487432 -0.107971 0.0420589 0.0326142 0.0206091 -0.0311011 0.191242 0.0100291 -0.0297594 0.104894 -0.0696955 0.0438796 -0.0535179 0.0201367 -0.0426442 -0.0112545 -0.0282415 -0.0260686 0.0367184 0.000356349 0.028344 -0.017251 -0.0225363 -0.0332955 -0.0526893 -0.21712 0.0143209 0.030803 -0.0203244 -0.019028 0.134399 0.0243523 -0.0577419 0.0579503 -0.121264 0.0340426 0.0146522 0.0542021 -0.0609633 0.00257174 -0.0664824 -0.031795 0.0241741 -0.0082403 0.0241172 -0.0546142 -0.0603021 -0.010599 -0.0389248 -0.278313 -0.0447635 -0.00892187 -0.0637093 0.0072112 0.0816042 0.0171564 -0.078161 0.0209862 -0.1064 0.0141065 0.0771281 0.0180457 -0.0210639 0.0336267 -0.112877 -0.0148194 -0.000304018 0.0156886 -0.00427198 -0.0796055 -0.101928 0.0313226 -0.0442561 -0.25014 -0.103331 -0.0624891 -0.0946602 0.0276613 0.0398428 0.0149253 -0.0607299 -0.00291645 -0.076817 -1.95407e-05 0.123106 -0.00652676 0.00576903 0.0640219 -0.142232 -0.00135333 -0.0234785 0.0311849 -0.0566359 -0.0844326 -0.131307 0.0702655 -0.0863941 -0.165917 -0.160594 -0.101043 -0.0837116 0.0254388 0.0205392 0.0346597 0.0255819 -0.0176085 -0.0135455 -0.0181621 0.137335 -0.00124377 0.00354036 0.0372876 -0.132031 -0.0143224 -0.0252045 -0.0145596 -0.120233 -0.0783176 -0.138143 0.0870797 -0.119185 -0.0656961 -0.203075 -0.125389 -0.0370445 0.00413361 0.0151283 0.0411943 0.0999664 -0.0234178 0.0974023 -0.0473794 0.0781622 0.0228234 0.00430525 -0.0231933 -0.0711901 -0.0348012 -0.0156326 -0.0574552 -0.150783 -0.0824921 -0.136485 0.0918961 -0.112244 -0.00241616 -0.234059 -0.167997 0.00356454 -0.00805817 -0.00426447 0.0440018 0.141361 0.021305 0.230021 -0.0532988 -0.0137069 0.00415694 0.0540687 -0.0801543 -0.0361806 -0.0218409 -0.00702308 -0.0461941 -0.121427 -0.0737571 -0.133335 0.0909956 -0.112547 0.0587762 -0.204943 -0.126321 -0.0305063 0.00126452 -0.0254512 0.0359729 0.0999833 0.0582213 0.110463 -0.0385703 -0.0985615 0.0149965 0.0102897 -0.0542405 0.0265558 -0.0252729 0.0127512 -0.0475799 -0.063314 -0.0741454 -0.122506 0.0790149 -0.074716 0.156688 -0.166101 -0.100816 -0.0696761 0.0195007 -0.0332039 0.0262426 0.0337441 0.0408621 0.0114795 -0.00471909 -0.140922 -0.00881419 0.0109153 -0.039774 0.106389 -0.00434083 0.0171198 -0.000363172 -0.0177304 -0.0638352 -0.0917453 0.0466351 -0.0320265 0.236779 -0.112938 -0.0609998 -0.0767466 0.020773 -0.0519045 0.00514881 -0.0399077 0.013737 -0.0474224 0.0122621 -0.116785 -0.0115906 0.0113949 -0.0243687 0.128167 0.00426078 0.0168032 0.0403199 0.00572209 -0.0353433 -0.051751 0.0115636 -0.0283073 0.26697 -0.0563329 -0.00718215 -0.050988 0.00452683 -0.0893311 0.00332172 -0.0532011 -0.0204277 -0.0861489 0.023186 -0.0662072 0.0151991 -0.0190583 -0.0292919 0.094304 -0.0178452 0.011204 0.0205127 0.00959925 0.00230027 -0.0162131 -0.0070492 -0.0477849 0.21751 0.00278314 0.0325377 -0.0197558 -0.0134104 -0.135668 0.00609299 -0.0396449 -0.0645428 -0.119929 0.0355892 -0.00255227 0.0492984 -0.0612889 -0.0266197 0.0521406 -0.0441138 0.00218165 -0.0051956 0.00859076 0.0329571 0.0152384 -0.00452205 -0.051551 0.114443 0.0336065 0.0346422 0.0118616 -0.0195659 -0.187647 -0.0110043 -0.0205103 -0.11527 -0.0809134 0.0375739 0.0656761 0.0158189 -0.0416508 -0.0181705 0.0194231 -0.0380323 -0.0132598 0.00256556 0.00649297 0.0586733 0.0454755 0.00714694 -0.047685 0.00277113 0.0472509 0.0149026 0.048875 -0.0304612 -0.237767 -0.0353357 0.00926374 -0.168503 0.0159521 0.0244116 0.129234 -0.0496791 0.0100613 -0.0129293 -0.00773506 -0.0149465 -0.0380667 0.0278948 0.00472687 0.0837066 0.0762818 0.0174583 -0.0426718 -0.109733 0.0606082 -0.00203237 0.0846486 -0.0453457 -0.285232 -0.0595003 0.035421 -0.226591 0.100399 0.0175356 0.187878 -0.110221 0.0621646 -0.0116442 -0.0305766 0.018417 -0.061755 0.0534422 0.00651006 -0.16787 -0.0403554 0.24075 -0.066578 0.0373338 0.194408 0.0478674 -0.0390384 -0.223305 -0.117465 -0.0612878 -0.0593034 0.21244 -0.0479057 0.0367324 0.281648 0.131467 0.271171 -0.0303081 0.0972422 -0.0255785 -0.0944942 -0.0393262 0.00468651 -0.171849 -0.0720258 0.102321 -0.066456 0.0909995 0.0764278 0.121025 0.0483808 -0.11256 -0.0575428 -0.0259837 -0.0375604 0.151443 -0.0100534 0.0793459 0.192028 -0.0191826 0.152769 -0.0282223 0.0232116 -0.0347979 -0.0660757 0.00767657 0.0134684 -0.178376 -0.088994 -0.00152968 -0.0818926 0.124124 0.0274841 0.137736 0.119641 0.020907 -0.00378816 0.0257047 -0.0248538 0.0923841 0.0109157 0.0258232 0.10694 -0.0798565 -0.0105048 0.0063288 -0.0174995 -0.0334038 -0.0638619 0.0281761 0.0216954 -0.182737 -0.0839767 -0.0469575 -0.0851816 0.111912 0.0347524 0.0950029 0.161908 0.109183 0.0164559 0.0569877 -0.00838089 0.0529234 0.0259355 -0.0744077 0.0610967 -0.0543169 -0.139403 0.0599412 -0.0125071 -0.0219285 -0.0877651 0.0350444 0.0279603 -0.181968 -0.0599342 -0.0687223 -0.0860564 0.0801019 0.0702585 -0.00309156 0.177325 0.168034 0.029563 0.0682313 -0.00577563 0.0096509 0.0414174 -0.165713 0.0292145 0.0114467 -0.242018 0.0996505 -0.00483571 -0.0193959 -0.128138 0.024784 0.0245504 -0.182708 -0.0603818 -0.0897751 -0.105973 -0.0519431 0.113725 -0.0555595 0.159301 0.164764 -0.0517093 0.0528581 -0.00768548 0.00149523 0.04165 -0.173437 -0.0577862 0.0271028 -0.225878 0.0727551 0.0750555 0.0600583 0.165676 0.0173074 0.0161862 -0.181732 -0.0871439 -0.0781003 -0.102442 -0.0990559 0.0640766 0.0561963 0.14854 0.112773 -0.0385934 0.0483329 -0.00984922 -0.0383179 0.0273034 -0.0709163 -0.0728038 -0.0437069 -0.131319 0.0341836 0.0612049 0.0340564 0.124194 0.0344948 0.00572727 -0.175825 -0.09581 -0.0410387 -0.0946147 -0.124302 0.039979 0.115663 0.111244 0.0294037 -0.0179803 0.0235068 -0.0256919 -0.0769755 0.014163 0.043499 -0.102177 -0.0774656 -0.00684536 -0.0149671 0.033949 0.00889478 0.0994978 0.0318794 -0.00584421 -0.167559 -0.0824068 0.0601225 -0.0701489 -0.10239 0.0697181 0.116582 0.0424393 -0.104382 0.0373687 -0.0217264 -0.0375031 -0.139231 -0.00370658 0.119455 -0.178716 -0.0243715 0.158677 -0.0201913 -0.0244752 0.00536358 0.0885305 0.0106775 -0.00703778 -0.161688 -0.0528119 0.207495 -0.0584956 -0.0520538 0.173273 0.0574773 -0.0470439 -0.221928 0.0988552 -0.0511477 -0.0587359 -0.210002 -0.0349901 0.0960953 -0.27572 0.127837 0.289248 0.0232639 -0.0950796 0.0308294 0.090371 -0.0475002 0.0515543 0.00955048 0.123597 -0.0279222 0.168061 0.00179188 -0.187793 -0.0661978 0.132165 0.087408 0.00162585 0.11502 -0.129985 -0.00878998 0.0212254 -0.275398 -0.0168428 0.0934001 0.289708 0.269294 0.0832839 -0.000779888 0.0107048 -0.407619 0.0694541 0.0221821 0.175669 0.000980673 0.0664984 0.00548011 -0.158599 -0.148327 0.136911 0.0196737 0.00346059 0.0990431 -0.201013 -0.0108255 0.00366319 -0.0901124 -0.00142275 0.0089918 0.143737 0.120535 0.0282175 0.0327599 0.0021737 -0.208195 0.0865577 0.0342053 0.227865 0.032454 -0.0327098 0.0078922 -0.132504 -0.231523 0.144519 -0.0515546 0.00326055 0.0836174 -0.270023 -0.0125214 -0.011768 0.0938767 0.0125642 -0.0730168 -0.000797953 -0.0276305 -0.0243059 0.0669593 -0.00491574 -0.0088717 0.103867 0.0466338 0.28083 0.0653117 -0.133526 0.00960799 -0.106487 -0.312878 0.153094 -0.125703 0.00138567 0.0687464 -0.339631 -0.012524 -0.0347387 0.278048 0.0259947 -0.149842 -0.146984 -0.174815 -0.0742419 0.0963853 -0.0100797 0.188653 0.108434 0.104976 0.0794147 -0.0716796 -0.0970063 0.0354197 -0.0423123 0.0488021 -0.0464777 -0.0699015 -0.00393956 0.098983 0.159803 -0.00493974 -0.127854 0.0169023 -0.00330913 -0.0358611 0.00193607 0.0588806 -0.00287993 -0.175945 0.056699 -0.028577 0.114394 0.0925372 0.100701 -0.0979008 -0.14327 0.0260414 -0.0437856 0.0237216 -0.014404 -0.0944543 0.00160287 0.0908477 0.220073 -0.00374712 -0.142837 0.00127505 -0.000447542 0.0325875 0.035158 0.0939414 0.0146934 -0.0535775 0.0239238 0.0481959 0.116122 0.0853613 0.108636 -0.105451 -0.156881 0.0136545 -0.0555839 0.0109671 0.00507729 -0.10381 0.00527442 0.0863384 0.239629 -0.00226245 -0.133291 0.00120286 0.00170335 0.0499344 0.0608112 0.106479 0.0255765 -0.0166389 0.0138306 0.0929322 0.113339 0.0956749 0.0975132 -0.0934317 -0.137326 -0.00362608 -0.0415337 0.02084 -0.0169549 -0.0926647 0.00455743 0.0884481 0.207672 -0.000225703 -0.139091 0.0026617 0.00314526 0.0300626 0.029113 0.084097 0.0227838 -0.094065 0.0292773 0.0461795 0.106254 0.1106 0.0734983 -0.0629323 -0.0869535 -0.0213847 -0.0373776 0.0414356 -0.0510631 -0.0669364 0.00851295 0.0935314 0.137702 -0.000813853 -0.120922 0.0183268 0.00770803 -0.0377455 -0.00924211 0.0402924 0.0173312 -0.251477 0.0648369 -0.028809 0.0252576 -0.0629978 0.0480032 0.0593492 0.15661 0.104367 0.015718 -0.0602476 -0.0947008 0.0344173 -0.0173181 -0.0393522 0.0976936 0.0653192 0.0542185 0.0785323 0.065677 -0.00371087 -0.0162665 -0.0442776 -0.060907 0.0161968 -0.100416 0.00713743 0.00450781 -0.109183 0.0414177 0.0049288 0.210614 0.0820529 -0.0518125 -0.0933726 0.00152314 -0.0103287 -0.00460689 -0.247634 0.162282 0.0560447 -0.082859 0.108983 0.0688457 -0.0154039 -0.11934 -0.0212636 -0.0458644 0.00973231 -0.0952692 -0.0726886 0.00773565 -0.0961694 0.0517665 -0.0132637 0.204446 0.0823026 -0.0514249 -0.0833033 -0.0172104 -0.00293557 0.00660267 -0.212263 0.148427 0.0425574 -0.0957077 0.0811031 0.0570205 -0.0156103 -0.122104 -0.000296237 -0.0310022 0.0211764 -0.0570611 -0.0579917 0.038922 -0.0226834 0.0803047 0.00463796 0.128586 0.0511032 0.0133047 -0.0247 -0.133141 0.0594597 -0.000347523 0.0822085 0.0314969 0.0259679 0.0108262 -0.00734978 0.0459794 0.0146299 -0.0355759 0.018352 -0.0275669 0.0104093 -0.030101 0.0401962 0.0436457 0.00416267 0.0610547 0.040116 0.157391 0.0676439 0.0145187 0.0161251 -0.170973 0.090917 -0.00694383 0.189984 0.0243221 0.0361829 0.124559 -0.0771016 0.0356741 0.0636969 0.0374499 -0.00241256 -0.0440749 -0.00921538 -0.0513056 0.147164 0.0400179 -0.00336997 0.0508944 0.0558403 0.15692 0.0901941 0.0306097 0.00971754 -0.17277 0.0902245 -0.00965528 0.173526 0.0440687 0.0462578 0.141932 -0.0439411 0.04656 0.0485459 0.0383747 -0.0190281 -0.0476254 -0.00292827 -0.0640709 0.139986 0.0344369 -0.0186508 0.0789783 0.00159163 0.115453 -0.052066 0.0341823 -0.0268134 -0.15699 0.0395194 -0.0160157 0.10833 0.0283075 -0.0319939 0.0271651 0.0133042 -0.0628721 0.00406635 -0.0621831 -0.00504216 0.0295491 0.029789 -0.00174372 0.019759 0.00232545 -0.0898459 0.0504099 -0.0209285 0.194194 -0.0934765 -0.03834 -0.0843812 -0.0365443 -0.0263935 -0.00715322 -0.193522 0.140161 -0.043188 -0.0838096 0.0842475 -0.0675715 -0.0213638 -0.141013 -0.0167658 0.0264668 0.0456975 0.0184599 -0.063004 -0.00261392 -0.105194 0.0383853 -0.00720866 0.209128 -0.0970164 -0.0524755 -0.0961863 -0.00747657 -0.0426028 0.00677948 -0.253729 0.156225 -0.0563169 -0.0833597 0.0995197 -0.0778849 -0.0178566 -0.135759 -0.0364221 0.0267523 0.0495101 0.0603875 -0.0691598 0.0173263 -0.0581839 0.0431115 0.0458074 0.160422 -0.117342 0.00561595 -0.0633878 -0.0989516 -0.00393952 0.00902289 -0.0583449 0.0903022 -0.068918 0.0528459 0.0511066 -0.0784207 -0.0018357 -0.0213923 -0.058862 0.0212409 0.0541508 0.0640686 0.0270713 0.0331246 -7.87793e-05 0.0471211 0.0461817 0.155335 -0.10141 0.0303155 0.0052518 -0.182032 0.0561575 -0.00916588 0.16454 0.0391194 -0.0533286 0.145857 -0.0551771 -0.071006 0.0455099 0.0256472 -0.0361992 0.0204432 0.0258374 0.0383182 0.145397 0.038055 0.0083032 0.05788 0.034411 0.150662 -0.0767375 0.0245232 0.0137951 -0.188152 0.0646631 -0.0134048 0.20028 0.0201428 -0.0440614 0.136402 -0.0746015 -0.0619346 0.0580895 0.0197837 -0.0255628 0.0259564 0.0177788 0.0278909 0.141746 -0.00673072 0.131259 -0.151073 0.0147507 0.0992177 0.0485741 0.130863 -0.0193533 -0.0299363 0.0548994 0.00174772 -0.0301991 -0.0390056 -0.0256448 -0.0339682 -0.0152987 0.0249735 -0.355121 0.0884177 0.187436 -0.0293573 0.0282216 -0.024757 0.0571509 0.0639974 0.153066 -0.1078 -0.0180113 0.0153402 0.0238538 0.0530165 0.0485825 -0.0488708 0.0449919 0.000863606 -0.126998 -0.0816567 -0.0212231 0.0913935 -0.00125754 0.0275027 -0.0584892 0.0039394 0.116827 -0.0265962 0.00523673 -0.0243343 0.0375047 0.118893 0.143395 -0.0456812 -0.0478348 -0.0849775 0.0184329 -0.0251125 0.0914955 -0.0504738 0.0316922 0.00759535 -0.174746 -0.0960259 -0.0103082 0.158469 0.0321142 0.0210377 0.173436 -0.0542338 0.0242749 -0.018808 0.0348803 -0.0196507 -0.00575501 0.144387 0.148535 -0.0449239 -0.0379162 -0.100705 0.00401155 -0.050238 0.0976233 -0.0353412 0.0250187 0.0127958 -0.178614 -0.0958801 -0.00278459 0.207044 0.025298 0.00949865 0.193706 -0.0492208 -0.0301417 -0.00447742 0.0725652 -0.0189916 -0.0367419 0.12376 0.151199 -0.0518625 -0.0475371 -0.0861236 -0.0139342 -0.0254132 0.0920757 -0.0463131 0.0303545 0.0106717 -0.171014 -0.0976939 0.00535768 0.15621 0.0419245 -0.00304306 0.195947 -0.0623898 0.00239719 0.0367951 0.03632 7.30474e-05 -0.0137897 0.0688107 0.168316 -0.124055 -0.0148602 0.020366 -0.0271793 0.0564536 0.0447115 -0.0393299 0.0414338 0.0160272 -0.117127 -0.0821622 0.0151981 0.0880169 0.0156845 -0.0112877 -0.0275332 -0.00701935 0.0761512 0.103921 0.00866586 0.0161153 0.027064 -0.00933677 0.15019 -0.178671 0.0213026 0.113662 -0.061189 0.143277 -0.0355128 -0.00862974 0.0464759 0.0125658 -0.00748817 -0.0312202 0.0196621 -0.0411256 0.0107374 -0.0109328 -0.33702 0.0811858 0.139902 0.157403 0.03278 -0.00302042 0.0490236 -0.124177 0.102483 -0.037773 -0.0163729 0.0755875 -0.041732 0.11587 0.025119 0.0399094 0.0327872 0.0103092 0.0361199 -0.0139649 0.0136808 -0.0964432 -0.0677369 -0.0240707 -0.146549 0.0466848 -0.0771211 0.0712473 0.0217271 -0.0179697 -0.0448996 -0.246153 0.067031 0.0760622 -0.0514018 0.0602184 -0.0205366 0.105031 0.0656715 0.0930009 0.000791734 0.00768952 0.0744179 0.00897458 0.0142431 -0.126964 -0.085059 -0.0202701 0.0331742 -0.00668428 -0.212648 -0.0188219 -0.00697022 -0.0111791 -0.0877488 -0.29554 0.0540353 0.115037 -0.0577533 0.064714 0.00185317 0.0955344 0.0643019 0.122979 -0.0105185 0.0110671 0.0779718 0.0186942 -0.000588963 -0.0871386 -0.0864865 -0.00440055 0.0901508 -0.0192307 -0.238328 -0.0674845 -0.0154284 -0.00578054 -0.0809592 -0.253922 0.0582016 0.0903367 -0.0553191 0.0554547 0.0198931 0.101923 0.0731261 0.0892397 0.00147553 0.0113603 0.0702156 0.00771827 -0.0155905 -0.127393 -0.095135 0.0108502 0.0394565 -0.00892732 -0.199441 -0.094172 -0.00354356 0.000147306 -0.0877328 -0.129535 0.0874857 -0.0135057 -0.022803 0.0648893 0.0369938 0.107569 0.0391111 0.028775 0.0372101 0.00766325 0.0251197 -0.0185367 -0.017323 -0.0953017 -0.089404 0.0222252 -0.147443 0.0484044 -0.0450484 -0.0906589 0.0262144 -0.00776059 -0.0457592 0.1007 0.164221 -0.0724006 -0.0256473 -0.0364042 0.0253225 0.011944 0.0728047 -0.0456885 0.0533075 0.00713663 -0.104096 -0.020671 -0.0139441 -0.0324594 -0.0932572 0.0119529 -0.0461295 -2.62127e-05 -0.153206 -0.0765291 0.060158 -0.0129623 -0.154775 0.14304 0.165499 -0.0596216 -0.0171896 -0.064507 0.00228814 -0.0365445 0.0784486 -0.03075 0.0558983 0.00973946 -0.111789 -0.000936203 0.000594279 0.0329141 -0.118798 -0.00562971 -0.00488189 0.0360933 -0.26465 -0.0810712 0.0811592 -0.0182527 -0.160727 0.109085 0.177996 -0.0883241 -0.0192192 -0.0299809 -0.0223992 0.0120456 0.0609872 -0.0279502 0.0445324 0.0124496 -0.0974935 -0.0186383 0.0125251 -0.0405597 -0.107658 -0.0181682 -0.0267121 0.00221277 -0.191023 -0.0169835 0.0581307 -0.0212402 -0.116398 -0.20045 0.0569326 0.0595361 -0.0677622 0.0708032 -0.0183626 0.0533965 0.0688164 0.0359817 -0.0377525 0.0134673 -0.0351488 -0.0956866 0.00553134 0.040622 0.0617046 -0.00669245 0.135917 -0.0204821 0.165304 0.103849 -0.0265586 0.00338241 0.12717 -0.283186 0.0191374 0.108381 -0.081704 0.0851219 0.00197187 0.0405433 0.0727295 0.0811966 -0.0604139 0.00809155 -0.0416398 -0.0863651 -0.00128535 0.131626 0.121873 0.011494 0.21668 -0.0285821 0.206274 0.0734806 -0.0101719 -0.00110383 0.150394 -0.209954 0.0418852 0.0790354 -0.0756295 0.0621808 0.0204356 0.0514123 0.0831523 0.0169786 -0.0293425 0.00716301 -0.0422811 -0.0985361 -0.00919045 0.0497439 0.0764191 0.0285667 0.127378 -0.0260069 0.202907 0.0326258 -0.0290785 0.00215868 0.0872026 0.0274121 -0.0130884 0.0283546 0.0278586 -0.0153271 -0.116618 0.0151475 -2.76077e-05 -0.0329228 0.0248972 -0.0380989 -0.00737557 -0.0105881 -0.000371526 -0.0304294 -0.00604958 -0.00590315 0.0240679 0.0113398 0.0118432 -0.00947425 -0.0270926 -0.0112473 -0.0396743 0.0250764 -0.02151 0.00865659 0.0383538 -0.00492115 -0.102726 0.0265951 -0.00335368 -0.0462265 0.0555317 -0.0207506 0.0255674 -0.0261463 -0.0282765 0.0114812 -0.0359222 -0.00258456 -0.0323619 -0.0135052 -0.0196736 0.0257091 -0.0336483 -0.0178708 -0.0164982 0.0302373 -0.0182843 0.0153711 0.0489076 0.00658691 -0.0592654 0.0346285 0.00230521 -0.0324689 0.0373974 -0.0235146 0.00867955 -0.0353824 -0.0134506 -0.0356258 -0.0115824 0.0033898 -0.0310214 0.0107161 -0.051752 0.0133836 0.0229821 -0.0414045 -0.0183645 0.0167245 -0.00452811 -0.000950333 0.0387461 -0.0352125 -0.0529025 0.0351287 0.00635089 -0.0266628 -0.0131402 -0.0487706 0.0180815 0.0172845 0.00935553 -0.0390411 -0.0266801 0.0305809 0.048378 -0.0436483 -0.0272711 0.00141298 0.0103786 -0.0135995 -0.0237811 -0.00351386 -0.00458555 -0.00594287 0.00761948 -0.0213474 0.000229695 0.0098544 0.0309611 -0.0520796 0.0403896 -0.0369694 -0.0384329 0.00485042 0.00542807 -0.0237554 0.0300058 0.00935877 0.0552356 -0.0110501 0.00526473 -0.00812712 0.00408444 -0.0495022 0.00296554 -0.010815 0.000475537 -0.000997521 0.0126812 -0.0279614 0.0221176 0.0397744 0.0191661 -0.0130243 0.00104174 -0.0321136 0.00245307 -0.0075611 0.00694005 -0.0132252 0.0174064 0.0157551 -0.00626816 -0.0138248 -0.0347256 0.0164924 -0.0164002 -0.0175742 -0.00966423 0.0186166 -0.00114006 -0.0140977 0.0253469 -0.0143658 0.0252513 0.0354047 -0.0051823 0.000644951 -0.0196103 -0.0249398 -0.00896005 0.0179854 0.00161573 -0.00214094 -0.0138999 0.0287282 -0.0573495 -0.0273515 -0.0295221 0.0352321 -0.0174887 -0.00531988 -0.0142979 0.00122323 0.00164689 -0.00929003 0.0226629 0.0211439 0.0260738 0.00961682 0.0151451 -0.0122279 -0.027944 -0.0313118 -0.0139172 0.0109321 -0.00103396 -0.00417212 0.0223667 0.0446618 -0.0157869 -0.000507105 -0.0116582 0.0106067 0.00295456 0.00447962 0.0211703 0.00154786 0.015698 -0.00319055 -0.0162949 -0.0177213 0.0367112 0.0193508 0.0334619 0.0151149 -0.0202974 -0.0104477 5.99332e-05 0.0195852 -0.0307275 -0.00198655 0.0255808 0.0468746 -0.0230966 0.0128917 0.0361821 0.00156826 0.00820043 -0.027175 0.0556793 0.00454387 0.00109374 -0.0163059 0.0136774 0.0190547 -0.0466838 0.00977134 0.0173493 -0.00995811 -0.0319686 0.0361977 -0.010543 0.0109068 0.00207866 -0.00827679 0.0249733 -0.0499662 -0.0144765 0.00325086 -0.0001297 -0.0133242 -0.00756993 0.00329875 0.0323277 0.0213813 -0.00247568 -0.0179094 0.0208719 -0.0166866 -0.033077 0.0347677 -0.00382859 0.00174976 -0.0204218 0.0306138 -0.00711417 0.0149192 -0.00209649 -0.00461478 -0.0112728 -0.0378592 -0.0591507 -0.0247026 -0.000180529 -0.0389836 -0.0167822 0.0192447 -0.00725173 -0.00860242 -0.00208166 -0.0030327 0.0129443 -0.0299774 -0.020776 0.0394811 0.0199249 -0.0133426 0.00143468 0.0395353 0.00327965 -0.0115847 -0.00882454 -0.0136243 0.0200624 -0.0210274 -0.0106828 -0.0110118 -0.0150125 -0.0260598 -0.00576402 0.027097 -0.00305348 -0.00206501 -0.00830247 -0.00613112 0.0126656 -0.022239 0.00227987 0.00867497 0.0314481 -0.0530832 0.041425 0.0439687 -0.0388868 -0.00104381 -0.00747956 -0.0214095 0.0342889 -0.0115878 0.048233 -0.00814509 0.00440709 0.01273 0.0296798 0.0412439 0.00974592 0.0169549 -0.00930882 -0.00036002 0.0499684 -0.03282 0.0597799 0.0313762 0.0077923 -0.0283372 -0.0118469 0.0521302 0.0167597 0.0112082 -0.0148678 -0.0357326 -0.0175298 -0.0369695 0.0398358 -0.0422835 -0.0171181 -0.0139033 0.0171222 -0.00108308 -0.0221037 0.0299028 -0.0207286 0.0207464 0.0564854 0.00985033 0.0655072 0.0301922 0.00139407 -0.0313721 0.0409572 0.0264389 0.00693519 -0.0420995 0.0054672 -0.0277277 -0.00699982 -0.00524224 -0.0390598 0.00935654 -0.0305434 -0.0387834 0.0469189 0.0145507 -0.0207482 0.0248797 -0.0233093 0.0140026 0.0474278 0.00132322 0.109627 0.0199511 -0.00260787 -0.0446803 0.0588598 0.0196933 0.0246208 -0.0303063 0.0198064 0.0177503 -0.0330285 0.00165413 -0.0385922 -0.0161154 0.00286858 -0.0327882 -0.0176871 0.0222968 -0.0200058 0.0264192 -0.0156876 0.0330192 0.0409681 -0.00865422 0.125284 0.00867037 0.000968922 -0.0332823 0.0282101 0.0365104 -0.00869537 -0.0126318 -0.00831822 -0.0251372 -0.00173311 0.0080577 0.0190841 0.00868326 0.00726763 0.0131514 -0.0183377 0.0114624 -0.0433982 0.00260664 0.0242466 0.0372939 0.0207632 0.011814 -0.00161973 -0.0230642 -0.00146857 0.00190984 -0.00336304 0.0163236 0.0220834 -0.0058873 0.00899081 0.0229783 -0.0269956 -0.0290421 0.00730186 -0.0504315 0.0196674 0.0231227 0.0245979 0.0465947 0.00132871 -5.87347e-08 0.0170482 0.0226178 -0.0302451 0.00538248 -0.00322504 -0.0134065 0.00806443 0.01126 0.0484036 0.0232343 0.00138545 0.00900316 -0.0223632 0.0185225 0.00434064 -0.0571438 0.0257255 -0.0604833 0.0330113 0.0025585 0.0196923 4.66916e-05 0.0172459 -0.000229285 0.0180945 0.0153504 -0.0295397 0.00559383 -0.0158594 -0.0057665 -0.00397692 0.00599282 0.0262031 0.0232804 0.00992468 0.0107109 -0.003406 0.00349925 0.00660406 -0.0520433 0.0301716 -0.024715 0.0384089 0.00295054 0.0214589 -0.00305967 0.0104632 0.00332418 0.0226076 0.020475 -0.023869 0.0145139 -0.0274111 -0.0124332 -0.0116403 -0.00928763 -0.00412077 0.0230617 0.00869163 0.00781382 0.011678 -0.00205015 0.00772105 -0.0391826 0.0144205 0.00585546 0.0362022 0.0041016 0.0122953 0.0116486 0.00236408 0.00845765 0.0222498 0.0288911 -0.00610846 0.0176229 -0.0428802 -0.0281178 -0.0149461 -0.00721281 -0.0393959 0.0133025 0.00117564 -0.00473241 0.0265646 0.0197933 0.00498041 -0.0316734 -0.00190742 0.0178226 0.0207658 0.0132347 -0.00509347 0.0335699 -0.00705869 0.0108978 0.0247946 0.0224708 -0.0161377 0.0244693 0.0349771 -0.0338337 -0.00555124 -0.00272064 -0.0449577 -0.0188739 0.00831066 0.00706804 -0.0241377 0.00964204 -0.00298331 0.0364821 0.0121638 0.0183789 0.0144601 -0.00247779 -0.0353627 -0.0267493 -0.0123934 0.00534094 0.0244683 0.0160171 -0.0308664 0.0192685 0.0250881 -0.0156485 -0.00461133 -0.00564177 -0.00897358 -0.0293969 0.0133049 0.0178814 -0.00935894 -0.00917404 -0.00106918 0.0443505 0.025706 0.00638855 0.0228634 0.0120776 -0.00530946 -0.015564 -0.00251989 0.00125193 0.0192351 0.0130076 -0.0328777 0.00856725 0.0188895 -0.00662316 0.000661341 0.00861222 0.0220343 -0.0285021 0.0127715 0.0192224 0.00496509 -0.00184316 -0.00345723 0.0582175 0.0401926 -0.0240298 0.0250216 0.014048 0.0130117 -0.00702239 0.00589705 0.00125416 0.0173839 0.0219747 -0.0305144 0.00628723 0.00798101 -0.0115683 0.0104143 0.0129176 0.0454016 -0.027207 0.0024582 0.0159692 0.0227244 0.0145286 -0.00680678 0.0656358 0.034603 -0.0605721 0.0218333 0.0103758 0.0134048 -0.00943899 0.0126109 0.00380766 0.0233738 0.0367406 0.0235204 0.011454 0.00541378 -0.0197883 -0.000642334 0.00247239 -0.00418838 -0.0186702 0.0217004 0.000489451 -0.0120089 0.0197699 -0.0349168 0.0347374 0.0123404 -0.0531806 0.0239419 -0.0113364 -0.00259128 -0.0564466 -0.00594361 0.00272524 0.0124873 0.0107053 -0.00145523 -0.0119147 -0.0159528 -0.00786666 -0.00325148 0.0138408 -0.0169433 0.0187945 0.0115926 0.0367643 0.00574025 0.0188116 0.0269558 -0.0370582 -0.0160968 0.0363786 -0.0881007 0.00782722 -0.0216296 0.00150772 -0.0157142 -0.00320839 0.0053184 -0.0139646 -0.029018 0.00544106 0.00621144 0.0110491 -0.00137033 -0.0101007 0.0178069 0.0367168 -0.00603128 0.0176312 -0.0032427 0.0254787 0.00322458 -0.022304 -0.0252037 0.0314854 -0.0463567 -0.0159936 0.00561163 -0.0142514 0.0095014 -0.0175804 -0.00163073 -0.0312596 -0.0257027 0.0286874 0.0180278 0.00761304 -0.00147869 -0.00629914 0.0167018 0.0277501 -0.0144367 0.0132624 -0.00735872 0.0165742 -0.0226585 -0.0142845 0.00233502 0.0195798 -0.0145667 -0.0144995 0.0143654 -0.00208785 0.00626155 -0.0270775 -0.00243301 -0.0311095 0.00782375 0.037779 0.0223512 -0.0138004 -0.00464255 0.033238 -0.0295041 -0.00337631 -0.00524769 -0.0016384 0.00684907 -0.0218576 -0.0416006 -0.00861323 0.0351724 0.0224115 0.0054272 0.00755263 0.0104334 0.0366812 -0.0255834 -0.00898944 -0.0148779 -0.0320478 0.0261956 0.0378284 0.019747 -0.0021351 -0.0348118 0.0206718 0.0424134 -0.012057 -0.0462803 -0.089171 0.0179063 0.0284436 -0.0294157 -0.0172112 0.0025626 -0.000162965 -0.0503463 -0.0673205 0.00199161 -0.00948106 0.0011972 -0.0170547 -0.00890494 -0.02676 -0.00162124 0.0309428 0.00856452 -0.000948602 -0.0213857 0.00406185 0.00226547 0.0047265 -0.0155675 -0.0314411 0.00367033 0.00855272 -0.0165632 0.000740267 -0.000661366 0.0172984 -0.0151862 -0.0112589 -0.00636838 0.00195986 -0.0077073 -0.0225954 -0.00215357 -0.0159332 -0.037815 0.00827905 0.00529287 -4.55576e-05 -5.36064e-05 -0.000862579 -0.0307101 0.0161933 0.0205346 0.0234467 -0.00065335 -0.0278179 0.0217847 0.00350031 0.0189532 0.0128873 0.0135332 0.0378703 -0.00467868 0.00245196 0.00326011 -0.0131848 -0.00714007 -0.0344548 -0.0166481 0.0317218 -0.0174931 -0.000982725 -0.0171131 0.00800575 -0.00474898 -0.00676017 -0.00990711 -0.0223688 0.00224099 -4.76883e-05 -0.0224847 -0.0101036 0.00999719 0.0206811 -0.026024 0.00950423 -0.0159539 0.0104644 -0.00357635 -0.00588447 -0.0140864 -0.0388198 0.0139937 0.0368383 -0.0282502 -0.00113062 -0.0311 0.0234232 0.0357061 0.0109901 -0.0406875 -0.0797253 -0.0154154 0.0190562 -0.0356068 0.00927137 0.0138634 0.0051206 -0.0864222 0.034966 -0.00124956 0.015242 0.00701903 0.00788879 0.0229694 0.0370801 -0.0135885 -0.0338016 -0.0051656 0.0106869 0.0217458 -0.0239924 0.0411185 0.0264215 0.0353595 0.0229232 0.00905016 -0.00510205 -0.0157413 -0.0459273 -0.0144414 0.0541109 -0.0434854 0.0227412 -0.0563196 -0.0161573 -0.00699276 -0.00521301 0.0144402 0.0176984 -0.0159958 -0.0148041 -0.00378072 0.0104723 0.0156391 0.02952 0.0265646 0.0121438 -0.00852976 -0.00324959 -0.000697284 -0.0108453 0.0104523 -0.0451762 0.011442 0.00460409 -0.0184482 -0.00320848 -0.00386019 -0.0142597 -0.00804977 -0.00368761 0.00347803 -0.0149901 -0.0142758 0.00708994 -0.00765883 0.00723175 -0.00589876 0.0664964 -0.00464493 0.00600912 -0.0414176 -0.0110046 -0.00470776 -0.0169413 0.00720249 -0.0316468 -0.0102349 -0.0438378 0.0145892 -0.0239826 0.0493027 0.00017133 -0.0237734 0.000789289 0.00523088 -0.0170594 -0.000945896 0.0130643 -0.0421853 -0.00116575 -0.00676171 0.0188772 -0.0443943 0.0174125 0.0257523 -0.058675 -0.0227517 0.0505644 -0.0218771 0.0127709 -0.0182096 -0.0232091 0.0547639 -0.00531633 0.0803038 0.0472703 0.00815523 -0.000129574 -0.00330964 0.000336811 0.000433806 -0.0109743 -0.0267685 -0.00980541 -0.00655821 0.0210445 -0.0251472 0.0252933 -0.000295625 -0.0276851 -0.015486 0.0361299 -0.022 -0.00166715 -0.0263838 0.00388354 0.0183458 0.015843 0.0395343 0.0270227 -0.0200106 -0.000159558 0.00680018 0.00327232 0.00250421 -0.0141299 -0.0159429 -0.0060797 -0.00309859 0.00524727 0.0086914 0.0208738 0.00961212 -0.00310327 -0.00281621 0.0174315 -0.0205978 -0.0248843 -0.0190064 0.0209737 -0.00799592 0.0197021 -0.00598401 0.0081263 -0.0222327 0.00280819 0.00608393 -0.0222184 -0.00793186 0.017857 0.0352235 -0.00442094 -0.00343942 0.0232998 -0.0471299 -0.0205685 0.0259878 -0.0520116 0.0201337 0.0441712 -0.026839 -0.00365885 -0.00949079 -0.0211212 0.035574 0.0347309 0.0383666 -0.0795165 0.0079087 -0.00208469 0.0038958 -0.0187863 -0.0205734 0.00892721 0.00540187 0.00703845 -0.0036447 0.069375 -0.00637164 -0.00732144 -0.0403675 -0.00318356 0.00508427 -0.022976 0.000914162 0.0400241 0.000101095 -0.041022 -0.0107984 0.0269885 0.0353583 -0.0222454 -0.0253139 -0.0034948 0.0152064 0.0149715 -0.0218317 -0.0138269 0.00471214 0.0113749 0.0182741 0.0318822 0.0257448 -0.0151221 -0.00553631 0.00489155 0.00216976 -0.0156001 0.00394423 0.0511952 0.02087 0.00673329 -0.0252258 -0.0111127 -0.00220539 0.0176777 -0.0112751 0.00995735 0.0242205 0.0356096 -0.020003 -0.033198 0.00861089 0.0117054 0.0248808 -0.0212503 0.0414774 -0.0326378 0.0390079 0.0314101 -0.00602958 -0.0102186 -0.0209618 0.0456487 -0.0057749 0.0548797 -0.0289584 -0.0476043 -0.0458587 0.0466571 -0.0123001 0.00203614 0.00806373 0.000429262 -0.00439612 -0.0123518 0.0159852 -0.0063323 0.000225431 0.00849893 0.00800719 -0.0244469 0.0129256 0.00482182 0.00403185 0.0117124 -0.0259151 0.0267974 -0.0102627 0.0217525 -0.0016651 -0.0211385 -0.0156613 -2.12537e-05 -0.0253931 0.00193498 -0.00233381 -0.00343423 -0.00654232 -0.00793892 0.0239568 -0.011435 -0.00333912 0.0250219 -0.0270216 -0.0276399 0.00087481 -0.0205228 0.0146724 0.0301647 -0.0265822 0.00707076 -0.0182157 0.00481186 0.0180717 -0.00299519 0.0143232 -0.0405018 -0.0221967 -0.0150049 -0.00463205 0.0103389 -0.00224819 -0.0219046 0.00341211 -0.024304 0.0192828 -0.0148682 -0.0297067 -0.0067571 0.0266896 0.0442923 -0.017049 0.0296215 0.012389 0.0272248 0.0337575 -0.00499901 0.00950979 0.0262716 0.00105008 0.0192935 0.000591676 -0.0157511 -0.0269022 0.00210891 -0.0208009 -0.0209582 0.0282483 0.000176534 0.0149703 -0.000851344 0.00340113 0.0091597 -0.0143493 0.0259244 -0.00133224 0.0294053 0.040104 0.00693521 0.0488204 -0.017001 -0.0188171 0.0130672 0.0353584 -0.0373054 0.0356294 -0.0186626 -0.0231609 0.00823274 -0.0106285 -0.0026947 0.0309977 0.00825537 -0.0237065 0.0176644 -0.00454995 0.0185703 -0.0267788 0.00992344 0.00546774 0.0170086 0.0257136 0.00387563 -0.000972652 0.00562191 -0.0342314 0.0132373 0.032511 -0.0424645 0.0243339 -0.00508352 -0.0285878 -0.0138044 0.00150163 0.012248 0.018895 -0.00344108 -0.0350309 -0.00534275 -0.0142731 0.0275296 -0.0288238 0.00488282 -0.00159744 0.0243018 -0.0371924 0.020981 -0.0420389 0.0496911 -0.0363829 0.0078249 0.0160022 -0.0159068 -0.013584 -0.0155925 -0.0217096 0.00258875 -0.0259681 -0.00314337 -0.0364291 0.00879144 -0.0209937 0.0217529 -0.0102131 -0.0203872 -0.023469 0.015422 0.00400608 0.01175 0.0202726 -0.0113763 0.00465561 0.00845252 -0.0249153 -0.0238927 0.0403827 0.0342513 0.0291563 -0.0132712 -0.026616 -0.00182608 -0.0338191 -0.0223968 -0.0336031 0.000403711 0.0176808 0.00226042 -0.00148271 -0.0117084 -0.0122586 0.0299834 0.0112587 0.024937 0.0350937 -0.0115217 0.0522605 -0.0142551 -0.0101641 -0.0182259 0.0417282 0.0282467 0.0423132 -0.0117309 -0.0055219 0.00687854 -0.0122579 -0.0231812 -0.0171829 -0.0255365 0.0235094 -0.0135561 -0.0337604 0.00143573 0.0272359 0.0462358 0.022871 0.024653 0.00885212 -0.0300864 0.0368496 -0.00286071 0.0238079 -0.0229478 -0.0160845 -0.00885009 0.00725314 0.0112122 -0.0112545 -0.00801241 0.00600479 -0.00481403 -0.0383111 -0.0223814 0.00264842 -0.000181449 -0.0397009 0.0156752 -0.000793956 0.0404795 -0.0277392 -0.0362284 -0.000839255 -0.0246079 -0.01717 0.0229791 0.0693266 0.00488397 -0.0183379 0.00940666 0.00207167 0.0133963 0.00389434 0.003774 -0.02031 -0.0147691 -0.0405193 -0.0310225 -0.0238327 0.0144042 -0.0175638 -0.00257174 -0.0320622 0.0185571 0.000771477 -0.0271872 0.0172295 -0.0226741 -0.0758449 0.0101775 0.0643564 -4.67068e-06 -0.0397734 0.0375859 0.0231904 0.022212 0.0121642 0.0013019 -0.0434986 -0.0285534 0.0138526 -0.0194632 -0.00785841 -0.00198142 0.0150165 0.0097078 -0.0396743 0.00236763 -0.0207966 -0.0042718 0.0121448 0.0198176 -0.088845 -0.019135 0.0672757 0.00940189 -0.0625806 -0.0227298 0.0481039 0.00954573 0.0027396 0.00928428 -0.00488901 -0.0140518 0.0171752 -0.0307972 -0.027539 0.0104978 -0.0125783 8.25071e-05 -0.0362179 0.0146433 0.0038197 -0.021356 0.0212311 0.0217279 -0.0832571 0.00744687 0.0566705 0.0293728 -0.0398776 -0.0119581 0.0165906 0.00821574 -0.0113033 -0.00426545 0.0183996 -0.00293123 0.0192407 -0.0219681 -0.000671384 -0.00228309 -0.0362332 -0.0187203 -0.00408347 0.0374762 0.0328277 -0.0311915 0.00229401 0.0182988 -0.0232507 0.0204955 0.0622397 0.0322357 -0.00913044 0.00231844 -0.00358976 -0.0346381 0.000516957 -0.0197344 -0.00610732 0.0220902 0.0497028 -0.0117691 -0.0105533 -0.00434235 -0.00398172 0.00431035 0.0298948 0.0114775 -0.00148292 -0.00887872 0.0372096 0.00892815 0.00195862 0.0211578 -0.0223067 -0.0187664 0.0130361 0.0193007 0.00582366 0.0024911 -0.00492825 -0.0581612 0.0159321 0.0305153 0.007886 -0.00997615 -0.0152625 -0.000115162 -0.0210275 -0.0280909 0.039095 0.0129654 0.0207689 -0.0220829 -0.0493053 0.00900736 -0.0332882 0.0262544 -0.0178172 -0.0401728 -0.000972545 0.0326784 -0.0180856 -0.0315039 0.000513317 -0.0266568 -0.0209217 0.0192719 -0.0621097 -0.0088728 -0.00635576 -0.00274194 -0.0103076 -0.00929244 0.0331162 0.0178731 0.00875491 -0.0157571 0.0344819 -0.0142581 0.00886203 0.0251045 -0.0313306 0.00464916 -0.00973102 -0.0118948 0.0117956 -0.018752 -0.00880334 -0.0055492 -0.000188425 0.00446994 -0.0658704 -0.0135644 0.00687325 0.00347546 -0.0217385 0.00533607 0.011854 -0.0101353 -0.000472104 -0.00568567 0.0372992 -0.00888629 0.0366767 0.0108157 0.0200267 -0.0032851 -0.0439629 0.00539382 0.0149147 -0.0201858 0.00299499 -0.0032378 0.0295267 0.0160366 0.010163 -0.0276486 0.0035851 0.0275216 0.0024122 -0.0539893 0.0199428 -0.0663866 0.00565707 -0.00348793 0.0614445 -0.00913459 0.0616426 0.0155301 0.0210456 -0.0285734 -0.0597928 -0.00201506 0.0460892 -0.0213274 -0.00811407 0.000693287 0.0126509 0.00755191 0.0413976 -0.0160406 0.00286548 0.00254504 -0.015552 -0.00840821 0.00902302 -0.0152201 0.00298187 0.000765579 0.0385387 0.0130065 0.0301641 0.00715726 0.0185588 0.00413042 -0.0273007 0.0154608 0.00917551 1 24 6 47.4795 17.4175 7.58967 5.30304 4.64879 4.58197 3.98429 3.13323 2.77267 2.31506 2.09131 1.79823 1.5475 1.46697 1.11273 1.06833 0.999237 0.888901 0.818852 0.743156 0.728566 0.598271 0.589845 0.507923 198 1 6 -20.6547 -20.0519 -19.1146 -17.7568 -15.6469 -12.4006 -8.27017 -3.55056 1.65875 6.75338 11.0958 14.7165 17.3322 18.7221 19.3316 19.5157 19.3623 -16.9434 -14.6923 -11.7473 -8.64008 -5.61118 3.24342 6.14406 9.21432 12.2557 14.7675 -0.800008 -0.571382 -0.341526 -0.111056 -3.34691 -1.6415 0.142254 1.89493 3.5165 -12.5316 -10.6698 -8.3451 -6.35058 -8.3556 -10.5048 4.83678 6.66716 8.99246 11.0209 9.08377 6.92444 -6.63855 -4.73902 -2.32888 0.427259 3.15408 5.72158 7.86034 6.14905 3.75933 0.883179 -2.0422 -4.62825 -2.38864 0.55887 3.50364 3.65722 0.689237 -2.33557 -5.64822 -0.423649 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.90089 1.2941 1.35258 1.04463 0.412997 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 21.3079 20.8425 20.4846 18.3869 13.4633 7.99404 3.29433 -0.880153 -4.53572 -0.807894 3.41769 8.15704 13.6544 18.5937 20.7063 21.0748 21.5385 0.166523 -1.56921 -2.95979 -4.29633 -5.52226 -5.43542 -4.17859 -2.80935 -1.38764 0.371491 -4.9545 -7.76035 -10.6633 -13.4075 -6.47077 -7.26957 -8.01839 -7.21848 -6.40175 -0.905324 -1.10649 -1.2279 -0.977391 -1.10156 -1.09011 -0.887733 -1.11779 -0.968074 -0.742362 -0.948989 -0.987214 -2.74685 -4.89305 -6.54708 -8.22771 -6.48681 -4.80547 -2.63884 -3.93286 -5.28293 -6.67982 -5.34336 -4.02161 -5.20395 -7.41824 -5.14457 -4.49552 -6.42523 -4.5521 132 1 6 -20.6517 -20.0489 -19.1116 -17.7538 -15.6439 -12.3976 -8.26721 -3.5476 1.66171 6.75634 11.0988 14.7195 17.3352 18.7251 19.3346 19.5187 19.3653 -16.9404 -14.6893 -11.7443 -8.63712 -5.60822 3.24638 6.14702 9.21728 12.2587 14.7705 -0.797051 -0.568425 -0.338569 -0.108099 -3.34395 -1.63854 0.145211 1.89789 3.51946 -12.5286 -10.6668 -8.34214 -6.34762 -8.35264 -10.5018 4.83974 6.67012 8.99542 11.0239 9.08673 6.9274 -6.63559 -4.73606 -2.32592 0.430216 3.15704 5.72454 7.8633 6.15201 3.76229 0.886136 -2.03924 -4.62529 -2.38568 0.561827 3.5066 3.66018 0.692194 -2.33261 -5.64822 -0.423651 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.900888 1.2941 1.35258 1.04463 0.412995 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 3 1 6 0 0 0 3 1 6 0 0.7 0 3 1 6 0 -0.7 0 66 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 66 1 4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 66 1 4 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 3 11 11 3 2 0 -13.6353 3.14094 11 11 5 0.562951 0.492231 0.392071 -0.324283 -0.732065 0.239214 1.30495 0.695096 0.142153 0.00318808 0.0878815 0.196695 -0.12213 -0.30256 -0.777999 -1.46962 -0.45117 0.674224 0.193465 0.180275 -0.195511 -0.155063 0.0370602 -0.261012 -0.516493 -0.959312 -1.89019 -0.968075 0.528224 0.333006 0.157199 -0.0755818 -0.341383 -0.0147762 0.201086 0.172955 -0.606819 -2.51999 -1.36397 0.779582 0.436482 0.278687 0.0614129 -0.719836 0.199226 0.354085 0.619501 0.0795542 -2.1933 -1.60106 1.06143 0.989063 0.62345 0.2095 -0.678146 0.0557605 0.100803 0.545488 0.524955 -0.757321 -1.69603 1.04211 1.18857 0.557012 -0.0261993 -0.560888 0.221317 -0.0769839 0.351237 0.325146 -0.42901 -1.53677 0.777956 1.3965 0.28547 0.0813953 -0.231373 0.0429112 -0.166692 0.0836791 0.182849 -0.335867 -1.31797 0.629751 1.24243 0.198625 0.110102 -0.0755015 0.0712738 0.0181047 0.140503 0.246152 -0.143833 -1.2022 0.378632 1.05806 0.16277 0.165563 0.491056 0.22626 0.0296308 0.272444 0.281704 -0.185567 -1.03696 0.00500791 1.07354 0.230438 0.259901 1.02805 -0.0381257 0.0485562 0.262949 0.321603 -0.57394 -1.31668 -0.0903771 0.853009 -0.0354205 0.202962 1.01573 2 1 -9.05815 0.61762 11 11 5 0.0689783 -0.760532 -1.09798 -1.55961 -1.47451 0.638346 -0.427284 -0.997845 -0.880499 -0.136217 -0.123767 0.322628 -0.145603 -0.923304 -0.632276 -0.996987 0.997823 0.167381 -0.604699 -0.575275 -0.525191 -0.0140216 0.287961 -0.0149136 0.582554 -0.0644713 -1.13755 1.23398 0.509396 -0.33827 -0.645289 -0.111853 -0.122093 0.213281 -0.0445885 0.666523 0.728613 -0.594029 1.29276 1.13703 -0.327901 -0.592847 -0.445117 0.314208 0.259235 -0.100075 0.172972 0.65593 0.134507 0.682005 1.43111 -0.298955 -0.448849 -0.135322 0.0115509 0.0260471 -0.217702 0.296633 0.0331045 0.563748 -0.0231396 1.23548 -0.12579 -0.578585 0.0734506 -0.00397352 -0.0299136 -0.687818 -0.53108 -0.173942 -0.120995 -0.212744 1.00083 -0.0508785 -0.604275 -0.355296 0.145164 0.177773 -0.250231 -0.343558 -0.298445 0.357945 0.168354 0.735727 0.0253965 -0.388689 -0.174296 0.00939351 0.166108 0.0120202 -0.224078 -0.182757 0.125496 0.638644 0.79877 -0.148197 -0.350518 -0.170496 0.296616 0.190558 -0.296435 0.0150429 -0.320795 0.183853 0.697746 0.841578 0.20407 -0.650778 0.264605 -0.229034 0.307266 0.264758 -0.00153309 -0.0260586 -0.0857253 1.4054 1.15877 -0.375947 -0.28739 0.526211 0.36342 2 2 -11.1942 1.12721 11 11 5 0.850805 1.11331 0.83962 0.376658 -0.391734 -0.846935 0.192347 0.228719 0.609958 0.637235 0.422163 0.658624 0.524813 0.591536 0.420343 -0.652457 -0.51067 0.0460558 0.131282 0.537033 0.334666 0.481885 0.083679 0.481217 0.510471 -0.0883782 -0.324968 -0.922688 -0.388825 -0.0933408 0.213931 0.203926 0.765864 0.0428679 0.307726 0.416315 -0.0759231 -1.61749 -1.8092 0.219446 -0.336039 0.0330768 0.365533 0.539551 -0.0453459 0.556202 0.409882 -0.0713934 -1.61405 -2.16462 0.193524 -0.121459 0.291805 0.201398 0.0230402 -0.19893 0.511105 0.722231 0.659687 -0.903782 -2.85977 0.0534132 -0.297373 0.292146 0.451234 -0.296387 0.131981 0.114702 0.772053 0.667495 -0.0334725 -2.53752 0.137418 0.0706291 0.21924 0.595777 -0.264167 -0.126654 0.161345 0.38434 0.869435 -0.00464406 -2.28259 0.0233325 0.383085 0.102592 0.440085 -0.552333 -0.0340826 0.208388 0.627228 0.845214 0.35783 -1.5144 0.113296 0.0546597 0.0206728 0.00571974 0.34463 0.0152189 -0.114083 0.37748 0.855133 0.366994 -1.24847 -0.743524 -0.0353565 -0.0543381 0.57492 0.145713 -0.421038 -0.022359 0.430458 1.29856 0.362739 -1.36946 -0.68666 -0.311119 -0.404454 -0.187383 -0.0449517 3 11 11 3 2 0 -16.1069 1.87309 11 11 5 0.741145 0.564588 0.219541 -1.07618 -5.01346 -0.680434 2.27145 1.65219 0.518754 -0.518361 -1.90616 0.0204504 0.0951715 0.213454 0.0533367 -2.16324 -0.227446 1.81986 0.827795 0.376413 -0.0630161 -0.40794 -0.16925 0.0451727 0.428464 0.213028 -1.49722 -0.07303 1.61622 0.413164 0.183164 0.0107978 -0.0670918 -0.074239 0.0344292 0.231113 0.225069 -1.31926 -0.475791 1.3857 0.298118 0.0191349 0.333622 0.416606 -0.136905 0.314948 0.16884 0.0296612 -1.13764 -1.05277 1.2151 -0.0306573 -0.115124 0.300244 0.873056 -0.0219887 -0.131813 0.136746 -0.241183 -1.00793 -1.21705 1.06748 -0.118415 -0.376924 0.0993 0.627232 -0.265421 -0.234053 -0.243841 -0.422629 -1.14936 -1.19289 1.0006 -0.14459 -0.795968 -0.0226709 0.511354 -0.0550007 -0.28648 -0.0808295 -0.050981 -0.756402 -1.35247 0.718128 -0.0172909 -0.781015 -0.222539 0.178562 0.0937668 -0.375344 -0.123843 0.123164 0.170388 -1.02229 0.119254 0.281942 -0.56934 -0.367177 0.174262 0.247565 -0.262006 -0.00953286 0.727465 1.22682 0.295009 -0.358019 0.630614 -0.110749 -0.391754 0.215366 0.577184 -0.0617496 0.237425 0.906912 2.02446 1.47618 -0.52038 1.3307 0.344637 -0.397657 0.292555 2 1 -8.73878 0.58963 11 11 5 -0.482705 -0.185649 0.0194465 0.771042 1.06325 2.74206 -0.265583 -1.78051 -0.948753 -0.0279063 0.10234 -0.310283 -0.661672 -0.379352 -0.296577 -0.405262 1.09676 0.0786667 -1.2356 -0.489327 0.116184 0.196116 0.286744 -0.712002 -0.600387 0.339116 0.430113 0.567946 0.121868 -0.931354 -0.282245 0.201094 -0.162796 -0.262593 0.193341 -0.0816918 -0.0922824 0.583904 0.469972 0.626596 -1.07638 -0.0631848 0.17599 -0.0874715 -0.0365396 -0.221415 0.00569538 0.282169 0.96325 0.272654 0.507293 -1.14117 -0.00410808 0.539332 -0.499735 0.20166 -0.0254002 -0.335921 -0.203528 0.661554 0.877723 0.491417 -0.792066 0.226098 0.901583 -0.17643 0.4166 0.227489 -0.152784 0.0781959 0.537611 0.906405 0.691537 -0.699815 0.419543 0.986261 -0.184885 -0.152316 -0.0180548 0.390109 -0.240632 0.406967 0.777511 0.191537 -0.737817 0.300597 0.341156 -0.0139963 0.326425 -0.224862 -0.126235 0.396722 0.245434 0.269464 0.172224 -0.679293 -0.191766 0.397694 0.253113 -0.0370105 -0.0438305 -0.412971 -0.108225 -0.255823 0.166267 -0.156659 -0.928162 -0.7726 -0.154487 0.0484807 -0.0350814 -0.0707909 0.246087 0.283413 -0.546268 0.817698 0.471565 -1.32848 -2.01832 -0.88412 -0.445841 2 2 -10.8088 0.460651 11 11 5 0.779964 1.29002 0.711287 0.100068 -3.1762 -0.276496 0.696481 0.716695 0.762984 0.250037 -1.2455 0.449135 0.719271 0.952608 0.186268 -1.51613 -0.713959 0.519636 0.356005 0.765639 0.321466 -0.839306 0.211209 0.53243 0.966215 0.831461 -1.39663 -0.857193 0.453462 0.245451 0.326669 0.349189 -0.557564 0.259371 0.744301 1.12085 1.24331 -1.00972 -0.878839 0.581172 0.150518 0.324854 0.665456 -0.149828 0.116616 0.498039 1.25532 1.04777 -0.646149 -1.44751 0.598523 0.230673 0.219665 0.473515 0.33875 0.274 0.496422 0.978706 1.40503 -0.209291 -1.73277 0.137889 0.0886192 -0.00133869 0.214608 -0.0150161 -0.252134 0.175712 0.429826 0.832413 -0.00755879 -1.17756 0.689913 0.199801 -0.319247 0.173718 0.361726 -0.360862 -0.239084 -0.172248 0.149311 -0.256863 -0.992441 -0.155546 0.198739 -0.42516 0.52425 0.056114 -0.318597 -0.666665 -0.357386 -0.339375 -0.12704 -0.54817 -0.507908 0.170435 -0.45532 0.0192574 0.0933175 -0.26719 -0.626549 -0.677554 -0.355282 0.149023 0.231993 -1.25598 -0.106769 -0.739526 -0.18355 -0.398145 -0.314602 -0.46169 -0.532385 -0.015487 0.913532 1.18762 -0.62273 -0.433049 -0.781217 -0.814557 -0.579355 3 11 11 3 2 0 -18.1072 1.34431 11 11 5 0.324141 0.481642 -0.414163 -2.28603 -3.05116 1.20808 0.860287 0.640869 0.174653 0.213281 0.619951 -0.267823 -0.0464482 -0.14587 -1.05612 -1.75695 0.643617 0.0780012 -0.298071 -0.138896 0.189658 0.719397 -0.268037 -0.211941 -0.193747 -0.29313 -1.20702 0.0887586 0.182574 -0.634148 -0.267872 -0.118308 0.565791 -0.0393833 -0.329502 0.159374 0.331373 -0.144444 -0.688035 0.406886 -0.631433 -0.438186 -0.323828 0.470982 -0.0548434 -0.0502239 0.142334 1.1885 1.29059 -1.52578 0.684512 -0.315801 -0.355081 -0.342556 0.307139 -0.118313 0.128136 0.677546 1.70369 2.23797 -2.04742 0.838449 -0.143987 -0.36979 -0.584799 0.249218 0.218864 0.125135 0.667713 1.71069 2.06524 -1.82536 0.563741 -0.0249182 -0.359988 -0.582636 -0.0810253 -0.24067 -0.386916 0.156453 0.561012 0.889778 -1.67873 0.339268 0.157473 -0.359594 -0.641149 -0.087588 -0.395764 -0.0756676 -0.0177051 0.265213 0.237116 -1.86932 -0.226201 0.884045 0.0380085 -0.480637 -0.0731903 -0.0140275 0.0235361 -0.32767 0.281089 -0.197077 -1.74193 -0.82508 1.92459 0.782734 0.0963541 0.301733 0.988498 0.880873 0.371879 -0.323471 -0.592939 -2.56024 -2.67392 3.39025 2.0402 0.97064 1.08301 2 1 -9.2802 0.772177 11 11 5 -0.261046 -0.337901 0.237599 1.24934 1.43584 0.902528 -2.14246 -0.886132 0.516697 0.416566 -0.523459 0.048229 -0.135138 -0.377623 0.118903 0.487644 0.587311 -1.23381 0.0641191 0.679548 0.250353 -0.649806 -0.0644444 -0.30479 -0.0863463 0.512375 0.551487 0.0758219 -0.650413 0.0907567 0.595023 0.354954 -0.186011 -0.306579 0.0825959 0.327965 0.447237 1.03199 -0.19818 -0.298482 -0.334147 0.195445 0.34893 -0.322644 0.0578192 -0.4567 -0.0515619 -0.425812 0.549603 -0.662892 -0.171931 -0.634103 0.0782271 0.264428 -0.149286 -0.177095 -0.101011 0.209598 -0.386405 0.208557 -0.525715 -0.406673 -0.465081 -0.143002 0.0685393 -0.0635496 -0.155882 0.371187 0.390455 -0.344517 0.223667 0.97293 -0.575815 -0.608905 -0.0728166 0.110925 -0.31998 0.112047 0.183991 0.21569 0.0767636 0.227155 1.25861 0.409422 -0.593365 -0.109863 0.0550365 -0.084807 0.0505928 0.145224 0.565626 0.286208 -0.0785074 1.31216 1.04928 -0.728403 -0.353387 -0.165323 -0.296061 -0.0612951 -0.307468 0.15318 0.015273 -0.180171 0.448097 1.59703 -0.325212 -1.02305 -0.200845 -0.234265 -0.149801 -0.464595 -0.659836 -1.18403 -0.28227 0.499596 2.52732 0.961657 -2.17212 -0.929058 -0.483293 2 2 -10.0404 0.432042 11 11 5 0.987806 1.27196 1.5796 -0.498918 -1.25309 1.24153 0.793211 0.486679 0.330329 0.380583 0.146898 0.00452887 0.630996 0.318242 -0.263887 -1.27615 0.361544 0.340783 0.296454 0.0489403 0.909394 -0.213861 0.044781 -0.234836 0.197636 -0.19214 -0.907535 -0.200012 0.349973 -0.184519 0.692441 0.360445 -0.107532 -0.49854 -0.00934732 -0.160778 0.0448335 -0.741145 -0.788115 0.212766 -0.540575 0.105633 0.595174 -0.401296 -0.180211 -0.255888 -0.33147 0.0615735 0.237545 -1.76138 0.247487 -0.436233 -0.138621 -0.0903586 -0.0122355 -0.342108 -0.044969 0.160316 0.644181 1.67702 -1.18225 -0.204003 0.00475631 -0.289887 -0.0942749 0.121743 -0.133884 0.403032 0.294086 1.19817 2.16257 -0.397458 -0.628475 -0.428206 -0.487179 -0.050586 0.24351 -0.263332 -0.0465109 0.496921 1.35092 1.87347 -0.762185 0.02829 -0.310982 -0.356893 -0.129796 -0.0108946 -0.410836 0.0301514 0.18713 0.964668 1.48726 -0.868364 -0.846649 0.0433327 -0.617863 -0.474253 -0.444504 -0.415683 0.0331127 0.398795 0.923976 0.866477 -0.854296 -0.543933 -0.250335 -0.666217 -0.373068 -0.778726 -0.357396 -0.0840641 0.213891 0.598097 0.56363 -0.000778032 -2.23239 0.334711 -0.764511 -0.752303 -1.00534 3 11 11 3 2 0 -13.6397 1.08378 11 11 5 -0.361972 0.350231 2.16556 0.583683 -2.16984 -0.113697 -0.361787 -0.718488 -0.699683 -0.186542 1.05575 -0.176188 0.518202 1.40528 1.03615 -1.75609 0.13309 -0.142571 -0.463095 -0.618831 -0.415522 0.525301 0.0914375 0.304188 0.469398 0.200982 -1.79688 0.144337 -0.0154561 -0.312687 -0.351352 -0.51716 0.387427 -0.378209 -0.0049596 0.125197 0.269777 -2.30267 0.524297 0.40441 -0.176111 -0.332933 -0.536041 0.330759 -0.0126384 0.0572785 0.279074 0.255907 -2.29508 0.386897 0.826366 -0.142828 -0.256846 -0.327186 0.144809 -0.119543 -0.170289 -0.0211908 0.259793 -1.78775 -0.707637 1.78715 0.329294 -0.00994144 -0.0195241 0.191717 -0.00842975 0.0541541 0.0532285 0.428077 -0.92509 -2.53903 2.72793 1.1409 0.366329 0.216066 0.671566 0.278086 -0.0704849 -0.0656405 -0.214545 -0.758833 -2.78752 1.60817 1.46416 0.383884 0.280671 0.775972 0.360353 0.0818069 0.13982 0.146168 -0.0574174 -1.30741 -0.554748 1.72353 0.437903 0.121266 0.454583 0.327858 0.320029 0.240022 0.0293121 -0.363727 -0.283281 -1.11141 0.569554 0.464576 0.00983019 0.325964 0.298716 0.499783 0.439146 0.362647 0.0125593 -0.404483 -0.716798 -0.488963 0.314847 0.0256944 -0.261927 2 1 -8.36088 1.10763 11 11 5 -0.0636578 -0.069761 -0.497757 1.43955 -0.512851 -0.4668 -0.393706 -0.183469 -0.0600573 0.285448 -0.66601 0.306462 0.464208 -0.315981 1.50897 0.276607 -0.738936 -0.146234 0.216106 0.185688 0.161219 -0.331259 0.0296336 0.507769 0.0323475 1.19656 1.05053 -0.656704 -0.408569 0.118996 -0.139768 0.286489 -0.320457 0.333855 0.205654 -0.247011 0.43655 1.36406 0.15735 -0.495067 -0.0490093 -0.148271 -0.0089087 -0.0853465 -0.10462 0.0719201 -0.281756 0.105554 0.792678 0.652206 -0.833112 0.101855 -0.194906 -0.0393879 0.0749565 0.134462 -0.19268 0.0706654 -0.236833 0.28687 0.978141 -0.561964 -0.256789 0.059758 -0.0755872 -0.0780381 -0.137998 0.0592229 -0.398162 -0.246162 -0.613834 1.26113 0.536409 -1.18327 -0.164034 0.0615116 -0.121849 -0.341493 -0.000246735 -0.31709 -0.338004 -0.468867 0.564884 1.58306 -1.41293 -0.387353 -0.130945 -0.246927 0.194769 -0.191095 -0.126887 0.0900731 -0.565684 0.0217487 1.46847 -0.125519 -0.736754 -0.11992 -0.172733 0.0122632 -0.411949 -0.144404 0.0465276 0.146291 -0.15672 0.867308 0.326645 -0.641729 -0.229532 -0.0553588 0.365582 -0.293283 -0.600957 -0.447383 -0.515084 0.170445 0.331257 0.514107 0.0294842 -0.445071 -0.193922 2 2 -9.86974 0.604314 11 11 5 0.146709 0.0974016 1.45628 0.532091 -1.06491 0.41106 -0.108117 0.265836 0.318609 0.0807857 -0.13774 0.0593586 0.836142 1.72826 1.53279 -0.942706 -0.0272109 -0.154799 -0.27828 -0.0172566 0.0123017 0.256938 -0.0786982 0.59837 1.10909 1.2519 -1.14325 -0.655515 -0.404257 -0.312456 0.0539097 -0.358811 -0.274273 -0.21459 0.358936 0.712632 1.4487 -1.3776 0.0726864 0.00496073 -0.268295 -0.182698 -0.386028 -0.184399 0.394332 0.229728 0.798541 0.851159 -2.02012 0.286448 0.358513 -0.485312 -0.36284 -0.262969 -0.482702 -0.0962808 0.393728 0.484157 0.452776 -0.886989 -1.60327 -0.357772 -0.686164 -0.406595 -0.341386 -0.778243 0.0680908 0.299379 0.49243 0.32154 0.144788 -2.0805 0.954934 0.119211 -0.183825 -0.143339 -0.541401 0.224767 0.357242 0.142632 0.411276 0.148178 -2.56674 0.601244 0.389918 0.109932 0.273607 -0.307204 -0.0127305 0.373397 0.246958 0.389723 0.0303791 -1.01183 -1.44116 0.544893 0.286181 0.386744 -0.142353 0.114816 0.200928 0.0530092 0.226736 0.412634 -0.262294 -1.26557 -0.54804 -0.173376 0.187754 0.71411 -0.15464 0.300734 0.338361 0.371883 0.231307 0.224345 -0.693273 -0.971973 0.0481126 0.725217 0.780238 3 11 11 3 2 0 -11.4562 1.20397 11 11 5 0.6183 -0.390262 -2.46346 -0.792549 0.862173 -0.298486 -1.14755 -1.53639 -1.21225 0.328918 0.0870514 0.437772 0.113795 -1.56337 -0.884012 1.67887 0.74069 -0.119352 -0.378973 -0.443697 0.167243 0.385496 0.145707 0.243447 -1.01564 -2.19094 1.20284 1.48322 0.48545 0.227984 -0.0507978 0.254103 0.676815 0.301191 0.126586 -0.12276 -1.6004 -0.377229 1.82053 0.655159 0.226788 0.177518 0.462516 0.793525 0.438055 0.141562 0.0104959 -0.462194 -2.09009 1.68116 0.785878 0.219088 0.223919 0.34909 0.901464 0.609213 0.328051 -0.158236 0.186927 -0.40527 -0.394052 0.987924 0.470029 0.168805 0.471172 0.423629 0.662611 0.622566 0.0736649 -0.133321 0.0658049 -1.31146 0.64323 0.552922 0.437194 0.440108 0.267154 0.0442479 -0.109859 -0.218015 -0.261791 -0.299074 0.100685 -0.870675 -0.0579153 0.402195 0.432539 -0.130994 0.380223 0.247014 0.260737 -0.522736 -0.393217 0.206062 0.117843 -0.854584 -0.142749 0.523556 -0.227796 0.240023 0.094207 0.0331609 -0.0496658 -0.455323 0.245988 0.94733 -0.14929 -0.683652 -0.612273 -0.709578 0.887486 0.57101 0.109151 -0.631523 -1.28773 -0.746326 0.252419 1.20524 0.390079 -1.28199 -2.31756 2 1 -6.93206 0.859952 11 11 5 0.0898956 0.00957738 1.55471 1.43445 -0.029235 -0.902103 -0.230987 -0.392606 0.0255322 0.0744106 -0.334258 -0.281185 -0.600286 -0.0501642 1.10299 0.454866 -1.01836 -0.339422 -0.213492 0.129082 0.0421156 -0.0861291 0.0325818 -0.375518 -0.385859 1.04256 0.572352 -0.661132 -0.27443 -0.105024 -0.29239 -0.0730273 -0.181875 -0.0704477 0.127023 -0.513197 0.348524 1.05452 -0.0791295 -0.233091 -0.0379455 -0.11344 0.0926714 -0.164521 -0.091232 -0.0107798 0.133804 0.00376992 0.622366 0.44464 -1.02652 0.142689 -0.0586359 0.0400335 -0.144407 -0.455929 -0.252244 0.046628 0.0161646 0.165412 1.03804 -0.462971 -0.550021 -0.0888466 -0.126645 0.0307266 -0.0729108 0.0529905 -0.107734 0.16981 0.0732996 0.529922 0.528498 -0.466901 -0.411255 0.0544561 0.00308094 -0.156524 -0.223938 -0.189859 -0.198085 0.458807 -0.379706 0.745879 0.13264 -0.0400275 -0.392297 -0.313708 0.0995087 -0.549667 -0.199756 -0.226248 -0.15143 -0.221785 -0.25046 -0.241365 0.427503 0.224548 0.0477997 -0.224245 0.11555 0.136337 -0.447271 -0.204146 0.121702 -0.685261 0.631107 -0.246316 0.196598 1.01641 -0.0474733 -0.206949 -0.263821 0.0635561 0.617568 0.966589 0.7927 -0.446469 0.247772 -0.159579 -0.294034 2 2 -9.23718 0.755561 11 11 5 0.85901 0.308368 -1.57892 -0.635066 0.316235 -0.603506 -0.719158 -1.00924 -0.473054 0.0160795 0.33059 0.688699 0.657882 -0.760727 -1.83134 0.522932 0.221951 -0.324655 -0.382414 -0.378264 -0.267952 0.0516994 0.521644 0.382594 0.00422017 -2.22425 0.249773 0.438201 0.0156956 0.373628 -0.316598 -0.14212 -0.115659 0.180911 0.247454 -0.100953 -1.26691 -1.66256 0.360357 0.287967 0.183239 -0.00763647 -0.539927 0.314209 0.252583 0.316201 0.0888192 0.178922 -2.36353 0.797325 0.38579 -0.016897 0.175278 -0.200771 0.765924 0.139089 0.206385 0.150673 -0.215582 -0.75872 -1.72285 0.170092 0.317996 0.285063 0.69998 0.394909 0.314695 0.349781 0.287472 -0.0449282 -0.237333 -1.06474 -0.179179 0.670949 0.146867 -0.216395 0.656663 0.0914356 0.358622 0.120385 -0.0202281 -0.421828 -0.380528 -1.06357 0.108977 0.666898 0.45082 0.294084 0.0166634 0.61821 0.361243 -0.0912336 -0.626891 -0.38488 0.0359782 -1.05133 0.36819 1.31088 1.08433 0.100268 0.407158 0.412874 0.396964 -0.138343 -0.57872 -0.148329 -0.434143 -0.858954 0.804431 2.1196 -0.103038 0.69397 0.706816 0.639611 0.199375 -0.309854 -0.198583 0.309701 -0.116076 -0.104669 1.43063 3 11 11 3 2 0 -11.7752 1.5168 11 11 5 -1.74322 -1.22079 0.980273 1.31615 -0.556081 -0.465723 0.112728 1.6031 2.32079 1.28654 -0.205783 -0.208886 -0.661175 -0.335712 1.85999 0.119955 -0.43433 -0.118692 0.471542 0.626149 -0.105345 -0.671861 -0.161149 -0.360752 -0.741473 1.17679 0.767905 0.00866503 -0.019703 0.258978 0.254405 -0.150716 -1.09896 -0.278472 -0.312062 -0.629421 -0.643864 1.41024 0.777615 0.561649 0.285524 0.334944 -0.128045 -0.58197 0.157256 -0.666299 -0.487515 -0.818882 -0.841942 1.02069 1.24382 0.524057 0.267422 0.282715 0.258115 0.604745 -0.2658 -0.264027 -0.0570324 -0.759002 -1.49444 0.66597 0.765813 0.205361 0.135304 0.45087 0.781744 -0.424356 0.368794 0.344411 0.315462 -0.546544 -1.57457 0.0619864 0.107519 0.116808 0.224178 0.741036 -0.411839 0.240232 0.169954 0.695677 0.975024 -0.0192449 -0.800663 -0.645877 -0.374463 -0.520244 0.161763 -0.664283 0.183694 0.134925 0.666324 1.11608 1.31684 0.678859 -0.369729 -0.908436 -1.53678 0.340262 -1.01677 -0.28657 0.147949 0.284893 0.613883 1.16328 1.14624 0.348967 -0.713183 -1.64289 0.240482 -0.668163 -0.822524 -0.663897 -0.428318 -0.354763 -0.214153 -0.160175 -0.156218 -1.07981 -2.31005 2 1 -7.23518 0.57795 11 11 5 0.519729 0.945645 1.38469 -1.28769 -1.30911 -0.744437 -0.463022 0.00458905 -0.0743633 -0.576873 0.210199 0.146886 0.873327 0.787716 0.184269 -0.694204 -0.388754 0.480314 0.00284861 0.0991608 0.118175 -0.810931 0.309016 0.500174 0.560747 0.984424 -1.0104 -0.205729 -0.0449142 0.488165 -0.00279056 0.122286 -0.557556 -0.177602 0.425687 -0.07469 0.749449 0.109102 -0.387362 -0.427065 0.032674 -0.193017 0.0438876 -0.640364 -0.637119 -0.162682 -0.194587 -0.0748278 0.871121 0.533615 0.115254 -0.0092769 -0.181098 -0.425545 -0.403173 -0.986375 0.0751539 -0.428744 -0.0219299 -0.0651907 0.134457 0.585834 0.774521 0.345943 -0.223545 0.561272 -0.926591 0.423786 0.44606 0.263143 -0.280166 1.00855 -0.282421 0.0541726 0.539263 0.390696 0.963671 -0.387133 0.49456 0.440154 -0.0618554 0.227345 -0.182787 1.07197 -0.540771 -0.780883 -0.142387 0.643933 -0.230166 0.0140572 0.30921 0.314359 0.438556 -0.212823 -0.69524 0.545576 -0.238497 -0.5792 -0.526697 -0.278527 0.557718 0.169912 0.497546 0.359306 -0.450037 -0.545024 -0.388674 0.115733 -0.273017 -0.723986 -0.456695 0.834432 0.618748 0.654832 -0.121097 -0.544219 -0.902742 -0.983605 -0.247214 0.0183898 -0.628616 2 2 -8.55015 0.612685 11 11 5 -1.30875 -1.9795 -0.600682 0.036329 -0.330552 0.289955 -0.288008 0.0777881 1.06406 0.914803 0.0754987 -0.424176 -1.15463 -1.60265 0.41088 0.399133 0.0621381 -0.0481553 0.273552 0.498271 0.0605447 0.0512995 -0.312778 -0.478453 -0.91389 -0.375611 0.19715 -0.0453351 0.0322038 -0.177384 0.0746491 0.0530688 -0.576385 -0.451721 -0.665737 -0.453859 -0.728555 -0.0111824 0.551922 -0.0220216 -0.283119 0.151514 0.00226458 -0.497601 -0.462211 -0.528004 -0.76938 -0.438026 -0.530118 0.621956 0.913291 0.395626 0.3456 0.474888 -0.436088 0.0587746 -0.470028 -0.588874 -0.724548 -0.799463 -1.36782 1.91423 1.80796 0.542894 0.460434 -0.0130869 0.359306 -0.184262 -0.403332 -0.546363 -0.835617 -0.451664 -1.46676 1.18589 1.28519 1.1036 0.82601 0.463028 -0.111597 -0.370312 -0.348119 0.0518181 0.00567985 -0.474175 -0.742881 0.821764 0.913283 1.00683 0.482849 0.040177 0.264249 -0.392765 0.156959 0.209909 0.250147 -0.301618 -0.244982 0.293226 0.506941 0.35894 0.0470383 0.0750449 -0.0510016 0.100954 0.388407 0.689372 0.25165 -0.410421 0.0897657 0.852522 0.64832 0.00668382 0.145546 0.15792 0.390721 0.72422 0.0610556 0.12327 0.413403 -0.235537 -0.134647 3 11 11 3 2 0 -11.8905 1.88463 11 11 5 0.332604 1.10255 0.896009 0.376782 0.518124 0.540656 -0.0692928 -0.314747 -0.498778 -0.209627 0.725469 -0.897099 0.732817 1.21951 0.513211 -0.0223482 0.108358 0.118593 0.147309 0.116511 -0.013333 0.258778 -1.43095 -0.584645 0.62155 0.836047 0.128134 -0.246132 0.307572 0.297863 0.172315 0.287262 0.498472 -1.02664 -0.98091 -0.632816 0.0392141 0.256724 -0.492136 -0.238606 0.335828 0.515936 0.583094 1.03044 -0.225474 0.00747844 0.0331273 -0.365842 -0.917318 -0.819289 -1.02549 -0.0915953 0.540477 1.0186 1.88732 0.378576 0.47357 0.9057 0.730126 0.0603826 -1.43108 -1.78148 -1.45312 -0.414573 0.708133 1.72573 0.246483 0.72207 0.713213 1.29983 0.937357 0.440716 -1.38943 -2.11589 -1.82973 -0.873481 -0.103268 -0.186021 0.0217193 0.197103 0.346281 0.550258 0.733184 0.483964 -0.361097 -1.16552 -1.24726 -0.829938 -0.675787 -0.494482 -0.573927 -0.412673 -0.148299 0.237848 0.310637 0.186572 -0.272238 -0.421272 -0.479372 -0.370323 -0.0328829 -0.516648 -0.371951 -0.320742 -0.326781 -0.296071 -0.289769 -0.543057 -0.252171 0.209807 -0.124829 0.211487 0.236121 0.591137 0.551769 0.72249 0.340103 0.0623472 -0.193164 0.253158 0.708847 2 1 -7.35211 0.662206 11 11 5 0.315802 -1.02455 -1.30564 -0.173473 0.0711202 -0.202445 -0.254286 -0.505443 -0.787553 -1.09887 -0.704983 1.48133 0.619832 -0.164805 -0.464825 -0.233415 -0.761379 -0.17545 -0.000721085 -0.18594 -0.433908 -0.73385 0.593706 0.685246 1.07382 0.0353214 -0.237687 0.0798583 0.230447 0.150084 0.0964774 -0.740087 -0.321052 0.663072 0.572322 0.372445 0.718244 0.152974 0.493824 0.750272 0.572782 -0.0479878 -0.388393 -0.319869 0.589975 0.242721 -0.0470767 0.298927 -0.514446 0.119309 0.845614 0.726802 0.625663 0.0719708 -0.334194 0.432318 -0.281527 0.158268 -0.432042 0.555397 -1.2772 -1.23265 0.547699 0.734903 0.339572 1.00118 0.276217 -0.462557 -0.222096 -0.329047 -0.401216 0.312624 -0.446975 -1.82546 -0.342518 0.647689 0.654567 0.0824641 -0.627564 -0.700647 -0.37022 -0.665694 -0.677522 -0.232324 0.236755 -0.744373 -0.217161 0.535834 0.0492667 -0.607064 -0.397218 -0.31661 -0.565793 -0.11139 -0.407359 -0.735795 -0.141153 0.172099 1.06382 1.25897 -0.0410733 -0.165397 -0.172451 0.161397 0.429903 0.0493218 -0.121635 -0.217523 0.25045 1.18612 0.439984 -0.0927633 -0.237533 0.174874 0.649432 0.889742 0.373387 0.359299 0.116788 0.224324 0.367378 2 2 -8.69335 1.01318 11 11 5 -0.76839 -0.313617 0.358509 0.199392 0.133605 0.539814 0.0970957 -1.00419 -1.13291 -0.82471 -0.470964 -0.535527 -0.186946 0.605852 1.02523 0.593467 0.140587 0.20307 0.0851678 -0.0712383 -0.541079 -1.04586 -0.681365 -0.136018 0.829688 1.01974 0.9357 0.293076 0.147889 0.405469 0.256913 -0.256182 -0.876049 -1.06307 -0.287489 0.129453 0.571913 1.69003 0.905793 0.00175054 0.0856057 0.500962 -0.365212 -0.693183 -0.843476 -0.891948 -0.546686 -0.359147 0.0710481 1.14303 0.303752 0.668159 0.434832 0.129405 -0.416883 -0.199165 -0.40761 0.00534 -0.606759 -0.287009 -0.220053 -0.055616 -0.00281023 0.819846 1.66444 1.57649 0.508907 0.364138 0.470708 0.571242 -0.0517094 -0.394353 -1.03315 -0.623429 -0.502058 0.302333 1.37349 0.673631 1.00759 0.716274 0.319628 0.156182 0.122081 -0.0306002 -0.292398 -0.373362 -0.718792 -0.223782 0.130818 0.490817 0.638002 0.37026 0.324022 0.404409 -0.116004 0.047641 -0.589874 -0.686929 -0.563212 -0.304508 0.247875 0.154639 -0.273134 -0.501433 -0.0531125 -0.103797 -0.045586 -0.87915 -0.907659 -0.593459 0.0594439 -0.342337 -0.144138 -0.138733 -0.101812 -0.133962 -0.198476 -0.440246 -0.473094 -0.191936 0.0911217 3 11 11 3 2 0 -13.3982 2.46875 11 11 5 0.511176 -0.156208 0.231719 0.542015 0.223744 -0.15334 -0.430711 0.0772381 0.292195 0.172834 0.539126 0.279719 -0.296971 -0.23916 0.423287 0.646932 0.486441 0.571158 1.03499 1.2825 0.791562 0.447236 0.190129 -0.474546 -1.02489 -0.502365 0.439245 0.864829 1.01774 1.07444 0.869181 0.279505 0.103021 0.0289938 -0.451418 -1.15357 -1.34464 -0.172906 0.80993 1.11367 0.725696 0.239685 -0.285892 -0.565539 0.191375 -0.263593 -0.7133 -1.51392 -2.16146 -0.164672 0.930877 0.657548 0.0499806 -0.307159 -0.721873 0.804786 0.306694 0.007821 -0.156632 -0.939996 -2.3933 -2.31523 -1.45126 -1.25457 -1.45393 -2.0987 0.258048 0.143438 0.16709 -0.0854821 -0.0877009 0.261919 0.702797 0.0562923 -0.464058 -0.628229 -0.84083 -0.398769 -0.569312 -0.122845 -0.256952 -0.304826 -0.232875 -0.0851515 0.617533 0.938208 1.197 1.25516 -0.106704 0.258033 0.421053 0.479932 0.36262 0.0670318 0.0462989 0.133331 0.23856 0.318589 0.582785 0.545083 0.534487 0.292742 0.400585 0.244401 0.0927523 0.00297418 -0.117903 0.0619487 0.381885 0.492444 0.286707 -0.171051 -0.363472 -0.459682 -0.150266 -0.313594 -0.243425 -0.288825 -0.035809 0.148671 0.240008 2 1 -9.93794 0.785668 11 11 5 -0.878793 -0.633623 0.0818863 -0.671151 -1.06942 -1.07004 -0.639434 -0.693556 -0.304509 -0.14462 -0.661033 0.529308 0.450778 0.991686 0.489247 -0.346082 -0.500326 0.354898 0.229153 0.114897 -0.245236 -0.585904 0.834693 0.287594 0.791998 0.383903 -0.528057 -0.565949 0.314349 1.27009 0.822136 -0.432265 -1.05125 0.08392 -0.126452 -0.417965 0.675778 1.08758 -0.316629 0.0063062 0.0791205 -0.318907 -0.841126 -1.04248 -0.473982 -0.545059 -0.967796 -0.842677 -0.394921 1.94913 3.04715 1.64558 1.1504 0.0669631 0.487954 -0.17598 -0.151015 -0.727344 -0.755107 -0.167001 -0.160343 -0.743898 -0.471499 -0.343105 -1.06938 -1.54303 -1.00382 -0.706494 -0.0186775 -0.63633 -0.382866 0.497225 0.890587 0.744308 0.597303 -0.0743304 0.00885936 -0.185096 0.408895 0.232915 0.512394 0.487448 0.354268 0.308695 0.564194 0.099394 0.285641 1.29042 0.410464 0.961313 0.384431 0.269615 0.057214 0.200301 0.115763 0.0947028 0.120455 -0.177358 0.577116 0.495153 0.284833 -0.219543 -0.142194 -0.376242 -0.494158 -0.558592 -0.520181 -0.08841 0.299076 0.502834 -0.415201 0.309346 0.0128236 -0.425921 -0.204202 -0.044601 -0.103521 -0.231109 0.0212703 0.0894912 -0.089607 2 2 -10.2272 1.78401 11 11 5 0.92031 0.00161017 0.192226 0.183771 -0.21687 -0.483335 -1.18338 -0.988132 -0.83577 -0.25349 -0.957552 1.03771 0.41451 0.440027 0.679463 0.460813 0.188334 -0.377777 0.0986976 0.678994 0.935037 0.0944078 0.607529 0.608932 0.194565 -0.200294 0.229121 0.474607 -0.184567 0.127044 0.616996 1.03261 0.106639 -0.106934 -0.0592484 -0.110771 0.536125 0.61408 0.426258 0.337101 0.161479 0.442061 0.849636 0.211119 -0.799359 -0.345365 -0.725897 -0.79009 -0.787175 1.10708 1.89318 1.6033 1.32185 1.06594 1.37094 0.415915 -0.311139 -0.476814 -0.286745 -1.01777 -1.63602 -1.1649 -0.551709 -0.261654 -0.379236 -0.725367 0.495944 -0.149846 -0.231015 -0.11733 -0.342579 -0.307161 -0.158965 -0.654271 -1.023 -1.26848 -1.00249 -0.248136 -0.40254 -0.201015 -0.485262 -0.529353 -0.418104 0.0391358 0.156178 0.236697 0.208648 0.214229 0.00904453 0.00793962 0.0154296 0.269351 -0.232873 -0.374708 0.0587435 0.00236864 -0.063006 0.00317126 0.217188 0.41153 0.436725 0.17942 -0.0665184 -0.0635141 -0.26231 -0.102382 -0.276105 -0.230293 -0.0440421 0.192294 0.333611 0.527308 0.546116 -0.187554 -0.200361 -0.285752 -0.234877 -0.293192 -0.386269 -0.372341 0.191933 3 11 11 3 2 0 -17.621 2.88562 11 11 5 0.0520625 0.169651 0.719616 0.416326 0.113701 0.109319 0.725361 0.886043 0.567812 0.376921 0.504046 0.17381 0.6245 0.865045 0.493637 -0.0487788 -0.134639 0.47247 1.10585 1.18249 1.08608 0.869877 -0.132196 0.262813 0.30179 -0.357754 -0.752202 -0.745263 0.166765 0.925346 1.11477 1.03885 0.357348 -0.763898 0.184504 0.206886 -0.274348 -0.650154 -0.630486 0.29768 0.956835 0.923984 0.0605716 -1.53038 -1.8637 -0.722615 -0.277325 -0.279503 -0.308245 -0.450526 -0.242599 -0.549607 -1.64737 -2.43347 -2.7757 -1.36209 -1.17147 -1.37812 -1.97566 -2.06069 -1.74028 -1.33104 -0.645919 -0.575838 -0.996688 -1.18891 0.192645 0.397713 0.995182 1.33536 1.83163 2.00898 1.51895 0.883324 0.38085 -0.198986 -0.282878 0.720933 0.244092 0.21436 0.163595 0.165702 0.306297 0.262042 0.337586 0.19364 -0.0184751 -0.062436 0.549053 -0.0517729 -0.251497 0.0961612 0.220906 0.159911 0.37824 0.276121 0.135364 -0.207209 -0.169371 0.454406 -0.244523 -0.378593 -0.0975088 -0.0159084 0.0546597 0.0457146 0.0533183 -0.148641 -0.108416 -0.105467 0.425777 -0.133542 -0.266633 0.0922794 0.211526 0.207181 0.24608 0.28936 0.0541116 -0.0102506 0.333722 2 1 -11.0788 0.897496 11 11 5 -1.45334 -0.520636 -0.643207 -0.50723 -0.874522 -1.12473 -0.0263208 0.186984 -0.12124 -0.929369 -0.64159 -0.568747 0.766063 0.838436 0.278287 -0.60714 -0.729864 0.0959419 1.0514 0.390721 -0.0627106 0.159851 -0.184442 0.230111 0.620571 -0.0951191 -0.842771 -1.16975 -0.409001 0.128498 -0.0869065 -0.292424 0.599169 1.14797 0.790341 0.469472 -0.316855 -1.26599 -1.36686 -0.116864 0.909356 2.09713 1.87195 0.879892 0.603394 0.872926 1.29061 1.30081 0.604365 -0.168067 -0.11369 0.113077 0.0522687 -0.330787 -0.466349 -1.04631 -0.557158 -0.894464 -1.12668 -2.39532 -2.07842 -0.659746 0.020459 0.0387687 0.00279148 -0.225816 0.340043 0.611162 0.555014 0.888547 1.13528 0.965659 0.530269 0.531126 0.834065 0.977495 0.54369 0.425815 0.226069 -0.104926 -0.684609 -0.498505 -0.583466 -0.129884 0.0329789 0.07189 0.183862 -0.154206 -0.614104 -0.176486 0.286544 0.0918363 0.473162 0.516929 0.75176 0.283552 0.0635703 -0.171587 -0.703622 -0.399669 -0.244257 -0.378315 -0.132252 -0.0669848 0.12622 0.0198224 -0.0952101 -0.241556 -0.161297 -0.187752 -0.39524 0.318321 -0.13778 0.213339 0.190118 0.294984 0.42246 0.191658 -0.000346303 0.0541216 -0.280494 2 2 -12.2768 2.65059 11 11 5 -0.118002 -0.673631 -0.0952238 0.0409352 0.183039 -0.374087 -0.259824 0.00893839 0.0360275 -0.377317 0.623416 0.46621 0.395585 0.411964 0.704021 0.592647 0.213061 0.391996 0.697515 0.345624 0.727771 1.34633 0.415798 0.0371149 0.277011 0.326975 0.119752 -0.129334 0.117359 -0.032178 0.563189 1.67875 1.17312 -0.283814 0.562752 0.846919 0.441401 0.194166 -0.377239 0.541175 1.71359 1.79833 1.55114 1.0021 -0.961843 -0.00329738 0.146426 0.523174 0.190043 -0.0328499 0.00503812 0.196312 -0.296748 -0.195502 -0.545851 -1.48676 -0.940681 -0.8137 -1.69817 -2.35533 -1.98492 -1.41185 -0.392498 -0.0982208 -0.334682 -0.623604 -0.886962 -0.480514 -0.033113 -0.0891432 0.347042 0.509672 0.374551 -0.0306988 0.167338 -0.275771 -0.596447 -0.32851 -0.224031 -0.194393 0.0194467 -0.198578 -0.147587 -0.0136485 0.0119277 0.282259 0.0147727 -0.0921466 -0.0955617 -0.425862 -0.0350437 -0.369166 -0.0600444 0.00864276 0.317418 -0.182926 0.0610892 0.088237 -0.559897 -0.369117 -0.0149207 -0.115573 -0.337063 -0.215369 -0.0255885 -0.260487 0.062709 -0.0452817 0.0786808 -0.12314 -0.298273 0.0162018 -0.0946707 -0.123384 0.0765226 0.144946 0.00712344 0.0607712 0.30283 0.105311 -0.424104 3 11 11 3 2 0 -19.2424 2.62739 11 11 5 -0.467564 0.125218 -0.0438516 -0.472541 -0.629995 -0.0203481 0.173506 -0.140773 -0.243644 0.520693 1.29624 0.212053 1.03583 0.902715 0.374016 0.251901 0.897314 0.890677 -0.0643782 -0.394607 0.192813 0.375754 -0.288519 0.914934 1.10233 0.784676 1.15207 1.28513 0.629474 -0.792617 -0.707196 -0.408556 0.309925 -1.14963 0.242203 0.949724 1.16306 1.73816 1.38962 -0.5458 -1.50235 -0.800484 -0.0571465 0.292193 -1.69676 -0.145692 1.0316 1.54152 1.48281 -0.514545 -2.59761 -1.24076 -0.26408 0.158592 0.558654 -2.02766 -0.721343 -0.0206147 -0.511263 -2.19041 -2.93014 -0.969989 -0.238802 0.0949507 0.0899428 0.188611 -2.44337 -1.52022 -1.29203 -1.65808 -0.368923 -0.172762 -0.324994 -0.412096 -0.378392 -0.79379 -0.629498 0.65229 1.29433 1.55294 0.952877 0.0720126 -0.389452 -0.457295 -0.414794 -0.266766 -0.599462 -0.25341 1.31931 0.919391 0.605712 0.268868 0.121018 0.163601 0.309297 0.543288 0.462012 0.526993 0.779461 0.52079 0.701548 0.58387 0.179789 0.0895528 0.0845293 0.092429 0.0814819 0.0759691 0.344015 0.691113 0.135078 0.129637 0.0494344 -0.160297 -0.123164 -0.367502 -0.256288 -0.183133 -0.441446 -0.429255 0.484576 2 1 -10.4201 0.766511 11 11 5 -0.818203 -0.150511 -0.336657 -0.62191 -0.78177 -0.881463 -1.01577 -0.204303 -0.681018 -0.857436 -0.600069 -0.881583 0.352358 0.594035 -0.00271442 -0.645101 -0.544285 0.020089 0.884978 0.430703 0.387329 0.501041 -0.93905 0.89618 1.27947 0.273912 -0.21969 -0.00612532 0.495064 0.640821 0.40576 0.001416 -0.000201621 -1.29539 -0.0619952 0.187982 -0.30406 -0.702464 -0.148161 1.59663 -0.0127832 -1.19369 -0.347716 -0.283275 -1.41274 0.332966 0.852388 1.10092 2.60803 2.19868 0.0190733 -0.370928 -0.774628 -0.268658 -0.693299 -0.255455 0.172275 0.733837 0.0161874 -0.893588 -0.194522 0.233338 -0.923826 -0.523655 0.0137053 -0.861049 -2.11707 -1.16792 0.39561 0.915935 0.404164 0.154484 -0.244349 -0.354307 0.241418 -0.017419 -0.439688 0.622625 0.777456 1.05914 0.599329 -0.00224851 0.240444 0.419163 0.79335 0.540317 0.782453 0.173079 -0.0718422 0.183657 0.774757 0.308943 0.294785 0.0531453 -0.324756 0.520644 0.198687 0.355626 -0.0960358 -0.13535 0.685033 0.22159 0.250418 0.0387754 -0.626645 -0.541412 -0.256053 -0.174474 0.0826482 0.349882 0.504755 -0.313608 -0.196685 -0.166939 -0.14198 -0.15604 -0.0551095 -0.188224 -0.0598904 -0.136859 -0.47678 2 2 -13.1232 2.20459 11 11 5 -1.30142 -0.550791 -0.586242 -1.04911 -1.0183 -0.296804 0.355937 0.643835 0.199309 0.193701 0.45752 0.880677 0.436529 0.225057 -0.484056 -0.488048 0.53657 1.03044 0.131156 -0.0373196 -0.162537 0.280597 0.785056 1.13327 0.328024 -0.184777 0.319133 0.60726 1.09891 -0.288489 0.0474219 -0.233328 -0.0513045 0.547123 0.806387 0.516864 0.0134203 0.879557 1.8583 0.741739 -0.340317 -0.433936 -0.694189 -0.265382 0.022962 0.374159 1.44912 2.14743 2.72887 1.36073 -0.721679 -0.479158 -0.487207 0.0362381 -0.196544 -0.757111 -0.028377 0.488475 0.453246 -0.127741 -1.03923 -0.309977 0.138895 0.0232437 0.265504 0.156922 -2.55115 -1.61479 -0.962078 -1.02259 0.0905967 -0.10101 -0.162784 -0.314997 -0.37769 -0.505089 -0.741191 -1.22945 -0.293573 0.0230797 0.063914 -0.304644 -0.655624 -0.509391 -0.721155 -0.539472 -0.852135 -0.928278 0.386999 0.294046 0.32175 0.237901 -0.0226416 0.0768343 0.084363 0.113023 -0.0585409 0.121848 0.118034 -0.0314093 0.0882498 0.46491 0.184174 -0.261261 -0.185149 -0.0218305 -0.162135 -0.327753 -0.0510659 -0.0170761 0.202727 0.380086 0.146191 0.286585 0.450675 0.277465 -0.0443232 -0.269986 -0.405262 -0.333891 0.0798139 3 11 11 3 2 0 -13.9087 1.89114 11 11 5 -0.304315 -0.462442 -0.235955 0.202764 0.575326 0.629529 0.615475 1.15793 2.1869 0.874205 -1.34138 -0.00723174 -0.282479 -0.172353 -0.0194764 0.346565 0.290091 0.867145 1.2061 0.886144 -0.310503 -1.40224 0.131734 0.270975 0.0831056 0.305588 0.415129 0.262082 0.728614 0.228261 -0.512755 -0.606179 -0.568647 0.369471 0.412485 0.482039 0.0101832 -0.15862 0.121382 0.0671544 -1.00453 -0.589229 0.0138801 -0.22522 1.03551 1.15933 0.441325 -0.195802 -0.676787 -0.645402 -1.40268 -0.535818 0.44291 0.390682 0.240753 1.68234 1.2566 0.0499111 -1.02624 -1.54182 -1.55737 -0.15137 0.963878 0.898279 0.748003 0.0651162 1.36006 0.285072 -1.15438 -2.03468 -1.72341 0.346029 1.01179 1.12071 0.668327 0.238911 -0.0726668 -0.373289 -1.02758 -1.85299 -1.34144 0.177602 0.974701 0.614529 0.134231 -0.111242 -0.216728 -0.685231 -0.562503 -1.12251 -0.816421 -0.131332 0.242797 0.0602974 -0.447446 -0.751391 -0.489533 -0.593732 -0.390752 -0.0681929 -0.500941 -0.486922 0.0138531 -0.44124 -0.438385 -0.331571 -0.37701 -0.418839 -0.27822 -0.524728 0.702027 0.126995 0.166535 -0.024352 0.147728 0.469937 0.539339 0.932733 1.04773 0.847636 0.381939 2 1 -9.11014 0.764943 11 11 5 -1.22084 -0.791338 -0.465236 -0.0630643 -0.459841 -0.376803 -0.63663 -1.97087 -0.729136 1.62296 1.72699 0.0422204 0.121115 0.0737926 -0.400482 -0.800677 -0.469377 -0.539837 -0.670655 0.788088 0.795959 0.896917 -0.548014 -0.522613 0.129004 -0.107917 -0.000866927 0.0854668 -0.869943 0.828359 0.569378 0.205654 0.164235 -0.320365 -0.349071 0.161093 0.750616 0.460269 0.196354 0.46763 0.461551 -0.117107 0.287726 0.310994 -0.303078 -0.103774 0.526425 0.892237 0.725874 0.094484 -0.436352 0.148515 0.0963214 -0.0980034 0.325009 -0.146774 0.908515 0.790103 0.832831 -0.769618 -1.37373 0.394413 -0.0375415 -0.0547407 -0.335985 0.284928 0.500055 0.819536 0.448908 -1.24462 -1.27534 0.64564 -0.428088 -0.357586 -0.333426 -0.574947 -0.193865 0.275559 0.573756 -0.512556 -0.588131 0.302823 -0.556953 -0.480349 -0.769182 -0.895634 -0.571638 0.0872367 0.612557 0.0438668 -0.322863 -0.449412 -1.01183 -0.377832 -0.390724 -0.552041 -0.143052 -0.718477 0.646231 1.41453 0.395629 -0.539362 -0.352612 0.067893 0.0950855 0.145434 0.0119008 -0.0388261 0.31594 0.702142 1.39533 0.2853 0.329612 0.667721 0.755652 0.658412 0.38698 0.24122 -0.0882538 -0.350445 0.217399 2 2 -8.42126 1.43637 11 11 5 -0.911889 -0.910336 -0.323537 -0.15 0.0636937 -0.427459 -0.184015 0.491318 1.21355 0.597023 -0.0640227 -0.671092 -0.65017 -0.014297 -0.11032 -0.177898 0.213954 1.04312 0.84021 0.30579 0.0605125 -0.35898 -0.294528 -0.280355 0.175278 0.708737 0.38878 0.384132 1.37352 0.656524 0.252624 -0.1126 -0.469687 -0.0173864 -0.408826 0.180362 0.403712 0.19659 0.731768 0.363256 -0.30095 -0.279644 -0.310782 -0.479295 -0.0788283 0.489781 0.330529 0.994239 0.284072 0.240303 -0.608905 -0.386629 -0.392419 -0.0685333 0.562628 0.877195 1.10073 1.14296 0.213748 -0.655627 -0.55906 -0.514966 -0.378985 0.079426 0.326786 0.306239 1.84864 1.34311 0.386014 -0.864964 -0.635507 -0.624287 -0.245765 0.541414 0.764282 0.706632 0.701054 0.440833 -0.0148659 -0.522193 -0.489983 -0.351693 0.0572505 -0.0296125 0.399825 0.287528 0.391901 0.284261 -0.0391594 -0.530856 0.164833 -0.0490434 -0.412894 0.00674206 -0.0110788 -0.285048 -0.473753 -0.196258 0.117143 -0.253617 -0.129662 -0.731318 -0.120783 -0.548662 -0.602877 -0.875323 -0.940775 -0.508526 -0.180033 -0.114125 0.14468 -0.170389 -0.340506 -0.462259 -0.977717 -0.66109 -0.552714 -0.247121 -0.058938 0.0643273 -0.438296 3 11 11 3 2 0 -12.5543 1.63357 11 11 5 0.230599 1.2238 0.994555 -0.0958177 -0.546159 0.440883 1.69997 0.962662 -1.13113 -1.47295 -0.153516 -0.125501 0.715722 0.42867 -0.273645 -0.309808 0.62935 1.81348 -0.0484462 -1.31418 -0.983784 0.447328 -0.577281 0.282895 0.331736 -0.198033 0.363914 1.12124 1.73613 -0.916551 -1.08507 -0.634489 0.602794 -0.474932 0.196906 0.210188 0.140087 0.873193 1.40552 0.290723 -1.37217 -0.600301 -0.0830953 0.482347 -0.333041 0.273672 0.514168 0.965579 1.1945 0.697139 -1.33088 -0.726393 -0.245857 -0.0715177 0.607233 0.119353 0.496748 0.825498 1.07408 0.466156 -1.28744 -0.693832 0.0161738 0.47713 -0.0823974 0.453377 0.0988226 0.508371 0.687143 0.154463 -1.32955 -0.874564 0.440843 0.656316 0.455956 -0.455538 0.0713704 -0.264393 0.258695 0.0274247 -1.09885 -1.14163 0.815944 1.08988 0.360567 0.0463235 -0.69502 -0.121813 -1.01047 -0.494537 -0.756614 -0.67675 0.693978 1.42605 0.818932 0.0571577 -0.133398 -0.593891 0.0225854 -1.64364 -1.01875 -0.62412 0.277831 0.94434 0.889404 0.244969 -0.133816 -0.239579 -0.437444 0.0512486 -1.96976 -1.44773 -0.633565 0.280089 0.166306 -0.449997 -0.304121 -0.548692 -0.329793 -0.725555 -0.0286023 2 1 -8.0477 0.603971 11 11 5 -0.169683 0.0607975 0.118647 -0.344764 -0.533817 -1.26728 -0.8146 1.39131 1.53825 1.03002 -0.809899 -0.328542 -0.138152 0.363503 0.39238 -0.360974 -0.901661 0.0368102 1.21749 0.676594 0.31528 -0.280089 -0.495569 0.192319 -0.0467018 0.0342067 -0.373882 -0.383472 0.628021 1.0029 0.427386 -0.324044 -0.121657 -0.82582 -0.150797 -0.529055 -0.321078 -0.580482 0.0437366 1.14459 0.565548 -0.237498 -0.496416 -0.453505 -0.330745 -0.450116 -0.497113 -0.208508 -0.232023 0.571594 1.06476 -0.129052 -0.351218 -0.307808 -0.456645 -0.0325037 -0.223947 -0.00470463 0.267897 0.529655 -0.141897 -0.129471 -0.0200437 -0.361746 0.335377 -0.373788 0.998207 0.103841 0.300494 0.554411 -0.74626 1.02608 -0.274975 0.16031 0.0951032 0.0855679 0.153138 1.02808 0.0695226 0.251807 -0.877519 0.836426 -0.0683994 0.0853507 0.050867 0.136897 0.521436 -0.0561568 0.56783 -0.103501 -0.666223 -0.101229 0.51703 -0.455087 -0.288535 0.358799 0.562061 0.682494 -0.236216 -0.392816 -0.392968 -0.644807 0.526568 -0.703165 -0.625133 0.249658 0.12889 0.390117 0.526269 0.0940568 -0.59428 -0.489186 0.0561396 -0.65579 -1.34147 -0.972067 -0.517747 0.331579 0.601479 0.588691 0.155986 2 2 -7.85803 1.14509 11 11 5 -1.67509 0.291226 0.670192 -0.341043 0.0430025 0.403256 0.986037 0.785308 -0.557351 -0.903721 -0.619366 -0.19804 0.373079 0.240373 -0.292609 0.23374 0.459888 1.08636 0.835503 -0.612876 -0.615269 -0.420896 -0.331247 0.21559 -0.0493378 -0.256945 0.252041 1.25125 0.984303 0.107219 -0.547227 -0.666615 -0.264027 0.112981 -0.14262 -0.503553 -0.213565 0.44295 1.18806 0.319743 -0.699057 -0.637583 -0.351105 -0.278217 0.0527848 -0.225121 -0.0240572 -0.222645 1.83017 0.0789551 -0.196251 -0.0928676 -0.406818 -0.399022 -0.520865 0.500352 0.404347 0.487419 1.73004 0.96929 -1.00093 -0.547861 -0.49618 0.0228088 -0.483995 -0.119387 0.62269 0.330878 1.01125 1.27356 -0.747225 -0.608038 -0.35813 -0.0680894 0.00450097 -0.349651 -0.379582 1.01885 0.559745 0.493292 -0.300031 -1.2567 -0.306747 0.08962 0.374645 0.0586907 -0.334362 -0.138903 0.470548 0.39269 -0.38443 -0.73178 -0.404689 0.207449 0.337247 0.115035 -0.095411 -0.0339656 -0.288095 -0.130886 -0.404034 -0.778857 -0.289512 -0.0802249 0.163164 0.538141 0.346448 0.0763993 -0.261976 -0.31769 0.46445 -0.0798932 -0.842894 -0.343071 0.169628 0.209654 0.400544 0.0368256 -0.0501133 -0.512459 -0.333582 3 11 11 3 2 0 -10.0244 1.37928 11 11 5 -0.371581 -0.673998 -0.112803 -0.0849472 -0.126426 -0.167161 -0.387862 -2.13689 0.0062951 0.535685 -0.385474 -0.0910573 -0.0702643 -0.0445769 0.218814 0.629439 0.66445 -0.154363 -1.95512 0.31384 0.298552 -0.0586052 0.608798 0.083154 -0.0927663 0.695937 1.1505 0.990965 -0.978011 -1.73968 0.215906 0.535366 0.0221546 0.674838 0.105071 0.0548515 0.823116 1.54045 1.143 -1.92109 -0.837915 0.204274 0.0207747 0.0710489 0.522811 0.118046 0.213011 1.16002 1.31489 0.753396 -2.12639 -0.242701 0.196391 0.369356 0.108 0.507991 -0.183753 0.302218 1.22715 0.800534 -0.756362 -1.21421 0.344803 0.493759 0.656268 0.0790056 0.177867 -0.0309503 0.360867 1.15787 0.206675 -1.53086 -0.535446 0.166069 0.0397886 0.0676359 -0.316756 -0.0817495 0.286014 0.889026 0.703734 -0.665231 -0.690883 -0.305617 -0.0961677 0.101909 0.304722 -0.180568 -0.0931389 0.752559 0.435708 -0.74348 -0.97671 0.171567 -0.147219 0.0842163 -0.0181712 0.18276 -0.0589507 -0.241193 0.404571 -0.44142 -1.22952 0.302216 0.561423 -0.314966 -0.126221 0.288989 0.136512 0.0144354 -1.28585 -0.78996 -0.991071 0.458505 1.28901 0.222797 -0.967212 -0.947033 -0.0838908 0.0281818 0.233727 2 1 -6.57049 0.754613 11 11 5 -0.11402 -0.636544 -0.451585 -0.376678 -0.385185 -0.175026 0.482522 1.16162 0.189821 0.116073 0.155649 -0.0774411 -0.318484 -0.0686788 -0.398063 -0.466406 0.0759785 0.467752 0.600294 -0.676771 -0.212526 -0.268005 -0.0966988 -0.0558185 -0.416444 -0.13902 -0.496795 0.478853 1.0366 -0.0688317 -0.373985 0.090963 0.0390399 0.236425 0.209344 -0.0267892 -0.321678 -0.719661 0.51273 1.18364 -0.2057 -0.411522 -0.224366 0.512901 0.0174076 0.164962 -0.333899 -0.557706 -0.247583 1.1811 0.979222 -0.692526 -0.0106246 -0.411869 -0.0594919 -0.0541901 0.322323 -0.179006 -0.445449 0.622896 1.1441 0.385392 -0.309901 0.198256 -0.10287 0.531966 -0.0789312 -0.0708214 -0.278508 -0.31693 0.879811 0.953008 -0.273303 -0.35084 0.0408191 0.0569574 0.270658 -0.199277 -0.35351 -0.555762 0.794327 0.461991 0.042749 0.0123058 -0.101368 -0.235904 -0.142099 -0.191768 -0.293995 -0.355495 0.231855 0.177218 0.638817 -0.487886 -0.381878 -0.632094 -0.0778515 -0.24079 -0.0722721 -0.0963264 0.290141 0.236397 -0.0882496 0.221294 -0.815372 0.117403 -0.277668 0.151757 0.10476 0.0742007 0.0347277 -0.248729 -0.652634 0.24885 -0.542412 0.755819 0.589992 0.398455 -0.350384 -0.218125 -0.313086 2 2 -8.49173 1.12636 11 11 5 -0.788813 -0.321642 -0.120052 -0.233018 -0.657914 0.265396 0.314317 -1.07804 -0.320146 0.338684 -0.183808 -0.668371 -0.463511 -0.446698 0.129866 -0.318147 0.956243 0.198648 -1.54276 -0.628612 -0.121502 0.11022 -0.292741 -0.157048 0.273975 0.295413 0.218677 0.963541 -0.0791159 -1.44496 -0.18803 0.362594 0.024886 0.103522 -0.236333 0.0732516 0.219352 0.563934 1.02649 -0.442517 -0.835651 -0.720008 -0.187359 0.136756 0.345526 -0.291987 -0.00614265 0.535333 1.78621 1.19141 -1.6068 -0.706797 -0.271583 -0.0330685 0.173213 0.655041 -0.230773 0.478883 0.835834 0.602823 0.686525 -0.95603 -0.77044 -0.234796 0.173068 0.256092 0.101604 -0.120976 0.438496 1.53573 0.560642 0.0599329 -0.873654 -0.316925 -0.279796 0.00783853 0.304478 0.297569 -0.0627788 1.49449 0.898833 -0.563633 -0.880077 -0.187336 -0.503467 -0.081891 0.16718 -0.0838496 0.615224 0.344021 1.36188 -0.105755 -0.530297 0.276122 -0.46001 -0.231532 -0.492236 0.0445764 0.079702 0.836137 1.44015 0.0799212 -1.20087 0.0158934 -0.0299472 0.235102 -0.330112 -0.0978162 -0.174293 -0.209423 1.41959 0.222271 -1.1539 -0.855472 0.0955767 0.510274 0.0950868 -0.228827 -0.0615595 -0.0663079 -0.065999 3 11 11 3 2 0 -11.7592 1.26268 11 11 5 0.0351862 -0.0365589 0.101143 0.165215 -0.321776 -1.22071 -0.211178 2.65059 0.35093 -0.532014 -0.218512 -0.153123 0.0779396 -0.0172367 -0.0945155 -0.131604 -0.800575 -0.141314 1.85741 0.4409 -0.517848 -0.161676 -0.293467 0.127234 0.0889695 -0.208367 -0.284589 -0.399544 -1.11888 0.990393 -0.0705865 -0.300263 -0.182228 -0.198689 0.163028 0.10253 -0.472398 -0.376682 -0.0765972 -1.48245 1.07205 0.197494 -0.363026 -0.128314 -0.118904 0.0740038 0.330639 -0.139058 0.146418 -0.42446 -1.71972 0.633823 -0.156675 -0.275545 0.171298 0.112797 -0.0676616 0.31414 0.0670792 0.757396 -1.10674 -1.68359 0.421349 0.112172 -0.205788 -0.0515238 0.251573 0.085132 0.544082 0.656346 1.39164 -2.09249 -1.08192 0.341084 0.0292939 0.166271 0.225991 0.258695 0.0607111 0.66321 1.07508 1.51959 -2.63859 -0.956291 0.153967 0.173535 0.0949441 -0.173346 0.173771 0.299523 1.30083 1.14971 1.00696 -2.25574 -0.339782 0.350094 0.148054 0.0860473 0.0805124 0.148308 0.580942 1.58837 0.940063 0.102087 -1.5657 0.0147136 0.390583 0.167968 -0.00838938 0.074231 -0.222269 0.560399 0.928544 -0.142257 -0.991531 -1.57119 0.0267352 0.590204 0.310714 0.0367824 0.194523 2 1 -7.72364 0.942238 11 11 5 -0.180375 -0.258754 -0.45807 -0.631787 0.143414 -0.412127 0.358841 -0.884157 -0.331029 0.411617 0.349019 0.0771404 -0.172514 0.028047 -0.262951 0.22212 -0.678053 1.29994 0.0680812 0.551813 0.438354 0.428626 -0.275959 -0.186432 0.0418894 -0.153007 0.188445 -0.910111 1.34221 -0.145582 0.149577 0.447509 0.359603 -0.0876893 -0.193668 0.0241845 -0.17629 -0.353949 -0.21774 1.04612 0.260997 0.296688 -0.0580207 -0.147242 -0.0347087 0.111483 -0.162323 -0.149369 -0.713617 0.253071 0.675699 0.00339916 -0.0587411 -0.114178 0.346314 -0.259464 -0.273866 -0.193896 -0.0907467 -0.0542887 0.457238 0.27363 -0.371502 0.114444 -0.165814 -0.0282086 -0.26307 -0.0124671 -0.294487 -0.51036 0.61268 0.721799 -0.698975 -0.0234205 -0.362975 -0.253141 0.138396 0.105463 -0.193827 -0.281672 -0.855274 1.14419 1.01981 -0.952505 -0.424295 -0.300514 0.303927 0.220651 -0.0427532 -0.255906 -0.202564 -0.501014 1.62486 0.456072 -0.978238 -0.247679 -0.0869824 0.0908127 0.338409 -0.0248238 -0.438748 -0.662488 0.543616 1.2444 0.671673 -0.953289 -0.11727 -0.252364 0.335419 0.258285 -0.174792 -0.590705 -0.717441 0.734017 1.2475 -0.272969 -0.443342 -0.572342 0.0459568 0.0614088 0.120126 2 2 -9.87423 0.922819 11 11 5 -0.370099 0.442781 1.01483 0.247664 -0.0934757 -1.50365 -1.57272 1.72789 0.99357 0.0703856 -0.512177 -0.693683 0.262585 0.433569 0.00431205 -0.215495 -1.17539 -0.514422 1.26996 0.968423 0.144136 -0.505557 -0.542995 0.0302666 0.403141 0.101642 -0.107086 -0.376039 -1.28924 0.435382 0.857387 0.186389 -0.166093 -0.654937 0.123641 0.0892379 -0.387916 0.444542 0.495656 -1.21451 0.682861 0.416316 -0.00969646 -0.515281 -0.246678 0.212483 -0.198502 -0.368461 0.707693 0.423807 -1.81998 -0.11051 0.428155 0.0693515 -0.349826 -0.923759 -0.351027 0.301776 -0.535115 0.917894 0.35865 -1.48764 -0.118852 0.106763 -0.0873003 -0.301828 -0.230465 0.00864888 0.16862 -0.589464 0.926899 0.141935 -1.18036 -0.273548 0.150759 0.315593 0.0850133 -0.397816 0.133849 0.323583 0.364146 1.55935 -0.849345 -0.953866 -0.529008 -0.0867402 -0.0562899 -0.0951853 0.30803 0.0763282 0.651464 0.669261 1.14175 -1.5391 -0.798512 -0.478835 -0.239356 -0.0288754 0.330131 0.0945809 0.241164 1.15878 0.96829 0.982406 -1.34021 -0.752053 0.0470378 -0.151593 -0.0182617 -0.115361 0.585352 1.22806 1.8197 1.24207 0.512003 -0.703199 -0.443178 -0.169172 0.0559105 -0.200951 -0.123127 3 11 11 3 2 0 -16.1057 1.69737 11 11 5 0.885993 1.40548 1.01637 -0.0967898 0.43086 -2.28686 -2.24375 0.430731 0.336336 -0.305031 -0.372168 0.419601 0.434611 0.0698549 -0.467175 0.505621 -1.11968 -1.48393 -0.115328 -0.359809 -0.366845 -0.319918 -0.148271 0.0592525 0.0554167 -0.292446 0.619729 -1.17459 -0.554654 -0.505023 -0.419068 -0.465622 0.19438 -0.466556 -0.0272171 -0.0434516 -0.433899 0.837617 -1.13321 0.51995 0.219361 -0.151364 -0.137281 0.075901 -0.280189 0.108994 0.309724 -0.0422028 0.811944 -0.829815 1.68244 0.92772 0.00154172 -0.146208 -0.0313815 -0.598876 0.211062 0.0585052 -0.239999 0.53586 -1.1691 2.57933 1.60059 0.289235 -0.323029 0.0257415 -0.582662 0.134923 -0.163932 -0.49953 0.412841 -1.19768 1.95636 1.61456 0.0855802 -0.609916 -0.0710504 -0.430079 0.0586082 -0.295944 -0.721035 0.54941 -1.76487 0.975608 0.583401 0.0397017 -0.448328 -0.307614 -0.1858 0.361756 -0.150219 -0.519615 0.816102 -2.12726 0.232947 0.281266 -0.406013 -1.14954 0.170147 0.108813 0.87393 0.335472 0.320953 1.34608 -2.30302 -0.226684 0.33 -0.0492526 -0.104516 0.451938 0.824852 1.70843 1.54361 1.82219 1.75649 -3.52782 -1.32186 0.399794 -0.121269 -0.0457218 0.726316 2 1 -8.34579 0.829929 11 11 5 -0.146249 -0.373927 -0.715437 -1.1732 1.41469 2.03067 0.803225 -0.154722 -0.856483 0.000941596 0.665139 -0.256718 -0.0982628 -0.0178828 -1.01838 0.396223 0.617676 -0.00247569 -0.33684 -0.144624 -0.126692 -0.219433 0.078232 -0.0067935 0.0325523 -0.916715 0.36298 -0.087524 0.216392 -0.0840418 0.0675051 -0.0572203 0.627571 0.118017 -0.078992 -0.305683 -0.911027 0.158839 -0.551562 0.870318 -0.260594 0.202168 -0.20445 -0.0484064 0.0741553 0.0588273 -0.175438 -0.706886 0.209935 -0.628378 0.141587 -0.738629 -0.251533 -0.0595365 0.192809 -0.0239202 0.0436826 -0.291386 -0.50871 0.0834199 -0.419114 -0.025543 -0.515004 0.439912 -0.147081 0.167211 -0.230865 -0.225587 -0.0736779 -0.16046 -0.359286 0.146475 0.658989 -0.118492 1.07193 0.470142 0.215116 -0.26121 -0.122562 0.115781 -0.196181 -0.0141139 0.398656 0.430137 0.0131259 0.731699 0.483341 0.541841 -0.0388338 0.016637 -0.00604822 -0.684679 0.393861 0.713795 0.377268 0.130351 0.579113 0.101891 -0.568337 -0.113614 -0.0972912 -0.258278 -1.25045 0.789707 0.971917 -0.206459 0.0279324 0.427745 0.122346 -0.0728533 -0.697918 -0.622724 -0.852665 -1.36775 2.39843 2.12738 -0.532922 -0.942231 -0.503492 -0.688255 0.382398 2 2 -9.19355 0.97607 11 11 5 -0.190455 1.65885 1.49683 0.191952 0.130859 -1.53245 -1.52812 0.629594 0.965101 0.346132 -0.674271 0.214806 0.810913 0.665114 -0.263242 0.481235 -0.951282 -1.29561 -0.434068 0.246617 -0.251528 -0.534941 -0.237006 0.903178 0.883021 -0.23702 0.53622 -1.24102 -1.36863 -0.701872 -0.192238 -0.0138813 0.172635 -0.217973 0.765886 0.180047 0.0316089 0.558399 -1.39971 -1.0877 -0.0834795 -0.456936 -0.147278 -0.232194 0.0534686 0.584128 0.665866 0.117741 0.352514 -1.15354 -0.838803 0.207044 0.0551575 -0.0947742 -0.500101 -0.123649 0.442915 0.796686 0.244692 0.319879 -1.18291 0.173817 0.914017 0.371144 -0.223377 -0.216885 0.00508283 0.444272 0.648672 -0.324204 0.0908463 -0.804726 0.69828 1.01036 0.468852 -0.21076 -0.478244 -0.450829 0.287951 0.187022 -0.109727 0.610965 -0.562313 0.712081 0.519078 0.684008 -0.235249 -0.503458 -0.244449 0.146605 0.109805 -0.427608 1.06129 -0.141656 0.298649 0.603069 0.340424 -0.198063 -0.468548 -0.812542 -0.23128 0.00456333 -0.309425 1.23542 -0.462102 -0.73846 0.114614 0.399256 -0.261624 -0.404994 -0.404869 0.299712 -0.192175 0.315471 2.30939 -1.13461 -0.565864 0.0925321 -0.209083 -0.467526 0.0947889 3 11 11 3 2 0 -15.7443 2.69949 11 11 5 -1.52772 1.14872 1.53675 0.479383 -0.45701 -5.10172 -0.459348 1.09975 0.629116 -0.184662 -0.325904 -0.771408 1.21056 1.34965 0.315116 0.0551717 -2.74898 -0.104521 0.904297 0.287615 -0.606704 -0.198578 -0.0353548 1.00816 0.740469 0.322842 0.38773 -1.71943 -0.258477 0.744463 0.326363 -0.370056 -0.307575 0.0500863 0.76028 0.72931 0.315979 0.397983 -1.51885 -0.436007 0.657437 0.294502 0.0160363 -0.00699807 0.623864 0.62128 0.539742 0.00651324 0.547543 -1.37349 -0.487207 0.271797 0.29097 0.0180654 0.0455962 0.671857 0.55726 0.212303 -0.339652 0.555896 -0.995456 -1.01687 -0.169099 -0.373893 -0.443424 0.0955993 0.240125 0.188907 -0.279158 -0.247378 0.791239 -0.778362 -0.945805 -0.565622 -0.58869 -0.609404 -0.0412128 -0.0535838 -0.191399 -0.214527 -0.120975 0.831312 -0.838155 -0.556543 -0.515727 -0.513142 -0.337176 0.161224 -0.174782 -0.0964052 -0.0526237 -0.0901665 0.827427 -0.762976 0.0821324 -0.000730462 -0.163626 -0.314945 0.059989 -0.0243049 0.140729 -0.13126 0.0639378 1.01129 -0.264369 1.10322 0.624713 0.100939 -0.446714 -0.136305 0.124937 0.345954 0.0258844 0.41872 1.22598 0.0235267 2.10251 1.5925 0.209276 -0.565032 -0.16289 2 1 -8.0188 0.842174 11 11 5 -0.500867 -0.724147 -0.698955 -0.38569 3.61826 1.09547 -0.0432277 0.201477 -0.027448 -0.00772913 0.141015 0.228551 -0.378453 -0.771335 -0.457628 1.49912 -0.192305 -0.953229 -0.582705 -0.637739 -0.0418666 -0.0591273 -0.297075 -0.445893 -0.399095 -0.228809 1.68676 0.150184 -0.287453 0.114126 -0.19016 0.249605 -0.0342276 -0.328333 -0.211055 -0.162073 -0.525797 1.41377 -0.0478216 -0.15079 -0.29794 -0.162122 0.128087 0.283346 0.0689146 0.000175392 -0.255727 -0.801483 1.06201 0.312029 -0.0196951 0.121392 -0.154695 0.172396 0.413094 -0.239373 0.31162 -0.0273658 -0.710425 0.461015 0.735537 0.148276 -0.423733 -0.25547 0.310985 0.546209 -0.129209 0.174276 -0.0805741 -0.769392 0.538706 0.733093 0.038472 -0.124107 -0.427011 -0.037627 -0.0917608 0.209231 0.0311827 -0.296625 -0.799807 0.663893 0.360851 -0.077477 0.00606342 0.443592 0.0722671 0.405706 0.0915217 -0.0479591 -0.450565 -0.841553 0.193848 -0.267728 0.0886336 0.623207 0.115044 -0.0353557 0.200452 -0.017367 -0.041822 -0.412445 -0.821794 -0.106226 -0.217714 -0.186812 -0.333201 -0.0937595 -0.155037 0.00267745 -0.34229 -0.254224 -0.775961 -1.25743 -0.241235 0.756559 -0.200878 -0.335052 1.05045 0.729171 0.386818 2 2 -10.7977 1.26611 11 11 5 -1.61913 0.573949 0.939053 0.203923 0.29957 -3.05233 -1.26899 0.913111 0.837922 0.181173 -0.0819425 -1.5991 0.634854 0.721579 -0.384431 0.608851 -1.57794 -1.22381 0.487394 0.55125 -0.232013 0.149366 -0.972333 0.469072 0.897584 0.277492 0.602713 -1.59051 -0.904061 0.470042 0.493973 0.204567 -0.0867555 -0.784246 0.764323 0.770818 0.20093 0.472048 -0.79324 -0.929013 0.524039 0.997895 0.378166 -0.42837 -0.118621 0.779557 0.726603 0.0707346 0.92591 -1.15305 -0.972931 0.376884 0.640534 0.121732 0.110387 0.172118 1.01737 0.646414 -0.246222 0.719032 -0.689136 -0.913124 0.216778 0.441506 0.0793952 -0.326363 -0.108904 0.59244 0.468578 -0.094969 0.367823 -0.00991812 -0.725386 -0.529252 -0.0347843 -0.0159839 -0.315672 0.305799 0.89468 0.259486 0.126153 0.0491263 -0.463183 -0.643908 -0.497826 -0.331112 0.00272364 0.103069 -0.0373114 0.765356 0.405151 -0.229102 0.337184 -0.780686 -0.722997 -0.347806 0.225093 -0.188325 -0.280475 0.0576685 0.473032 0.297198 0.260459 -0.157196 -0.729012 -0.237932 0.148552 0.185832 -0.0685905 -0.393646 -0.0527381 0.741849 0.512873 0.0558424 0.370359 -0.8507 0.399121 0.797593 0.341563 -0.0460693 -0.374153 3 11 11 3 2 0 -15.9994 3.80939 11 11 5 0.228595 0.772655 1.16991 0.796558 -0.491774 -1.19859 0.682232 1.14332 0.163583 -0.0446057 0.0227208 0.0193348 0.5222 0.704257 0.228397 -0.439228 -2.00879 -0.0597298 -0.0580505 -0.6125 0.00491763 -0.0741469 -0.395266 0.353509 0.459482 -0.0170697 -0.298998 -2.62011 -0.50332 -0.359136 -0.338278 0.0501623 0.0929923 -0.49456 0.587366 0.715098 -0.139769 0.026701 -3.22665 -0.684604 -0.044393 0.175883 0.139437 0.185132 -1.02441 0.609129 0.762725 -0.0401515 0.277296 -3.1392 -0.357915 0.880151 0.402928 -0.0673503 0.115917 -0.890276 0.8083 1.06766 0.156333 0.183108 -2.49995 -0.0121615 1.03614 0.490958 -0.313704 0.166696 -0.657281 0.902198 1.19709 0.39149 -0.0371686 -1.43128 -0.182863 0.814915 0.243447 -0.369244 -0.238866 -0.270435 0.837396 0.864337 0.383403 0.136073 -0.758487 -0.568758 0.696834 0.326752 -0.347013 -0.156085 0.0837547 0.741978 0.692517 0.383075 0.25693 -0.471197 -0.630196 0.789924 0.374995 -0.111994 -0.0173407 0.523985 0.705467 0.618464 0.340831 0.310415 -0.264306 -0.97499 0.618314 0.101429 -0.00964947 0.131152 0.693487 0.892486 0.639116 0.24928 0.570642 0.0483243 -1.63353 -0.214106 -0.239487 -0.518391 -0.205121 2 1 -9.03425 0.853142 11 11 5 -0.404785 -0.760575 0.130124 -0.499075 0.68944 -1.59134 -2.00274 -1.11154 -0.334275 -0.0164351 0.231917 -0.645719 -0.34111 0.367322 -0.20359 1.49411 -0.268175 -1.45474 -0.182187 0.148151 0.2806 0.303346 -0.543252 -0.508217 0.468732 -0.0901717 1.64579 -0.281798 -1.00541 0.437252 0.680179 0.271102 0.0186039 -0.280016 -0.0812786 0.653522 0.17919 1.8319 -0.0897974 -0.459853 1.24863 0.22337 0.361214 0.346775 -0.146895 -0.318799 0.254879 0.286036 1.43049 -0.000207081 -0.118927 0.676657 0.316828 0.292782 0.12536 -0.158847 -0.0546552 -0.678745 0.279814 0.818908 -0.0132696 -0.322214 0.198639 -0.109209 -0.191954 0.0560385 0.00967435 -0.502045 -0.781828 0.038534 0.614921 0.0430426 -0.923913 -0.122122 -0.535227 -0.0495037 -0.0466653 0.0588075 -0.286039 -0.464321 0.298814 1.04107 0.466447 -0.354636 -0.182738 -0.370618 0.183066 0.298542 -0.401985 -0.434384 -0.362989 0.219369 0.926368 0.456158 0.00442488 -0.413132 -0.0951717 -0.124561 0.242194 0.0771562 -0.410086 -0.616185 -0.0805154 0.656597 0.93123 0.0495298 -0.4117 -0.0570209 0.145997 0.0505073 -0.271998 -0.314672 -0.438548 -0.525271 0.136312 0.839702 0.301258 -0.577768 -0.161981 0.331384 0.418545 2 2 -10.6365 0.939369 11 11 5 0.0232033 0.130833 1.25752 1.41452 -0.248495 -0.370538 0.672231 0.630079 0.575385 0.181745 -0.063753 -0.0931086 0.120133 0.897064 1.16657 0.136066 -0.229978 -0.035593 0.404293 -0.114986 -0.0281777 -0.0752874 -0.0818596 -0.0401817 0.379723 0.471205 0.429156 -0.544943 -0.31616 -0.286875 0.0772198 0.0230389 0.314904 -0.536666 0.260114 0.408563 0.0563318 0.875329 -1.12713 -1.4337 -0.51006 -0.0347663 0.29063 -0.00313987 -1.23267 0.299107 0.271554 0.0269824 1.14237 -1.71223 -1.49048 0.145162 0.530594 0.0728621 -0.188411 -1.39354 0.452382 0.722139 -0.0967156 0.768912 -1.7586 -1.17576 0.333053 0.717978 0.0637212 0.00658983 -1.67381 0.554476 0.509918 0.297854 0.5703 -1.27338 -1.27195 0.341461 0.323516 -0.0749223 0.100299 -1.18452 0.412446 0.893308 0.205231 0.229008 -1.04555 -0.991448 0.081671 0.475811 -0.10994 -0.344285 -0.869927 0.396154 0.575409 0.317677 0.275988 -0.552568 -1.22694 0.19984 0.283102 0.104463 -0.244178 -0.54989 0.720176 0.883546 0.613654 0.343646 -0.288918 -1.47646 0.215183 0.298873 0.249672 -0.0608488 -0.397155 1.04485 0.64895 0.473707 0.203036 0.297217 -0.961508 -0.0546984 0.533953 0.0109793 -0.558002 3 11 11 3 2 0 -17.5554 2.17648 11 11 5 0.76821 -0.422042 -0.247272 0.0390753 -0.0213841 -0.230585 -0.293285 0.166297 0.546534 1.11402 1.76043 0.463366 -0.387075 -0.0602641 0.173702 -0.262677 -0.744801 -0.550591 0.234099 0.499573 0.509183 0.350075 0.240324 -0.345763 0.0282193 -0.192289 -0.54109 -0.4833 -0.129113 0.294984 -0.0678327 -0.4665 -0.691526 0.17512 -0.294131 -0.256854 -0.365818 -0.407672 0.320421 0.941553 0.108536 -0.594316 -0.962037 -0.5865 0.0318815 -0.656117 -0.465415 -0.123438 0.554264 2.22275 1.12402 -1.34427 -1.10659 -0.148059 0.492278 -0.274995 -0.757983 -0.0994461 0.636861 1.62086 1.88603 -2.73422 -1.985 0.147457 0.890287 1.00399 -0.451039 -0.526374 0.127118 1.13046 1.66793 -0.67693 -2.04788 -0.421607 1.50386 1.89399 1.81507 -0.734546 -0.266627 0.429462 0.645552 0.323737 -0.541789 -0.544554 0.738978 1.2648 0.893002 0.963232 -0.646259 -0.21656 -0.0497341 -0.0422922 -0.453241 0.101903 0.316852 0.578678 -0.297049 -1.1697 -0.15066 -0.575289 -0.685893 -0.495275 -0.482079 -0.201166 0.577838 0.394983 -0.277898 -0.879875 -1.39688 -1.11889 -0.575197 -0.753181 -0.478761 -0.209864 1.0093 2.21346 1.51301 0.142739 -0.974663 -1.2852 -0.663353 2 1 -9.20606 0.75073 11 11 5 -0.104044 0.0179064 0.177605 -0.179035 0.0277242 0.519178 0.979179 -0.375071 -0.758727 -0.857274 -1.65058 -0.445436 0.10768 0.127167 -0.075719 0.102718 0.429708 0.604935 -0.5403 0.0972766 -0.0170114 -0.0436285 -0.602081 0.250783 0.0829698 -0.0769339 0.12071 0.160662 -0.719193 -0.249166 0.312522 0.254043 1.14236 -0.38064 0.64522 0.203849 0.0780764 -0.0123327 -0.730914 -1.32408 0.963058 0.32699 0.0465056 1.04116 -0.412188 0.438721 -0.145413 -0.0191609 -0.311133 -2.22147 0.844105 0.270615 -0.426092 -0.544693 0.0956359 -0.514166 0.200301 0.0334621 -0.233501 -0.766808 -1.33337 -0.797833 0.351581 -0.0239747 -0.626525 -0.19029 -0.505633 0.349965 0.0797856 0.175431 -1.24422 -1.68579 -0.0812975 1.16639 -0.520076 -0.43002 0.0678746 -0.203559 0.339981 0.143851 0.326279 -0.663122 -0.485186 0.409735 -0.56712 -0.545965 0.149883 0.563958 0.0605649 0.523205 0.36082 0.403458 0.26528 0.0549932 -0.579268 -0.990595 0.463961 0.446675 1.52881 0.0281442 0.58733 0.559003 0.821986 0.613513 -0.122353 -0.635379 -0.827999 0.413687 0.320239 1.48277 0.0585764 0.946981 1.16349 1.18247 1.00245 -0.056647 -0.803619 -0.315678 0.171401 0.481711 0.203301 2 2 -12.5903 1.21689 11 11 5 0.359207 -0.446589 -0.422879 -0.465606 0.193159 -0.116427 -0.458957 -0.340607 -0.160673 0.136825 0.259807 0.373595 -0.281241 -0.347719 0.470498 0.151924 0.0832159 -0.40913 0.18116 0.260656 0.738723 0.0748531 0.288694 0.0445204 0.111517 -0.0307431 -0.148984 -0.781267 0.0600589 0.19219 0.734389 0.638076 -0.387461 0.0486744 -0.142495 -0.2602 -0.804278 -1.4277 -0.743433 0.965486 0.894111 -0.246926 -0.492801 -0.142025 0.43238 -0.39067 -0.901832 -1.00573 -0.904337 2.03498 1.61624 -0.888254 -0.92507 -0.485183 -0.340462 0.415744 -0.406469 -0.944439 -0.451167 0.984564 1.89132 -1.66757 -1.39709 -0.0465502 -0.2612 0.0313516 0.4641 -0.318903 -0.499338 -0.0105468 1.5314 -0.608779 -1.42833 -0.0325983 0.263957 0.616185 0.86197 -0.172807 -0.228647 -0.0139929 0.59226 0.611195 -0.337697 -0.0176732 0.63804 1.02841 1.33927 1.35962 0.173134 0.216439 -0.0760641 0.408184 -0.404402 -0.293865 0.00199225 0.902301 0.953597 0.276202 1.31107 0.194207 -0.0830245 -0.261872 -0.43013 -0.854138 -0.356468 0.50249 0.532041 0.276228 -0.0964004 0.385425 0.55561 -0.595258 -0.657411 -0.980157 -0.525052 0.357613 0.816553 0.251145 -0.539616 -1.05709 -1.13414 3 11 11 3 2 0 -19.3242 2.36131 11 11 5 -0.250988 -0.29274 -0.621426 -0.357017 -0.116235 -0.512003 -0.856192 -1.10033 -0.966796 -0.762904 -0.785679 -0.399361 -0.189154 -0.135548 0.340769 0.456878 0.457785 0.417923 0.499095 0.777762 1.19257 1.49701 -0.16253 0.137714 0.0403588 0.0739199 0.171527 0.144408 0.301189 0.392996 0.574226 0.744794 1.2932 0.0528601 0.201642 -0.313051 -0.636633 -0.453204 -0.241084 0.192364 0.476429 0.455856 0.478263 0.953654 -0.318171 -0.452004 -1.15336 -1.06162 -0.485438 0.433142 1.15631 0.298122 0.159939 -0.065565 0.432757 -0.608285 -0.83224 -0.733334 0.166459 1.55533 1.58835 -1.22683 -1.98483 -1.3103 -0.846683 -1.09318 -0.449401 0.0120672 0.92952 1.59788 0.561365 -1.70368 -1.89086 -0.377494 -0.103993 -0.980992 -1.6699 0.00141047 1.00448 1.59615 0.403721 -1.21945 -1.42725 0.408946 1.3512 1.42782 0.754779 -0.202232 0.175949 1.10934 0.984409 -0.499574 -1.29016 -0.0328893 1.71951 1.93803 1.97429 1.35521 0.205957 -0.132905 0.330574 0.0155779 -0.544274 -0.501434 0.0422111 0.529345 -0.0361948 0.461162 0.480388 0.187346 -0.888082 -0.294447 0.187783 0.38266 0.159767 -0.27839 -0.822822 -1.05397 -0.447727 -0.80973 -1.42182 2 1 -11.9197 1.30017 11 11 5 0.079843 -0.0744538 0.0513112 0.402725 0.0749223 0.227195 0.086228 -0.447569 -0.224078 -0.33037 -0.760288 -0.0630259 0.0751091 0.0238861 0.390553 0.0427366 0.0256457 -0.117858 -0.543224 -0.517071 -0.941575 -1.51331 0.187202 -0.0404461 0.115601 0.404382 0.312894 0.0770513 -0.112296 -0.285234 -0.471542 -0.786767 -1.37563 0.234502 0.101216 0.148301 0.395979 0.897328 0.439936 -0.208412 -0.481453 -0.36884 0.0632209 0.634642 0.171548 0.109735 0.182125 0.577254 -0.158588 -1.21933 -0.558209 0.989423 0.697277 1.22851 2.40019 0.153252 0.0097321 -0.00698606 -0.614059 -1.30345 0.657725 1.86536 -0.516872 -0.372545 0.636232 2.40544 0.14891 -0.342434 -0.698772 -0.406619 0.109713 -0.265783 -1.27901 -0.791535 -0.451609 -0.00510376 -0.0648534 0.128934 -0.292878 -0.759745 -0.995894 -0.386983 -0.0260638 0.481945 -0.156872 0.388784 0.193414 -1.43734 0.0802213 -0.37282 -0.713154 -0.816746 0.0303886 1.07857 -0.477205 -0.612922 -0.342369 0.0316782 -0.623004 0.403399 0.411746 -0.0380894 -0.397066 0.1415 -0.393402 -0.524085 0.394157 -0.107524 0.743671 0.777511 0.719601 0.764451 0.128447 0.165971 -0.455336 -0.373988 -0.184528 0.513045 0.400893 1.33331 2.06081 2 2 -12.9418 1.59023 11 11 5 0.0454851 0.139331 -0.312296 -0.475623 -0.163645 -0.270384 -0.74486 -0.709727 -0.919738 -1.00781 -1.02176 -0.254036 -0.107864 -0.0697437 0.124884 0.14997 -0.179654 0.0532969 0.0344383 -0.0429713 0.189305 -0.352821 -0.257544 0.130839 0.221716 0.373506 0.483136 0.271545 -0.0403533 -0.145489 -0.100196 0.160171 -0.193515 -0.149441 0.738531 0.2825 0.0208669 -0.245782 -0.248193 0.298672 0.515008 0.149471 0.0855104 -0.130971 0.0218435 -0.253439 -0.661179 -0.878915 -0.925888 0.9044 1.85651 1.16869 0.860894 0.277428 0.59724 -0.427183 -0.94738 -1.12685 -0.371081 1.07697 1.85546 -0.0413014 -0.652005 -0.46721 -0.194066 -0.0181672 -1.16761 -0.879686 -0.0464216 1.18221 0.619628 -1.09631 -1.78395 -0.678429 -0.39709 -0.815692 -0.940401 -0.543894 0.0164454 0.932175 0.289833 -0.545837 -1.49478 -0.761497 -0.0161149 0.210226 -0.00438106 -0.565999 -0.0275101 0.558581 1.10187 -0.10563 -0.305242 -0.157005 0.541219 1.01388 1.10308 0.811066 0.190188 0.302992 0.689401 -0.103155 -0.363849 0.0472339 0.13566 0.739332 0.912751 0.845266 0.51631 1.0577 -0.0145595 -0.407595 -0.813903 -0.0508929 -0.221772 0.407186 0.664778 0.393981 0.412798 0.288786 0.346146 3 11 11 3 2 0 -18.1755 2.1586 11 11 5 0.138126 -0.280083 -0.454953 -0.699332 -0.89154 -1.13364 -1.06795 -1.09703 -1.03242 -0.952807 -1.22947 0.175102 0.127809 0.11714 0.138824 -0.0881485 -0.343206 -0.126103 0.0643889 0.0848026 0.273407 0.012754 0.471211 0.320408 0.597462 0.582302 0.3798 0.401105 0.550418 0.662964 0.766077 0.979926 1.16433 0.285929 0.0459601 0.447819 0.306038 0.340069 0.297726 0.36273 0.146259 0.414767 0.863682 1.21099 -0.37039 -0.451873 -0.164418 0.0324826 0.322637 0.485615 0.634845 0.524761 0.779586 0.883793 1.01339 -0.751989 -0.592661 -0.144744 0.146113 0.524223 0.680594 0.590266 0.51115 0.434454 0.497859 0.223084 0.225203 0.480864 0.269432 -0.650537 -1.73556 -2.13806 -2.1387 -2.02658 -1.68849 -1.03138 -0.45735 1.30879 0.499967 -0.0495412 -0.264801 -0.169321 -0.240613 -0.343805 -0.944293 -1.08132 -0.998664 -0.604393 0.78842 -0.472907 -0.316566 0.185987 1.06614 1.50862 1.37324 0.731635 0.257308 0.00287079 -0.62934 -0.0186547 -1.10017 -0.454359 0.449909 1.10366 1.31962 1.03823 0.817756 0.231448 0.399829 -0.78328 -0.234655 -0.559931 -0.191366 -0.0821264 -0.0168272 0.061555 -0.519936 -0.380713 -0.138244 0.0556312 -0.855975 2 1 -12.2667 1.48695 11 11 5 0.103054 0.546664 -0.120523 0.0252288 0.161881 0.226737 0.610421 0.503953 0.508643 0.300563 0.45393 0.0423471 0.0394276 -0.26204 -0.207786 -0.661266 -0.674364 -0.37777 -0.0951099 -0.25729 -0.678456 -0.755986 0.233131 0.0312858 0.0640864 -0.158076 -0.531432 -0.277659 -0.178809 -0.386064 -0.599964 -0.817717 -0.797777 0.269518 0.374781 0.234697 0.0594066 0.00148816 -0.168085 -0.221993 -0.616275 -0.839849 -0.591029 -0.47494 0.252301 0.772573 0.415971 0.282172 -0.0729297 -0.522864 -0.853855 -0.855412 -0.0155058 -0.0224722 -0.0555957 0.0358548 0.117673 -0.268116 -0.295503 0.192998 1.09251 1.96757 1.91481 2.14218 1.30837 0.999609 -0.645484 -0.23681 -0.362227 0.184725 0.0702962 -0.758069 -0.586649 0.797826 1.71691 1.58586 0.620645 -0.641044 0.00113219 0.22795 -0.414524 -1.12001 -0.00520916 0.0837553 -0.136672 -0.726168 -0.29377 -0.465836 -0.910415 -0.0774488 0.0640967 -0.198433 0.00615862 0.0577278 0.571638 0.503682 -0.0590783 -1.02854 -1.71079 -0.407761 -0.0480987 0.491854 -0.383373 -0.551724 -0.349155 0.0584575 -0.137164 0.0489869 -0.785227 -0.206493 -0.0769506 -0.0810488 0.1996 -0.104346 0.0395639 0.400668 0.914365 1.08857 0.872308 0.0720741 0.256191 2 2 -11.9944 1.74871 11 11 5 -0.0186926 0.163102 -0.211871 -0.384302 -0.504612 -0.546947 -0.563314 -0.360911 -0.195797 -0.0799138 -0.559226 -0.296188 -0.239169 -0.366335 -0.310832 -0.765847 -0.682649 -0.715318 -0.477793 -0.632497 -0.520149 -0.954538 -0.109532 0.169196 0.128588 0.28744 0.0902794 -0.0954255 -0.0628313 0.0619561 0.17659 -0.0177544 -0.24295 0.398049 0.245991 0.544535 0.210751 -0.113257 -0.315526 0.0770557 -0.59234 -0.0455147 -0.062319 0.46935 -0.217046 0.408717 0.311031 0.533271 0.782693 0.653885 0.0407293 -0.190296 0.0638077 0.509982 1.12306 -1.10235 -0.540594 0.262775 1.45721 1.42036 1.22371 0.961492 0.798919 0.833435 1.08304 1.10721 -0.540335 0.2433 0.307078 -0.151746 -0.794509 -0.528507 -0.716947 -0.495641 -0.434916 -0.355163 0.0896292 0.780259 -0.153397 -0.491824 -0.812633 -1.10085 -0.701361 -1.07301 -1.0948 -0.889751 -1.08863 -0.719526 1.10537 0.135652 -0.652465 -0.208593 0.503615 0.469571 0.231833 0.29903 -0.347333 -0.630994 -0.399865 0.191169 -0.293222 -0.384974 0.27577 0.613174 0.836948 0.797067 0.599844 0.423917 0.447439 0.10323 -0.217651 -0.340022 0.0515474 0.20017 0.781093 0.547466 0.250502 0.181623 0.369189 0.782506 0.497122 3 11 11 3 2 0 -18.1635 2.60104 11 11 5 0.181045 -0.607575 -0.837 -0.748942 -0.841431 -0.765614 -0.814514 -0.799887 -0.762247 -0.717799 -0.617789 0.572191 -0.165954 -0.32725 -0.137441 -0.276879 0.0595372 0.148187 0.128658 0.0332102 -0.312002 -0.354937 0.972123 0.393954 0.335568 0.380378 0.523277 0.733214 0.81293 0.887056 0.818775 0.390101 0.0654903 0.762947 0.407889 0.293728 0.345246 0.28335 0.352392 0.660098 0.585142 0.638663 0.536551 0.285908 -0.0525727 -0.026436 0.0290629 0.252352 0.352756 0.423435 0.766722 0.581931 0.446809 0.360164 0.15704 -0.316885 -0.334051 -0.216081 0.284774 0.860404 1.54817 1.36712 0.773566 4.93116e-05 0.0459293 0.247898 0.0556174 -0.439103 -0.889312 -1.53619 -2.26229 -2.7869 -2.27626 -1.3681 -0.791844 -0.197934 0.747058 0.173985 0.290503 -0.00541388 -0.332518 -0.736089 -0.958264 -1.08651 -1.04801 -0.646558 -0.0264181 1.32856 -0.426929 0.51513 0.888935 0.678106 0.36047 0.511912 0.36288 0.403972 -0.0564093 -0.327733 1.09038 -0.103343 0.625596 0.736313 0.687588 0.543192 0.642954 0.759285 0.377572 -0.326354 -0.790726 0.478029 0.00592758 0.228608 -0.402426 -0.561337 -0.330523 -0.176873 0.112823 -0.102749 -0.826052 -1.33266 -0.506038 2 1 -14.3074 1.90008 11 11 5 -0.205036 0.386044 0.443373 0.829813 0.355216 0.392447 -0.0429852 0.227852 0.395864 0.717432 0.839277 -0.24858 -0.733881 -0.451637 -0.324504 -0.0824022 -0.202777 -0.561271 -0.584402 -0.611265 -0.364639 -0.0387163 -0.0235116 -0.239908 -0.401481 -0.16182 -0.333559 -0.410669 -0.576586 -0.350686 -0.47743 -0.339828 -0.0610873 0.140336 0.0305771 0.0941079 -0.0135713 -0.22201 -0.413249 -0.167366 -0.516937 -0.152371 0.173239 -0.12265 0.0544244 0.288769 0.160242 -0.350067 -1.1683 -1.28454 -1.11678 -0.501421 -0.211443 0.00698903 -0.0431157 -0.365314 -0.0667768 0.21299 1.24921 2.24617 2.60201 2.17322 1.07234 0.465129 -0.234834 -0.509453 -0.362841 -0.131196 -0.442308 -0.246328 0.274121 1.08244 1.71712 1.82151 0.737657 0.146606 -1.12465 -0.276645 -0.505798 -0.291464 0.0247444 -0.0924391 -0.732777 -1.50643 -1.33178 -0.0133944 -0.187701 -0.422293 -0.574448 -0.366842 0.0747528 0.446176 0.343311 -0.00841698 -0.667374 -0.63445 -0.979025 -0.290949 0.138219 0.111888 0.066093 -0.0585525 -0.0966441 -0.0267412 -0.363979 -0.537328 -0.717318 -0.0907245 -0.148952 0.75861 -0.066431 0.133011 0.390519 0.612563 1.01027 0.710085 0.308266 0.273689 0.296799 0.640744 0.90885 2 2 -13.0335 1.87891 11 11 5 -0.0103901 -0.403779 -0.413374 -0.228616 -0.387563 -0.278614 -0.283457 -0.246392 -0.278544 -0.336625 -0.542348 -0.362627 -0.412068 -0.807093 -0.13694 -0.79602 -0.344061 -0.524414 -0.47188 -0.647418 -0.889428 -0.310345 0.291815 0.0771562 -0.13617 -0.176128 0.175084 -0.0567261 0.211756 -0.0298307 -0.0618302 -0.360527 -0.244585 1.06995 0.413217 -0.154085 -0.220242 -0.0853124 -0.224668 0.096294 0.256136 0.576668 -0.087062 -0.260187 0.474981 0.773998 0.507482 0.428552 0.0965565 0.142877 0.438914 0.616237 0.429371 -0.0781478 -0.608373 0.795032 0.73728 0.725093 0.832002 1.29281 1.59836 1.99734 1.65001 0.776268 0.0139718 -0.461581 0.14839 -0.461797 -0.487205 -0.521443 -0.533097 -0.667506 -0.523548 0.11159 0.112173 -0.0262192 -0.422881 0.24081 -0.288367 -0.458631 -0.711798 -1.01794 -1.64479 -1.44416 -1.45092 -0.732173 -0.210048 -0.361023 -0.165104 0.337273 0.713018 0.354653 -0.0456597 -0.196599 -0.454469 -0.26707 -0.00354169 0.0603226 -0.0549956 0.101106 0.48721 0.673575 0.634391 0.6148 0.427552 0.482269 0.673925 0.413158 -0.00529692 -0.483557 0.379141 0.759679 0.390917 0.309351 0.629171 0.260597 0.442388 0.733006 0.0890637 -0.47513 -1.60235 3 11 11 3 2 0 -16.3366 2.68416 11 11 5 -0.355215 -0.728975 -0.792131 -0.676811 -0.746491 -0.731268 -0.964315 -1.15806 -0.865207 -0.660733 -0.539188 0.876621 0.516245 0.537227 0.6037 0.698817 0.59229 0.162622 -0.183125 -0.104896 -0.129554 0.102857 1.1279 0.715173 0.619234 0.560451 0.791689 0.694796 0.532883 0.181684 0.124104 0.144944 0.400252 0.852207 0.789832 0.824306 0.708424 0.593893 0.39017 0.329067 -0.0369695 -0.0207394 -0.0369487 0.295641 -0.524043 0.163185 1.03238 1.27645 1.51185 0.814171 0.307002 -0.0956815 -0.124714 -0.228279 0.195815 -0.960692 -1.22808 -1.34009 -1.01721 -0.50995 0.0270655 0.0225555 0.0954632 0.120623 0.294731 0.399274 -0.229804 -0.910387 -1.5832 -2.56938 -2.8861 -2.00158 -0.367874 0.307215 0.53409 0.275605 0.168626 0.249156 0.026309 0.0825078 0.343562 0.151997 -0.133424 0.261929 0.393327 0.857834 0.49345 -0.225998 0.419376 0.32516 0.58819 0.860458 0.461899 0.145628 -0.0741977 -0.0451731 0.66914 0.836739 0.0994601 -0.0491908 0.174975 0.316832 0.348401 0.348383 0.024908 -0.560144 -0.501802 0.121308 0.5236 -0.0731221 -0.913092 -0.753644 -0.641713 0.0789591 -0.192784 -0.418507 -1.38064 -1.21599 -0.261286 0.778021 0.453845 2 1 -13.5609 2.03383 11 11 5 -0.737087 0.0765869 0.259858 0.0528072 -0.32236 0.0645734 0.214446 0.550092 0.437301 -0.0341173 -0.50342 -0.856592 -0.162577 -0.121978 -0.323548 -0.162846 -0.302152 -0.492765 -0.08519 -0.0528659 -0.0563229 -0.173986 -0.528913 -0.656489 -0.665693 -0.400266 -0.203957 -0.114533 0.0499947 -0.0358521 0.047221 0.182769 0.0854174 0.656359 0.0124757 -0.804614 -0.781413 -0.692364 -0.402027 0.00508809 0.346499 0.0017187 -0.0496603 -0.00344538 0.521387 0.775733 0.960732 0.666902 0.0483384 -0.85747 -0.350564 0.436811 -0.00965472 -0.132215 -0.643585 -0.266825 0.78627 1.76568 2.79397 3.44179 1.77524 -0.235171 -0.431983 -0.547801 -0.396879 -0.432505 -0.605784 0.17763 0.295058 -0.444693 -0.924243 0.271394 0.232771 -0.466002 -0.658791 -0.381073 -0.881257 -0.218038 -0.105903 -0.582353 -1.01442 -1.09095 -0.567475 -0.708808 -0.234418 -0.351042 -0.198081 -1.22202 -0.0737691 -0.0824298 -0.0826163 -0.668457 -0.982045 -0.607447 -0.292055 0.13765 0.382529 0.248176 -0.449217 0.266965 0.622315 0.184258 -0.0985772 -0.482755 0.238467 0.496644 0.6543 0.635566 0.578913 0.51751 0.583494 1.09362 0.680728 0.591645 0.476988 0.298221 0.0991912 0.308284 0.530662 0.368951 0.518395 2 2 -13.0162 1.48965 11 11 5 -0.974036 -0.925069 -0.445712 -0.272666 -0.782154 -0.748307 -0.41837 -0.807165 -0.252712 -0.35583 -0.540844 0.00613363 -0.314879 0.0664131 -0.133422 -0.00378436 -0.167648 -0.732253 -0.33759 -0.326131 -0.372958 -0.426523 0.366807 0.276826 -0.00592727 0.359774 0.429041 0.671714 0.364906 -0.186042 -0.26501 0.218793 -0.358272 0.87315 0.143888 0.215449 0.112884 0.118364 0.0899331 0.183552 0.0712769 0.05975 -0.316464 -0.255611 0.723848 1.01876 1.57534 1.67369 1.84345 1.14338 0.284803 -0.156841 -0.271802 -0.38388 -0.204263 -0.547646 -0.488571 -0.235784 0.408131 1.23089 1.27279 0.851436 0.0542656 -0.358281 -0.151271 0.153868 -0.12262 -0.449602 -1.11591 -1.54312 -1.82563 -1.6787 -0.128749 -0.157447 -0.0829167 -0.137537 0.540651 0.518879 -0.3214 -0.814829 -0.971009 -0.96705 -0.749931 -0.376874 -0.0806026 0.133754 -0.180786 0.0584453 1.16985 0.358947 0.16043 0.124568 0.0987791 0.377316 0.346846 -0.182071 -0.132081 0.430591 0.633636 0.984774 0.590657 0.469997 0.413787 0.859711 0.51961 -0.0552286 -0.646438 -0.329484 0.167699 0.561759 0.536063 0.444173 0.330141 0.541641 0.511671 -0.235781 -1.08993 -0.879699 -0.818078 0.121433 0.728097 3 11 11 3 2 0 -18.9591 2.9649 11 11 5 -1.3817 -1.16477 -0.996208 -0.579718 -0.197325 -0.129176 -0.203702 -0.323377 -0.332391 -0.113559 0.501268 -0.634324 -0.254432 0.0805874 0.13278 0.500144 0.541429 0.294349 0.392434 0.39594 0.657252 1.08591 -0.10695 -0.00790218 0.113076 0.0626776 0.267612 0.336352 0.564554 0.576384 0.638342 0.747084 0.773897 0.233672 -0.03413 -0.135268 -0.280188 -0.0177852 0.250974 0.981065 1.01591 0.946917 0.465442 -0.0904589 0.148734 -0.308386 -0.422601 -0.438584 0.221635 1.18569 1.87882 1.2481 0.0828214 -1.12906 -1.43864 -0.250389 -0.317011 -0.205964 0.279755 1.16108 1.03106 -0.696727 -2.11014 -2.41921 -1.58753 -0.621999 -0.320988 0.161131 0.745704 0.980362 0.80564 -1.3714 -2.56736 -1.94487 -1.26313 -0.283042 0.511381 0.0788241 0.69596 1.2565 0.762917 0.188451 -0.69943 0.00638584 0.364329 0.279384 0.591244 0.793063 0.0347956 0.940211 0.984139 0.0278767 -0.420375 -0.227486 0.161134 0.711083 0.827459 0.646437 0.166561 0.200485 0.914348 0.443869 -0.626227 -0.733847 -0.141064 0.154424 0.298702 -0.0567186 -0.486752 -0.811876 0.237914 1.12653 -0.265883 -1.08755 -0.682798 -0.502461 0.343686 -0.173516 -0.486666 -0.894405 -1.25721 2 1 -15.3043 2.10536 11 11 5 0.838803 0.651152 0.288975 -0.382366 -0.375523 -0.46405 -0.0889728 -0.0841782 0.11625 -0.210335 -0.715835 0.0486714 -0.102974 -0.245122 -0.457252 -0.256277 -0.0935177 -0.348545 -0.425147 -0.316709 -0.543794 -0.463654 0.218016 0.252311 0.109704 0.159358 -0.173661 -0.215203 -0.400898 -0.790316 -0.665011 -0.234295 0.00651072 0.224618 0.169765 0.470967 0.379078 -0.117035 -0.539631 -0.824625 -0.445771 0.00232351 0.777162 0.614155 -0.0235118 0.323764 0.225048 -0.0371948 -1.19402 -1.39532 0.876581 1.64476 1.55153 0.671439 0.288957 -0.00994344 -0.103757 -0.657245 -1.10898 -1.03466 1.61996 3.28108 2.2758 0.707858 0.298253 -0.18935 -0.257381 -0.529603 -1.17592 -1.21046 0.483987 0.572851 -1.16384 -0.926968 -0.194356 0.0913165 -0.328969 -0.682961 -0.676791 -0.125486 -0.270359 -0.723637 -0.82902 -1.19011 -1.09907 -0.0597286 -0.284141 -0.110579 -0.85924 -0.130275 0.342409 0.114327 -0.248733 -0.5121 -0.460974 -0.539917 -0.264181 0.288529 -0.144006 0.155827 0.236346 0.978302 0.835689 0.161649 0.188339 0.0855462 -0.142148 0.70685 0.935418 0.252871 0.942542 0.622779 0.365907 0.603688 0.124092 -0.112272 0.11485 0.463336 0.67625 1.03671 0.514601 2 2 -12.9164 1.9312 11 11 5 -0.693938 -0.586175 -0.645859 -0.602219 -0.826862 -0.588748 -0.407528 -0.150374 -0.339839 -0.686569 -0.951984 -0.31994 -0.374555 -0.154476 -0.408192 -0.469463 -0.130884 -0.45701 0.419008 0.17065 -0.167171 0.0646737 -0.532653 -0.193891 -0.271731 -0.177554 -0.00319051 0.128258 -0.0145497 0.0910676 0.162811 0.452905 0.457678 -0.0718605 0.0754649 0.135843 -0.145758 -0.422536 -0.485877 -0.00347632 -0.101848 0.392042 1.21133 1.01708 0.0435339 -0.365507 -0.14261 -0.379473 0.379504 0.997972 1.49043 1.61672 1.0094 0.107844 -0.530111 -0.457526 -0.383701 -0.506684 0.244628 1.37821 2.02619 0.309689 -0.455095 -0.778237 -0.673606 -0.748691 -0.749853 -0.20041 0.293008 0.881841 1.12052 -0.688025 -1.61631 -1.51537 -1.11439 -0.770665 -0.830722 -0.860263 0.251857 1.17328 1.00854 0.30899 -0.679819 -0.896334 -0.610935 -0.334353 0.388903 0.61175 -0.570093 0.355869 1.19885 1.02299 0.569565 0.286244 0.0287321 0.26036 0.614486 0.448196 1.19836 -0.487023 0.417451 0.874851 0.201802 0.130438 0.113077 0.141985 0.357363 0.498837 0.229467 0.608086 -1.05608 0.270367 0.200518 -0.071011 -0.079596 -0.333302 -0.176765 0.170289 0.00315554 -0.172736 -0.00101629 3 11 11 3 2 0 -20.2022 2.91543 11 11 5 -1.1984 -0.907261 -0.728345 -0.532255 -0.455694 -0.725325 -0.840902 -0.860265 -0.825679 -0.386726 0.647177 -0.757399 -0.303538 0.115671 0.278007 0.235326 -0.0441335 -0.11749 -0.0133377 0.0415419 0.282459 0.821726 -0.140151 0.578207 0.722467 0.702788 0.55626 0.512653 0.514332 0.45245 0.525658 0.641036 0.842815 0.0216487 0.363448 0.357717 0.276343 0.354769 0.253877 0.356823 0.565065 0.412836 0.360848 0.246308 -0.274241 -0.156632 0.041882 0.184271 0.643029 0.588467 0.682471 0.68325 0.374362 0.222471 -0.0571142 -0.641434 -0.178314 0.469839 1.12547 1.69361 1.56489 0.638182 -0.41339 -0.696986 -0.593697 -0.26557 0.220025 0.595394 0.54586 -0.170289 -1.82803 -2.91893 -2.46036 -1.81708 -1.10732 -0.580381 -0.274763 1.59721 0.823782 -0.115916 -1.1788 -1.90732 -1.41021 -0.363949 0.436501 0.709656 0.277224 -0.422454 1.71504 0.254701 -0.366898 -0.292553 -0.213156 0.204772 0.73007 1.31494 1.17078 0.536773 -0.30697 1.08688 -0.646764 -0.542463 0.135889 0.410626 0.596456 0.635006 0.446136 0.521876 0.13589 -0.0943649 0.0854431 -0.959028 -0.960024 -0.195103 -0.111576 0.0322899 -0.35128 -0.563116 -0.498921 -0.692131 -0.707188 2 1 -15.4328 2.12195 11 11 5 0.879285 0.58955 0.612827 0.164893 0.2265 0.361492 0.338797 0.216799 -0.0744282 -0.0605137 -0.305739 -0.454723 -0.746839 -0.509181 -0.382055 -0.228307 -0.0184819 -0.479546 -0.364331 -0.332373 -0.00402254 0.115282 -0.36501 -0.385082 -0.413517 -0.174632 -0.444095 -0.20008 -0.59962 -0.402887 -0.419063 -0.177129 0.21834 0.264261 -0.0321937 -0.0843183 -0.503342 -0.335985 -0.681496 -0.217114 -0.20619 0.100072 0.0941902 0.038043 0.448444 0.39433 -0.151308 -0.697653 -0.967188 -0.828678 -0.627585 -0.130117 0.10016 0.307511 -0.208549 -0.0192522 -0.48763 -0.661547 0.335686 1.44344 2.38356 2.06514 1.37562 0.325058 0.438558 -0.0404569 -1.49875 -0.769728 0.581626 2.09099 2.68969 1.33218 -0.484533 -0.777573 -0.452105 0.0813898 0.0253197 -1.6198 -0.16856 0.313917 -0.000640309 -1.10519 -0.78299 -0.306484 0.302649 -0.128375 -0.339429 -0.121278 -0.0798773 -0.260911 -0.400308 -1.61666 -0.539234 0.169867 0.345689 -0.279034 -0.114066 -0.00696245 0.268894 0.638569 -0.0193909 -0.606462 -0.546899 -0.651473 -0.38585 0.108304 0.208576 -0.126557 0.299547 0.321172 1.27756 0.344227 0.0281662 0.18588 -0.178349 0.634019 1.28261 0.988758 0.25379 0.0946597 0.0837808 2 2 -13.3731 2.15775 11 11 5 -0.540979 -0.649061 -0.539979 -0.50568 0.0285365 -0.368373 -0.434187 -0.660982 -1.21209 -0.529473 -0.333087 -0.487171 -0.868298 -0.337514 -0.417124 -0.067248 -0.137749 -0.646176 -0.511869 -0.608388 -0.392496 0.240102 -0.48643 -0.698729 -0.366995 0.0123428 0.220184 0.652589 -0.0565897 -0.128565 0.0693901 0.212209 0.576198 -0.280653 0.0696422 -0.0659002 -0.0459072 0.236537 -0.078476 -0.33603 -0.269678 0.023558 0.596338 0.537183 -0.100819 0.162328 -0.0256295 -0.448227 -0.15969 0.29086 0.733624 1.09781 1.1155 1.22632 0.881481 -0.412699 -0.0386067 0.590107 0.669074 0.892702 1.32235 0.874013 0.0211795 -0.155366 0.120893 0.287689 -0.326721 0.364859 0.643426 0.639344 -0.451372 -0.73892 -0.760761 -1.25779 -0.583332 -0.591538 0.0746866 0.966659 1.15016 0.0883705 -0.970368 -1.67313 -1.67249 -1.21023 -0.848971 -0.753646 -0.462406 -0.589415 1.4876 0.648544 -0.0673761 -0.469576 -0.957526 -0.476831 -0.183385 0.75994 0.881222 0.457561 -0.108295 1.44762 0.362353 -0.0202149 0.239095 0.295289 0.158793 0.0750687 0.278614 1.16742 0.694542 0.418009 0.649402 0.101642 0.113907 -0.0336131 -0.0472857 0.0121721 -0.0363188 0.207401 0.349849 0.685704 0.514476 3 11 11 3 2 0 -18.8067 2.06467 11 11 5 -1.23131 -0.928888 -1.08537 -1.13179 -1.06543 -0.924445 -0.597641 -0.459746 -0.233474 -0.109279 0.319369 -0.553811 -0.199351 -0.315943 -0.354319 -0.222911 -0.105668 0.21013 0.137153 -0.0208366 -0.0488112 0.0629149 0.67425 0.732765 0.52301 0.687416 0.678068 0.68417 0.710485 0.67 0.509704 0.211502 0.118814 0.707096 0.697195 0.4984 0.432608 0.673137 0.654092 0.551045 0.420612 0.378134 0.0437338 0.145849 0.516352 0.364775 0.369702 0.299609 0.661798 0.699153 0.625057 0.200379 -0.0522055 -0.214972 -0.13556 0.615201 0.629051 0.859903 0.893018 0.879461 0.779958 0.682945 0.2738 0.0721835 -0.190813 -0.322026 0.978533 0.150115 -0.953013 -1.58767 -2.35343 -2.56683 -2.3566 -1.16973 -0.247924 0.016821 0.36173 0.735842 -1.31736 -2.09764 -1.60176 -0.590302 -0.316013 -0.322378 -0.519401 -0.219547 -0.0221407 0.859873 0.141662 -0.864069 -0.46117 0.253671 1.22628 1.70957 1.19559 0.34029 -0.351498 -0.463253 0.686946 -0.574744 -0.148227 0.0264716 0.947426 1.54099 1.28825 0.663802 0.0991811 -0.399277 -0.230542 0.319779 -1.01439 -0.279518 -0.00676183 -0.0107817 -0.262115 -0.537839 -0.29086 -0.538557 -0.550446 -0.0150602 0.648679 2 1 -12.1561 1.51765 11 11 5 0.794817 0.625947 0.885646 0.619768 0.265864 -0.0377411 0.0868559 -0.221219 0.179553 0.079318 -0.12964 -0.543953 -0.35055 -0.0430712 -0.368522 -0.46267 -0.397894 -0.195175 0.0196617 -0.0776066 -0.0540201 0.407787 -1.17725 -0.403863 -0.198161 -0.438227 -0.567677 -0.379229 -0.386043 -0.0364236 0.272229 0.025378 0.297543 -0.961756 -0.672873 -0.651002 -0.615638 -0.586927 -0.576273 0.0634236 0.15005 0.564334 0.32949 0.06705 -0.679954 -0.482735 -0.598048 -1.09657 -0.959014 -0.822678 -0.361595 0.0221896 0.28026 0.253313 0.152747 -0.652913 0.540837 1.33233 1.5794 1.61044 1.53241 1.48242 0.289917 -0.171949 -0.1104 -0.034964 0.112922 2.17722 1.97699 1.39738 0.444013 -0.455039 -0.0267824 0.108763 -0.442511 -0.447712 -0.537561 0.0880182 1.03781 0.916242 -0.446816 -0.707946 -0.123647 -0.578862 -0.594383 0.226454 0.0807031 -0.606569 -1.21119 -0.818532 -0.508069 0.390167 0.337283 0.0487938 0.13556 0.316772 0.446745 -0.117637 -0.543316 -1.55829 -0.459069 0.0249149 -0.0753128 -0.155695 -0.478652 -0.0115332 0.208604 0.159 0.0309859 -0.284267 -0.305084 -0.13198 0.0888406 0.788377 0.971116 0.567234 0.402202 0.323794 -0.0903922 -0.446166 0.0493418 2 2 -12.6991 1.90578 11 11 5 -0.678845 -0.195829 0.00540258 -0.539484 -0.583552 -0.648769 -0.474493 -0.298293 -0.204102 -0.307706 0.188706 -0.79637 -0.345901 -0.24013 -0.696559 -0.857617 -0.797486 -0.518396 -0.530905 -0.0327263 -0.234068 -0.130018 -0.528598 -0.0576217 0.0817741 -0.0546695 -0.365302 0.04647 -0.0331949 0.567826 0.295796 0.0756922 0.433364 0.187034 0.228277 -0.00592896 -0.00837302 -0.25048 -0.230857 -0.177522 0.51686 0.534815 0.485969 0.532478 -0.246545 -0.140953 -0.149368 -0.218511 0.782259 0.827012 0.621661 0.410148 0.244738 0.410661 0.267683 0.472177 0.195028 0.837025 1.15868 1.3497 1.54239 1.52807 1.38445 0.798675 0.458125 0.098161 0.602783 0.169285 0.0107518 -0.30704 -0.571244 -0.65121 -0.757064 -0.517796 -0.0700109 0.316519 -0.615745 0.672257 -0.438648 -0.819329 -0.958799 -1.46938 -1.28258 -1.14324 -1.20133 -0.416983 0.0564959 -0.15104 0.0794907 -0.570337 -0.788426 -0.134408 0.213171 0.528289 0.559797 -0.203858 -0.601593 -0.367139 -0.184777 0.0544266 0.0755584 -0.222438 0.447668 0.787483 1.23651 1.05129 0.462042 -0.22688 -0.577692 -0.545303 0.173372 0.220709 0.0474118 0.420411 0.419458 0.695836 1.313 0.788835 0.23763 -0.643507 -1.19067 3 11 11 3 2 0 -16.3992 1.78452 11 11 5 -2.21347 -1.76291 -1.2876 -0.842779 -0.522904 -0.503475 -0.613247 -0.38796 0.058253 -0.0378177 0.136662 0.449383 0.387834 0.608271 0.556105 0.642343 0.667173 0.366628 -0.132772 -0.14924 -0.0900791 -0.279789 1.61027 1.2758 1.00291 0.605928 0.330496 0.611766 0.45323 0.308633 0.0738334 0.0122698 -0.330844 1.07995 0.977773 0.773169 0.49284 0.0266724 -0.185367 -0.0413909 0.0470743 0.0977893 0.107885 -0.307771 0.544861 0.590481 0.565186 1.04347 1.20064 0.407275 -0.279734 -0.29733 -0.183466 -0.150559 -0.283116 -0.0300179 -0.656438 -1.07224 -1.17477 -0.540985 1.15142 0.772162 0.0939214 -0.321135 -0.220579 -0.32754 -0.959775 -1.07561 -1.3136 -1.6375 -2.39684 -2.12039 -0.731558 0.262535 0.278108 -0.111092 -0.43201 -1.12924 0.114662 0.490912 0.32993 0.154105 -0.68854 -0.758444 0.00456086 0.888541 0.395791 -0.337597 -0.426165 1.22111 1.58876 1.50442 1.14021 0.621097 0.0393014 0.372949 0.655551 0.450101 -0.421072 0.241914 1.12288 0.966951 0.562593 0.0685693 0.0438119 0.0111774 0.0999645 0.584517 0.485 -0.701991 -0.778077 -0.370922 -0.630432 -1.16729 -1.32502 -0.917501 -0.192743 0.272561 0.750418 0.602941 -0.605502 2 1 -11.4097 1.33212 11 11 5 -0.0460209 0.334463 -0.227088 -0.0325514 0.104247 -0.291051 0.0567168 -0.0616134 0.0409752 0.0638991 -0.268474 -1.40652 -0.713475 -0.430087 -0.321954 -0.0146737 -0.064383 0.152911 0.11073 0.106527 0.15265 -0.266853 -2.18437 -1.32958 -0.715097 -0.537747 -0.0393835 0.190774 0.0224471 0.0682355 0.122154 0.354729 -0.220239 -1.75617 -1.12853 -0.998237 -0.250385 0.0162843 0.285976 0.520595 -0.154746 0.120175 -0.212559 0.0807352 0.790148 0.461238 0.745775 0.772156 -0.288412 -0.690401 0.0426888 0.217301 0.140695 0.0390428 0.0879295 2.43742 1.31005 0.948439 1.24271 2.04656 0.577329 -0.437742 -0.0833438 0.164935 0.326632 0.19892 1.83493 0.584963 0.0373738 -0.652562 -1.46176 -1.03893 -0.401641 -0.643684 -0.58337 0.142245 0.118861 -0.368271 -0.335819 -0.29138 -0.0718992 0.391039 0.628793 -0.508781 -0.805522 -0.650788 -0.0742251 0.141018 -0.928364 0.0173611 -0.041016 -0.364541 -0.265292 0.727891 1.04524 -0.687256 -0.742141 0.101579 0.345623 -0.109844 0.234029 -0.0179441 0.208681 0.184011 -0.607395 -0.741542 -0.46031 -0.190853 0.694708 0.413778 0.931205 1.18938 0.579668 0.532272 1.01786 -0.513391 -0.597454 -0.281627 0.347292 1.04999 0.654361 2 2 -11.9964 1.18005 11 11 5 -1.40915 -0.748491 -1.20374 -0.569666 -0.483867 -0.35502 -0.49493 -0.709842 -0.090223 -0.0542068 0.112601 -0.741262 -0.791195 -0.55124 -0.267984 -0.184649 0.226888 -0.0305446 -0.339123 -0.40408 -0.140081 -0.15007 0.624391 0.0387945 -0.282682 0.11984 0.456865 0.438305 0.41818 0.335415 0.0516092 -0.203565 0.011665 0.213153 0.126783 0.0704565 0.0249138 -0.218509 -0.255631 0.335483 0.548381 0.465244 0.557483 -0.184701 -0.0771587 0.429399 1.30702 1.58644 1.29178 0.391105 -0.239805 -0.0327077 0.246793 0.0550349 0.159577 -0.224732 -0.044054 0.177112 -0.109488 0.628569 1.66438 1.06023 0.00945325 0.114881 0.514527 -0.0915097 -0.669664 -0.694805 -0.546187 -1.013 -1.50072 -0.962016 0.0412952 -0.126096 -0.254699 -0.100349 0.20532 -0.831397 -0.550041 -0.26675 -0.77322 -0.831297 -1.49313 -1.5339 -0.578449 0.137362 0.292795 0.129839 0.126093 0.637649 0.679033 0.90669 0.534986 -0.225564 -0.536345 -0.257153 0.0449115 0.54602 0.295296 0.213009 0.892713 1.09489 1.43202 0.968251 0.391036 -0.274546 -0.489701 -0.115049 0.17843 0.280204 0.336494 0.577038 0.99225 1.03277 0.485358 -0.0859763 -0.259355 -0.935509 -0.454494 -0.377306 0.156065 3 11 11 3 2 0 -12.4192 1.3266 11 11 5 0.924504 0.348429 0.475968 0.395064 0.108501 -0.0872796 -0.0924745 -0.501739 -0.480552 0.317154 0.555722 1.17569 0.517617 -0.0100657 0.21724 0.119466 0.243566 0.207932 -0.080582 -0.424598 -0.0979493 0.321419 0.525111 0.148527 -0.123362 -0.06704 -0.138622 -0.118428 0.252409 0.206744 -0.0528638 -0.248341 0.195909 -0.542735 -0.507758 -0.355295 0.401097 0.226721 0.013433 -0.0136952 0.028305 -0.114351 -0.0855045 0.308197 -0.108166 -0.772647 -1.06069 -0.54305 0.961806 1.02793 -0.0433239 -0.138935 -0.197082 -0.276339 0.0642176 0.69519 -0.0857107 -0.556715 -1.82297 -1.87226 1.34954 0.569793 0.116426 -0.296239 -0.249452 -0.107493 1.22669 0.630627 0.599027 -0.296808 -0.925668 -0.511836 1.14476 -0.0307239 -0.24376 -0.124534 -0.416213 1.71809 1.34383 1.0401 0.938593 0.385339 0.292612 0.64542 0.0303425 -0.403864 -0.358718 -0.480358 0.782835 -0.443378 -0.633337 0.266787 0.779589 0.640414 0.473658 0.00951574 -0.334635 -0.635379 -0.593711 -0.375506 -1.22976 -1.29802 -0.502566 0.221899 0.463072 0.444633 -0.0502743 -0.408768 -0.714952 -0.634846 -1.30757 -2.0196 -1.9964 -0.560873 0.788869 1.30567 1.4118 0.302706 -0.253686 -0.316471 -0.529819 2 1 -8.86403 0.869699 11 11 5 -2.18186 -0.923944 -0.62467 0.4011 -0.104933 -0.297092 0.0717211 -0.0540087 -0.428067 -0.301899 -0.174307 -1.87568 0.0331594 -0.40315 0.0919135 -0.00186452 -0.0456861 0.0380921 0.116358 0.173177 -0.291339 -0.169635 -0.357577 0.629868 0.530695 -0.569545 0.160693 0.105179 0.0675504 0.223631 0.0959675 -0.285663 -0.242058 1.17159 0.945516 0.733004 0.165026 -1.60125 0.12138 0.0642765 0.112749 -0.0292734 0.208231 -0.52306 1.09547 0.122419 0.0451229 0.755131 0.596431 -1.28812 0.298382 0.309233 0.137831 0.231775 -0.529093 -0.00368606 -0.412531 -0.145273 -0.609811 -1.07114 -0.697539 -0.21994 0.322321 0.376118 0.0195192 -0.698212 -0.390008 -0.377124 -0.110002 0.729505 -0.329073 -1.63381 -0.715286 0.280738 0.00746264 0.278644 -0.311316 0.00357524 -0.0153498 0.140999 -0.618197 0.541688 -0.436966 -0.108081 0.465124 0.28308 0.215532 0.0628325 0.420878 0.717237 0.106188 -1.21183 -0.823579 0.135916 0.486865 0.854973 0.451763 0.205376 -0.178708 1.06277 0.981848 0.620949 0.145829 -0.852847 -0.412889 0.480785 0.830672 0.233398 0.521637 0.0497963 1.32156 0.936473 0.585901 -0.284095 -0.544516 -0.752371 0.455141 0.623245 0.681261 0.680602 0.0972998 2 2 -10.9796 0.899649 11 11 5 -0.299663 -0.296889 0.2414 0.260562 -0.304073 -0.499926 -0.41032 -0.292746 -0.322025 -0.113601 -0.23989 0.665774 0.182661 0.371622 0.26378 0.460705 0.700741 0.288441 -0.189223 -0.109726 -0.286344 0.164873 0.377616 0.865326 -0.0811322 -0.15624 0.0901008 -0.0220618 0.972529 0.266697 0.0642758 -0.0353872 -0.440213 -0.271948 0.0106118 0.216342 0.266945 0.34752 -0.0830946 0.241732 0.614991 0.0958901 -0.336036 -0.157232 -0.60698 -0.798159 -0.739183 0.226069 1.37861 0.851044 -0.20161 0.206035 0.190731 0.140656 0.163257 -0.259522 -0.310363 -0.887153 -1.83603 -1.66446 1.21238 0.715232 0.0727053 -0.150886 -0.137951 -0.0940369 1.08057 -0.20187 -0.387241 -0.775975 -1.87271 -1.52865 1.26287 0.55144 0.399507 -0.199327 0.0010489 2.12008 1.17749 0.524163 -0.226862 -0.329808 -0.883574 0.285587 0.494216 0.282391 -0.145246 -0.107209 2.14845 0.898616 0.460086 0.332018 0.0838834 -0.261122 -0.233924 0.375481 0.292535 -0.256841 -0.496988 1.1928 1.04673 -0.434029 -0.285389 -0.151115 -0.171518 -0.365779 -0.290224 0.198717 -0.416694 -0.49599 -0.238989 -0.609728 -0.795589 -1.48073 -0.613598 -0.444574 0.0237737 0.130991 -0.126823 -0.429074 -0.660181 3 11 11 3 2 0 -25.316 4.16912 11 11 5 -0.633107 0.207584 0.874527 0.724693 0.0264882 -0.0336202 0.302873 1.04888 0.905598 0.0203573 -0.62014 -0.604256 -0.352456 0.240912 0.621939 0.249638 -0.0689651 -0.124041 0.387999 0.557572 0.02872 -0.254165 -0.0756851 -0.435956 -0.209524 0.417486 0.571213 -0.0560201 -0.129981 -0.105884 0.166393 0.147436 -0.271226 0.193968 -0.443161 -0.767304 0.209192 0.866185 0.333145 0.034191 -0.805181 -0.210702 0.196191 0.278484 0.77036 0.0725366 -0.866376 -0.294214 0.738903 0.674655 -0.250382 -1.3763 -0.694736 -0.029649 0.120405 -0.415245 -0.296113 -1.30719 -1.36293 1.25554 2.01955 0.581773 -1.96141 -0.926833 -0.133743 -0.535218 -0.856766 -0.397762 -1.35783 -1.10349 1.47387 1.86096 0.80056 -1.40234 -0.900967 -0.220641 0.323253 0.203018 -0.62897 -1.30834 -0.875564 1.66201 1.72304 0.495138 -1.37758 -0.584616 0.274979 0.169489 0.185739 -0.611886 -0.690194 -0.441922 1.41079 1.64213 0.228056 -1.24047 -0.673707 0.682537 1.02535 0.761344 -0.303774 -0.590918 -0.57478 0.701319 1.39676 -0.000476969 -1.58172 -0.765265 0.792009 1.32263 1.48984 -0.445839 -1.44631 -1.01108 0.461734 1.6654 0.382371 -1.70499 -0.907091 0.581381 1.09592 2 1 -17.5606 2.2908 11 11 5 0.866656 0.370725 -0.189287 -1.07553 -0.843058 -0.816198 -1.65835 -0.428864 0.0874424 0.0654542 0.545662 0.387708 0.219073 0.144514 -0.745247 -0.408828 -0.175536 -1.09146 -0.566081 0.0288622 -0.134708 0.30643 -0.0655451 0.173165 -0.150458 -0.472843 -0.480243 0.153544 -0.943623 0.216598 -0.0175959 -0.132925 -0.253525 -0.658798 0.450788 0.725157 0.0722086 -0.0976788 0.300629 0.180292 0.647703 0.348632 -0.456624 -0.866858 -0.803675 0.261909 0.277425 0.441771 0.460075 0.51862 0.839573 0.329875 0.172924 -0.30687 0.84956 0.933348 0.307058 0.0979182 0.83472 1.99322 -0.421484 2.21494 0.981834 -0.672863 -0.364038 0.820819 0.785149 0.302411 -0.665724 0.748621 2.30708 -1.53265 1.1884 1.44729 -0.970582 -0.400061 0.519754 0.046129 0.150134 -0.362006 1.16807 1.86858 -2.18439 0.215959 1.29563 -0.696917 -0.233586 0.320543 -0.306912 0.404485 -0.196984 -0.178309 0.799219 -1.78851 0.0242227 0.750717 -0.677506 -0.387147 -0.0848337 -0.632608 -0.14462 -0.649179 -0.84422 0.791223 -1.29275 0.210718 0.350528 -1.1394 -0.796208 0.794012 0.0369597 -0.214224 -1.45302 -1.54975 1.17763 -0.781777 0.109539 0.318593 -1.61299 -0.744401 1.06166 2 2 -19.2585 2.85704 11 11 5 -0.0824906 0.0505436 0.373407 0.386887 -0.0495974 0.0626278 0.539645 1.22573 0.153963 -0.410571 -0.568453 -0.0634155 -0.0578139 0.163656 -0.0684761 -0.268954 -0.0254241 0.324699 0.755722 0.330352 0.0745831 -0.0821795 0.277819 -0.101307 -0.0112209 -0.668085 0.319901 -0.0883838 0.575527 0.311226 0.080758 -0.00892152 0.338673 0.398772 0.0589576 -0.416267 -0.374962 1.01298 0.399604 0.631649 -0.402922 -0.218385 0.447123 1.07084 1.03929 0.418875 -0.153072 -1.05013 0.336884 0.021481 0.636542 -0.708534 -0.242786 0.518281 0.974041 0.561947 0.632278 -0.333678 -1.40386 0.498107 0.996465 1.38127 -0.961088 -0.607465 0.0949086 -0.0830514 -0.366271 0.180579 -0.560916 -2.00403 0.636903 0.834648 1.91881 -0.72129 -1.17019 -0.366514 -0.318196 -0.187575 -0.431306 -1.48402 -2.00551 0.55667 0.867287 1.7617 -0.359683 -1.54011 -0.81725 -0.796311 -0.21056 -0.750521 -1.3111 -1.63299 0.716744 1.51521 1.60788 0.0173591 -0.94185 -0.730612 -0.675549 0.447782 -0.154235 -1.05319 -0.896884 0.192911 1.10394 1.21288 0.0825088 -0.364435 -0.515287 -0.590857 1.31314 0.405737 -0.918001 -1.44718 -1.05044 0.894814 1.54767 -0.332208 0.27135 0.18868 -0.534696 3 11 11 3 2 0 -28.2667 4.00159 11 11 5 0.479698 -0.580363 -0.595179 0.531905 0.934409 0.466527 0.0255336 -0.488258 -0.160222 0.374981 0.223582 0.532114 -0.504969 -1.00731 -0.150242 0.654239 0.408634 -0.419523 -1.12846 -0.661492 0.257618 0.102661 -0.157212 -0.443498 -1.07825 -1.00784 1.35058 1.10428 -0.18754 -1.45476 -0.631047 0.0755205 0.0500369 -0.360908 -0.725499 -1.18532 -0.803309 1.75212 1.02857 0.145185 -1.43721 -0.36578 -0.156202 0.0746629 -0.0938802 -0.774062 -1.09583 -0.251262 1.79828 1.16921 0.146977 -0.986101 -0.211269 0.367213 0.0787432 0.366906 -0.42539 -0.51862 0.018307 1.3516 0.947623 -0.0304078 -1.00951 -0.140675 0.83097 0.583837 1.14413 -0.156931 -0.426665 -0.221339 0.559373 0.529481 -0.622579 -1.43851 -0.124063 0.636163 1.2186 1.62283 -0.636916 -0.643876 -0.461751 0.193885 0.602387 -0.837054 -1.69056 -0.219922 0.344212 0.50336 1.13101 -0.876995 -1.17653 -0.168917 0.696581 1.18398 0.0171588 -1.14315 -0.203027 0.391952 0.0414836 0.70965 -1.23885 -1.4429 0.314673 1.5895 1.88647 0.931412 -0.40533 -0.1325 -0.00648607 -0.462996 -0.517896 -1.67598 -1.2274 0.165078 2.12871 2.44162 1.47853 -0.192144 -0.980186 -0.0027477 -0.133163 2 1 -19.8379 2.22917 11 11 5 -0.745408 0.480708 0.381471 -0.413431 -0.582583 0.210121 -0.0361407 0.393425 -0.340443 -0.97878 -0.602209 -0.0605374 0.593101 0.559591 0.506682 0.619511 0.953447 0.95834 0.269003 -0.00940129 -0.363677 0.774974 0.753064 0.338 -0.261757 1.16109 2.03279 0.70036 1.89672 0.596579 -0.736805 -0.259221 0.917879 0.396638 -0.162954 -0.27761 1.30754 1.44882 -1.37426 1.42617 0.659637 -0.561688 -0.232558 0.464835 -0.200221 0.381674 -0.445609 0.729796 0.841802 -1.95526 0.677652 0.789733 -0.561902 -0.590778 0.231636 -0.254231 0.330378 -0.532244 0.239965 0.547911 -1.46633 0.560491 0.486394 -0.795172 -0.724566 0.24444 -1.02389 0.0782349 -0.309879 -0.821768 0.963725 -1.29184 1.19061 -0.667746 -0.796927 -0.504929 0.797333 -0.469039 -0.442841 -0.601344 -1.09212 1.60738 -0.914595 0.927204 -0.468656 -1.13121 -0.631042 1.15195 -0.0147131 -1.11991 -1.42418 -0.407736 1.08129 -1.57135 0.0312525 0.402871 -0.682889 -1.24554 1.23626 0.857019 -0.86671 -1.2524 0.0671024 0.154786 -2.13427 -1.18943 -0.0226402 -0.591599 -1.39983 1.43246 0.95349 -0.580838 -1.28284 0.837311 0.578806 -0.66655 -0.0112013 1.11807 -0.166762 -0.838776 1.8342 2 2 -19.8634 2.80439 11 11 5 0.39817 0.473188 -0.2092 -0.0607824 0.971119 0.263855 0.542657 -0.55608 -0.408964 0.437708 1.01026 0.87096 0.397084 -0.58822 -0.195802 0.326883 -0.132777 0.743492 -1.04108 -0.508521 0.744723 0.269853 0.544778 0.364475 -0.451878 -0.801565 0.850811 0.975792 1.1505 -1.08144 -0.731855 0.347663 -0.151111 -0.049613 -0.247304 -0.960718 -1.20331 0.919913 0.895849 1.46105 -0.990208 -0.800841 -0.374997 -0.650218 -0.552211 -0.428775 -1.3898 -0.965134 1.09475 0.683043 1.22982 -0.587351 -1.12562 -0.640087 -1.20389 -0.181606 -0.338828 -1.59828 -0.717932 1.37644 0.8373 1.08043 -0.25279 -0.985335 -0.739468 -0.578221 0.601494 -0.345055 -0.579734 -0.866645 0.75567 0.749559 1.13919 -0.175457 -0.0347381 -0.250321 -0.0821649 1.09226 -0.28135 -0.475919 -0.950408 -0.375189 0.780567 0.569513 -0.212828 0.709739 0.135115 -0.358761 1.36373 -0.277372 -0.949434 -1.00709 -1.0561 0.262253 0.656824 0.003179 0.447656 0.606185 -0.129641 1.33766 -0.545517 -1.14952 -1.0811 -0.879896 0.730332 0.747944 -0.0629013 -0.0769878 -0.161808 0.0846098 0.212623 -0.615995 -0.979989 -1.00432 0.0929933 1.45209 1.84091 1.12002 -0.157497 -0.166577 1.01746 3 11 11 3 2 0 -27.9532 4.79719 11 11 5 0.0741168 -0.941472 -1.19756 -0.161147 1.32054 0.754028 -0.396479 -1.29138 -0.329541 -0.0318218 0.294937 0.225413 -0.759944 -0.759191 0.0973373 1.52074 0.872959 -0.0123742 -0.74941 -0.135686 -0.0179128 0.184407 0.483108 -0.480474 -0.70051 0.0533415 1.00093 0.50437 -0.150363 -0.584601 0.304784 0.239247 0.429105 0.92229 -0.616912 -0.75478 -0.177895 0.695771 0.294367 -0.536148 -0.794812 0.0488329 0.312012 0.771348 0.841862 -0.891674 -0.588034 -0.195966 0.675983 0.592512 -0.498323 -0.991039 0.154104 0.344091 0.540496 0.817755 -0.906402 -0.730834 0.0852201 1.00275 1.04279 -0.0563455 -0.760794 -0.0190034 0.167162 0.225815 0.429263 -0.693767 -0.498277 0.500821 1.47147 1.3139 0.611925 -0.270211 0.0671903 0.259208 -0.124007 -0.0874579 -0.45216 -0.227045 0.60979 2.04373 1.49316 1.26074 0.104062 -0.170821 0.337929 -0.129169 -0.844272 -0.405175 -0.752715 -0.352926 1.97311 1.20915 1.19532 -0.32125 -1.43854 0.0755614 -0.0638723 -0.728733 -0.182192 -1.03372 -1.18321 1.18261 1.11943 0.669273 -0.995767 -1.80658 -0.109531 0.259316 0.465513 -0.102601 -1.11138 -1.47805 0.315467 0.259091 -0.615719 -1.80723 -2.30107 -0.360686 0.745455 2 1 -19.4826 2.37351 11 11 5 0.0751963 -0.00626207 0.00272665 1.48713 1.03147 -0.0931079 1.55614 0.244939 -0.803678 -0.575324 0.189218 -0.291963 0.0942563 -0.318708 1.05113 0.438422 -0.658854 0.924171 -0.216734 -0.515017 -0.791309 0.395349 -0.511626 -0.259729 -0.934065 0.634735 -0.101252 -0.824282 0.473313 -0.0387556 -0.572379 -0.363944 0.317508 -0.588625 -0.269836 -0.461385 -0.0992744 0.499334 -0.611669 0.494437 -0.755934 -0.238812 -0.430575 0.668213 -0.352431 -0.278267 -0.720152 -0.220934 0.881392 -0.805581 0.930602 -0.848476 -0.633143 -0.397102 0.918838 0.652246 -0.832449 -1.27244 0.162587 0.498877 -1.55234 0.289358 0.0456876 -0.90887 -0.593597 1.30456 0.666775 -0.739971 -1.34526 0.187308 -0.530918 -1.4208 -0.811269 -0.316587 -1.69947 -0.933596 1.2473 0.830227 -0.649801 -1.3065 0.656072 -0.421207 -0.786182 -1.24475 -0.241853 -0.571333 -0.807845 1.16043 0.218854 -0.476378 -0.137879 1.27999 1.4245 0.457962 0.526701 0.989799 -0.613566 0.269582 0.568415 -1.21666 -0.426219 0.214786 0.702455 1.70152 -0.391628 1.61802 2.29761 0.313473 0.561229 0.125815 -0.84283 -0.341433 1.12432 0.870448 0.838275 -1.2463 0.60721 1.98722 0.305467 -0.0170246 0.272503 2 2 -19.1401 3.08291 11 11 5 0.264249 -0.416564 -1.35585 -0.402402 0.794956 0.692786 0.897713 -1.19714 -0.446197 -0.198342 -0.815182 -0.0280793 -0.360987 -0.959326 -0.356201 1.27138 0.89569 0.881883 -0.715153 -0.690734 -0.396469 -0.547872 -0.0297731 -0.354382 -1.42827 -0.384714 0.798517 0.50284 0.609678 -0.387342 -0.316962 -0.339626 -0.400833 0.543784 -0.621622 -0.725809 -0.623129 0.454482 0.109754 0.786371 0.0504935 -0.0663872 -0.304132 -0.095878 1.00324 -0.365368 -0.962702 -0.928074 -0.106656 0.226983 0.389771 -0.0211849 0.334588 -0.0223421 -0.0815795 1.16713 -0.485301 -1.01138 -1.13831 -0.534642 0.169297 0.254951 -0.216711 0.380908 0.0761109 -0.00521872 0.489541 -0.339024 -0.992066 -0.568376 -0.512886 0.634768 0.685598 -0.087437 -0.11592 0.341438 0.150196 -0.0873022 0.194706 -0.569904 -0.873491 1.0816 1.50477 1.20588 0.321001 -0.219924 0.160534 0.789349 -0.474245 -0.138873 -0.325937 -0.424191 1.1299 1.58049 2.09264 1.12048 -0.228741 0.141612 0.291584 -1.3677 0.052048 0.130616 -0.774223 1.15213 2.15583 1.85573 -0.0278328 -0.640647 0.574656 0.223787 -1.35323 0.38947 -0.0911255 -0.930516 0.277246 0.631165 0.534984 -0.291993 -1.33375 -0.924915 -0.912254 3 11 11 3 2 0 -26.3311 3.96898 11 11 5 0.107871 -1.18128 -1.18712 -0.120152 1.02281 0.597595 -0.417286 -0.713403 -0.18212 0.00470361 0.845219 0.419913 -0.995151 -0.527608 0.285024 1.32874 0.980555 -0.347181 -0.77561 -0.134381 0.00335816 0.568795 0.280759 -0.787448 -0.577419 0.318398 1.38122 0.923903 -0.117051 -0.628024 -0.119115 0.047847 0.006393 -0.0450557 -0.598823 -0.459373 0.801805 1.99539 1.09837 0.673811 -0.483991 0.10376 0.515772 -0.263644 -0.517561 -0.389583 -0.211124 0.998904 2.46536 1.39979 1.07095 -0.666899 -0.457664 0.233523 -0.471805 -0.849952 -0.552249 -1.33405 -0.300756 2.19555 1.06656 1.01089 -1.47896 -1.77477 0.0426684 -0.393247 -0.637535 -0.428934 -1.2088 -0.675912 1.21907 0.225051 0.147152 -1.50037 -1.19625 0.328805 0.354807 0.50407 -0.22795 -1.19636 -0.749404 0.909913 0.283665 0.0534657 -1.3787 -1.37599 0.227299 0.824979 0.802906 -0.076835 -1.06789 -1.472 0.0235938 0.321929 -0.0669204 -1.3201 -1.32242 0.29545 0.938809 1.04326 -0.109342 -0.295478 -0.47973 -0.0517298 0.231947 -0.0520967 -0.527979 0.186444 0.744145 0.748484 1.10029 -0.14929 -0.113539 0.12511 0.106594 0.305368 -0.0401125 -0.165414 0.343756 0.367028 0.387344 2 1 -18.6949 1.89506 11 11 5 -0.527572 -0.858329 0.325105 1.16811 0.808544 -0.0754389 0.653905 -0.00476019 -0.657571 -0.909468 1.12318 0.262085 -0.760235 -0.822825 0.506701 0.440937 -0.947392 0.426173 -0.916177 -0.398206 -0.278376 1.65079 0.490681 -0.786326 -1.21986 0.739237 0.263194 -1.34924 0.246222 -0.623803 -1.26589 -0.315671 1.57996 0.807658 -1.35284 -1.69666 0.295298 -0.519372 -0.63434 -0.913281 -0.746882 -1.70756 -0.955789 1.40194 0.0544948 -0.572334 -0.529286 1.5791 -0.149017 -1.23578 -0.10803 1.14971 -0.435079 -0.661218 1.09199 -0.488268 0.0312338 -0.177068 1.51751 1.32933 0.28738 1.64796 0.532174 -0.853108 0.300799 0.612442 -0.826804 -0.145823 0.0179151 0.689623 0.979581 -0.0872262 1.41521 1.45593 -0.333785 0.434596 0.219443 -0.971676 -0.190072 1.0507 1.21958 1.18791 -1.1609 0.799856 1.86851 0.438704 0.46043 0.126645 -0.611546 0.347355 0.21176 -0.508463 1.21312 -1.58255 0.645352 0.327608 -0.689747 0.303701 0.647456 -0.380731 0.289493 0.610741 -0.602282 0.11499 -0.974783 -0.307861 0.288418 -0.0283254 -0.865718 -0.249199 -0.32181 -0.609342 -1.09572 -0.274242 0.32683 -1.13981 -0.399013 1.18468 -0.704158 -0.822114 0.136789 2 2 -17.744 2.18794 11 11 5 0.550976 -1.06005 -1.05818 -0.495339 0.483871 0.721784 0.799613 0.154143 0.128641 -0.416247 -0.0325726 0.764337 -0.564113 -1.13472 -0.580053 0.352671 0.746128 0.521416 -0.00716114 -0.116909 -0.298603 -0.1016 0.670166 -0.584285 -1.6582 -1.11636 0.591326 0.530082 0.565564 -0.145542 -0.379979 -0.0820396 0.201062 0.192866 -0.192624 -1.0216 -0.390566 0.704153 0.969901 0.783504 0.354535 0.0541339 0.427391 0.158229 -0.391477 0.00722982 -0.350506 -0.21695 1.39756 1.66399 1.21549 0.363315 -0.302863 0.637606 0.0591315 -0.772675 0.196843 -0.734341 -0.531079 2.21607 1.48895 2.57802 0.0508805 -0.716982 0.274853 -0.315273 -1.5708 -0.0922509 -0.347995 -0.448634 1.34557 1.46653 1.15055 -0.0433934 -0.496144 0.116617 -0.280998 -1.18119 -0.781759 -0.653391 -0.420263 0.942844 0.708321 0.980732 -0.28411 -1.1158 -0.442784 -0.142184 -0.201795 -0.204188 -1.40572 -1.47885 0.313109 0.335405 0.533021 -0.581595 -1.1801 -0.611256 -0.0576767 0.162194 -0.210006 -0.921598 -0.876649 0.0160154 0.311574 -0.162699 0.387969 -0.296866 -0.428596 0.129031 0.867086 -0.492219 -0.93408 -0.0376459 0.20428 0.583035 -0.00302588 0.487 -0.0272915 -0.59112 0.156214 3 11 11 3 2 0 -21.3232 4.24073 11 11 5 0.618219 0.564635 0.635472 0.0666027 -0.637309 -0.332743 0.480737 1.44289 1.33604 0.420024 -0.446818 0.741957 0.563604 0.393541 -0.427036 -0.99507 -0.0452552 0.744836 1.57783 1.43752 0.900689 -0.031884 0.592517 0.14372 -0.362645 -1.36316 0.22701 0.940898 0.444468 0.984584 1.10078 0.521372 -0.626127 0.288722 -0.379981 -1.35616 -1.08687 0.934632 -0.278177 -1.03127 0.0290488 1.19084 -0.0505846 -1.57457 0.105002 -0.459356 -0.774055 -0.392033 0.042783 -2.25722 -1.38342 -0.142889 0.643802 -0.375267 -1.49175 0.553699 0.437362 0.272408 0.489296 -0.37871 -2.73764 -1.18924 0.117313 0.498907 -0.45981 -1.0228 0.34581 0.716294 1.22387 1.08287 -0.137019 -0.319977 0.604921 0.487369 0.335196 -0.101489 -0.294962 0.0230149 0.173985 0.664965 0.674076 0.0400843 -0.111662 0.29486 0.233101 0.264927 0.126284 0.0561998 -0.154513 -0.189857 -0.0489635 -0.0733727 -0.179645 -0.126392 0.277815 0.108957 -0.196846 -0.123978 0.174966 -0.123852 -0.327063 -0.39165 -0.174862 0.12357 0.414801 0.527111 0.124288 -0.261982 -0.189861 0.213365 -0.380804 -0.779868 -0.735626 -0.464608 -0.265094 -0.0939177 -0.323289 -0.303651 -0.247628 -0.193104 -0.391123 2 1 -18.195 1.97998 11 11 5 0.197276 -0.124995 -0.344645 -0.20211 -0.136797 -0.592623 -0.260204 -1.10788 -1.31548 0.0385023 -0.493212 -0.20995 -0.152861 0.0632084 0.728402 -0.285886 -0.846829 -0.192055 -0.272092 -0.794841 -0.571161 -0.640455 0.524652 1.29362 1.68213 0.0310939 -0.663797 -0.352206 0.509482 1.05604 0.836438 0.761354 -0.0770875 1.00349 1.42513 0.445084 -2.16565 -0.343663 1.25999 1.24496 0.448891 0.0639516 2.03781 1.57451 0.710051 0.433324 -0.365245 -1.51994 0.297892 1.50077 0.953106 0.43449 -0.557275 0.546793 1.53454 -0.476538 0.799571 0.771978 -0.328601 -0.0959356 -0.463195 -1.74319 -0.399495 -0.106744 -0.0327353 0.133068 -0.92468 -0.9679 -0.296382 -0.319697 -0.224485 -0.173231 0.346423 -0.176434 -0.502034 0.334992 0.373752 -0.232488 -0.579987 -1.00104 -0.731901 -0.29165 -0.891513 -1.00679 -0.341401 -0.74292 -0.482557 -0.282674 0.808033 0.362782 -0.245387 -0.60902 -0.709215 -1.12008 -0.627535 -0.179219 -0.584891 -0.453207 -0.182231 0.801551 0.447777 -0.0169576 -0.748344 -0.557781 0.0809281 0.724933 0.601606 0.121812 -0.517855 0.408661 0.371132 0.525988 0.502389 0.0248291 0.284416 0.240605 0.12756 0.451641 0.327162 0.369986 0.976315 2 2 -19.4671 2.6216 11 11 5 -0.431253 0.424159 0.676579 0.1184 -1.0564 -1.24788 -1.28698 0.078964 0.951136 0.896847 -0.293971 0.023747 0.664557 1.14743 -0.183278 -1.31848 -1.6059 -0.567105 0.956505 1.13791 1.0457 0.37694 -0.033519 0.276414 0.349308 -1.04431 -0.736951 0.0357201 0.0398318 1.01961 1.43025 0.910919 0.891839 0.197931 -0.00720201 -0.59867 -0.714168 1.17304 0.687095 -0.198953 0.926557 1.46017 1.10951 -0.330191 -0.0708091 -0.886496 -0.995168 -0.644521 0.347832 -1.32689 -1.17459 0.463795 0.854704 0.580204 -0.220419 0.736324 -0.164496 -0.398256 -0.270193 -0.793156 -2.9744 -1.58006 -0.285053 0.38442 0.220414 -0.774915 0.514178 0.373165 0.514929 0.900127 -0.466825 -1.30094 -1.12523 0.116394 0.437249 0.198086 -0.827138 0.261066 0.361434 0.581067 0.523226 -0.588063 -1.3811 -0.638321 0.409636 0.322327 0.38744 -0.337075 0.0790107 0.302161 0.415079 0.181507 -0.0311996 -0.810776 0.14892 0.186004 0.0598412 0.0650175 0.244021 0.0790941 0.114075 0.144495 -0.0122382 0.132744 0.316075 0.518159 0.376163 -0.277006 0.0811782 0.566242 -0.345456 -0.249406 -0.15494 -0.182563 -0.0216783 0.512394 0.348227 0.208784 -0.315253 -0.365641 0.0712147 3 11 11 3 2 0 -28.0666 5.15025 11 11 5 1.74559 -0.176046 -0.883861 -0.64187 0.225474 1.60844 1.84237 0.99958 0.122543 -0.282005 -0.286179 0.290321 -0.873171 -0.487604 0.16074 0.386166 1.29852 1.41802 0.957815 0.423728 -0.213294 0.158678 -0.915284 -1.0581 0.45706 0.572853 -0.462116 0.604938 1.63741 0.945189 0.311262 -0.984669 -0.0202324 -0.829339 -0.673679 0.405557 -0.239897 -1.92415 -0.121505 1.44693 0.345298 -0.977583 -1.86625 -0.729122 0.200222 0.2075 -0.116078 -2.00685 -2.73823 0.118228 1.17896 -0.143337 -1.23637 -1.92325 -0.121971 1.35455 0.791426 0.19732 -0.800772 -0.41418 0.506507 -0.122407 -0.672109 -0.551168 0.0208987 0.718794 1.08577 1.00997 0.246069 -0.396484 0.0645299 0.59617 0.421846 0.31589 0.164877 0.0529335 0.689907 0.063751 0.216553 -0.115623 -0.461425 -0.0491562 0.388752 -0.101618 -0.0704279 -0.0277843 0.0941313 0.573825 -0.20296 -0.0344206 -0.191426 -0.0981182 0.244298 0.360155 -0.489285 -0.270489 0.25131 0.355053 0.199224 -0.500247 -0.369555 -0.120452 0.14594 0.303975 0.213833 -0.310378 -0.339275 -0.182877 -0.276263 -0.375292 -0.712086 -0.542556 -0.309125 -0.0874592 -0.175678 -0.268717 -0.00385076 0.181454 0.286321 0.30007 0.0902262 2 1 -22.8123 3.15497 11 11 5 0.359864 -0.320149 -0.105137 -0.843064 -0.277747 -0.614911 -1.69376 -1.09736 -0.158039 -0.651162 -0.800736 1.40983 0.439342 -0.0349174 -1.04607 -0.0605941 0.682964 0.072548 0.0680401 -0.828559 -0.632123 -0.654101 1.8449 -0.0858238 -1.01233 -0.507664 0.782914 1.36765 0.355969 1.23126 0.88698 0.64911 0.370077 0.111272 -1.98939 -0.905142 1.69485 1.45817 1.63817 -0.527639 0.235877 2.2894 1.70309 0.439237 0.578136 -0.6857 -0.215971 1.21174 -1.94436 0.874224 -0.627434 -0.27133 1.17299 -0.404488 -0.651663 0.708982 -0.23085 0.309173 -0.451403 -0.296812 -0.750359 -0.2033 0.155203 0.192507 0.300212 -0.261774 -1.27513 -1.12304 0.11261 -0.614789 -0.795911 1.14344 -0.0958373 -1.22396 0.726934 -0.13253 -0.715563 -0.166002 -0.492135 -0.189646 -0.719574 -1.23475 -0.128931 -0.772656 -1.35595 -0.213804 -0.159494 -1.01302 0.429753 -0.546347 -0.41386 -0.296608 -0.299596 0.664474 -0.177503 -0.930116 0.187912 0.802961 -0.226419 0.580347 -0.300223 -0.135563 0.379479 0.251629 0.579448 0.345151 -0.158682 0.705487 0.602155 0.389799 0.681071 0.224257 0.18948 0.497464 0.067533 0.0897576 0.537976 0.0578002 0.603636 0.650858 0.653389 2 2 -23.3594 3.71609 11 11 5 1.36031 -0.0731555 -1.31331 -1.57666 -1.17193 0.214853 1.29501 0.84944 0.440496 -0.0317537 -0.881329 0.679368 -0.390836 -0.497829 -0.926865 -0.676823 0.705455 1.13253 0.83197 0.635201 0.108672 0.026478 -0.151732 -0.777775 0.108966 0.882234 0.0627176 0.526293 1.74217 1.5139 1.31154 0.175336 1.09551 -0.915292 -0.846513 0.857787 0.307037 -0.9659 -0.0605403 1.58251 1.28719 0.150921 -0.976794 -0.110143 -0.676355 -0.765781 -0.053122 -1.5832 -2.70472 -0.214391 1.39849 0.426426 -0.288038 -1.22669 -0.962189 0.538001 -0.0407535 -0.32195 -1.34763 -1.1359 0.071906 0.105865 -0.515108 0.29723 -0.420077 -0.982627 0.964827 0.868546 -0.0287995 -1.01841 -1.32675 0.356567 0.606272 0.795381 0.306953 -0.505192 -0.612315 0.57461 0.496083 -0.0417126 -0.874389 -0.840627 0.733852 0.398531 -0.326772 0.0683258 -0.113255 0.156402 0.525821 0.252908 0.165843 -0.180208 -0.0530376 0.528026 0.0049883 -0.249302 0.477715 0.254146 0.0255064 -0.133716 -0.0977196 -0.0762752 0.150342 0.39539 0.726329 -0.112087 -0.219238 0.18989 0.373104 -0.0123488 -0.190182 -0.108528 -0.213351 0.117576 0.380572 -0.26704 -0.0877697 -0.143769 -0.217408 -0.101085 0.118648 3 11 11 3 2 0 -30.0994 5.53269 11 11 5 -0.94458 -0.906149 -0.0491222 1.43485 2.25099 1.53062 0.597814 -0.314444 -0.19784 -0.0846502 -0.338195 -0.883169 -0.226181 -0.103219 1.09741 1.85679 1.1309 1.24502 -0.306271 0.033879 0.69924 -0.386012 -0.271212 0.129552 -0.79281 0.268637 1.94844 0.895904 1.21144 -1.3859 -0.365895 0.857837 -0.418809 -0.220422 -0.383653 -1.59045 -0.698849 1.47 0.631339 -0.413494 -2.64724 -1.46642 -0.161494 -0.476247 -0.0576732 -1.14615 -2.32178 -1.22954 1.10455 0.0427146 -0.946621 -2.59293 -1.00391 0.143472 0.274402 1.07253 -0.222583 -0.396648 0.29628 -0.0137098 -0.518986 -0.310269 0.457002 0.817244 0.589864 1.30401 1.21029 -0.243294 -0.372545 0.229889 0.379869 0.501531 0.0202168 0.119196 0.149766 0.325598 0.509035 0.271726 -0.349388 -0.184839 0.135257 0.05429 0.0734176 -0.27343 -0.0133501 0.234221 0.182769 0.105913 -0.138185 -0.13909 0.172693 0.137731 -0.176293 -0.229429 -0.166171 0.207507 0.0547334 0.0317107 -0.226554 -0.199731 0.0549385 0.280709 0.070809 -0.218748 -0.410049 -0.267337 -0.184858 -0.153017 -0.0559919 -0.360583 -0.29544 0.05387 0.160324 -0.0907393 0.218694 0.100976 0.352344 0.351444 0.0245577 -0.196413 -0.429759 2 1 -25.6788 3.37364 11 11 5 -0.101942 -0.945887 -0.392834 0.526297 -0.997149 -1.93303 -0.492239 -0.75595 -1.97423 -0.248943 1.47347 -0.0297059 -0.98345 -0.625584 1.23893 0.438331 0.300579 -1.04883 -0.610476 -1.05801 -0.109999 0.950678 -0.611039 -0.350307 -0.126111 1.85963 0.326125 1.27005 1.31838 1.17407 0.114704 -0.0750697 0.242843 -1.1442 0.623031 1.17007 2.30679 0.127709 -1.20236 2.66609 2.06409 0.29056 0.313565 -0.162726 -0.646955 0.920884 -0.383184 -0.710861 0.720154 -1.34586 0.941902 -1.23036 -0.755399 0.367399 0.826035 0.0195626 -0.018924 0.273346 -0.140681 -0.553629 0.147141 -0.306028 0.692347 0.211149 -0.511359 0.458816 -0.318505 -0.478669 -1.36784 0.305653 0.892971 -1.90712 0.492527 -0.133774 -1.57135 -0.740708 -0.806765 -0.732489 -0.331328 -1.09383 -0.526582 -0.325999 -1.59921 -0.52424 0.402188 -0.609881 -0.691288 0.048363 -0.0379501 -0.0285047 -0.49113 0.78847 0.320924 -0.987336 0.0839246 1.32389 0.22283 -0.328856 0.181015 -0.0139291 0.261394 0.134449 0.0885577 0.59834 0.0292955 0.249955 0.866306 0.0756908 0.156224 0.742778 0.171934 0.25045 0.000259412 -0.0530213 0.376954 0.159159 0.351273 0.563127 0.351234 0.416653 1.00205 2 2 -23.5883 3.85442 11 11 5 -0.754486 -1.55835 -1.49683 -0.160983 1.34063 0.785568 0.78024 -0.0790722 -1.13088 -0.138305 0.405062 -0.469095 -0.599726 -0.971051 0.396457 1.32691 0.946754 1.46824 0.589499 -0.244816 0.679429 0.224195 -0.251909 0.874606 0.118138 -0.357593 1.42008 2.23839 1.96835 0.366213 0.700011 1.09919 -0.461205 -0.422564 0.156986 -0.902391 -0.727339 1.82602 1.39678 0.972699 -1.20956 -1.09368 0.164681 -0.890984 -0.753102 -0.600335 -2.54299 -1.33309 1.01192 0.139935 -0.0601158 -1.63225 -1.26969 -0.574893 -1.0114 0.104517 -0.441965 -0.966444 -0.441406 0.0801929 -0.316489 0.737226 0.436085 -0.282053 -0.851922 -0.134548 0.845361 -0.637809 -1.31105 -0.270156 0.293833 0.970891 0.42772 0.0655921 -0.666068 -0.307364 0.615905 0.210222 -0.317252 -0.812239 0.159814 0.267884 0.60516 -0.31567 0.134836 -0.158565 -0.0142453 0.496502 0.0656748 -0.0135186 -0.181383 0.166309 0.31304 0.0362323 0.17529 0.591524 -0.0188418 -0.0140054 -0.0704387 -0.0950531 0.00689963 0.225605 0.383202 0.0880665 -0.0755846 -0.0610233 0.354738 -0.0448407 0.0568314 0.42414 -0.201093 0.0237411 0.126095 -0.190702 -0.127171 -0.217602 -0.0165254 -0.17164 -0.098311 0.442022 0.213555 3 11 11 3 2 0 -27.3211 5.28853 11 11 5 -1.11313 0.60155 1.77192 1.46465 0.478554 -0.458212 -0.343013 -0.224044 -0.309234 0.355793 1.00675 -0.900598 0.520057 1.52343 1.37798 1.2258 0.129558 -0.0599232 0.572585 -0.178216 -0.459914 -0.103125 -0.83714 -0.129949 1.36729 1.25718 1.57614 -0.213512 -0.280509 1.24488 0.108043 -1.22853 -0.627936 -0.939209 -1.03902 0.519799 0.904315 0.44741 -1.55057 -2.24424 0.259442 -0.0965938 -0.945156 -0.359538 -1.33029 -1.64174 0.419158 0.603567 -0.163118 -1.79664 -3.12776 -0.589664 -0.0785183 0.0260325 0.741634 -0.824608 -0.433872 0.371702 -0.132083 -0.647171 -0.310441 0.267703 0.27024 0.533233 1.46144 1.51476 -0.317174 -0.270512 0.54256 0.815415 0.211291 0.332591 0.215716 0.424859 0.746376 0.792284 0.0369896 -0.186174 -0.112644 0.142073 0.412173 -0.400256 -0.120288 -0.0877334 0.0532623 0.581817 0.129608 -0.421008 0.083032 0.166728 0.162806 0.192392 -0.530632 -0.0437927 0.198579 -0.0218393 0.298223 -0.0263969 -0.552703 0.141062 -0.032838 -0.0421875 -0.203531 -0.519169 -0.103033 -0.0655389 -0.0216949 0.0314935 -0.331458 -0.707784 0.167629 0.13497 -0.0763823 -0.277391 0.180519 0.0827159 -0.211458 -0.0223803 0.0811077 -0.265346 -0.592272 2 1 -24.2927 2.89147 11 11 5 -0.420889 0.589929 -0.20047 -1.89891 -1.09219 -0.70027 -1.37676 -0.802363 0.504202 0.751019 0.542021 -0.815111 0.381322 0.326873 -0.553559 -1.36131 -0.912247 -1.39958 -0.79328 0.610341 0.915678 0.809815 -0.761461 1.08946 0.996257 1.07643 0.552221 0.332588 0.553678 -0.357889 -0.465997 0.327508 1.00161 0.439703 1.74655 0.756555 -0.756635 0.965285 2.48859 1.03057 1.32962 -1.09793 -0.148135 0.855115 0.331629 0.657755 0.780129 -1.4406 0.166341 1.23763 -1.85913 0.756719 0.0455412 0.68602 1.62806 -0.789299 -0.719061 -0.307552 -0.554006 -0.220031 -0.796797 0.343849 -0.900317 0.342838 -0.105516 -0.202112 -0.49355 0.221613 0.86923 -0.769227 -0.362396 0.740014 -0.883617 -1.2991 -0.299083 -0.401222 -0.723836 -1.05413 -0.494116 -0.0375197 -1.38662 -0.80159 -0.153534 -0.912796 -1.15529 -0.614785 -0.281307 0.509176 -0.703466 -0.120109 0.430627 -0.933306 -0.204392 0.685808 0.260505 -0.470433 -0.445966 -0.344568 0.588931 -0.0886766 0.182746 0.654078 -0.0453354 -0.117207 0.772728 0.717346 -0.102091 0.00463327 0.336537 0.896591 -0.24919 -0.241928 0.553424 -0.00989501 0.0157417 0.497012 0.247262 0.384381 0.455332 0.862766 1.17375 2 2 -23.3371 3.85383 11 11 5 -2.01311 -0.817065 0.655965 0.952576 0.506749 -0.145892 -0.865152 -0.459512 -0.14365 0.645947 0.270671 -1.42482 -0.151545 0.944329 0.969966 0.965119 0.47134 -0.798367 -0.092156 0.147611 0.15852 -0.206523 -0.111211 -0.122774 0.993879 1.37296 2.44315 1.29394 0.526556 1.582 0.411086 -0.766847 -0.845961 0.0654993 -0.948923 0.831539 1.64486 1.3195 -0.227261 -0.787907 0.689773 0.00805268 -0.829854 -1.01858 -1.20164 -1.56405 0.654333 0.685254 0.537048 -1.06203 -2.34468 -1.19375 -0.646364 -0.725159 -0.263365 -1.21427 -0.93712 0.0672414 -0.410562 -0.264456 0.474062 -0.464889 -1.03905 -0.75404 0.714646 0.632872 -1.07394 -0.761205 0.36998 0.84354 0.375941 0.818581 -0.395581 -1.27682 0.0813241 1.13179 0.441214 -0.9101 -0.475107 0.240934 0.968167 -0.482173 0.454321 -0.303159 -0.521302 0.407844 0.355012 0.108002 -0.359695 -0.0322876 0.390395 0.724632 -0.0433166 0.391532 -0.0997107 -0.217372 0.491618 -0.011315 -0.0139677 -0.0391496 0.334983 0.290369 0.24272 0.0342653 0.33248 0.366917 0.161993 0.11273 0.0110601 -0.143101 -0.0583666 0.208144 -0.0647789 -0.366129 0.0860745 -0.15267 -0.233269 0.432517 0.428055 0.0977699 -0.474894 3 11 11 3 2 0 -24.0262 4.87622 11 11 5 -0.0674762 1.38117 0.654279 -0.225391 -0.436848 -0.417628 0.0907134 0.719645 0.699869 0.5225 0.289155 0.482801 1.9783 1.41619 0.302036 -0.255544 -0.493699 -0.509478 0.0914982 0.423569 0.282771 0.0582207 0.222375 1.77349 1.43324 1.14493 0.215216 0.953594 0.0302014 -0.855023 -0.428209 -0.0963299 0.22501 -1.40029 1.17571 1.34846 0.0716439 -1.05313 0.166439 0.793416 -1.62389 -1.24376 -0.344829 0.376846 -1.95646 0.5109 0.346733 -1.33049 -1.77576 -2.23373 0.0257741 -1.04542 -0.821418 -0.147712 0.614087 -1.18635 0.727598 -0.0917616 -1.01866 -2.24175 -1.94677 0.0125331 0.182071 0.792961 0.949391 0.590336 -0.83668 0.289808 -0.0645587 -0.112561 0.427796 0.50405 0.368675 1.37846 1.56187 0.679491 0.23243 -0.812443 0.71682 0.547303 -0.0912131 -0.00722571 0.0209767 0.483293 0.93713 0.459462 -0.208617 -0.150585 -0.5154 0.427269 0.108592 -0.431941 -0.161769 -0.191888 0.449765 0.409478 -0.141631 -0.322445 -0.248076 -0.0501364 0.261325 -0.121592 -0.416845 0.322908 0.16021 0.619446 0.476336 -0.239942 -0.558083 -0.425926 -0.650289 -0.512258 -0.448011 -0.32398 -0.172254 -0.305376 -0.0674472 -0.191127 -0.720398 -0.757906 -0.412176 2 1 -21.0982 2.16715 11 11 5 0.815864 -0.525222 -1.36513 -0.246951 -0.785957 -0.8787 -0.352574 0.69186 0.270026 0.300206 -0.488865 0.157709 -1.12678 -1.9015 -0.928645 -1.20981 -1.23585 0.332359 1.09968 0.376197 -0.011961 -0.0494284 0.809316 0.720657 -0.310961 -0.914038 -0.801393 -0.324283 -0.0763411 1.46232 0.844428 0.383242 -0.143088 1.28227 0.988874 0.553436 0.512637 1.26099 1.35924 -0.440918 -0.194457 0.702682 1.11824 0.486709 0.822198 0.130535 -0.103173 1.91997 1.9969 0.858116 0.377889 -0.746204 1.05051 1.87614 0.297777 0.424398 -0.486073 -0.343299 0.215058 -1.43734 -0.805513 0.54025 -0.0474938 1.30387 0.589686 -1.29516 -0.334018 -0.413043 -0.303209 -0.627262 0.56997 -0.951282 -0.443558 -0.217723 -0.176711 -1.11642 -0.880337 0.607766 0.43325 -1.02432 0.10748 -0.966491 -1.38731 -0.261176 -0.427726 -0.749294 -0.0664158 -0.0133773 -0.525644 -1.07117 -0.911511 -0.663921 -0.121447 -1.31874 -1.40058 -0.770455 -0.307059 0.255057 0.34354 0.121399 -0.411451 -0.253204 0.458565 0.952416 0.00671325 -0.571207 -0.504345 0.0271659 0.34413 0.463213 -0.159372 0.0683076 0.0311235 0.290039 0.906149 0.354566 0.456353 0.536635 0.76781 1.0946 0.798465 2 2 -19.6982 2.51489 11 11 5 -1.34304 0.216601 0.335981 0.22089 0.217049 -0.155254 -0.0945618 0.061432 0.108104 0.0734027 -0.422089 0.0524184 1.17883 0.818955 0.245396 -1.38287 -1.24552 -0.213554 0.816771 0.546087 0.0104921 -0.488013 0.788006 1.20151 1.1425 0.943526 -0.269786 0.178081 0.274087 -0.286399 0.38301 0.000661003 -0.521067 0.132823 1.44635 2.60028 1.42271 0.68638 1.55859 1.58345 -0.882617 -0.652641 -0.723116 -0.61118 -0.808362 1.14081 0.783995 -0.241171 -0.977124 -1.28939 0.456526 -1.4676 -1.08405 -0.82516 -0.303436 -0.578403 0.524953 0.00942641 -0.650378 -1.61742 -2.59204 -0.923798 -0.906874 -0.0125636 -0.106455 -0.330158 -0.657423 0.226474 0.114466 0.434257 0.0655507 -1.31816 -1.17869 0.255789 0.801858 0.44562 -0.508961 -0.242353 0.560031 0.525721 0.164059 0.0888242 -1.2091 -0.745465 0.852828 0.814031 -0.24679 -0.552194 -0.103034 0.717857 0.663881 0.245871 -0.0941594 -0.837205 -0.299078 0.507663 -0.0458845 -0.0586099 -0.263789 0.541726 0.650537 0.506053 0.387074 0.115097 -0.183921 0.295579 0.418126 -0.156269 -0.0987172 -0.274842 0.694495 0.534822 -0.0460113 0.00474368 0.178404 0.102216 0.188018 0.376059 -0.000538753 -0.471402 -1.03913 3 11 11 3 2 0 -25.0272 4.47231 11 11 5 0.31323 0.0454275 -0.467517 -0.397439 0.227421 0.682325 0.500861 0.135239 -0.311694 -0.398562 -0.716031 0.2686 -0.141455 -0.967721 -0.360237 0.66872 0.97849 0.934832 0.456148 0.169493 0.244412 -0.10421 0.427294 -0.276626 -0.799096 -0.600798 0.197717 0.765571 0.753328 0.676473 0.502668 0.129638 -0.749122 -0.313443 -0.543662 -0.694548 -0.12206 0.504186 0.338161 0.805885 0.496965 -0.317326 -0.825588 -1.15598 -0.8059 -0.559929 0.0759052 0.719479 0.249858 -0.482536 -0.752061 -1.4888 -1.85701 -1.52597 -0.404111 0.0570582 0.684222 0.921655 0.036976 -2.01575 -4.29164 0.616995 -1.36337 -2.96532 -1.01805 1.25576 1.01253 1.19802 0.361413 -1.00457 -0.791495 0.533727 1.07607 1.6488 0.794162 1.02483 0.283038 1.09576 0.753507 0.338493 -0.344677 -0.0381918 0.306893 0.393903 0.647666 0.84625 0.573315 -0.556901 0.472152 0.0026157 -0.389487 -0.506036 -0.315311 0.134567 0.337824 0.599574 0.689245 0.692695 -0.127087 -0.419892 -0.204057 -0.342673 -0.410211 -0.116212 0.066783 0.218892 0.514633 0.635374 0.497828 -0.316397 -0.779096 -0.24503 0.0637932 0.0686423 0.0222154 0.185325 0.293482 0.584402 1.02342 0.847142 0.0209312 2 1 -19.7982 1.80683 11 11 5 -0.516852 -0.932261 0.0116297 0.247921 -0.0124307 -0.0573027 0.203233 -0.151284 0.000799088 0.0900344 -0.306002 -0.748487 -0.751644 0.154066 -0.0450667 -0.126646 -0.340598 0.161403 -0.0365375 -0.192791 -0.493312 -0.912876 -0.34045 -0.232172 0.424288 0.0725091 -0.893994 -0.535695 -0.844195 -0.164209 0.436185 -0.0269296 -1.11367 0.159327 -0.0522196 0.240529 -0.900701 -0.476922 -0.144763 0.862348 1.37921 1.63858 -0.254534 -0.166747 0.56221 0.254194 -0.428077 -0.660997 0.649009 2.12147 1.03671 1.24415 0.145796 0.611814 1.11676 0.608945 -0.20564 -0.237236 0.648182 -0.110881 -2.27219 -1.99188 1.64095 1.27943 1.87449 1.35467 0.30031 -0.529262 -0.474888 -0.825249 0.213923 2.95901 -0.338127 0.671816 1.96531 0.0339841 -1.71179 -0.356583 -0.183983 -0.658344 -0.154012 0.40669 -0.594411 -1.04332 -2.08609 -1.31711 -1.63369 -1.56174 -0.181691 -0.016852 0.077565 0.0282798 -0.526182 -0.0120666 -0.00134865 -0.882864 -0.692478 -0.352854 -0.586428 0.0692555 0.142348 0.279436 0.299706 0.327839 0.0459093 -0.262568 -0.250231 0.176171 0.56247 -0.0999405 0.24185 0.48006 0.841494 1.14731 0.849037 0.475873 -0.0631991 -0.393375 0.110946 0.796594 0.734899 2 2 -22.0205 3.80582 11 11 5 -0.419504 0.389507 -0.331544 -0.526707 -0.130113 -0.0358085 0.236218 0.105081 -0.259913 -0.276375 -0.247441 0.550463 0.185746 -0.454463 -0.246994 0.165742 0.443457 0.601286 0.617223 0.209034 0.439274 0.795005 0.858114 0.19844 -0.33945 -0.214762 0.155518 0.344348 0.497145 0.709744 0.957074 0.879983 0.985885 0.405419 -0.415789 -0.387877 -0.149769 0.625434 0.602693 1.57855 1.35541 1.17763 0.80051 0.834614 -0.88796 -0.934858 -0.135534 1.60515 1.89097 0.351174 0.258505 0.168959 -0.667744 -1.21068 0.509727 -0.86601 -0.0892194 0.667531 0.593069 -2.41134 -4.19378 0.868174 -1.40577 -3.01851 -1.47918 0.601229 0.636938 0.32771 -0.22247 -1.33328 -1.75124 -0.999795 -0.423917 0.686458 0.0082724 -0.148956 0.0624388 1.28748 0.956481 0.561965 -0.54998 -0.500609 -0.838193 -0.550977 0.148149 0.143591 -0.0516806 0.0516427 0.770241 0.848482 -0.0269455 -0.505542 -0.351876 -0.193216 -0.427534 -0.295702 -0.0735069 -0.100911 0.452558 0.246649 0.319381 0.00329393 -0.36081 -0.405399 -0.325206 0.0259634 -0.0468533 -0.0616851 0.128314 0.401803 -0.083506 0.347918 -0.0694169 -0.0271048 -0.148152 -0.241599 -0.388197 -0.156687 -0.274419 -0.144798 0.182501 3 11 11 3 2 0 -28.055 4.83044 11 11 5 0.401102 -0.0192817 0.0849598 -0.00632002 0.0689982 -0.197544 -0.326606 -0.396418 -0.325424 0.102193 1.03495 0.161113 -0.238032 -0.128412 0.368051 0.419102 0.114859 0.0424011 -0.133235 -0.0582592 -0.0611254 0.244776 -0.380081 -0.388378 0.337165 0.517269 0.605845 0.321 0.212539 0.286857 0.222667 -0.103373 -0.421794 -0.733051 -0.514161 -0.0339438 0.431451 0.795419 0.469602 0.596126 0.389264 0.319103 -0.171469 -0.74787 -0.37327 -0.219761 0.171933 0.588179 1.01967 1.28657 1.11186 -0.00345156 -0.879177 -0.638662 -0.485945 -0.174045 0.451998 0.818714 0.33059 -0.437164 -3.42518 -3.4857 -2.57909 -0.48824 -0.438588 -0.313594 0.588873 0.726388 -0.513905 -1.6824 -0.548133 -0.0685765 -1.17089 -0.222847 2.07683 0.480961 -0.982249 0.647398 -0.407142 -0.997207 -0.950659 2.2839 0.96395 -1.30547 -0.967016 1.05879 0.308967 -0.957777 0.591196 -0.569067 -0.378138 0.0528721 0.535806 1.17467 0.77327 0.461473 0.849345 -0.0530449 -0.685478 0.388349 -0.231073 -0.260409 -0.272628 0.0627834 0.384643 0.564274 0.489714 0.276841 0.140398 -0.317859 0.38467 -0.112709 0.00472331 0.187391 0.174574 0.268198 0.530041 0.689538 0.483193 0.450711 -0.399785 2 1 -18.7897 2.06151 11 11 5 -1.02296 0.211059 -0.161513 -0.0423827 0.223535 0.251336 0.113513 0.454797 0.394638 0.729654 0.516979 -0.755293 0.213703 0.0781182 -0.154394 0.379881 0.131089 0.279535 0.137284 -0.0876785 -0.221006 -0.158263 -0.00334805 0.155725 -0.527176 -0.539757 -0.224737 -0.0775071 -0.132879 -0.287644 -0.771216 -0.514027 0.0995122 0.0897465 0.292586 -0.269664 -0.660009 -0.260409 -0.541596 -0.872812 -1.1107 -0.486579 -0.360374 0.271173 0.763844 -0.0745025 -1.03631 -0.779073 -0.121668 2.48264 2.77972 0.669715 -1.509 -0.394297 0.0929502 -0.114446 -0.764879 -0.414613 1.6241 1.37749 0.916998 0.267452 -0.912126 -0.433705 0.161906 0.308634 -0.376289 -0.248677 1.03934 -0.262407 -0.585478 1.7779 0.790208 2.34518 1.31594 0.416134 0.0159406 -0.513616 -0.506784 -0.241014 0.369692 -0.319441 1.28264 1.00041 1.21286 -0.0417538 0.0116078 0.515882 -0.416089 0.203275 0.351337 -0.230131 -2.07627 -1.82073 0.71749 -0.196654 -2.07009 -0.621426 -0.806014 0.159804 0.384952 0.181788 -0.169117 -1.01518 -1.61994 -1.08161 -0.814196 -0.669698 -0.21228 -0.512565 0.049443 0.403209 0.601199 0.524172 0.505091 -0.277937 -0.0785398 0.496635 0.869296 0.632288 -0.0604626 2 2 -23.6451 4.12265 11 11 5 0.0358513 0.0112513 -0.155173 -0.385216 -0.172616 -0.241101 -0.522324 -0.406318 -0.460586 0.24184 0.685397 0.640161 0.118295 -0.361824 -0.0755993 0.0792432 0.00541889 -0.248483 -0.473093 -0.0117318 0.0598564 0.149924 0.0725115 0.0617447 0.273962 0.279953 0.142409 0.13134 -0.0612422 -0.00164716 0.192102 0.0270829 -0.0324704 -0.467686 -0.218743 -0.0332547 0.282097 0.294924 0.513942 0.3755 0.811944 1.16588 0.275773 -0.660767 -0.808182 -0.357249 0.431886 1.14124 1.95731 2.65331 3.08931 1.87664 0.861698 0.351003 -0.181295 -0.715715 0.617257 1.58138 0.322586 0.517243 -1.0332 -1.62341 -2.88562 -0.295172 -0.819637 -0.397986 0.381337 0.873665 0.277656 -2.31262 -0.882364 -0.54723 -1.26142 -1.36468 1.78448 0.323913 -1.11515 0.251684 -0.149946 -1.22721 -1.69909 1.00961 0.168444 -1.28523 -1.1262 0.640654 0.345881 -1.20618 0.58583 -0.553262 -0.308879 -0.425017 -0.224999 0.62896 0.256603 -0.360203 0.415637 0.215905 -0.567262 0.608562 -0.241578 -0.143355 -0.483319 -0.56513 -0.118368 0.137026 -0.00902748 0.475688 0.557977 -0.292226 0.772188 -0.0348766 -0.349092 -0.233015 -0.333978 -0.597075 -0.272123 -0.0341562 0.345616 0.878244 0.16679 3 11 11 3 2 0 -24.9542 4.95701 11 11 5 0.328031 -0.0300383 -0.17965 -0.281443 -0.270224 -0.308486 -0.260295 0.0407567 0.461375 0.815607 1.39833 0.110594 0.0543794 0.152657 0.144582 -0.060351 -0.233231 -0.0341358 -0.0212421 0.0282268 0.0693578 0.741618 0.112191 0.258451 0.323517 0.265526 0.195029 0.201724 -0.0728524 -0.171939 -0.105369 -0.231263 0.460051 0.0886925 0.249762 0.485967 0.337975 0.271291 0.391111 0.117981 -0.138349 -0.663501 -0.504661 0.174294 0.299138 0.634797 0.777638 0.758942 0.775605 0.125397 -0.146218 -0.239894 -0.552573 -0.538953 0.160777 0.507828 0.248861 -0.0121282 -1.18563 -2.75542 -3.47667 -1.58291 -0.659398 -0.12638 -0.0217148 0.290339 -0.590621 -0.802217 -1.17969 -2.44341 -1.07069 0.653322 2.39516 -1.09957 -0.320956 -0.353616 0.285466 -1.13285 0.574103 1.35445 -1.21405 -1.39769 1.14311 1.14549 -1.14162 -0.487012 -0.12556 0.2547 -0.641368 0.350942 0.780255 0.711411 0.805876 1.26312 0.151963 0.0306488 -0.285449 -0.339462 0.423206 -0.279892 -0.042218 0.453386 0.856773 0.66755 0.244029 0.172039 -0.0305164 -0.386391 -0.605831 0.471119 0.354432 0.22356 0.314435 0.357575 0.540682 0.666602 0.605468 0.572473 0.096527 -1.03084 0.0881545 2 1 -19.9905 2.31955 11 11 5 -0.595815 -0.498679 0.294994 0.422103 0.371095 0.51897 0.650271 0.701618 0.491034 0.172844 -1.1404 -0.441144 -0.0591051 -0.00102682 0.20546 0.157976 0.269064 -0.00525308 0.418727 -0.0917524 -0.422073 -0.499593 -0.293652 -0.315216 0.239715 -0.328331 -0.112208 -0.214553 -0.643011 -0.396518 0.134441 -0.0614964 -0.237281 -0.416047 -0.349068 -0.231692 -0.474957 -0.477108 -0.916198 -1.4033 -0.67556 0.430975 0.524209 0.526848 -1.02429 -0.340171 -0.220738 0.717504 1.43179 0.863927 -0.336896 -0.34778 -0.123951 0.528814 1.15789 -0.36768 0.981804 1.24461 2.24715 0.0593226 -0.691495 -1.46595 -0.244398 0.859311 -0.136834 0.738422 0.436083 0.0402864 -0.908461 0.124405 0.965387 3.34172 -0.128312 1.12409 -0.493309 0.132487 0.0310248 -0.271977 0.366258 1.67561 2.26821 1.21933 1.32786 -1.82729 0.682532 -0.145664 -0.902135 0.776504 -0.514102 -0.527559 -1.66189 0.194604 0.656012 -1.7473 -1.4303 -0.464136 -0.668111 -0.495849 0.524821 -0.00253892 -0.669451 -1.12297 -1.20425 -1.06482 -1.00473 -0.222487 -0.0804804 -0.0986367 -0.500516 0.0624743 0.787605 0.559649 0.0993931 -0.610924 -0.0649513 0.522962 0.483603 0.717786 -0.264591 -0.582659 -0.199933 2 2 -23.5069 3.82186 11 11 5 0.497384 0.128242 0.178101 -0.230835 -0.700562 -0.41421 -0.131564 0.227595 0.325724 0.316477 0.297262 0.0668084 0.115313 0.207944 -0.0379163 -0.0124247 -0.344344 -0.172321 -0.0698135 0.35935 0.038997 0.0230813 0.11652 0.354666 0.155193 0.187253 0.20497 0.23681 -0.13368 0.34165 0.111094 -0.0864044 -0.466021 0.24117 0.484038 0.584633 0.547971 0.554236 0.611673 0.783703 0.110816 -0.524975 -0.358391 -0.777092 0.750832 0.84245 1.32014 2.18972 2.56371 1.80154 1.2999 0.822686 -0.517218 -0.564454 -0.857373 1.56123 1.09843 1.63173 0.498297 -0.957498 -2.81477 -0.64571 -0.367873 0.13758 -0.429413 -0.652385 0.0361379 -0.624722 -0.388032 -2.10097 -0.984858 -0.306146 2.11617 -1.34425 -0.730334 -0.147947 -0.612178 -1.53509 -0.100725 0.729498 -1.22152 -1.43149 0.820721 0.977751 -0.927272 -0.497695 -0.70268 -1.07015 -0.797526 -0.104951 0.649768 0.30983 0.0758306 0.525906 0.0324384 0.399055 -0.330333 -0.616019 -1.41767 -0.29317 -0.322807 -0.154839 0.212936 0.114171 0.101953 0.398043 0.286271 -0.1141 -0.649252 -1.21427 -0.081117 -0.0856945 -0.281022 0.015142 0.0969036 0.0467301 0.583438 0.719778 0.796832 -0.324181 -1.19196 3 11 11 3 2 0 -19.1853 5.20997 11 11 5 0.183972 0.0941928 -0.211303 -0.606936 -0.719325 -0.28845 0.125647 0.536649 1.12245 0.826171 0.183464 0.455121 0.340454 0.336508 0.0446165 -0.302417 -0.230629 0.0574974 -0.153709 0.325211 0.841058 0.333311 0.447926 0.242558 0.220961 -0.222713 -0.127362 0.00633416 0.208238 -0.376902 -0.270596 0.091373 -0.0805244 -0.0463197 -0.11636 0.201002 -0.150431 -0.519231 -0.211836 0.120528 -0.631689 -0.744069 -0.0135417 0.139619 -1.03716 -1.16814 -1.01584 -0.0674596 -0.448419 -0.31903 -0.103104 -0.311034 -0.155061 0.142854 0.220667 -0.988028 -2.30068 -1.75868 -1.26672 0.491879 -2.80402 -1.60351 -0.363584 -0.447499 0.219871 0.636953 -1.22376 -1.69109 -1.34175 0.618147 1.13281 -0.515154 -0.601374 0.00193252 0.0203095 0.143896 0.781625 -0.348752 0.76007 1.85007 1.41096 0.0659148 -0.695729 -0.271139 -0.0572498 0.0601968 0.204932 1.17751 0.507463 0.604798 0.787299 0.633866 0.26656 0.476859 0.644444 0.257113 0.0692025 0.402426 1.15696 0.64071 0.299339 0.331395 0.405499 0.705636 0.648453 0.332235 -0.624961 -0.62769 0.214667 1.17195 0.0691018 -0.0436965 0.123525 0.332474 0.654435 0.707412 -0.0164857 -0.946644 -0.747261 0.486401 1.57937 2 1 -16.4782 2.29462 11 11 5 -0.502471 0.1774 0.307405 0.42212 0.398363 0.614666 0.87383 0.313674 -0.58942 -1.62931 -2.12689 -0.556138 0.0461663 -0.0704384 0.0913225 -0.142266 0.0596115 -0.392014 -0.262818 -0.482438 -0.581944 -0.375138 -0.434655 -0.292519 -0.333784 -0.425136 -0.61692 -0.560198 0.155073 0.479397 0.397599 0.381034 0.229645 -0.00968364 0.547788 0.798965 0.101501 -1.47837 -1.1465 0.278089 0.731646 0.700876 0.921795 1.09588 0.425862 0.910735 1.39195 0.944329 0.452754 1.29398 1.12269 0.332438 0.453233 0.651126 0.545911 0.797568 0.751632 1.69953 2.25579 -1.27177 -0.507003 -0.135405 0.0580334 0.0248858 0.593541 0.0792997 -0.408552 1.37597 1.45878 0.838185 -0.304744 0.826271 -0.532111 -0.616767 -0.336458 0.333453 0.208362 -0.0677872 0.634906 1.01986 -1.00091 -2.19429 -0.769616 -0.247886 -0.178882 0.192865 0.234778 -0.248083 -0.477562 -1.47315 -2.40696 -1.33685 0.236123 -0.175498 -0.0598971 -0.343205 0.0483322 0.34042 -0.575383 -0.415148 -1.11785 -0.797102 0.624149 0.481844 -0.471507 -0.553219 -0.461447 -0.300536 0.290779 -0.503613 0.174948 -0.325386 0.236986 0.719922 0.407391 0.481229 0.0920959 -0.614162 -0.45995 -0.307244 -1.16182 2 2 -17.8651 2.13513 11 11 5 0.215169 0.00907631 0.00549974 -0.543074 -0.457475 -0.101583 0.0653569 0.0489813 0.489614 0.0611131 0.453415 0.528403 0.485549 0.362471 0.321298 -0.214763 -0.119261 0.0120988 0.120676 -0.282722 -0.542429 0.388442 1.21904 0.692999 0.607868 0.264296 0.571775 0.447547 -0.0661024 -0.0504082 -0.365605 -0.422543 0.502078 1.6054 1.20964 1.00952 1.4909 0.492058 0.739207 0.428078 -0.303516 -0.614633 -0.485089 0.919257 1.16574 0.561872 0.208475 0.854003 0.663413 1.04873 0.309664 -0.0627457 -0.285838 -0.306833 0.681934 0.231486 -1.39378 -1.64024 -0.9371 1.48281 -2.34679 -0.747784 -0.630666 -0.501107 -0.491553 0.882637 -0.479115 -1.66378 -2.14512 -0.21827 0.199731 -0.650895 -0.97984 -0.871261 -0.764762 -0.591839 0.749961 -1.15883 0.443903 0.633119 -0.0250769 -0.0816856 -0.640206 -1.37672 -1.40463 -1.40426 -0.360774 1.10795 -0.597016 0.0558581 -0.00338472 0.331755 0.343297 0.347845 0.165712 -0.809567 -0.946962 -0.314033 1.24013 0.619005 0.261801 -0.125776 0.219343 0.833928 0.889858 0.599 -0.487516 -1.13054 -0.808534 0.637689 0.233638 -0.0754711 -0.227122 -0.185877 0.268349 1.38507 1.10931 -0.00398598 -1.01623 -1.17221 0.101082 3 11 11 3 2 0 -28.282 5.73867 11 11 5 0.347327 0.487929 0.239746 -0.00683267 -0.198182 -0.28968 -0.384769 -0.524966 -0.144865 0.608937 1.94366 0.468283 0.312112 0.506444 0.225308 0.00214774 -0.0134202 -0.155203 0.240944 -0.146546 -0.484504 0.663405 0.144239 0.0276366 0.667075 0.225164 -0.211114 -0.300245 -0.467914 -0.0971116 0.00879447 -0.681926 -0.0902485 -0.68259 0.055087 0.297639 -0.431834 -1.08305 -0.569975 0.659273 -0.492049 -0.0837054 -0.402743 -0.190933 -0.825457 0.640087 0.945951 -1.92804 -1.61714 0.285511 3.1783 -1.87422 -0.589469 0.191417 -0.0272147 -0.982676 -0.0943536 0.192113 -2.02082 -3.3917 -1.55871 -1.65417 -2.06292 -1.00443 -0.201797 0.169877 -1.02463 -1.20141 -0.948813 0.547587 2.57658 2.60744 0.914381 -0.284834 -0.636145 -0.255664 0.222163 0.0218487 0.342781 1.08687 1.0387 0.747656 0.42097 0.316937 0.0953809 0.0417312 -0.251675 0.421047 0.204206 0.532248 0.650701 0.552188 0.325039 0.311751 0.606414 0.693415 0.0706015 -0.411263 0.681392 0.348836 0.457894 0.338236 0.0268586 -0.146184 -0.141079 0.228521 0.145228 -0.471042 -0.826675 0.700462 1.13811 0.665806 0.30192 0.0619078 0.314588 0.65137 0.770683 0.243002 -0.688815 -1.25121 0.349151 2 1 -21.1346 2.07988 11 11 5 -0.624659 -0.0590387 0.198955 0.136606 0.0185999 0.0550831 -0.209287 -0.0421066 -0.0594261 0.186964 -0.989935 -0.977743 -0.434667 0.385913 0.0355164 0.0734509 -0.403432 -0.433219 -0.29748 -0.120379 0.0212653 0.674255 -1.0267 -0.122052 -0.0656463 0.38311 0.389335 -0.55089 -0.805005 -0.408205 0.269068 0.591618 1.09686 -0.232205 0.424017 0.0697999 1.02686 0.336245 1.13818 -0.651555 0.160239 0.272648 0.0936038 0.431441 -0.11591 0.0243005 0.788161 1.32405 1.44967 3.64352 -1.24048 0.905969 0.432353 -0.16593 0.487709 -0.403525 -0.409773 -0.774791 1.34234 0.952294 -1.03279 -2.49471 -0.77966 -0.212916 -0.70483 0.445153 0.14474 -0.167373 -0.751239 1.92731 3.65732 0.637796 -0.566292 0.123183 -0.293779 -0.448706 0.217786 -0.160801 0.772788 0.661857 -1.29627 -2.86445 -2.07327 -0.716378 0.0188755 0.240395 0.0440977 0.360141 -0.364529 -0.239684 -0.707209 -1.13363 -1.11037 0.132226 0.00473047 -0.0147531 -0.422792 -0.231609 0.0400421 0.576971 0.1228 -0.380364 -0.416989 0.130856 0.364896 0.0898455 -0.184229 -0.462138 -0.444908 -0.700527 1.52828 0.614866 0.00430433 -0.211973 0.276816 0.681265 0.442844 0.279958 -0.298217 -0.393416 -0.457274 2 2 -26.0901 3.52592 11 11 5 0.387512 0.627636 0.201066 0.12399 -0.128853 -0.0512974 -0.211518 0.0120984 0.0965417 0.101672 -0.377515 0.716075 0.699845 0.51812 0.352901 0.232408 0.51195 0.280409 0.318014 -0.00477917 0.153138 -0.328823 1.11203 0.612988 0.925149 0.913498 0.421436 0.528111 0.208391 0.269673 -0.0245813 -0.228857 -0.767934 0.21299 0.494702 1.15757 0.499594 0.26515 0.318031 1.31576 0.180806 0.0337116 -0.311525 -0.758336 0.240047 1.07611 1.94014 -0.639292 -0.710388 0.309146 3.98843 -0.734093 0.0769631 0.185949 -0.724422 -0.798169 0.262796 0.997764 -1.66753 -3.69464 -1.35185 -1.77196 -1.57636 -1.11962 -0.273602 -0.892752 -1.76653 -1.59875 -1.2455 0.29744 0.935444 0.653881 0.334685 -0.411456 -1.23071 -0.937697 -1.43527 -0.319774 -0.362349 0.166294 0.294677 0.240014 0.0159836 0.546837 -0.188875 -0.324013 -1.1877 -1.30751 -0.254106 -0.0961719 0.123233 0.537151 0.3773 0.597777 0.669436 0.99545 0.315995 -0.542722 -1.1412 -0.0796609 0.180701 0.53053 0.0530129 -0.276193 -0.00209243 0.552226 0.982618 0.409145 -0.332505 -0.847744 0.350333 0.29036 0.221127 -0.394343 -0.44734 -0.348127 0.729932 1.03973 1.20217 0.182764 -1.47952 3 11 11 3 2 0 -28.4377 5.53179 11 11 5 -0.338811 -0.224679 0.540137 0.734456 0.531121 0.211057 -0.319029 -0.071358 -0.363831 -0.320816 0.429917 -0.434856 -0.301595 0.335157 0.600039 0.69634 0.532863 0.0741558 -0.0933092 -0.099768 -0.26136 -0.359177 -0.376109 -0.171913 0.059782 0.229045 0.884431 0.989163 -0.393564 -0.906375 -0.521869 -0.105142 -0.549987 -0.212187 -0.242802 -0.490648 -0.463875 1.2156 -0.462029 -1.3966 -0.7271 0.721747 0.399568 -0.271383 0.197022 -0.290251 -0.589629 -0.567755 2.61689 -0.732152 -2.42675 -1.96777 2.6456 -0.601641 -1.60836 1.08068 -0.23906 -0.862411 -1.669 -2.2854 -3.1159 -2.38301 -0.0191706 -0.00660677 -1.1952 -0.994598 0.967499 -0.245491 -0.833813 -0.447799 0.816993 1.99411 2.78305 2.09249 0.350543 -0.497205 -0.811026 0.190458 -0.829659 -0.191418 0.407418 0.734938 0.812366 0.655509 0.244473 0.22894 0.35114 -0.348989 -0.105839 -0.446301 -0.0673371 0.316851 0.676319 0.626362 0.325516 0.22421 0.497412 0.602165 -0.0759255 0.270727 0.152558 0.206473 0.447291 0.307249 0.130277 0.0528624 0.0793201 0.163552 0.13737 -0.412123 0.442572 0.645139 0.717275 0.600299 0.483321 0.224181 0.380703 0.584798 0.597758 0.0533922 -0.952749 2 1 -21.4985 1.82893 11 11 5 -0.584117 0.0602199 -0.509091 -0.0403999 0.0858665 0.139021 -0.205129 -0.28298 -0.17968 -0.1621 -0.30594 0.250696 0.0113637 -0.735603 -0.63509 0.14268 0.0256701 0.207829 -0.0294701 -0.977506 -0.40391 0.320402 0.356918 -1.00176 -0.64105 -0.035838 0.0772922 -0.133447 1.05466 -0.59683 -0.680551 -0.402758 0.364955 -0.0876768 -0.179413 -0.0627025 0.356102 0.0494465 1.74402 0.646106 0.752476 0.321875 0.398725 0.432282 -0.403213 -0.273638 0.139578 0.366783 -0.0239942 3.19739 0.219216 2.97992 -0.526239 0.557051 0.74651 -0.00560858 0.337171 0.0408136 -0.325074 -2.40504 -0.563762 1.87345 0.635188 -1.90724 -0.687586 -0.649389 -0.574994 -0.47017 1.04254 0.820108 1.08749 2.42255 2.13635 -1.10014 -0.826929 -0.348292 -0.493465 -0.478082 -0.322699 -0.198753 0.229828 -1.23122 -2.31852 -2.71411 -1.6255 -0.569778 0.237303 0.165926 -0.164996 -0.0169021 -0.0522816 -0.321013 -0.337242 -0.844209 -0.639985 0.415102 0.0410014 -0.194848 -0.159102 0.216449 0.747351 0.602233 0.244901 -0.0548848 -0.32446 0.0479088 0.116855 -0.0344516 0.173462 -0.780319 0.651406 1.04806 1.17118 0.679024 0.143825 -0.376991 0.0219145 0.52598 0.713324 0.086578 -0.462098 2 2 -23.9064 3.71336 11 11 5 -0.382585 -0.274997 0.468972 0.557878 0.184291 0.187753 0.136605 -0.00927668 -0.250736 0.180132 0.0307923 -0.215729 0.22458 0.246267 0.44508 0.505277 0.740765 0.366881 0.426972 0.181065 0.0900209 0.473908 -0.301355 0.291125 0.92922 0.0675776 0.844436 1.20952 0.675902 0.526142 0.551844 0.16555 -0.738605 -0.31156 0.330558 0.0958746 -0.407849 1.46427 0.659105 0.365326 0.492365 1.90249 1.10403 -0.0689008 -0.23737 0.578111 0.0246565 -0.249475 3.29053 0.04136 -1.10568 -2.05805 3.39765 0.244354 -1.34229 0.570659 -0.00251332 -0.785834 -2.12278 -1.83143 -1.81539 -3.32883 -1.4801 -0.558579 -0.971936 -1.08976 0.561349 -1.12556 -1.6638 -1.27603 -0.873732 0.610017 0.896545 0.441316 -0.0380982 -0.281476 -1.64363 0.346302 -0.983343 -0.381697 -0.153892 -0.386656 -0.166943 0.0753811 -0.045142 0.764739 0.725408 -0.835041 0.437764 -0.67432 -0.267905 -0.474768 0.136912 0.33652 0.194144 0.355408 0.80527 0.889817 -0.484967 -0.204444 0.0394089 -0.296434 -0.209659 -0.0487388 -0.0235623 -0.315288 -0.116201 0.303024 1.21991 -0.115891 0.212051 0.201021 0.223631 0.159897 0.0218079 -0.721344 -0.941138 -0.462369 0.379384 1.03874 0.50798 3 11 11 3 2 0 -22.2122 5.82782 11 11 5 0.604008 1.22485 1.02 0.290976 -0.465439 -0.794425 -0.957372 -0.58043 0.103904 0.633549 1.02099 0.865269 0.72968 0.32386 0.0672237 -0.260212 -0.224176 -0.738507 -0.751627 0.280901 0.806541 1.23919 0.821068 0.0529673 -0.421294 -0.439695 -0.0902314 0.0320166 -0.634456 -0.522176 0.514124 0.738885 0.109777 0.237697 -0.63303 -0.638273 -0.760514 -0.111237 -0.465193 -0.234698 0.178599 -0.574246 -1.37347 -0.903054 0.472781 -0.664894 -0.40212 -0.214363 -0.0334187 0.0102212 -0.0843457 0.320274 -0.908908 -1.4029 -1.42501 0.958979 0.119047 -0.487809 -0.0784912 -0.708857 -2.66234 0.194761 -1.79853 -3.57485 -2.24886 -0.288884 1.35386 0.186117 -0.390123 -0.450462 -0.0818789 0.635236 0.353805 0.178378 0.695764 1.28309 -0.324942 1.33226 -0.134227 -0.134097 -0.0956062 0.105242 -0.249509 -0.249181 0.361916 1.02588 1.15728 0.158617 1.47053 0.144801 -0.320781 0.112124 0.653868 0.661867 0.570425 0.674248 0.708907 0.53488 0.342487 1.31018 0.0783496 -0.854905 -0.553137 -0.0463798 0.330171 0.45344 0.665124 0.315853 -0.0536507 0.121412 1.43237 0.165713 -0.708443 -0.904339 -0.354051 0.208568 0.690861 0.822313 0.366607 -0.0409111 -0.129734 2 1 -16.018 1.82954 11 11 5 -2.43504 -0.908778 0.27211 0.606805 0.405093 0.330451 0.519844 0.137022 -0.0935306 0.053803 -0.24566 -1.61507 -0.666636 -0.195419 -0.3417 -0.714803 -0.441042 0.134316 0.342609 -0.178795 -0.714003 -0.730146 -0.485703 -0.0665019 0.316574 -0.255745 -0.778945 -0.577803 -0.220238 0.130585 0.0639161 0.0631923 -0.506274 0.498857 1.1399 1.14648 0.373667 -0.837915 -0.881735 -0.606534 0.850263 1.30515 0.552654 0.243492 0.67135 0.863417 0.626678 0.0171961 0.286524 1.39632 0.686767 1.91195 1.55706 0.613065 0.72562 0.433284 0.589121 0.313899 -0.114082 -0.115743 -0.258625 -1.24022 1.29993 0.609735 1.15005 0.589067 0.25449 0.57869 0.140606 -1.32337 -1.18924 1.03291 0.584696 0.895472 1.57263 0.922036 -0.829551 0.142662 0.204121 -0.00580634 -0.758898 -0.687164 -0.306112 -0.824437 -1.05087 -1.48248 -1.59428 -0.291029 -0.328142 0.543622 -0.116078 -0.527362 -0.317279 0.471439 0.649234 -0.00384574 -1.31846 -1.41121 -0.984973 -0.335506 0.10557 -0.22984 -0.48458 -0.608289 0.120505 -0.011678 0.00935875 -0.0653948 -0.215085 0.41841 -0.781195 -0.274512 -0.347675 -0.465103 0.0837164 0.696488 0.876789 0.0813678 -0.198659 0.386482 0.995716 2 2 -19.5857 3.57988 11 11 5 0.183643 1.23851 0.835733 -0.114493 -0.665384 -0.657707 -0.47074 -0.47062 -0.158868 0.22605 0.295972 0.261094 1.03651 1.09329 0.482882 0.213475 0.0952059 -0.254256 -0.594436 0.0363889 0.960515 1.46891 0.0822653 0.516889 0.356718 0.0216736 0.409125 0.600808 -0.423075 -0.433717 0.851754 1.3358 1.63384 0.257105 -0.205634 -0.326783 -0.190486 0.315241 0.0226423 -0.0633855 1.07922 0.434483 0.352737 1.44534 0.180323 -0.243344 -0.394118 -0.407504 0.923226 0.232214 0.413288 0.90563 -0.0830387 -0.436346 0.513908 1.08533 0.203499 -0.0358205 -0.5226 -0.772676 -2.6971 1.05993 -1.53069 -3.0454 -2.12121 0.308578 1.26876 0.493728 -0.74497 -0.526203 -0.819933 -0.987627 -0.964954 -0.462472 0.166792 0.249685 -0.943312 1.55823 0.210056 -0.444024 -0.958225 -1.11354 -1.83144 -0.896376 -0.76709 0.100661 0.837915 -1.27601 1.87487 0.896367 -0.0355705 -0.707173 -0.591009 -0.389157 -0.255186 -0.157278 0.0208956 0.387218 -0.668155 1.30465 0.944735 -0.0496218 -0.151228 0.0638981 0.039032 -0.0112047 0.0172645 -0.0820103 -0.071271 -0.333561 0.646828 0.630506 0.132853 0.209217 0.126362 -0.0502215 -0.0725684 -0.0320872 -0.440374 -0.628522 -1.36844 3 11 11 3 2 0 -24.8223 4.9363 11 11 5 1.23504 0.741448 0.0352432 -0.262906 -0.374286 -0.0911752 -0.132029 -0.0178929 -0.0318382 -0.0572312 0.556188 0.965745 0.294475 -0.118402 -0.341817 -0.360494 -0.195636 0.169058 0.546771 0.355558 -0.063262 0.125776 0.582508 -0.00272213 0.137176 -0.0117083 -0.412819 -0.219467 0.165723 0.550261 0.743741 0.282489 0.209967 -0.0640019 -0.337029 -0.132144 -0.00966277 -0.0536221 0.0130341 0.309884 0.639159 0.78026 0.462099 0.263626 -0.403575 -0.812124 -0.372601 -0.063838 -0.117425 0.198006 1.16757 0.853296 -0.0645786 -0.177271 0.37565 -0.0396324 -0.0850146 0.132367 -0.379451 -1.29949 -3.16904 -2.88894 -2.80494 -1.01322 -0.782102 -0.400266 -0.323173 -0.382458 0.225035 -0.93341 1.39601 1.33785 -1.21077 -1.54579 0.365556 -0.726831 -1.28919 -0.369844 -0.331946 0.148124 -0.693792 1.48245 1.35565 -1.20711 -0.859334 1.26987 0.996795 -0.990574 0.202094 -0.0744795 0.587683 0.317832 0.0096295 0.693377 0.978654 1.19951 1.04004 -0.0235477 -0.274727 0.512512 -0.461227 -0.0151346 -0.182425 -0.171442 0.121751 0.53099 0.479368 0.0530348 -0.0740029 0.158834 0.400362 -1.097 -0.181894 0.0624122 -0.165905 0.255577 0.432909 0.250806 0.456242 0.55115 0.985421 2 1 -18.171 2.01047 11 11 5 -1.24255 0.0274614 0.261017 0.604972 0.577822 0.598988 0.145244 -0.00503906 0.227175 0.0500872 -0.352563 -0.643549 -0.249032 -0.117729 0.0789912 0.583026 0.450405 0.23994 -0.0207541 -0.243797 0.140659 -0.0970434 -0.465408 -0.36903 -0.323291 -0.357163 -0.184294 0.0628384 -0.306946 -0.285451 -0.681355 -0.270486 -0.490019 0.222066 -0.111509 -0.203482 -0.628946 -0.65941 -0.264048 -0.389866 -1.34377 -0.858472 -0.329781 -0.349525 0.796418 0.0728123 -0.340499 -0.525063 -0.293744 1.19944 2.02413 1.922 0.196228 -0.116327 -0.373182 1.14255 -0.194112 -0.539918 0.241289 -0.977296 0.405563 0.0317625 0.194475 -0.899518 0.818191 1.1346 0.598271 -0.307713 -0.0485852 0.0690962 -0.0702791 3.08071 1.60758 0.763225 0.0654484 0.10671 0.148967 0.587565 -0.79945 -0.602818 0.642318 -0.649649 0.79302 1.52306 1.43015 0.358492 0.95606 0.718568 0.846201 -0.712745 -0.809073 0.045451 -0.225624 -2.15527 -0.0556978 -0.416237 -2.47197 -1.68316 -0.143309 0.614289 -0.795619 -0.477046 0.00708766 0.128283 -0.354252 -0.849639 -1.24047 -1.20034 -0.0270683 0.165702 0.160842 -0.780097 -0.470553 0.779539 1.14493 0.326621 0.00816887 0.0815091 0.0253795 0.652986 0.564199 2 2 -21.6052 3.88559 11 11 5 1.08106 0.808306 0.202799 -0.238019 -0.576062 -0.225576 -0.288332 -0.390761 -0.141231 -0.325037 -0.121125 1.41884 0.355627 -0.0172355 -0.2258 -0.315585 -0.171694 -0.0755428 0.00298151 0.322792 -0.0211116 -0.40714 1.10833 0.416564 0.303953 -0.0849479 -0.518707 -0.281903 -0.078241 0.13041 0.837936 0.538166 -0.338178 0.393667 0.37794 0.309732 0.290333 -0.0616464 -0.427767 -0.244314 0.913513 1.15274 0.766375 -0.187472 -0.408315 -0.311873 0.0163308 0.773207 1.04912 1.76902 2.69226 2.09696 1.91346 1.46426 1.08627 -0.301309 -0.0354477 0.469977 -0.781636 -1.08438 -1.11813 -1.28514 -1.87006 -0.398446 0.561349 0.616111 -0.145148 -0.466166 0.321461 -1.9811 0.560548 0.540822 -1.06753 -1.74571 0.190772 -0.51931 -1.47143 -0.23969 -0.362776 -0.267639 -1.51692 0.519621 1.10593 -0.76148 -0.991834 0.641963 0.745851 -1.82839 -0.0689004 -0.570031 0.363096 -0.226911 -0.728621 0.51567 0.401927 0.628219 0.343561 -0.164325 -1.14483 0.292704 -0.869996 -0.452983 -0.440764 -0.242629 -0.332261 0.397718 0.544294 -0.135082 -0.451589 -0.958675 0.89438 -0.646621 -0.289579 -0.25069 -0.35691 -0.0706182 0.0985951 0.486265 0.439444 -0.0409508 -1.1069 3 11 11 3 2 0 -25.9165 4.14388 11 11 5 0.903781 -0.170564 -0.308762 -0.167529 -0.110146 0.0671602 -0.218115 -0.232178 -0.1899 0.13213 0.639592 0.199503 -0.308285 -0.35953 0.0256275 0.406755 0.541247 0.414694 0.0638017 -0.26536 -0.14655 0.561889 -0.102563 -0.271942 -0.240256 0.0680973 0.4402 0.8884 0.63239 0.0791088 -0.230697 -0.477049 0.159866 -0.516735 -0.142335 -0.0603507 0.314716 0.715375 0.84647 0.863336 0.130715 -0.46062 -0.467401 -0.0568712 -0.501135 -0.246241 0.0138137 0.696922 1.53546 0.973609 0.365045 0.313953 0.0728103 -0.101139 0.0147758 -0.00589779 -0.489355 -0.2759 -1.52774 -3.06488 -3.09455 -1.3261 -0.536674 0.12316 0.354522 0.507292 -0.248412 -0.00454913 0.673457 -0.637004 -1.02346 -0.581362 0.847782 -2.6957 -1.53837 -0.122869 0.639111 -0.663146 0.130876 2.07569 -0.871144 -1.39281 0.687316 2.45684 -0.903565 -1.27406 -0.182927 0.863907 -0.329591 -0.155164 0.773871 0.357328 0.727946 1.22316 0.680455 -0.496003 -0.596772 0.0844298 0.802223 -0.634263 -0.0204279 0.297987 0.718003 0.819493 0.40316 -0.230793 -0.355392 -0.144221 0.0925974 0.487846 -0.748111 0.187717 0.316635 0.51634 0.478263 0.0320387 -0.049848 0.2164 0.294018 0.237934 0.384293 2 1 -18.2477 1.93242 11 11 5 -0.198819 0.889496 0.624293 0.597008 0.130633 0.0577391 0.098614 -0.00441539 0.180357 -0.146643 -1.1651 -0.446487 0.181225 0.457271 0.388945 0.211044 -0.226341 -0.0441382 0.0341438 0.242312 0.239204 -0.265396 -0.502261 -0.145871 0.0852828 -0.110558 -0.368118 -0.419212 -0.469822 -0.344185 -0.263901 -0.0731115 -0.281252 -0.46107 -0.372268 -0.158405 -0.318789 -0.518287 -1.44179 -0.830374 -0.245654 0.0786251 0.163784 -0.278978 -0.216846 -0.615948 -0.275166 0.469464 1.96473 2.10388 0.284282 -0.511526 -0.893948 -0.56609 -0.0384544 -0.100572 -0.286875 -1.07869 0.756352 0.972288 -0.349919 -0.961591 1.72316 1.00125 -0.0337265 -0.111704 -0.443981 0.167532 0.733482 1.79842 0.770596 1.93909 -0.191906 -0.378101 0.395544 -0.269822 -0.373342 -0.369871 0.162652 0.960219 2.15531 0.574542 2.21571 -1.52086 2.35308 0.0859823 0.144679 0.0315243 -0.84824 0.473858 -0.896961 -0.23076 0.0725678 -1.31535 -2.60539 -0.451469 0.261874 0.0142222 -0.197318 -0.682095 0.128363 0.213178 -0.752911 -0.850782 -1.61153 -1.03514 0.138641 0.290688 -0.405078 -0.592292 -0.703486 0.973406 0.813761 0.15084 -0.396217 -0.0809727 0.532978 0.991481 0.322058 -0.198506 -0.257076 2 2 -21.7433 3.58092 11 11 5 0.679981 -0.155133 -0.00354744 -0.0346869 -0.411364 -0.349639 -0.375053 -0.120938 -0.109435 0.0967628 -0.0267831 0.386987 -0.106575 -0.181572 0.069362 -0.103386 0.079155 0.240635 -0.0296625 -0.0592923 -0.103825 -0.0447973 0.372535 -0.0982612 -0.492131 -0.374197 -0.0401381 0.84283 0.818952 0.339673 0.0129591 -0.508297 -0.122582 0.00263728 0.218738 0.0209892 -0.141603 0.19437 1.24887 1.16868 0.364325 -0.30087 -0.519693 -0.329381 -0.323502 0.253965 0.881587 2.20163 2.65589 2.55049 2.01729 1.46001 0.537683 -0.201743 -0.31338 0.0326312 -0.94726 0.149025 -0.430875 -1.10343 -2.19523 0.570115 1.00457 0.917854 0.840047 0.179161 -0.613738 -1.47717 0.905818 -0.714516 -0.799876 -1.34419 0.587773 -2.44483 -1.32056 -0.522207 -0.200552 -0.59227 -0.603051 1.07257 -0.66162 -0.888135 0.127231 1.65038 -0.85874 -1.47455 -0.959161 -0.0609322 -0.23244 -0.595382 0.215615 0.107975 0.218189 0.512054 0.621423 -0.462095 -0.993457 -0.816769 0.167327 -0.251793 -0.193685 -0.148932 0.496548 0.605781 0.454616 0.14902 -0.515739 -0.319646 -0.285434 0.0102289 -0.175674 -0.137767 0.0349512 0.101304 0.153543 0.449328 0.133566 -0.145264 -0.397 -0.251641 -0.0686068 3 11 11 3 2 0 -21.8157 3.84896 11 11 5 -0.690622 -0.331672 0.176945 0.46781 0.455255 0.0572497 -0.334276 -0.380387 0.0495231 0.374096 -0.158983 -0.613061 -0.0399321 0.698474 0.959508 0.796284 0.309707 0.0450138 -0.185338 -0.0197976 0.646684 0.0936867 -0.547481 0.184179 0.891092 0.841194 0.555225 0.0529564 -0.352903 -0.501178 -0.220135 0.459362 0.0752503 -0.473297 0.246609 0.719149 0.572312 0.0328877 0.0700537 0.218747 -0.15925 -0.306595 -0.162379 -0.505062 -0.375021 -0.898875 -1.318 -0.564857 -1.21145 -0.786345 -0.0290346 0.365215 0.0449684 -0.32955 -0.325073 0.0642028 -1.44808 -2.12523 -2.13591 0.206801 -4.50331 -2.79061 0.0115473 0.504593 0.408892 -0.170596 0.806763 -0.360405 -0.464341 1.39042 1.72214 -0.29892 -0.852192 -0.117217 0.741193 0.905137 0.291502 -0.0982857 0.7835 1.28008 1.35599 0.355603 -0.269292 -0.334923 0.370804 0.669254 0.44173 0.418171 -0.0838151 0.707212 0.637953 0.415059 0.0446072 -0.0496264 -0.0223874 0.274974 0.0166055 -0.0300034 0.00121874 -0.236634 0.512875 0.576704 0.253298 -0.0654032 -0.0662019 0.199823 0.0501351 -0.185717 -0.0160847 -0.182876 -0.482784 0.492207 0.618697 0.329881 0.0745661 0.1402 0.232415 0.315827 0.214183 0.0639302 -0.148722 2 1 -18.9023 2.17923 11 11 5 0.0544904 0.192812 -0.0533988 0.044431 -0.120042 0.116907 0.100621 0.244574 -0.470179 -0.889896 0.190581 -0.659058 -0.304815 0.376264 -0.17982 0.0259713 -0.223081 0.0881226 0.298612 -0.324604 -0.808694 -0.0680828 -0.827578 -0.020356 -0.422086 -1.17617 -0.716954 -0.411634 -0.496209 -0.0998713 -0.0272117 -0.693664 0.339289 -0.90047 0.490954 1.29703 0.481363 0.3943 -0.309739 -0.0945397 -0.681303 -0.332799 0.058979 0.482385 0.153716 0.348523 0.840021 0.795996 0.703367 2.14971 1.6003 -0.267968 -0.145828 0.555817 0.541509 1.55446 1.02817 0.36973 1.20821 -1.61309 -1.70268 -0.512539 0.720921 -0.433971 -0.139219 0.755859 0.547117 1.57668 2.42154 1.70365 0.112546 3.14732 0.97516 -0.606942 -0.225867 -0.445689 0.319615 -1.24446 -1.3008 -0.0293098 -2.08909 -1.76912 -0.132553 0.267763 -0.501106 -0.516148 -0.433932 -0.425688 -0.299098 -0.622756 -1.53449 -1.35903 -0.369819 -0.128082 -0.679623 -0.889196 -0.508407 0.0150288 -0.151455 0.0252912 0.130776 -0.635962 -0.210324 0.20226 0.150528 0.0820333 -0.544904 -0.00517074 -0.126187 -0.0168521 1.1064 0.304726 0.0912916 -0.0352585 0.307502 0.914536 0.563443 0.53166 0.427605 -0.225323 -0.338233 2 2 -20.9687 3.41555 11 11 5 -0.561871 -0.380972 -0.141096 -0.00645067 0.141402 0.152791 -0.304709 -0.380616 -0.32426 0.121401 0.532245 -0.331917 -0.227062 0.159861 0.82938 0.903294 0.48127 0.162082 -0.239933 -0.240564 0.283741 0.694823 -0.243145 -0.208161 0.522306 1.15448 0.987352 0.590442 -0.132176 -0.183614 -0.0489045 0.54343 1.18249 0.535887 0.75374 0.835594 1.45455 1.80065 1.0264 0.602443 -0.188017 -0.37692 -0.224505 0.522906 0.487247 0.248258 -0.0800628 0.233213 0.661601 1.49483 1.02086 0.923834 -0.148793 -0.357358 0.047053 0.320134 -1.35289 -2.50455 -1.70768 1.0562 -3.13375 -2.96188 -0.348745 -0.113421 -0.206571 -0.0547023 -0.212269 -0.934583 -0.993501 0.722969 0.878032 -0.969404 -2.1142 -1.64583 0.0557423 0.399275 0.159422 -0.626253 0.317671 0.51455 0.685367 -0.0222089 -0.764734 -0.804024 -0.707096 -0.121037 0.576316 0.680546 -0.539069 0.00355489 0.368778 0.397917 0.257652 -0.378092 -0.482377 -0.465794 -0.388469 0.276851 0.499898 -0.176156 0.163852 0.269668 0.190628 0.223019 0.0120783 -0.0972188 -0.469665 -0.189093 0.215629 0.174625 0.119983 0.0753909 0.199767 -0.0708043 -0.142043 -0.052755 -0.48954 -0.257 -0.11728 -0.103909 0.142291 3 11 11 3 2 0 -28.7132 4.85878 11 11 5 0.279896 -0.674561 -0.450328 0.0131783 0.440113 0.838778 0.600471 0.191186 -0.179723 -0.207196 0.853181 -0.323636 -0.199486 -0.191051 0.0386579 0.580598 0.962277 0.460772 -0.0463096 -0.298713 -0.272757 0.436854 -0.79581 -0.157447 -0.151105 0.000972658 0.507462 0.65894 -0.240387 -0.590645 -0.145115 -0.216831 0.103268 -0.287074 0.178089 -0.100675 -0.692978 -0.692428 0.119373 0.369083 -1.25953 -0.784636 -0.444658 0.0303287 -0.163338 1.61441 1.33539 -1.84229 -1.97662 0.190364 2.32848 -1.91513 -1.05284 -0.0576795 0.92528 -0.835472 -1.58327 -0.0481107 -2.12352 -2.87192 -0.895313 -1.88092 -2.89579 -1.51806 0.0911979 1.30947 0.108445 0.142556 0.28053 1.45693 2.91317 2.80312 1.16925 -0.468678 -0.735787 0.235241 0.888309 -0.552212 -0.334507 -0.0723453 0.623133 1.01584 0.590456 -0.00567886 -0.302143 -0.168421 0.10708 0.300191 -0.525507 0.15027 0.425319 0.59226 0.49739 0.329923 0.0784388 0.00995904 0.261616 0.302131 0.371177 -0.796829 0.0811651 0.374941 0.296092 0.14984 -0.0565012 -0.213859 -0.0815032 0.2038 0.449412 0.534657 -0.873095 -0.0996253 0.381757 0.5887 0.413542 0.11969 -0.0468823 0.312282 0.455534 0.611865 0.312813 2 1 -20.7963 1.8655 11 11 5 -0.378832 0.211754 0.14198 0.0654757 -0.244783 -0.186748 -0.211187 -0.267631 0.158284 0.117518 -0.853395 -0.826818 -0.452994 0.160212 0.437928 0.120324 -0.619587 -0.394169 -0.643638 -0.407416 0.0484854 -0.36271 -0.422406 -0.599223 -0.492996 0.466137 0.660594 -0.74197 -0.486119 0.427046 0.108544 -0.712711 -0.0546494 -0.287927 -0.110642 0.233588 0.449977 1.18216 1.21177 -0.306733 0.545475 0.380278 -0.0106444 0.0284089 0.42513 0.469623 1.69301 1.99267 0.455722 2.50219 -0.668559 0.530019 0.317108 0.167375 0.0925131 -0.27051 0.0420083 -1.57829 0.775446 1.33703 -0.447264 -2.53053 1.02476 0.786208 0.485584 -0.195469 -1.19105 0.199838 -0.66633 1.0436 3.04624 0.234041 0.581534 1.38763 0.975895 -0.36805 -0.545727 -0.849287 0.0048713 -0.0930832 -1.46283 -2.85779 -2.99646 -1.51779 0.147585 -0.385963 -0.71128 -0.580176 -0.244199 1.0479 0.445262 -0.302358 -0.931767 -0.85126 -0.363937 -0.0816294 -0.168794 -0.463432 -0.0624932 -0.719294 0.265805 0.0380419 -0.382046 -0.308815 0.141967 0.264994 0.576267 0.31843 0.0196427 -0.161254 -0.585635 0.577907 0.727008 0.203166 0.399386 0.0958135 0.643229 1.09538 0.937309 0.361998 -0.413754 2 2 -25.1199 3.79491 11 11 5 0.339872 -0.187247 -0.635631 0.018556 0.326397 0.665783 0.866804 0.444166 -0.0236381 -0.172437 -0.0759505 0.0880193 0.199768 -0.0565747 0.0710931 0.392581 1.35487 1.21215 0.924062 -0.12112 -0.15826 -0.0590309 -0.686936 -0.0121513 0.512854 0.364966 0.413527 1.1805 1.40095 0.742675 0.472903 -0.108648 -0.404119 -0.285691 -0.281388 1.42504 0.761267 -0.170503 0.515817 1.80813 0.730179 0.0949773 -0.484302 -0.984775 0.550676 1.11142 2.254 -0.923657 -1.25082 0.653581 3.47684 -0.251703 -0.30769 -0.32915 -0.262707 -1.26781 -1.97639 0.369037 -1.92227 -2.87343 -0.420941 -1.2381 -2.5079 -1.9755 -0.850376 0.233176 -0.334762 -0.687445 -0.780427 0.203049 0.941566 1.36114 0.140888 -1.18571 -1.85813 -1.0361 -0.0960278 -0.769156 -0.943708 -0.823433 0.450311 0.986019 0.532522 0.0392364 -0.54551 -0.838566 -0.607335 -0.101163 -0.342253 0.160104 0.363515 0.488683 0.753403 0.408083 0.49263 -0.170654 -0.212928 0.00680658 -0.0209141 -0.121024 0.261513 0.29508 -0.0723556 0.0489837 0.381755 -0.0132116 -0.066979 -0.0880221 -0.196579 0.319356 0.144129 0.103855 0.365535 0.0997401 -0.337817 -0.0753953 -0.389142 -0.206961 0.114053 0.126474 0.623447 3 11 11 3 2 0 -29.4713 6.26221 11 11 5 1.92264 0.397325 -0.432668 -0.609404 -0.70037 -0.368015 0.35048 0.816614 0.651341 0.35261 0.622715 0.726674 -0.289542 -0.23024 -0.19253 -0.314234 -0.275772 0.345154 0.762445 0.307656 -0.0166844 0.283875 -0.161062 -0.626774 0.058622 -0.458172 -0.433072 0.0507799 0.161397 0.201733 0.176653 -0.598843 -0.0503161 -0.845192 -0.0986647 0.250359 -0.830752 0.492323 -0.721874 -0.978274 -0.736425 0.345565 -0.255947 -0.991408 -0.601806 -0.0640692 0.412891 -0.286832 3.06761 -0.821327 -1.96499 -1.00489 1.35421 -0.0519658 -1.2764 -0.556866 0.520265 -0.201755 -2.37074 -2.3019 -2.56245 -2.64643 -0.775542 -0.465412 -2.20294 -1.25266 -0.263252 -0.0865331 0.397426 0.596975 0.596732 1.51766 2.84987 2.61624 0.727329 -0.95255 -0.345732 -0.0291384 0.0616902 -0.243024 -0.664275 -0.0523593 0.750858 1.06183 0.703287 0.00751262 -0.154237 0.544799 0.239363 -0.46019 0.0654695 0.254166 0.280565 0.547879 0.642079 0.448034 0.348026 0.384131 1.02879 0.439819 -0.505532 -0.513907 0.0432438 0.245938 0.200588 -0.123226 -0.0670105 0.0249436 0.397169 1.14158 0.437734 -0.587208 -0.599845 -0.425041 0.367564 0.791697 0.415912 0.168185 0.211893 0.850528 1.65877 2 1 -20.495 1.71486 11 11 5 -0.67825 0.0652632 -0.157143 0.12441 0.0816158 0.0867946 -0.0903385 -0.174443 -0.165136 -0.370221 -0.525422 0.259097 -0.511532 -0.785913 -0.26902 -0.0131649 0.596073 0.128333 -0.493805 -0.841554 -0.504123 -0.4523 0.908546 -0.328449 -0.329639 -0.615794 -0.555332 0.352647 0.473763 -0.160067 -0.62871 0.472395 0.232694 1.04515 -0.421428 -0.289286 -0.255657 -0.269514 1.5214 0.80549 0.736214 0.0984723 0.652344 0.442007 0.29631 -0.52486 0.357821 1.21794 -0.927427 3.47308 0.866174 1.51999 0.242986 0.100205 0.071958 0.479663 -0.817912 0.333933 -1.11066 -2.28258 -0.661961 1.06589 0.48228 -1.78612 0.0610698 1.0184 0.701323 -1.45152 -0.751243 1.08872 0.0377803 1.17473 3.06105 0.321562 -0.494324 0.675323 0.658353 0.507378 -0.634376 -0.378265 -0.0301953 -0.409363 -1.23229 -2.60424 -2.48528 -1.09296 0.359295 -0.310825 0.526308 -0.360649 -0.0334945 0.747837 0.482255 -0.0119884 -0.948198 -0.929527 -0.331422 -0.0475387 -0.387247 -0.374548 -0.725205 -0.52111 -0.0129254 -0.251766 -0.243609 -0.34211 -0.0114138 0.291249 0.417383 0.183207 -0.482666 -0.569598 -0.030272 0.351564 0.954567 0.00117769 0.302685 0.200698 0.631608 1.26089 0.880605 2 2 -25.4192 4.09552 11 11 5 1.39149 0.329295 -0.445885 -0.169463 -0.251238 -0.407309 0.32654 0.459391 0.708651 0.685516 0.0820934 1.1947 0.0995679 0.0311565 0.201322 -0.0677599 -0.0823735 0.365882 0.879099 1.01981 0.840258 0.30143 0.298327 -0.151598 0.331436 -0.414273 -0.0568391 0.981672 0.46842 0.690654 1.0838 0.914853 0.0528693 -0.570929 -0.30522 0.425066 -1.12867 1.0339 0.633835 0.152735 0.17529 1.07177 1.03284 -0.348411 -0.71092 -0.231921 1.20325 0.367913 3.85606 -0.356169 -1.03288 -0.381756 2.08784 0.94248 -0.950933 -0.225698 0.107958 -0.786946 -3.18239 -1.71984 -1.23752 -2.59882 -1.43702 -0.242033 -1.69828 -1.88787 -0.254373 -0.374115 -0.249884 -0.614695 -0.66258 0.152532 1.20604 1.34663 -0.0717773 -1.03589 -1.86585 -0.176755 -0.838213 -0.933694 -1.1326 -0.37824 0.141933 0.870411 0.591665 -0.0346375 -0.697585 -1.33574 0.328076 -0.688337 -0.120232 0.128737 0.0638949 0.475812 0.716644 0.44252 0.402568 0.109158 -0.478248 0.250567 0.123565 0.0314756 0.344642 0.446754 -0.170961 -0.238641 0.110597 0.0235457 -0.24573 -0.361006 0.806467 0.520495 0.148842 0.0734465 0.21818 0.197105 -0.316738 -0.0633536 -0.605982 -0.208947 0.134329 3 11 11 3 2 0 -26.5868 4.49176 11 11 5 0.127607 0.756711 1.11753 0.246618 -0.120932 0.114472 0.317604 -0.0691337 -0.239385 -0.152684 0.936923 -0.023252 0.718442 1.14756 0.702332 -0.198466 -0.262125 -0.0248585 0.385661 0.362462 0.0236984 0.180946 0.0959698 0.541766 0.464125 0.128549 -0.851536 -0.781228 -0.0646986 0.278795 0.105156 -0.28878 -0.529262 -0.170974 -0.434387 -0.860424 -1.02815 -0.565749 0.250298 0.83167 -0.247215 -0.55755 -0.587729 0.0840347 -0.123936 -0.377937 -0.863459 -0.636174 0.82328 1.45185 -0.704319 -1.68787 -1.04382 -0.352996 0.861965 0.0949422 0.773229 0.895264 0.805644 0.246174 -3.31545 -4.76918 -2.66815 -0.321701 0.69107 1.08584 0.104818 0.918972 1.72299 1.11203 0.292091 1.49291 1.02146 -1.687 -0.204347 0.893168 0.927106 -0.359921 0.226178 1.03066 0.558723 0.0444549 0.801423 1.66204 -0.450573 -0.771931 0.213162 0.422946 -0.302098 -0.180423 -0.109864 -0.0538921 -0.0229096 0.396236 0.790465 0.303696 -0.084596 -0.052886 -0.342975 0.090386 -0.424062 -0.599899 -0.432744 -0.057533 0.19273 -0.251613 -0.0352959 -0.205039 -0.0196546 -0.340436 0.310769 -0.292802 -0.606823 -0.43399 0.270219 0.0720293 -0.3055 -0.298066 0.0833835 0.378111 -0.13088 2 1 -19.2544 2.00534 11 11 5 -0.404178 -0.93859 -0.844682 -0.0515362 0.6126 -0.0532391 -0.176239 -0.757206 -0.24061 0.139462 -0.340793 -0.432702 -0.999337 -0.41291 0.674363 1.26804 -0.390178 -0.894467 -0.312839 -0.0374744 0.187471 0.298836 -0.358444 -0.454375 0.277096 0.934389 0.161174 -1.44221 -0.700748 -0.294632 -0.153031 0.35224 0.172715 0.588189 0.674513 0.4904 -0.150967 -1.31284 -1.20615 0.447453 0.801483 0.0862408 0.142037 0.0990597 0.813905 0.787931 0.607335 -1.22203 -1.47272 2.44963 2.82154 0.334371 -0.39161 0.164778 -0.309101 -0.129312 -0.246049 -0.0179827 0.17081 1.67786 2.0708 -0.832279 -0.977307 0.74655 0.0681469 -0.19338 -0.672458 -0.953306 -0.675323 -0.302381 -0.439857 1.82465 3.41308 -0.382668 0.282574 0.362042 -0.288362 -0.647026 -0.170446 -0.640425 -0.881946 -0.0308417 -1.91557 -0.754249 0.302939 -1.13364 0.18419 0.586654 -0.412986 0.172393 0.241861 -0.414314 -0.275881 -0.726443 -0.880997 -0.0484639 -0.467986 0.0684469 0.168026 -0.326115 0.261591 0.663902 0.0383195 -0.0106052 0.106353 -0.529913 0.465968 -0.00626147 0.135722 0.342516 0.0435663 0.224675 0.629514 0.835653 0.276976 0.188265 -0.468616 -0.204039 0.242107 0.304424 0.325498 2 2 -22.3389 2.72289 11 11 5 0.16716 0.0391545 0.641894 0.0280013 0.203813 0.661121 0.250566 -0.280618 -0.255288 -0.446731 0.967918 -0.242489 0.857395 0.741933 0.896427 0.597906 0.338764 0.305276 0.688338 0.429532 -0.0480751 0.732211 -0.359916 0.678998 1.22312 0.733138 -0.364011 -0.420234 -0.235479 0.384249 0.471851 -0.117251 0.444626 -0.25804 0.042349 -0.196181 -0.801359 -0.373774 0.0342675 1.30431 0.589649 0.146565 -0.285865 0.0656259 -0.510229 -0.712426 -1.10388 -1.57518 1.48559 2.80352 2.25011 -0.667711 -0.837649 -0.582774 0.107753 -0.323497 -0.531815 -0.653457 0.0439435 -0.545919 -2.88517 -3.66919 -1.98934 -0.156451 0.00572336 0.459441 -0.206629 0.329259 1.23753 1.01407 -0.485949 0.193608 -0.660471 -3.28754 -0.695952 1.1233 1.42829 -0.356084 0.337167 1.39575 0.851304 -0.441353 -0.181712 1.21657 -1.37773 -1.83594 0.165793 1.54093 0.014885 0.139657 0.652512 0.744021 0.196706 0.693209 0.475904 0.351102 -0.915506 -0.675536 0.366962 -0.0178854 -0.159258 -0.22999 0.336038 0.0409281 0.191079 0.0857447 0.0103321 -0.496825 -0.678929 0.134922 0.127835 0.0666904 -0.660022 -0.396812 0.176833 -0.0684604 0.115551 -0.490211 -0.486852 -0.581051 -0.760109 3 11 11 3 2 0 -21.015 3.36996 11 11 5 1.04584 0.359966 -0.0509788 -0.222786 0.0775479 -0.285374 -1.28844 -0.94729 0.617 1.35272 0.521888 0.282373 -0.381483 0.288162 0.710298 0.979024 0.147276 -0.804621 -0.675046 0.700927 0.948698 0.189819 0.510862 0.272258 0.807112 0.660676 0.120062 -0.421088 -0.336508 0.183831 1.03455 0.552734 0.147367 0.701665 0.421579 0.414825 -0.520239 -1.10977 -0.50519 0.482835 0.495936 0.435498 -0.064295 -0.4672 -0.00150185 -0.162878 -0.244214 -1.11815 -0.714782 0.911284 1.55829 0.331543 -0.40665 -0.0389058 -0.192066 -1.06093 -0.710992 -0.317363 0.0789266 1.7277 1.4506 -1.83553 -1.96931 -0.980262 -0.037028 -0.454711 -0.134089 0.106471 -0.0843736 -0.945459 -1.79418 -1.94739 -1.90676 -1.0714 0.0442442 0.459893 -0.38427 1.1724 0.586309 0.32698 -0.432558 -1.87141 -1.02463 -0.514376 0.24827 0.445232 0.642215 1.07382 0.953679 -0.092619 0.647292 1.19856 0.555049 -0.845195 -1.02575 -0.0136061 0.537284 0.739984 0.680128 0.474946 -0.593162 0.0839318 1.00476 1.29465 0.439839 -0.947482 -0.493796 0.259749 0.482902 -0.165127 -0.0351704 -0.49763 -0.0810135 0.503171 0.900835 1.06585 -0.440554 -1.15526 -0.511826 -0.210425 -0.904988 2 1 -16.7821 2.08449 11 11 5 -1.46513 0.654922 1.03309 0.843996 0.0226793 0.143455 -0.685671 -0.269921 0.487103 -0.250875 -0.674753 -0.829141 -0.464681 -0.813451 -0.451603 -0.345059 0.384547 -0.416647 -0.493203 0.00753905 -0.255646 -0.746537 -0.59104 0.0127837 0.126209 0.618279 0.155454 -0.857794 -1.18145 -0.346003 0.0437607 -0.544388 -0.477459 0.0527005 0.635499 1.04998 0.621207 -1.29502 -2.2358 -0.656671 0.209429 0.0798143 0.204967 0.349213 0.854925 0.700936 0.441097 -0.464078 -2.40203 -1.77321 -0.0887339 0.186528 0.864218 0.859063 0.619383 0.331357 -0.587475 -0.591687 -0.355777 0.514126 1.57079 1.55613 0.0519165 0.215732 -0.133809 0.724708 0.0969537 -0.0487333 0.753159 1.08944 0.97445 0.0833253 -0.142669 -1.00534 -0.221991 0.178057 1.24041 -0.398514 -0.226846 0.860708 2.47205 1.02518 0.816234 0.586488 0.119285 0.528958 0.554763 0.901203 -1.15387 -0.904361 -0.504272 0.697985 1.15648 0.643601 -0.30635 -0.426224 -0.0519266 0.0618149 -0.320739 -0.482492 -0.698085 -0.22307 -1.43874 -1.10648 0.163364 -0.620169 -0.562122 -0.216424 -0.163948 0.0383838 0.812394 0.119487 -0.136548 -0.933585 -1.49681 0.772893 1.11934 0.213598 0.501142 0.155804 0.570728 2 2 -16.8746 2.10187 11 11 5 0.881382 0.419951 -0.237456 -1.27611 -0.232748 -0.201726 -1.86414 -2.29158 -0.278779 0.421738 0.165551 -0.337865 -0.161667 -0.0797886 0.277916 1.11778 0.0215978 -1.43744 -1.53022 0.0130104 0.748138 0.613995 -0.0443542 0.279075 1.01841 1.42255 1.05997 -0.394214 -1.06561 -0.146291 0.906091 0.8273 1.01891 0.766993 0.832907 0.993664 0.472109 -0.747622 -0.975716 -0.185015 0.155844 0.65467 0.335725 0.27872 0.18085 0.499444 0.342461 -0.81108 -0.767067 1.03059 2.03306 1.01943 0.107503 0.0116176 0.640933 -0.936744 -0.438298 0.383108 0.488882 1.77618 1.72568 -0.00933204 -0.390772 -0.79185 -0.144662 -0.229893 -0.895127 -0.473159 -0.29678 -0.554381 0.0459729 -0.572223 -0.359665 -1.25932 -0.608994 -0.640877 -0.805159 0.202478 -0.00372482 -0.341506 -0.755786 -1.54985 -0.654937 -0.299671 -0.168594 -0.0618486 0.00440499 0.110707 0.979583 -0.0902587 -0.191835 -0.17128 -0.606416 -1.19661 -0.834264 -0.0868277 0.667162 0.939957 0.78693 0.742244 0.291986 0.157393 0.705711 0.461909 -0.124286 -1.42215 -0.297016 0.210644 0.605008 0.606487 0.243075 -0.160879 0.00184995 0.487273 0.291303 0.205589 -0.246921 -0.910784 -0.0975395 0.136907 -0.0816493 3 11 11 3 2 0 -21.0551 2.46371 11 11 5 0.296426 -0.874771 -0.76213 -0.497309 -0.925165 -1.51966 0.254294 1.76524 0.83989 -0.906359 -3.26997 0.954206 0.674689 0.333081 -0.892916 -1.6593 -0.582068 1.35456 1.42495 1.01741 -0.127696 -1.51636 1.42822 1.43478 1.21807 -0.132823 -0.98399 -0.0534297 1.18271 0.775863 0.541098 0.182754 -0.0447227 0.867409 0.473724 0.391243 0.0172246 -0.492035 0.0501213 0.717018 0.316318 0.317712 0.152383 0.499129 0.22381 -0.0515454 -0.161118 -0.341381 -0.274198 0.132804 0.666348 -0.70304 -0.948769 0.427943 1.25272 -0.482277 -0.510777 -0.154731 0.299094 1.15395 1.72512 0.532135 0.865686 1.23589 -0.142186 -0.563328 -0.565586 -0.607836 -0.297303 0.336152 -0.61352 -1.20337 -1.1845 -1.094 -0.783341 -0.896895 -0.822519 -0.00135705 -0.928886 -1.04684 -0.616759 -0.686021 -0.354238 -0.207395 1.00229 0.148869 0.541664 0.273223 0.519035 -0.948258 -1.11451 -0.510334 0.0397386 0.0781321 -0.205613 0.733356 -0.0178931 0.116283 0.678834 0.74435 -0.218124 -0.410571 -0.373185 -0.13343 0.127604 0.578958 0.566681 0.221544 -0.0659081 0.141624 1.2153 1.05797 0.799818 -0.453483 -1.42487 -0.36581 0.350239 0.399091 -0.21317 -0.453785 -0.273486 2 1 -14.4349 1.40633 11 11 5 1.54168 0.410538 -1.23082 0.609005 0.839546 0.288234 0.642027 -0.493747 0.176364 1.77301 0.543117 0.628087 -0.40416 -0.357766 0.220972 -1.05228 -0.389734 0.47066 -0.918671 -0.677115 0.255884 -0.498922 -0.881058 -1.01105 0.237553 0.266652 -1.45769 -0.67364 0.499698 -0.612605 -0.836497 0.482289 -1.52693 -0.032728 -0.68489 -0.457007 -0.442502 -1.26404 -0.400059 0.328956 -1.53445 -1.85505 0.0899355 -1.17519 1.10379 0.127796 -1.18624 -1.34236 -0.68625 -0.190813 -0.0304267 -0.192581 -0.526883 0.940037 -0.480859 0.818483 -0.0105307 -0.902874 -0.341498 0.167232 0.088592 0.867548 0.43301 -0.142213 1.39766 0.743718 0.15037 -0.0311998 0.126031 0.404471 0.766121 0.133049 -0.95588 0.634623 1.17171 -0.100467 0.479184 0.246672 0.63407 0.260685 0.301366 -0.44248 -0.128187 0.014592 0.106892 -0.420706 0.190933 1.30115 0.967245 1.32527 0.32004 0.219638 0.310394 0.0588179 0.635259 0.642816 -0.0984287 0.298323 1.26035 0.344592 0.970098 0.349018 0.466628 0.0362427 -0.0145482 0.158512 0.691482 0.0787454 -0.244275 0.435928 -1.80123 -0.336444 0.0702646 -0.0106292 -0.461399 -0.747935 -0.244381 -0.0414474 -0.399407 -0.379688 0.207264 2 2 -18.1101 1.96519 11 11 5 -0.442981 -0.744138 -0.590092 -0.385903 -0.855463 -1.18056 0.225582 1.02667 0.827893 -0.0762728 -1.88682 0.14144 -0.398172 -0.38105 -0.847245 -1.91325 -1.54583 0.397743 0.558322 0.328465 -0.00627529 -1.76878 1.11159 0.808951 0.525573 -0.61589 -2.22884 -1.41172 0.93406 0.619646 0.651345 0.22789 -1.20578 1.32011 1.17472 0.7548 0.135737 -1.27419 -0.855054 0.79311 0.832909 0.859222 0.216966 -0.614396 1.08697 0.546357 0.467111 -0.602745 -0.770309 -0.0395736 0.496596 -0.587296 -0.612121 1.01963 1.40448 0.153395 0.166897 0.105933 0.123027 1.45573 1.93747 1.21233 0.663213 1.35765 0.627605 1.25169 -0.306624 -0.247053 -0.168746 0.411272 0.117994 -0.510426 -0.574869 -0.63247 -0.124533 -0.670836 0.278713 -0.151887 -0.438221 -0.35749 -0.0272427 -0.155801 0.256286 -0.135929 0.182883 -0.387203 -0.512193 -0.073607 -0.0845817 -0.74108 -0.796426 -0.409693 0.253267 0.352205 -0.346561 0.107237 -0.17792 0.0605415 0.600856 -0.0305569 -0.371251 -1.04577 -0.628337 -0.205503 -0.0341922 0.487186 0.440728 0.148951 0.0640635 0.642262 0.155729 0.0927582 -0.240281 -0.278124 -0.120338 -0.00985672 0.235424 0.447189 0.341886 0.10359 0.506515 3 11 11 3 2 0 -25.25 2.23339 11 11 5 -0.613308 -1.35577 -2.94305 -0.193616 2.66528 1.80475 -0.592153 -3.01798 -1.7489 -0.657361 0.598329 0.627433 -1.6394 -1.98847 1.18778 1.98886 1.19673 0.597987 -1.24263 -1.04762 0.011325 1.54374 1.46465 -0.810037 -0.483724 0.95231 1.02843 0.595195 0.390363 0.196603 0.222666 0.515064 1.3931 0.824117 -0.448843 -0.142566 0.612371 0.26655 0.360568 -0.148074 0.42919 0.0974953 0.0149329 0.291197 0.063164 -0.0321316 0.0434782 0.705895 -0.712114 -1.7585 -0.194445 1.22377 0.620986 0.42705 0.138619 0.145563 0.803748 0.760976 0.311583 0.650347 2.59789 0.408266 -1.04793 -0.393761 -0.00434599 -0.0991975 -0.334569 -0.193537 -0.515205 -0.669433 -1.27581 -0.830863 -1.01175 -0.401055 -0.34208 -0.581637 -0.926254 -0.70757 -0.248974 0.13243 0.0751413 0.839687 -0.652962 0.820104 0.832672 -0.262488 -0.468311 -0.945956 -0.729622 -0.0834445 0.118204 0.0653085 1.12492 -0.300892 0.809336 1.00947 -0.151758 -0.802577 -0.50387 -0.123829 -0.385683 0.204223 0.275452 0.532662 0.107146 0.717949 0.968673 -0.264398 -0.534841 0.0330525 0.443396 -0.816263 -0.502939 0.0852736 0.11204 -0.469718 -0.263748 0.368719 -0.285434 -0.715114 0.164298 2 1 -17.8866 1.72375 11 11 5 -0.893224 1.16153 0.0828355 1.16772 -0.885816 -0.456212 1.82408 0.860638 -0.3275 0.411998 1.01108 -0.570263 -0.36575 -0.93987 0.877877 -0.370579 -0.864347 0.828772 0.0178211 -1.06706 -0.266386 0.784852 -0.0994692 -0.86361 -1.07589 0.361039 -0.0693234 -1.57241 0.596053 -0.290852 -1.32392 -0.683251 0.12387 -0.628801 -0.995896 -1.188 0.938883 -1.32996 -2.10965 0.0422239 0.815421 -1.15193 -1.73794 -1.50003 -1.77335 -0.742104 -0.39061 0.300922 0.279785 -1.49369 1.00113 0.653563 -0.812106 -0.45177 0.273587 0.0895397 0.633355 -0.242782 -0.00721949 1.23947 -1.3003 1.64504 0.53508 0.247954 0.652325 1.68049 0.428209 0.645732 0.00753684 -1.29721 -0.547768 0.869207 0.0520538 -0.53863 -0.140851 0.172363 1.38209 0.9961 0.086325 -0.147541 0.264762 0.775957 -0.903019 0.525222 0.580319 0.175255 -0.348671 1.21443 0.350442 0.245793 0.439495 0.50024 0.988214 -0.670196 0.704673 0.918799 0.345948 0.0656821 1.29281 0.354002 -0.320014 0.213609 0.0791258 0.821581 -0.302777 0.193729 0.452546 0.0845619 -0.431645 0.981952 0.146687 -0.617946 -0.379734 -0.629058 0.400708 -1.00284 -0.307669 0.301021 -0.107716 -0.401396 0.740524 2 2 -17.7206 1.87677 11 11 5 -0.331214 -0.471138 -1.82825 -0.0773327 1.41699 0.804691 0.0550654 -1.365 -1.06949 -0.362424 -0.860259 -0.025108 -1.34766 -1.93513 0.25305 1.01693 0.507795 0.592087 -0.640331 -1.553 -1.04408 -0.363417 0.0606299 -1.51362 -1.13686 0.715282 0.9558 0.931193 0.885365 -0.267809 -0.940713 -0.711748 0.743811 0.334147 -1.07857 -0.806956 0.426207 1.56111 1.42616 0.1884 -0.0143187 -0.744514 -0.80464 0.668093 0.0329282 -0.472168 -0.0162063 0.887524 -0.201744 -1.30878 0.430332 1.51763 0.677886 0.126509 0.441855 -0.172419 0.602936 1.06599 1.00687 0.803804 2.3091 1.07047 0.24454 0.299394 0.469216 0.398866 0.098097 -0.0946606 -0.217941 -0.180423 -0.679443 -0.174222 -0.606648 -0.19241 -0.0556109 0.347547 0.239652 -0.164409 -0.176618 -0.0618192 0.054614 0.0916004 -0.623182 0.0372709 0.204283 0.164617 -0.16396 -0.509953 -0.690346 0.125935 0.407404 -0.164176 0.547026 -0.385261 0.180222 0.82541 -0.0138438 -0.271758 -1.28316 -0.86689 -0.126631 0.326464 0.524793 0.419959 0.080548 0.220843 0.838448 0.302525 -0.280082 -0.955238 -0.150297 -0.490939 -0.020632 0.31292 0.710658 0.316078 0.0919688 0.410753 0.275402 -0.117456 -0.900824 3 11 11 3 2 0 -24.1083 2.7668 11 11 5 -2.40939 2.17962 1.72814 -0.86186 -2.10794 -0.754334 -0.672275 -0.789686 -0.344563 -0.0173253 0.654769 -1.37461 1.59611 0.810146 -0.0355304 -0.834343 -1.0254 -0.911481 0.0990985 0.718062 0.610542 0.613284 -0.74748 1.35041 0.627659 0.10739 0.228591 -0.301529 -0.136609 0.974497 1.1744 0.472373 0.392652 -0.334517 1.21256 0.782447 0.157087 0.558092 -0.210565 -0.115918 0.544167 0.458978 0.127014 0.346359 -0.360966 0.107842 -0.872641 -1.049 0.265171 -0.317891 -0.181144 -0.128285 -0.161826 0.00172922 0.148345 1.17316 0.758394 0.483576 0.982876 1.4408 1.27536 1.21762 0.863967 0.247117 -0.0855569 -0.684816 -0.810595 -1.30288 -0.394741 -0.755862 -1.78838 -1.63636 -1.24421 0.199879 -0.240994 -0.815729 -0.983226 -0.640998 -0.0783757 -0.0629054 0.604762 0.0328416 -0.352628 -0.669129 -0.424858 -1.07574 -1.34683 -0.392706 -0.125996 0.717003 -0.587132 0.762079 0.465133 -0.0317001 -0.229351 -0.216187 -0.874996 -0.981021 0.452195 -0.420645 0.67037 -0.244191 0.798903 0.858751 0.565557 -0.345608 -0.548656 -0.469453 0.554651 1.49174 -0.64538 0.261032 -0.351264 0.298558 0.755252 0.136484 -0.841072 -1.44446 0.0381247 1.69184 2.35627 2 1 -16.2062 1.23315 11 11 5 0.842979 -0.159526 -0.435437 1.14763 1.07502 -0.0218184 0.356473 0.411626 1.23306 1.80922 1.08391 0.127213 -0.520866 -1.1943 -0.172114 0.591612 -0.898137 -0.786994 0.191302 0.127758 0.082448 -0.411541 -0.650173 0.196913 -0.862763 0.0247212 -0.295944 -1.19763 -0.884109 0.42848 -0.123754 -0.709858 -0.511789 -0.984834 -0.287081 -2.25556 -0.755132 -0.0696219 -1.02778 -1.57068 -0.925969 -0.265517 0.245969 0.137406 -0.38603 -0.682418 -1.13536 -0.0187827 0.603196 -0.882141 -1.59917 -1.6508 -0.64184 -0.0559115 0.295984 -0.329121 0.995329 -0.566157 0.0188665 0.958435 0.0571004 0.103262 0.299122 0.70942 0.758605 0.67608 -0.226948 0.112472 0.185975 0.184641 0.167298 0.261348 0.675163 0.577489 0.598656 0.607172 0.974095 0.0819428 -0.477939 -0.68275 0.381457 -0.0232179 -0.176064 -0.732768 -0.366354 0.634079 0.908634 1.43225 0.870062 0.599275 -0.17293 0.364883 0.613395 0.265822 -0.369315 1.01149 1.06214 1.1612 1.14579 0.409214 0.290633 -0.0678243 0.637216 0.623968 0.157374 -0.514476 0.551459 1.03116 0.99501 -0.806588 -0.297524 -0.165004 -0.785139 -0.376527 -0.465024 -0.335864 -0.99446 0.478625 0.685362 -0.301337 -2.06119 2 2 -17.8404 2.06515 11 11 5 -1.0512 1.68867 0.70418 -0.30837 -1.15129 -0.248731 -0.513059 -0.790005 -0.458406 -0.396087 -0.590559 -1.01971 0.699925 0.466158 -0.0354429 -0.778713 -1.33698 -1.4666 -0.603386 0.223941 0.109969 0.00778896 -0.555494 0.574626 0.545166 0.135639 -0.16017 -1.62506 -1.14277 0.231384 0.779416 0.101819 -0.00111623 0.187749 1.49205 1.40153 0.636074 0.211581 -0.977544 -0.715101 0.406173 0.631925 0.307506 0.25091 0.307504 0.735812 -0.256638 -0.432085 0.0411872 -0.358786 -0.661297 -0.251806 -0.232317 0.398345 0.496349 2.32663 1.27796 0.681985 1.67112 2.28733 1.54366 1.17647 0.0796064 -0.0226829 0.194678 0.0335824 0.387034 -0.472497 0.385134 0.198722 -0.789857 -0.331309 0.093534 0.515276 0.178796 -0.423075 -0.717618 -0.217327 -0.298063 -0.253249 0.0921254 -0.364258 -0.0657824 -0.293081 -0.117382 -0.094601 -1.06373 -1.07189 -0.495313 0.127494 -0.555519 0.0386153 0.272668 0.0406001 0.218565 -0.253473 -1.22063 -1.12188 -0.629368 -0.0322683 0.49103 -0.159595 -0.0213298 0.589515 0.780844 0.19676 -0.72154 -0.784935 -0.76201 -0.17236 0.27628 0.527646 0.110599 0.341098 0.688268 0.768732 0.5936 -0.365095 -0.340363 -0.393684 -0.214869 3 11 11 3 2 0 -21.1252 3.2015 11 11 5 1.02901 -0.781801 -0.941002 -1.11791 -0.521339 -0.143324 0.280661 0.194694 0.10898 0.462793 0.765483 0.95676 0.0239283 -0.452424 -0.508481 0.240615 0.735991 0.320003 0.109827 0.00725377 0.0396596 0.541757 0.633097 0.276763 0.137814 -0.24285 -0.0578162 0.224121 0.288682 0.57853 0.532989 0.207586 0.439702 -0.118068 0.131825 0.386673 0.152367 0.133637 -0.470292 -0.21525 0.292966 0.572847 0.185985 0.0164839 -0.134264 0.132981 -0.0267155 0.661686 1.44364 0.741317 -0.123247 -0.226447 -0.0311826 -0.626711 -0.509554 0.234621 -0.478627 -1.4589 -1.68943 -0.646488 1.6153 0.997863 -0.870312 -1.20683 -0.749948 -0.606336 -0.145699 -0.135065 -0.519374 -1.28882 -1.41154 -1.56102 -2.17235 -1.56185 -0.594943 0.0389873 0.0224003 0.0138703 0.378071 0.277237 -0.179673 -0.385542 -0.996764 -1.64782 -0.277672 0.972444 0.569868 0.470691 0.673587 1.14576 0.8897 0.306316 -0.872226 -1.07922 0.486575 1.97965 1.09129 0.15014 0.343234 0.517261 0.896924 0.780773 -0.146456 -1.03672 -0.462609 1.53378 1.4907 0.63964 -0.210756 0.23294 -0.608758 -0.00651802 0.166912 -1.14202 -1.6682 -0.0882496 1.19093 0.699644 0.346825 -0.129947 0.142296 2 1 -18.3829 1.77591 11 11 5 -0.883726 0.881446 0.351001 -0.945507 0.19124 1.27413 1.5144 1.06422 0.284404 -0.344783 -0.477349 -1.14071 0.442935 -0.179664 -1.17796 -0.52158 0.170556 -0.162701 -0.271759 -0.253261 0.199643 -0.191734 -1.30523 -0.277119 -0.0978609 -0.882708 -1.56452 -0.65716 0.743012 0.366486 -0.206048 -0.0228063 -0.0833951 -0.783029 0.0711575 -0.0111501 -0.638836 -1.22654 -1.66068 -0.531412 0.0626791 -0.0252668 0.307946 0.336227 0.334191 0.674915 0.0929622 -0.31053 -0.795695 -1.44207 -1.00952 -0.112584 -0.34206 0.0538933 0.709609 0.106401 0.42338 0.273618 0.328663 1.35853 1.19114 0.588589 -0.0447635 0.41345 0.613289 1.06583 -0.00283406 0.314195 -0.208642 -0.624272 -0.787736 -0.0475607 0.446708 1.25863 1.64072 0.44904 0.702556 0.511206 0.230392 0.585341 -0.146068 0.331346 1.48926 1.20849 2.31569 1.25643 -0.569225 -0.338673 0.515659 0.115126 0.357164 -0.134295 0.23872 1.18866 1.51669 0.569798 -1.32169 -1.13746 -0.598144 -0.725566 -0.441637 -0.787414 -0.550652 -0.557972 0.0822707 -0.256017 -2.54552 -1.53119 -0.14026 -0.174371 0.178571 0.0774213 0.0709923 0.496694 0.597416 1.20915 -0.172831 -1.94301 -0.718539 0.559139 0.0398451 2 2 -16.9977 1.87125 11 11 5 0.223123 0.156733 -0.739559 -1.71132 -0.524608 -0.103158 -0.379711 -0.342352 -0.345399 0.381437 0.305197 0.50919 0.251246 -1.04958 -1.34269 -0.258381 0.862866 -0.134323 -0.55143 -0.492557 -0.109901 0.299642 1.13915 0.666354 -0.188061 -0.567849 -0.0646978 0.398476 0.546257 0.3431 0.151492 -0.0973066 0.192352 1.06217 1.03575 0.761293 -0.235232 -0.410364 -0.643321 -0.222858 0.195433 0.509265 0.598705 0.192234 0.312376 1.05541 1.31302 1.3566 1.1399 0.174921 -0.376628 -0.179541 0.30235 0.100785 -0.280312 0.648851 0.153767 -0.230285 -0.0188892 0.700651 2.12867 1.88705 -0.0101085 -0.537414 -0.331636 -0.470581 -0.496452 -0.594929 -0.663981 -0.541979 -0.348254 -0.283525 -1.05392 -1.94217 -0.975511 -0.55936 -0.499438 -0.700791 -0.444587 -0.223455 -0.0993151 -0.104682 -1.06537 -2.29677 -1.12879 -0.351952 -0.308644 0.0147279 0.436797 0.679808 1.17938 0.813999 -0.366686 -1.13038 -1.01055 0.145197 0.0133195 0.0799172 0.00953158 0.892465 0.601539 1.14234 0.594786 -0.981727 -0.807515 0.170967 0.213658 0.125601 0.0293625 0.208832 0.390834 0.876542 1.34352 0.459215 -0.741413 0.0282584 0.0944943 -0.121682 0.339754 0.117719 -0.264517 3 11 11 3 2 0 -25.4916 3.66186 11 11 5 -0.153592 -0.458366 -0.111252 0.236177 0.029691 -0.157944 0.350169 1.2763 1.04639 0.408157 -0.100302 0.589106 0.0649755 0.0532578 0.00627373 0.0974619 0.0144522 0.464712 0.760416 0.514252 0.0300892 -0.233879 0.235007 -0.0804527 0.290776 0.347828 0.247463 -0.139103 -0.242029 0.0287361 -0.177101 -0.237298 -0.185141 -0.461644 -0.69089 -0.16665 0.448534 1.08339 0.0225014 -0.925121 -1.10514 -0.586988 -0.293891 -0.0331223 -0.187722 -0.716637 -0.534578 -0.519396 0.111467 0.312141 -0.460186 -0.87178 -0.628649 0.0189206 0.0561359 0.763853 0.121183 -0.512674 -2.30761 -4.74048 -3.0812 0.360769 0.739338 0.452993 0.326539 0.101576 1.23864 0.502164 -0.383712 -1.77892 0.26823 2.67942 1.16502 0.852192 1.15054 0.395275 -0.14584 1.3269 0.367536 -0.78771 -1.03279 1.75512 1.50567 0.334133 0.257651 0.614624 0.199368 -0.178295 0.593045 -0.189197 -0.51876 -0.159671 1.11411 0.569399 0.171704 -0.0136835 -0.109606 -0.291163 -0.0839 -0.296482 -0.410207 -0.45081 -0.0224028 0.199426 0.0642595 -0.0613328 -0.10155 -0.423838 -0.304143 0.210386 -0.556209 -0.211062 0.00932992 0.203708 -0.171913 -0.07998 0.101021 0.207991 -0.277477 -0.335414 0.408956 2 1 -18.2955 2.06602 11 11 5 -0.196495 -0.501269 -0.542596 -0.0304089 0.34746 0.549047 0.271931 -0.122097 -0.279228 0.0756396 -0.130507 -0.0675801 -0.149162 -0.481187 -0.686882 -0.16691 0.172778 0.515702 0.0915386 -0.347953 -0.309466 -0.375048 0.0226581 -0.388063 -0.2903 -0.0327637 -0.682392 -1.1466 -0.0404828 0.243691 0.0559107 -0.172934 -0.472153 0.398698 0.0414724 0.328756 0.11528 -0.273025 -1.40912 -0.850701 0.272756 0.650822 0.0217847 -0.321449 0.326836 0.239311 -0.185106 0.510329 2.49763 1.25205 -0.833364 0.456992 0.895959 0.230342 -0.318701 0.131504 0.0482372 -0.151684 -0.120104 -0.942965 2.12355 1.90968 0.378301 0.47676 0.168249 -0.33683 -0.249602 -0.0311714 1.00846 0.219743 3.1836 2.84795 -1.04205 -1.31594 -0.376077 0.326858 -0.107866 -0.665562 -0.181943 -0.245276 0.49749 1.14209 -2.21423 -1.42971 -0.990974 -0.270649 0.552563 -0.00527315 0.318002 0.248378 -0.102093 -0.221542 -0.824649 -2.12074 -0.599991 -0.0352745 0.193918 0.494589 -0.233501 -0.0188552 0.135709 0.153997 0.193042 -0.252458 -0.819584 0.2835 0.0857105 0.171918 -0.01224 -0.37686 0.377834 0.475286 0.321925 -0.00370667 -0.609458 -0.277982 0.301049 -0.068181 0.194749 -0.214097 -0.276967 2 2 -21.786 2.67134 11 11 5 -0.297493 -0.36898 0.184102 0.383321 -0.144578 -0.590795 -0.73085 0.505024 0.878454 0.559701 0.512129 0.625442 0.389692 0.244811 0.205509 0.0931262 -0.116978 0.206128 0.54056 0.867548 0.293301 0.0860056 0.545045 0.31716 0.336168 0.282009 -0.203496 -0.197572 -0.248481 0.448012 0.309349 0.169478 -0.22491 0.209595 0.143986 0.975474 1.25186 0.695475 0.0136784 -0.687171 -0.543234 -0.196976 -0.0704421 -0.226197 -0.560244 -0.52719 0.556906 1.55825 2.50306 0.716635 -0.332615 -1.04853 -0.64062 0.00415129 0.244406 -0.43147 0.00841658 0.276163 -1.39452 -4.74234 -3.76939 -0.842211 -0.27883 -0.33184 0.0887794 0.0783478 0.887825 0.929972 0.0435739 -2.4692 -1.24327 -0.178231 -0.537657 0.217086 0.568434 0.310116 -0.224499 2.07215 1.07603 -0.466704 -1.52036 0.213435 0.267382 -0.300376 0.222528 0.862158 0.642766 -0.187116 1.3626 0.729344 -0.510836 -0.389392 0.0409913 0.238611 0.452592 -0.0364063 0.354485 0.0400937 -0.0412387 0.567086 0.128222 -0.332076 0.102395 -0.25297 0.10697 0.0209026 0.0310925 -0.374614 -0.159812 0.338769 0.0344881 -0.170934 -0.298778 -0.3115 -0.642725 -0.266712 -0.406942 -0.115125 -0.182837 -0.116228 0.315112 3 11 11 3 2 0 -19.1374 2.30291 11 11 5 0.139652 0.393728 -0.186694 -0.625826 -0.172979 1.10235 1.0249 0.843782 0.681201 0.524392 0.877571 0.266636 0.124764 -0.163141 -0.685041 -0.713692 0.570204 0.440549 -0.227074 -0.480361 -0.958301 -0.28935 0.853315 0.273617 -0.21473 -1.26076 -1.47068 0.037043 -0.624276 -0.264769 -0.0814021 -0.955262 -0.832523 1.39436 0.69361 -0.219027 -1.67171 -2.43471 -1.55453 -1.47199 -0.150096 1.03573 0.436381 -0.309537 0.921524 0.65912 -0.191683 -1.36036 -2.31347 -2.29009 -1.17596 -0.434831 0.646364 1.15392 0.956663 0.677077 0.85169 0.870438 -0.0584168 -0.203341 1.09634 2.27023 1.08605 -0.10205 -0.0171531 0.847731 -0.158955 0.439206 0.453954 0.500132 0.661524 1.19699 1.37279 0.782946 -0.246802 -0.808093 0.0947153 -0.782683 -0.746285 -0.224616 -0.10686 -0.482537 -0.198731 0.215557 0.207861 -0.372609 -0.706467 -0.0704156 -0.571804 -0.738883 -0.450521 -0.139553 -0.0370188 0.0490685 -0.170411 -0.2167 -0.487791 -0.64794 0.147943 -0.710561 -0.626219 -0.379094 -0.167154 0.32477 0.225065 0.172634 -0.0228968 -0.437565 -0.432816 0.341364 0.442327 0.299837 0.467085 0.64066 0.825131 1.20155 1.5455 0.992216 -0.232121 -0.0867698 0.274884 2 1 -15.4266 2.1574 11 11 5 -0.457932 0.383396 0.0679109 -0.668532 -0.773121 -0.83416 -1.86135 -0.972341 -0.0747328 0.280189 -0.654081 -0.0280889 0.46786 0.0999518 -0.519138 -0.131681 1.53659 0.509341 -1.21098 -0.910821 0.565116 0.253899 -0.11655 0.327285 0.252853 0.53496 0.903811 2.20359 1.23215 0.958225 -0.38767 0.496925 0.850075 -0.514825 -0.138296 -0.018317 0.591066 1.39753 1.95077 0.954986 1.91069 0.150877 -0.0891885 0.527313 -0.165479 0.380475 0.0795438 0.0119826 0.601856 0.148406 -0.234957 1.77265 0.465059 -0.555479 -0.102846 0.446806 -0.197797 0.086396 -0.123607 0.988911 0.559385 0.52367 -0.189969 0.426822 -0.600861 -0.420564 0.213573 0.187451 -0.236205 -0.508862 -1.09199 -2.50447 -2.26215 -2.13584 0.120694 0.107151 0.032513 -0.125654 0.27912 0.0466175 -0.0466431 -0.960818 -0.667637 -0.823666 -1.39818 0.00104431 0.44279 0.118434 0.385584 0.36097 0.665684 -0.147536 -0.0987501 -0.376688 -0.460397 -0.4753 0.170795 -0.042867 -0.295486 0.786446 0.629927 0.122047 -0.216457 -0.669049 -0.337417 0.0404668 0.205695 0.210245 -0.456297 -0.28411 0.101373 0.343317 -0.0861628 -0.811892 -0.917396 0.0257495 -0.139585 0.603467 0.132635 -0.146895 -0.55532 2 2 -13.3878 0.901031 11 11 5 0.910719 1.13883 0.546663 0.228433 0.153309 0.408168 -0.38134 0.072077 0.640229 0.288223 0.816783 0.345243 0.754847 0.608988 0.599296 0.0152831 1.07137 0.334888 -0.122777 -0.121224 -0.166071 -0.00156344 0.326885 0.570714 0.700667 0.0526655 0.0130888 1.04989 -0.0494544 -0.598387 -0.127108 -0.647108 -0.703423 0.256472 0.50214 0.852623 -0.618094 -1.02365 -0.597061 -0.668255 -0.794911 -0.0113335 -0.103709 -0.833108 0.601309 0.688087 0.324989 -1.15799 -2.16362 -2.78084 -1.32002 -1.34179 -0.247888 0.589098 0.139271 1.77136 1.74626 0.676205 -0.802666 -1.22323 -1.5883 0.23681 -0.148646 -0.338442 0.235778 0.488883 1.6636 1.35355 0.753118 0.297805 -0.000619135 0.455752 0.229943 0.468111 0.273409 0.00530322 0.323181 0.585542 0.142904 0.450221 0.109698 -0.816446 -0.397352 0.145825 0.25928 0.233631 -0.346279 -0.860268 0.453688 -0.0200386 0.144804 -0.206981 -0.239649 0.242669 0.320094 0.121096 -0.0226966 -0.513425 -0.232063 -0.453757 -0.443443 -0.0694263 -0.456186 -0.227205 -0.0424542 -0.601577 -0.417348 -0.0447871 -0.229355 -0.100568 -1.05168 -0.869577 -0.646685 -0.497498 -0.91562 -0.0848817 0.146843 0.528816 0.218293 0.340917 0.465254 3 11 11 3 2 0 -18.4892 1.84389 11 11 5 0.811475 0.863103 0.447435 -0.245498 -0.356095 -2.09445 -0.622874 0.425789 -0.0649087 -0.084248 0.901833 0.506115 -0.0644304 1.21327 0.0972051 -0.137648 -1.02594 -0.105421 -0.656847 -1.06441 -0.891839 0.298345 -0.301747 -0.474153 0.785099 0.464495 -0.528223 -0.695514 -1.20969 -1.68043 -0.820886 -0.152587 0.51558 -0.561968 -0.611412 -0.12488 0.0151856 0.0986047 0.381657 -1.70907 -1.80381 -0.567368 0.0781041 0.383326 -0.224811 -0.285962 0.0592212 1.47823 2.88826 -0.654607 -2.09003 -0.893574 0.334193 0.114177 0.0867756 0.278502 0.0583339 0.590047 0.921103 -0.111373 0.0129312 0.987789 1.51424 1.65668 0.796409 -0.313198 0.657001 -0.714374 -1.72306 -1.42557 -0.338675 0.741805 0.505226 0.798306 0.599237 -0.0362703 -0.435775 0.471305 -1.15143 -2.08013 -1.27913 -0.53401 0.499136 0.75282 0.378544 0.0428643 -0.431219 -0.577478 0.719013 -1.00507 -1.38357 -0.95481 -0.0690941 0.709368 1.01572 0.995642 0.0903419 -0.380681 -0.256228 1.09368 -0.452069 -0.585971 -0.379283 0.210051 0.561703 0.807641 0.899923 0.278117 -0.142543 0.141305 1.40189 0.656847 0.654186 0.814806 0.796273 0.561733 0.471889 0.268286 0.174418 0.0440764 0.689674 2 1 -11.6848 1.67412 11 11 5 -0.326836 -0.3218 -0.737648 0.595958 0.297729 -0.803726 0.871074 0.603968 0.270687 0.133311 -0.929636 0.353249 -0.53127 -0.47088 0.200943 0.396829 1.01561 1.60254 1.02971 0.733929 0.803794 -0.0302069 0.746682 -0.584338 -0.137204 0.969264 0.932681 0.817812 -0.13877 -0.564858 1.2163 1.67043 0.552844 1.20423 0.403291 0.206493 0.724086 0.531703 -1.3165 -2.09355 -0.416204 0.824607 1.64946 0.763778 0.504855 -0.0320166 -0.25286 -0.0967483 -0.232487 -0.775538 0.636337 1.52361 0.315291 0.0824261 0.993461 0.0198742 0.41824 -0.115393 0.122181 -0.26265 -0.613578 -0.281042 0.0617418 -0.501846 -0.337432 -0.151887 -0.831355 0.0135331 -0.768418 -0.556949 0.201433 0.000915158 -0.55658 -1.26908 -1.94343 -1.52367 -0.473826 0.112741 0.561121 0.311678 -0.0460681 0.602611 0.265921 0.0773314 -0.744097 -0.553944 -0.277253 -0.372502 -0.210597 0.309622 0.596062 0.195123 0.105438 -0.394821 -1.02743 -0.64429 0.216026 0.339144 -0.0550751 -0.817903 -0.0115399 0.454102 0.428123 0.391855 -0.534827 -0.709599 0.00120298 0.620095 0.263197 -0.177269 -1.61612 -0.767438 -0.927336 -0.504945 -0.237348 -0.310885 -0.622625 -0.12259 0.0832558 0.105032 -0.389833 2 2 -14.6614 0.922968 11 11 5 1.35167 1.45051 0.668674 0.255538 0.520964 -1.37973 -0.35036 0.689429 0.505971 -0.135364 0.180775 1.66415 0.319318 0.86453 0.389249 0.474463 -0.380125 0.461758 -0.016744 -0.173005 -0.90272 -0.386779 0.936641 0.677488 0.376727 0.531476 -0.675242 -0.155048 -0.3765 -0.66165 -0.203333 -0.477691 -0.603123 0.223419 0.0930835 -0.4714 -0.567112 0.283309 1.14775 -1.24731 -1.5663 -0.969736 -0.149083 -0.5818 0.667715 0.321296 -0.0586894 1.86124 2.9659 -1.28476 -2.54472 -1.72926 -1.05852 -0.182057 -0.450149 0.486421 0.752472 1.39954 1.26785 -0.0774635 -0.873381 0.1015 0.171613 -0.369534 -0.0711956 -0.206174 0.843577 0.672578 -0.101967 -0.498 0.749841 1.09452 -0.274424 0.064685 -0.220955 0.0844906 -0.0718523 0.693936 0.269534 -0.979551 -0.663036 -0.382168 -0.0510672 -0.0152379 -0.345037 -0.114393 -0.220974 -0.587366 0.254568 -0.364317 -1.22647 -0.931355 -0.149668 0.0702286 0.1001 0.353422 0.100563 -0.175629 -0.854051 0.811927 -1.04205 -0.890855 -0.826738 -0.437864 -0.0734573 0.258798 0.387363 0.375062 -0.098016 -0.513352 0.291659 0.0903133 -0.0952483 -0.163388 -0.255703 -0.0805285 0.373642 0.443948 0.828685 0.481704 0.283109 3 11 11 3 2 0 -19.7968 2.11753 11 11 5 -0.613137 -0.997785 -0.177752 1.91831 0.601934 -0.0888105 1.43361 -1.18018 -1.1954 -0.622936 0.307875 -0.451711 -0.309453 -0.774354 0.895447 0.449431 -0.209613 0.806008 -0.591478 -0.334193 -0.511157 -1.34801 -1.40473 -0.345145 -0.458192 0.169765 0.218433 -0.572479 -0.144459 -0.371714 -0.0909717 -1.33237 -1.42004 -1.70058 -1.01661 0.811104 0.909314 0.0530128 -0.408284 1.10599 1.9171 -0.451268 -2.27721 -1.5053 -1.49183 -1.09119 -0.192299 0.913933 0.55088 -0.0978281 0.868896 0.353716 -0.843399 -1.05759 0.0291796 0.29471 0.809414 1.01642 0.16549 -1.12484 -0.895007 -0.331386 1.01547 1.2285 0.981088 1.22091 0.197512 1.03859 1.17391 0.292969 -1.56349 -2.11225 -1.43829 0.0386821 0.633977 0.688411 0.662736 0.425587 0.946883 0.637113 -0.225843 -1.48173 -1.9018 -0.995264 0.272637 0.889326 0.938526 0.646071 0.914292 1.40765 0.996223 -0.111377 -0.931415 -0.97737 -0.238106 0.464466 1.06062 1.07854 0.699231 0.748159 0.928629 0.648067 -0.0953198 -0.363477 -0.226544 0.303222 0.269046 0.571202 0.557915 0.222474 -0.266635 -0.374076 -0.0560709 -0.105681 0.0714484 0.242995 0.570254 0.58426 0.595499 -0.000196842 0.0326508 2 1 -12.1977 1.98737 11 11 5 0.526031 -0.0471984 -0.601736 0.402411 -0.665803 -0.478432 0.841295 -0.00519113 0.616566 0.93373 0.99303 1.35358 1.27935 0.565514 0.0786898 -0.288735 -0.479484 1.08682 0.966283 0.992792 0.563984 0.916058 0.316569 -0.0535299 0.733162 0.827029 -0.146049 -0.507833 1.32391 1.09205 -0.136858 -1.05683 0.926589 0.055016 -0.905615 -0.239494 0.787665 0.588934 -1.05643 0.705656 -0.430218 -1.02683 -0.801755 1.6511 0.419979 0.605633 -0.174614 -0.640848 0.396067 -0.0464912 0.929682 -0.00474532 -0.216904 0.939963 1.81102 0.148289 -0.112897 0.534492 1.05544 0.259132 -1.04387 -0.846118 0.357538 -0.320344 0.117741 -0.447957 -2.57938 -0.856291 -0.0733341 0.326088 0.209339 0.202988 0.200722 0.137598 -0.21372 -0.495367 -1.61294 -1.78584 -0.233724 0.584215 0.25483 0.112729 0.516222 0.592174 0.686954 -0.0734875 -0.793663 -0.88801 -1.41288 -0.808846 -0.274349 -0.206036 0.375273 0.508861 0.704289 0.292581 -0.869375 -1.10323 -0.546734 -0.73616 -0.576426 -0.777889 -0.426307 0.452745 0.253253 0.33141 0.288269 -0.213229 -0.6398 -0.0117242 -0.483197 -0.728388 -0.64749 -0.246015 -0.147849 -0.915585 -0.85414 0.2118 0.0769842 -0.635462 -0.368495 2 2 -15.7827 1.33201 11 11 5 -0.195842 -0.404173 0.113379 2.22972 0.606524 -0.102243 1.79155 0.0433438 -0.699772 -0.114409 1.32 -0.362155 0.151026 -0.0650191 1.19909 0.788084 -0.179726 0.7476 0.0932774 -0.13011 0.115637 -0.264871 -0.422653 0.251953 -0.265762 0.309235 0.331921 -0.0987342 -0.578838 0.118865 0.548254 -0.446459 -0.874176 -1.36322 -0.612466 0.555194 0.79864 0.151329 -0.609949 1.65249 2.34911 -0.276056 -1.86597 -2.16761 -1.53709 -1.21193 -0.351724 1.68377 1.14865 0.350348 0.706776 0.228064 -1.67407 -1.39878 -1.51048 -0.781789 0.176899 0.250609 0.210332 0.108397 0.947699 0.0539621 0.54839 0.89896 0.107885 -0.592414 -1.02945 -0.126707 0.617839 1.18291 0.221056 -0.631498 -0.816714 0.531169 0.267048 -0.418651 -0.785951 -1.35031 0.118173 0.214756 0.587696 -0.674168 -1.23958 -1.36894 0.160667 0.27245 -0.194868 -0.384382 -0.502166 0.381138 0.84788 0.077468 -0.39839 -1.05657 -0.51471 -0.16899 0.186552 0.324431 0.133071 0.51931 0.549243 0.766981 -0.428415 -0.661935 -0.628837 -1.02719 -0.773556 0.33728 0.450973 0.192353 1.39574 0.644023 0.518803 -0.0747946 0.271466 0.114381 0.191995 -0.106085 0.428077 0.0226012 0.306871 3 11 11 3 2 0 -18.9245 2.11894 11 11 5 1.29816 -0.198218 0.103886 -0.499408 -1.68668 0.0938909 0.574384 1.14376 0.830131 0.346879 -0.746036 0.463242 -1.37843 -0.571168 -0.0913502 -0.567413 -0.410993 0.0691516 1.19891 0.202868 0.157399 -0.853735 0.771495 -0.986916 -1.24995 -1.17801 -0.771818 -0.763905 -0.472198 0.952939 -0.150406 -0.0708403 -1.35531 1.03056 -0.514228 -1.26492 -1.18264 -0.824697 1.19602 0.0409729 -0.435024 -0.345761 0.206088 -1.16857 0.341292 -0.306816 -0.740261 -1.26299 -1.79734 -0.116141 2.44749 1.26395 0.616592 0.804962 -0.435078 0.108692 0.137512 0.76803 0.985617 1.22043 0.290882 -0.578321 -0.391735 -0.348277 -0.198777 0.0324686 0.206301 0.208247 0.413614 1.10188 1.18328 1.0174 -0.199488 -1.80191 -2.04121 -0.929058 0.383465 -0.300874 -0.588925 0.0338662 0.846995 1.14244 0.441186 -0.661224 -1.70024 -1.9501 -1.08311 0.613951 -0.401313 -0.511464 0.0120616 1.1318 1.59069 0.85087 -0.303317 -0.975159 -1.01552 -0.39856 1.09246 -0.0238034 -0.597953 -0.0163202 1.01612 1.38746 0.729371 -0.0606519 -0.284729 -0.320208 0.509957 1.34887 -0.0803317 -0.459243 -0.339027 0.228778 0.33333 0.0805845 0.266032 0.68022 0.912173 1.4287 2.06718 2 1 -11.4157 1.55034 11 11 5 -0.993846 -1.05385 -0.0011439 0.807715 -0.417297 -0.357323 0.200654 -0.475886 -0.243072 0.456702 0.315176 -0.167747 0.480824 0.954229 1.50259 1.35532 -0.00474442 -0.25773 -0.077456 0.158427 -0.0139772 1.36558 0.0582269 1.37717 0.494092 -0.0882129 0.357209 0.603974 0.51177 0.126016 -0.0551223 0.582252 1.97613 0.971012 1.7049 0.104046 -1.58571 -1.62892 0.119978 0.842356 -0.0624714 -0.409731 0.261097 0.575294 1.51019 0.494671 -0.669525 0.739023 -0.099896 -0.400772 0.116474 0.0890338 -0.115985 -0.00307156 0.13316 1.26376 -0.468608 -0.425989 -0.158855 0.0636684 0.136826 0.678445 -0.181654 -1.05333 -0.412822 -0.865992 0.646569 -1.21265 -2.32317 -1.56873 -0.611618 0.110377 0.422035 -0.0822616 -0.259762 0.678375 0.140458 -0.347664 -1.13426 -1.16453 -0.745871 0.134504 0.497406 -0.0172427 -0.233087 0.457054 1.32642 0.853589 0.0305325 -0.189442 -0.45256 -0.499887 -0.628275 -0.35685 -0.217637 0.0783461 0.290561 0.670559 0.0445964 0.276229 -0.101914 0.00158869 -0.181442 -0.365249 -0.745773 -0.35114 0.0982079 0.0099363 0.148 -0.453156 0.276855 -0.21468 0.0479694 -0.0307412 -0.260901 -0.713855 -0.366861 -0.0291772 -0.51195 -0.690398 -0.914751 2 2 -12.9794 1.09342 11 11 5 1.35209 0.26047 0.114744 -0.0552608 -0.788414 0.629071 1.10503 0.296449 0.687024 1.37705 0.815198 0.078853 -0.284715 0.072151 0.164339 0.128861 0.0373206 0.595771 1.00249 -0.0820823 0.671606 0.705836 0.0131042 -0.29444 -0.519204 -0.598057 -0.402187 -0.701249 0.0703051 1.05617 -0.00369327 -0.105182 0.198028 0.0224525 -0.0576082 -0.423016 -0.778736 -0.826371 0.438444 -0.457104 -0.931984 -0.321209 0.729116 1.30792 0.00384053 -0.194717 -1.02134 -1.63153 -2.24078 -0.452289 2.8244 1.17196 0.626753 0.699188 -0.10488 0.206572 0.231063 -0.34493 -0.251414 0.305895 -0.500752 -0.207254 0.837438 0.834825 0.0717582 -0.121111 0.623162 0.24591 -0.444291 -0.0905931 0.238963 0.98473 0.489725 -0.258318 -0.749283 -0.103149 0.38523 0.258598 0.00206365 -0.903073 -0.36239 0.00108819 -0.0309063 -0.204947 -0.751223 -1.60373 -1.13642 -0.518408 -0.122038 -0.32099 -1.04609 -0.238809 0.680321 0.320285 -0.0473683 -0.671705 -1.30352 -1.21746 -0.292216 0.424096 -0.70041 -0.420322 0.893581 0.97418 0.427007 -0.822196 -0.731 -1.15181 -1.0663 -0.619111 0.398696 0.27532 0.252288 1.25926 1.23053 0.707049 -0.0948474 0.139303 -0.424113 -0.05526 0.248887 3 11 11 3 2 0 -20.6662 2.59095 11 11 5 1.6658 1.2769 1.20912 0.441389 0.390919 -0.237631 -0.801988 0.0111332 1.06862 0.313377 -0.199664 -0.700934 -0.92718 -0.181547 0.556744 0.76533 -0.984518 -1.30538 -0.411074 0.582439 0.29446 -0.200339 -1.79829 -1.32354 0.354359 0.179607 -0.0409332 -1.19199 -1.78498 -0.638799 0.307762 1.16692 0.5939 -0.46434 0.429757 0.963238 -0.310831 -2.15365 -1.87545 -2.3313 -0.665892 0.28142 0.917725 0.242352 1.49069 1.66441 0.499402 -0.885338 -1.84246 -2.31039 -1.06861 0.0888776 0.215 0.317828 0.382309 1.95005 0.785159 -0.0722385 0.268014 1.43112 0.468607 0.418002 0.607752 0.920596 0.396983 -0.567246 0.743049 -0.840652 -0.335328 0.712918 1.01261 0.516158 0.28553 0.892416 0.530379 -0.329996 -1.20563 -0.127658 -1.26093 -0.619403 0.507703 0.525663 0.0803422 -0.510714 -0.0703196 -0.199444 -0.494235 -0.82259 -0.115246 -1.02249 -0.913118 0.0349987 0.184298 0.330494 0.132036 -0.28394 -0.443454 -0.656395 -0.925197 0.509901 -0.4922 -0.799684 -0.0850994 0.0435897 0.496102 0.337832 0.188567 -0.426348 -0.644189 -0.604582 0.459068 -0.196146 -0.481946 0.0434891 1.10218 1.54013 1.30297 0.93784 0.805532 0.863139 1.14645 2 1 -16.9703 2.13508 11 11 5 -0.849474 0.221084 -0.0522756 -1.69846 -1.68859 -0.342768 -0.564568 0.0846328 -0.0327479 -0.02385 -0.0874304 0.986889 0.439687 -1.58594 -1.43193 1.32689 0.81533 -0.48014 -0.0152916 0.106868 0.0228741 0.368927 1.10187 -0.785525 -0.819683 0.887425 2.08405 1.98263 0.31001 0.375691 0.069594 -0.36769 -0.0107137 -0.102513 -0.822197 -0.051262 1.99305 1.14794 1.8809 0.205449 0.580635 -0.193332 0.108603 -0.264414 -1.113 -0.552496 0.937271 2.11778 -0.726641 0.0198431 0.113258 0.0549147 0.652632 0.38584 0.689199 -1.36552 -0.177151 1.16434 0.542935 -0.173546 0.111015 0.399312 -0.784344 0.171975 0.254144 0.0265885 -0.706154 -0.107348 0.928698 -0.638085 -1.90442 -2.27518 -1.49902 -0.138257 0.191241 0.237348 0.226488 0.000469587 0.591706 0.600967 -1.40597 -1.29469 -0.689116 -0.390753 0.182191 0.407074 -0.115864 0.25415 0.11037 0.357129 0.644678 -0.253612 -1.07295 -0.513772 -0.0159584 0.354841 0.303818 0.277321 0.793918 0.400361 0.182334 0.473701 0.771494 -0.361273 -0.383372 -0.693086 -0.290634 0.0394324 0.375999 0.894839 -0.127721 -0.047993 -0.167046 0.649209 -0.220053 -0.461974 -0.403017 -0.800311 -0.547101 -0.243382 -0.0603075 2 2 -14.7078 1.28343 11 11 5 0.971499 0.910684 1.11785 0.5799 0.0611907 0.422888 -0.244864 0.277826 1.32987 0.743499 0.329602 -0.0921064 -0.0319087 -0.0670432 0.343358 0.811589 0.43663 -0.533112 0.0177264 0.366408 0.442739 0.597904 -1.35307 -1.54855 0.394001 0.421268 0.607465 -0.00529606 -1.00701 0.310359 0.712867 0.501315 0.401406 -1.249 -0.122391 0.621162 -0.254094 -0.490083 -1.2713 -2.13725 -0.796787 0.652059 1.13171 0.248475 0.317115 0.906892 -0.200158 -1.29556 -0.996496 -1.94204 -1.84554 -1.15947 0.684157 0.720588 1.40873 1.59251 0.577328 -0.229586 -0.297307 -0.0469708 -0.74418 -1.22148 -1.29388 0.520365 1.29149 1.63639 1.28993 0.10852 0.243977 0.371548 0.786683 1.21036 -0.65538 -0.175816 0.371419 0.429485 0.498104 0.397167 -0.222791 0.0067076 0.76904 0.500768 -0.316861 -0.715081 -0.911155 0.0339916 0.0448537 0.0722832 -0.0393512 -0.182726 -0.135876 0.128557 -0.0532564 -0.165156 -0.152331 -0.361237 -0.229056 0.108056 -0.255341 0.560057 0.00183976 -0.373151 -0.240919 -1.18082 -0.50319 -0.0717298 -0.0783133 -0.545757 -0.637327 -1.22937 0.709787 1.0248 0.175645 -0.254839 -0.00552896 -0.0585563 0.211771 -0.111043 -0.510462 -0.73666 -1.88848 3 11 11 3 2 0 -21.3466 2.91151 11 11 5 1.28611 0.723397 0.47716 -0.544329 -1.21435 -0.407499 1.29381 1.86227 1.25143 -0.175145 -1.59515 1.11685 0.799152 0.514904 -0.17106 -0.446761 0.234915 0.997854 0.808534 0.21248 0.272887 -0.139209 0.337703 -0.334023 -0.649448 -0.815443 -0.219546 0.524248 0.717579 -0.14975 -0.369299 0.373079 0.768407 -0.499348 -0.996287 -0.577856 0.257922 1.03239 0.807176 0.484935 0.292658 0.392493 0.0100011 -0.0626292 -0.0135005 -0.0669764 0.478792 0.868825 0.401204 -0.271295 -0.919315 -0.389889 -0.118868 -0.80994 -1.58503 0.598643 -0.719682 -1.30379 -1.31628 -1.97732 -3.25583 -1.83432 0.406598 0.438056 0.0418724 -0.273463 0.851964 -1.01099 -1.84035 -0.540331 0.725713 0.595711 1.12777 1.12023 1.2792 0.464429 0.0438209 0.543063 0.210522 -0.0856918 -0.619608 -1.16957 -0.458223 0.560282 0.584789 0.69789 0.16154 -0.334634 0.273202 0.78736 1.36809 0.125205 -1.26859 -0.515475 0.328741 0.405739 0.226843 -0.193368 -0.223307 0.132417 0.498209 1.02846 0.716434 -1.13328 -0.727194 -0.0905665 0.0963 -0.0844201 -0.208256 -0.270748 0.0814137 0.40691 0.885442 0.75291 -0.658512 -1.24503 -0.798685 -0.295191 -0.156598 -0.16788 0.154176 2 1 -16.1253 1.64289 11 11 5 -0.132267 -1.01674 -0.218747 -0.0766051 -1.00014 -0.360383 -0.0166496 -0.863747 -0.562568 -0.0195081 -1.15155 0.537577 0.176942 -0.0769858 -0.617322 -0.609284 0.474418 -0.150631 -1.07558 -0.638904 0.167753 -0.979254 1.3218 -0.254329 -1.50083 -1.54113 -0.315476 -0.333696 0.224393 0.318168 0.323381 0.159492 -0.242642 0.576979 -0.479254 -0.657831 -0.373155 -0.955826 -0.849622 -0.160293 0.392164 0.0490924 0.326134 0.878432 -1.29305 0.280034 0.592918 0.581239 1.18895 1.28397 0.779121 0.0780309 0.380109 -0.448242 1.09328 0.497713 0.903392 0.116387 -0.454038 -1.67171 -1.05766 -0.063062 -0.421262 0.27426 0.0159702 1.74694 1.15201 1.77246 0.518594 1.09108 2.03264 0.454615 0.832189 0.325157 0.618956 0.391157 0.645907 -0.202387 0.693456 0.836967 0.634176 -0.120648 -0.20229 0.229411 0.122853 0.0364925 -1.04017 -0.0450976 -1.06471 -1.59409 -0.313838 0.201915 -1.01179 -0.926026 -0.292041 -0.174809 -0.303407 -0.126106 0.268185 -0.802742 -1.43121 -0.964868 0.345181 0.448321 -0.244238 -0.122993 -0.276198 -0.499335 0.0515405 0.372199 -0.0868486 -0.870159 -0.524145 1.35635 1.25623 0.530218 0.351572 0.0911678 0.467149 0.742612 1.27027 2 2 -15.3144 2.12835 11 11 5 0.249697 0.0734169 0.0913303 -0.613732 -1.58636 -1.86041 0.354503 1.072 0.191765 0.0218348 -1.47875 1.2748 1.11166 1.30533 0.206665 -0.976159 -0.534684 0.677748 1.2524 0.9519 0.610023 -0.317413 0.775639 0.0231839 0.304886 -0.888115 -0.798562 0.32498 0.420389 0.289409 0.516446 0.265913 1.03293 0.138751 0.0443738 -0.599257 0.164967 1.25344 1.32802 0.469684 0.303724 0.626698 0.986952 1.63441 -0.163937 -0.303776 0.179886 1.14154 2.17968 0.613902 -0.180319 -0.579568 -0.1761 -0.363184 -0.113262 0.0889496 -0.0339043 -0.344405 -0.596983 -1.23044 -1.50814 -1.37531 -0.589894 -0.614081 -0.803585 -0.609621 0.0446546 -0.973482 -1.39299 -0.282253 1.07318 0.240545 0.295963 -0.29367 0.236531 0.117693 0.437592 -0.121333 -0.503507 -0.786319 -0.709245 -0.781452 -0.462111 0.356768 0.404661 0.416795 0.220705 0.0814983 0.178825 0.148265 0.379407 -0.208492 -0.896146 -0.141594 0.448471 0.535857 0.168777 -0.140816 0.203921 0.185825 0.171069 0.452971 0.401836 -0.578753 -0.837289 0.4332 0.257415 -0.183426 -0.0390642 -0.198992 0.0809514 -0.269575 -0.164094 0.171907 -0.457516 -1.16981 -0.586396 -0.252717 -0.0148214 -0.471759 -0.541505 3 11 11 3 2 0 -20.9609 2.18415 11 11 5 0.59004 -2.06441 -1.30781 1.32461 1.74281 1.13817 0.299743 -0.942077 -1.13806 0.204016 1.77997 1.08282 -0.459559 -0.229267 0.961039 0.612742 0.544872 0.71172 0.248914 -0.314998 0.0834199 0.424098 0.00858689 -0.480961 -0.125842 0.516039 -0.899547 -1.44155 0.114499 0.897976 0.196455 0.0311406 -0.330558 0.216907 0.622586 0.700273 0.656632 0.372926 0.94359 0.563846 0.302926 0.573454 0.705385 0.329487 0.238463 0.428561 0.110745 -0.0874589 -0.0866558 1.17527 -0.935452 -0.875012 -1.04758 -0.811446 -0.796079 -0.605535 -0.663635 -0.870153 -1.43085 -1.76985 -3.16291 -0.285197 0.211643 -0.0752292 -0.759554 -1.24658 -0.897539 0.106975 0.624958 1.26662 2.971 0.28742 2.56088 1.39838 -0.153077 -0.693421 -0.686871 -0.577882 -0.558951 -0.51081 0.276363 0.397249 -0.517817 0.589061 0.807432 -0.37795 -1.0415 -0.0808913 0.230911 -0.548869 -0.0671371 0.471053 0.211411 -0.170689 0.0177175 0.463951 -0.220471 -0.88908 0.0290171 0.0482916 -0.947745 -0.166463 0.158375 -0.527284 -0.599632 -0.512267 0.140339 -0.0466117 -0.567948 0.113141 0.641622 -0.404569 0.265713 0.479072 0.0532725 -0.461551 -0.257984 0.183024 0.161752 -0.0753364 1.18279 2 1 -17.037 1.37999 11 11 5 -0.716743 -0.71943 -0.900216 0.068336 -0.860571 -1.07592 0.96597 -0.116928 -1.00149 -0.24818 0.69214 -0.579804 -0.72396 -0.734653 0.814162 -1.25488 -1.72936 0.790559 0.340088 -1.19061 -1.77559 -0.981252 -1.90101 -0.600139 0.0654361 0.349374 -0.268103 -0.584435 1.22651 0.26434 -0.979576 -0.987143 -1.0829 -0.554728 0.0876696 -0.771969 -0.388115 -0.176493 -1.22903 0.734488 0.0190634 0.0201024 0.711628 2.07201 0.757956 0.973104 0.551411 0.199605 0.451798 0.965541 0.00358881 -0.617831 0.126752 0.232888 1.18285 0.0334149 -0.831001 -1.00609 -0.768445 1.1062 -1.01791 1.09653 0.0944113 -0.310918 -1.08096 1.44146 0.734908 0.318455 1.56428 1.62913 0.908816 -0.36862 0.369294 0.58186 0.615539 0.621851 1.90481 0.805246 0.11001 0.547327 -0.131201 0.770829 -1.0411 0.318771 0.118592 0.152798 -0.407594 1.14037 -0.252 -1.02288 -0.750196 -0.498496 0.484798 -0.540654 0.106281 -0.0757969 -0.359571 -0.699842 0.238992 -0.321279 -0.460591 -0.028971 -0.0493557 -0.211437 -0.794885 -0.303749 -0.120135 0.0950188 0.0573884 0.355972 0.834392 0.682581 0.0053624 0.21127 0.0869735 -0.0158389 0.140061 0.637948 0.867672 0.815502 0.948153 2 2 -18.5871 2.46441 11 11 5 -0.428613 -2.506 -1.58075 1.10422 0.788171 0.209426 0.413916 -0.702494 -1.71238 -0.723991 0.933534 0.7438 -1.03154 -0.879654 1.08995 1.57444 1.14176 0.672062 -0.215984 -0.817813 -0.0606953 0.80278 -0.449607 -0.790823 -0.114569 0.853438 -0.207433 -0.881993 0.340898 0.615635 -0.0541349 -0.156664 -0.0102001 -0.174114 0.434546 0.931989 0.937195 -0.0245435 0.976644 0.817072 1.3139 1.17986 0.948973 0.636845 -0.118646 0.762851 1.00019 0.790828 0.946593 0.999117 -0.56566 -0.580442 -0.294451 0.454121 0.662101 -0.0662826 -0.35889 -0.94694 -1.66703 -0.946923 -2.04968 -0.57627 -0.419685 -0.23878 -0.238034 -0.448319 -0.495357 0.773275 0.717933 -0.0523689 1.11832 -0.597414 0.861079 0.741965 0.129042 -0.163144 -1.4009 -0.763258 0.194028 -0.366767 0.386956 0.455275 -0.0679798 0.304869 0.684814 0.243577 -0.421341 -1.1521 -0.0801034 -0.236904 -0.0540696 0.433348 0.441252 0.151345 -0.0971507 0.613479 0.247283 -0.552769 -0.681701 0.0704145 -0.511071 -0.0476181 0.316014 0.216937 -0.129538 -0.220168 0.60677 -0.0615269 -0.528752 -1.15198 -0.416294 -0.674756 -0.176102 0.591863 0.14077 -0.206997 -0.0175039 0.370993 0.178344 -0.406013 -1.29512 3 11 11 3 2 0 -21.6076 2.90417 11 11 5 -0.0514399 1.17372 0.803279 0.147895 -0.857247 -1.26518 -0.350218 0.474764 0.432928 0.641996 0.865864 0.197577 0.827354 0.623654 0.702416 0.417799 -0.167566 -0.254886 0.109136 0.179267 0.541808 0.663499 0.361256 0.075785 -0.38316 -0.0228246 0.596174 0.219046 -0.254343 -0.732505 -0.193904 0.249065 0.0389952 0.577252 0.0768441 0.0805383 0.116273 0.494175 0.878564 1.02775 0.678603 0.309862 -0.146247 -0.670857 -0.330135 -0.283496 0.0754114 -0.790467 -1.15667 -0.431578 0.648552 0.674511 -0.0270656 -0.954196 -1.00023 -0.930585 -0.229751 0.215417 -0.0725988 -2.30396 -3.08572 -1.46843 -1.27624 -2.0332 -1.26165 0.151676 0.0405145 0.0104225 0.845644 1.11007 1.18792 0.651199 0.42254 -0.298351 -0.943606 -0.588156 1.03618 -0.109517 -0.10626 0.542942 0.722113 0.931429 0.0646303 -1.23581 -1.05141 0.467181 1.12733 0.753177 -0.169268 -0.101721 0.329806 0.58771 0.56934 -0.165941 -1.38609 -0.595222 1.51819 1.15939 0.402059 -0.11167 -0.0594526 -0.129046 0.178638 -0.0918219 -0.748291 -1.35422 -0.123036 1.26679 0.697868 0.311747 0.122665 -0.230215 -0.295159 -0.104342 -0.414417 -1.36448 -1.40001 0.304621 1.38139 0.658044 0.413516 2 1 -17.0726 1.57803 11 11 5 -1.07064 -0.766562 -0.639657 -0.128327 0.306834 -0.729889 -0.415363 0.0102974 0.654984 -0.134153 0.22818 -1.09886 -0.477074 -0.815873 -0.304504 0.222743 -0.408863 -1.82866 -0.788097 0.334579 0.638453 0.399061 -0.548588 -0.288425 -0.488249 0.108706 0.145597 -0.678288 -0.967479 -1.30899 -0.804322 -0.237744 0.0800898 -0.357341 -0.302308 -0.0071033 0.451274 -0.207201 -1.16323 -0.925447 -0.0314919 0.723109 0.187856 -0.0553811 0.522051 -0.0276009 0.356987 0.20674 0.933631 1.14517 1.08955 0.59223 0.569818 0.709783 0.69789 0.72748 -0.504865 -0.0261694 -0.176661 -0.683807 -0.998946 -1.45608 -0.902367 0.322674 1.2592 1.2407 1.3457 0.363326 0.388598 0.558781 1.00757 0.537492 1.59297 1.78729 1.26919 1.6041 0.689601 0.236811 -0.154611 0.22631 0.119278 -0.0829095 -0.427079 -0.157889 0.656484 1.3992 0.366121 -1.28273 -0.0228574 -0.224414 -0.159204 -0.199394 -0.411939 -0.544338 -0.691968 0.333964 -0.512962 -2.08099 -1.62352 0.0120361 0.44379 -0.299366 -0.859899 -0.0639405 0.0952599 0.252126 0.703949 0.0651922 -1.4347 -0.655345 0.076313 -0.112211 -0.0144568 -0.055995 0.421169 0.964976 1.47982 1.24914 0.252809 -0.756106 0.21839 2 2 -16.4095 2.14259 11 11 5 -0.358871 0.132953 0.101118 -0.230651 -1.55432 -1.45294 -0.444673 0.704086 -0.121785 -0.169078 -0.335912 0.492349 0.919414 0.935979 0.641961 -0.05842 -0.719432 -0.0856512 0.744443 0.504086 0.272079 0.376116 0.918652 0.445174 0.366563 0.394497 0.64116 -0.366839 -0.831938 -0.55951 -0.211496 0.194149 0.450168 1.17267 0.939979 0.585545 1.06802 1.12774 1.29267 0.447446 0.233193 0.0178916 0.222874 0.0236844 0.646608 0.180024 0.108808 -0.258189 0.667862 1.09132 1.57704 1.43326 0.650791 -0.426529 -0.497931 -0.424217 -0.655922 -0.703774 -0.573036 -1.76678 -1.87529 -0.751354 -0.568452 -0.873252 -1.22666 -0.900614 0.0994826 -0.439777 -0.121697 0.0489132 0.514549 0.457022 0.29755 -1.15381 -1.70473 -1.03104 -0.449564 0.437399 0.143469 0.278412 0.10759 0.635406 0.6802 -0.7072 -0.793367 -0.661918 -0.305185 -0.205079 0.522259 0.276994 0.016367 0.599312 0.975768 0.663915 -0.999108 -0.53477 0.138196 0.0685007 -0.00755637 0.479142 0.0484123 -0.0553485 0.469216 0.493066 0.0930644 -1.03502 -0.509097 -0.0868898 0.0404571 0.153749 0.463504 0.0560052 -0.0297091 0.453551 0.497397 -0.185596 -1.30796 -0.593033 -0.197153 -0.270906 -0.542194 3 11 11 3 2 0 -21.674 2.34732 11 11 5 -0.390809 0.733673 0.560248 -0.0674399 -0.841932 -1.283 -0.548182 1.01726 0.850552 0.317804 0.314708 0.35843 0.753312 0.552763 0.30887 0.0490783 -0.542296 -0.6267 0.913766 0.90428 0.289143 0.350167 0.195222 0.369827 0.283348 0.0207148 0.0620413 -0.763073 -1.37826 0.327126 -0.502957 -0.139206 0.234588 -0.00680642 0.660843 1.17102 0.412832 -0.374674 -1.14972 -0.402991 0.13734 -0.820751 0.130954 0.190889 -0.0390001 0.280178 1.64395 1.27331 0.421109 -1.09099 -1.07249 -1.60232 -0.332187 0.187773 -0.190251 -0.680228 -0.00966819 0.795487 -0.176221 -2.23836 -3.97504 -1.65704 -1.58616 -1.15188 -0.56627 0.0961386 -0.934519 -0.475968 -0.286432 0.452184 1.73082 2.78389 0.471807 0.108567 0.0558635 0.00398494 0.546024 -0.0707493 0.0644454 0.497654 1.30736 1.40088 -0.309774 -0.592523 0.28403 0.957471 0.795535 0.017903 0.744348 -0.0354262 -0.00291473 0.237592 -0.249295 -0.35273 0.123847 0.291571 0.641491 0.449197 -0.417644 0.378135 -0.416937 -0.83293 -0.972388 -1.00303 -0.622703 -0.253688 0.132626 0.521342 0.101537 -0.391458 0.311768 -0.862531 -1.28303 -0.942939 -0.25929 0.280488 1.00255 1.52875 1.5093 0.576634 0.297491 2 1 -14.9984 1.20142 11 11 5 -0.764456 -0.60968 -0.594685 0.0215085 0.441519 -0.781168 -0.0399517 0.210724 -0.428918 -0.565784 -0.0731007 -0.669239 -0.118622 -0.334027 -0.292041 0.197135 -0.498195 -0.702838 0.179628 -0.654023 -0.461056 -0.00153926 -0.457655 -0.112704 0.120435 0.256665 0.40836 -0.707556 -0.12527 0.913522 -0.163574 -0.212561 -0.111175 0.285265 -0.108491 0.172716 0.240336 0.221915 -1.02742 1.51711 1.38365 1.17658 0.828436 -0.451195 0.404434 -0.476469 -0.126611 -0.395793 0.689396 1.39448 3.08097 1.35983 1.31799 0.774029 0.0872346 -0.331353 -0.901327 -0.0966752 0.476477 -0.596717 -0.561907 -1.44172 -2.03461 0.176907 0.703646 0.854072 1.03787 0.957026 0.193468 0.192391 1.37328 1.0712 0.101038 0.037916 -0.214471 0.730787 1.12745 -0.148406 -0.592451 -0.613917 -0.987207 -1.45912 -1.80405 -1.31781 -0.802403 -0.239392 -0.409993 -0.0665012 -0.376735 0.39139 0.34712 0.418158 0.357403 -0.0529633 -0.439995 -0.670939 -1.0847 -1.00167 -0.500314 -0.0500559 0.725155 0.222107 0.0599092 0.348739 0.283845 0.0615508 0.0084991 -0.600584 -0.341336 -0.0693925 0.338201 0.370764 0.292768 0.343331 0.338145 0.297147 0.419871 -0.137303 -0.580414 0.32489 -0.0741165 2 2 -18.2223 1.45301 11 11 5 -0.245238 0.268503 0.444794 0.118739 -0.146575 -0.894794 -0.590587 -0.363535 -0.296716 0.00782067 -0.376907 0.334015 0.997069 0.97365 0.863319 0.199703 -0.218461 -0.211342 0.332735 0.426504 0.144257 -0.00994106 0.416421 0.398398 0.344011 0.352013 0.87483 -0.322849 -0.733793 0.275687 -0.231672 -0.17538 0.169798 0.743701 0.114006 0.787517 0.222858 0.378822 -0.62128 0.0838514 0.615479 -0.315272 -0.192353 0.29572 0.949572 0.249802 1.04873 1.36974 1.34634 0.346022 0.381786 -0.501269 -0.082584 -0.0861 -0.0215158 0.185529 0.663057 0.935543 0.32964 -2.25429 -4.68155 -1.64461 -1.20453 -0.711832 -0.722466 -0.783125 0.00883317 -0.132795 -0.366913 -0.073235 0.805698 2.07066 -1.2316 -0.660804 -0.186864 -0.164522 -0.142413 -0.0390647 0.474489 0.443196 1.53036 1.66629 -0.484662 -1.02494 -0.0962203 -0.257186 0.0987509 -0.0608405 0.938968 0.660698 0.551281 1.18878 0.620602 -0.141022 0.175724 -0.497215 0.106775 0.116851 -0.120981 0.691612 0.508556 0.311969 0.122852 -0.140129 -0.194811 -1.0248 -0.404178 0.0759915 0.0551243 -0.213153 -0.122202 -0.402612 -0.730845 -1.03966 -0.46706 -0.782244 -0.86839 -0.699563 0.00787713 -0.130787 -0.679551 3 11 11 3 2 0 -28.9406 3.24364 11 11 5 -0.651441 -0.743924 -0.220284 1.01318 0.731674 0.128042 0.44874 -0.626104 -0.789891 -1.04127 0.285536 -0.507532 -0.425841 0.157786 0.852043 0.682788 0.282305 0.868674 0.0910158 -0.379263 -1.04524 0.368981 -0.5049 -0.560902 -0.232658 0.798494 0.558474 -0.687242 1.3015 -0.220817 -0.492637 -0.565475 0.757247 0.450101 -0.12572 -0.140653 0.122765 0.61003 -0.18598 0.791249 -0.38065 -0.360702 -0.220719 0.324209 -0.536245 -0.541169 -0.535281 0.861964 1.25408 0.887519 1.4037 -0.00833687 -1.16935 -1.35499 -1.33838 -1.06879 -1.02195 -0.585393 -1.30849 -2.28077 -3.46906 -1.76841 0.0276504 0.814495 -0.947128 -1.60581 -0.928069 -0.139556 1.50921 2.24048 1.36409 1.07626 2.03364 2.33628 0.875975 -0.685157 -0.305391 0.0618797 -0.0639825 -0.324564 -0.000520935 -0.0359671 -0.210466 0.101743 0.0816313 -0.115006 0.312754 0.902024 0.524147 0.39963 0.50293 0.15499 -0.709746 -1.18732 -1.01108 -0.186172 0.183472 0.360123 0.741229 0.482332 0.265655 0.208962 -0.286398 -1.43541 -2.03644 -1.39666 -0.522737 0.101416 0.489281 0.831465 1.52865 1.28255 1.02496 0.408405 -0.376886 -0.748666 -0.281001 0.230347 0.910931 1.44868 1.78623 2 1 -17.2234 1.36289 11 11 5 0.12561 -0.292511 -1.18521 0.505973 -0.673552 -1.27949 0.436616 -0.225225 -1.06381 -0.595464 0.321054 -0.402181 -0.576798 -0.27917 0.534158 -0.730364 -1.30112 0.289978 -0.0668557 -0.233566 -0.486012 1.01067 -0.318038 -0.466702 0.0197282 0.456154 0.154743 -0.699531 1.18904 -0.375615 -0.493387 0.160788 0.863985 1.32817 -0.0836978 -0.635293 0.154255 0.145588 -1.20293 1.02939 -0.0340266 0.522152 1.58815 1.80818 1.20157 1.84452 1.36831 0.451012 0.0484306 0.0928717 0.228905 0.514608 1.25806 0.315109 0.7421 -0.377676 -1.50627 -0.805248 0.00258671 -0.411031 -1.91532 0.536775 0.0663384 -0.742762 -2.28038 -0.229002 -0.721912 -0.00345614 1.08329 1.1011 1.10862 0.908935 0.242027 0.0652568 -0.479669 0.274706 1.24359 0.520708 -0.305781 -1.24264 -0.87198 -1.17498 -1.44055 -0.908001 -0.467547 -0.645312 -0.556519 -0.0858907 -1.09486 -0.482172 0.329311 1.00531 0.889373 0.246405 0.495561 0.913843 0.519194 -0.312377 -0.536763 -1.13823 -0.0853434 0.671432 0.554908 0.0852063 -0.110053 0.117869 0.505758 0.530944 0.209095 -0.329652 -1.2564 -0.326233 0.249504 0.0882395 0.0433812 0.390937 0.646999 0.595169 0.319822 -0.331685 -0.39582 2 2 -20.788 2.72994 11 11 5 0.0166181 -0.795461 -0.274363 1.03258 0.832569 0.311122 0.486545 -0.138911 -0.152936 -0.533598 0.0372685 -0.156706 -0.593459 0.0283287 0.952545 1.24439 0.438582 0.892555 0.269918 -0.474524 -0.683118 0.340504 -0.169011 -0.299908 0.0374321 0.77153 0.521776 -0.421563 1.27852 0.734966 -0.0457362 -0.614802 0.567354 0.208392 -0.134587 -0.0968375 0.214692 0.429627 -0.165119 0.746648 0.0994123 0.115656 0.603892 0.35452 -0.289075 0.0306292 -0.0534138 1.35246 2.24878 1.60904 1.18351 0.144082 -0.500594 -0.323591 -0.38097 -0.616692 -1.08228 -0.982885 -1.7384 -1.41425 -2.45363 -2.13145 -0.368079 0.572458 -0.956952 -1.34032 -0.912262 -0.816543 0.5618 1.84558 0.953569 0.425674 1.55852 1.98433 -0.0549194 -1.1815 -1.20154 -0.646892 -0.386936 -0.3364 0.593123 0.589549 0.759159 0.886167 0.583826 0.248526 0.0829201 -0.581919 -0.204998 -0.0676865 0.5551 0.47447 0.656196 0.178868 -0.0282203 0.649494 -0.010616 -0.12499 -0.396636 -0.86328 -0.26217 -0.121094 0.247326 -0.275795 -0.984975 -0.786137 -0.0401601 -0.32195 -0.334549 -0.24997 -0.563342 0.168735 0.401082 0.248703 -0.592148 -1.01502 -1.13664 -0.321466 -0.0379067 -0.0446382 -0.0751455 3 11 11 3 2 0 -24.2173 2.69123 11 11 5 1.28901 0.508129 0.501291 -0.668591 -1.42576 -0.336228 0.814368 1.38665 0.544651 -0.581524 -1.08769 0.860637 0.648172 0.907743 -0.308413 -0.856279 0.18717 0.755232 0.655162 0.564013 0.411153 -0.318236 0.182714 -0.0839532 0.262644 -0.143829 -1.60252 -0.291213 0.578773 0.147054 0.651752 0.337409 -0.132412 -0.182889 -0.911928 -0.943594 0.138576 -0.89678 -0.481965 0.0945982 0.769966 1.26638 -0.111088 -0.1358 0.6548 0.46278 -0.636065 -0.974897 -0.541239 -0.789017 0.636241 1.55375 1.62609 0.126167 -0.960464 0.820062 0.199634 -0.961567 -1.80014 -1.79039 -3.64031 -2.84629 -0.922631 -0.0661719 -0.421216 -1.44691 0.39803 -0.30243 -0.713033 -0.190133 0.865691 2.9452 2.11349 0.802556 0.455941 0.443842 -0.202103 -0.0261257 0.333399 0.760496 0.185145 -0.677525 -0.917054 0.885422 1.2455 0.547026 0.267204 0.26577 -0.479109 0.168401 0.80949 0.387506 0.0333172 -0.107025 -0.431715 -0.301732 -0.207723 -0.217894 0.196049 -0.484966 -0.233729 0.464711 0.547375 -0.0542605 -0.359652 -0.834101 -1.35788 -1.32413 -0.969517 -0.236326 -0.052724 -0.261541 0.613174 1.57121 1.59289 0.896726 0.101262 -0.538331 -0.708499 -0.16667 1.21425 2 1 -16.5428 1.18122 11 11 5 -0.559541 -0.786479 -0.277477 0.312001 -0.942506 -0.0188302 -0.0229921 -0.835929 -0.371297 -0.155609 -0.932597 0.00925315 -0.634584 -0.360531 0.0723139 -0.855759 0.318788 -0.364384 -0.774702 -0.0792063 -0.130296 -0.141558 0.348576 -1.06201 -0.952384 1.05527 -0.52896 0.045903 0.553545 0.176728 0.235173 0.454633 0.438458 -0.054126 0.0101762 0.455792 1.67817 0.105348 -1.07662 -0.161305 0.0922729 -0.179099 0.14987 1.23125 -1.55368 0.882505 1.02843 1.72956 2.64829 0.89873 0.732927 -0.0899517 -0.136498 -1.00126 0.242456 -0.465713 0.739161 0.673179 -1.4163 -1.70945 -0.324006 -0.865746 -0.104365 -0.0491505 0.460298 0.890633 1.16728 1.16017 -0.403417 -0.710646 0.315184 1.17116 1.43264 0.475045 -0.020123 0.0414311 0.821524 0.621512 0.0263845 -0.0665488 -0.631173 -1.20809 -1.85286 -1.18677 -0.839378 -0.644397 -0.971754 -0.268092 0.199583 -0.354406 -1.47358 -0.876756 -0.381813 0.251752 0.706858 0.764076 0.124556 0.621605 0.413753 -0.136139 -0.198526 -1.20838 -0.404581 0.437678 0.40958 0.278907 -0.00838198 -0.250557 0.503195 0.706092 0.156954 0.0384641 -0.527665 -0.720056 0.00530691 0.305931 -0.0926896 0.151758 0.638066 1.23464 1.56085 2 2 -17.2569 1.82229 11 11 5 0.760047 0.357083 0.172263 -0.310522 -1.1142 -0.0662534 0.667643 0.704906 0.288319 -0.499753 -0.395355 0.506639 0.82588 0.541265 0.263667 -0.625245 0.134259 0.651479 0.709357 0.738412 0.155261 0.0394358 0.396736 0.22858 -0.157055 0.507407 -0.815625 0.183691 0.285449 0.0965574 0.614964 0.798077 0.680634 -0.0967796 -0.421357 -0.167678 1.11842 -0.373267 -0.674425 -0.190512 0.183424 0.631257 0.157477 1.34899 0.0585078 -0.32363 -0.457268 -0.463044 1.13236 0.256213 1.43959 1.49743 0.711084 0.367166 0.330716 0.363558 0.273046 -0.234304 -1.04126 -2.23756 -4.56373 -2.47112 -0.508346 0.187479 0.0201353 -0.1917 0.0935683 -0.538275 -0.155944 -0.240747 -0.172124 0.978135 0.220675 -0.388529 0.307021 0.602094 0.117173 0.119069 -0.0820913 0.422987 0.0890228 -0.548685 -1.35728 0.872893 1.19486 0.594658 0.48908 0.611967 -0.189548 0.20667 0.461766 -0.125638 0.338945 0.123575 -0.25284 0.687992 0.689273 0.353715 0.360508 -0.00443452 0.119956 0.193176 -0.222493 -0.324367 -0.286297 -0.0781389 -0.34899 -0.274819 0.0187656 -0.388192 0.13217 -0.482602 -0.646713 -0.457537 -0.302032 -0.421865 -0.539533 -0.713075 -0.766703 -1.28899 -1.78607 3 0 -1070906045 0 3 0 0 0 3 0 0 0 3 8 1 0 3 131072 0 0 3 0 0 0 3 131072 0 0 3 0 -1070320703 0 3 11 11 3 2 0 -6.64767 1.5911 11 11 5 -0.0680626 -0.0680765 -0.267017 -0.0178396 0.0874763 0.143199 0.268077 0.593398 0.744545 0.578207 0.432695 -0.0992686 0.0939604 -0.0252553 0.187491 0.282072 0.431854 0.536085 0.645154 0.696601 0.548918 0.533638 -0.173257 -0.0797074 0.108599 0.0611647 0.162998 0.288344 0.386141 0.58565 0.536439 0.442158 0.293012 -0.275021 -0.237267 -0.15058 -0.19843 -0.031017 0.0696602 0.13247 0.275606 0.365683 0.194404 -0.0787438 -0.331321 -0.44371 -0.454065 -0.510069 -0.654908 -0.384517 -0.206427 -0.193916 -0.323482 -0.574144 -0.693934 -0.208871 -0.367402 -0.461312 -0.615735 -0.819638 -1.08115 -1.20336 -0.833068 -0.572025 -0.53222 -0.470693 0.13973 -0.0969011 -0.169987 -0.11065 -0.0992257 0.123646 0.119326 0.220516 0.219604 0.0757171 -0.0771516 0.365111 0.127257 0.0317098 0.0139158 0.116431 0.152178 0.194373 0.181584 0.205276 0.159457 -0.0585572 0.510643 0.277837 0.122215 0.104194 0.150317 0.282045 0.115874 0.0221985 0.0724862 0.0100153 -0.0934007 0.53488 0.315006 0.193876 -0.0121815 0.00950385 0.0463286 0.0323262 -0.109093 -0.0822233 -0.108652 -0.155018 0.104029 0.195524 0.0680367 -0.0831697 -0.160202 -0.248354 -0.258921 -0.135159 -0.101495 -0.208672 -0.244321 2 1 -6.48051 0.670239 11 11 5 -0.337472 -0.107728 -0.162998 -0.576143 -0.64355 -0.519114 -0.351111 -0.252477 -0.307827 -0.295853 -0.153185 -0.0953801 0.0120724 -0.110968 -0.419392 -0.417139 -0.232741 -0.230925 -0.0486205 -0.129516 -0.0321285 0.0213812 0.361149 0.317378 0.336382 -0.17376 -0.544394 -0.39578 -0.145291 -0.178147 -0.188505 0.0147131 0.304394 0.366588 0.795448 0.876929 0.813718 -0.447589 -0.46697 -0.251233 0.031773 0.18226 0.420757 0.704314 0.184004 0.427031 0.948843 1.57192 1.2058 0.371282 0.248527 0.186001 0.287396 0.334608 0.197158 -0.489192 0.0519 -0.0660647 -0.341477 -0.122316 0.649768 -0.089665 -0.380803 -0.397125 -0.068402 0.341345 -0.775926 -0.197936 -0.169986 -0.465635 -0.270353 -0.219986 0.407311 0.228265 0.414607 0.404221 0.241462 -0.142653 -0.126261 -0.0141665 0.377015 0.246096 -0.118988 -0.333077 -0.111022 -0.0354703 -0.0198727 0.0399 -0.385123 0.135683 0.07003 -0.070951 0.12332 -0.237081 -0.146133 -0.195677 -0.0739237 0.308274 0.160353 -0.230873 -0.00784995 0.31068 0.0862271 -0.166174 -0.261802 0.0401056 -0.0065202 -0.207446 -0.0994478 0.138238 -0.199286 -0.268005 -0.054322 -0.161497 -0.0990246 0.236559 -0.0692763 -0.0519197 -0.302456 0.0501315 -0.11622 2 2 -9.20286 2.00718 11 11 5 -0.375844 -0.407362 -0.397797 -0.466523 -0.135521 -0.0051787 -0.106294 0.100255 0.422437 0.327058 0.425773 -0.350246 -0.300485 0.134895 0.239154 0.311058 0.235042 0.184023 0.891507 0.81934 0.44973 0.901005 -0.264886 -0.174675 0.174655 0.24528 0.501617 0.357379 0.302132 0.662323 0.554933 0.778771 0.887925 -0.433063 -0.203835 -0.272988 0.371107 0.680089 0.968133 0.545691 0.543711 0.631297 0.754661 0.695907 -0.675827 -0.503688 -0.490697 -0.25443 -0.16162 0.38699 0.467186 0.380638 0.0925566 0.228673 -0.0648619 -0.317941 -0.540592 -0.422075 -0.687052 -0.913066 -1.02756 -1.04962 -0.740214 -0.46326 -0.193631 -0.188603 -0.485089 -0.256404 -0.298972 -0.463687 -0.476166 -0.341595 -0.296543 -0.184218 0.0894766 0.025023 -0.131746 -0.00478068 0.0283113 -0.344886 -0.318145 -0.222501 -0.102572 -0.137328 -0.126293 -0.107524 0.0656361 -0.0984156 0.212473 0.0914323 -0.146944 0.0530694 0.12028 0.00183846 -0.0268477 0.0348378 0.243715 -0.0948621 -0.098682 -0.0025585 -0.0339853 0.107636 -0.184718 -0.00304037 -0.307442 0.0965931 -0.112582 -0.238114 -0.0137423 0.201191 0.192133 -0.0223388 0.0536039 0.157006 0.0490773 -0.125831 -0.176367 -0.030507 -0.02447 0.139336 0.0137465 3 11 11 3 2 0 -5.67525 1.78855 11 11 5 -0.168434 0.254874 0.436693 0.445234 0.376051 0.334103 0.141252 0.141036 -0.0766049 0.182812 0.303367 0.365798 0.764501 0.79053 0.716597 0.562835 0.465128 0.270645 0.0818471 0.05489 0.250176 0.178222 0.195779 0.542688 0.641959 0.546119 0.519702 0.245178 0.0555164 -0.164131 0.0572378 0.00752271 -0.0459086 -0.0944515 0.338583 0.399599 0.286483 0.169334 -0.0547977 -0.309696 -0.231512 -0.15648 -0.19109 -0.254033 -0.274742 -0.0640727 -0.00765997 -0.0629988 -0.261741 -0.561239 -0.635608 -0.401297 -0.393507 -0.175922 -0.249348 -0.462793 -0.443296 -0.441907 -0.642664 -0.905276 -0.884403 -0.445089 -0.184299 -0.0581251 -0.0520502 -0.2014 -0.636541 -0.493868 -0.353055 -0.157956 0.0512432 -0.0714688 -0.0259551 -0.15639 -0.068634 -0.170263 -0.216214 -0.413802 -0.140379 0.196937 0.333555 0.382788 0.161227 0.100616 -0.00467331 -0.0951346 -0.0917916 -0.00478469 -0.0868929 0.0113861 0.144665 0.247188 0.245882 0.155352 0.00756008 -0.156708 -0.142178 -0.173458 0.0386591 0.0965127 -0.112696 0.0498165 -0.0156131 0.00725915 0.0226206 0.0261499 -0.0802069 -0.0767624 0.0422639 0.012981 0.00455658 -0.0233807 -0.0234628 -0.0471575 -0.0439394 -0.00146677 0.157846 0.0219465 -0.130618 0.0129909 0.117729 2 1 -4.08779 0.34498 11 11 5 -0.492396 -0.527696 -0.631786 -0.777836 -0.658682 -0.42153 -0.131107 0.136343 -0.0373545 -0.282049 -0.430609 -0.824406 -0.598249 -0.64259 -0.625191 -0.363309 0.119504 0.154084 0.2589 -0.00672749 -0.236354 -0.0736454 -0.546409 -0.304089 -0.346714 -0.188234 0.0674705 0.285225 0.562285 0.292101 0.0362153 -0.0139824 0.117552 -0.471344 -0.270644 -0.115202 -0.0560433 0.408429 0.631959 0.674283 0.281905 0.0530602 0.131697 0.000708684 -0.353349 0.0736992 0.488886 0.496701 0.694646 0.399946 0.087342 -0.0225946 -0.074327 0.053102 -0.13174 1.00641 0.717056 0.379852 0.0767993 -0.00563126 -0.135376 0.125503 -0.0215113 0.13548 -0.094724 -0.271134 -0.218083 -0.512663 -0.101422 0.34007 0.372716 0.0165502 0.118377 -0.172896 0.0452689 -0.159263 -0.0164757 -0.054125 -0.127774 -0.120964 -0.172856 -0.117325 0.0796101 0.249807 0.151427 0.0303192 0.171678 0.186804 -0.0885936 -0.0639444 0.0013692 0.209631 -0.0171068 0.255451 0.237448 0.176754 0.173118 0.231471 -0.0118246 -0.00700197 0.0699342 0.158908 0.00769278 -0.224695 -0.0448515 0.247589 0.121378 0.196635 0.129923 -0.134125 -0.191625 0.16676 -0.247233 -0.147451 0.0952267 0.459857 0.226337 -0.0934223 0.116347 0.0616022 0.177083 2 2 -7.31329 1.78233 11 11 5 -1.15007 -0.765463 -0.632605 -0.121208 0.00146014 0.286247 0.309214 0.315714 0.0265948 0.100637 0.273437 0.0702997 0.485938 0.23519 0.2607 0.398385 0.436582 0.476169 0.456441 0.153916 0.393388 0.295831 0.468397 0.495937 0.694403 0.53092 0.672374 0.370855 0.312734 0.0988814 0.305567 0.192857 0.254211 0.128352 0.340044 0.389265 0.375528 0.632682 0.573173 0.0119865 0.181449 0.283152 0.091655 0.345082 0.292397 0.359145 0.668234 0.721831 0.444274 -0.150982 -0.330856 -0.0273994 -0.241151 -0.0148364 0.0037741 -0.0708511 -0.249054 -0.255509 -0.613409 -0.817637 -0.672461 -0.335065 -0.139971 -0.0942828 0.0744535 -0.142187 -0.837257 -0.800819 -0.65354 -0.533893 -0.455555 -0.255166 0.0121673 0.0351004 0.111618 -0.270994 0.0468957 -0.622526 -0.340178 -0.177021 0.136662 0.0354032 0.151664 0.173249 0.00780435 -0.0532506 -0.00281447 -0.0392522 -0.528782 -0.363677 -0.173629 -0.0398372 0.0329173 -0.0187592 -0.0391227 -0.179779 -0.298207 -0.387762 -0.415188 -0.0255393 0.115744 -0.0362752 -0.153956 -0.059543 -0.0505704 0.127933 -0.330315 -0.209244 -0.141796 -0.165924 -0.0815004 -0.091978 -0.207391 0.0370637 0.0027666 0.00146363 0.13997 -0.135635 -0.152449 -0.272853 -0.0312045 3 11 11 3 2 0 -6.30812 1.70953 11 11 5 -0.218582 -0.231392 -0.0689065 -0.128468 -0.0753833 0.23063 0.521959 0.707574 0.648516 0.353512 0.170775 0.296762 0.389189 0.141505 0.148049 0.0753466 0.435779 0.665854 0.670361 0.293739 -0.0181381 -0.144737 0.805699 0.450693 0.295475 0.130667 0.0970743 0.391068 0.658134 0.234569 -0.124074 -0.328169 -0.283739 0.816242 0.461224 0.275891 -0.0320335 0.0520612 0.329687 0.268166 -0.0235813 -0.331245 -0.364363 0.0131736 0.665511 0.358804 -0.0457978 -0.212417 -0.175079 0.123571 -0.383732 -0.371767 -0.312175 -0.216581 0.0175999 0.314318 -0.26495 -0.486614 -0.359599 -0.273687 -0.364475 -0.359117 -0.228363 -0.127434 -0.15339 0.0918604 -0.488098 -0.784041 -0.693465 -0.584148 -0.251149 -0.197896 -0.0814782 -0.223417 -0.0428241 -0.157237 0.0474374 -0.951216 -0.712545 -0.486006 -0.116239 0.124867 -0.0693259 -0.0908445 -0.000843537 -0.0556129 0.000795119 0.190104 -0.559675 -0.405894 0.0879438 0.123508 -0.0374278 -0.180528 -0.145138 0.0346489 -0.0512725 0.0374507 0.232306 0.315406 0.234597 0.209298 0.104796 -0.110784 -0.0855138 -0.0372331 -0.163802 -0.197305 0.0147427 0.189367 0.0209225 -0.00555511 0.00834759 0.0496664 0.045955 -0.00175731 -0.170986 -0.135746 -0.0853035 0.0113809 0.383668 2 1 -4.67509 0.516139 11 11 5 -1.11617 -0.702843 -0.444217 -0.381207 -0.12655 -0.511574 -0.609072 -0.423725 -0.0577552 0.0899634 0.474523 -0.735629 -0.430429 -0.199052 -0.0965774 -0.331507 -0.618316 -0.388868 -0.00926129 0.382768 0.48904 0.242066 -0.476414 -0.134658 0.0758455 -0.102984 -0.530189 -0.237695 -0.0325318 0.297614 0.496516 0.172142 -0.0265127 -0.273879 0.0337443 0.133565 -0.0259148 -0.243279 -0.0300411 0.277495 0.427656 0.0808198 -0.132615 -0.232708 0.18962 0.684688 0.333201 0.113952 -0.0625792 0.28636 0.200589 -0.085955 -0.155754 0.0428057 -0.0495532 0.936013 0.868627 0.270796 -0.0585746 -0.218529 -0.23202 -0.229124 -0.0862747 -0.0558858 -0.0609185 -0.164358 0.376734 0.0886901 4.34087e-05 -0.431218 -0.200115 -0.131058 -0.100106 0.0519147 0.0882047 0.0829632 -0.178297 -0.246553 -0.238823 -0.254962 0.0943209 0.11854 -0.172871 0.165785 0.469622 0.278922 0.0220419 -0.0196973 -0.10134 0.0887261 0.0943612 -0.14057 -0.256197 0.239975 0.421552 0.233336 0.111019 0.153518 0.103001 0.402834 0.29953 0.0291667 -0.497159 -0.0504328 0.229537 -0.0445929 -0.259565 0.52868 0.1213 -0.224731 0.617062 0.383259 0.162199 0.24395 0.151377 0.108047 -0.245292 0.334614 0.246521 0.0483811 0.125148 2 2 -5.96379 0.82812 11 11 5 -1.16072 -0.912219 -0.739843 -0.369702 -0.544119 -0.309544 0.00921237 0.346015 0.34524 0.302337 0.249016 -0.739847 -0.0914358 -0.429191 0.077311 -0.247055 0.0689457 0.198624 0.642577 0.351795 0.505074 0.0137236 0.148979 0.174008 0.423177 0.133918 0.0244908 0.248321 0.380976 0.275757 0.448534 0.0386477 -0.0634578 0.679004 0.365532 0.514431 -0.105911 -0.0483137 0.377584 0.687105 0.511213 0.126949 -0.115705 -0.365011 0.570002 0.656701 0.5075 0.0710908 0.105826 0.463109 0.364836 0.0742456 -0.0662457 -0.361309 -0.249595 0.843437 0.533289 0.210419 0.0651172 0.0160739 -0.019527 0.000407417 0.20366 -0.114622 -0.226516 -0.153869 0.442103 -0.0961219 -0.489448 -0.647314 0.00642959 -0.140668 -0.0169527 -0.15849 -0.16118 -0.0573357 0.187181 -0.607284 -0.633308 -0.566509 -0.178672 0.170538 0.114535 0.135614 0.0155408 0.0819129 -0.000680964 -0.163468 -0.757676 -0.544308 0.0629859 0.218561 -0.011144 -0.0513764 0.156071 0.269556 -0.0607035 -0.153778 -0.300122 0.174761 0.0553832 -0.0051897 0.0955262 -0.0590005 0.0721208 0.00033123 -0.153013 -0.2132 -0.187361 -0.166496 0.189564 -0.0765077 -0.207124 -0.222357 -0.111669 -0.121615 0.0782304 -0.0908015 -0.363261 -0.435582 -0.237687 3 11 11 3 2 0 -3.98149 1.11072 11 11 5 -0.248962 -0.0185305 0.186758 0.20265 0.260493 0.273768 0.333738 0.316329 0.159376 0.00671272 -0.260475 -0.063928 0.142134 0.289496 0.318693 0.36918 0.350837 0.330232 0.140113 0.00129231 -0.257239 -0.352644 0.163054 0.248271 0.481295 0.459689 0.316931 0.104478 0.106111 -0.162975 -0.215647 -0.219822 -0.174133 0.236207 0.30317 0.525129 0.425324 0.192896 -0.142483 -0.187974 -0.27361 -0.155878 -0.0841202 -0.000244119 0.315258 0.390838 0.516817 0.285397 -0.0928246 -0.397494 -0.365805 -0.321367 -0.16598 0.0711463 0.175014 0.334554 0.289691 0.213776 0.030717 -0.473234 -0.575842 -0.272296 -0.221694 -0.113561 0.0959082 0.0457176 0.150797 0.108871 -0.0515755 -0.396503 -0.449884 -0.241678 0.0425861 0.0384222 0.05825 0.190657 0.064824 -0.0343144 -0.107966 -0.326262 -0.578668 -0.342069 -0.133158 -0.0329552 0.000764073 0.193253 0.146959 0.00826458 -0.181839 -0.248703 -0.583061 -0.342728 -0.089716 -0.0515544 -0.016019 0.0660286 0.0889789 0.176576 -0.00608541 -0.289876 -0.451649 -0.367849 -0.225431 -0.120751 0.0791583 0.156381 0.042635 0.165447 0.224746 -0.0252078 -0.309843 -0.232948 -0.259704 -0.224372 -0.255222 -0.0656565 -0.0702109 0.159811 0.453065 0.241649 0.0648901 2 1 -3.74168 0.230008 11 11 5 -0.470063 -0.624364 -0.293007 -0.292595 -0.383202 -0.666551 -0.536222 -0.113119 0.283112 0.363009 0.0525647 -0.351075 -0.217091 -0.251397 -0.470716 -0.287484 -0.210033 0.0492664 0.356694 0.508347 0.124678 -0.139127 -0.166824 -0.366439 -0.355234 -0.339179 0.120346 0.236958 0.3731 0.460767 0.0602207 -0.0440317 -0.181499 -0.483664 -0.0323049 -0.21569 0.192558 0.512353 0.626292 0.363415 0.00575628 -0.223793 0.197308 -0.118876 -0.404444 -0.207767 0.299805 0.481023 0.586002 0.158203 0.0545706 -0.31843 0.0996081 0.448049 -0.17394 -0.451647 0.150165 0.518235 0.137351 -0.0660745 -0.151542 0.0414987 0.035735 0.091061 0.289517 -0.0267846 0.447485 0.293244 0.115321 -0.177404 -0.456962 0.0605108 -0.102615 -0.353676 0.0838875 0.275076 0.0604766 0.26816 -0.211188 -0.366705 -0.344634 -0.0626371 0.0674695 -0.0445113 0.0201601 0.0970597 0.152392 -0.234085 -0.512005 -0.467077 -0.552451 0.34022 0.175536 0.419573 0.173352 0.274718 -0.0882811 -0.226282 -0.0582268 -0.770058 -0.403744 0.411104 0.0538456 0.39225 0.280239 0.395846 -0.0775774 -0.214985 -0.172035 -0.226543 0.314855 0.449385 0.442302 0.537418 0.53911 0.177534 -0.0174891 -0.0203886 -0.227422 0.325598 0.101501 2 2 -4.02963 0.607667 11 11 5 -0.59087 -0.524612 -0.108957 -0.245861 -0.230906 -0.0788542 -0.0300997 0.310881 0.392998 0.540926 -0.0178445 -0.462574 -0.255643 -0.223499 -0.0410265 0.0167346 0.167152 0.192122 0.200167 0.187757 -0.0800339 -0.127877 -0.415361 -0.19147 0.0410526 0.203939 0.226296 0.21549 0.211467 0.207271 -0.173933 -0.345659 -0.226432 -0.312855 -0.19319 -0.0913322 0.412007 0.486454 0.338791 0.304991 -0.0183562 -0.0608269 -0.392433 -0.186847 0.0868575 0.267614 0.47924 0.67814 0.651568 0.08103 -0.136389 -0.143877 -0.405679 -0.0300491 -0.074762 0.388675 0.60946 0.649649 0.711754 -0.135715 -0.312935 -0.194259 -0.371692 -0.243896 -0.030489 -0.0392024 0.601734 0.591473 0.661953 0.0196373 -0.163435 0.0746569 0.217901 -0.113953 -0.185611 0.0228981 0.207884 0.311186 0.49389 0.33504 0.0488044 -0.298994 -0.266238 -0.238759 -0.262806 -0.368972 -0.299019 -0.139373 0.0981633 0.197587 -0.0479479 -0.0681107 -0.0570485 -0.158833 -0.405491 -0.111775 -0.307027 -0.123864 -0.00101728 0.0928438 -0.145343 -0.182576 0.219153 0.0838325 0.113634 0.120487 -0.542439 -0.062819 -0.139681 -0.157906 0.292571 -0.127482 -0.0332882 -0.0413739 -0.0960393 -0.0396568 -0.23341 -0.324395 0.181351 -0.534435 -0.221733 3 11 11 3 2 0 -4.46046 1.01781 11 11 5 -0.0504004 0.0836433 0.234818 0.404495 0.401287 0.34982 0.249788 -0.073939 -0.304348 -0.356034 -0.218423 0.0830538 0.130624 0.358109 0.450627 0.352994 0.302371 0.104633 -0.360621 -0.427248 -0.408056 -0.24474 0.19726 0.26733 0.35705 0.324126 0.322679 0.133069 -0.186232 -0.499433 -0.293318 -0.198144 -0.0658216 0.281532 0.418655 0.425011 0.433929 0.173162 -0.0844667 -0.269689 -0.386425 -0.0219508 0.0204817 -0.00916282 0.331526 0.244646 0.274573 0.275794 -0.0487165 -0.384149 -0.364079 -0.164476 -0.0159713 0.103659 -0.0823014 0.226719 0.318543 0.148834 -0.133934 -0.382496 -0.481575 -0.160369 0.187974 0.263767 0.0288557 -0.093193 0.171472 0.192209 -0.0981695 -0.2659 -0.525122 -0.281061 0.0900191 0.377396 0.269543 0.0560793 -0.0349271 0.167821 -0.0303182 -0.331828 -0.366384 -0.469941 -0.00647531 0.32422 0.365388 0.270338 0.126394 -0.0945032 -0.0449123 -0.285142 -0.445011 -0.519241 -0.296574 0.244439 0.470913 0.453753 0.250743 0.0302346 -0.285727 -0.211303 -0.410438 -0.600793 -0.531093 -0.0711551 0.234037 0.460543 0.342765 0.132571 0.00320441 -0.158637 -0.220086 -0.655073 -0.692514 -0.433016 -0.0504406 0.279967 0.417514 0.252866 0.161859 -0.109708 -0.116585 2 1 -1.82871 0.058605 11 11 5 -0.453488 -0.480701 -0.332823 -0.492081 -0.630756 -0.433391 0.203978 0.319027 -0.0948393 -0.477712 -0.17605 -0.286661 -0.460333 -0.444149 -0.423589 -0.139768 -0.0460539 0.267215 0.568749 -0.423961 -0.224996 -0.66816 -0.0535771 -0.425863 -0.364944 -0.277004 0.248109 0.347413 0.357322 -0.0299582 -0.276006 0.00536049 -0.0916601 -0.205963 -0.194085 -0.236817 -0.156017 0.372638 0.493016 -0.0769955 -0.18393 -0.317285 0.365009 -0.229991 0.0741804 -0.0791254 -0.0311723 0.211899 0.40296 0.103478 -0.144264 -0.0563214 -0.0147837 0.17832 -0.334857 0.0450035 0.0747547 0.28222 0.17414 0.0903067 0.113595 0.282453 0.36286 -0.107658 -0.0200877 -0.0793195 0.400741 0.29187 0.21186 0.0223061 -0.0469543 0.456606 0.558976 0.297353 -0.181769 0.0545275 0.061501 0.0459951 0.123625 0.250468 -0.0216517 0.0799417 0.444228 0.485683 0.13497 0.0522461 -0.147454 0.471812 -0.0353985 0.155237 0.0572305 -0.234897 0.249242 0.308154 0.365494 -0.0721291 0.0372785 0.198742 0.474742 -0.258088 -0.00381072 -0.326078 -0.164259 0.0838886 0.173723 -0.0342195 0.309541 0.426255 -0.323938 0.502193 -0.511623 -0.430311 -0.0951383 0.248708 0.133642 0.0189541 -0.212077 0.257336 -0.284532 -0.523573 0.196028 2 2 -3.92903 0.639288 11 11 5 -0.462442 -0.319881 -0.0496958 0.0392238 0.0983517 0.363029 0.540913 0.274406 -0.0740229 -0.197491 -0.20658 -0.517252 -0.188482 0.141637 0.00171217 0.255839 0.683344 0.428055 0.0904011 -0.14549 -0.280598 -0.170752 0.144623 0.0095831 -0.146207 -0.142796 0.361121 0.238365 0.0868279 -0.199835 -0.32005 -0.272754 -0.0403305 -0.11421 0.36507 0.498794 0.387164 0.438789 0.259779 -0.0345379 -0.191385 -0.151122 -0.0703523 -0.146698 0.0823432 0.14041 0.101498 0.52255 0.405674 -0.200657 -0.399323 -0.233476 -0.451457 0.0484511 -0.151666 -0.00852594 0.462258 0.486377 0.230794 0.0214287 -0.372122 -0.501881 -0.218993 0.00622952 -0.0875259 -0.493494 0.171909 0.460708 0.401068 -0.0152562 -0.372648 -0.389983 -0.262674 0.0662446 0.138885 0.105989 -0.0927861 0.196027 0.450594 0.250333 -0.0871809 -0.60269 -0.45824 -0.240264 -0.140456 -0.00363065 0.218553 -0.0390651 0.40293 0.458513 0.219951 -0.112637 -0.582386 -0.355723 -0.0521116 0.0555529 0.0145362 0.0924933 -0.217667 0.615353 0.458261 -0.166837 -0.463519 -0.474886 -0.365103 -0.0708874 0.326837 0.200676 0.136109 -0.0378518 0.425945 0.179616 -0.0687863 -0.566707 -0.557827 -0.216074 0.157164 0.184061 0.141873 -0.197994 0.0287187 3 11 11 3 2 0 -5.97217 0.896359 11 11 5 -0.424949 -0.0120229 0.106993 -0.0703473 -0.373555 -0.641613 -0.402658 0.283934 1.15964 0.438458 -0.374948 -0.190893 0.2312 0.225012 -0.0259864 -0.106102 -0.326953 -0.356202 0.14305 0.476987 0.14125 -0.532582 0.065496 0.24285 0.259321 0.228489 0.278747 -0.12522 -0.309934 -0.125934 0.154896 -0.164084 -0.506915 0.355929 0.425312 0.456413 0.442273 0.423792 -0.0741085 -0.541894 -0.349975 -0.255415 -0.0834695 -0.255292 0.401692 0.563743 0.500042 0.451403 0.438516 -0.239054 -0.373794 -0.350998 -0.123816 -0.180188 -0.272115 0.567255 0.52573 0.430849 0.275656 0.207763 -0.540142 -0.171784 -0.195423 -0.00369125 -0.177495 -0.136622 0.524586 0.452855 0.283763 0.0222824 -0.121008 -0.633705 -0.047124 0.0100563 0.194933 0.0723992 0.0318501 0.513357 0.230516 0.00640034 -0.198698 -0.423669 -0.48041 -0.00123481 0.154212 0.166817 0.0960986 0.116184 0.22789 0.0635769 -0.208422 -0.487116 -0.614491 -0.164684 0.298541 0.304494 0.128325 0.000958896 -0.0164165 -0.0848857 -0.243538 -0.446802 -0.693354 -0.464471 0.323147 0.4907 0.280268 0.0511368 -0.062753 0.00575835 -0.395263 -0.694761 -0.611923 -0.655778 -0.0577169 0.705387 0.729872 0.277465 -0.0920705 -0.271272 -0.09878 2 1 -2.16271 0.338515 11 11 5 -0.333523 -0.226573 -0.266139 -0.386946 -0.855833 -0.108138 0.707212 0.538899 0.477682 0.66974 0.758743 -0.383522 -0.139978 -0.156817 -0.354626 -0.600607 0.127448 0.306043 0.382066 -0.0790994 0.00818635 0.95081 -0.242974 -0.205276 -0.183129 -0.351171 -0.45684 -0.0264427 0.541606 0.326082 0.23201 -0.343702 0.206282 -0.0614499 -0.178054 -0.25197 -0.232055 -0.382891 0.350094 0.208607 0.0964411 0.133723 -0.423388 0.140051 -0.161534 -0.215589 -0.126238 -0.315266 -0.194388 -0.00987797 0.151463 -0.328214 -0.157283 0.177563 0.131846 -0.118665 -0.175593 -0.0247474 -0.00593444 0.0471154 -0.0355298 0.0146642 -0.414406 -0.224492 0.0325792 0.0526843 -0.18022 0.00852969 0.143835 0.133907 -0.0731955 0.0912219 -0.15425 -0.419208 -0.185783 -0.240674 0.236974 0.11126 0.168832 0.143096 0.123886 0.0663358 0.141985 -0.304841 -0.247811 0.0125868 0.0164991 0.0359517 0.189244 0.330494 0.218483 0.0476058 0.0614857 0.0757008 -0.349827 -0.239352 0.119345 0.198023 0.252381 0.307946 0.218463 0.14471 -0.104666 -0.0646541 0.106049 -0.265814 -0.0972857 0.298284 0.157139 0.141169 0.247557 0.0350763 0.0316067 -0.13332 -0.129814 -0.122183 -0.0732799 0.0828972 0.225001 0.241444 0.190436 2 2 -4.99856 0.628006 11 11 5 -0.491258 0.098432 0.160246 0.662376 -0.0401202 -0.264982 -0.499089 -0.46877 0.681119 0.684111 0.333878 -0.5336 -0.133201 -0.0437361 -0.123803 -0.0293019 -0.354591 -0.287044 -0.116935 0.192771 0.403093 0.133169 -0.197247 -0.0443863 -0.0426788 -0.0110554 -0.0482704 -0.401939 0.0199455 0.122316 0.211519 0.0973145 -0.212588 0.143039 -0.0497899 0.0331524 0.375404 0.374637 -0.036044 -0.310296 -0.00391895 0.213982 0.29347 0.154075 0.00475678 0.238289 -0.00283797 0.369416 0.61354 0.0790557 -0.152005 -0.157645 0.101993 0.124942 -0.246688 0.201839 0.332775 -0.112795 0.400433 0.609796 -0.322932 -0.0737585 -0.104015 0.180031 -0.322563 -0.147273 0.209891 0.305025 0.377066 0.222414 0.198365 -0.497729 -0.0562718 -0.43654 0.181996 0.0967731 -0.262064 0.52262 0.354852 0.473525 0.361859 -0.0533698 -0.824179 -0.0316643 -0.184255 0.0802006 -0.483496 -0.358755 0.318063 0.553483 0.274882 -0.0486758 -0.489652 -0.701226 -0.215065 0.144557 -0.092317 -0.173915 -0.176419 0.457411 0.786061 0.263755 -0.431157 -0.820121 -0.435426 -0.0116813 -0.0661777 -0.156115 -0.197763 -0.184851 0.555483 0.12696 0.0569931 -1.08498 -1.04514 -0.011827 0.0756259 0.169084 0.0493844 0.00567599 0.0510768 3 11 11 3 2 0 -6.3177 1.1347 11 11 5 -0.155096 -0.131571 -0.438253 -0.559826 -0.499798 -0.121448 0.499955 -0.27881 -0.341389 0.138778 0.0881275 -0.0808751 -0.162732 -0.197274 -0.250966 -0.352597 -0.254028 0.766354 0.235092 0.162836 0.285605 0.356528 0.0235409 -0.102922 -0.0633675 -0.153168 -0.23039 -0.326747 0.814662 0.596116 0.548393 0.386292 0.515147 -0.0117508 0.0639253 0.00108104 -0.0920722 -0.3567 -0.510477 0.778569 0.798077 0.720434 0.484214 0.120748 -0.0159611 0.0596759 0.0903081 -0.223656 -0.392262 -0.537977 0.736477 0.889617 0.513655 0.0385193 -0.30629 0.0771283 0.117675 0.128807 -0.259547 -0.36207 -0.537165 0.385545 0.667398 0.174519 -0.284329 -0.452335 0.192498 0.210167 0.158284 -0.200105 -0.412176 -0.674152 0.018233 0.0566924 -0.199759 -0.203168 -0.403367 0.330131 0.312305 0.135089 -0.0674295 -0.423713 -0.678515 -0.0809053 -0.256372 -0.145377 -0.194414 -0.357895 0.345907 0.334282 0.229163 0.0788535 -0.243144 -0.488049 -0.109667 0.0248313 -0.037116 -0.136783 -0.412679 0.393955 0.444019 0.326932 0.152215 -0.23796 -0.428256 -0.277123 -0.0893477 -0.0767333 -0.0840383 -0.279418 0.373512 0.348066 0.309885 0.101883 -0.177424 -0.374349 -0.196815 0.0496264 0.00883781 0.00369936 -0.212767 2 1 -4.56861 0.424653 11 11 5 0.0895173 -0.253668 -0.415364 -0.452555 -0.150592 -0.0893727 -0.204918 -0.208623 0.211997 -0.537287 -0.484373 0.0734357 -0.105503 -0.325371 -0.317546 -0.443187 0.111716 -0.40529 0.0203654 -0.13281 -0.611672 -0.406503 0.0696584 -0.0778616 -0.274946 -0.277373 -0.528306 0.356715 0.0515999 -0.211489 -0.504785 -0.678961 -0.327288 0.219105 -0.165421 -0.222124 -0.154375 -0.354638 0.475 0.79111 -0.335873 -0.436712 0.0158888 0.570174 -0.0619552 0.0898738 -0.0848548 -0.149682 -0.260431 0.553532 0.88406 0.12218 0.0385675 0.33672 0.813208 0.0301367 0.112837 -0.0324467 -0.187308 -0.212734 0.494456 1.04953 0.0641638 0.0650384 0.467963 0.62569 0.0471941 -0.0429464 -0.139732 -0.359718 -0.272268 0.408587 0.705136 0.412425 0.16756 0.258036 0.420038 -0.121512 -0.0863034 -0.244653 -0.258898 0.0337983 0.144991 0.665881 0.0944507 0.075827 0.621154 0.34527 -0.0343754 -0.0714334 -0.0821089 -0.342824 -0.0933931 0.0653368 0.515267 0.018608 0.138335 0.168522 -0.229766 0.125993 0.0344978 -0.0746632 -0.170845 0.0156558 -0.021819 0.248914 0.0377661 -0.0890266 -0.350243 -0.206499 -0.0109056 0.0415937 -0.0998564 -0.095537 0.0415395 -0.000728033 -0.0461193 -0.233295 0.0223965 0.0242184 0.160436 2 2 -8.46925 0.731216 11 11 5 0.23951 0.38654 -0.162695 -0.404496 -0.679249 -1.00753 0.0939401 -0.548987 -0.238695 -0.0155933 -0.00459311 0.170495 0.0865063 -0.0970009 -0.268059 -0.649048 -1.11113 0.00562264 -0.326463 -0.0978297 0.165537 0.100091 0.103491 0.280198 -0.022588 -0.482251 -0.289823 -1.24779 -0.142328 0.0583062 0.403327 0.356857 0.486369 -0.0626853 0.163026 0.0787993 0.138206 -0.296978 -1.33551 -0.272527 0.0815955 0.517999 0.420946 0.558619 -0.116998 0.224436 0.580586 0.348993 -0.484424 -1.11577 0.178897 0.725222 0.689592 0.271032 0.335381 0.0438632 0.201306 0.376484 0.230096 -0.291347 -0.685899 -0.14174 0.81837 0.394949 0.161745 0.046071 0.22758 0.365537 0.389707 0.0592426 -0.303805 -0.373345 -0.412943 0.184 0.159078 -0.0352506 0.23581 -0.126737 0.491349 0.244073 0.034524 -0.300401 -0.743462 -0.315586 -0.401212 0.474685 0.189281 0.451827 -0.187385 0.0694442 -0.0612443 -0.0458867 -0.0518798 -0.29423 -0.0970963 0.133238 0.202243 0.085093 -0.157008 -0.189582 0.257529 0.652391 0.510805 -0.0492245 -0.262898 -0.44699 0.154708 0.256908 -0.221843 -0.129985 0.218841 0.351213 0.656774 0.630199 0.133071 -0.416229 -0.347823 0.130495 0.159516 0.14409 -0.204173 3 11 11 3 2 0 -6.07279 0.924665 11 11 5 0.472464 0.186704 -0.36523 -0.626888 -0.630787 -0.218002 0.249115 0.134116 0.154787 0.274965 0.335594 0.378477 0.102025 -0.310028 -0.635913 -0.601163 -0.24033 0.171272 0.126053 -0.411993 0.0713247 0.102369 0.479776 0.0720205 -0.264983 -0.522254 -0.451208 -0.217357 0.143368 -0.0996915 -0.491742 -0.185535 0.0140365 0.314074 0.00299768 -0.257278 -0.369673 -0.355224 -0.0499236 0.254878 -0.218492 -0.599426 -0.0809635 0.226275 0.252191 0.0021384 -0.306979 -0.357923 -0.137615 0.171086 0.692176 -0.444754 -0.363604 -0.182381 0.172704 0.250867 -0.0648079 -0.341207 -0.349112 -0.12915 0.162013 0.571942 -0.399533 -0.373648 -0.0813726 0.189281 0.205921 -0.0500823 -0.235796 -0.161518 -0.111786 0.0528067 0.452438 -0.32114 -0.456071 0.126933 0.223269 0.293092 0.00251199 -0.129265 -0.117388 -0.194196 -0.00875378 0.344651 0.0200901 -0.0567321 0.263357 0.212455 0.349778 0.107989 -0.115839 -0.0919388 -0.334153 -0.0416245 0.617278 0.373522 0.335328 0.338096 0.385848 0.375959 0.113519 -0.0686817 -0.1345 -0.312874 -0.0429744 0.73571 0.637983 0.45548 0.293381 0.100754 0.389644 0.171197 -0.0860602 -0.240239 -0.615697 -0.149068 0.620252 0.484564 0.419803 0.125384 -0.547554 2 1 -5.22999 0.305196 11 11 5 0.443947 0.334852 -0.0492099 -0.50668 -0.629938 0.213768 0.456749 0.22108 -0.49238 -0.45069 0.0294708 0.315398 0.0866726 -0.125686 -0.122013 -0.330135 0.172089 -0.0126811 -0.303113 -0.478711 -0.0605817 0.0336486 0.401333 0.0168557 0.131918 0.214309 -0.068324 0.20239 0.270632 -0.0729061 -0.135861 -0.345839 -0.324468 0.394608 0.101604 0.0628326 0.396508 0.178569 0.531045 0.160137 0.230724 0.0113373 0.323982 -0.634471 0.0761694 0.0205227 0.227005 0.253227 0.436617 0.658336 0.391211 0.206035 0.188077 0.000629174 -0.470254 0.130317 -0.0187728 -0.0505497 -0.0203199 0.109292 0.440907 0.130307 0.511648 -0.203247 0.20798 -0.653913 -0.0361112 -0.180152 -0.279277 -0.312659 -0.442701 0.22019 -0.0940829 0.419675 0.280513 -0.261893 -0.50218 -0.002308 -0.32673 -0.510392 -0.498819 -0.581325 0.129437 -0.0591267 0.383642 0.498832 -0.229119 -0.770777 -0.207944 -0.161443 -0.505481 -0.521208 -0.562492 0.120007 0.229455 0.648001 0.0589075 -0.643687 -0.515399 -0.24396 -0.119057 -0.405503 -0.524005 -0.390984 0.459298 0.525137 0.324486 -0.366795 -0.272517 0.404827 -0.225722 -0.21115 -0.047619 -0.485176 -0.186816 1.0664 0.779967 0.229857 0.180138 0.306544 1.05529 2 2 -8.55005 0.822901 11 11 5 0.948376 0.553799 0.12855 -0.135082 -0.443757 -0.1958 0.421779 0.497134 0.383652 0.278021 0.30463 0.417732 0.263836 0.147895 -0.355928 -0.659595 -0.0992732 0.189481 0.27457 -0.0407482 -0.268647 -0.0263924 0.686883 0.255031 0.182858 -0.449559 -0.736432 -0.0380137 -0.0520432 0.279652 -0.426522 -0.116041 0.141662 0.45005 0.36315 0.280015 -0.140125 -0.739609 -0.250835 0.166558 0.220508 -0.440762 -0.253222 0.216391 0.500845 0.583985 0.0856143 -0.555538 -0.750897 -0.3031 0.801683 -0.0901342 -0.359565 -0.197987 0.20179 0.37107 0.195665 -0.0678888 -0.332929 -0.878384 -0.302602 0.795028 -0.186266 -0.408926 -0.33734 0.0566549 0.191289 0.322848 0.102449 -0.319109 -0.504936 -0.391807 0.451292 -0.194253 -0.746697 -0.411144 -0.109358 0.189117 0.110289 0.111775 -0.319756 -0.742995 -0.754189 -0.114448 -0.333719 -0.249993 -0.0807576 0.162326 0.242548 0.423703 -0.10443 -0.0404572 -0.564259 -0.897977 -0.0976385 -0.072554 -0.0028215 0.137374 0.0121316 -0.0806948 0.227947 0.0430239 0.200513 -0.345437 -0.791481 0.263057 0.312784 0.541774 0.634831 0.589024 -0.103561 0.592241 0.486252 0.232913 -0.535417 -0.777347 0.142624 0.330882 0.458289 0.477524 0.691824 3 11 11 3 2 0 -6.40885 1.75511 11 11 5 0.209919 -0.0606325 -0.0499257 -0.0454556 -0.00243534 0.200401 0.211011 0.0015542 -0.367293 -0.441722 -0.225206 0.156184 -0.145566 -0.205441 -0.18764 -0.144185 0.072498 -0.0443466 -0.264851 -0.498859 -0.373261 -0.174126 0.285638 -0.0959666 -0.254511 -0.322454 -0.174983 -0.106929 -0.292874 -0.447353 -0.468343 -0.17375 0.23316 0.445181 0.110402 -0.148803 -0.408374 -0.301217 -0.341579 -0.440243 -0.500866 -0.121411 0.335628 0.345704 0.663777 0.293797 -0.160789 -0.438066 -0.392402 -0.376661 -0.177855 -0.0995159 0.121157 0.194528 0.503984 0.67532 0.367437 -0.00400516 -0.420474 -0.479965 -0.260194 0.254733 0.165809 0.218124 0.299351 0.598499 0.555825 0.191588 -0.138205 -0.571658 -0.602173 -0.139707 0.372975 0.478534 0.261629 0.268979 0.536111 0.616758 0.172809 -0.330112 -0.763171 -0.509118 -0.161745 0.236899 0.323462 -0.115859 0.183486 0.55613 0.655385 0.10158 -0.348686 -0.521495 -0.348737 -0.071854 0.318418 0.212669 -0.453707 -0.266274 0.620188 0.63889 0.0473424 -0.311375 -0.277778 -0.16957 0.070034 0.483661 0.0875534 -0.272642 -0.0742483 0.521901 0.528472 0.0956706 -0.165449 -0.146083 0.0268071 0.283625 0.710772 0.00731974 -0.490194 -0.00190426 0.762973 2 1 -5.8313 0.515062 11 11 5 0.576597 0.346762 -0.2365 -0.397261 -0.455526 -0.438492 -0.537506 -0.691975 -0.556692 0.127442 0.0424834 0.481554 0.341397 0.0317122 -0.150154 -0.298713 -0.576079 -0.616391 -0.65003 0.278287 0.58865 0.592169 0.472734 0.348911 0.290957 0.0372609 -0.365268 -0.634915 -0.728402 -0.260287 0.278751 0.542822 0.577907 0.344234 0.471758 0.370697 0.150582 -0.301545 -0.790724 -0.383243 0.281528 0.47842 0.381541 0.361461 0.398994 0.412233 0.489377 0.0558845 -0.463411 -0.59032 0.258486 0.573539 0.654297 0.310386 0.504797 0.0840087 -0.00232785 0.196721 -0.310961 -0.670994 -0.0993901 0.414067 0.38978 0.431167 0.459881 0.134387 0.34425 0.0722267 -0.224692 -0.310064 -0.449909 -0.0201247 0.108511 -0.0800252 -0.283991 -0.127454 0.0219656 0.233043 0.120236 -0.0412803 -0.16446 -0.18413 -0.18512 -0.054382 -0.270204 -0.506763 0.058684 -0.394177 0.136984 -0.0496228 -0.181049 0.122251 0.0134782 -0.122991 -0.189604 -0.3703 -0.205976 -0.321132 -0.423842 0.19562 0.0982519 -0.131442 0.154418 0.0669576 0.0950933 0.28706 -0.180835 -0.180018 -0.212478 -0.389212 0.0181985 0.0912831 -0.198994 0.0859396 0.0172463 0.41292 0.438996 -0.179797 -0.0133798 0.384069 -0.28775 2 2 -6.58191 0.730813 11 11 5 0.473452 0.515645 0.178335 0.229847 -0.00605533 0.368644 0.438352 0.24915 0.145484 -0.17599 -0.238279 0.291859 0.178826 0.233165 0.365808 0.294236 0.470443 0.205207 0.117531 -0.231478 -0.384944 -0.110333 -0.0504941 -0.14866 -0.221396 0.0687938 0.0595273 0.169551 -0.217958 -0.0563408 -0.571824 -0.42818 -0.126866 -0.0761312 0.1594 -0.208548 -0.0899421 0.340332 -0.190557 -0.563452 -0.396028 -0.183642 -0.375877 -0.118511 0.200895 0.201073 0.139933 -0.123262 0.214581 -0.214316 -0.427726 -0.394661 -0.184537 -0.0582639 0.0928554 0.803949 0.734298 0.571722 0.096611 -0.242921 -0.39136 -0.0967674 -0.117261 -0.0740297 0.112447 0.153991 1.0144 0.422645 0.382295 -0.0663875 -0.582362 0.144009 0.635483 0.539362 0.295443 0.210801 0.13751 0.534349 0.54297 0.0495348 -0.625777 -0.733612 -0.252215 0.272236 0.485164 0.181312 0.137966 0.0577273 0.428584 0.214959 -0.122455 -0.418003 -0.689812 -0.512578 0.0677786 0.0117123 -0.63796 -0.0832119 0.11931 0.545016 0.366946 0.0138538 -0.54884 -1.01446 -0.503606 0.0547248 -0.029869 -0.206923 -0.0943227 0.0683837 0.397441 0.074671 0.2144 -0.339742 -0.88768 -0.610962 0.0793101 0.00707953 -0.237611 -0.844213 -0.0441295 3 196608 2 0 3 131072 0 0 3 -2147483648 -1072102457 0 3 0 0 0 3 91 66 0 3 11 11 3 2 0 -10.7414 3.39288 11 11 5 -0.294632 -0.232533 -0.267664 -0.269784 -0.337113 -0.254672 0.01864 -0.0239946 0.0625252 0.0329051 0.0436681 -0.159742 -0.0047348 0.0412757 0.127532 0.0931465 0.138458 0.29449 0.433093 0.455774 0.48789 0.348376 0.0287469 0.241679 0.143335 0.171917 0.186398 0.22269 0.373466 0.544013 0.549632 0.459033 0.318705 0.201794 0.226207 0.170625 0.0970359 0.114162 0.17456 0.411781 0.479273 0.419107 0.180719 -0.0572152 0.105455 0.204914 0.171316 0.122831 0.179001 0.210918 0.320093 0.152965 -0.121549 -0.432006 -0.592845 -0.274054 0.0216688 0.163556 0.25443 0.368143 -0.0230207 -0.774006 -0.99792 -0.96335 -0.737086 -0.487843 -0.701843 0.0620785 0.482934 0.409153 0.375249 -0.574276 -1.2665 -1.27213 -0.859017 -0.436035 0.0611562 -0.578513 -0.00278052 0.423873 0.424163 0.336367 -0.0941912 -0.44566 -0.354328 0.0799092 0.347484 0.521787 -0.238576 0.0702502 0.317778 0.291794 0.306431 0.391635 0.16005 0.145668 0.195453 -0.0229548 -0.123479 -0.319429 0.121138 0.225528 0.142145 0.273134 0.459418 0.223523 -0.048241 -0.403397 -0.604729 -0.655483 -0.333489 0.0859808 0.156507 0.121153 0.366152 0.43872 0.140449 -0.170875 -0.487259 -0.706077 -0.719978 2 1 -10.2521 2.37853 11 11 5 0.0513167 -0.00733247 -0.23603 -0.262197 -0.237555 -0.200555 -0.235707 -0.229036 -0.234807 -0.141443 -0.152798 -0.224401 -0.195133 -0.320271 -0.227362 -0.154193 -0.191161 -0.117602 -0.256987 -0.347872 -0.254479 -0.0289615 -0.147908 -0.145901 -0.153161 -0.145767 -0.0947232 -0.369695 -0.273135 -0.252423 -0.251141 -0.11006 0.216208 -0.164132 -0.159241 0.0413628 -0.0597711 -0.0901976 -0.368515 -0.400143 -0.0482303 0.322247 0.602209 0.692896 -0.0428642 -0.0591762 -0.0574081 -0.17927 -0.482308 -0.398336 0.5515 1.16269 1.21941 0.737212 0.512353 0.544907 0.02999 -0.375283 -0.570529 -0.520468 0.588294 1.22689 1.20034 0.757104 0.294069 0.240746 0.486672 0.0111572 -0.21462 -0.464328 -0.270134 0.0773735 -0.486266 -0.666733 -0.545136 -0.298675 -0.343656 -0.0222812 -0.12724 -0.0234378 -0.295819 -0.357383 -0.0383908 -0.0272704 -0.144171 -0.350958 -0.191159 -0.254489 -0.116314 -0.049366 -0.135762 -0.0680668 -0.251406 -0.0488531 -0.0332346 -0.193997 -0.0448864 -0.00733075 0.375193 0.426281 0.0814924 0.110513 0.198634 0.0943676 -0.0876613 -0.0160331 -0.0614929 -0.19559 0.066708 0.496804 0.860838 0.294825 0.450706 0.433079 0.140806 -0.0653359 0.100714 -0.034018 -0.0807412 0.321841 0.768163 2 2 -8.87856 1.28112 11 11 5 -0.584416 -0.447249 -0.285279 -0.128492 -0.593612 -0.760791 -0.424856 -0.42196 -0.0225109 0.0185148 -0.195169 -0.461163 -0.157943 -0.232053 -0.205737 -0.3038 -0.038858 -0.0221842 0.314606 0.0619531 0.055206 0.213766 -0.106742 0.122335 -0.0776566 -0.0168938 -0.18653 0.142169 0.0570345 0.314099 0.0627338 0.239036 0.300361 0.328303 0.0451526 0.0181922 -0.133078 -0.000132392 0.0996974 0.225159 0.47809 0.478249 0.505318 0.242202 0.429183 -0.058132 0.124224 0.0705545 0.404682 0.646705 0.76802 0.552276 0.380552 0.0930018 -0.129835 0.0597827 -0.41669 -0.309103 -0.0307552 0.531539 0.424478 0.00216162 -0.316234 -0.429532 -0.443466 -0.582822 -0.461977 -0.289689 0.0482713 0.285255 0.486298 -0.654229 -1.07788 -1.22661 -0.903342 -0.631003 -0.26282 -0.781112 -0.184414 0.184533 0.347964 -0.00193737 -0.459078 -0.446882 -0.355958 0.122793 0.16439 0.454111 -0.36379 -0.0085495 0.339725 0.280995 0.218312 0.453238 0.549879 0.650437 0.423106 0.420301 0.486472 -0.35311 -0.136097 0.0629343 0.0239003 0.203186 0.449629 0.563972 0.392781 0.142157 0.203596 0.236302 -0.413857 -0.213544 -0.0783685 -0.102096 -0.0465857 0.327279 0.31607 0.0497845 0.101908 -0.112525 0.290207 3 11 11 3 2 0 -12.5025 3.35498 11 11 5 -0.373057 -0.43981 -0.400887 -0.374224 -0.343492 -0.31833 -0.34638 -0.306328 -0.306468 -0.13366 0.00439277 -0.110472 -0.146574 -0.0228285 0.0500409 0.0108777 0.0166457 0.0412466 -0.00718547 0.0655694 0.123954 0.203935 0.146828 0.186507 0.301135 0.407275 0.386297 0.416242 0.41898 0.399217 0.264056 0.262095 0.263208 0.19072 0.254367 0.263471 0.281791 0.325431 0.281509 0.341601 0.379669 0.241017 0.176257 0.0773334 0.101796 0.0932208 0.117429 0.32782 0.397253 0.446811 0.459924 0.286511 0.151138 0.0896157 -0.0226431 0.108394 -0.0353283 0.0823956 0.433755 0.508934 0.418727 0.0486613 -0.225876 -0.393863 -0.430374 -0.306217 0.388187 0.117117 -0.0670508 -0.35639 -0.828107 -1.07083 -1.17442 -0.944433 -0.658407 -0.504023 -0.360969 0.691199 0.150031 -0.424985 -0.871346 -0.928699 -0.774189 -0.614039 -0.145721 0.109276 0.303527 0.192814 0.756274 0.148822 -0.249514 -0.35528 -0.173057 0.00931356 0.234905 0.397031 0.562161 0.586718 0.52773 0.643964 0.243404 0.0789541 0.0868096 0.130936 -0.0274725 -0.127037 -0.0330217 -0.0226274 0.0560353 7.64271e-05 0.697639 0.517299 0.355612 0.159364 -0.113919 -0.37873 -0.547066 -0.596468 -0.536971 -0.498914 -0.571578 2 1 -10.929 2.25586 11 11 5 0.1304 0.132035 0.0908603 0.125351 -0.000753658 -0.0691855 -0.11359 0.0620661 0.0312554 0.146401 0.190061 -0.254189 -0.26785 -0.264223 -0.277686 -0.212951 -0.132715 -0.119219 -0.294092 -0.240113 -0.106181 -0.0137937 -0.296086 -0.233953 -0.283381 -0.254674 -0.282236 -0.237673 -0.169931 -0.193357 -0.314365 -0.160078 0.0885231 -0.171247 -0.042475 -0.19309 -0.17981 -0.191458 -0.192011 -0.213398 -0.198299 -0.00360353 0.00564761 0.216564 -0.120393 0.0320209 -0.070744 -0.113239 -0.131074 -0.246939 -0.0383441 0.148468 0.209909 0.315977 0.364669 -0.23895 -0.25004 -0.148759 0.150397 0.899539 1.29298 1.35031 0.896865 0.384583 0.454017 0.448908 -0.507275 -0.236471 0.305094 1.10487 1.12327 0.813646 -0.0725572 -0.313363 -0.214331 -0.227589 -0.05538 -0.685064 0.0118054 0.221447 -0.265383 -0.664851 -0.851423 -0.598187 -0.175104 -0.107485 -0.0962316 -0.152501 -0.362554 0.0141587 -0.204972 -0.206578 -0.174595 0.118705 0.0184123 -0.260042 -0.258976 -0.155782 -0.300315 -0.241145 -0.0428756 0.11494 -0.111352 -0.267405 -0.149723 -0.121409 0.284083 0.340232 0.332638 0.397849 -0.0993561 0.0884017 0.0885472 -0.0652314 -0.0773401 -0.033941 0.188757 0.638159 0.547232 0.583836 0.38905 2 2 -9.74543 1.65092 11 11 5 -0.315293 -0.425622 -0.576526 -0.50969 -0.389691 -0.138376 -0.352368 -0.315648 -0.348087 -0.30497 -0.375514 -0.0977698 -0.256969 -0.411046 -0.465337 -0.328473 -0.210694 -0.166969 -0.283521 -0.192143 -0.341217 -0.264716 0.0065103 -0.351315 -0.0803152 0.189951 0.390104 0.340678 0.00416694 -0.120002 -0.13774 0.129511 0.0221194 0.134686 0.225196 0.162113 0.0474286 -0.180493 -0.250982 0.0428836 0.212563 0.276402 0.235057 0.113141 0.118306 0.234337 0.0394272 0.265011 0.39445 0.556611 0.547809 0.599717 0.414538 0.234917 0.107852 0.157293 0.387655 0.267261 0.458473 0.494366 0.451586 0.498196 0.377953 -0.00226176 -0.192171 -0.0868885 -0.0451991 0.229211 0.104336 0.141396 0.0515927 -0.162985 -0.163218 -0.521404 -0.595607 -0.556815 -0.373423 0.0947552 0.0381415 -0.386895 -0.759658 -1.02971 -0.978292 -0.799678 -0.503477 -0.480636 -0.280635 -0.171083 0.321698 -0.151831 -0.517329 -0.252019 -0.0735008 0.140149 0.237739 0.196401 0.2677 0.513771 0.690287 0.339425 0.095243 0.0723689 0.378922 0.647699 0.457169 0.153017 0.201355 0.150718 0.635364 0.729966 0.0424314 0.16811 0.249119 0.393548 0.0822602 0.00437767 0.0043503 -0.0345335 -0.0400382 0.162568 0.217317 3 11 11 3 2 0 -11.7705 2.18242 11 11 5 -0.485268 -0.541058 -0.470565 -0.444454 -0.462743 -0.396271 -0.311082 -0.171905 -0.0638938 0.077153 0.128664 -0.224949 -0.131169 -0.17728 -0.137679 -0.135264 -0.10164 -0.0163917 0.0212676 0.0799763 0.159039 0.169505 0.375391 0.398211 0.370426 0.323686 0.255846 0.126479 0.170353 0.31398 0.312494 0.274309 0.221744 0.482949 0.427413 0.447997 0.408633 0.306757 0.198878 0.327024 0.326933 0.295948 0.242202 0.198603 0.281567 0.324074 0.351827 0.362643 0.290407 0.235646 0.260172 0.30092 0.141919 0.200188 0.0903304 0.417401 0.463594 0.425927 0.182836 0.030355 -0.136105 -0.0321945 0.239539 0.313399 0.111482 -0.00937119 0.233532 -0.174477 -0.424532 -0.806931 -0.991565 -1.07351 -0.918649 -0.61397 -0.380282 -0.197955 -0.185348 -0.476761 -0.786936 -0.858923 -0.765808 -0.390057 -0.109726 0.126547 -0.0341679 -0.148081 -0.3125 -0.426359 -0.261161 -0.411646 -0.276391 0.00500279 0.348908 0.72326 0.936122 0.787215 0.36383 -0.0639409 -0.265107 0.2523 -0.00176647 0.0619296 0.218223 0.352761 0.551958 0.632324 0.496498 0.241274 0.0695052 -0.0669542 0.556197 0.0726687 -0.37077 -0.641062 -0.633905 -0.3815 -0.315779 -0.190643 -0.308333 -0.322206 -0.459181 2 1 -9.9544 1.40836 11 11 5 0.0766937 -0.0738809 -0.215851 -0.0198793 0.0321204 -0.0119092 0.104432 -0.0175142 0.120149 0.242781 0.258945 -0.411092 -0.212442 -0.178003 -0.308773 -0.258852 -0.330769 0.00537425 0.000965263 0.172803 0.0790902 -0.14948 -0.45692 -0.143013 -0.0816175 -0.190979 -0.380952 -0.574643 -0.2738 -0.0902468 -0.13284 0.018112 -0.147024 -0.444967 -0.389979 -0.427383 -0.452855 -0.342396 -0.180468 -0.177929 0.14402 -0.00503221 -0.0879619 0.0187499 -0.504731 -0.29044 -0.423197 -0.312163 -0.171864 0.047081 -0.159031 0.0269367 0.28895 0.163576 -0.0553083 -0.27088 0.379808 0.65202 0.801217 0.919961 0.850566 0.728533 0.641525 0.581334 0.125566 -0.0627685 0.804512 1.27325 1.01544 0.423661 0.0508983 -0.248313 -0.185347 0.234965 0.322226 0.24813 0.110811 0.485138 0.435356 -0.301588 -0.561564 -0.777357 -0.508281 -0.271921 -0.26444 -0.190978 -0.0128688 0.0153497 -0.520045 -0.632464 -0.490429 -0.0901826 -0.146925 -0.00755691 -0.187099 -0.142925 0.0708433 0.253837 0.184965 -0.319788 -0.130649 -0.0953034 0.0314101 -0.0283687 0.00390981 -0.130099 -0.480564 -0.169608 0.240673 0.309047 -0.482305 -0.274802 0.0647561 0.175054 0.587796 0.458917 0.424503 0.333275 0.497855 0.351939 0.181779 2 2 -9.73879 1.31135 11 11 5 -0.313044 -0.39516 -0.329639 -0.222151 -0.396149 -0.62628 -0.370028 -0.410177 -0.305352 -0.226196 -0.156392 -0.617326 -0.409341 -0.270846 -0.161854 -0.413977 -0.362279 -0.311243 -0.325824 -0.209599 -0.107582 -0.0409723 0.0131955 0.0552719 -0.103456 -0.329165 -0.0669994 -0.286338 -0.225161 -0.0922748 0.089504 0.232338 0.266246 0.239745 -0.0743491 -0.0429504 -0.0720161 -0.0493826 -0.0880699 0.0566091 0.0469963 0.127388 0.246982 0.238584 -0.105004 0.0877009 0.280535 0.537078 0.484037 0.391481 0.27551 0.271954 0.20382 0.470153 0.440641 0.327264 0.416151 0.546206 0.574863 0.376791 0.134858 0.201831 0.274481 0.307898 0.5528 0.267654 0.431646 0.229917 0.143045 -0.0664162 -0.401553 -0.607415 -0.441821 -0.394952 0.0210308 0.360288 0.0439517 -0.274464 -0.63252 -0.526892 -0.672285 -0.564924 -0.887382 -0.752939 -0.865357 -0.45917 -0.181847 -0.129472 -0.554232 -0.494156 -0.348706 -0.253885 -0.189751 0.10018 0.373551 0.310002 0.231192 0.0165589 -0.00846061 0.164833 0.073241 0.215903 0.373939 0.256976 0.558682 0.64284 0.73861 0.571793 0.610452 0.252786 0.455947 0.35595 0.214505 -0.0278473 -0.117384 -0.0192241 0.238048 0.375675 0.250158 0.530337 0.211026 3 11 11 3 2 0 -10.0315 1.50662 11 11 5 -0.347634 -0.384282 -0.413448 -0.206067 -0.201231 -0.13175 -0.153655 -0.252475 -0.0936001 -0.13199 0.138138 0.302995 0.100949 0.0535481 0.21698 0.241219 0.154231 0.110638 0.00502687 -0.0590531 -0.0303569 0.0784357 0.647354 0.495911 0.323151 0.438336 0.315551 0.362682 0.240945 0.183439 0.130188 0.0837988 0.0659064 0.613707 0.41512 0.325786 0.423209 0.227378 0.120877 0.0789424 0.0221782 0.0714339 0.0690283 0.0557416 0.277401 0.0766113 0.0526519 0.339591 0.461876 0.307343 0.104285 -0.0790318 -0.0721365 -0.0726623 0.0417388 -0.379954 -0.551471 -0.767875 -0.590663 -0.136606 0.393481 0.33309 0.135664 -0.0272652 0.012553 0.055151 -0.709497 -0.591676 -0.395798 -0.441175 -0.689361 -0.931871 -0.833755 -0.290375 -0.065258 -0.0450699 0.164627 -0.342684 0.0956322 0.374504 0.64926 0.57871 -0.0444656 -0.459854 -0.617232 -0.311564 -0.0688095 0.143977 0.0413489 0.649883 0.984585 1.03314 1.02602 0.707106 0.260611 -0.190845 -0.242635 -0.115126 0.108767 -0.463791 -0.0356924 0.114941 0.240666 0.16804 0.207287 0.0950519 -0.0812198 -0.0876319 -0.0477919 0.141088 -0.872396 -0.574992 -0.279169 -0.44891 -0.553385 -0.684702 -0.589054 -0.413489 -0.232856 0.0561285 0.289685 2 1 -9.03946 0.912665 11 11 5 -0.546358 -0.506426 -0.37858 -0.0751915 -0.0375077 0.0809685 0.231663 0.156864 0.0455587 0.0180196 -0.134887 -0.66082 -0.732313 -0.604578 -0.253746 -0.130612 -0.0791463 -0.199645 -0.107759 -0.05638 -0.0695317 -0.107429 -0.582171 -0.572713 -0.616294 -0.341584 -0.118402 -0.162085 -0.09194 -0.0105371 -0.054453 -0.0980223 -0.0627495 -0.348665 -0.262743 -0.292379 -0.353672 -0.0477743 0.0966224 0.083795 -0.0223669 0.0337101 -0.137348 -0.0860938 0.572329 0.68483 0.449279 0.503045 0.233472 0.0410738 0.100493 0.0767743 -0.12672 0.0827377 -0.133252 1.25573 0.956631 0.454831 0.582724 1.23912 1.08276 0.44497 -0.0249297 -0.267353 -0.098075 -0.100956 0.382176 -0.253452 -0.389671 -0.266458 -0.577364 -0.375185 0.145777 0.227551 -0.124771 -0.311143 -0.221526 -0.750992 -0.629082 -0.46658 -0.332437 -0.00316966 0.3767 0.325464 -0.171996 -0.276722 -0.140742 -0.334437 -0.462738 -0.169718 -0.510253 -0.671081 -0.663221 -0.114786 0.277784 0.383412 0.0614242 -0.0542011 -0.184128 0.145074 0.280208 -0.00845236 0.365165 0.325634 0.304584 0.412157 0.384815 0.212813 0.140959 0.190679 0.46688 0.660372 0.260822 0.261233 0.501689 0.667584 0.404346 0.133007 0.282852 0.19686 -0.127528 2 2 -9.26912 0.994808 11 11 5 -0.593699 -0.588335 -0.618941 -0.426606 -0.387302 -0.117907 -0.290856 -0.166125 -0.14793 -0.356963 -0.148358 -0.0503594 -0.250262 -0.497783 -0.299193 -0.123545 -0.209308 0.088723 0.09649 -0.161672 -0.220958 -0.331962 -0.103541 -0.00738204 -0.20737 0.195874 0.156313 0.443759 0.476163 0.096852 -0.0433948 0.0279138 -0.135033 0.276492 0.094711 -0.0234448 0.205306 -0.114169 0.0102218 -0.0821934 0.0987586 0.0991503 0.066645 0.0485836 0.549134 0.431926 0.372348 0.445614 0.511751 0.500768 0.25041 -0.0593434 -0.0313479 -0.0269134 0.234785 0.0680635 -0.0598894 -0.371484 -0.249375 0.47512 0.764291 0.815525 0.279817 0.0204592 -0.279048 -0.119256 -0.50498 -0.593784 -0.662874 -0.720598 -0.839833 -0.55454 -0.246283 0.261942 0.349703 0.286634 0.0383833 -0.322391 -0.428764 -0.396261 -0.183794 -0.319241 -0.451474 -0.7751 -0.51282 -0.286852 -0.00740814 -0.182864 0.343626 0.421684 0.703529 0.809176 0.605923 0.454239 0.236665 -0.057438 -0.210465 -0.223421 -0.370266 0.518924 0.431073 0.346415 0.405076 0.718797 0.790835 0.787212 0.337931 0.000765637 0.0347367 -0.24035 0.0110655 0.05879 0.200131 0.426177 0.255621 -0.0618007 0.0886382 0.296502 -0.477328 -0.352654 -0.537322 3 11 11 3 2 0 -6.43533 0.874931 11 11 5 0.527121 0.480587 0.386541 0.16999 0.0827977 0.0376546 -0.0960295 -0.130342 -0.25928 -0.234995 -0.292586 0.545562 0.373913 0.141155 0.0383011 -0.0174872 0.0325747 0.041615 -0.00273848 -0.0786335 -0.131505 -0.131132 0.307154 0.264297 0.0649841 -0.128428 -0.170764 -0.14209 -0.0213464 0.0484046 0.081351 -0.00862351 -0.111341 -0.21694 -0.0446901 0.207327 0.199431 -0.0501809 -0.0451395 -0.0831993 -0.00909385 0.111639 0.0837876 0.0746955 -0.390108 -0.438634 -0.399062 -0.226066 0.302536 0.0887046 -0.000763978 0.110637 0.165499 0.139687 0.0623208 0.190585 0.00343765 -0.400284 -0.997488 -0.964291 -0.0475461 0.0921935 0.117515 0.1205 0.183933 0.0627526 1.04275 0.907228 0.550462 0.0829915 -0.404135 -0.401337 0.00410745 -0.0297812 -0.0194691 0.168486 0.164223 0.553499 0.560745 0.593568 0.540039 0.311904 0.0138973 -0.0567227 -0.0213888 0.00476295 0.0906927 0.128493 -0.275022 -0.47408 -0.461935 -0.166227 0.0881019 0.0382403 -0.0481111 0.0216243 -0.0251034 -0.039921 0.0481775 -0.554818 -0.949777 -0.872988 -0.538861 -0.125124 0.0780623 0.121719 0.226209 0.183492 0.175875 0.16264 -0.638209 -0.764435 -0.686023 -0.486061 -0.183145 0.0839888 0.209161 0.340532 0.345347 0.340932 0.370324 2 1 -6.10336 0.730338 11 11 5 -0.723082 -0.324291 -0.391625 -0.377614 -0.241693 -0.142004 0.0295041 0.210483 0.259187 -0.0545821 -0.194919 -0.389934 -0.170935 -0.156323 -0.204774 -0.286296 -0.0976243 0.0136817 0.0225423 0.038723 0.0523022 0.0433076 0.0181395 0.151906 0.013715 0.0251453 -0.054494 0.00435553 -0.00357588 0.0395556 0.00307828 0.0399473 -0.00235911 0.297476 0.53915 0.63396 0.237983 -0.221601 -0.110766 0.116416 -0.0215877 -0.0291771 0.0315437 0.166884 0.276789 0.364862 0.66506 0.857841 0.236473 -0.428848 -0.257931 -0.0681167 0.00815705 -0.163544 -0.0437669 -0.640248 -0.320696 0.0377896 -0.220339 -0.283367 0.162961 -0.393742 -0.359676 -0.153234 -0.0470732 0.004984 -1.20517 -0.799063 -0.131992 0.610053 0.278916 -0.539613 -0.150734 -0.291102 -0.252393 -0.0791757 -0.153751 0.041205 -0.0571746 -0.331264 -0.293048 -0.162021 -0.0347325 -0.0698195 -0.071035 -0.142715 -0.294571 -0.174192 0.449824 0.379254 0.311007 -0.0299333 -0.16557 -0.121528 -0.0850453 -0.0645533 -0.220003 -0.298142 -0.182894 1.03902 0.838161 0.604006 0.555388 0.073173 0.18436 0.252539 0.0864167 -0.023424 -0.157817 -0.0790231 0.679078 0.967238 0.711742 0.437065 0.321497 0.236957 0.134242 -0.0636212 -0.139497 -0.154295 -0.196306 2 2 -7.71297 0.855562 11 11 5 -0.0674837 0.180787 0.207378 0.242707 0.0296251 -0.166284 -0.125248 -0.26468 -0.232107 -0.309554 -0.322036 0.355511 0.391281 0.257566 0.311938 0.183431 0.117233 0.283791 0.0987271 -0.0980611 -0.0204031 -0.226027 0.467277 0.147786 0.0887117 0.165161 0.103197 -0.103468 0.0155029 -0.0604238 -0.0793892 -0.304059 -0.0725162 -0.280111 0.237896 0.813781 0.409465 0.0302224 -0.118764 0.00944994 0.0465196 0.0920572 0.213628 0.0898715 -0.376417 -0.233083 0.251722 0.289513 0.783836 0.161813 -0.212649 0.0959393 -0.0304277 0.162325 -0.0981711 -0.49875 -0.768569 -0.806704 -0.942627 -0.698881 0.212153 0.356012 0.00193862 -0.0827975 0.238255 -0.430877 0.614632 0.243144 0.188191 -0.298185 -0.596671 -0.662408 -0.00660402 -0.0907402 0.017077 -0.0253479 -0.251573 0.905419 1.14606 1.07049 0.775501 0.409798 -0.268129 -0.507102 -0.374055 0.0168753 -0.0414971 0.0980809 0.68194 0.573072 0.350154 0.486267 0.562081 0.188626 -0.217499 -0.149338 -0.42508 -0.424757 -0.0909248 0.564513 0.12883 -0.0923719 -0.0600709 0.0693007 -0.0969572 -0.334204 -0.277607 -0.434022 -0.380458 -0.171675 -0.0452977 -0.37804 -0.225973 -0.556158 -0.441839 -0.188644 -0.41458 -0.305473 -0.108042 -0.158052 -0.104119 3 11 11 3 2 0 -16.6185 5.88511 11 11 5 -0.142125 0.0597374 0.30647 0.584441 0.70572 0.423447 0.119487 -0.0697023 -0.0219779 -0.0036859 -0.046082 -0.0934249 -0.077944 -0.0674745 0.20978 0.550716 0.44274 0.0799705 -0.190888 -0.19487 -0.139407 -0.176359 0.01729 -0.240412 -0.328215 -0.149821 0.25646 0.443667 0.201942 -0.0401261 -0.105564 -0.0566452 -0.299529 -0.075738 -0.235827 -0.423005 -0.454305 -0.107115 0.389763 0.386274 0.0966887 0.0404698 0.00405712 -0.201891 -0.321063 -0.311929 -0.339416 -0.360201 -0.304631 0.595627 0.774001 0.237223 0.0351462 0.0938045 -0.163816 -0.464318 -0.347213 -0.403496 -0.55065 -0.390764 0.82686 0.828133 0.314167 -0.0740203 -0.151985 -0.260368 -0.374533 -0.294502 -0.602012 -0.819904 -0.0615961 1.09749 0.765208 0.0538147 -0.366639 -0.354909 -0.416912 -0.257417 -0.26784 -0.483229 -0.874646 0.420545 1.07218 0.527861 -0.153243 -0.514798 -0.419251 -0.36334 -0.406772 -0.447827 -0.405838 -0.531597 0.758161 0.974751 0.42133 -0.132201 -0.382177 -0.249199 -0.120439 -0.278926 -0.188411 -0.455847 -0.216371 0.829088 0.732478 0.240517 -0.0724382 -0.0990183 0.0414886 0.119471 0.0210902 -0.00155368 -0.207433 0.309359 0.806562 0.521497 0.0476254 -0.101153 0.0510761 0.226012 0.246267 2 1 -12.0504 2.0264 11 11 5 -0.0287071 -0.0423312 0.0624088 -0.242392 -0.624594 -0.628891 -0.479884 -0.222466 -0.0797308 0.123912 0.14631 0.0244171 0.10864 0.101359 0.237078 -0.32085 -0.725033 -0.45096 -0.0664778 -0.0673746 0.217547 0.343986 -0.160898 0.0612039 0.00465834 0.194738 -0.0595643 -0.638944 -0.485898 -0.114675 -0.0799746 0.397739 0.196561 -0.282377 0.0125019 0.207875 -0.0586799 -0.0144234 -0.168796 -0.48424 -0.246435 -0.179247 -0.0782158 -0.283172 -0.226748 0.130279 0.623716 0.230248 0.250799 0.300568 -0.482512 -0.0208164 -0.158464 -0.175321 -0.269298 0.275798 0.260164 0.431551 0.306552 0.855425 0.583671 -0.662159 0.085705 -0.0234492 -0.128169 -0.0511389 0.067649 0.105677 0.0910073 0.702752 1.46484 0.36929 -0.726266 0.110668 0.385053 0.0444857 -0.219117 0.111141 -0.0738321 0.242938 0.722617 1.44841 -0.29402 -0.772938 -0.00307783 0.147044 0.0687948 -0.0458592 -0.23094 0.230557 0.742103 0.81522 1.22574 -0.759974 -0.768883 -0.0727364 -0.000811275 0.00493788 -0.0924097 -0.00903463 0.146976 0.72275 0.701084 0.492923 -0.921835 -0.769248 -0.162863 0.0467363 -0.0831824 -0.00836126 -0.5634 -0.0481761 0.222761 0.365177 -0.217384 -0.937234 -0.609244 -0.264299 -0.145204 -0.0976876 -0.163409 2 2 -16.5028 3.29284 11 11 5 0.0906583 0.216611 0.226542 0.283773 0.259451 0.108219 0.209953 0.159412 -0.00460099 -0.143545 0.0397337 0.0348625 0.377052 0.385002 0.0813062 0.0101919 0.149203 0.136385 -0.0517333 -0.303069 -0.0558416 0.0342969 0.340386 0.120758 0.308343 0.153168 0.003348 0.340065 0.25657 -0.177381 -0.0620931 0.0340497 -0.0217093 0.245567 0.2462 0.374391 0.133652 -0.204332 -0.0301665 0.0757071 -0.136859 0.0214646 0.131077 0.134181 0.0541963 0.186345 0.338869 -0.0551048 -0.448616 -0.275264 0.46961 0.184874 0.0930081 0.464062 0.493525 -0.041467 -0.0307927 0.099484 -0.442539 -0.624966 -0.174013 0.949631 0.662519 0.46493 0.522763 0.529021 0.13783 0.025498 0.124942 -1.0355 -0.820483 0.0402381 1.10989 0.480188 0.161548 -0.065621 0.0812623 0.16369 0.118487 -0.149291 -1.24574 -0.601798 0.328589 1.03576 0.234773 -0.318692 -0.382683 -0.533179 -0.186755 -0.405359 -0.570387 -1.06389 -0.144537 0.506207 0.851112 0.222334 -0.496521 -0.815904 -0.400529 -0.368757 -0.490338 -0.924512 -1.09413 0.00315877 0.540629 0.69953 -0.139896 -0.455394 -0.485893 -0.499027 -0.148407 -0.307934 -1.30326 -0.739416 -0.0172868 0.52299 0.599803 0.406297 0.16158 -0.130206 -0.165334 3 11 11 3 2 0 -17.0872 6.34392 11 11 5 -0.224079 -0.328463 -0.391441 -0.52187 -0.302616 -0.0907886 0.341058 0.353733 0.107549 0.0296344 -0.155117 -0.212944 -0.0958826 -0.157425 -0.343091 -0.314385 -0.112716 0.428783 0.714756 0.329376 -0.0624297 -0.22795 -0.320268 -0.194725 -0.390286 -0.520709 -0.566902 -0.204066 0.601801 0.796898 0.235098 -0.228479 -0.480183 -0.298933 -0.144409 -0.361735 -0.568802 -0.715911 -0.139053 0.959304 0.631251 -0.0563132 -0.461698 -0.54329 -0.305202 -0.223973 -0.391926 -0.636015 -0.641281 0.303482 0.874414 0.388672 -0.28173 -0.393601 -0.360324 -0.370833 -0.102381 -0.228209 -0.711405 -0.227328 0.747973 0.707049 0.141101 -0.217297 -0.10666 0.086881 -0.136933 -0.194721 -0.444359 -0.407495 0.107965 0.757749 0.444316 -0.129323 -0.150725 0.0775963 0.239379 0.0577459 -0.103978 -0.355794 -0.193159 0.369415 0.655013 0.101095 -0.373411 -0.190305 0.108849 0.267559 -0.0380405 -0.121366 -0.244748 -0.0297798 0.645159 0.647933 -0.0554593 -0.396796 -0.219912 0.0156322 0.165069 -0.0500698 -0.0903408 -0.165722 0.146015 0.908553 0.735203 0.110313 -0.174727 -0.027191 0.0357023 0.0762674 -0.00458348 -0.241843 -0.204405 0.437826 1.24602 1.02823 0.611686 0.289182 0.322754 0.205736 0.0875205 2 1 -12.129 2.44488 11 11 5 -0.142562 -0.0916453 -0.0949567 0.0454783 0.0472023 -0.210506 -0.386411 -0.260138 -0.072012 -0.114338 -0.164085 -0.218172 0.167925 0.186339 0.648896 0.504463 0.159926 0.216358 0.0271548 -0.0571455 -0.225331 -0.208791 0.309818 0.248419 0.388962 0.542146 0.781216 1.12249 0.607331 -0.330043 -0.193062 0.148013 -0.230259 0.0350372 0.245191 0.379968 0.200543 0.702922 1.24886 -0.0995586 -0.529914 0.0172589 0.204095 -0.00963011 -0.0927685 -0.0660041 0.362825 0.206374 0.998551 0.959547 -0.650825 -0.229269 -0.129403 -0.0377361 0.0240535 -0.0545482 -0.0957947 -0.0668892 0.419215 1.25765 0.495096 -0.951056 -0.285074 0.00758305 -0.0522208 -0.0503405 -0.218597 -0.443731 0.0939557 0.582956 0.871372 -0.267685 -0.764482 -0.2909 0.043513 0.0873101 0.0167525 -0.242399 -0.231083 0.000929658 0.439416 0.446466 -0.488205 -0.585144 -0.256779 -0.133238 -0.0308801 -0.0903905 -0.253991 -0.231201 -0.0967751 0.412831 0.307569 -0.612099 -0.482079 -0.257581 -0.223865 -0.179415 -0.0293405 -0.0548517 -0.0522698 -0.029555 0.364995 0.0186779 -0.628442 -0.512615 -0.357553 -0.419726 -0.381179 -0.247015 0.268646 -0.128477 0.0261619 0.221529 -0.104944 -0.731972 -0.61664 -0.40364 -0.241427 -0.24636 -0.152963 2 2 -16.1921 3.29246 11 11 5 0.537718 0.0230438 -0.000412442 -0.0444995 -0.0702418 -0.0663498 0.023913 -0.0243397 -0.0615222 0.277908 0.328971 0.282009 0.248132 0.184272 0.304096 0.150026 -0.0764238 0.128859 0.334468 0.340557 0.232094 0.687709 0.0808282 -0.00263943 -0.0673813 0.00872277 -0.164473 -0.558389 0.15596 0.657195 0.62334 0.47009 0.357997 0.207329 0.0210276 -0.0799003 -0.0691888 -0.558952 -0.507018 0.674269 0.914074 0.398618 -0.104061 -0.0833822 0.0169014 -0.152352 -0.16521 -0.322386 -0.839952 -0.324003 0.650027 0.76346 -0.334357 -0.495546 -0.742222 -0.0185604 0.185486 0.0550908 -0.68787 -0.601718 0.23432 1.08868 0.383321 -0.338831 -0.452218 -0.65775 -0.16993 -0.102271 -0.323317 -0.971112 -0.558805 0.275915 1.2093 0.193227 0.162263 -0.139664 -0.296142 0.0276788 0.0342061 -0.489355 -1.05561 -0.386493 0.137133 0.609795 -0.0749269 0.235146 0.369528 0.277081 -0.146311 -0.163613 -0.702217 -1.05683 -0.486495 0.33803 0.611049 0.182782 0.299488 0.356957 0.372072 0.0773682 -0.212501 -0.680943 -0.7671 -0.339014 0.212092 0.0157224 -0.185974 -0.074701 0.289766 0.334785 0.174312 -0.167753 -0.389718 -0.866867 -0.161281 0.10718 0.163594 -0.00898775 0.188862 0.11831 0.24593 3 11 11 3 2 0 -16.7148 5.47923 11 11 5 -0.065709 -0.390871 -0.350786 -0.71445 -0.678384 -0.668196 -0.168329 0.402044 0.494314 0.115609 -0.275942 -0.0817173 -0.429191 -0.362148 -0.302896 -0.34295 -0.303521 0.0627026 0.61704 0.431575 -0.0193822 -0.096221 -0.0252343 -0.160354 -0.182402 -0.292488 -0.410426 -0.164542 0.249493 0.570604 0.201445 0.0127378 0.0449472 0.112794 -0.0608719 -0.104187 -0.407342 -0.432258 -0.0598749 0.387361 0.31556 0.031753 -0.0167351 0.138566 0.0194717 0.0180079 -0.180019 -0.33901 -0.27373 0.211228 0.445344 0.0375502 -0.292645 -0.202847 -0.0204843 0.067118 0.0465217 -0.188531 -0.333469 0.0439405 0.524228 0.429541 -0.127053 -0.334426 -0.150546 -0.0799649 0.0682568 0.0160399 -0.158219 -0.151609 0.241057 0.787 0.660529 0.0154152 -0.164418 -0.00565632 0.0258628 0.0475512 -0.0916729 -0.167705 -0.0330555 0.509639 1.08831 0.891438 0.39526 0.0765827 0.0149419 -0.0273098 -0.101616 -0.233589 -0.305107 -0.0410204 0.549295 1.12768 1.03589 0.65626 0.322506 0.201175 0.0379295 -0.281212 -0.380237 -0.403874 -0.242136 0.273878 1.04325 0.868486 0.213348 -0.00728892 0.0767459 0.0530451 -0.28752 -0.257397 -0.343722 -0.503474 -0.343174 0.138979 -0.0968641 -0.666027 -0.755295 -0.59163 -0.736877 2 1 -13.154 2.54035 11 11 5 -0.0687691 -0.0745295 0.0989519 0.223633 0.663755 0.794182 0.731161 0.338671 -0.168898 -0.482497 -0.113132 -0.288517 0.00438586 0.0606347 0.148425 0.664812 0.66663 0.413625 -0.179422 -0.368588 -0.233757 -0.177232 -0.269881 -0.168098 -0.29801 -0.060624 0.491252 0.492643 0.258401 -0.36278 -0.441186 -0.0170682 -0.0673543 -0.350201 -0.27382 -0.431542 -0.11615 0.490497 0.585627 0.11063 -0.558276 -0.401273 -0.0937234 -0.0330664 -0.198964 -0.147373 -0.229801 0.174685 0.580811 0.162919 -0.436056 -0.50466 -0.346662 -0.231905 -0.110329 -0.350818 -0.204827 -0.270738 0.205648 0.340354 -0.170549 -0.681079 -0.466797 -0.272818 -0.258451 -0.311138 -0.300544 0.0405929 -0.201542 0.17974 0.0663839 -0.269366 -0.859658 -0.507658 -0.315778 -0.339128 -0.308678 0.0997296 0.0474421 -0.230448 0.154597 -0.121028 -0.706166 -0.808695 -0.49588 -0.377054 -0.269484 -0.263384 0.306926 0.0217249 -0.224327 0.150865 0.0227454 -0.225353 -0.531676 -0.275711 -0.0937359 -0.0321036 -0.173232 0.38011 -0.026797 -0.0825554 0.326349 0.573911 0.214117 0.271015 0.605041 0.752688 0.812795 0.613748 0.133733 -0.197265 -0.37418 0.210051 0.478012 0.571864 0.514883 0.678799 1.08075 1.1327 0.759143 2 2 -16.8023 3.4226 11 11 5 -0.00392403 -0.0424595 -0.0605445 -0.410218 -0.393982 -0.297164 -0.142251 0.273937 0.302906 0.151979 -0.380006 0.0161888 -0.164402 0.0185347 -0.227891 -0.407712 -0.323917 -0.000857581 0.418533 0.212106 -0.110444 -0.535372 -0.168409 -0.034838 -0.029401 -0.186643 -0.372907 -0.335969 0.321571 0.447634 0.321549 -0.212236 -0.482407 0.0488297 -0.126167 0.0214977 -0.28849 -0.468795 -0.345198 0.45272 0.662048 0.354094 0.327015 0.240373 -0.00220353 -0.0413986 -0.168592 -0.399233 -0.814608 -0.323308 0.306063 0.436399 0.1243 0.0820514 0.26313 -0.102654 -0.128684 -0.561311 -0.725005 -1.02449 -0.495008 0.307375 0.0218763 0.0695591 0.0430418 0.380984 0.0913428 -0.115632 -0.266936 -0.804243 -1.09878 -0.088604 0.110354 -0.302896 -0.0846422 0.0922539 0.286214 0.382531 0.0624894 -0.388098 -0.785567 -0.73887 0.0772801 0.406103 0.0150951 -0.260269 -0.443677 -0.0451447 0.333892 0.13233 -0.0575113 -0.336842 -0.206558 0.638038 0.968339 0.610751 0.216335 0.0513399 0.225197 -0.0338018 -0.202896 -0.137448 0.123457 0.275945 1.19359 1.52092 0.989311 0.277555 0.343416 0.623031 -0.30111 -0.24456 -0.371567 -0.313786 0.110035 0.869851 0.846235 0.216948 -0.0364923 0.205212 0.0833412 3 11 11 3 2 0 -16.9073 4.66413 11 11 5 -0.0173231 -0.104737 -0.324933 -0.311281 -0.328772 -0.327761 -0.218687 0.128227 0.289291 0.0787177 0.0907572 0.0363354 -0.00765678 -0.253821 -0.336031 -0.345218 -0.262228 -0.0282568 0.317348 0.0834719 -0.172895 -0.129306 0.129705 0.0728595 -0.221235 -0.273183 -0.135802 0.0917319 0.410583 0.515581 0.0917228 -0.249283 -0.136924 0.142502 -0.10891 -0.239336 -0.149423 0.076552 0.392818 0.770884 0.797864 0.376676 -0.031736 -0.11772 0.0603406 -0.266648 -0.200338 -0.0681693 0.146292 0.654029 1.18572 1.05078 0.605928 0.241722 0.160184 -0.112691 -0.424468 -0.35261 -0.259577 0.147202 0.707313 1.49797 1.1039 0.737154 0.522588 0.447752 -0.218178 -0.461947 -0.328858 -0.525536 -0.253211 0.214519 0.731543 0.384032 -0.0982798 -0.301646 -0.22744 -0.0590783 -0.351417 -0.137785 -0.496833 -0.582301 -0.536031 -0.214963 -0.469745 -0.803698 -0.696835 -0.694652 0.187249 -0.0138043 0.197214 -0.0241295 -0.405989 -0.467506 -0.276606 -0.465896 -0.687332 -0.843403 -0.742653 0.261969 0.189948 0.335165 0.382037 0.198541 -0.0112695 -0.149749 -0.0942602 -0.142465 -0.12132 0.0812813 0.000392174 0.152946 0.171725 0.391144 0.404271 0.0554229 -0.112996 -0.0646191 -0.162127 -0.00809895 0.267737 2 1 -11.6201 1.64655 11 11 5 -0.471593 -0.339796 -0.22802 -0.032839 0.127856 0.400088 0.519339 0.334733 -0.210169 -0.457847 -0.298413 -0.300569 -0.0786997 -0.0404554 -0.103253 0.108092 0.376345 -0.0639113 -0.109093 -0.363232 -0.350287 -0.244759 -0.136334 -0.0574242 -0.137867 0.130955 0.319487 0.15338 0.0511092 -0.422105 -0.52208 -0.361289 -0.211866 -0.112903 0.375237 -0.17579 0.155265 0.309911 -0.252529 -0.272052 -0.660446 -0.589314 -0.479149 -0.507003 0.146203 0.189318 -0.0200637 0.138196 0.18135 -0.239857 -0.421373 -0.782714 -0.433922 -0.392843 -0.337061 0.58732 0.279945 0.0632057 0.250889 0.256619 0.177384 -0.337285 0.11546 0.173258 0.268838 0.199334 0.686054 -0.0424069 -0.0919755 0.129049 0.815964 0.603689 0.767187 0.723605 1.15891 1.17959 1.02836 0.271097 -0.0749895 -0.386744 -0.166988 0.718197 0.425312 0.3673 0.195331 0.589011 1.0468 0.85858 -0.101725 -0.165811 -0.327836 -0.172591 -0.0756432 0.0337394 -0.575381 -0.38016 -0.145953 -0.0308923 0.259675 -0.140115 -0.267573 -0.288853 -0.1008 0.0266588 -0.0653415 -0.253628 -0.337265 -0.126426 -0.0547601 -0.0545237 0.0479153 -0.168022 -0.10418 -0.184704 0.0908284 -0.279714 -0.255822 -0.450822 -0.257844 -0.257067 -0.469188 2 2 -16.3332 2.79728 11 11 5 -0.00317311 0.205487 -0.133487 -0.298308 -0.288481 -0.306507 -0.0975782 0.37034 0.617831 0.463333 0.380272 -0.342576 0.107864 0.13923 -0.31118 -0.479927 -1.11825 -0.546655 0.0799104 0.335346 0.00206646 0.292094 -0.0181396 0.25194 -0.241072 -0.371775 -0.706867 -0.973943 -0.48696 0.334548 -0.0339317 -0.347948 0.359096 0.156593 -0.0333194 -0.323864 -0.476974 -0.74902 -1.09135 -0.261185 0.3914 0.19032 -0.027874 0.0116623 0.361645 0.264518 0.165023 -0.0933279 -0.462985 -0.747831 0.330975 0.526541 -0.0146186 -0.319308 -0.119287 0.0711347 -0.0881625 0.175679 -0.0535057 0.21034 0.434448 1.43221 1.35222 1.10004 0.73806 0.367896 -0.028099 -0.326693 -0.126658 -0.131091 0.351648 0.885649 1.66775 1.23964 0.640912 0.38958 0.271486 -0.317795 -0.413252 -0.424189 -0.564527 -0.283271 0.128208 0.375285 0.203798 -0.189608 -0.0941886 0.132559 -0.0905273 0.00430315 0.00868607 -0.281526 -0.46168 -0.334568 -0.0199254 -0.210263 -0.271964 -0.38369 -0.318937 0.024738 -0.0677332 0.0441556 0.211571 -0.0546122 -0.173659 -0.0535406 -0.18531 -0.235905 -0.271279 -0.347899 0.216545 0.0627662 -0.00771542 0.00329767 0.104212 -0.200505 0.0820189 -0.0966892 -0.114058 -0.109379 -0.108772 3 0 0 0 3 12958208 -1 0 3 11 11 3 2 0 -15.1345 2.77323 11 11 5 -0.240199 -0.286933 0.523202 1.30985 1.42327 1.13602 0.712056 0.39949 0.0662696 -0.308427 -0.527489 -0.555511 -0.424107 0.23418 0.948111 1.08699 0.776024 0.329176 0.282461 0.346788 0.0756631 -0.509776 -0.730041 -0.353601 -0.250071 0.410777 0.221721 -0.092871 -0.308581 -0.516219 -0.26672 -0.193257 -0.679774 -0.542332 -0.218976 -0.6359 -0.363349 -0.203634 -0.364539 -0.878157 -0.942226 -0.585174 -0.601589 -0.854135 0.278165 0.0726041 -0.469595 -0.893436 -0.572504 -0.307086 0.0765681 0.308761 0.0187881 -0.240931 -0.168347 0.735371 0.474233 0.0854764 -0.158483 -0.124569 0.0442923 0.39569 0.331283 0.243035 0.148673 0.298957 0.550161 0.158516 -0.062435 -0.178924 -0.0700125 0.183017 0.174847 0.0896625 0.204499 0.181222 0.327069 0.231362 -0.104337 -0.15322 -0.21676 -0.0827563 0.0734673 -0.0369658 0.0124194 0.23018 0.388767 0.420712 0.082424 -0.0582885 -0.0260162 -0.176652 -0.104068 0.188362 0.116893 0.170944 0.245354 0.340842 0.3159 0.119869 -0.00739085 -0.0371934 -0.199233 -0.359326 -0.328028 -0.284581 -0.0912628 0.0562673 0.00276043 -0.0650943 0.389244 0.0928609 -0.0103381 -0.12132 -0.220729 -0.346982 -0.332128 -0.222007 0.0795744 0.0160411 0.0273731 2 1 -11.8523 1.9515 11 11 5 0.0779907 -0.00779789 0.281606 -0.135472 -0.315703 -0.608599 -0.547082 -0.452474 -0.434547 -0.282779 0.169834 0.168026 0.159998 0.410857 0.453666 0.11658 0.277795 0.313079 0.287749 0.343985 -0.0121759 0.144407 -0.110417 0.0932868 0.615541 0.754742 0.466752 0.668605 0.970808 1.17948 1.18378 0.488141 0.140636 -0.114942 -0.527493 -0.0349305 1.2396 0.333536 0.125474 0.31387 0.222364 0.236958 -0.108857 0.030247 0.0322729 -0.135974 -0.346328 -0.0759991 -0.0101584 -0.561497 -0.519016 -0.155892 -0.183993 -0.256071 0.189196 -0.642543 -0.149943 0.00784428 -0.253529 -0.156854 -0.419041 -0.12547 -0.190248 -0.149607 -0.156974 -0.219397 -0.313929 -0.0845916 -0.250805 -0.0942854 -0.269488 -0.451931 -0.539406 -0.457738 -0.503447 -0.575913 -0.566396 -0.135045 0.0374346 -0.182938 -0.154746 -0.200583 -0.544983 -0.570209 -0.434481 -0.398346 -0.390111 -0.463726 -0.0804822 0.0505432 0.08671 -0.148613 0.0198923 -0.0986572 -0.318525 -0.0511143 0.102502 0.118325 0.384165 0.119752 0.0943946 0.384801 -0.299183 0.038663 -0.213028 -0.224252 0.0885576 0.459846 0.440516 0.692871 0.0625891 -0.182443 0.179712 -0.130471 -0.177439 -0.0879999 -0.0933258 0.27564 0.605039 0.615529 0.734235 2 2 -11.4892 1.58452 11 11 5 -0.289662 -0.44926 -0.605895 -0.0668361 0.174117 0.475579 0.0041544 -0.504147 -0.630169 -0.0560467 0.297887 -0.024131 0.066371 0.143671 0.711706 0.930446 1.10229 0.835445 0.442293 0.526889 0.680082 0.241522 -0.399816 0.115828 0.159089 0.800412 0.630362 0.485448 0.110723 -0.11066 0.377055 0.726611 -0.0252627 -0.516138 -0.302096 -0.288761 0.211053 0.47179 0.0508798 -0.48922 -0.396445 -0.0630119 -0.227659 -1.05463 -0.292738 -0.727365 -0.608135 -0.838877 -0.60685 -0.457582 -0.0192462 0.24929 -0.242046 -0.464259 -0.995404 0.395059 0.287693 0.1721 -0.0538667 -0.730845 -0.590111 0.102717 0.162062 -0.269197 -0.445891 -0.512962 0.687519 0.427615 0.0445219 -0.246713 -0.428277 0.141584 0.0917928 -0.132466 -0.463313 -0.6891 -0.490289 0.554741 0.271403 0.0349744 0.120622 -0.0332887 0.0722121 0.154247 0.00213686 -0.306197 -0.228522 -0.0541399 0.20391 0.0286196 0.0891218 0.250185 0.220788 0.382672 0.36129 0.228794 0.102457 0.232989 0.29905 -0.038862 -0.212683 0.0582056 0.0167318 0.0849567 0.109748 0.201761 0.195674 0.308938 0.36792 0.28144 -0.446494 -0.271267 0.125472 -0.0651128 -0.0713069 -0.0703779 0.0346619 -0.221845 -0.214984 -0.0134922 0.124576 3 11 11 3 2 0 -14.9946 3.49194 11 11 5 0.459405 1.21625 1.12888 0.845885 0.449791 0.0173125 -0.276221 -0.405237 -0.296109 0.0366514 -0.0130595 0.220807 0.900616 0.935486 0.915083 0.655253 0.495198 0.3451 -0.19013 -0.656629 -0.473013 -0.28759 -0.183897 0.512791 0.447618 0.317526 -0.0386994 -0.372056 0.0900312 0.0459155 -0.753798 -0.667297 -0.234515 -0.511875 -0.262019 -0.270915 -0.314382 -0.471685 -0.990529 -0.832857 -0.435194 -0.970336 -0.392172 0.217213 -0.54366 -0.376667 -0.369388 -0.395829 0.143714 0.199256 -0.314712 -0.71483 -0.525898 0.375454 0.567658 -0.327853 -0.444327 -0.287625 0.217029 0.658967 0.459854 -0.0658363 -0.110653 0.243569 0.667414 0.459391 -0.013582 -0.14823 0.0153176 0.461976 0.272463 0.27643 0.0762925 0.0337386 0.260308 0.492373 0.191683 -0.113089 -0.220603 -0.0400665 0.176501 -0.307564 -0.0367354 0.0697679 0.128446 0.277623 0.252507 0.0802112 -0.0896028 -0.0999546 0.103047 0.167512 -0.178532 0.146995 0.370691 0.349202 0.302993 0.275554 0.0890572 -0.0582276 -0.146366 -0.233839 -0.248327 -0.242813 -0.0300364 0.125136 0.170896 0.0262795 -0.0574657 -0.195156 0.0564793 -0.257333 -0.490301 -0.385804 -0.389288 -0.161139 -0.0919965 -0.110866 -0.064761 -0.0953341 -0.210091 2 1 -13.3007 2.19617 11 11 5 0.469477 -0.241478 -0.588556 -0.738598 -0.649079 -0.638929 -0.45029 -0.0923378 0.292058 0.322154 0.170419 0.385541 0.240633 -0.118145 -0.10867 -0.127532 0.0327252 -0.0450173 0.124668 0.342158 0.445809 0.229591 0.61099 0.530087 0.234653 0.454763 0.669374 0.946981 0.614062 0.080576 0.174541 0.16495 0.432754 0.407034 0.574304 0.241159 0.485776 0.722965 0.481268 0.611597 0.334319 -0.0426629 0.253448 0.552196 0.0878211 0.390141 -0.186808 -0.435298 -0.342791 -0.170567 -0.712097 -0.617334 0.410191 0.650593 -0.0809169 -0.365952 -0.180291 -0.45911 -0.31095 -0.375272 -0.462785 -0.250857 -0.0898065 0.129236 -0.169093 -0.459464 -0.308824 -0.032434 -0.275571 -0.470145 -0.371718 -0.406282 -0.523855 -0.450351 -0.492972 -0.442546 -0.394694 -0.276716 -0.22923 -0.38106 -0.664073 -0.521616 -0.289561 -0.416004 -0.548861 -0.549614 -0.628605 -0.413612 -0.0208284 -0.037401 -0.0149054 -0.182013 -0.15221 0.126617 -0.11188 -0.0988381 0.0278051 0.11379 0.139704 0.168832 -0.102452 0.101538 -0.186178 -0.277294 0.199594 0.315689 0.311971 0.476498 0.407274 0.50698 0.101778 -0.161247 -0.122393 -0.176268 -0.254257 0.39953 0.685206 0.624376 0.49944 0.418086 0.57148 2 2 -13.0382 2.05616 11 11 5 -0.51913 0.119952 0.0208816 0.0801134 -0.171046 -0.823385 -0.584327 0.0434051 0.233235 0.709404 0.581762 -0.202894 0.291335 0.635549 0.665276 0.363252 -0.0497225 -0.0033958 0.418072 -0.0441492 -0.0638116 0.126643 0.241254 0.744999 0.956414 0.795665 0.547294 0.323912 0.614306 1.03599 -0.0335131 -0.770726 -0.349714 0.0761129 0.297219 0.103481 -0.0383839 -0.492258 -0.644556 -0.113917 0.151092 -0.839435 -0.863706 -0.057443 -0.393276 -0.184154 -0.16743 -0.410733 0.00685462 0.228127 -0.00578976 -0.917855 -1.12446 -0.148952 0.29258 -0.23055 -0.649359 -0.713795 -0.251388 0.14347 0.316059 -0.467437 -0.588468 -0.311783 0.255303 0.351754 -0.123513 -0.320641 -0.281585 0.18546 0.0680348 0.00695447 -0.515954 -0.806665 -0.327524 0.149905 0.172477 0.164579 -0.379997 -0.0162733 0.441398 -0.107958 -0.16183 -0.397815 -0.545402 -0.118021 -0.00969402 0.228929 0.0909587 -0.0886314 0.371027 0.671852 0.0267134 -0.0149106 -0.103915 -0.0657725 0.0787963 0.162808 0.534399 -0.0409388 -0.0228557 0.20551 0.283272 0.280925 0.313629 0.339004 0.45157 0.344624 0.385718 0.298862 -0.0700971 -0.159496 -0.205568 -0.112521 -0.119286 -0.084258 -0.0779246 -0.00038037 0.0325742 0.183114 0.266518 3 11 11 3 2 0 -15.1084 2.59991 11 11 5 0.867391 0.483705 0.166696 -0.132897 -0.220991 -0.0902528 0.144146 0.394623 0.362525 0.326291 0.250708 1.05398 0.776076 0.495572 0.185365 -0.132756 -0.367052 -0.33093 -0.189132 -0.0535806 0.0920785 0.103457 0.741892 0.692063 0.501775 0.415869 0.36637 -0.299428 -0.728949 -0.623883 -0.372879 -0.0688327 -0.0155017 0.264063 -0.122225 -0.334071 -0.750332 -0.487119 -0.192151 -0.822542 -0.658279 -0.169275 -0.137312 -0.108542 -0.447399 -0.215484 -0.615632 -0.803774 -0.765942 -0.762697 -1.18675 -0.0229759 0.402026 -0.012955 -0.164359 -0.393849 -0.0269516 0.210734 0.221173 -0.575348 -0.973848 0.133364 0.965518 0.705609 0.0198024 -0.214676 -0.294408 0.224592 0.69832 0.32398 -0.0892452 0.0622562 0.614355 0.842456 0.479947 -0.117738 -0.243892 -0.0334119 0.304805 0.0817862 0.141661 -0.0121112 0.11551 0.478353 0.390951 0.145883 -0.0885042 -0.279853 0.023486 0.044373 -0.348392 0.00701322 0.081504 0.23213 0.38261 0.313023 0.131854 -0.153681 -0.157817 0.046063 -0.217674 -0.346229 0.224743 0.30574 0.485202 0.612258 0.408919 0.192269 -0.18939 -0.235391 -0.380173 -0.449215 -0.394483 -0.226078 -0.0254122 0.0560069 -0.0416752 0.0686407 -0.168792 -0.317078 -0.461382 2 1 -13.7622 1.87499 11 11 5 -0.829691 -0.756111 -0.536482 -0.308787 -0.151853 0.149019 0.188835 -0.0424026 -0.248377 -0.18035 -0.0751387 -0.306909 -0.434519 -0.50541 -0.452376 -0.239804 0.284661 0.565058 0.419424 -0.0615423 -0.22627 -0.0413211 0.148511 -0.124146 0.0897838 0.427382 0.359121 0.0616378 0.540741 0.520811 0.19375 0.116777 0.125213 0.641847 0.47585 0.844684 1.17415 0.894711 0.137484 0.0176983 0.351056 0.51197 0.466046 0.335442 0.207157 0.519105 0.580273 0.210009 0.0586617 -0.18057 -0.010133 0.633104 0.357919 0.296481 0.291718 -0.0228589 0.00687087 -0.216984 -0.200213 -0.668997 -0.25768 0.887479 -0.0306877 -0.339228 -0.112991 0.149688 -0.352853 -0.383211 -0.341553 -0.491342 0.0783651 0.0668103 -0.335739 -0.502506 -0.32859 -0.110047 0.224 -0.332224 -0.604263 -0.574459 -0.611969 -0.657682 -0.591318 -0.673866 -0.698367 -0.380683 -0.0901392 -0.0548083 -0.274845 -0.511601 -0.268204 -0.225972 -0.31411 -0.425135 -0.503585 -0.63527 -0.357322 -0.16778 0.0107361 -0.0914415 -0.155125 0.121273 0.321749 0.0676246 0.0511601 0.124437 0.177998 0.176917 0.261768 0.262058 -0.129771 -0.16733 -0.143079 0.551437 0.602902 0.53095 0.677965 0.334432 0.466523 0.227693 0.471083 2 2 -13.4818 2.00883 11 11 5 -0.00580293 -0.0264065 0.0288305 -0.1737 -0.104052 0.434072 0.640537 0.894996 0.26247 0.0522607 -0.29969 0.200961 0.0204592 -0.279794 -0.79482 -0.45856 -0.119707 0.136248 0.382862 0.380426 0.0366443 -0.261114 0.51669 0.323168 0.36472 0.0556803 0.568416 0.550316 0.0919721 -0.0920023 -0.047993 0.00985678 -0.265451 0.608752 0.332137 0.206888 0.00460962 0.451306 1.02948 -0.142535 -0.671074 -0.152132 -0.17723 -0.428744 -0.263915 -0.106031 -0.356574 -0.474285 -0.0676145 -0.363662 -1.36244 -0.681737 -0.0210397 -0.145069 -0.42997 -0.547893 -0.242586 0.12959 0.383919 -0.60552 -1.50287 -0.684677 0.106044 0.379139 0.0439059 -0.214264 -0.637576 -0.0323488 0.227639 -0.127446 -0.666572 -0.610345 -0.0634649 0.411261 0.446301 -0.0938608 -0.568043 -0.0407243 0.213668 -0.0776486 -0.07578 -0.52772 -0.870036 -0.31818 0.116813 0.206256 0.190542 -0.453864 0.346822 0.328922 -0.230766 -0.35468 -0.443479 -0.43346 -0.0433013 0.128883 0.248766 0.079163 -0.0508501 0.676861 0.406688 0.168034 0.215862 0.0349334 0.0915309 0.371036 0.550569 0.508804 0.136138 0.161615 0.294717 0.332476 0.35871 0.262748 0.244425 0.233611 0.403993 0.607891 0.406128 0.171812 0.0801282 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 0 6 0 3 11 11 3 2 0 -17.2712 7.47312 11 11 5 0.423171 0.227909 0.0172267 -0.107469 -0.156312 -0.25166 -0.233371 -0.104927 0.152665 0.409602 0.416283 0.335822 0.125189 -0.172349 -0.368557 -0.402799 -0.42928 -0.464847 -0.0809352 0.275379 0.429965 0.340401 0.209171 0.107484 -0.0638929 -0.194821 -0.321811 -0.473579 -0.477575 -0.173646 0.177728 0.328432 0.386769 0.437491 0.0872847 0.0344394 -0.00498883 -0.0555564 -0.364593 -0.501798 -0.285698 -0.388332 -0.428714 -0.0406078 0.672863 0.337295 0.199281 0.164005 0.0544127 -0.355249 -0.867798 -0.724967 -0.985502 -0.574894 -0.327309 0.639859 0.0957783 0.178677 0.158244 0.308241 -1.20751 -1.71337 -1.35896 -1.09323 -0.641406 -0.082895 0.516842 0.00318676 -0.0450475 0.0351094 0.124675 -0.165469 -0.51795 -0.367256 0.0989797 0.666873 0.60405 0.4616 0.0222352 0.00599786 0.0997981 -0.110112 -0.39433 -0.417502 -0.188619 0.192335 0.472356 0.471593 0.417992 0.193703 0.219734 0.296285 0.183492 -0.0415476 -0.161916 -0.111116 0.0542365 0.20656 0.199239 0.364446 0.317484 0.370462 0.413913 0.415811 0.304243 0.155191 0.0473639 0.0618426 0.149521 0.250243 0.270242 0.25143 0.297588 0.419527 0.411621 0.32744 0.377749 0.200279 0.0959106 0.0568595 0.164985 2 1 -9.8572 1.52763 11 11 5 -0.691388 -0.0550773 0.421217 0.569144 0.461214 0.181988 0.179043 -0.183555 -0.307964 -0.314561 -0.257072 -0.526157 -0.0234389 0.450225 0.195778 -0.155683 -0.000356572 0.0762816 -0.189217 -0.307212 -0.387533 -0.510138 -0.408102 -0.20317 -0.294852 -0.358598 -0.404441 -0.449874 -0.399736 -0.0496796 0.0126852 0.394016 -0.140745 0.0531248 0.222139 -0.0681244 -0.451391 -0.472631 -0.406263 -0.216706 0.38047 0.544029 0.640634 0.850324 -0.0577608 0.274574 0.118273 -0.278454 0.144565 0.198507 0.127727 0.308239 0.950054 1.12252 1.28278 -0.190399 0.0828274 0.0980463 -0.0841554 0.630007 0.38693 -0.96576 -0.184145 0.768606 1.21828 0.738305 -0.34197 -0.0227919 -0.0125737 -0.256395 -0.69926 0.0864585 0.218937 0.478554 0.81604 0.575226 0.123154 -0.437341 -0.0504322 0.01938 0.110213 -0.164325 -0.412813 -0.295047 -0.185964 -0.196121 -0.374339 -0.177534 -0.503732 -0.13529 -0.0411893 -0.137572 -0.0367183 0.348334 0.314102 0.0270091 -0.0918922 0.0374534 0.214655 -0.565102 -0.196253 -0.106004 -0.135362 -0.216212 -0.068244 0.164853 0.0744204 -0.0542249 0.106716 0.255713 -0.623522 -0.317419 -0.130307 -0.153066 -0.160962 -0.244417 -0.304221 -0.106378 -0.15925 -0.082452 0.137271 2 2 -17.3251 3.3359 11 11 5 0.0966193 0.175235 -0.0980451 -0.0978782 -0.0241241 -0.0381428 0.00812774 -0.119421 -0.261835 -0.0798699 0.0329055 -0.257114 0.121718 0.0421321 0.188271 0.351576 0.181752 0.0649676 -0.0202103 -0.000626467 0.177037 0.365226 -0.496214 -0.0102669 0.0645048 0.197752 0.447034 0.13966 -0.0284587 0.215153 0.366025 0.573243 0.878442 -0.141477 -0.0410354 0.0708995 0.15359 0.524372 0.518034 0.193781 0.605278 0.313532 0.326494 0.873273 0.565573 0.186831 -0.0404604 -0.263318 0.625451 0.706494 -0.136019 0.517337 -0.132282 0.158156 0.569272 0.727631 0.217334 -0.0920601 -0.200418 0.700204 -1.22619 -1.06634 -1.16796 -1.27851 -0.928013 0.104506 0.532348 0.0451775 -0.307979 0.250035 1.15479 0.261163 -0.720177 -1.09705 -0.171437 0.378261 0.331894 0.365361 -0.0666343 -0.379911 0.0174789 0.0430069 -0.615888 -1.02434 -0.51114 0.176467 0.601473 0.286021 0.179211 -0.189978 -0.424192 -0.282193 -0.625021 -0.977377 -0.749068 -0.65078 -0.356393 0.129219 0.032352 0.334387 0.0810486 0.0443314 -0.0972148 0.0778444 -0.178281 -0.471207 -0.706201 -0.582205 0.0124417 0.10754 0.411668 0.47487 0.458712 0.322821 0.524843 0.346355 0.172081 -0.214755 -0.419705 -0.626386 -0.806834 3 11 11 3 2 0 -15.4696 4.98214 11 11 5 0.251307 0.239703 0.211319 0.206852 0.181275 0.0974006 0.155177 0.111506 0.0707296 0.165704 0.200804 0.0654233 0.117337 -0.0603392 -0.187229 -0.207918 -0.084486 0.0174824 0.0839172 0.112459 0.0999149 -0.0192972 0.0123347 -0.165339 -0.171386 -0.234309 -0.156849 0.0136298 0.32132 0.568638 0.503214 0.304763 -0.0601881 -0.0444326 -0.239331 -0.301095 -0.223184 -0.0266161 0.0595573 0.355185 0.537429 0.485411 0.488255 0.268721 0.105435 -0.0314062 -0.131466 -0.0931517 -0.133903 -0.0625675 0.160473 0.340455 0.167947 0.0707717 0.0489152 0.356721 0.373566 0.141946 -0.528581 -1.40132 -1.80672 -1.37431 -0.909595 -0.448092 -0.750573 -0.684127 0.254359 0.255581 0.176062 -0.51759 -0.841587 -0.352754 -0.817106 -0.315616 0.0177824 0.13953 -0.795008 0.241755 0.0814133 0.195605 -0.167857 -0.481338 0.00133378 -0.479546 -0.103257 0.708356 0.96279 -0.0169742 0.311217 0.149829 0.29697 0.0934313 -0.458038 -0.208846 -0.0883583 0.180065 0.601168 0.481696 0.0923405 0.303776 0.298157 0.171012 -0.0370294 -0.327063 -0.302906 0.0282302 0.193547 0.288723 0.170598 0.181595 0.479275 0.485514 0.404004 0.107298 -0.151241 -0.216784 -0.00252329 0.12349 0.143154 0.221032 0.305562 2 1 -10.5732 1.38699 11 11 5 -0.310778 -0.247539 0.0406563 0.245343 0.272922 0.0424032 0.0307008 -0.0381985 0.164827 0.299727 0.263731 0.217299 0.300392 0.270326 0.205026 0.208173 -0.00433569 -0.334315 -0.277961 -0.358573 -0.322902 0.117801 -0.163833 0.114382 0.243442 -0.0795146 -0.0831961 -0.247847 -0.495203 -0.482876 -0.265976 -0.407273 -0.401815 0.0732649 -0.0686301 -0.343317 -0.608838 -0.417879 -0.36949 -0.55283 -0.632045 -0.598981 -0.528931 -0.199976 -0.0329745 -0.289322 -0.552795 -0.536432 0.109774 0.90928 1.19222 0.625109 0.252102 0.148736 0.125917 -0.154078 -0.542515 -0.137652 0.404404 -0.358501 -0.479978 0.711563 0.564695 0.176385 0.409888 0.981888 -0.198445 -0.454926 -0.164775 -0.0473135 -0.380331 0.251731 0.679964 0.737571 0.942457 0.572685 0.493955 0.0879699 -0.234487 -0.0940814 0.0556995 -0.610236 -0.3319 0.73493 0.976322 1.23821 0.514154 0.676053 0.0683265 -0.183376 -0.202893 -0.168889 -0.16813 -0.551838 0.0575216 0.188483 -0.22695 -0.617005 -0.180574 0.0458007 0.0342446 -0.119127 -0.154932 -0.21036 -0.21438 -0.0270533 -0.215774 -0.424793 -0.183422 -0.0256165 -0.0650367 -0.0203407 0.0726685 0.0931015 0.0510376 -0.123665 -0.11767 0.0340446 0.0552203 0.152133 0.108965 2 2 -15.2862 3.18268 11 11 5 0.017993 0.169213 0.152729 0.162 0.125975 -0.116715 -0.040608 -0.135943 -0.0022531 -0.0640408 0.0228624 0.133663 0.218271 0.0810366 -0.0536268 -0.203929 -0.368148 -0.300359 -0.154958 -0.0536363 -0.047576 0.261489 0.296226 0.142571 0.12438 -0.127443 -0.0112121 -0.164647 -0.0914502 0.160322 0.194292 0.403772 0.401498 -0.192433 0.139476 0.239106 0.201722 0.130943 -0.0585425 0.040389 0.325878 0.495585 0.512091 0.27394 -0.201331 -0.00670026 0.311001 0.886793 0.978212 0.984647 0.995289 1.07527 1.20914 1.09649 0.96797 -0.111401 0.140564 0.489144 -0.04886 -0.966981 -0.770809 -0.478319 -0.392272 -0.0551244 0.205482 0.439636 -0.171158 -0.118648 0.121703 -0.333832 -0.732648 -0.0631182 -0.730144 -0.36116 -0.323687 -0.245054 -0.89988 -0.171116 -0.132863 0.379033 0.00308355 -0.546653 -0.0644819 -0.485042 -0.369826 0.506073 0.567823 -0.403702 -0.239263 -0.0225456 0.712313 0.46387 -0.709948 -0.58197 -0.27564 0.0808718 0.587175 0.265332 -0.436749 -0.655639 -0.0787892 0.0707744 -0.193251 -0.698709 -0.679835 -0.0374942 0.311071 0.394394 0.0760054 -0.446119 -0.447946 -0.316069 0.0351712 -0.32474 -0.690759 -0.648234 -0.224159 -0.130384 -0.0617364 -0.0468425 -0.462598 3 11 11 3 2 0 -18.5058 5.54936 11 11 5 0.265933 0.181381 0.169686 0.107429 0.103787 0.0764818 0.124068 0.122573 0.0863274 0.0600268 0.233508 -0.0227107 -0.153713 -0.124535 -0.00608341 0.120619 0.0886167 0.101124 0.011105 0.0352709 0.0618022 0.118535 -0.189192 -0.21549 -0.114689 0.236783 0.520345 0.550844 0.340285 0.0637734 -0.131743 -0.171021 -0.00943401 -0.143075 -0.195766 -0.0193197 0.319498 0.609101 0.621631 0.380194 0.214389 0.0859785 -0.12405 -0.146614 -0.0136051 -0.142722 -0.135416 0.129483 0.421635 0.360673 0.205726 0.203879 0.152048 0.0230877 -0.0306091 0.0849703 -0.900843 -1.46986 -1.53553 -1.294 -0.964885 -0.774348 -0.765747 -0.351002 -0.0428517 -0.0502036 0.145537 -0.543561 -0.141907 -0.721516 -0.27545 0.433123 0.333681 -1.22494 -0.914255 -0.420024 -0.0923812 0.437096 -0.164618 -0.000262479 -0.551268 -0.0702491 0.946976 1.15274 0.140652 -0.246122 -0.145246 -0.0175575 0.380198 -0.299539 -0.10862 -0.117393 0.206868 0.694609 0.475074 0.0521067 0.0240203 0.196479 0.300115 0.395334 -0.163817 -0.264338 -0.087433 0.0667138 0.213738 0.0965531 0.0104817 0.149488 0.308705 0.448821 0.493829 -0.0129829 -0.189354 -0.143118 0.0363741 0.0886035 0.183544 0.215418 0.2442 0.3121 0.379251 2 1 -12.7753 1.81861 11 11 5 0.102384 0.270352 0.196894 0.0373332 -0.0337142 0.0790732 0.198265 0.158469 0.0480144 0.0830474 -0.170751 0.21828 0.210321 0.228607 -0.091631 -0.376407 -0.321704 -0.281546 -0.0753823 0.134314 0.0266315 -0.0897376 0.131405 -0.190651 -0.31582 -0.395744 -0.41467 -0.403048 -0.405392 -0.397724 -0.0889359 0.170379 0.0166567 -0.572232 -0.561419 -0.325489 -0.414261 -0.644281 -0.716141 -0.516312 -0.40583 0.0128557 -0.0354092 0.0231351 -0.547974 -0.288559 0.395107 1.12695 1.01201 0.621962 0.324402 0.0590956 -0.0545846 -0.135939 -0.0835396 0.0993678 0.137303 -0.703327 -0.0558695 0.303143 0.146096 -0.0549917 1.01427 0.997731 0.368641 0.0219744 -0.219336 -0.543145 -0.0179863 0.325484 1.08367 0.899915 0.334117 0.0799879 0.321929 0.503914 0.337564 -0.26891 -0.469126 -0.491707 0.389573 1.15012 0.918487 -0.243487 0.85189 0.787948 0.483651 0.139422 -0.17452 -0.278786 -0.451115 -0.0847005 0.322076 -0.506809 -0.806082 -0.28499 0.199751 0.163601 0.0585984 -0.280993 -0.182808 -0.34698 -0.0878563 -0.308491 -0.641596 -0.253461 -0.0365704 0.0128159 -0.303766 -0.265285 0.081476 0.0349951 -0.107553 -0.131783 -0.00513354 -0.0088208 0.138455 0.124624 -0.0599127 -0.34603 -0.341779 2 2 -17.8856 4.02348 11 11 5 0.280699 0.15033 -0.0676988 -0.134047 -0.20017 -0.0784796 0.0194882 0.135757 -0.0210803 0.0210401 0.114304 0.0690991 -0.0463631 -0.252598 -0.291325 -0.309007 -0.22496 0.0770125 0.0289449 0.208185 0.0289441 0.0509801 -0.00208198 0.110711 -0.182921 0.000559014 -0.0140897 0.161177 0.251903 0.353476 0.341073 0.295406 0.201768 0.0907784 0.0525582 -0.0873582 -0.124027 0.194418 0.44337 0.440332 0.389988 0.144733 -0.00743335 -0.0652483 0.612523 0.864034 1.06611 1.1127 1.13331 1.00434 1.06853 0.901422 0.606778 0.260385 -0.0165494 0.339045 -0.692078 -0.610874 -0.778408 -0.539938 -0.651104 0.0780432 0.252553 0.299285 0.415259 0.141227 0.037929 -0.712711 0.16541 -0.631898 -0.317535 0.0138728 -0.0993849 -1.16523 -0.901243 -0.437811 -0.223455 0.0795454 -0.322819 -0.0950807 -0.548728 -0.0970113 0.545599 0.59089 -0.309487 -0.66863 -0.427074 -0.482872 0.289948 -0.580011 -0.28762 -0.322112 0.0321321 0.692299 0.524933 -0.12853 -0.245446 -0.251793 -0.527524 0.0858252 -0.395503 -0.57703 -0.0166389 0.252186 0.52516 0.256764 -0.0798869 -0.204717 -0.265363 -0.260269 -0.0631312 -0.532898 -0.602495 -0.347945 0.0556524 0.195473 0.292037 0.0503758 -0.182823 -0.269818 -0.518262 3 11 11 3 2 0 -15.2542 4.43371 11 11 5 -0.190565 -0.0768881 0.0161434 0.0885054 0.0582497 0.142077 0.0949916 0.13755 0.0276182 0.0913167 0.265488 -0.223353 0.190287 0.372572 0.301269 0.19246 0.0724582 -0.0288574 -0.010299 0.0725696 0.082403 0.0962918 -0.040673 0.333559 0.575173 0.543624 0.237017 0.0882846 -0.0167692 -0.0201518 -0.086157 -0.077248 -0.0393866 -0.322464 0.00797722 0.25537 0.374039 0.118567 0.168807 0.0674859 -0.109033 -0.177192 -0.151419 -0.0440938 -0.788889 -0.745086 -0.050992 -0.115721 -0.718186 -0.610886 -0.411041 -0.283317 -0.285482 -0.143258 0.0613484 -1.19925 -1.40416 -0.370062 -0.0351433 -0.999298 -2.30764 -1.33062 -0.527084 -0.14286 0.145722 0.285263 -0.488283 -0.0635101 0.688028 0.975273 0.0460872 -0.374536 -0.2921 -0.10462 0.118713 0.230421 0.328456 -0.141112 0.307783 0.593173 0.535712 0.165788 0.128473 0.236333 0.216478 0.224992 0.345893 0.417616 -0.201048 0.053723 0.236947 0.168997 0.168832 0.207028 0.226629 0.177982 0.207552 0.220657 0.272456 -0.115064 -0.0936964 0.0153205 0.0667942 0.0987371 0.146277 0.130184 0.149239 0.208388 0.228838 0.300578 0.0474191 -0.00182835 0.0535492 0.0471744 0.121963 0.174637 0.111633 0.190142 0.239563 0.279867 0.284515 2 1 -12.4276 1.93193 11 11 5 0.164202 0.100508 -0.152594 -0.253923 0.0497488 0.169939 0.220783 0.141733 0.018776 -0.299411 -0.469926 -0.247181 -0.304961 -0.333098 -0.373109 -0.617589 -0.161256 0.0131649 -0.0283796 0.0513373 -0.123969 -0.162414 -0.580985 -0.440544 -0.627368 -0.583863 -0.191863 -0.201391 -0.144526 -0.0332673 -0.160089 -0.153269 -0.138796 0.0716696 0.264488 -0.0169822 -0.0764183 -0.130487 -0.100945 -0.0901131 -0.270424 0.0162142 0.126605 0.116755 -0.122351 0.506357 0.570185 0.827057 1.23959 1.37036 0.302937 0.206955 0.132761 0.223335 0.0789193 -0.48956 0.21311 1.36627 -0.0255628 0.032555 -0.226571 0.493452 0.264462 0.318364 0.312358 0.171034 -0.232216 0.624435 0.94234 0.171913 0.643828 1.68072 0.601376 0.228769 0.150408 0.0874243 -0.00805609 -0.48168 -0.0927634 -0.460158 -0.847203 -0.33254 0.0891237 0.144201 -0.00849859 -0.0894385 -0.160095 -0.0800566 -0.213436 -0.4144 -0.574285 -0.45572 -0.0867073 -0.188616 -0.343096 -0.298093 -0.169492 -0.248844 -0.127311 -0.217247 -0.0927413 -0.0219716 0.0708165 0.00442299 -0.0337038 -0.117527 -0.207566 -0.184761 -0.0545482 -0.0569924 0.000877005 0.0719996 0.0572869 -0.0198738 -0.0453448 0.00604026 -0.147259 -0.15303 -0.114764 -0.0355224 0.0167748 2 2 -15.5254 2.83139 11 11 5 -0.234145 -0.145556 -0.24587 -0.184217 -0.203248 0.0102435 0.121069 0.0279112 -0.0153001 -0.117808 0.0819959 -0.355386 -0.0800595 0.0745159 0.155879 0.180015 0.523303 0.440777 0.264718 0.0795961 0.0589703 -0.0359896 0.205083 0.224138 0.080107 0.372663 0.250232 0.408798 0.335152 0.420095 0.438765 0.0794249 -0.128509 0.561434 0.640663 0.706104 1.04518 0.733401 0.495035 0.304002 0.027815 -0.112747 -0.156121 -0.250004 0.394868 0.177679 0.278277 0.311683 0.882407 0.830797 0.723901 0.46314 0.0471199 -0.347352 -0.557573 -0.884072 -1.17224 -0.358704 0.407964 -0.286869 -1.77045 -1.00805 -0.301929 -0.219948 -0.258797 -0.174986 -0.723687 -0.43838 0.332018 0.693589 -0.242794 -0.636947 -0.588546 -0.511264 -0.549569 -0.320468 -0.043061 -0.47945 0.139669 0.641995 0.554414 0.201407 -0.172382 -0.178939 -0.315697 -0.38144 0.0332895 0.515143 -0.384171 0.171352 0.475949 0.418139 0.0752757 0.0886322 0.0129936 -0.152305 -0.267337 -0.297732 0.000451276 -0.542542 -0.0908212 0.184347 0.329381 -0.033486 -0.0125811 -0.30007 -0.253445 -0.295075 -0.135018 0.0938964 -0.321348 -0.23258 -0.00223149 -0.000363288 0.243499 0.0911023 -0.115773 -0.340496 -0.0859015 0.0366559 -0.146279 3 11 11 3 2 0 -21.1621 8.18881 11 11 5 -0.038171 -0.229448 -0.151905 0.131548 0.272117 0.200722 0.172298 0.275431 0.19814 0.126347 0.233841 -0.298319 -0.497787 -0.269481 0.149362 0.385566 0.323483 0.203692 0.128615 0.0544255 0.0909898 0.0517654 -0.259654 -0.430824 -0.280201 0.0852221 0.412618 0.476808 0.312973 0.0555547 -0.0646904 -0.0741798 -0.0331061 -0.0742139 -0.410598 -0.493812 -0.662133 0.144178 0.310484 -0.0497897 -0.559012 -0.443477 -0.306836 -0.159742 0.0339507 -0.484441 -0.744679 -1.00243 -0.369898 0.622249 0.198888 -1.20385 -0.907405 -0.480416 -0.143925 -0.0851547 -0.867206 -1.08664 -1.402 -0.765975 -0.606881 -0.976995 -1.23371 -0.706017 -0.213763 0.0227908 0.408787 -0.478658 -0.351934 0.565937 1.00127 0.981313 0.566002 0.23103 0.103886 0.236643 0.310584 0.213918 -0.328708 -0.209255 0.233655 0.455873 0.404077 0.321928 0.258418 0.303798 0.286764 0.368841 0.424637 -0.0454073 -0.178097 -0.095301 0.0231178 0.108735 0.13185 0.168699 0.230561 0.369248 0.507829 0.670032 0.294557 0.0180188 -0.0741924 -0.0959327 -0.0537151 0.0763712 0.217076 0.333441 0.409679 0.621021 0.827078 0.482573 0.189222 0.0199772 -0.0740706 -0.0166609 0.117562 0.277017 0.384614 0.530484 0.710492 2 1 -13.3499 2.21219 11 11 5 -0.0850436 0.0945689 0.054794 0.00286868 -0.102831 -0.280304 -0.271373 -0.19212 0.115747 0.0718916 -0.148986 -0.175421 -0.0423166 -0.106177 -0.323348 -0.397492 -0.476066 -0.499486 -0.443122 -0.211011 0.0490344 -0.02474 -0.404942 -0.343664 -0.194859 0.303835 -0.0142983 -0.0274987 -0.0926453 -0.0252931 -0.110256 -0.226372 -0.162211 -0.468923 -0.286737 -0.404515 0.643855 0.720345 0.0541407 0.0887221 0.580928 0.437914 0.102759 0.0269299 -0.269688 -0.388105 0.0439383 0.57929 1.73689 1.24407 0.545359 0.4569 0.638983 0.535444 0.239304 0.143866 -0.496504 -0.787528 0.18321 0.531642 0.0195072 -0.888393 0.752195 0.883462 0.56243 0.281181 -0.259967 -0.103695 0.111047 1.12088 0.983296 0.057522 0.398766 0.861115 0.643521 0.262659 -0.0154548 -0.471913 -0.247469 -0.179635 -0.456126 -0.728489 -0.74654 -0.374538 -0.227071 -0.127084 -0.150756 -0.128464 0.0805311 -0.168397 -0.218288 -0.254241 -0.254994 -0.343218 -0.176653 -0.144698 -0.131882 -0.229332 -0.30221 0.039941 -0.0267171 -0.183814 -0.108252 0.072989 0.0761771 0.0389303 0.0421155 0.117412 -0.160664 -0.209534 -0.277844 -0.196687 -0.135613 -0.162746 -0.107869 -0.0395963 -0.00818028 -0.0165938 -0.0356671 -0.0378032 -0.111933 2 2 -17.4654 3.65199 11 11 5 0.0709891 0.118497 -0.0952105 -0.180971 -0.0397061 -0.148111 0.100333 0.199074 0.284686 0.1519 0.223896 0.0536085 0.0189912 -0.0573849 0.00821879 0.0874365 0.15336 0.331494 0.590007 0.420419 0.540882 0.125353 0.191294 0.0486331 0.196475 0.150303 0.270125 0.61907 0.668474 0.432099 0.512654 0.443507 0.0778872 0.181766 0.2612 0.361582 -0.134013 0.442356 0.479439 0.792315 0.683532 0.442856 0.211399 -0.0475108 0.389982 0.481075 0.484354 -0.329119 0.221279 1.32018 1.02803 -0.29613 -0.0785326 -0.0121082 -0.0180988 -0.44758 -0.680803 -1.07263 -1.44398 -0.408523 -0.447766 -0.686162 -1.10718 -0.792532 -0.521908 -0.559883 0.134073 -1.02774 -0.630673 -0.203153 0.390532 0.647437 0.354812 -0.242727 -0.312652 -0.251577 -0.718222 -0.308545 -0.775676 -0.374974 0.207994 0.654243 0.584184 0.336201 0.033929 -0.150319 -0.41075 -0.57044 -0.309837 -0.512568 -0.386316 -0.0196384 0.307652 0.482299 0.266653 0.106863 -0.090472 -0.342766 -0.326841 -0.0871643 -0.214511 -0.442427 -0.242109 -0.000414729 0.119457 0.0320294 -0.0247883 -0.233667 -0.434465 0.0203953 0.558032 0.292137 -0.198283 -0.442007 -0.28516 -0.150511 0.0597527 -0.0419685 -0.152049 -0.0912064 0.152779 3 11 11 3 2 0 -20.5767 8.22 11 11 5 0.339604 0.0917604 -0.120361 -0.230905 -0.226852 -0.110999 0.20927 0.21579 0.213945 0.203321 0.290045 0.115344 -0.0975247 -0.412762 -0.539745 -0.396173 -0.0104501 0.328473 0.445387 0.3464 0.13722 0.137206 0.115975 -0.13812 -0.395552 -0.566968 -0.418649 -0.15298 0.0965513 0.509836 0.224565 -0.102778 -0.349671 0.218879 0.0979712 -0.135954 -0.584681 -0.310171 -0.638427 -0.429813 0.0730533 0.265779 -0.0948429 -0.740115 0.329361 0.38039 0.190748 -0.672334 -0.443293 -1.01659 -0.820374 0.0157894 0.566214 -0.387866 -0.808704 0.15639 0.497465 -0.000665201 -1.16314 -1.59304 -1.28111 -0.960503 -0.42829 -0.58152 -0.76468 -0.548638 0.0311447 0.183724 0.0808261 -0.425036 -0.4716 0.147257 0.780501 0.960689 0.682755 0.355664 0.284754 0.214177 0.17926 -0.11718 -0.421044 -0.372487 -0.0440548 0.288054 0.414519 0.372636 0.309851 0.463589 0.497659 0.471472 0.319688 0.0252384 -0.191529 -0.0781801 0.107362 0.201816 0.207387 0.273011 0.385067 0.587152 0.523948 0.403932 0.294432 0.0788592 -0.0751814 -0.0565353 0.0228008 0.172168 0.258187 0.41559 0.502311 0.494857 0.471432 0.379368 0.316962 0.0864086 0.00275 0.0292113 0.17676 0.282847 0.377257 2 1 -11.216 1.50483 11 11 5 0.235797 0.173862 0.0335781 0.0472381 0.115062 -0.1807 -0.354545 -0.36914 -0.623189 -0.325795 -0.0752166 0.0333292 -0.0287056 -0.0933133 -0.255531 -0.0271286 0.0193808 -0.210481 -0.557704 -0.324948 -0.40468 -0.103389 -0.323063 -0.571545 -0.409424 -0.323449 -0.275016 0.0887478 0.587337 -0.0987389 -0.0368113 0.0490211 0.206163 -0.476152 -0.531773 -0.183968 -0.391383 -0.27845 0.286665 0.662986 0.775495 0.0719765 0.428025 0.781361 -0.151692 -0.192966 0.073822 -0.110257 -0.290685 0.650245 1.40072 1.47351 0.550417 0.506144 0.918674 -0.0813245 -0.271217 0.400738 0.174487 -0.970019 -0.0581653 0.747921 0.267561 -0.609211 -0.0581171 0.952579 -0.111586 -0.496831 -0.758203 -0.117574 0.341748 0.755137 0.909611 0.229722 0.264557 0.509644 0.827269 0.131745 -0.000546867 -0.172239 -0.194348 -0.265724 -0.485992 -0.443524 -0.694268 -0.221936 -0.0781615 0.108066 -0.0734368 -0.105279 0.178764 0.250611 0.00407012 -0.0743 -0.0348517 -0.0605432 0.00710798 0.0196499 -0.0391314 -0.0870044 -0.194231 -0.168261 -0.0335469 0.0398485 -0.142879 -0.0970668 0.0464868 0.0271363 -0.0198648 0.0394497 -0.211507 -0.206168 -0.29701 -0.293197 -0.21367 -0.183689 -0.195863 -0.0512342 -0.0111048 0.0497477 0.00944858 2 2 -20.6518 4.03663 11 11 5 0.00985159 0.00505794 0.23282 0.181668 -0.0844577 -0.361388 -0.179352 -0.219409 -0.0824026 0.103347 0.28534 -0.0361213 0.327054 0.205031 0.177062 0.124483 0.0649966 -0.0716203 0.0865193 0.315418 0.406153 0.666258 0.0849976 0.233183 0.181745 -0.132049 0.0320296 -0.0262404 -0.114026 0.39803 0.325136 0.470252 0.464071 -0.120618 0.105784 0.566845 -0.16997 0.47786 0.348928 0.232929 0.421803 0.796702 0.861619 0.347743 -0.243937 0.442655 1.04078 0.0805941 0.681568 -0.496227 -0.358909 0.590284 1.285 0.230488 -0.352671 -0.28945 0.795867 0.261456 -1.1675 -1.56933 -1.25962 -0.975898 -0.551654 -0.397749 -0.644524 -0.882941 -0.393339 0.522878 0.499875 -0.453639 -0.823888 -0.187299 0.444174 0.694717 0.372217 0.110606 -0.424257 -0.432304 -0.123021 -0.28125 -0.813945 -0.608329 -0.239718 0.332626 0.4498 0.249138 0.18021 -0.211687 -0.321547 -0.175054 -0.239831 -0.435608 -0.585523 -0.355936 0.190809 0.288534 0.361668 0.0868452 -0.252138 0.0748092 0.0614889 0.222218 -0.0388945 -0.478621 -0.675645 -0.332068 0.0771576 0.00235082 -0.0910949 -0.35161 0.664363 0.430087 0.356702 0.457057 0.0846701 -0.288551 -0.482957 -0.446848 -0.337462 -0.281045 -0.21325 3 0 0 0 3 0 0 0 3 12988096 12987504 0 3 11 11 3 2 0 -10.6288 1.50754 11 11 5 -0.31467 -0.292744 -0.350376 -0.404958 -0.199717 -0.15771 -0.169357 -0.457385 -0.730333 -0.730053 -0.406962 0.191271 -0.191264 -0.186604 -0.236171 0.0552689 0.215223 0.542256 0.402023 0.110847 0.0262806 0.490336 0.38793 -0.0385663 -0.271962 -0.094027 0.4331 0.534799 0.317805 0.337968 0.375103 0.318868 0.617822 0.233635 -0.0593277 -0.323816 -0.360141 0.214999 0.336097 -0.239457 0.274107 0.496768 0.455241 0.517805 -0.0369751 -0.0804835 -0.176785 0.00630992 0.393174 0.106875 -0.207666 0.695331 1.03157 0.890514 0.759472 -0.0255376 -0.0619457 -0.00815564 0.0447344 0.149355 0.533935 0.100528 -0.122266 0.136186 0.212346 0.10871 0.070398 -0.116289 -0.26006 -0.718135 -1.23609 -1.2202 -0.90368 -0.877023 -0.886032 -0.864492 -0.943761 0.129176 0.0818803 -0.0922736 -0.1322 -0.445644 -0.326199 -0.158488 0.51363 0.298935 -0.166558 -0.654724 0.255469 0.166332 0.0774249 0.274761 0.27828 0.201774 0.454915 0.743889 0.519328 0.28184 -0.539318 0.370461 0.0655651 -0.0670538 0.062763 -0.0339568 -0.0462548 0.163628 0.187195 0.05028 -0.172936 -0.41654 0.452127 0.180768 0.17917 0.31438 0.069662 -0.0773758 -0.121157 -0.153668 -0.13426 -0.323405 -0.475426 2 1 -10.1638 1.81324 11 11 5 0.031915 0.0435174 0.563138 0.235811 -0.131487 0.097937 0.293869 0.72568 0.297398 -0.1107 0.0708058 -0.0615398 -0.162923 0.240091 0.10838 -0.512549 -0.750094 -0.509487 -0.507277 -0.427377 -0.359241 -0.309791 -0.0116657 -0.161076 0.0740093 -0.047637 -0.424488 -0.706423 -0.254613 -0.457246 -0.336362 -0.448805 -0.672567 -0.0106257 -0.0217498 -0.0584892 -0.208691 -0.419304 -0.552837 -0.394441 -0.189126 -0.568518 -0.604824 -0.668061 0.00911424 0.0215197 -0.198185 -0.372516 -0.448307 -0.549029 -0.301077 0.0927093 -0.0664634 -0.168997 -0.354788 0.129316 0.190431 -0.179234 -0.0784888 0.448356 -0.157522 0.0942626 0.690002 0.939268 0.984067 1.27319 0.287496 0.316187 0.189425 -0.170232 -0.216176 0.0862868 -0.0221654 0.342982 0.492461 0.791986 0.819327 0.328344 0.412112 0.193505 0.269575 -0.114169 -0.135948 -0.176314 0.0276885 0.145023 0.498359 0.887692 0.035817 0.160722 0.250479 0.204845 0.183801 0.0937596 0.269305 0.122645 0.572781 0.623311 0.551545 0.21428 -0.0845649 0.0293308 -0.121549 -0.100107 0.0408522 0.330225 0.365975 0.266599 0.28783 -0.0639858 -0.162613 -0.0822894 0.00246941 -0.329179 -0.410838 -0.540649 -0.295962 -0.0867474 -0.431924 -0.569804 -0.299964 2 2 -10.0663 1.3163 11 11 5 -0.242945 0.000527199 0.122389 -0.132004 -0.222724 -0.258957 -0.262747 -0.290502 -0.590732 -0.96407 -0.831567 -0.172417 -0.191561 -0.0196788 -0.397089 -0.343872 -0.297524 0.0323641 -0.211104 -0.727917 -1.1595 -0.555558 0.517605 0.238662 0.0754933 -0.159091 -0.123533 0.287868 0.13079 -0.132532 -0.55654 -0.616246 -0.0331118 0.422897 0.0841934 -0.0275695 -0.242884 0.297185 0.591957 -0.395634 -0.320893 -0.517165 -0.361376 -0.185439 0.194253 0.13624 0.143345 0.080133 0.46433 0.406882 0.136037 0.69804 0.574339 0.507814 0.540657 -0.142969 0.0729672 0.625903 0.962832 1.04415 1.49793 0.903748 0.589189 0.535505 0.544884 0.6873 -0.115155 -0.121141 -0.162887 -0.171841 -0.419316 -0.226078 -0.321078 -0.392188 -0.306098 -0.202595 0.0282764 -0.234632 0.00516469 -0.160667 -0.00703246 -0.234684 -0.411759 -0.381477 -0.209753 -0.283393 0.0118364 0.080656 -0.03032 0.0343425 -0.00839792 0.0183388 -0.124975 -0.184091 -0.00267471 0.158894 0.183865 0.112152 -0.337426 -0.139565 0.0520005 0.0336213 -0.0409348 0.0437728 0.108109 0.200009 0.238699 0.0683762 0.0285678 -0.0919845 0.135798 -0.0830431 0.0959825 0.0621841 0.00177369 0.17583 0.109864 0.254595 0.318614 0.264764 0.118143 3 11 11 3 2 0 -12.5266 1.54757 11 11 5 -0.245388 -0.110317 -0.200465 -0.258954 -0.713845 -0.717585 -0.829958 -0.1876 0.267607 0.142435 -0.257893 -0.363537 0.105052 0.381264 0.454273 0.0574641 -0.222775 0.123372 0.60886 0.557488 0.121589 -0.287022 -0.177806 0.514792 0.367317 0.34846 0.287071 0.169462 0.465307 0.666728 0.539056 0.11021 -0.254589 -0.208807 0.576877 0.238369 0.0737505 0.306712 0.208502 0.0973211 0.299036 0.271564 0.0127955 -0.170117 0.0374203 0.398899 -0.132053 0.00289879 0.617746 0.636669 0.594152 0.557489 0.423256 0.168148 -0.0570024 0.19118 0.23368 -0.0571634 0.162978 0.606079 1.07302 1.11346 0.837806 0.482345 0.040278 -0.298804 -0.696697 -0.914905 -0.713116 -0.695117 -0.69736 -0.940825 -1.01792 -0.747375 -0.496298 -0.571694 -0.629896 -0.343691 -0.377209 0.039567 0.236657 0.140064 -0.176549 -0.501016 -0.672224 -0.452889 -0.424354 -0.479868 0.184615 0.126049 0.344723 0.554217 0.757811 0.343886 0.0368517 -0.28586 -0.380479 -0.562024 -0.432093 0.146946 0.229799 0.271125 0.161948 0.0231484 0.0973797 0.035924 -0.209671 -0.385115 -0.29958 -0.0877286 0.0178679 -0.0745026 0.0624652 0.0987164 0.069417 0.0378747 0.00816879 -0.0847438 -0.231333 -0.313133 0.0714787 2 1 -9.23059 1.67262 11 11 5 0.202629 0.17396 0.102204 0.594008 0.480294 -0.0696585 -0.173895 0.0713912 0.0680696 -0.0476719 -0.0269745 -0.0979343 -0.435963 -0.44091 -0.34339 -0.304105 -0.248652 -0.0995495 -0.102801 -0.387354 -0.229011 0.0611253 -0.241144 -0.61016 -0.515741 -0.381569 -0.412725 -0.249343 -0.357073 -0.525569 -0.303184 -0.122318 -0.164332 -0.144027 -0.406434 -0.450683 -0.247281 -0.303456 -0.491295 -0.519021 -0.414606 -0.368531 -0.246645 -0.201925 -0.338366 -0.413268 -0.296557 -0.187783 -0.322318 -0.526121 -0.59686 -0.496286 -0.269154 -0.162564 -0.151787 -0.0736744 0.244773 -0.0485819 0.222959 0.599619 0.546279 0.519286 0.60466 0.609409 0.636301 0.450265 -0.176424 -0.0429851 -0.129854 0.153619 0.279326 0.545094 0.618221 0.857982 0.477184 0.380398 0.671102 -0.111512 -0.0182107 -0.0642537 0.0538219 0.205669 0.30979 0.572492 0.540908 0.563725 0.384918 0.318332 0.0471711 -0.0343638 -0.0877675 -0.182627 0.344269 0.359809 0.0420658 0.209486 0.430612 0.542062 0.582543 0.0625232 0.149978 0.367179 0.505979 0.568365 0.12148 -0.134597 -0.150868 -0.109386 0.4668 0.400495 -0.284851 -0.445968 -0.419646 -0.132027 -0.227858 -0.585181 -0.512656 -0.17572 -0.0848109 0.211286 0.1479 2 2 -11.6998 1.78118 11 11 5 -0.0673698 -0.322509 -0.307849 -0.125951 -0.308737 -0.586705 -0.835239 -0.340588 0.127404 0.0696494 -0.368444 -0.485743 -0.434098 -0.156817 -0.0579554 -0.492289 -0.85 -0.620597 0.00673148 0.171875 0.155087 -0.319738 -0.380889 0.0653216 -0.135731 -0.029347 -0.449289 -0.800811 -0.239877 0.349571 0.38546 -0.00273503 -0.0937872 -0.405574 0.797368 0.336978 0.00492497 -0.202596 -0.459209 -0.443695 -0.148703 0.229191 0.0802219 -0.0128187 -0.0315851 0.611015 -0.159856 -0.0295859 -0.0272573 -0.0977937 0.076697 0.164991 0.345839 0.269952 0.492092 0.903995 1.03784 0.770221 0.740744 1.07285 1.2674 1.06534 0.852847 0.600176 0.527632 0.536913 -0.167113 -0.157104 -0.100939 -0.343458 -0.439916 -0.264534 -0.0688924 0.232332 0.339366 0.0754541 0.1279 -0.314353 -0.304533 -0.382923 -0.332285 -0.213009 -0.357463 -0.287243 -0.0829779 0.0914164 0.206449 0.00337464 0.0111191 -0.232564 -0.102128 -0.0090528 0.0951342 0.100968 -0.0214835 -0.0827653 -0.142224 -0.298114 -0.47649 0.105853 -0.0501235 0.12067 0.0358114 0.0609514 -0.0526319 -0.00786875 -0.201475 -0.309259 -0.169859 -0.176524 0.132232 0.0329556 0.248798 0.199237 0.490368 0.244699 0.292499 0.200458 0.0561855 -0.364441 -0.27504 3 11 11 3 2 0 -12.8799 2.01036 11 11 5 0.148557 -0.0414888 -0.152843 0.136184 0.39137 0.252455 -0.277219 -0.455262 -0.34112 -0.0656032 0.0922287 0.306213 0.313814 0.376114 0.5802 0.605733 0.432086 -0.0385307 -0.372481 -0.24356 0.049932 0.202252 0.263408 0.409268 0.427147 0.466666 0.39106 0.24957 0.152526 -0.153991 -0.0929491 0.0458135 0.217021 0.0777797 0.504976 0.499954 0.559448 0.462403 0.213912 0.100661 -0.0171618 -0.0705955 0.00873907 0.181179 -0.154816 0.136012 0.289483 0.409713 0.607146 0.444741 0.225306 -0.03953 -0.20065 -0.0218871 0.0922286 -0.0302796 -0.164037 -0.448829 -0.845766 -0.624917 -0.0470637 -0.0949781 -0.455095 -0.714536 -0.313048 0.0767244 0.0822306 -0.00404607 -0.437628 -0.885058 -1.2315 -1.52315 -1.05686 -0.889237 -0.626217 -0.161666 0.141753 0.33652 0.0742496 0.302112 0.271968 -0.00489199 -0.488782 -0.80646 -0.429961 0.0654536 0.0664032 0.238713 0.366233 0.271675 0.313104 0.0584205 0.0786637 -0.36967 -0.432905 0.13297 0.467424 0.161106 0.24713 0.0899817 0.0599265 0.10128 -0.0783663 -0.166329 -0.294645 -0.178805 0.301352 0.449432 0.0950366 0.172667 -0.0510522 -0.0807293 -0.0220561 0.00223874 0.00903085 -0.168824 -0.119743 0.365594 0.249632 -0.0530857 0.0676084 2 1 -9.8153 1.55482 11 11 5 -0.273917 -0.334278 -0.135323 -0.150122 -0.346808 -0.431876 -0.27626 0.105581 0.177586 0.221354 0.12461 -0.533015 -0.403522 -0.346509 -0.368833 -0.418086 -0.343094 -0.344084 -0.26284 0.0211743 0.127507 0.1086 -0.418011 -0.453327 -0.624555 -0.547204 -0.351123 -0.0915873 -0.110831 -0.141746 -0.0422774 0.00350888 0.00764425 -0.0297885 -0.232268 -0.320381 -0.360048 -0.43123 -0.339942 -0.127236 -0.11297 -0.04598 0.0118997 0.151738 0.299065 0.373633 0.274022 0.360463 0.0691923 -0.224984 -0.319429 -0.0560209 0.158094 0.0969789 0.283417 -0.207899 0.179226 0.553455 0.830367 1.29571 1.23861 0.407421 0.432819 0.244176 0.163588 0.347404 -0.309052 -0.00486407 0.108778 -0.329958 -0.256968 0.179035 0.720159 0.511083 0.422772 0.217401 0.171229 0.450943 0.225688 0.0919068 -0.0659909 0.0723934 0.251554 0.797209 0.751314 0.461752 -0.0891874 -0.0330361 0.0080691 0.0619255 0.0340371 -0.0633298 -0.20402 -0.0398241 0.437199 0.542041 -0.417378 -0.475876 -0.100567 -0.0820705 -0.188673 -0.336578 -0.432751 -0.341618 0.0933176 0.443098 0.0335744 -0.559766 -0.412817 -0.0503224 -0.00519852 -0.0946848 -0.238439 -0.00340781 -0.00341089 0.122316 0.238779 0.0533837 -0.329202 -0.262843 0.119441 2 2 -12.1005 1.44366 11 11 5 -0.272231 -0.66105 -1.05078 -0.535413 0.0838709 0.506653 -0.129437 -0.331237 -0.335666 -0.16381 -0.0249458 0.0253309 -0.2865 -0.229559 0.170237 0.486183 0.428747 0.175146 -0.579087 -0.505324 -0.279687 -0.0483878 0.0562547 -0.123376 0.119561 0.274003 0.289172 0.0645989 0.213267 -0.320284 -0.204127 -0.160829 0.0675911 0.290086 0.264254 0.405959 0.504273 0.197691 0.00466932 0.101611 0.111097 0.0886823 0.0584172 0.0529096 0.0792083 0.262671 0.676933 0.946066 1.1339 0.841886 0.954962 0.762322 0.309492 0.109852 -0.0488408 -0.0933065 -0.0852072 0.115866 0.170303 0.553861 0.856401 1.04807 0.723966 -0.440278 -0.236486 -0.293557 -0.259264 -0.153138 -0.432945 -0.609241 -0.576149 -0.373194 -0.0890959 -0.329109 -0.748223 -0.368007 -0.339932 -0.058456 -0.0990466 -0.087539 -0.114786 -0.251825 -0.399714 -0.483108 -0.580413 -0.557329 -0.71348 -0.25968 0.245279 0.211741 0.385397 0.293515 0.17257 -0.286642 -0.390099 -0.463684 -0.309051 -0.354661 -0.229798 0.0977669 0.334327 0.332919 0.239724 0.164598 -0.198263 -0.0758463 0.0194428 0.146724 -0.29971 -0.184207 0.269013 0.197095 0.443092 0.321447 0.177768 -0.112206 -0.0105616 0.137757 -0.0335179 -0.372393 -0.132481 3 11 11 3 2 0 -15.0128 3.87144 11 11 5 0.855112 0.818479 0.522241 0.195052 0.0131057 0.0236843 0.107801 0.186901 0.0463285 -0.084104 -0.117299 0.594981 0.382474 0.209976 0.0511486 0.0231275 0.133141 0.193159 0.228273 0.104969 -0.00600646 0.0256151 0.275482 -0.065706 0.036794 0.0645157 -0.0651648 -0.073721 0.0342866 0.170793 0.145874 0.0819721 0.116357 -0.148473 -0.142813 -0.200748 -0.216832 0.0697562 -0.141085 -0.227203 0.0714709 0.14839 0.154751 0.114649 -0.354216 -0.462825 -0.372857 -0.763833 -0.827732 -0.35606 -0.384646 -0.0187538 0.10602 0.139466 0.221594 -0.130828 -0.292242 -0.611999 -1.20636 -2.45131 -1.3049 -0.374333 0.0799431 0.339638 0.268437 0.210706 0.180738 0.00651523 0.0234649 -0.492463 -0.614531 0.48886 0.110796 0.0811717 0.313996 0.249044 0.154073 0.527211 0.168716 -0.242125 -0.106827 0.224658 0.691982 0.22854 0.071779 0.234159 0.163976 0.0964861 -0.114409 -0.180803 -0.206888 -0.00417146 0.248717 0.390422 0.0904721 -0.0688965 0.0707375 0.0557187 0.10291 -0.0528559 -0.0564093 -0.0871381 0.0629011 0.258754 0.151284 -0.0795806 -0.194151 -0.10841 -0.0168271 0.176067 -0.153748 0.182441 0.103718 0.235441 0.316891 0.10237 -0.0249699 -0.139829 -0.0148968 -0.00065686 0.231114 2 1 -12.4279 1.91055 11 11 5 -0.478581 -0.348536 -0.415172 -0.296005 -0.307306 -0.158102 -0.0715346 -0.0959919 -0.0931466 -0.0246434 0.0207919 -0.418978 -0.312113 -0.295155 -0.379945 -0.32973 -0.0483798 -0.0154667 -0.0353179 -0.0944885 -0.0873043 0.0708482 0.280336 -0.0345625 0.199875 -0.0390101 -0.450309 -0.370674 0.125302 0.0384591 0.06169 -0.030131 -0.00520835 -0.014609 0.139475 0.595507 0.795204 0.142165 -0.808667 -0.250247 0.354578 0.118027 0.0888654 0.0374723 0.0145236 0.238426 0.518703 0.783686 1.81461 0.432298 -0.299439 0.259146 0.1129 0.0735716 0.0548448 -0.451816 -0.0733081 -0.319419 -0.258248 -0.331118 0.560114 0.0508578 0.140661 0.0677435 0.077896 0.00926556 -0.0490859 -0.178414 0.0489206 0.768322 1.7643 0.996607 -0.591918 -0.246769 -0.0441974 0.0346992 0.0188179 -0.0220097 -0.116396 0.188068 0.607052 0.499007 -0.604127 -0.743843 -0.363053 -0.0287276 -0.0291315 0.0222369 -0.215441 -0.357 0.240452 0.130471 -0.113579 -0.681124 -0.579173 -0.209025 0.103545 0.0398454 -0.0220862 -0.268625 0.018477 0.095943 -0.0184245 -0.103448 -0.390885 -0.255369 -0.0896003 0.08776 0.08075 -0.0410718 0.43055 0.300905 0.0618166 0.0662584 -0.149101 -0.27234 -0.109931 -0.0165911 0.0553764 0.0271824 -0.012054 2 2 -15.4723 1.86799 11 11 5 0.53285 0.668871 0.564618 0.163489 -0.0538823 -0.348595 -0.341308 -0.0911823 0.0777511 0.0356797 -0.0908373 0.63479 0.584283 0.306638 -0.1391 -0.165366 -0.148169 -0.216403 0.141584 0.0242356 0.18151 -0.0105014 0.540314 0.329464 0.636643 0.409638 0.128662 0.00900526 -0.304602 -0.00995508 0.188071 0.100316 0.061396 0.468723 0.311826 0.804148 1.1249 0.819284 0.300479 -0.140641 -0.0913757 0.321148 -0.0367719 -0.247197 0.20675 0.0258596 0.303148 0.965883 0.841531 0.239425 -0.0388696 -0.337818 -0.210826 0.00172427 0.180112 -0.48119 -0.405613 -0.269779 -0.530519 -1.99691 -1.54908 -0.652319 -0.107225 0.509577 0.615305 0.113828 0.045554 0.161284 0.346696 -0.171238 -1.01751 -0.783447 -0.964412 -0.482133 0.276858 0.33261 0.0766661 0.558858 0.362094 0.00994062 -0.419322 -0.169553 -0.242579 -0.421528 -0.374537 0.261359 0.523526 0.0966217 0.387425 0.0260115 0.0197389 -0.134072 -0.0242774 0.328766 0.0710226 -0.124117 -0.252633 0.00897386 -0.272963 0.184185 0.00848345 -0.01884 -0.116672 0.220498 0.139096 -0.160457 -0.48626 -0.0962444 0.0313936 -0.0555499 -0.107132 -0.0200981 -0.258462 -0.402874 -0.137571 -0.203768 -0.178233 -0.583639 -0.367917 -0.544804 -0.342233 3 11 11 3 2 0 -13.8575 2.41271 11 11 5 0.349554 0.177013 -0.0158048 0.101415 -0.141876 0.116769 0.611417 0.311155 0.126323 0.227424 0.448939 0.132999 0.3397 0.104028 -0.0875833 -0.44691 -0.816607 -0.0116681 -0.0681661 -0.146051 0.108109 0.354312 -0.0434059 -0.0552815 -0.0944133 -0.201961 -0.574891 -0.985892 -0.493261 -0.525647 -0.380443 0.0334566 0.317359 0.253913 0.138656 0.0714507 -0.548311 -1.3442 -0.990239 -0.725064 -0.846804 -0.578101 -0.0971036 0.33691 0.0834382 0.152087 0.027612 -0.544401 -1.19396 -0.670605 -0.290817 -0.198495 -0.318871 -0.113576 0.287556 0.0800063 0.219315 0.102828 -0.505498 0.0168747 1.02518 1.12467 0.730144 0.104492 -0.164102 0.131104 0.0728501 0.239917 -0.0282905 0.215056 0.636249 1.0245 0.714374 0.314625 -0.133837 -0.283276 -0.158048 -0.0839606 -0.0708608 -0.175932 0.00451341 0.356979 0.509902 0.238315 -0.0709807 -0.262312 -0.274868 -0.172291 -0.481546 -0.480213 -0.310324 -0.100324 0.264854 0.316604 0.0176656 -0.189661 -0.210688 -0.235065 -0.165585 -0.466503 -0.289608 -0.170835 0.102824 0.441227 0.314497 0.131091 0.00659493 -0.00820919 0.078934 0.246198 -0.157519 -0.11206 0.160799 0.424977 0.560634 0.550778 0.525324 0.483159 0.486052 0.496798 0.630295 2 1 -11.9397 1.8554 11 11 5 -0.315292 0.0272179 -0.31006 0.0828049 0.0605644 0.34688 -0.709061 -0.976673 -0.565261 0.0772723 -0.126445 -0.0730587 -0.0144055 -0.103776 -0.13158 -0.218241 0.406908 0.565228 -0.439956 -0.456686 -0.0468274 0.189983 -0.147343 0.187447 0.27172 0.227679 0.339867 0.944681 0.877951 0.665883 0.392457 0.0830339 0.226464 -0.303642 -0.27754 -0.0194576 0.0467161 0.372123 1.35909 1.20747 0.490129 0.44499 0.32555 0.345913 -0.156531 0.296766 -0.121507 -0.358237 0.609754 1.22269 0.833974 0.526602 -0.14467 -0.210721 0.184336 0.267774 -0.0153192 -0.284414 0.0284044 1.14976 0.907581 0.0856678 -0.384865 -0.421609 -0.113074 -0.168672 -0.234148 -0.318663 -0.233994 -0.14446 -0.136832 -0.74039 -1.07435 -0.931482 -0.614922 -0.247508 -0.0318797 -0.277443 0.0741532 0.165748 -0.125561 -0.452641 -0.638335 -0.585413 -0.485829 -0.260052 -0.0655646 0.0107843 -0.244243 0.358308 0.246582 0.241683 -0.0123461 -0.295217 -0.238113 -0.185356 -0.12486 0.0506302 0.0471383 -0.0716984 0.281137 0.543124 0.395364 0.00422366 -0.152244 -0.157525 -0.125248 -0.0698023 -0.0403768 -0.0939331 -0.381561 0.016077 0.0893488 -0.0118807 -0.241029 -0.346111 -0.311873 -0.291956 -0.266653 -0.19372 -0.133504 2 2 -10.6645 0.491783 11 11 5 0.285059 0.0395925 0.0676001 0.47305 0.597091 0.603908 0.4732 0.291959 -0.0302279 -0.32383 0.256126 0.565216 0.328389 0.197993 0.446539 0.458162 -0.0236116 0.622293 0.389916 0.0759624 0.100966 0.193299 0.355871 0.264638 0.177622 0.303968 0.223793 -0.0039769 0.127366 -0.10385 -0.0455326 0.420291 0.193432 0.512482 0.275031 0.397532 0.296681 -0.462129 -0.264428 -0.334745 -0.685723 -0.778022 -0.0699457 0.347673 0.222925 0.16039 0.510076 -0.366566 -1.15578 -1.08903 -0.55538 -0.666563 -0.959236 -0.586693 0.189452 0.419603 0.54565 0.243858 -0.673335 -0.665282 -0.208626 0.27619 0.162511 -0.375383 -0.42895 0.0733983 0.809943 0.783538 0.551635 -0.207178 -0.0971704 0.663952 0.660689 0.366368 -0.259204 -0.221509 -0.246401 0.498254 0.520888 0.381429 -0.210743 -0.162364 0.548639 0.258717 0.0679381 -0.20727 -0.168434 -0.216805 0.218338 -0.0651117 -0.239307 -0.711297 0.00493879 0.519528 0.277116 -0.0278938 -0.0849352 -0.30785 -0.253249 -0.448958 -0.342975 -0.373 -0.241802 0.246499 0.0857533 -0.343431 -0.203459 -0.429526 -0.426988 -0.194452 -0.556812 -0.675022 -0.301352 -0.391047 -0.115089 -0.0364305 -0.178032 -0.187908 -0.354055 -0.160615 -0.126399 3 11 11 3 2 0 -8.2538 1.33186 11 11 5 0.0781408 0.123861 0.0935647 0.285852 0.247877 -0.182229 -0.68294 -0.525362 -0.0431104 -0.221699 -0.398362 -0.151408 -0.237857 0.022246 0.151763 -0.0112577 -0.541857 -0.822067 -0.378713 -0.4007 -0.522608 -0.586622 -0.134821 -0.132855 0.109841 -0.0186292 -0.352931 -0.661274 -0.395497 -0.443869 -0.478866 -0.428285 -0.550596 -0.194412 -0.240367 -0.241118 -0.211415 0.110661 0.0823218 -0.24382 -0.220865 -0.291194 -0.324998 -0.53582 0.273644 0.224413 0.0306693 0.421849 0.826718 0.137322 0.0899682 0.500742 0.602098 0.611524 0.238129 -0.108578 -0.204066 -0.342553 -0.0939031 0.0539737 0.553597 0.739562 0.819183 0.669134 0.409995 0.000702014 0.0945186 -0.175954 -0.508756 -0.586978 -0.300947 -0.0731359 0.0538095 0.145566 0.154868 0.00705138 -0.191485 0.150665 -0.164949 -0.501148 -0.724585 -0.629313 -0.311927 0.0574972 0.119811 0.173629 0.00578465 -0.169806 0.287334 -0.102177 -0.374001 -0.42183 -0.287016 -0.0205343 0.308333 0.435182 0.396895 0.207781 0.00473035 0.245919 0.0735723 -0.0983865 -0.0635309 0.0277423 0.26244 0.45723 0.523283 0.515789 0.423852 0.17262 0.162096 0.0718939 0.113147 0.276758 0.389336 0.554394 0.6409 0.698788 0.615281 0.52149 0.404665 2 1 -7.89423 1.07662 11 11 5 -0.143455 -0.194594 0.0720389 -0.239532 -0.378814 -0.350773 -0.017133 0.854242 0.313903 0.0367824 -0.21008 0.0574566 -0.46894 0.110973 -0.0178496 0.0551807 0.477351 1.05292 1.16565 0.704962 0.362732 0.686662 0.311069 -0.182661 0.193359 0.386148 0.553777 0.453723 0.555281 0.648421 1.04545 0.893746 0.697978 -0.0367299 0.0404048 -0.00943448 0.213576 0.600492 -0.179954 -0.432789 0.16887 0.209343 0.403987 0.493644 -0.767019 -0.673396 -0.531614 0.0705316 -0.405356 -0.206372 0.0827526 0.0750273 0.124377 0.304798 0.0586931 -0.48374 -0.760367 -0.678365 -0.36692 0.243035 0.319968 -0.434443 -0.421637 -0.45659 -0.300173 -0.255191 0.0634556 -0.198627 -0.193747 0.242177 0.491172 0.00545376 -0.149618 -0.362134 -0.337836 -0.186467 -0.0798694 -0.191155 -0.423885 -0.266771 0.0641828 0.279866 0.349626 0.228076 -0.0278226 -0.157437 -0.0943146 -0.176914 -0.230632 -0.322283 -0.184933 0.173359 0.319967 0.223288 -0.0180042 -0.104217 -0.168396 -0.0447226 -0.0572422 0.0751008 -0.237127 -0.224112 -0.119262 -0.0699966 0.0566126 -0.17577 -0.288957 -0.233251 -0.239133 -0.140735 0.127506 -0.205449 -0.249032 -0.177561 -0.136455 -0.18123 -0.26505 -0.403737 -0.331628 -0.283037 -0.256682 2 2 -7.66177 0.58306 11 11 5 0.734154 0.597211 0.244129 0.392758 0.72936 0.345664 -0.0632769 0.202497 0.62695 0.147236 0.154892 0.209986 0.30006 0.524036 0.380129 0.239626 -0.00464753 -0.329504 -0.0738783 0.106868 -0.0713943 -0.0266461 0.231687 0.11135 0.405771 0.296104 -0.195946 -0.332089 -0.504799 -0.407432 0.0128259 0.00666374 -0.0994475 -0.261862 -0.296791 -0.322078 -0.26186 0.116373 -0.0698776 -0.462003 -0.467213 -0.13895 -0.332408 -0.506132 0.854652 0.693729 0.333424 0.659303 0.991742 -0.0824866 -0.384716 -0.13655 0.216233 0.252873 0.174047 -0.355711 -0.0939286 0.00681337 0.218196 -0.168099 0.148405 0.44782 0.511674 0.823169 0.593351 0.270884 0.024435 0.176833 0.221727 0.0675082 0.174122 0.460019 0.183126 -0.0589412 -0.0051109 -0.306644 -0.223266 0.137142 -0.210498 -0.418037 -0.728429 -0.493525 -0.681545 -0.571314 -0.503817 -0.0667537 -0.256976 -0.301758 0.0117594 -0.171825 -0.612788 -0.818889 -0.567826 -0.575398 -0.238618 -0.0216402 -0.0973569 -0.17005 0.0718226 0.2365 0.108822 -0.33297 -0.526805 -0.544606 -0.587789 -0.390791 -0.120779 0.357229 0.0903972 0.0951063 0.270534 0.193577 0.0324881 -0.206906 -0.379963 -0.157923 -0.0450508 0.150711 0.377975 0.133854 -0.0440223 3 11 11 3 2 0 -7.30895 1.26844 11 11 5 0.0343188 0.211433 0.0349315 0.0938588 0.0946568 -0.225916 0.0339324 0.378476 -0.000518942 -0.643729 -0.738277 -0.00429308 -0.257667 -0.344919 -0.338135 -0.138948 -0.474609 -0.0612829 -0.282648 -0.618391 -0.699837 -0.783257 0.0600263 -0.266226 -0.345753 -0.39648 -0.452285 -0.429993 -0.277655 -0.128833 -0.125215 -0.327937 -0.430304 0.236386 -0.339572 -0.292401 -0.023408 0.225774 0.0258017 0.160089 0.552231 0.413281 0.229354 0.124475 0.353457 -0.0399089 -0.218597 -0.121648 -0.173218 -0.227792 -0.233979 -0.0372262 0.339635 0.641081 0.878958 0.346207 0.143589 0.186138 0.173678 -0.0529786 -0.395466 -0.439535 -0.239894 0.215008 0.479019 0.535649 0.229795 0.333463 0.360459 0.311802 -0.115708 -0.428824 -0.718324 -0.86032 -0.543684 -0.21772 -0.109407 0.118331 0.296732 0.328296 0.237609 -0.132586 -0.422149 -0.485817 -0.415451 -0.173704 0.149234 0.300424 0.119929 0.155958 0.352268 0.105111 -0.0100801 -0.121383 -0.00544647 0.00936081 0.298561 0.482078 0.595627 0.0493184 -0.0158625 0.143265 -0.177832 -0.0447938 0.0353491 0.192437 0.202219 0.461465 0.694804 0.731058 -0.14384 -0.20532 -0.232255 -0.286249 -0.218727 0.0912822 0.331262 0.467964 0.689867 0.791895 0.845554 2 1 -6.93648 0.938216 11 11 5 -0.0267812 -0.299519 -0.12016 0.155413 -0.360355 -0.477415 0.302077 0.403102 0.3151 0.855551 1.40515 0.0593194 -0.10966 -0.156541 0.413734 0.32512 -0.0581886 0.463152 0.464162 0.977947 0.661091 1.47054 0.0292681 0.113086 -0.0868862 -0.0773733 0.200553 -0.248469 -0.148016 0.752456 0.433486 0.221654 0.9519 0.0755563 0.248253 -0.270597 -0.285106 -0.696198 -0.791975 -0.304291 -0.27445 -0.17841 -0.059724 0.104089 0.152553 0.255129 -0.204313 -0.276541 -0.544968 -0.533246 -0.430316 0.0820064 0.405972 0.0704167 0.0427978 0.0621614 -0.00254583 0.230044 0.119675 0.170133 -0.0824177 -0.16469 0.177884 -0.0100427 -0.142743 -0.534567 -0.27763 0.117561 -0.0221288 -0.160674 -0.272739 -0.146097 -0.0720691 0.0940477 0.283795 0.116138 -0.20315 -0.290156 -0.00179419 -0.10585 -0.262574 -0.583279 -0.189778 0.220579 0.464771 0.34771 0.293421 0.0153646 -0.122613 -0.0259509 0.0699942 -0.0298786 -0.35334 -0.147273 0.0621284 0.0599385 0.0468139 -0.13154 -0.380098 -0.231244 0.246502 0.00380849 -0.00279744 -0.0276202 -0.414391 -0.129567 -0.152732 -0.268336 -0.289225 -0.559284 -0.0543989 0.0824378 0.0564218 -0.102907 0.105009 -0.115889 -0.0667264 -0.219696 -0.372333 -0.556348 -0.558358 2 2 -6.97072 0.674976 11 11 5 0.208767 0.334853 0.276192 0.380943 0.538793 0.390121 0.792278 0.765657 0.470368 0.157002 0.345175 0.463539 0.333584 0.0886431 0.147721 0.114158 -0.0344886 0.256168 -0.150648 -0.139684 -0.403501 -0.472044 -0.0576463 0.11145 -0.176836 -0.125744 -0.569388 -0.376663 -0.489908 -0.198975 -0.0979317 -0.57291 -0.671884 0.134616 0.202049 0.234556 0.452354 0.884659 0.508529 0.392707 0.656641 0.306752 -0.244163 -0.144642 0.291563 0.13206 -0.439895 -0.296827 0.0495949 -0.0133505 0.222368 0.107202 -0.179064 -0.13129 0.242028 0.0810858 0.0342804 -0.218093 -0.0274133 0.136575 0.121122 0.0854992 0.278686 0.628923 0.291096 0.844722 0.125661 -0.0571864 -0.366367 0.146588 0.083666 -0.172034 -0.697302 -0.704437 -0.591826 -0.547972 -0.590899 0.113058 0.164056 0.0118125 0.296757 -0.140916 -0.423755 -0.788699 -0.762903 -0.923897 -0.546217 -0.723438 0.234232 0.208529 0.35667 0.388933 0.0842166 -0.344876 -0.342068 -0.555111 -0.38621 -0.101232 -0.32508 0.234731 0.247542 0.208264 0.0507033 -0.00530798 0.0625874 -0.249555 -0.431784 -0.367987 -0.232666 -0.276585 0.230083 0.495307 0.0776042 0.0900869 0.131938 0.206216 -0.0291533 -0.118091 -0.0456002 0.0322711 0.305564 3 0 0 0 3 0 0 0 3 12958656 3 0 3 11 11 3 2 0 -12.5881 2.22799 11 11 5 0.157335 -0.277565 -0.560623 -0.369009 0.392066 0.259867 0.299886 0.323877 0.188523 0.281927 0.750333 0.205897 -0.149162 -0.444328 -0.0819301 0.635505 0.086992 0.170104 0.446818 0.429042 0.388805 0.515071 -0.176104 -0.251446 -0.350163 0.0454953 0.42357 -0.175456 0.0645453 0.653981 0.574066 0.476936 0.403183 -0.268255 -0.158026 -0.0825302 0.267992 0.587323 0.258008 0.254079 0.526484 0.596265 0.514892 0.290245 -0.0253335 0.030921 -0.114615 -0.416798 -0.58619 -0.370645 -0.579728 -0.577595 -0.658751 -0.660803 -0.747529 0.0479935 -0.0496438 -0.359575 -1.04569 -1.46657 -1.4984 -0.799387 -0.00793224 -0.118366 -0.310617 -0.729589 0.0427104 0.0800964 0.125781 -0.008622 0.33061 0.652928 0.925952 1.23121 0.519301 -0.127864 -0.657421 0.232092 0.0753186 -0.0396854 -0.0659718 0.0824492 0.184617 0.339982 0.395938 0.291255 -0.289787 -0.387867 0.265706 0.0347562 -0.126215 0.0210643 -0.0765077 -0.0520327 -0.0321731 -0.165617 -0.29555 -0.318724 -0.234852 0.263064 0.238252 0.0742075 0.18074 0.0340013 -0.188414 -0.261247 -0.376263 -0.194624 -0.0950129 -0.16361 0.294078 0.370086 0.390176 0.354746 0.274785 0.00983329 -0.214356 -0.282357 -0.253493 -0.142705 -0.344467 2 1 -9.22658 1.53019 11 11 5 0.0532757 -0.0708323 0.0262413 -0.206001 -0.69091 -0.540038 -0.493999 -0.439905 -0.50945 -0.529091 -0.598646 0.18053 -0.221355 -0.330651 -0.460337 -0.726915 -0.759868 -0.549134 -0.487233 -0.550864 -0.601199 -0.67003 0.045123 -0.170279 -0.342815 -0.117985 -0.250494 -0.237229 -0.0724918 -0.0295917 -0.198562 -0.12031 -0.266673 -0.0418603 -0.118513 -0.117863 0.0451494 -0.0142784 -0.417633 0.239702 0.551079 0.587434 0.943221 1.21578 0.223475 0.252705 0.0229659 0.0492101 0.284996 0.096759 0.111787 0.42035 0.524237 0.697673 0.778167 0.357497 0.0975792 0.184993 -0.0947654 -0.424539 -0.398176 0.280295 -0.0595346 0.351485 0.832219 0.758708 0.249985 0.390158 0.333144 0.327957 0.534856 0.0595118 -0.16577 0.05577 0.385284 0.388448 0.728487 -0.00724407 0.120377 0.126211 0.271397 -0.000757154 0.56406 0.489939 0.329387 0.348183 0.242953 -0.156424 -0.18524 -0.287424 -0.264329 -0.443482 -0.390563 -0.296596 -0.0745593 0.068805 0.133982 -0.225587 -0.193602 0.0790455 -0.0327619 0.00987023 -0.0658485 -0.19054 -0.428423 -0.217302 -0.337808 -0.25237 -0.279871 0.258892 0.115635 0.261935 0.0182983 0.0872897 -0.218433 -0.456709 -0.163128 -0.00289782 0.34308 0.38666 0.345475 2 2 -11.9801 2.00328 11 11 5 0.0188326 -0.020221 -0.596028 -0.978337 -0.072833 -0.0233471 -0.0302137 -0.315909 -0.714467 -0.588337 -0.208752 0.324356 0.268081 -0.330377 -0.353192 0.676985 0.157286 -0.0723476 -0.218116 -0.498857 -0.357745 0.0725453 0.0557534 0.0689846 -0.37228 -0.237155 0.692609 -0.171477 -0.114956 0.00824619 -0.0315934 -0.0453228 0.3364 -0.336115 0.0673372 0.0860662 0.805827 1.15669 1.05303 0.961285 1.22973 0.954991 0.799469 0.996145 -0.283201 0.174705 0.29735 0.509984 0.781663 0.52576 -0.224553 -0.250008 -0.234576 0.113455 0.195038 -0.0520717 -0.115593 -0.192046 -0.597615 -1.07564 -1.04807 -0.890314 -0.439966 -0.190117 0.0206307 0.203183 -0.0778217 0.00440751 0.340807 -0.180415 -0.162304 0.132308 0.129561 0.311616 0.197905 -0.0879762 -0.145254 -0.0248174 -0.010166 -0.127174 -0.157771 -0.0325602 0.00877948 0.147405 0.632034 0.184772 -0.0830083 -0.206968 -0.0550822 -0.0189015 -0.115424 -0.0800734 -0.168684 -0.0887239 0.115747 0.0557122 -0.0110227 0.124366 -0.0195757 0.186629 0.124872 -0.0488237 -0.055343 0.0818403 0.030106 -0.144601 -0.022656 -0.0979984 0.159199 -0.173579 0.160158 -0.0754756 0.24022 0.113011 -0.0497303 -0.50943 -0.321524 -0.154335 -0.415588 -0.276087 -0.613233 3 11 11 3 2 0 -12.9524 1.6562 11 11 5 0.548095 0.337392 0.276047 0.152244 0.316091 0.607468 0.537341 0.217522 -0.272087 -0.412362 -0.103901 0.502611 0.171057 0.23831 0.257072 0.211523 0.339064 0.348574 0.164162 -0.0692488 -0.315673 -0.0918811 0.00439281 -0.0353261 0.321893 0.470351 0.584435 0.538114 0.348237 0.112574 0.0660779 -0.130287 -0.021621 -0.0792204 -0.000653313 0.429511 0.748698 0.92513 0.859684 0.784052 0.400293 0.102768 -0.147407 -0.195557 -0.325188 -0.224805 -0.260367 -0.343782 -0.251045 -0.0420767 0.120629 -0.0657554 -0.381604 -0.692245 -0.542337 -0.412342 0.012812 -0.0919344 -0.477552 -1.41743 -1.57088 -1.25607 -0.84315 -0.636696 -0.459707 -0.220999 0.0170117 0.385842 0.479442 0.476654 0.216235 0.0284693 -0.488271 -0.717013 -0.435821 -0.0199459 0.0787586 0.366763 0.496183 0.559137 0.467626 0.26473 0.102242 -0.144964 -0.459845 -0.44499 0.285413 0.375774 -0.0314314 -0.0759591 0.0689444 -0.000235495 -0.221468 -0.0343993 -0.0439094 -0.339099 -0.253063 0.392606 0.301402 0.152208 -0.104719 -0.0614845 -0.120491 -0.0370999 -0.00617893 -0.0987354 -0.345338 -0.161586 0.192424 0.157889 0.190594 -0.0690403 -0.234457 -0.258566 -0.0421774 -0.102837 -0.162635 -0.32264 -0.140895 0.140443 0.119478 2 1 -9.76908 1.55592 11 11 5 -0.676076 -0.506879 -0.341825 -0.290707 -0.343923 -0.457632 -0.223032 -0.118492 -0.112426 0.0749596 0.317994 -0.529129 -0.460615 -0.507283 -0.659699 -0.655059 -0.595412 -0.341329 -0.18773 -0.209077 -0.074997 0.170552 -0.149285 -0.0646875 -0.141838 -0.333803 -0.343019 -0.374642 -0.347285 -0.292845 -0.253123 -0.202462 -0.0444033 -0.163148 0.0292356 0.249761 0.23215 0.0538149 0.0745875 0.112836 0.147162 0.0307395 0.143983 0.126887 -0.244196 -0.137147 0.312904 0.561063 1.02212 1.1881 0.808954 0.533454 0.466669 0.313949 0.345473 -0.347964 -0.419948 -0.441177 -0.047085 0.191149 0.351158 0.447366 0.239449 0.37164 0.439679 0.259721 0.0759907 0.202353 0.406042 0.59285 0.207584 -0.489088 0.106525 0.654084 0.82654 0.469147 0.23851 0.0201339 0.350167 0.420933 0.388044 0.0351453 0.0637703 -0.265249 0.174561 0.553918 0.363874 -0.452506 -0.348192 0.124125 0.0281439 -0.425542 -0.326845 -0.410877 -0.349659 0.0345672 0.468399 -0.165018 -0.675896 -0.427557 -0.127073 0.00141786 -0.232323 -0.276084 -0.11341 -0.0371918 0.132683 0.116004 -0.0109378 -0.276757 -0.272305 -0.107288 0.0199524 0.0654031 0.0821418 0.106012 0.0454191 0.144682 0.309545 0.186119 -0.203123 2 2 -13.631 1.93415 11 11 5 -0.190743 -0.307564 -0.424052 -0.546803 -0.698779 0.0722437 0.35178 0.358694 -0.209407 -0.429083 -0.416304 0.492954 0.0805117 -0.329098 -0.472239 -0.383499 0.101909 0.442672 0.356957 0.151513 -0.515315 -0.250367 0.32859 -0.0673466 0.0540512 -0.185691 -0.0440497 0.0483506 0.0570739 -0.0194535 0.320879 -0.0103282 0.0259642 0.537693 0.42191 0.724654 0.956685 1.07139 1.04836 0.911758 0.601777 0.66978 0.640059 -0.161524 0.100983 -0.00843688 -0.250408 0.178612 0.696667 0.76703 1.05671 0.806443 0.511641 -0.0554244 -0.568599 -0.672235 -0.518284 -0.596163 -0.511123 -0.74435 -0.680216 -0.388476 0.081523 0.111765 -0.468352 -0.603983 -0.572626 -0.208317 0.0298011 -0.0194185 -0.0160235 -0.000980679 -0.197742 -0.0736796 -0.296096 -0.396467 -0.385646 0.0986579 0.259804 0.286636 0.302353 0.147667 -0.128221 -0.127772 -0.304232 -0.544663 -0.236647 -0.266544 0.0354894 0.0946855 0.266982 0.229626 0.1421 0.11382 -0.0165919 -0.129291 0.0340091 0.122432 -0.103554 0.154503 0.0992405 0.179291 0.255273 0.147563 0.309087 -0.0301999 -0.0930286 -0.109676 -0.325961 -0.575375 0.0365861 -0.0243177 -0.0528561 -0.102734 0.165723 -0.0742634 -0.154718 -0.28497 -0.406324 -0.295424 -0.368856 3 11 11 3 2 0 -13.6754 1.97086 11 11 5 0.358152 0.212263 0.134606 -0.198977 -0.0553073 0.131244 0.00689694 0.400261 0.624534 0.341951 0.153748 0.239535 0.286985 0.403613 0.251805 0.168234 0.188925 -0.250279 -0.000549938 0.536797 0.296656 0.160272 0.0962966 0.0221681 0.251218 0.188057 0.0580352 -0.0585264 -0.56958 -0.362471 -0.0581843 -0.20294 -0.125361 -0.0605003 0.190512 0.157899 0.413897 0.214806 -0.251518 -0.682226 -0.149435 -0.106479 -0.391426 -0.363019 -0.241457 0.309533 0.152524 0.233236 -0.292085 -0.979943 -0.715801 -0.527453 -0.40609 -0.400103 -0.148866 -0.172377 0.239331 0.0921408 -0.480444 -1.63696 -1.46304 -0.939478 -0.574646 -0.488706 -0.380751 0.0396656 -0.290209 -0.273292 -0.0551943 -0.050105 0.595479 0.597655 0.492176 0.492679 0.475285 0.355497 -0.0212088 0.379813 0.220705 0.450533 1.00386 0.801226 0.2543 0.678503 0.897589 0.71333 0.396217 0.0784954 -0.113424 -0.315888 -0.292858 0.0831689 -0.010118 0.220382 0.540595 0.575546 0.29574 0.118167 -0.00446334 -0.307049 -0.556386 -0.73074 -0.606221 -0.382533 -0.0274128 0.16576 0.149132 -0.0188335 -0.0345268 -0.0365229 -0.0132185 -0.385532 -0.606777 -0.566284 -0.240325 0.0610801 0.185454 0.243518 0.203453 0.188589 0.204392 2 1 -12.3813 1.59259 11 11 5 -0.225995 0.0361179 -0.219141 -0.290789 -0.287945 -0.186317 -0.0210118 0.168815 -0.756293 -0.782661 -0.14988 -0.251909 -0.275417 -0.409269 -0.251517 -0.262523 -0.312597 -0.0439878 0.809077 -0.140895 -0.51753 -0.374637 -0.493907 -0.202972 -0.0970899 -0.0491608 -0.111915 -0.196926 0.124021 0.627968 0.364208 -0.175182 -0.210479 0.0779187 0.64896 0.254695 0.353062 0.0378238 -0.0040263 0.66061 1.06238 0.43211 0.135999 0.0923697 0.405221 0.0503505 0.208805 -0.00640394 0.269012 0.776201 1.68053 1.13874 0.789223 0.648543 0.191549 -0.137687 -0.000328982 0.228805 0.000983492 -0.240671 0.353324 0.291318 0.302712 0.383224 0.297161 0.129364 0.0316049 0.136043 -0.0765886 0.476203 1.05313 0.0468524 0.0936089 0.186938 -0.0779029 -0.245534 -0.226813 -0.689783 -0.525992 0.00542277 -0.176752 -0.904681 -0.511707 -0.39682 -0.64081 -0.623869 -0.523009 -0.393035 -0.749212 -0.534438 -0.387622 -0.431989 0.0177906 -0.154361 -0.388643 -0.365247 -0.332201 -0.33606 -0.180668 -0.461479 -0.137367 -0.0180241 0.506159 0.514885 0.223525 0.0172054 -0.111848 -0.0780064 -0.0562614 -0.0863463 -0.361747 0.0201112 0.243646 0.430582 0.486408 0.355502 0.134818 -0.046415 -0.045887 -0.0332131 -0.0142386 2 2 -13.8315 1.26175 11 11 5 0.0593772 -0.068829 -0.0385012 -0.472811 -0.133615 0.223498 0.25929 0.206536 0.0117112 0.00202996 -0.225247 0.217638 0.391035 0.333068 0.149097 0.274297 0.366532 0.0840043 -0.15848 0.235096 0.153258 -0.0723147 0.379711 0.316047 0.412062 0.234015 0.0999067 0.154442 -0.112319 -0.201651 0.11574 -0.0317434 -0.00352436 0.391642 0.40488 0.228865 0.455643 0.728316 0.429023 0.0948781 0.499251 0.523572 -0.0102277 -0.306979 0.137085 0.312202 0.278692 0.873298 0.619331 -0.136199 -0.00217033 -0.228893 -0.106111 -0.331673 -0.80912 -0.134332 0.239942 0.267568 -0.353067 -1.34795 -1.75269 -1.35486 -0.775799 -0.483654 -0.572952 -0.669925 -0.452714 -0.265808 -0.443134 -0.481023 -0.163729 -0.124044 -0.328347 0.0992506 0.14876 -0.429211 -0.63575 0.547071 0.324894 0.476911 1.15235 0.728175 -0.0229083 0.0486303 0.421555 0.258087 -0.0352516 0.0271326 0.308894 0.415824 0.477156 0.589812 0.191836 0.0844204 0.166386 0.619896 0.382327 0.31323 -0.129537 -0.164186 -0.0485877 0.153772 -0.0185915 -0.279655 0.0542654 0.264489 0.206971 0.0316264 -0.184059 -0.238059 0.0921326 -0.194278 -0.489147 -0.764422 -0.434024 -0.309354 -0.406505 -0.510003 -0.418064 -0.502021 -0.38038 3 11 11 3 2 0 -13.1989 1.56222 11 11 5 0.134529 -0.0283493 -0.386079 -0.0369413 0.461618 0.348431 0.476647 0.357364 0.0905265 -0.0405531 0.101701 0.271222 0.224122 -0.139933 0.0388338 0.291746 -0.127872 0.0307796 0.265918 0.196697 0.00652797 -0.45551 0.195588 0.24496 -0.0702435 -0.098469 -0.0550078 -0.235323 0.0561433 0.563932 0.246465 -0.173642 -0.460614 0.124559 0.128428 -0.0232659 -0.206713 0.0327978 0.0552394 0.144468 0.186575 -0.13833 -0.512823 -0.462254 0.147488 -0.117948 -0.309352 -0.599367 -0.307177 0.308789 0.590832 0.126711 -0.806793 -1.11574 -1.03191 0.23332 -0.0404301 -0.319308 -0.725801 -0.970867 -1.32981 -1.2409 -0.653732 -0.144583 -0.0541576 -0.274118 0.295485 0.0126135 -0.0206559 0.285658 0.622842 0.531456 0.462823 0.863844 1.26078 0.983255 0.859858 0.214336 0.0808649 -0.0483176 -0.28693 -0.153758 0.0107835 -0.138626 0.0192604 0.398388 0.648406 0.880537 0.0775516 0.037131 0.023755 0.01431 -0.248337 -0.485317 -0.655102 -0.690338 -0.331305 0.132376 0.387755 0.0741202 0.0711185 0.231331 0.264975 -0.0201284 -0.586363 -0.85759 -0.861358 -0.511889 -0.0655089 0.150214 0.0301975 0.0761522 0.43534 0.367204 0.257519 -0.00283017 -0.0383179 0.0777683 0.330863 0.65387 0.888874 2 1 -9.46589 0.793841 11 11 5 -0.15696 -0.194124 0.1379 -0.115108 -0.504317 -0.420174 -0.433842 -0.362789 -0.408809 -0.481247 -0.247845 -0.0250809 -0.232855 -0.0338778 -0.0862363 -0.28358 -0.551283 -0.409524 0.0818972 -0.329496 -0.246905 -0.09943 0.0305458 -0.0287816 0.0794022 0.224746 0.130325 0.0969273 0.319541 0.26314 -0.00328965 0.127036 0.791582 0.019418 0.166412 0.0100701 0.028148 0.13135 -0.0624422 0.447143 0.427296 0.13595 1.05845 2.09655 -0.0389465 0.234227 0.307238 0.330756 0.77687 0.433176 -0.15418 0.0541002 0.470006 1.00916 1.04554 -0.18574 -0.0910741 -0.389323 -0.24005 -0.206499 -0.671405 -0.324394 0.0652592 0.425692 0.219603 0.0540884 0.123584 -0.0695291 -0.0918268 -0.0904723 -0.0809212 -0.0677155 0.0709661 0.156356 -0.0521822 -0.177097 -0.0072699 -0.0252515 0.252174 -0.010615 -0.504213 -0.82448 -0.836191 -0.792467 -0.481404 -0.244662 -0.411346 -0.607499 -0.164605 0.0675202 0.0607705 0.138736 -0.142663 -0.355092 -0.094691 0.160535 0.479962 0.20195 -0.0819193 -0.0625793 0.0626687 0.221246 0.0113472 0.0709738 -0.171993 -0.102611 0.128254 0.254011 0.294895 0.0253317 -0.201836 0.0286732 0.0286328 -0.0147542 -0.597551 -0.446149 -0.12306 0.328127 0.342213 0.264838 -0.0490515 2 2 -13.5039 1.72067 11 11 5 0.127229 0.098663 -0.112729 -0.159725 0.30289 0.219718 0.254064 0.0730621 -0.212712 0.0682254 0.27 0.152109 0.277057 -0.333 -0.0694035 0.292671 0.243435 0.190298 0.178267 0.0488032 0.137847 -0.0261521 0.114256 0.447122 0.161274 0.250468 0.216088 0.0136209 0.141235 0.522958 0.490608 0.118263 0.0685317 0.279964 0.227704 0.0654022 0.359236 0.210515 0.0815464 0.309141 0.478006 0.349059 0.0922891 0.230011 0.0742869 0.188894 0.0322544 0.235225 0.471906 0.910252 0.890181 0.277731 -0.213711 -0.888301 -0.881987 0.0321911 0.0749265 -0.439629 -0.725671 -1.17928 -1.39639 -1.19592 -0.820949 -0.476701 -0.709172 -0.62609 0.0391226 0.0967592 0.141045 0.347364 0.656516 0.616482 0.343127 0.484407 0.685737 0.316052 0.177425 0.144183 0.0994075 -0.0247006 -0.241827 -0.104346 0.248343 0.332727 0.460121 0.62088 0.173548 0.379008 0.0694088 -0.195201 -0.32627 -0.186118 -0.15761 0.155786 0.152006 0.026463 -0.0779646 0.0736481 0.332261 0.0852642 -0.362533 -0.449862 0.100081 -0.253552 -0.343466 -0.351667 -0.50958 -0.361326 -0.109136 -0.298068 0.0107561 0.00889886 0.367375 0.266247 -0.0242099 -0.425103 -0.77433 -0.751372 -0.834495 -0.863091 -0.866593 3 1610612736 -1071999177 0 3 11 11 3 2 0 -6.25369 1.74808 11 11 5 0.203296 0.0746849 0.0930618 0.0658162 0.0691657 0.0906961 0.0443161 -0.107348 -0.0704967 0.106935 0.0351288 -0.126829 -0.312093 -0.214587 -0.196507 -0.191234 -0.225962 -0.182659 -0.258315 -0.167583 -0.109674 0.0640432 -0.220271 -0.401256 -0.419518 -0.161025 -0.338851 -0.510371 -0.533062 -0.428214 -0.312589 0.0252996 0.274605 0.126074 -0.0789416 -0.202348 -0.194458 -0.425131 -0.646706 -0.69554 -0.520028 -0.23084 0.19572 0.463237 0.31182 0.286076 0.274486 0.131966 -0.14645 -0.576773 -0.624027 -0.499743 -0.098113 0.252802 0.432083 0.467307 0.235869 0.384579 0.379378 0.245552 -0.44343 -0.674625 -0.492983 -0.0349996 0.236543 0.476737 0.541434 0.184149 0.245982 0.644666 0.572045 -0.152045 -0.757847 -0.573193 -0.12214 0.195321 0.400304 0.487894 0.225237 0.0447987 0.470028 0.393332 -0.15465 -0.572212 -0.509342 -0.113412 0.194041 0.331323 0.569796 0.125238 -0.118104 0.104564 0.432287 -0.0593449 -0.36969 -0.36143 -0.135842 0.150439 0.360864 0.587683 -0.0449896 -0.253408 0.0169369 0.436112 0.292346 -0.205835 -0.194994 0.109368 0.239223 0.413577 0.507034 0.0213797 -0.355819 -0.0437626 0.470533 0.594341 -0.0745065 -0.136121 0.05193 0.30999 0.610757 2 1 -5.7748 0.391836 11 11 5 -0.423128 -0.208382 -0.650347 -0.840375 -0.75957 -0.606538 -0.295024 -0.048523 0.108464 0.186438 0.0375423 0.128986 0.23679 -0.387677 -0.699352 -0.753207 -0.587583 -0.400887 -0.22509 0.0951343 0.154493 0.318166 0.408717 0.533414 0.228264 -0.43398 -0.800052 -0.662661 -0.385207 -0.268502 0.158352 0.25713 0.33317 0.715003 0.352604 0.24792 0.274969 -0.328497 -0.612237 -0.253611 0.281909 0.388661 0.372582 0.30892 0.253777 0.366461 0.375642 0.213441 0.380686 -0.244648 -0.144749 0.156275 0.2583 0.128183 -0.000718954 0.658582 0.208332 0.46639 0.215461 0.363394 0.0434579 -0.390877 -0.000853613 0.10604 -0.0483867 0.0492317 0.337419 0.0649973 -0.271055 -0.0691968 0.128521 -0.00895313 -0.253342 0.203587 0.116106 0.155248 0.0521669 -0.30395 -0.265056 -0.535472 -0.275155 0.0212281 -0.0775521 -0.0641819 0.313356 0.294304 0.127444 0.0820504 -0.468829 -0.22455 -0.173877 -0.447867 -0.0863469 0.0504016 -0.0629556 0.399292 0.507987 0.304751 0.267693 -0.41803 -0.214407 -0.13643 -0.313562 -0.00826994 0.235672 0.106221 0.357146 0.518651 0.0819739 0.142721 -0.955679 -0.00464023 0.119953 0.146647 0.265764 0.551556 0.168421 0.0670714 0.0986129 0.245646 0.196137 2 2 -6.44405 0.44776 11 11 5 0.520482 0.25103 -0.1407 0.199103 0.558228 0.343574 0.507457 -0.0284942 0.217853 0.15559 0.0126634 0.264508 0.0954429 -0.171161 0.17884 0.446399 0.509601 0.728498 0.202026 0.0319239 -0.23067 -0.167479 -0.502395 -0.206353 -0.312784 0.0577883 0.222824 -0.0548081 -0.229025 -0.277118 -0.333148 -0.16016 -0.129513 -0.5552 -0.18071 -0.124522 -0.0920818 -0.184854 -0.247508 -0.349914 -0.550536 -0.272864 -0.187297 -0.229771 0.0813597 0.376652 -0.253987 -0.0416835 0.152981 -0.280779 -0.228435 -0.160238 -0.0593707 0.0956475 -0.181723 -0.02919 0.0440713 0.350141 0.365887 0.267505 -0.149534 -0.305287 -0.0759804 -0.05323 0.29538 0.116777 0.0329143 -0.00810083 0.183527 0.783726 1.11432 0.44198 -0.502386 -0.56075 -0.0528464 -0.062663 0.0781112 0.0215942 0.174424 0.469794 0.726039 1.11903 0.504575 -0.506237 -0.885245 -0.502962 -0.146435 0.015315 0.232193 -0.111075 0.321075 0.290461 0.620217 0.323185 -0.600847 -1.18603 -0.241458 -0.301692 -0.065087 0.405154 0.191741 0.0281709 0.178026 0.469827 0.564792 -0.143833 -0.720176 -0.258904 -0.328479 -0.342557 -0.094489 -0.265825 -0.265825 0.282518 0.398591 0.791199 0.0397832 -0.810791 -0.840314 -0.447664 -0.46134 3 11 11 3 2 0 -6.0012 0.777483 11 11 5 0.241062 0.323007 0.420775 0.484038 -0.173128 -0.717596 -0.645096 -0.425572 0.0102671 0.0660008 0.280905 0.209569 0.0731391 0.0531672 0.397851 -0.199844 -0.594929 -0.647786 -0.45174 -0.0298652 0.0349063 0.160469 0.146317 -0.353545 -0.175899 0.31125 -0.1259 -0.438452 -0.524312 -0.369416 -0.0395752 0.0319295 0.0130633 -0.0908927 -0.37519 -0.270274 0.328908 0.155027 -0.31138 -0.460427 -0.264697 -0.00969836 0.0754602 0.0691889 0.129652 -0.298795 -0.239402 0.128258 0.605268 -0.0981674 -0.348922 -0.300158 0.0345239 0.142432 0.0801662 0.163408 -0.142893 -0.309114 -0.15514 0.618076 -0.0167205 -0.369643 -0.262216 0.0162245 0.0975946 0.0622062 -0.0486404 -0.13328 -0.360678 -0.301411 0.389356 0.0255801 -0.437426 -0.172895 0.0878407 0.084536 0.104838 -0.0727464 0.21577 0.0399998 0.0650431 0.154733 0.175821 -0.5355 -0.215406 0.0347036 0.117162 0.246226 0.0667359 0.407031 0.383209 0.493861 0.402419 0.212403 -0.575628 -0.233137 0.118864 0.120714 0.204108 0.113759 0.344802 0.65895 0.73005 0.594964 0.211348 -0.505095 -0.18397 0.115106 0.0757156 0.185952 -0.469556 -0.0154488 0.559113 0.786342 0.481758 0.0699917 -0.576155 -0.358195 0.0406709 0.155954 0.192 2 1 -5.86893 -0.133757 11 11 5 -0.334949 0.0256555 0.0777918 0.334071 -0.00939933 -0.289051 -0.193129 0.28242 0.238507 0.0326838 -0.0255733 -0.349782 -0.349232 -0.544736 -0.288609 0.0864963 -0.121768 0.132005 0.398067 0.236716 0.202055 0.0829309 -0.313398 -0.448185 -0.579397 -0.52308 0.242855 0.0225084 0.194785 0.531323 0.411491 0.231838 0.296958 -0.60693 0.0624674 -0.288762 -0.155712 0.102304 0.206739 0.100789 0.310237 0.388945 0.197964 0.16676 -0.365206 0.00105657 0.127167 0.164606 0.00877921 0.0895248 -0.100835 0.280587 0.261201 0.0387136 0.234766 -0.690357 0.00263087 0.228267 0.666744 -0.0306474 0.0984134 -0.172828 0.0467598 -0.139296 -0.0779111 0.175763 -0.868303 -0.155011 -0.088186 0.836212 0.385103 0.398095 -0.323022 -0.207844 -0.246889 -0.118175 0.0920312 -0.653493 -0.594272 -0.0213972 0.680584 0.504367 0.162639 -0.0415992 -0.423096 -0.311032 -0.0717613 0.0552761 -0.846834 -0.567876 -0.321241 0.617187 0.313607 0.266715 -0.10105 -0.468732 -0.282327 0.00957002 -0.00496763 -0.106793 -0.679602 -0.486678 -0.043274 0.568186 0.319 0.00517916 -0.582696 -0.296222 0.132242 -0.0323454 0.598671 0.164442 -0.264628 0.354566 0.83596 0.9167 0.615307 -0.533042 -0.206692 0.0979866 -0.00411801 2 2 -8.13574 0.551254 11 11 5 0.161877 0.191992 0.782339 1.19386 0.4123 -0.169841 -0.115951 -0.215458 0.0269914 0.123973 0.122009 0.276976 0.298747 0.714201 0.918564 0.455071 -0.311796 -0.726991 -0.31308 -0.00674115 0.230255 0.0797632 0.310352 -0.126141 0.0736826 0.568373 0.200371 -0.231896 -0.756178 -0.236762 -0.235068 0.131747 0.00595604 0.093501 0.0275779 -0.00732978 0.198789 0.412666 -0.0589684 -0.584884 0.0211915 -0.162636 -0.114539 -0.00879729 0.327378 0.155303 -0.082345 0.316635 1.02882 0.0959501 -0.56308 -0.551798 -0.232477 -0.202755 -0.348136 -0.226069 -0.244554 -0.304114 -0.0121185 1.21874 0.227378 -0.550797 -0.491945 -0.451297 -0.269537 -0.192508 -0.308654 -0.536869 -0.37378 -0.351705 0.600216 0.369544 -0.361216 -0.528121 -0.455204 -0.243757 -0.163077 -0.452044 -0.4852 -0.47411 -0.478139 -0.0132542 0.515357 -0.639735 -0.592244 -0.106435 -0.155346 0.179051 -0.170786 -0.336808 -0.182963 0.00567797 0.256608 0.713287 -0.584925 -0.392506 0.0139392 -0.055831 0.0577758 -0.0602592 -0.190464 0.264933 0.406718 0.352373 0.732947 -0.100664 -0.104957 -0.209719 -0.149071 -0.00479655 0.410787 0.447952 0.719091 0.636017 0.524959 0.431382 -0.0580295 -0.283297 -0.117366 -0.0290968 -0.184913 3 11 11 3 2 0 -5.98731 0.645899 11 11 5 -0.14184 0.125218 -0.117557 0.284101 -0.326823 -0.761132 -0.447139 -0.190587 -0.00676912 -0.242305 -0.335436 0.0773654 0.311675 0.30591 0.513556 -0.272952 -0.551932 -0.236382 -0.102837 0.0160508 -0.15672 -0.180436 0.349233 0.691607 0.661409 0.58864 0.016805 -0.32849 -0.123263 -0.07828 0.0412549 -0.0709628 -0.256041 0.38669 0.904272 0.964998 0.574007 0.176204 -0.472069 -0.0148651 0.0108281 0.0819236 -0.128532 -0.0808457 0.0743105 0.713459 0.865585 0.607458 0.10125 -0.685494 0.00568497 0.0815881 0.123925 -0.136762 -0.0278974 -0.134018 0.333183 0.52862 0.347371 -0.0471061 -0.71768 -0.0773716 0.172773 0.254692 0.0241288 0.0455853 -0.222562 0.245426 0.0889976 -0.0563109 -0.210225 -0.820456 -0.205962 0.155281 0.227281 0.105797 0.0479017 -0.35417 0.0346793 -0.112732 -0.229114 -0.277864 -0.727351 -0.31452 0.213541 0.219029 0.135996 -0.0231954 -0.391812 -0.115568 -0.0608334 -0.116821 -0.0848769 -0.474899 -0.370824 0.170561 0.241897 0.212097 0.115863 -0.257088 -0.247682 -0.0743963 -0.0793813 0.0214315 -0.367262 -0.384196 0.00958884 0.223304 0.222032 0.16083 0.0244174 0.0340281 -0.0571582 0.00569128 0.159992 -0.225533 -0.433718 -0.109852 0.118574 0.142641 0.158641 2 1 -5.77373 0.0934483 11 11 5 -0.81561 -0.0166318 0.396592 0.175241 -0.0289473 -0.327977 -0.294893 -0.372827 -0.134505 0.0920091 0.0560643 -1.00347 -0.188576 0.16864 -0.0365048 0.133202 -0.474225 -0.426169 -0.305592 -0.0505618 0.105353 0.0122612 -0.824674 -0.808724 -0.269575 0.0344106 0.215691 -0.292907 -0.502862 -0.197146 -0.0482548 0.128888 -0.0277277 -0.550168 -0.485888 -0.11097 0.421288 0.78471 0.0837141 -0.421729 -0.206381 0.0163491 0.0584956 -0.0434544 0.225898 -0.316245 0.0430779 0.831607 0.974676 0.288354 -0.260239 -0.0483659 0.00202905 -0.0978854 -0.146324 0.45431 0.0111599 0.140556 0.655328 1.14767 0.422492 -0.299075 -0.165303 0.0515847 -0.0166433 -0.210933 -0.240284 0.267606 0.330113 0.574935 0.893672 0.472139 -0.204641 -0.222685 0.105013 -0.0305413 -0.178971 -0.46079 0.217706 -0.0790866 0.313359 0.622336 0.1912 0.114782 -0.115994 0.0440938 -0.0913817 -0.156944 -0.325016 0.405369 0.246874 -0.00193546 0.234258 0.231363 0.0174765 -0.0397967 0.115591 -0.0309322 -0.0258441 -0.661183 -0.207403 0.144638 0.176805 0.141451 -0.0486165 0.138175 0.0109281 0.160061 0.0826277 -0.0745097 -0.249673 -0.166881 -0.259073 0.05436 0.0036432 -0.165259 -0.0530908 -0.0399088 0.181933 0.21293 0.121314 2 2 -8.02331 0.576115 11 11 5 -0.579883 -0.257908 -0.580605 0.935822 -0.0560132 -0.605251 -0.526024 -0.36325 -0.24746 -0.292045 -0.505425 -0.444395 -0.323084 -0.339062 0.509434 0.00681373 -0.770679 -0.513685 -0.117323 -0.242192 0.0261557 -0.388171 -0.237051 0.282238 0.353487 0.90742 0.574702 -0.275989 -0.656444 -0.338457 0.0153113 -0.103352 -0.175899 0.178055 0.343833 0.563315 0.393237 0.725215 -0.68272 -0.220128 -0.182591 0.212416 0.0111307 0.0586974 0.417262 0.608389 0.848962 0.688912 0.846478 -0.695329 -0.0774994 -0.130405 -0.144857 -0.106929 -0.297252 -0.113091 0.689948 0.965299 0.929738 0.562062 -0.245064 0.0987097 0.0558834 0.257802 0.0153836 -0.0674616 -0.517107 0.24782 0.626094 0.669715 0.212164 -0.634444 0.000151067 0.0733477 0.264592 -0.04896 -0.480186 -0.56339 -0.0739928 0.376653 0.420473 -0.0138972 -0.239824 -0.132585 0.205936 0.105713 -0.0173255 -0.416272 -0.632488 0.00766177 0.248935 0.637525 0.00550517 -0.40125 -0.230315 -0.0210331 0.125387 -0.336597 -0.560445 -0.547667 -0.0552121 0.0481182 0.00604348 0.135047 -0.248825 -0.00606313 -0.289277 -0.278353 0.16957 -0.0902738 -0.222055 -0.0550524 0.109587 0.418769 0.75377 -0.023981 -0.209356 -0.453436 0.163035 0.473198 0.115713 3 11 11 3 2 0 -4.75043 0.146752 11 11 5 1.59445 0.871591 0.142356 -0.543989 -0.350274 0.0848518 -0.00391822 0.0176936 -0.155316 -0.195252 -0.311395 0.306156 0.0245933 -0.131832 -0.587335 -0.332751 0.0194803 0.0391507 0.0816291 0.128702 -0.143925 -0.239782 -0.0755887 0.0323174 0.104534 -0.485741 -0.537272 0.00213582 0.203272 0.214495 0.216354 0.0213872 -0.0477968 -0.202299 -0.0911876 0.0610146 -0.604046 -0.86106 -0.0634648 0.251568 0.15572 0.233631 0.184761 0.114354 -0.11519 -0.000754686 0.0567168 -0.338054 -0.600435 -0.327335 0.121289 0.130542 0.284757 0.216354 0.222671 0.0521543 -0.112165 0.0170282 -0.153975 -0.318555 -0.617238 -0.0156512 -0.0439243 0.125556 0.240762 0.241295 0.180514 -0.016224 0.0378457 0.0229715 0.0435384 -0.587961 -0.359702 -0.253833 0.00599998 0.142828 0.407965 0.198775 0.0692965 0.161698 0.24059 0.234919 -0.194165 -0.542785 -0.4186 -0.228786 0.0342729 0.307496 0.186963 0.0999815 0.178587 0.418538 0.436817 0.326718 -0.341442 -0.419651 -0.276899 -0.116872 0.11268 0.103808 -0.0856116 -0.0545808 0.357833 0.520378 0.690437 0.117452 -0.380076 -0.417933 -0.251989 0.0648449 0.040828 -0.384477 -0.23511 0.342451 0.56511 0.81214 0.570862 0.0342743 -0.32102 -0.264541 -0.125006 2 1 -2.06882 0.258912 11 11 5 0.430622 0.971639 0.974145 0.940851 0.236441 -0.565751 -0.274293 -0.120343 -0.0505571 -0.00424372 -0.162442 0.00992718 0.404353 0.581536 0.642735 0.376399 -0.297232 -0.322462 -0.115553 -0.214957 -0.229346 -0.0887929 -0.111892 0.144721 0.403287 0.506963 0.196093 -0.233882 -0.135265 -0.0540769 -0.0746978 -0.197712 0.0025741 -0.308345 -0.0124801 0.196857 0.347689 0.0784576 0.0283389 -0.109402 0.130371 -0.03823 -0.24648 -0.0928282 -0.213611 -0.102608 0.330188 -0.0732778 0.347308 0.255388 -0.210712 -0.181628 0.044585 -0.147959 -0.191532 -0.235784 -0.0856889 0.0254061 -0.0859044 0.232652 0.141514 0.0440283 -0.000112077 0.0569791 -0.036036 -0.216566 -0.154299 -0.172021 -0.142193 -0.24546 -0.136307 0.325009 0.104928 0.110681 0.0193386 -0.024855 -0.116411 -0.188235 -0.126329 -0.164308 -0.177163 -0.224629 0.160242 0.0973168 0.0895006 0.178844 0.133728 -0.0373693 -0.0394674 0.0173941 -0.150101 0.0334683 -0.269975 0.0201472 0.0386992 0.0130016 0.170981 0.0885715 0.039316 -0.0684096 0.117952 -0.0844956 0.0770836 -0.199307 -0.0212556 0.0691904 -0.168062 0.14169 -0.161874 -0.0991441 -0.641702 -0.173019 -0.272292 -0.176627 -0.277147 -0.0861934 -0.0441414 -0.0837187 -0.187354 -0.00116026 -0.171434 2 2 -5.74742 0.17773 11 11 5 1.02081 0.707376 0.0439747 -0.596458 -0.178789 0.174835 0.119423 0.0234209 -0.613342 -0.222255 -0.458306 0.801736 0.657967 0.276717 -0.290483 0.220598 0.223379 -0.1426 -0.243672 -0.3025 -0.43441 -0.654291 0.289393 0.43194 0.0958432 0.151347 -0.0563177 -0.145123 0.00901445 -0.0349218 -0.344692 -0.136635 -0.271213 0.260365 0.247908 0.260253 0.152443 -0.433537 -0.0500438 0.357429 0.35274 -0.0689628 0.225547 -0.469677 0.607104 0.379631 0.789974 0.336628 -0.151371 -0.228652 0.395075 0.637598 0.0177865 0.00778577 -0.576208 0.0814571 -0.0326237 0.195616 -0.169082 0.332501 -0.677014 -0.00237234 -0.138041 -0.0644646 0.268677 -0.341009 0.184981 0.171734 -0.0508308 -0.285397 0.54672 -0.675557 -0.3986 0.0483982 0.193158 0.289456 0.193747 0.134897 0.0103692 -0.0640192 -0.0101813 0.305187 -0.133746 -0.513671 -0.439786 -0.0757815 0.0125532 0.217792 0.0774098 0.506629 0.231418 0.102432 -0.000657734 -0.0632098 -0.878657 -0.728375 -0.0456736 0.188536 0.139511 0.263682 0.308099 -0.0625164 0.347069 0.0302368 0.0818231 -0.519381 -1.26362 -0.493461 -0.0168683 0.482496 0.224713 0.231008 0.0456148 0.303075 -0.198137 0.135226 -0.353681 -0.927384 -0.710031 -0.130024 0.406041 3 11 11 3 2 0 -3.83069 0.875138 11 11 5 -0.341348 -0.689498 -0.366296 -0.0727713 0.0756954 0.191275 0.0516203 0.0576974 -0.0373745 0.0219231 0.140659 -0.30493 -0.439644 -0.598213 -0.235503 -0.112852 0.0999756 0.213495 0.104108 0.199419 0.217375 0.255076 -0.122283 -0.199071 -0.586428 -0.421265 -0.183817 -0.105399 0.110368 0.133685 0.304059 0.295243 0.355802 0.109114 0.0534325 -0.273222 -0.394941 -0.388031 -0.222054 -0.00694253 0.300174 0.263681 0.370675 0.452134 0.252192 0.30409 -0.0210772 -0.367234 -0.331414 -0.352502 -0.0670179 0.111797 0.147933 0.183667 0.395784 0.21733 0.371216 0.214561 -0.0395507 -0.153009 -0.515527 -0.393015 -0.142548 0.0977709 0.400471 0.38826 0.234009 0.313474 0.38904 0.372404 0.0728061 -0.191214 -0.49576 -0.287023 -0.0389997 0.0959167 0.387244 -0.0796264 0.293935 0.378045 0.455715 0.394241 0.165901 -0.298709 -0.526225 -0.278985 -0.138188 0.161901 -0.262 0.0933602 0.277429 0.514877 0.37943 0.345906 0.0349007 -0.398636 -0.46392 -0.267979 0.00825141 -0.460831 -0.0770754 0.0577491 0.367271 0.407944 0.32859 0.204182 -0.153049 -0.391183 -0.33442 -0.120663 -0.520377 -0.262274 -0.119208 0.142998 0.348711 0.432591 0.286353 0.0544985 -0.135207 -0.37576 -0.299378 2 1 -1.72183 0.100783 11 11 5 0.379192 0.230616 0.499996 0.230532 -0.137917 -0.291229 -0.454021 -0.117297 -0.0945729 -0.1135 -0.686806 0.483822 -0.16861 0.446158 0.308336 0.17035 0.0944551 -0.444035 -0.623671 -0.129089 -0.133509 -0.499994 0.297032 0.136226 -0.114294 0.279931 0.526005 0.200642 -0.190133 -0.359202 -0.200467 -0.400258 -0.265495 0.266852 0.222626 0.173285 -0.0489242 0.430689 0.333751 0.19386 -0.0386207 -0.0758898 -0.091797 -0.156258 -0.0446522 0.283173 0.111115 0.0362903 -0.0184468 0.14387 0.324247 0.0859066 0.0418369 0.0656 0.118718 0.0138389 0.0717057 -0.0879799 0.392632 0.169848 0.282791 -0.0412554 0.356877 0.13763 0.238259 0.108276 0.258255 0.105258 -0.126071 0.0764025 0.492308 0.640777 -0.131518 0.0198872 0.163989 0.0672531 0.142449 0.354711 0.398948 -0.252061 -0.26789 0.0903392 0.523842 0.399306 -0.129254 -0.11637 -0.0221567 0.0378557 0.198278 0.334891 -0.0718304 -0.288076 -0.200436 -0.0747616 0.190186 0.116219 -0.330948 -0.50683 -0.342797 -0.101807 0.325706 -0.26213 -0.159862 -0.226639 -0.326332 -0.397363 -0.0853734 0.0839505 -0.220575 -0.750833 -0.0393074 -0.347167 -0.220768 -0.405748 -0.53635 -0.525531 -0.232766 0.013466 0.174218 -0.114304 -0.253687 2 2 -3.99835 0.230707 11 11 5 0.329676 0.36801 0.203974 -0.0159249 0.112191 -0.0438445 -0.0549591 -0.359426 -0.448886 -0.157474 -0.767807 0.110952 0.308064 -0.144142 -0.36767 0.00076122 0.0851644 0.0582065 0.183442 -0.283821 -0.054977 -0.373619 -0.0443298 0.0798324 -0.308889 -0.178719 -0.312364 -0.0684994 -0.0195815 -0.0866629 0.207273 -0.411897 -0.523432 -0.131737 -0.0744568 0.132768 -0.141398 -0.453756 0.0263252 0.121016 0.706765 0.103391 0.00358471 -0.286282 -0.121813 -0.0951209 -0.788229 -0.915135 -0.125414 0.00522956 0.632398 0.592351 0.118084 0.155111 0.102446 -0.22855 0.025167 -0.481217 -0.497348 -0.323617 -0.0598069 0.216702 0.631779 1.05791 0.680147 0.240256 -0.1291 0.0674954 -0.285098 -0.0285941 -0.197445 -0.109291 -0.276118 0.491214 1.08249 0.729388 0.592049 0.364697 0.44509 0.179576 -0.20414 -0.328553 -0.360592 -0.435182 -0.495831 -0.163999 -0.0293418 0.512202 0.240948 0.355433 0.00316014 0.25903 -0.211597 -0.219066 -0.0427898 -0.14159 -0.136332 0.249938 0.560028 0.607835 0.250674 0.148366 0.304357 0.803733 0.0530097 -0.117723 -0.220267 -0.526948 -0.141852 0.0491364 -0.420011 -0.193907 0.188303 0.188566 0.282109 -0.0350087 0.0655387 -0.215513 -0.553674 -0.526626 -0.176348 3 11 11 3 2 0 -3.81608 1.1264 11 11 5 -0.309968 -0.151221 -0.00399087 -0.121759 -0.00721097 0.111767 0.302127 0.167206 0.144128 0.0402323 -0.0829918 -0.435516 -0.353221 -0.119362 -0.0661203 0.0206806 0.264101 0.474059 0.509573 0.208142 0.162587 -0.0820887 -0.559326 -0.378706 -0.256263 -0.121964 -0.0100535 0.217932 0.463053 0.620583 0.572188 0.232632 0.178018 -0.230266 -0.414725 -0.507412 -0.436713 -0.197821 0.0111513 0.273774 0.488573 0.501393 0.306195 0.37029 0.0170228 -0.255341 -0.447638 -0.425202 -0.422749 -0.293141 -0.103518 0.216903 0.379265 0.420343 0.367719 0.176539 0.0361287 -0.120305 -0.151373 -0.418456 -0.586777 -0.451921 -0.0920976 0.114823 0.169861 0.0702251 -0.000119388 0.174101 0.176604 0.20573 0.0598972 -0.214809 -0.464244 -0.372084 -0.153369 -0.107936 -0.0969196 0.00141168 0.202672 0.377366 0.064604 -0.0923938 -0.117149 -0.248713 -0.446587 -0.455864 -0.237339 -0.0427691 -0.185905 0.164288 0.256891 0.253389 -0.0347012 0.0236563 -0.0447869 -0.0715212 -0.303573 -0.245925 -0.12501 -0.188551 0.269013 0.205079 0.185409 0.183046 0.152341 0.123905 -0.0797607 -0.00751137 0.0305746 -0.12886 -0.0744375 0.312293 0.419329 0.286284 0.264622 0.144131 0.110684 -0.109874 -0.0271472 0.0358488 0.000745196 2 1 -3.44938 0.121739 11 11 5 0.383498 0.0958738 -0.131458 0.0183468 -0.101679 -0.246151 -0.310435 -0.446456 -0.379748 -0.318768 -0.602793 0.204941 0.30053 0.251002 0.446997 0.0762663 -0.0968821 -0.259756 -0.235555 -0.437741 -0.208152 -0.465209 0.175261 0.277808 0.502168 0.509474 0.471438 0.238248 -0.242123 -0.0836531 -0.207345 -0.0936599 -0.526926 0.383787 0.319052 0.0358863 0.464764 0.543676 0.615008 0.490301 0.175814 0.0340132 -0.214726 -0.366797 0.0815261 0.424016 -0.0178178 0.0492509 0.520564 0.299578 0.645129 0.339389 0.475334 -0.0735016 -0.122716 -0.394113 0.0144387 0.27655 -0.149788 0.16117 0.144652 0.00760378 0.0425026 0.199498 0.355689 0.127136 0.127625 -0.156401 0.143165 0.0692908 -0.111452 0.0191335 -0.433315 -0.245884 -0.304887 -0.181655 -0.163894 0.280258 -0.0768142 -0.070823 0.0568734 0.0609934 -0.0380418 0.0548111 -0.243145 -0.684488 -0.380529 -0.821033 0.0276858 -0.0302371 -0.176256 0.094257 -0.0607131 0.211532 0.272546 0.0804804 0.0528204 -0.481857 -0.898986 -0.213267 -0.018038 -0.0783158 -0.251849 0.15119 0.0213954 0.192767 0.326203 -0.0309326 0.0104437 -0.00851925 -0.293679 -0.0375998 -0.232119 -0.384428 -0.310001 0.0933834 0.184192 0.188149 0.391208 -0.0871158 -0.0483628 2 2 -4.35702 0.549867 11 11 5 -0.0815491 0.123448 0.442054 -0.0425604 -0.0956042 -0.325303 -0.124621 -0.344956 0.0649831 -0.213502 -0.0550162 -0.120663 0.146464 0.362276 0.341432 -0.11453 -0.160374 -0.185989 -0.0691616 -0.458085 -0.313678 -0.520471 -0.282256 0.469772 0.584954 0.436479 0.286615 0.11927 0.409139 0.289966 0.327397 -0.190289 -0.40603 -0.319083 -0.113997 -0.107877 0.287388 0.340193 0.381729 0.0985609 -0.0716113 0.367072 0.181582 -0.221859 -0.312198 -0.305045 -0.32816 -0.159866 0.199577 0.151389 0.377163 0.676591 0.551627 0.717962 0.48474 0.0499509 -0.261715 -0.437323 -0.572843 -0.335993 -0.375154 -0.241462 0.524382 0.657446 0.893848 1.00037 -0.0318986 -0.326404 -0.171999 0.023741 0.307792 -0.227521 -0.0704368 -0.16499 0.0177125 0.356601 0.644707 0.461235 -0.285893 -0.11129 0.0135897 -0.173463 -0.208978 -0.346029 -0.403703 0.0102371 -0.049645 0.345468 -0.0541161 -0.0505932 -0.260126 0.0659231 -0.277606 -0.538467 -0.436593 -0.387852 -0.615947 -0.190831 0.170214 -0.202916 -0.0816262 0.176036 -0.00533882 0.148098 -0.0858447 0.103504 -0.234659 -0.0990683 -0.0277076 0.119848 0.199436 0.315577 0.231318 -0.472603 -0.233152 -0.414783 -0.117156 -0.121962 -0.217247 0.181868 -0.271464 3 11 11 3 2 0 -5.47972 1.4683 11 11 5 0.0656263 0.262306 0.412748 0.25413 0.0751581 -0.253254 -0.283777 -0.166785 -0.0242549 0.186266 0.324463 -0.0461255 0.0929938 0.269435 0.345606 0.286728 -0.0277706 0.0129991 0.163299 0.445614 0.565844 0.912304 -0.208651 -0.233302 -0.178373 0.241292 0.286836 0.0956447 -0.0969626 0.0899842 0.47571 0.725269 1.09938 -0.358448 -0.313 -0.25884 0.0484472 0.0705049 0.0144675 -0.134771 -0.0146722 0.249469 0.574534 0.950147 -0.293981 -0.355575 -0.272608 -0.328315 -0.216923 -0.0127034 -0.27052 -0.311619 -0.190899 0.113652 0.464904 -0.209969 -0.162919 -0.208764 -0.144193 -0.194166 -0.315039 -0.3846 -0.52196 -0.6573 -0.558178 -0.292959 0.051419 -0.0350798 -0.0784078 -0.130845 -0.041738 -0.170403 -0.117032 -0.544945 -0.785431 -0.759982 -0.732382 0.0318118 0.12845 0.0337854 0.0500276 -0.045851 -0.044764 0.0854768 0.0905737 -0.124902 -0.398162 -0.388512 0.0861016 0.0310197 0.0585582 0.164351 0.0234271 0.0249245 -0.0681176 0.0400596 0.151751 0.255111 0.188929 0.196528 0.0326675 -0.0710436 -0.167713 -0.0573696 0.0547512 -0.0610834 0.00489019 -0.0351011 0.0227627 0.203595 0.388167 0.320914 0.113398 -0.0650317 -0.108667 -0.123341 -0.0758184 0.121584 0.213645 0.195662 0.193705 2 1 -4.09673 0.103438 11 11 5 0.359641 0.0833535 -0.114585 -0.335051 -0.314205 -0.195617 0.0353836 -0.317384 -0.48023 -0.829796 -1.14475 0.688908 0.529224 0.227167 -0.230583 -0.324651 -0.0627981 -0.100671 -0.0214525 -0.228948 -0.457506 -0.866165 0.567514 0.569195 0.436291 0.198791 -0.133157 -0.0285696 0.16747 0.0559308 0.158302 -0.303174 -0.678241 0.169575 0.41453 0.301909 0.466815 0.289398 -0.0325525 0.0421591 0.202338 0.33493 0.341023 -0.211598 0.0684054 -0.0745417 0.17298 0.111975 0.139687 0.15261 0.00518121 0.152818 0.577452 0.744415 0.591193 0.00513029 0.0846536 0.0111661 -0.156354 -0.3354 -0.297536 -0.366843 -0.266054 0.134379 0.287619 0.506609 -0.0398815 -0.157733 -0.0724452 0.0129053 0.000246612 -0.145422 -0.323475 -0.480323 -0.465309 -0.00430476 -0.117042 0.103583 0.0798007 0.0156414 0.11645 -0.0632043 -0.131267 -0.0961498 0.0788424 -0.225497 -0.0486865 -0.281132 0.341311 0.311281 0.0908596 0.160284 0.39337 0.0339869 -0.211008 -0.322504 -0.361382 -0.219143 -0.561571 0.269372 0.397606 0.166914 0.197587 0.0583986 0.294015 0.148871 -0.141709 -0.346811 -0.123479 0.0232116 0.00212983 -0.171872 -0.172898 -0.0459692 0.120091 -0.0717317 -0.057039 0.0670253 0.0252131 0.0171886 0.455081 2 2 -6.08812 0.870996 11 11 5 -0.266911 0.168894 0.165323 0.225021 0.135605 -0.43302 -0.508379 -0.450893 -0.889746 -0.933205 -1.03231 0.189704 0.561503 0.428905 0.409721 0.177309 0.252623 0.104158 -0.0747869 -0.236139 -0.35196 -0.544778 -0.0504468 0.424162 -0.020625 0.485457 0.812519 0.747966 0.292747 0.312313 0.2827 0.446292 0.0767252 -0.124914 -0.00720746 0.0231769 0.495444 0.467477 0.733826 0.383947 0.464766 0.381283 0.572385 0.435385 -0.461105 -0.282978 -0.180948 -0.0372701 -0.00123299 0.286928 0.269876 0.152195 0.682549 0.512949 0.694433 -0.359524 -0.357171 -0.541099 -0.218292 -0.257747 -0.252918 -0.00681131 -0.010336 0.246402 0.200586 0.437611 -0.197982 -0.106241 -0.244782 -0.10728 -0.0536764 -0.208194 -0.0719814 -0.327428 -0.295983 -0.560587 -0.444198 -0.210819 -0.0399402 -0.253774 0.0638131 0.0592129 -0.0486346 0.26159 0.114054 -0.0842287 -0.723089 -0.595089 -0.118901 0.0101661 -0.0107665 0.0477626 -0.113759 -0.0239175 0.191893 0.261757 0.0811524 0.0784462 -0.274401 0.103655 -0.303704 -0.084298 -0.205421 -0.0577224 -0.0759136 -0.0145718 -0.11712 0.105996 0.0329505 0.183525 -0.346027 -0.368873 0.113116 -0.17365 0.099926 0.0018508 -0.0540793 -0.0683855 0.0461717 0.0740993 -0.19384 3 11 11 3 2 0 -6.70879 1.78806 11 11 5 -0.293368 -0.355442 -0.193609 -0.0458044 0.106579 0.358955 0.634935 0.780926 0.794603 0.616988 0.500935 -0.119102 -0.101283 -0.0216589 0.169779 0.294119 0.527698 0.742603 0.913049 0.975947 0.739767 0.411449 -0.203029 -0.0922856 -0.130301 -0.030408 0.114558 0.223544 0.489958 0.65939 0.605473 0.342673 0.12539 -0.353805 -0.403939 -0.350305 -0.37787 -0.274688 -0.0455372 0.187391 0.253753 0.164951 0.0207225 -0.0693223 -0.282028 -0.440357 -0.53211 -0.556996 -0.621177 -0.529418 -0.325235 -0.269496 -0.231587 -0.282939 -0.299405 -0.118972 -0.270269 -0.189366 -0.343132 -0.411666 -0.701936 -0.668886 -0.6094 -0.632775 -0.498287 -0.481435 -0.169614 -0.103143 -0.0969654 -0.064954 0.113373 0.00413971 0.217262 0.239362 0.0564459 -0.207854 -0.463434 -0.0295342 0.0335211 0.0544036 0.0934575 0.092669 0.0130385 0.165017 0.316455 0.268184 0.0594785 -0.13204 -0.00202117 0.0133746 -0.0309555 -0.0944196 -0.118323 -0.0150563 -0.147814 -0.063942 0.0141242 0.220592 0.10116 0.141644 0.0273921 0.0207032 -0.0571222 -0.0488964 -0.0174426 -0.0429578 0.0208566 0.0511573 -0.0949839 -0.178171 0.308278 0.153281 0.203629 0.0648734 0.160268 0.168465 0.0805272 -0.112179 -0.0712119 -0.0525881 -0.059032 2 1 -6.32317 0.568755 11 11 5 0.191534 0.0126448 0.0738845 -0.335754 -0.529278 -0.681367 -0.808491 -0.677796 -0.793684 -0.82368 -0.776345 0.159899 0.300403 0.290506 0.129991 -0.0469936 -0.275659 -0.364672 -0.316945 -0.314454 -0.401992 -0.596565 0.31368 0.358727 0.277007 0.427588 0.260484 0.161545 0.174319 -0.00318579 -0.0155281 -0.320221 -0.921802 0.211888 0.192963 0.344888 0.512819 0.807034 0.492699 0.357391 0.309768 0.0388255 -0.265372 -0.981197 -0.219315 -0.0206086 0.0213661 0.26281 0.101153 0.483197 0.549132 0.729926 0.963838 0.866619 0.630034 -0.227726 -0.218263 -0.2943 -0.224666 -0.0797774 -0.0297019 0.049376 -0.0579966 -0.144088 0.0475011 0.408184 -0.226185 -0.161491 -0.266201 -0.372541 -0.25533 -0.120844 -0.0783331 -0.0343309 -0.0978676 -0.252436 0.261313 0.121751 -0.166941 -0.129938 0.0423067 0.100412 0.00416233 -0.161967 -0.249651 0.0643601 0.0557783 0.299935 0.132056 -0.0179943 0.0561279 -0.0225681 0.196781 0.14427 0.143647 0.0423935 0.186535 0.371573 0.378878 -0.292783 -0.162689 0.0552681 0.0709512 0.00166764 0.00812002 -0.18716 -0.21957 0.372243 0.42995 0.36294 0.196917 -0.159196 -0.327116 -0.128074 -0.000766211 0.057979 0.301656 0.233816 -0.0148277 0.0491452 -0.382337 2 2 -7.44384 1.82645 11 11 5 0.335948 -0.340612 -0.0889486 0.139511 -0.103821 -0.26728 0.0690018 -0.227659 -0.00715317 0.284028 -0.0214158 0.314555 0.298506 0.456795 0.485467 0.16701 0.411996 0.388859 0.656561 0.754456 0.875738 0.522331 0.206381 0.316356 0.277873 0.219002 0.0656679 0.338641 0.463133 0.589362 0.832516 0.830648 0.549402 -0.318803 -0.0541163 0.110566 0.158542 0.118726 0.446998 0.697162 0.562381 0.784224 0.789223 0.694922 -0.056217 -0.123107 -0.0675239 -0.38566 -0.424466 -0.184926 0.134528 0.2993 0.490226 0.451002 0.80567 -0.404634 -0.128896 -0.265885 -0.491924 -0.55573 -0.852759 -0.851533 -0.772367 -0.423793 -0.261548 -0.162595 -0.47476 -0.281315 -0.082964 -0.166335 -0.29723 -0.206817 -0.274752 -0.253696 -0.299376 -0.476271 -0.43746 -0.14454 -0.0305648 0.0529647 0.168151 -0.00408759 -0.226024 -0.135915 0.186783 -0.0800227 0.0840541 -0.204269 -0.394228 -0.288591 -0.13097 -0.230671 -0.240083 -0.111072 -0.184737 -0.444601 -0.285592 -0.0987672 -0.123871 0.0162071 -0.297115 -0.287026 -0.180833 -0.0790757 -0.165472 -0.216112 -0.316601 -0.0341215 -0.0835859 -0.048165 -0.116086 -0.538452 -0.473938 -0.0707456 -0.021052 -0.186946 -0.186448 -0.12296 0.205301 -0.0493586 -0.179632 3 11 11 3 2 0 -7.17531 1.64261 11 11 5 -0.0476179 0.226427 0.526064 0.490153 0.412997 0.381353 0.27749 0.041305 0.230825 0.079675 -0.0784581 0.293307 0.660907 0.801775 0.5803 0.424961 0.523588 0.492771 0.268465 0.314023 -0.00258063 -0.297104 0.259017 0.594004 0.629306 0.396637 0.284109 0.545485 0.584556 0.242796 0.0357843 -0.0752605 -0.274957 -0.0041122 0.125346 0.157312 0.184587 0.166691 0.369321 0.0677291 -0.119319 -0.332765 -0.308026 -0.152368 -0.548102 -0.386552 -0.290231 -0.210092 -0.0688457 -0.300711 -0.749219 -0.646724 -0.624135 -0.378566 -0.154814 -0.709997 -0.710956 -0.873431 -0.94669 -1.1956 -1.08394 -0.653643 -0.466955 -0.519403 -0.262276 -0.0368585 -0.333941 -0.232699 -0.15551 -0.00836856 0.0510496 0.102857 -0.0280399 -0.211025 -0.138822 0.126199 0.288745 0.0681565 0.300361 0.289433 0.301346 0.314879 0.169006 0.160744 0.0134257 0.191149 0.220101 0.225467 -0.0123835 0.0869661 0.274596 0.143343 0.203957 0.151759 0.00986564 0.0530532 0.00163326 0.0747068 0.259397 -0.0311711 0.0960755 0.223664 -0.0688531 0.0673729 0.0333697 -0.0487374 -0.117205 -0.144588 0.034725 0.0767823 -0.0879951 -0.0954094 -0.0521283 -0.123952 -0.217225 -0.209202 -0.28116 -0.246668 -0.0305575 0.112649 -0.00993463 2 1 -7.98566 0.812817 11 11 5 -0.432367 -0.412266 -0.48873 -0.533323 -0.443167 -0.458463 -0.389503 -0.342863 -0.117367 -0.29614 0.0617819 -0.238158 -0.323674 -0.32391 -0.318468 -0.319257 -0.491319 -0.44719 -0.0911404 0.133176 0.161608 0.233813 0.0703063 -0.0394455 -0.15672 -0.206563 -0.442729 -0.749199 -0.528182 0.235482 0.336691 0.388668 0.459317 0.46091 0.527691 0.221087 -0.284889 -0.652147 -0.570278 0.341523 1.35425 0.774921 0.192727 0.278974 0.541383 0.715064 0.524768 0.304936 0.0667626 0.591632 1.68994 0.944017 0.0824492 0.0259654 -0.158148 -0.00507597 -0.200319 -0.397256 -0.488394 -0.0139742 0.85906 0.161804 -0.203999 -0.446609 -0.228936 -0.35654 -0.266665 -0.227961 0.0701202 0.678578 0.602056 0.25513 0.123465 -0.054356 -0.0807111 0.135659 -0.0632718 0.0633478 0.143989 0.0712657 -0.119348 -0.21779 -0.305688 0.0820454 0.043573 0.122102 0.00278732 0.151403 -0.187526 -0.0270342 0.0726126 -0.260077 -0.31747 -0.0354266 -0.243037 -0.114032 -0.222528 0.295453 0.110621 -0.0444839 0.202732 0.129417 -0.0756106 0.0948291 -0.0887327 -0.127615 0.000518653 0.0959017 -0.145894 0.193404 0.0660858 -0.12978 -0.00599093 -0.0290339 -0.142501 0.079238 0.391748 0.0752822 -0.457494 -0.226202 -0.281095 2 2 -10.9649 2.52559 11 11 5 -0.38283 -0.145804 0.409932 0.477906 0.20266 0.182927 0.0717245 -0.291539 -0.221901 -0.215187 -0.0181052 0.432879 0.95619 0.71324 0.409417 0.268785 0.405485 0.490657 0.0177151 0.18947 -0.317893 -0.433314 0.509495 0.598599 0.850228 0.310281 0.514088 0.902135 0.790301 0.0898248 -0.235632 -0.083129 -0.0240688 0.551317 0.488339 0.553337 0.501141 0.810898 1.31752 0.605124 -0.0917358 -0.0191653 -0.154794 0.103831 -0.124335 0.0116689 0.457623 1.00998 0.903387 0.374836 -0.0526171 -0.275137 -0.235758 -0.367484 -0.149494 -0.624798 -0.448989 -0.843971 -0.788622 -0.892988 -0.518002 -0.614349 -0.42897 -0.414301 -0.269871 -0.119889 -0.608923 -0.342135 -0.367977 -0.211854 -0.219159 -0.0994845 -0.511896 -0.440751 -0.615559 -0.130833 -0.17615 -0.0884396 -0.00482179 0.0519896 -0.109302 0.0435438 -0.164252 -0.347243 -0.233666 0.0685427 -0.297993 0.033301 -0.334447 -0.41109 0.155629 0.0823022 0.153419 -0.0971578 -0.321072 -0.157423 -0.0183267 -0.651774 0.0513101 -0.238666 -0.205854 0.0518558 -0.266274 0.140857 -0.0840517 -0.214808 -0.293446 -0.331871 0.103803 0.168376 -0.0210493 0.264512 0.0113406 -0.0277179 0.113005 -0.195508 -0.195419 -0.0845165 0.0145058 0.0321171 -0.0977615 3 1610612736 -1071999177 0 3 131072 3 0 3 196608 2 0 3 131072 6 0 3 327680 5 0 3 131072 5 0 3 196608 4 0 3 12958400 3 0 3 11 11 3 2 0 -9.66034 1.52866 11 11 5 -0.693187 -0.344343 -0.160797 -0.0700653 -0.0478811 -0.112757 0.10384 0.427013 0.533204 0.684676 0.768995 -0.328094 -0.0558647 -0.0501835 -0.158137 -0.227771 -0.337691 -0.0576732 0.194667 0.469633 0.416733 0.209706 -0.0585011 0.0120967 -0.166835 -0.263339 -0.434377 -0.23127 -0.0343014 0.305017 0.257671 -0.0166049 -0.255157 0.000535611 -0.0145385 -0.177008 -0.293423 -0.261649 0.0588341 0.424951 0.328478 -0.155727 -0.29544 -0.554454 0.0568835 -0.0108445 -0.0955296 0.026011 0.142673 0.487071 0.48866 -0.610677 -0.665695 -0.298888 -0.00235782 -0.0769018 0.114248 0.239122 0.362246 0.472303 0.262371 -1.20681 -1.10897 -0.159359 0.524585 1.08859 -0.0620086 0.106478 0.26213 0.268126 0.0728813 -0.670471 -0.658313 0.0862626 0.743148 1.10862 1.05599 -0.0228469 0.0579982 0.192404 0.120608 -0.147571 -0.462412 -0.0789442 0.477038 0.512209 0.0167568 -0.0625574 -0.0880392 -0.0117064 -0.0435056 -0.0897675 -0.19135 -0.13026 0.0238987 -0.27124 -0.3763 -0.708804 -0.689577 -0.0933311 0.0317603 0.161976 0.190391 0.172486 0.338947 0.13902 -0.486081 -0.847005 -0.804839 -0.741046 -0.0824628 0.233644 0.398732 0.583268 0.65598 0.573441 0.190882 -0.246955 -0.276476 -0.0102096 0.211255 2 1 -7.24952 0.837036 11 11 5 0.142622 0.225476 0.480679 0.190385 -0.0400847 -0.141422 -0.250755 -0.413582 -0.350319 -0.668925 -0.625394 0.282527 0.364394 0.311891 -0.0960374 -0.0866618 -0.114999 -0.152515 -0.207829 -0.24579 -0.118724 0.179984 0.226105 0.302454 0.2415 0.053977 -0.0279976 -0.114025 -0.271761 -0.302946 0.215087 0.424312 0.704684 0.174148 0.360126 0.169647 -0.00702766 -0.150613 -0.557703 -0.451944 0.302281 0.433738 0.419948 0.304489 0.108535 0.0589645 0.138473 -0.183158 -0.646378 -0.820916 0.240106 0.559176 0.109733 -0.298398 -0.784782 -0.0128599 -0.0263647 -0.111562 -0.629521 -0.798859 -0.0298604 -0.128143 0.399383 -0.0262852 -0.917491 -1.29925 0.0466205 -0.062849 -0.257404 -0.621539 -0.450716 -0.486572 0.518392 0.365178 -0.618715 -0.55308 0.107903 -0.0281406 -0.0539791 -0.0396369 -0.165728 -0.0684391 0.091568 -0.0289708 -0.431588 0.112996 0.38778 0.502037 0.0799782 0.117181 -0.0202816 -0.205177 -0.197703 -0.0254677 -0.0978656 0.0610153 0.384437 0.621228 0.72327 0.273215 0.228828 0.174851 -0.0119839 0.113986 -0.00752967 0.0505505 0.445961 0.119509 0.578413 1.01831 0.243286 0.269677 0.0295908 -0.175731 -0.159817 0.0102451 -0.0475337 0.0238463 0.0438903 0.102513 0.956243 2 2 -11.4949 1.20293 11 11 5 -0.464937 -0.367389 -0.17875 -0.0121329 0.148316 -0.216545 -0.0596507 0.151842 -0.130749 0.251474 0.110535 -0.423879 -0.193843 0.207287 0.327187 0.239114 -0.195192 -0.19072 -0.082808 0.0283154 0.344488 0.424765 0.0683504 0.355459 0.193338 0.312866 -0.0960574 -0.381855 -0.44915 0.0834408 0.19826 0.00711201 -0.249315 0.0680892 0.237294 0.051944 -0.0892581 -0.311501 -0.35858 0.220352 0.447531 -0.04724 -0.46306 -0.538374 -0.024654 -0.130673 -0.368052 -0.229162 0.0343488 1.07632 0.811831 -0.150829 -0.65503 -0.737284 -0.511386 -0.208702 -0.0563036 -0.137099 0.289533 0.901421 0.920392 -0.803623 -1.22606 -0.577536 -0.0837916 0.437518 -0.266457 -0.0789352 0.0878817 0.406144 0.585932 -0.44748 -0.312502 0.214818 0.623832 0.816513 0.764024 -0.0863474 0.0930777 0.277524 0.277929 0.140046 -0.351954 0.213213 0.974563 1.14768 0.79901 0.719462 0.168411 -0.175356 -0.416215 -0.275439 -0.168389 0.0682263 0.523502 0.355932 0.412593 0.140073 0.512249 -0.131477 -0.334529 -0.454663 -0.717287 -0.410222 -0.117979 0.134106 0.0521291 -0.243088 -0.193168 0.288985 -0.122973 -0.248623 -0.607572 -0.552766 -0.0987809 0.0175966 -0.208199 -0.473132 -0.609342 -0.227619 -0.0325129 3 11 11 3 2 0 -11.486 1.91363 11 11 5 -0.00303613 -0.117113 -0.158713 -0.0901942 -0.0789131 -0.176647 -0.177761 -0.225319 -0.140132 0.0735543 0.214931 -0.0661522 -0.112052 -0.166893 -0.0453466 -0.0208976 0.0158667 0.0689375 0.100667 0.234557 0.534906 0.68708 -0.0213698 -0.070578 -0.116019 -0.0420621 0.157127 0.175261 0.22552 0.318345 0.359426 0.510234 0.730316 -0.0681198 -0.252813 -0.146405 -0.134705 0.0454426 0.0917283 0.208788 0.241552 0.210626 0.237816 0.405609 -0.192221 -0.352722 -0.238653 -0.0550985 0.177189 0.363738 0.530076 0.117371 -0.274673 -0.284154 -0.258904 -0.292551 -0.261475 -0.0421871 0.366734 0.653888 0.523488 -0.268622 -0.729626 -0.774773 -0.649335 -0.769349 -0.0431211 0.129704 0.348095 0.308936 -0.356874 -0.817489 -0.478837 -0.133157 -0.0448222 -0.306724 -0.645241 0.336858 0.294616 0.0510222 -0.487496 -0.655902 -0.291926 0.429953 0.999923 1.02646 0.662621 0.132589 0.337083 0.100584 -0.263039 -0.3802 -0.146018 0.409204 0.830352 1.03132 0.854341 0.349641 -0.294674 0.233528 -0.045768 -0.337591 -0.280089 -0.0434978 0.283868 0.326611 0.0703098 -0.0746847 -0.446805 -0.786833 0.16475 -0.0888154 -0.19278 -0.270821 -0.261872 -0.294488 -0.163599 -0.0120118 0.00653703 -0.586797 -1.19214 2 1 -9.28712 1.1247 11 11 5 -0.0385973 -0.00280252 0.312453 0.457468 0.240152 0.128675 0.0157401 -0.380665 -0.558287 -0.61023 -0.477066 0.108869 0.0723709 0.142205 0.0520056 -0.135299 -0.188894 -0.224497 -0.405699 -0.498133 -0.455058 -0.35547 -0.0336257 -0.0564012 0.0230886 -0.0779009 -0.117469 -0.116608 -0.201839 -0.449354 -0.531974 -0.297418 -0.339918 -0.0855042 -0.0743998 0.116522 0.00837252 -0.000585767 -0.052297 -0.233801 -0.152605 0.168092 0.347893 0.384136 -0.0594366 0.170104 -0.0402361 -0.129599 -0.230216 -0.375577 0.156241 1.0057 0.8351 0.798584 1.08313 0.189578 0.140729 -0.301299 -0.277456 -0.0431812 0.786903 0.926524 0.0585352 -0.126304 0.325806 1.0157 0.0373166 -0.364564 -0.360324 0.0861327 0.46465 -0.626423 -0.850115 -0.374358 -0.478219 -0.616464 -0.584084 -0.22402 -0.416418 -0.233198 -0.232983 -0.159545 0.293061 -0.117179 -0.401395 -0.369196 -0.277778 -0.666984 -0.249613 -0.187031 -0.0512716 0.39636 0.395443 -0.143085 -0.570514 -0.321194 0.112732 0.0270254 -0.202749 -0.131371 -0.00326211 0.0456474 0.236222 0.263624 0.152494 0.232708 0.313742 0.405794 0.682821 0.45696 0.100508 -0.0810978 0.168223 0.269628 0.106961 0.0549917 0.134854 0.0848179 0.436913 0.920523 1.0793 2 2 -10.4428 1.30424 11 11 5 -0.195221 -0.273991 -0.249927 -0.478209 -0.294708 -0.474687 -0.303201 -0.484282 -0.642232 -0.154461 -0.18513 -0.00272438 -0.329133 -0.358115 -0.203219 -0.236842 -0.105549 -0.193593 -0.030919 -0.148327 0.0139841 -0.0340524 0.184755 -0.113771 -0.0895388 0.08885 0.130404 0.197467 0.132481 0.27461 0.163309 0.162028 0.178276 0.400098 -0.109259 -0.1269 -0.380991 -0.471571 -0.37694 0.0737485 0.35425 0.407525 0.434639 0.450135 -0.00776237 -0.136573 -0.288149 -0.383656 -0.0162297 0.355801 0.393439 0.291396 0.140416 0.184261 0.287863 0.15172 -0.153231 -0.276986 0.107181 0.503896 0.368846 -0.291853 -0.422001 -0.351004 -0.104893 -0.0984092 -0.127666 0.0631683 0.499226 0.552831 -0.103815 -1.10273 -1.05267 -0.843939 -0.695668 -0.635178 -0.421744 0.39383 0.514559 0.485506 -0.28893 -0.949169 -0.909605 -0.0611324 0.174842 0.276889 0.199333 0.394478 0.389783 0.381697 0.0575801 -0.101629 -0.239841 0.19286 0.566559 0.820537 0.802108 0.818492 0.704341 -0.04208 -0.177228 -0.154881 0.176136 0.339158 0.747769 0.54623 0.384899 0.116591 0.401548 0.644555 -0.449933 -0.310717 0.0321211 -0.209795 0.0418753 -0.0476641 -0.107175 0.229394 0.169404 0.0954399 -0.0336865 3 11 11 3 2 0 -11.4471 2.19807 11 11 5 0.00842009 -0.0860875 -0.177577 -0.213817 -0.300128 -0.298871 -0.252838 -0.282385 -0.342464 -0.398475 -0.303359 -0.00817514 -0.0287892 -0.0499373 -0.145537 -0.105909 -0.0328889 0.0490575 0.0312733 0.0297792 0.0500958 0.21321 0.0292947 0.0220304 0.0346411 0.0546946 0.0395615 0.203364 0.371731 0.45822 0.476761 0.579371 0.653398 -0.0479261 0.0303879 0.0773203 0.122905 0.0829358 0.206289 0.374739 0.458542 0.490601 0.587855 0.632763 -0.0776055 0.0318414 0.0107625 0.17644 0.167458 0.141523 0.205356 0.371758 0.437904 0.493843 0.466487 0.0388677 0.0656173 0.151063 0.215566 0.0289702 -0.178329 -0.120184 -0.0597731 -0.00652416 -0.00179941 0.107475 0.122039 0.182654 0.121744 -0.287309 -0.658526 -0.868599 -0.834159 -0.832772 -0.905065 -0.820514 -0.742739 -0.111751 -0.0721901 -0.133617 -0.180808 0.0404999 0.0977138 -0.0506011 -0.408374 -0.656887 -0.816014 -0.903022 -0.252949 -0.0973779 0.194002 0.513352 0.78334 0.822273 0.669524 0.278037 0.00934745 -0.0259721 -0.0422293 -0.283362 0.0329766 0.323475 0.589642 0.718408 0.534822 0.137516 -0.0293215 -0.045996 0.101714 0.253878 -0.170044 -0.0851948 0.121819 0.240713 0.0982298 -0.167828 -0.508027 -0.689932 -0.71293 -0.444387 -0.109985 2 1 -9.30949 1.46394 11 11 5 0.164492 0.0977201 0.00145564 0.106843 0.170842 0.0347172 -0.0477442 -0.182559 -0.0863978 -0.133572 -0.138926 0.241345 0.184312 0.127034 -0.0224765 -0.276994 -0.305023 -0.320094 -0.146306 -0.0275703 -0.337696 -0.502857 0.0106285 -0.0198306 -0.111712 -0.126398 -0.436499 -0.402045 -0.168287 -0.152311 -0.235422 -0.414362 -0.69766 0.00279953 -0.0458484 -0.143584 -0.0709212 -0.214876 -0.0662515 -0.219521 -0.35995 -0.233746 -0.413686 -0.461484 0.0939234 0.0524172 0.165435 0.0957309 -0.0614622 -0.0269876 -0.140876 0.0492521 0.0852187 0.177488 0.077666 -0.198721 -0.0931247 0.0957291 0.223213 0.494409 0.558696 0.800573 1.01017 1.18721 1.24635 0.948308 -0.0983422 0.0755731 0.25693 0.416031 -0.148039 -0.51244 -0.323599 0.452588 0.675923 1.05883 0.99211 -0.196648 -0.172584 -0.269338 -0.393505 -0.354221 -0.415613 -0.315931 -0.298554 -0.410317 -0.425616 0.009661 0.0415085 -0.243356 -0.221777 -0.0841768 -0.013661 0.0810075 -0.051954 -0.179807 -0.16391 -0.428072 -0.315654 -0.0536021 0.0656777 0.147185 -0.227452 -0.364922 -0.0861566 -0.0450329 0.0563542 -0.132623 -0.15443 -0.0546513 0.167308 -0.0293448 -0.104474 0.157979 0.413805 0.544163 0.414537 0.463091 0.295294 0.125302 -0.0812788 2 2 -9.12211 1.29937 11 11 5 -0.33661 -0.195152 -0.117791 -0.09914 -0.554174 -0.560336 -0.444769 -0.315188 -0.432979 -0.249084 -0.460883 -0.215337 -0.253797 -0.363291 -0.482969 -0.255627 -0.318991 -0.238725 -0.0646872 -0.30592 -0.144286 -0.588339 -0.0424549 -0.0313644 -0.0813581 0.115759 -0.101495 0.0426152 0.0660089 0.247887 0.0545243 0.232929 0.15824 0.190013 0.129876 0.12882 0.0853851 0.0587819 -0.149326 0.0614364 0.249934 0.107899 0.198961 0.217308 -0.0616405 -0.136768 0.110362 0.352718 0.387281 0.450426 0.527305 0.519216 0.459994 0.574309 0.474524 0.0927796 0.0384365 0.246399 0.228117 0.209182 0.371315 0.427901 0.432223 0.438023 0.623361 0.695914 -0.0409922 0.133926 0.0744941 -0.326833 -0.453448 -0.422081 -0.176115 -0.0692603 -0.0523692 -0.190594 -0.2426 -0.108411 -0.181394 -0.612757 -0.906494 -0.585286 -0.453658 -0.214848 -0.587304 -0.674197 -0.732074 -1.03106 -0.105068 -0.50136 -0.366781 -0.006641 0.255058 0.27612 0.392515 0.209571 0.0509962 -0.103795 -0.491036 -0.0815573 -0.13535 0.333229 0.632235 0.601127 0.611563 0.532529 0.574944 0.371248 0.342445 0.0105462 -0.0162438 0.0807902 0.39067 0.438277 0.382889 0.225502 0.185034 0.187667 0.143093 0.0801186 -0.0506612 3 11 11 3 2 0 -12.1447 2.62951 11 11 5 -0.196633 -0.285346 -0.159484 -0.234267 -0.277742 -0.404541 -0.445981 -0.346977 -0.34976 -0.231583 -0.0873085 -0.147706 -0.0595985 0.0512894 0.0308039 0.00207518 -0.103892 -0.0311858 0.0314194 -0.0332834 -0.0632093 0.0349673 0.00812576 0.154323 0.318301 0.359526 0.423482 0.38757 0.459268 0.480341 0.36046 0.236751 0.191905 0.090464 0.157146 0.289652 0.333023 0.394041 0.379511 0.510513 0.491693 0.404286 0.342561 0.299559 -0.0385145 -0.00522964 0.0703819 0.202525 0.364029 0.398475 0.436711 0.381893 0.172775 0.185315 0.287911 -0.110694 -0.147209 -0.116741 -0.0352085 0.13263 0.211432 0.172709 0.12562 -0.0890152 -0.036315 0.204964 -0.135842 -0.352692 -0.483598 -0.693034 -0.876861 -0.987659 -0.998115 -0.940143 -0.779063 -0.41204 0.0653393 -0.0235803 0.011453 0.0446927 -0.190846 -0.439902 -0.61309 -0.762397 -0.775626 -0.721227 -0.321061 0.265318 0.21936 0.349634 0.455863 0.363629 0.270428 0.184856 0.0384796 -0.019008 0.0343649 0.224636 0.655007 0.307932 0.331778 0.215548 0.0228524 -0.00214782 0.0372061 0.0723147 0.0551917 0.199235 0.459978 0.776392 0.104311 -0.0724649 -0.300552 -0.679555 -0.674314 -0.487393 -0.411952 -0.304143 0.00225374 0.352343 0.804911 2 1 -9.30886 1.76081 11 11 5 0.0541507 0.223068 0.179496 -0.103356 -0.215617 -0.052975 0.0347622 0.0611368 0.0474457 0.0675301 0.0348332 -0.0148729 -0.172439 -0.238626 -0.254947 -0.0766277 -0.13285 -0.337131 -0.317603 -0.389225 -0.211055 -0.201637 -0.204655 -0.269644 -0.227251 -0.0360247 -0.142927 -0.155413 -0.237186 -0.34169 -0.444678 -0.217969 -0.254005 -0.0153978 -0.162448 -0.0262387 -0.189058 -0.176104 -0.0290819 -0.0432665 -0.200819 -0.163198 -0.174727 -0.275768 0.0847399 0.21313 0.116817 0.154489 -0.127393 -0.172512 -0.00249632 0.0343205 0.0665611 -0.0376595 -0.192961 0.248093 0.111284 0.267079 0.703395 1.15824 1.38899 1.19333 0.731535 0.281848 -0.0554284 -0.152242 -0.0826972 -0.134972 -0.0599519 0.254117 0.478799 0.579454 0.725517 0.939389 0.663474 0.103086 -0.096693 -0.208565 -0.164741 -0.0906197 -0.339345 -0.608562 -0.624809 -0.514748 -0.454317 -0.296384 0.0159753 -0.251344 -0.0973065 -0.108082 -0.229559 -0.19373 -0.168244 0.0105392 -0.044138 0.0330934 -0.00944116 -0.182032 -0.359214 -0.0627703 -0.125789 -0.0444061 0.00307759 -0.129791 -0.111749 -0.0495959 -0.119814 -0.0743131 -0.125726 -0.281981 0.198701 0.553594 0.365946 0.816869 0.501686 0.325323 0.236718 -0.00272131 -0.0293011 0.000936055 -0.337924 2 2 -11.0518 1.95513 11 11 5 -0.199722 -0.214099 -0.209775 -0.208308 -0.206171 -0.33794 -0.253579 -0.271596 -0.251112 -0.35781 -0.258688 -0.322924 -0.346949 -0.129047 -0.114459 -0.169525 -0.148259 -0.375401 -0.382014 -0.325313 -0.387908 -0.280739 -0.0340035 0.12081 0.129276 0.11909 0.259657 0.330302 0.217301 0.215612 0.162795 -0.193996 -0.0437988 0.234445 0.232805 0.0313322 -0.0678544 0.0539499 -0.151186 -0.0298846 0.177131 0.347962 0.190289 0.0423026 0.329769 0.296274 0.308349 0.379106 0.553371 0.532797 0.559343 0.463978 0.448242 0.284305 0.269615 0.218967 0.26801 0.350736 0.471489 0.525301 0.437075 0.547516 0.615117 0.337121 0.133534 0.0867628 -0.275397 -0.503326 -0.207546 -0.157776 -0.0191276 -0.156917 -0.218202 -0.138396 -0.193116 -0.216596 -0.312368 -0.368235 -0.331224 -0.156308 -0.446288 -0.682434 -0.722368 -0.829799 -1.07713 -1.09751 -0.871905 -0.387718 -0.0637206 0.27624 0.206653 0.306642 0.312854 0.228809 -0.0671224 -0.427514 -0.46727 -0.569699 -0.027825 0.490028 0.444026 0.431406 0.372997 0.422839 0.573739 0.471921 0.101832 -0.154545 -0.261464 0.048877 0.543041 0.420315 0.292733 0.204769 0.206927 0.165812 0.161492 -0.13166 -0.0919409 -0.217083 0.155803 3 11 11 3 2 0 -10.2593 2.60278 11 11 5 -0.285019 -0.150137 -0.293002 -0.289345 -0.358785 -0.452922 -0.408941 -0.343769 -0.153072 -0.130317 -0.0536144 0.25016 0.337021 0.292713 0.288111 0.209536 0.0696089 0.0999268 0.00752016 0.0510336 0.0361928 0.131928 0.406317 0.460043 0.519547 0.514376 0.469772 0.349158 0.373828 0.149387 0.130592 0.14047 0.339606 0.230605 0.411289 0.476936 0.482242 0.408086 0.236004 0.346722 0.201766 0.168768 0.148979 0.281038 -0.155676 -0.0153541 0.145315 0.297832 0.269497 0.155833 0.243646 0.20593 0.202042 0.129639 0.0381504 -0.433943 -0.525582 -0.569368 -0.662916 -0.693068 -0.328774 -0.0118819 0.0682096 0.110395 -0.00831141 -0.382407 -0.22285 -0.491286 -0.80395 -1.28295 -1.32477 -0.896605 -0.0935585 0.00524773 0.267262 -0.0765602 -0.607848 0.255486 0.0371087 -0.205566 -0.433907 -0.326046 -0.0314131 0.343616 0.323438 0.417897 -0.0647737 -0.363566 0.386623 0.380399 0.320258 0.257886 0.285741 0.485414 0.578895 0.413775 0.227336 0.0277467 -0.192609 -0.163177 -0.274166 -0.378691 -0.284156 -0.00296523 0.288188 0.373223 0.243389 0.139614 0.118946 -0.0161944 -0.57126 -0.503101 -0.506606 -0.530557 -0.297869 0.0630879 0.241444 0.236576 0.13636 0.0683807 -0.15591 2 1 -8.92877 1.92495 11 11 5 -0.249337 -0.187403 -0.149496 -0.341211 -0.351411 -0.315813 -0.179382 -0.0272769 -0.00365489 -0.0164043 -0.0473525 -0.233126 -0.372756 -0.354819 -0.239893 -0.328201 -0.361729 -0.279574 -0.285478 -0.0678431 -0.112594 -0.113734 -0.247608 -0.276955 -0.164635 -0.0513931 -0.23976 -0.235588 -0.258111 -0.363003 -0.157108 -0.185751 0.0352449 0.254209 0.207559 0.0949344 -0.0286132 -0.143208 -0.122878 -0.194543 -0.147699 -0.124053 -0.154575 -0.0514361 0.773183 0.71095 0.840749 0.671082 0.474346 0.0367048 -0.161529 -0.146138 -0.205286 -0.136315 0.163451 0.608394 0.845802 1.34321 1.41959 1.17192 0.545549 -0.0806855 -0.268062 -0.136234 0.118482 0.175168 0.223606 0.265624 0.260677 0.02202 -0.396187 0.0446773 -0.173388 -0.256968 0.077294 0.087979 -0.0224239 -0.616199 -0.544292 -0.554342 -0.363171 -0.124671 -0.0333389 -0.282403 -0.345767 -0.122171 0.0472395 -0.0962848 -0.246638 -0.159396 -0.116733 -0.0619557 0.000923289 -0.0755335 -0.345191 -0.15593 -0.137015 -0.208628 0.156815 0.760491 0.105302 -0.0541893 0.0211755 -0.0509134 -0.252383 -0.297796 0.128653 0.191934 0.0824182 0.290952 0.854403 0.386677 0.334814 0.0630678 -0.00864552 -0.154695 -0.261146 0.0897065 0.330386 0.0684061 0.0322894 2 2 -11.8081 1.6538 11 11 5 -0.295195 -0.170281 -0.376731 -0.191164 -0.509053 -0.673556 -0.672018 -0.582508 -0.317073 -0.581478 -0.294272 0.0166168 0.187583 0.17351 0.167043 -0.0782317 -0.244334 -0.350156 -0.368943 -0.32775 -0.432951 -0.230632 0.257564 0.0477833 0.348553 0.178998 0.260185 0.172943 0.312003 -0.0593072 0.120583 -0.139696 0.160348 0.225998 0.261475 0.150142 0.294566 0.235897 0.136857 0.279195 0.222621 0.132677 0.043199 0.235953 0.334415 0.523845 0.862962 0.872104 0.862477 0.644081 0.533217 0.346019 0.0665918 -0.0254319 0.0731969 -0.313027 -0.0275888 -0.077677 0.0846333 0.0087429 -0.0957019 0.217087 -0.0906902 0.055404 0.157069 0.172289 -0.295553 -0.311615 -0.536257 -1.13551 -1.41509 -1.4663 -0.375337 -0.0538343 0.277114 0.29714 0.0970736 0.211642 -0.187431 -0.460818 -0.890585 -0.882223 -1.08874 -0.161975 0.173652 0.430887 0.178475 -0.115403 0.693282 0.632881 0.540358 0.247018 -0.0262506 -0.102945 0.196199 0.1906 0.344752 0.111232 -0.104318 0.582072 0.437214 0.201486 0.0870968 0.180026 0.127789 -0.0117699 0.133009 0.178993 0.251956 0.0734777 0.149342 0.117581 0.0842166 -0.231636 -0.31509 -0.227718 -0.0339911 0.0644466 0.00553083 0.39133 -0.168463 3 262144 4 0 3 327680 3 0 3 393216 2 0 3 131072 0 0 3 0 0 0 3 11 11 3 2 0 -12.996 4.56566 11 11 5 -0.0244302 0.0514301 0.202417 0.343953 0.292862 0.232871 0.382361 0.360133 0.254269 -0.003779 -0.0907675 -0.298481 -0.200215 0.0047247 0.231342 0.248891 0.0623575 -0.0796262 -0.0287295 0.0308594 0.0205611 0.0773887 -0.293474 -0.177138 -0.0177255 0.180927 0.370205 0.0338935 -0.407429 -0.400981 -0.0822377 -0.0230905 -0.219535 -0.358244 -0.148282 0.189971 0.301396 0.651808 0.0966763 -0.680374 -0.5405 -0.10075 -0.165702 -0.382553 -0.308982 -0.00413008 0.254315 0.604682 1.04632 0.440318 -0.646685 -0.646103 -0.403538 -0.173779 -0.232899 -0.138059 0.00944639 0.202483 0.603171 1.00945 0.697285 -0.507806 -0.878017 -0.522963 -0.282106 -0.207685 -0.247315 -0.219241 -0.0198492 0.300963 0.725267 0.78123 -0.161771 -1.09323 -0.796183 -0.19397 -0.20103 -0.40874 -0.410585 -0.272159 0.107967 0.526194 0.684851 0.362073 -0.766497 -0.673289 -0.264788 -0.248794 -0.356713 -0.361588 -0.365509 0.08026 0.454335 0.613199 0.452807 -0.27119 -0.55328 -0.120983 -0.126726 -0.135149 -0.13484 -0.0504437 0.223409 0.324873 0.417146 0.389552 0.0555439 -0.469608 -0.196384 0.30375 0.058881 0.168506 0.124727 0.309284 0.372935 0.376842 0.379195 0.20572 -0.0909368 0.125377 0.473929 2 1 -11.145 1.97144 11 11 5 0.411485 -0.0328213 -0.300955 -0.309529 -0.403408 -0.567244 -0.348785 -0.24928 -0.203294 -0.0864346 0.0218634 0.510253 0.279232 -0.00392719 -0.248912 -0.349733 -0.2502 -0.0517455 -0.0432738 -0.0871214 0.151028 0.244984 0.462758 0.138954 -0.162414 -0.20694 -0.421648 -0.0191476 0.166499 -0.034507 -0.0666926 0.0287397 0.158274 0.452282 0.0299586 -0.186607 -0.308391 -0.272452 0.43749 0.0228605 -0.327463 -0.177337 -0.331101 0.0456419 0.0431189 -0.107368 -0.167399 -0.12779 -0.484332 0.540593 0.56382 0.111793 0.0793081 0.0301355 0.204056 0.0756773 -0.222066 -0.323173 -0.1454 -0.691629 0.469226 1.17389 0.272784 -0.0584612 0.244876 0.553663 0.0813355 -0.222915 -0.0448285 0.0380253 -0.543413 -0.10721 1.70631 0.668275 -0.359954 -0.0990027 -0.00691855 0.0404718 -0.172015 0.0517972 -0.107229 -0.521552 -0.537901 1.28472 1.14865 -0.112501 0.0966612 0.277292 0.254942 -0.0084428 -0.247897 -0.316297 -0.34601 -0.455524 0.543188 1.19632 0.411642 0.298204 0.21888 0.241443 0.0885001 -0.202096 -0.369511 -0.528865 -0.485799 -0.121157 0.716715 0.166138 0.0298448 -0.27297 0.271288 0.0987965 -0.268352 -0.615374 -0.670568 -0.631281 -0.408761 0.191247 -0.123223 -0.260236 -0.499142 2 2 -15.8513 2.9785 11 11 5 0.145764 0.145207 0.0529312 0.203595 0.126526 0.380987 0.824114 0.847331 0.250861 0.0988674 -0.0612648 -0.124871 -0.335057 -0.331767 0.122738 0.159017 0.353605 0.573205 0.486374 0.0730155 0.0138676 0.0433451 0.111505 -0.483635 -0.542463 -0.335498 0.0688365 0.748869 0.284895 0.200122 0.287286 0.281548 0.235962 -0.178893 -0.491575 -0.703697 -0.440866 0.147528 0.564814 0.10088 -0.0129502 0.196962 0.178226 -0.00905316 -0.330322 -0.455037 -0.421023 -0.0486343 0.515301 0.582278 -0.0929792 -0.171604 -0.0806106 0.0969823 0.00828775 0.284851 0.153622 -0.068698 0.267577 0.954998 0.988849 -0.160529 -0.354296 -0.0253408 0.262979 -0.0218982 0.249251 0.173439 0.130997 0.12402 0.766188 0.970037 0.237706 -0.627399 -0.410891 0.187202 0.19 -0.294693 -0.280851 -0.21215 -0.157731 0.542422 0.852102 0.452692 -0.698669 -0.644341 -0.0165112 -0.0593114 -0.57302 -0.88101 -0.907813 -0.288572 0.230101 0.738763 0.775268 -0.104027 -0.870388 -0.573092 -0.495271 -0.491853 -0.713413 -0.530398 -0.235104 -0.0521617 0.464658 0.605074 0.259233 -0.971044 -0.727494 -0.470199 -0.403957 -0.362183 -0.602484 -0.199231 -0.210492 0.500002 0.737501 0.59844 -0.177715 -0.94601 -0.737564 3 11 11 3 2 0 -14.965 5.93283 11 11 5 -0.246614 0.229565 0.642043 0.638991 -0.056493 -0.598015 -0.512417 -0.336147 -0.220549 -0.281956 -0.125175 0.0404377 0.354677 0.861153 0.900952 0.131829 -0.549496 -0.67079 -0.353164 -0.210095 -0.0962989 -0.115004 -0.161106 0.18009 0.680339 0.932964 0.0441925 -0.745908 -0.986135 -0.518743 -0.245337 -0.247765 -0.139304 -0.501662 -0.0781474 0.391357 0.724061 0.459087 -0.574297 -0.9459 -0.535811 -0.0715968 -0.148411 -0.236116 -0.595068 -0.345388 0.0527444 0.576055 0.759239 -0.0774025 -0.773032 -0.784902 -0.221359 -0.0398091 -0.28867 -0.409881 -0.279451 0.089613 0.406926 0.645591 0.400319 -0.275266 -0.606466 -0.195479 0.0181398 -0.0456773 -0.130914 -0.0381542 0.229198 0.33267 0.449399 0.407009 -0.115624 -0.38633 -0.318373 -0.0405308 0.143586 -0.0817206 -0.0171589 0.199073 0.1924 0.188413 0.319391 0.174538 -0.286759 -0.209388 0.00575099 0.197983 0.127093 0.0297739 0.0772454 0.118954 0.134084 0.36869 0.34909 -0.141239 -0.202831 -0.0263995 0.0812889 0.241789 -0.0502675 -0.0443438 0.0692199 0.244242 0.387296 0.416599 0.131428 -0.174789 -0.00717743 0.119593 -0.0469332 -0.243716 -0.187859 0.134396 0.490987 0.689805 0.667938 0.402646 -0.0300835 -0.0717051 0.0166406 2 1 -10.0246 2.21359 11 11 5 -0.0209439 -0.322273 -0.571547 0.105597 0.314033 -0.062425 -0.0447341 -0.430293 -0.12398 0.156715 0.229069 0.213038 -0.190584 -0.156973 -0.108148 0.399549 0.501567 0.530719 -0.0409872 0.0801597 0.39949 0.315819 -0.137901 -0.12645 -0.282607 0.138248 0.736852 0.8883 0.489804 -0.0911909 0.405867 0.436663 0.261593 -0.0110641 -0.0200831 -0.357403 -0.47979 0.559486 1.0891 0.602017 -0.34307 0.423969 0.180078 0.178021 -0.0986726 -0.335933 -0.281132 -0.557117 -0.127621 1.0763 0.867829 -0.218075 0.0173838 0.151407 0.350988 0.0803264 -0.389759 -0.152134 -0.27708 -0.660698 0.615986 1.05814 0.324077 -0.246367 0.1859 -0.0152538 0.0232603 -0.229925 -0.280129 -0.235364 -0.467874 -0.0868332 0.67311 0.480758 -0.0376632 -0.245388 -0.206062 0.150687 -0.0187872 -0.350246 -0.414457 -0.273317 -0.24849 0.383626 0.361879 -0.307257 -0.108791 -0.194082 0.0915831 -0.11607 -0.472402 -0.597877 -0.358125 -0.263947 0.26804 0.342695 -0.227533 -0.150782 0.0925481 0.0667936 -0.0924696 -0.377743 -0.582344 -0.517385 -0.353746 -0.0704489 0.213308 -0.101287 -0.300046 0.400471 0.0534989 -0.0454978 -0.272348 -0.61123 -0.563701 -0.412079 -0.402673 0.0324781 -0.0520499 -0.160624 0.0905356 2 2 -15.7543 2.41272 11 11 5 -0.989464 -0.506544 -0.138205 0.549136 0.424218 0.137288 -0.160881 -0.0316714 0.130982 0.017841 0.427198 -0.21034 -0.116779 0.248889 0.686549 0.502265 0.0319791 -0.0510745 0.0643424 -0.0402527 0.0468583 0.144157 0.143662 0.144338 0.582244 0.991834 0.628283 -0.127829 -0.356411 -0.089813 0.0198037 0.0378505 0.249554 -0.334677 0.0206431 0.491727 0.906832 0.961803 -0.196601 -0.485122 -0.38401 0.018081 0.0760828 0.0514703 -0.604905 -0.477711 -0.314198 0.369798 0.913849 0.0931777 -0.754692 -0.641242 -0.0989775 -0.0480564 0.0425962 -1.01848 -0.650937 -0.528808 0.100025 1.01337 0.911737 -0.515316 -0.808594 -0.625507 -0.243588 -0.173548 -0.687277 -0.401812 -0.109407 0.112305 1.02121 1.02989 0.117791 -0.705627 -0.605619 -0.326775 -0.112394 -0.44483 -0.173469 -0.0488481 0.0870064 0.391502 0.614788 0.333083 -0.526902 -0.884149 -0.496621 -0.381861 0.129267 0.0606771 0.214337 0.215408 0.176118 0.554498 0.562181 -0.0519536 -0.794778 -0.61831 -0.147884 0.356543 0.0447255 0.247837 0.0524785 -0.224758 0.143568 0.495929 0.297711 -0.528142 -0.0493292 -0.0643683 0.251463 0.128233 -0.334449 -0.55955 -0.446033 -0.0306843 0.647417 0.773398 0.0966139 0.20053 -0.0568999 3 11 11 3 2 0 -13.0464 4.70523 11 11 5 0.2183 0.667878 0.397331 -0.100796 -0.544187 -0.7828 -0.876608 -0.348622 -0.225101 -0.0943062 -0.349023 -0.0829454 0.409756 0.515826 0.203708 -0.332069 -0.567301 -0.47926 -0.17454 -0.175297 0.02779 -0.186083 -0.199061 0.204208 0.507926 0.425694 -0.0755312 -0.477066 -0.47231 -0.192427 -0.0646287 -0.0420686 -0.0519286 -0.141217 0.204285 0.407302 0.572281 0.218807 -0.273749 -0.515639 -0.303183 -0.0595714 -0.0877186 0.0508775 -0.184481 -0.0573795 0.0783732 0.39225 0.438376 0.0559953 -0.364992 -0.271955 -0.144832 0.0627043 0.0590349 -0.250483 -0.2618 -0.126486 0.206148 0.536721 0.243224 -0.166498 -0.282768 -0.205339 0.0249912 0.17142 -0.0292816 -0.0795113 -0.00345614 0.228074 0.61822 0.529643 0.0472256 -0.186545 -0.159798 -0.0983136 0.133336 -0.00809741 -0.0328816 0.066352 0.341541 0.726889 0.755211 0.351861 0.077022 -0.117333 -0.109083 -0.0214799 -0.210036 -0.0729265 0.196483 0.579563 0.971246 0.925065 0.478692 -0.00373601 -0.165154 -0.103114 -0.251993 -0.11357 0.199925 0.405653 0.551631 0.761065 0.910545 0.455418 -0.316581 -0.449494 -0.19388 -0.321614 -0.0526797 -0.223434 -0.282301 -0.412666 -0.294186 -0.135769 -0.503949 -0.914689 -0.848544 -0.148938 -0.154768 2 1 -13.5144 2.59092 11 11 5 -0.472783 -0.212407 0.359715 0.401745 0.685105 0.240311 0.109541 0.136547 0.0865241 0.172868 0.097572 -0.506776 -0.399186 -0.0192858 0.406503 0.559768 0.462509 0.0279815 -0.0164064 0.119932 -0.094625 0.0238263 -0.501366 -0.369868 -0.493959 0.118831 0.512444 0.560181 0.0879369 -0.415888 -0.04672 -0.275441 -0.0663658 -0.300787 -0.303395 -0.467712 -0.275994 0.386369 0.485377 0.135286 -0.381827 -0.117707 -0.0439826 -0.130556 -0.245808 -0.438753 -0.508664 -0.47602 0.0642085 0.412451 0.197541 -0.062578 -0.259694 0.183722 -0.274466 -0.380978 -0.523252 -0.512321 -0.517199 -0.25667 0.0702304 0.147067 0.00929812 -0.274824 0.252443 -0.104738 -0.31172 -0.461771 -0.635989 -0.588771 -0.487212 -0.263652 -0.110709 0.022438 -0.157127 0.192085 0.376816 -0.189374 -0.421762 -0.63833 -0.606158 -0.522197 -0.355376 -0.294707 0.11502 -0.0158143 -0.125381 0.485532 -0.0233396 -0.345111 -0.467127 -0.474662 -0.400804 -0.102832 0.0159566 0.110226 0.100146 -0.0782152 0.337732 -0.100093 0.313301 0.120628 0.199824 0.387078 0.148296 0.606233 0.609776 0.232163 -0.0796957 0.254009 0.659534 0.963211 1.06333 0.854635 0.677571 0.850191 0.761666 0.849038 0.159328 -0.0788827 0.106216 2 2 -16.4968 3.11645 11 11 5 0.0288601 0.388529 0.677707 0.615142 0.00197752 -0.613877 -0.501354 -0.260221 -0.0214363 0.198338 -0.161242 -0.619654 -0.120718 0.366932 0.521238 0.122703 -0.480595 -0.517456 -0.374525 -0.190003 0.0401452 -0.171805 -0.818032 -0.255377 0.0920715 0.715262 0.325466 -0.0822264 -0.426678 -0.356672 -0.216887 -0.0352459 -0.176739 -0.287922 -0.0824163 0.328113 1.09595 0.618395 -0.28739 -0.6526 -0.325552 -0.232952 -0.113121 -0.205296 -0.124645 0.35076 0.307815 0.30549 0.471817 -0.108239 -0.745473 -0.6149 -0.515683 -0.071596 -0.442708 -0.237844 -0.0491437 0.337182 -0.194338 0.288006 0.149146 -0.521721 -0.710252 -0.402423 -0.462934 -0.122227 0.205139 -0.10605 -0.198463 -0.537257 0.100803 0.474678 -0.235576 -0.0642883 -0.205168 -0.273438 0.270247 -0.238784 -0.519332 -0.807308 -0.565885 0.181533 0.594366 0.278541 0.0578811 -0.255794 0.0349549 0.152078 -0.48132 -0.738742 -0.567991 0.0355267 0.474181 0.698179 0.545131 0.295337 0.111906 -0.0120955 -0.161429 -0.0640484 0.0565618 0.168257 0.918244 1.29349 1.6445 1.23952 0.306945 0.00747934 -0.0670444 -0.437137 0.0805157 0.0750649 0.164569 0.367791 0.655649 1.03743 0.456673 -0.273618 -0.264313 -0.044719 -0.2983 3 11 11 3 2 0 -16.0321 4.54026 11 11 5 0.127441 0.371299 0.101283 -0.0973491 -0.286134 -0.239942 -0.117962 -0.123179 -0.109346 0.0139844 -0.111672 -0.210694 0.10928 0.220764 0.0633058 -0.104517 -0.26709 -0.247263 -0.169507 -0.155274 0.131671 0.0143787 -0.257504 0.0637524 0.370332 0.345158 0.157814 -0.0829346 -0.270629 -0.218386 -0.295933 0.0226846 0.107138 -0.0814926 0.16124 0.529639 0.71377 0.549165 0.0667362 -0.0507381 -0.0953768 -0.219721 -0.0419499 0.138843 0.0414314 0.236296 0.697928 0.920514 0.91572 0.39504 0.149484 -0.0626523 -0.116385 -0.387671 0.0570092 0.177513 0.465375 0.886823 1.1842 1.4155 0.548322 0.125984 -0.182386 -0.178777 -0.473316 -0.184066 0.12201 0.420906 0.613722 0.79603 0.80898 0.205006 -0.281623 -0.602803 -0.298118 -0.420186 -0.0566304 -0.454192 -0.515779 -0.58176 -0.297952 -0.264355 -0.642448 -0.777246 -0.877525 -0.114554 -0.082002 0.130184 -0.690807 -0.894316 -0.948566 -0.719097 -0.598007 -0.751151 -0.682906 -0.293866 0.282902 0.204772 0.271388 -0.0936621 -0.364442 -0.415793 -0.28524 -0.337973 -0.427015 -0.132597 0.346737 0.426562 0.260765 0.24942 0.384184 0.204154 0.108499 -0.0611557 -0.133057 -0.0620338 0.120625 0.519148 0.246645 0.156051 0.123168 2 1 -11.3619 1.60798 11 11 5 -0.75247 -0.313558 0.133517 0.579516 0.362259 -0.156414 -0.284757 -0.164815 -0.00544676 0.0930523 0.176449 -0.635556 -0.570041 -0.0386035 0.182714 0.138447 0.165003 -0.303274 -0.0722641 0.200692 0.0555937 0.123665 -0.631293 -0.635583 -0.423084 0.199707 0.0886997 0.208365 0.0161542 -0.254825 0.0380061 0.150632 -0.0180236 -0.769637 -0.699513 -0.579895 -0.407026 -0.0898235 0.032999 0.296352 -0.147673 -0.1711 0.30441 0.108762 -0.765767 -0.712708 -0.805677 -0.690995 -0.0877975 -0.218408 0.12348 -0.0353253 -0.232013 0.257874 0.346812 -0.318518 -0.326543 -0.304813 0.0100477 -0.252811 0.143644 0.173704 0.204426 0.138461 0.174737 0.527137 0.444746 0.290784 0.614169 0.757951 0.826865 0.677439 0.738289 0.292632 0.0383233 0.131278 0.579394 0.995014 0.989435 1.10839 0.771489 0.694635 0.525471 0.673489 0.0680443 -0.0891776 0.0796645 0.204531 0.335143 0.443071 -0.0995541 -0.213605 -0.14654 0.168143 0.0408303 0.00826323 -0.219964 -0.137938 -0.0683523 0.160248 -0.0691078 -0.228835 -0.306035 -0.231589 -0.0822711 -0.0276381 -0.0139928 -0.297666 -0.201676 -0.124247 -0.23084 -0.355891 -0.545198 -0.663801 -0.490373 -0.00687421 -0.00345719 -0.172848 -0.394399 -0.0568991 -0.0582247 2 2 -15.033 2.14292 11 11 5 0.0916544 0.558244 0.743185 0.628151 -0.351168 -0.301383 -0.166113 -0.182219 -0.0832965 -0.379237 -0.220024 0.095804 0.267495 0.377794 0.185282 -0.457552 -0.7368 -0.2123 -0.0211886 -0.177064 -0.100758 -0.0737947 -0.591986 -0.142549 -0.0253834 0.0280801 -0.0547305 -0.377143 -0.0786595 -0.359558 -0.216573 -0.1097 -0.123318 -0.379216 -0.463501 -0.236102 0.331454 -0.0371614 -0.377178 -0.306061 -0.242189 0.0461059 0.130728 -0.161558 -0.368044 -0.66147 -0.304669 -0.112885 0.62227 0.0961423 0.141819 0.156982 0.10654 -0.0157574 -0.0746698 -0.558415 -0.101266 0.515853 1.14716 1.76866 1.09147 0.704745 0.0729267 -0.143563 -0.247953 -0.352071 0.288083 0.853192 1.24921 1.30946 1.60474 0.991435 0.0975463 -0.267615 -0.0932669 -0.447068 -0.078151 -0.31376 -0.29805 0.0784889 0.516394 0.692127 0.0801178 -0.215918 -0.584391 -0.0431046 -0.0162245 -0.307741 -0.696514 -0.520455 -0.381791 -0.227445 -0.337261 -0.410441 -0.326349 -0.256241 0.0707311 -0.0408225 0.15058 -0.519555 -0.22639 -0.223017 -0.0133964 -0.42506 -0.423557 -0.121978 0.134627 0.173246 -0.0152425 0.434138 0.0392942 -0.00818119 0.00789945 -0.203406 -0.319529 0.0348266 -0.00898159 0.237139 0.0871205 0.0400939 -0.0219024 3 11 11 3 2 0 -13.1578 2.78906 11 11 5 0.294455 0.499942 0.555228 0.265182 -0.165079 -0.449148 -0.325701 0.121689 0.586544 1.00819 0.873233 0.296005 0.213177 -0.0697356 -0.354349 -0.6368 -0.608611 0.0489054 0.432897 0.827811 0.871142 0.609039 0.115602 -0.0776995 -0.422931 -0.664078 -0.551893 0.149382 0.333674 0.0465075 0.251622 0.374483 0.180628 0.0299152 -0.193709 -0.366919 -0.546051 -0.23799 0.222259 -0.589696 -0.789911 -0.578224 -0.1123 -0.588442 0.0138624 0.0820413 0.170499 -0.272995 -0.779676 -0.206823 -0.486291 -0.708052 -0.343204 -0.0661199 -0.60044 -0.152337 0.279359 0.601674 0.567628 -0.215725 -0.705065 -0.21477 0.377949 0.379366 -0.127597 -0.675072 -0.218462 0.183013 0.569046 0.600392 0.243948 0.140481 0.358981 0.609287 0.367538 -0.00576375 -0.408473 -0.413708 0.0618319 0.270194 0.168766 0.0110201 -0.0190011 0.231781 0.516821 0.183904 -0.193897 -0.15149 -0.254027 0.0618891 0.135139 0.0328655 0.0455337 0.284421 0.32708 0.331986 -0.0853476 -0.35572 -0.116579 -0.0580185 -0.162418 0.0635719 0.278221 0.321136 0.540144 0.413536 0.289083 0.0994462 -0.364592 -0.269396 -0.487072 -0.29686 -0.0841992 0.144007 0.157632 0.0904818 -0.0117906 -0.315585 -0.405019 -0.476265 -0.775921 2 1 -13.5592 2.05504 11 11 5 -0.0328148 -0.183523 0.0815177 0.294392 0.2889 -0.0519889 -0.534783 -0.758967 -0.718826 -0.447503 -0.192589 -0.219417 0.085975 0.329363 0.524925 0.541547 -0.156283 -0.350693 -0.17906 0.0652508 -0.102194 0.439327 -0.167668 0.193886 0.260826 0.371069 0.164299 -0.0753569 0.496478 0.619233 0.527437 0.324688 0.525003 0.278946 0.311472 0.196657 -0.167946 -0.395709 0.413998 1.17998 1.13094 0.757607 0.289095 0.516562 0.187804 0.22491 0.07129 -0.0697353 -0.417655 0.132682 0.0921592 -0.517427 -0.42721 0.0891027 0.683724 -0.0864177 -0.0254839 -0.473197 0.0748055 0.775974 -0.398358 -0.648338 -0.316557 -0.620252 -0.191464 0.178409 -0.119644 -0.188496 -0.395691 -0.307001 -0.0338331 0.266356 -0.0096626 -0.397193 -0.273616 -0.436753 -0.124166 0.0776933 -0.20144 -0.272327 -0.314725 -0.313222 -0.412806 -0.665073 -0.644447 -0.39409 -0.569596 -0.403486 -0.0791667 -0.245369 -0.446943 -0.424163 -0.49175 -0.379434 -0.397692 -0.460039 -0.0604279 -0.135061 -0.154196 0.079445 -0.126996 -0.204991 -0.132058 0.166263 0.337474 0.121583 0.177055 0.275808 -0.110424 0.193689 0.358837 -0.0211628 -0.0679351 0.290043 0.46077 0.583285 0.376418 0.58166 0.379176 0.259069 0.63763 2 2 -13.8242 1.73926 11 11 5 -0.494162 -0.0438613 0.45745 0.694356 0.105725 -0.441941 -0.640818 -0.561628 -0.264505 0.412547 0.607267 -0.080086 0.293279 0.610874 0.379383 -0.589383 -0.869593 -0.369503 -0.173808 0.0062762 0.422037 0.470152 -0.00297218 0.222856 0.273734 -0.229142 -0.703342 -0.165049 0.630198 0.556551 0.340228 0.624608 0.591305 -0.0166565 -0.223008 -0.0593061 -0.180102 -0.133167 0.424671 -0.164868 -0.174429 -0.144543 0.279149 0.223973 -0.170321 -0.333185 -0.623359 -0.580751 -0.694874 -0.265566 -0.447196 -0.767085 -0.314972 0.376247 -6.04456e-05 -0.00488124 -0.170936 -0.0422244 0.105475 -0.794667 -1.69414 -0.924283 0.0367508 0.346374 0.164167 -0.292104 -0.143971 -0.0364676 0.429799 0.150043 -0.0840215 -0.61904 -0.439008 0.127685 0.23139 -0.125506 -0.375767 -0.146523 0.0690534 0.334878 0.143898 -0.348338 -0.809282 -0.168241 0.539621 0.292353 -0.19503 -0.137183 -0.0625914 0.370841 0.13303 -0.253877 -0.424366 -0.0520156 -0.109283 0.361896 0.051189 -0.212097 0.435374 0.342517 0.0877719 0.00224224 0.158141 0.140222 0.199521 0.23846 0.549479 0.620245 0.514665 0.806269 0.160962 0.208881 0.179968 0.353906 0.548325 0.323086 0.351028 0.0526657 0.0749514 0.135951 0.213139 3 11 11 3 2 0 -14.5978 3.36793 11 11 5 0.371309 -0.0045378 -0.371192 -0.397147 -0.0653499 0.486894 0.830073 1.13501 1.03807 0.589026 -0.0198761 -0.206933 -0.750821 -0.603422 0.0851825 0.562658 0.611352 0.635635 0.843475 0.684941 0.486353 -0.239574 -0.479189 -0.765965 -0.152467 0.566744 0.28532 -0.390856 -0.0374873 0.260703 0.210844 -0.318317 -0.701562 -0.144483 -0.455517 -0.174847 0.12865 -0.65445 -0.977396 -0.481258 -0.230807 -0.415692 -0.617153 -0.713355 0.425452 -0.0681979 -0.572008 -0.514087 -0.261553 0.0622789 0.138632 -0.193177 -0.644402 -0.823358 -0.511755 0.642443 0.47482 -0.0212875 -0.145974 0.253057 0.624786 0.394921 -0.0566219 -0.413825 -0.296909 0.211309 0.436411 0.310837 0.0684672 0.0962253 0.480852 0.592746 0.163439 -0.0976317 -0.0750451 -0.0391193 0.360095 0.183617 0.121243 0.0396704 0.0867904 0.351704 0.252514 -0.201971 -0.262722 0.00994236 -0.0619762 0.13584 0.0380533 0.0547952 0.113986 0.304447 0.334462 0.292497 -0.0294413 -0.0358623 0.0805028 -0.090557 0.0680977 -0.0432059 0.135513 0.195393 0.377259 0.32111 0.0747688 -0.142749 -0.301476 -0.308842 -0.313786 -0.121383 -0.32948 -0.196565 -0.0472894 0.00953142 -0.0137216 -0.0555686 -0.252637 -0.360303 -0.535586 -0.323096 0.00205225 2 1 -13.4731 2.29754 11 11 5 0.413221 0.527596 0.0700964 -0.383709 -0.732219 -0.815343 -0.722505 -0.274785 -0.18645 -0.0833786 -0.030408 0.485485 0.308132 -0.0972318 -0.290712 0.0549188 0.268231 0.292035 0.129172 0.34562 0.387897 0.241234 0.217605 -0.0995516 -0.262046 0.0723176 0.926414 0.877853 0.806892 0.548314 0.412501 0.659323 0.374712 -0.0123254 -0.805316 -0.267714 0.600948 0.929686 0.0835704 0.168551 0.564909 0.614349 0.648141 0.425039 0.112668 0.105236 -0.242426 -0.305069 -0.475251 -0.570706 -0.796681 -0.270193 0.0671703 0.387896 0.0155496 -0.656518 0.0894884 0.214411 -0.112203 -0.285405 -0.496777 -0.523795 -0.310905 -0.161309 0.16151 -0.256033 -0.447474 -0.1896 -0.0654432 -0.120195 -0.53405 -0.646167 -0.511784 -0.454656 -0.254495 -0.0883946 -0.182119 -0.447454 -0.334879 -0.336017 -0.390895 -0.49082 -0.416578 -0.450664 -0.512825 -0.340907 -0.198882 -0.0719078 -0.370364 -0.331139 -0.209987 -0.284417 -0.226047 -0.0385867 0.0370138 -0.0532888 0.0381761 -0.0397487 0.198973 -0.120348 0.170561 0.362818 0.381431 0.304178 0.294055 -0.00758749 0.024713 0.27412 0.19274 0.179858 -0.130302 0.167793 0.334776 0.655782 0.473036 0.586464 0.266668 0.268621 0.471304 0.273441 0.259777 2 2 -15.2437 2.32086 11 11 5 0.66762 0.325391 -0.307384 -0.725906 -1.03042 -0.293332 0.0286339 0.297436 0.435245 0.376256 0.157554 0.446417 -0.28013 -0.72396 -0.32476 0.0731946 0.261861 0.506155 0.459136 0.595053 0.758781 0.423334 0.160116 -0.603904 -0.28579 0.508937 0.606042 0.355748 0.395446 0.58569 0.73813 0.434665 0.134211 -0.265263 -0.574375 -0.162882 0.0549097 -0.606189 -0.736848 -0.34692 0.205814 0.437008 -0.044764 -0.431414 -0.101623 -0.461424 -0.897772 -0.723755 -0.542703 0.01137 0.417999 0.233356 -0.499757 -0.68466 -0.523537 0.130842 0.0571058 -0.829674 -1.08182 -0.455511 0.416955 0.50022 -0.112213 -0.657069 -0.792982 -0.608497 0.391167 -0.0143565 -0.386503 -0.598269 0.19828 0.806499 0.122942 -0.167206 -0.169465 -0.293217 -0.0753375 0.238112 0.0123516 -0.38506 -0.534191 0.160254 0.438921 0.0535742 -0.228952 0.0612166 -0.126832 -0.354125 0.210996 -0.0676299 -0.137471 0.108923 0.278351 0.431715 0.256265 0.350212 0.714034 0.135733 -0.0342688 0.30064 0.0776794 0.0713206 0.35065 0.456131 0.475527 0.445672 0.29707 0.375503 0.10201 -0.178479 -0.0969899 0.10426 0.193191 0.212153 0.0596674 -0.0206166 -0.0178712 0.0297258 0.129774 -0.0480154 -0.195053 3 11 11 3 2 0 -15.4651 3.40874 11 11 5 -0.589183 -0.294431 0.149869 0.628924 1.04993 1.282 1.13791 0.651751 0.0363961 0.0651667 0.110416 -0.534531 0.187735 0.505091 0.45478 0.65413 1.08467 0.894308 0.471664 -0.201384 -0.275752 -0.24535 0.00519748 0.285818 -0.0903899 -0.31679 0.0567193 0.205946 0.22095 -0.52275 -0.711111 -0.411283 -0.412444 -0.288187 -0.309397 -0.761397 -0.973976 -0.564707 -0.253948 -0.500935 -1.06368 -0.808649 -0.300021 0.0758959 -0.39022 -0.18813 -0.200264 0.164205 -0.185615 -0.379171 -0.905321 -1.09691 -0.299156 0.393685 0.577755 0.0506102 0.0113644 0.345197 0.50419 0.0884222 -0.397808 -0.410766 -0.00161898 0.378819 0.49095 0.426973 0.164078 0.258231 0.41511 0.349718 -0.0813584 -0.175972 -0.102853 0.207419 0.202132 0.207017 0.153507 0.191998 0.301688 0.291452 0.160069 -0.123171 -0.198996 -0.119029 0.0798117 0.0605014 0.0775174 0.0512751 0.252029 0.429539 0.285331 0.167878 0.115812 0.117704 -0.0642643 -0.067558 -0.0767796 -0.0167186 -0.0578784 0.122643 0.333088 0.189342 -0.00372877 -0.162017 -0.3871 -0.410016 -0.303354 -0.216693 -0.177566 0.00417174 -0.0508735 0.142174 0.0655005 0.0660395 -0.119145 -0.42399 -0.491006 -0.280482 -0.069761 -0.122057 0.0773908 2 1 -12.4395 2.06923 11 11 5 -0.148765 -0.472147 -0.896496 -0.785001 -0.608783 -0.440081 -0.00659169 0.0128506 -0.168027 -0.0872433 0.00791206 -0.197242 -0.328406 0.219823 0.21709 0.285847 0.233803 0.260844 0.58877 0.174134 0.0409403 0.27719 -0.145016 0.526901 0.99717 0.815032 0.984765 0.718748 0.737043 0.887194 0.35674 0.0105285 0.160313 -0.295888 0.369675 0.784806 0.0407089 0.137913 0.469252 0.790926 0.87925 -0.131837 -0.0335136 0.168431 -0.505269 -0.208344 -0.434512 -0.545142 -0.790495 -0.445156 0.245178 -0.137713 0.020595 0.0481656 -0.301394 -0.0631232 -0.180716 -0.309924 -0.2938 -0.446827 -0.47013 -0.0501779 0.0952027 -0.248994 -0.269937 -0.282063 -0.203015 -0.250871 -0.612696 -0.578588 -0.520064 -0.478162 -0.325341 -0.0840214 -0.25981 -0.057042 -0.10275 -0.44271 -0.522373 -0.533652 -0.533245 -0.535019 -0.35861 -0.351899 -0.0480171 -0.0608821 0.0769673 -0.0302739 -0.282796 -0.331272 -0.166204 -0.0332443 -0.159218 -0.0803978 0.0256719 0.0749586 0.142537 0.236068 0.174792 0.288277 0.284401 0.244833 0.26044 0.0951283 -0.0245612 0.21086 0.0549947 0.152434 0.138303 0.0343281 0.370302 0.524899 0.42851 0.378102 0.218114 0.40776 0.332554 0.428488 0.201195 0.198938 0.147896 2 2 -13.7478 1.87321 11 11 5 -0.425535 -0.82003 -0.640001 -0.340139 0.0611564 0.338692 0.647814 0.595006 0.208565 -0.129548 -0.0631444 -0.478915 -0.10759 0.0885809 0.541555 0.571023 0.833749 0.921026 0.826155 0.269727 0.133332 -0.270636 -0.119388 0.475906 0.366652 0.25673 0.433428 0.616697 0.9133 0.413122 -0.271517 -0.21659 -0.320814 -0.53329 -0.318415 -0.727553 -0.751746 -0.242992 0.417012 0.35209 -0.423847 -0.792867 -0.398091 -0.159276 -0.915127 -0.488017 -0.308042 0.227567 0.376732 -0.225433 -1.04996 -1.06138 -0.467096 -0.0932258 0.407715 -0.728033 -0.818642 -0.196724 0.527423 0.274636 -0.642872 -0.793178 -0.432429 -0.212686 0.262808 0.419946 -0.447672 -0.299767 0.245683 0.494982 0.203318 -0.116059 -0.277277 -0.334759 -0.199223 -0.175629 -0.00478672 -0.403856 -0.334934 0.15301 0.29077 0.162089 0.0489301 -0.0186943 -0.167563 -0.217358 0.0247842 0.160773 -0.0263935 0.126714 0.488773 0.521824 0.40886 0.538107 0.434143 -0.165788 -0.0367534 0.0946579 0.0898972 0.0290166 0.534839 0.65745 0.465595 0.242205 0.346646 0.344613 -0.00307093 -0.0417917 -0.0673157 0.0658925 0.148377 0.22406 -0.00205837 0.0920319 0.0947927 0.141848 0.138472 0.0408332 -0.207079 -0.0754333 -0.224106 3 131072 0 0 3 0 0 0 3 11 11 3 2 0 -17.7471 5.50548 11 11 5 -0.0357995 0.00868398 0.132137 0.17322 0.120121 0.220691 0.181897 -0.0155281 -0.121369 -0.129572 -0.2169 -0.102817 0.00157574 0.00205206 -0.0532993 -0.101265 0.217065 0.475165 0.474976 0.323636 0.165299 0.0379674 -0.145954 -0.195484 -0.220701 -0.323347 -0.104709 0.331986 0.632644 0.62361 0.391933 0.030069 -0.124444 -0.226532 -0.270739 -0.303866 -0.203023 -0.0378619 0.335862 0.507443 0.289666 0.0812361 -0.49412 -0.892859 -0.147839 -0.189464 -0.219374 -0.148294 -0.10369 -0.199727 -0.365951 0.0490111 -0.533775 -1.61241 -1.82749 0.156977 0.149161 -0.0421221 -0.331705 -0.82037 -1.65124 -0.587325 0.194649 -0.343445 -1.21033 -1.02383 0.453728 0.335775 -0.0486942 -0.524903 -0.438168 0.0702103 0.455441 0.778742 0.725104 0.102305 -0.318692 0.446585 0.260001 0.0210678 -0.000264454 0.181285 0.478359 0.555338 0.499721 0.25325 -0.0485193 -0.168075 0.177119 0.156255 0.0793158 0.110981 0.299259 0.490838 0.48678 0.263643 0.0296928 -0.182419 -0.21474 0.0223373 0.0265563 0.126294 0.258413 0.344896 0.345747 0.329073 0.210467 0.106755 0.0236174 -0.0169579 0.00446724 0.000805661 0.0728951 0.191363 0.226568 0.322694 0.327555 0.203074 0.139968 0.161394 0.175502 2 1 -12.1448 2.44503 11 11 5 -0.7379 -0.468731 0.0212509 0.165505 0.0464872 0.105848 -0.10579 -0.0955592 -0.0116827 0.0355937 0.16022 -0.621689 -0.255714 0.175361 0.207438 -0.0127927 -0.496164 -0.500317 -0.42003 -0.495303 -0.458158 -0.487093 -0.210365 -0.0288817 0.0598163 0.00635113 -0.220943 -0.23001 -0.403245 -0.599864 -0.130562 0.224767 0.0486514 -0.175582 -0.0801881 -0.00291542 0.00118814 -0.21232 -0.340562 -0.160475 0.4313 0.658335 0.900056 0.312141 0.213563 0.0854563 -0.0671787 -0.0562328 -0.301455 1.09618 1.05459 1.02411 1.03105 0.367786 0.0479152 0.0312795 -0.0669043 -0.107524 -0.136606 0.0826166 -0.712469 -0.00854882 0.269155 1.3574 0.679934 -0.0662475 -0.0904336 -0.0649361 -0.0725131 -0.191183 -0.0594631 1.43629 0.669071 -0.0377357 0.334611 0.484016 -0.169551 -0.2524 -0.313497 -0.070138 0.260383 0.216714 -0.175061 -0.431972 -0.60787 -0.514885 -0.373646 -0.213158 -0.187693 -0.273507 -0.159377 -0.133897 -0.310649 -0.420926 -0.14488 -0.0868674 -0.131482 -0.164099 0.0223574 -0.0242884 -0.0496464 0.0385376 -0.0186408 -0.115307 -0.0429675 -0.0765642 -0.00923094 0.129988 0.230209 0.0970661 0.11249 0.128434 0.179423 0.090053 0.0907446 0.0999571 0.0154203 -0.0163138 -0.00600798 -0.0435061 0.00318127 2 2 -20.4812 4.28471 11 11 5 0.0100133 -0.274032 -0.112807 -0.172882 -0.0905836 -0.232159 -0.254059 -0.264854 0.00239568 0.187619 0.211757 0.173714 0.183011 0.0965203 0.156818 0.256081 0.163829 0.14302 0.103428 0.249738 0.209509 0.309431 0.143431 0.188855 0.13061 0.0881951 -0.0469571 0.210636 0.295168 0.400391 0.593728 0.640686 0.839263 -0.241783 0.0806898 -0.0255787 -0.0775477 0.103258 0.678382 0.678028 0.793303 1.11949 0.756116 0.409146 -0.416806 -0.32166 0.300907 0.719592 0.942867 0.65309 0.139601 0.246767 0.476755 -0.386226 -0.637341 -0.49058 -0.0733369 0.12909 -0.179522 -0.842505 -2.16067 -0.547155 0.432201 -0.119358 -0.746089 -0.758784 -0.129966 -0.0628935 -0.520864 -1.22165 -0.980054 -0.509975 0.0587022 0.584441 0.540105 0.0438095 -0.662889 0.335878 0.173689 -0.308028 -0.792765 -0.548167 -0.154936 0.0992974 0.589699 0.436298 0.120117 -0.525521 0.603111 0.0964823 -0.283338 -0.554266 -0.277963 0.0556011 0.158969 0.241732 0.0619325 -0.215463 -0.580693 0.0887145 -0.0470124 -0.123108 -0.149857 -0.0345831 -0.249741 0.108998 0.336454 0.168402 -0.274223 -0.572326 0.206915 -0.0348681 -0.0331325 -0.0743145 -0.293977 -0.0414159 0.0769811 0.32862 0.200742 -0.0392641 -0.592295 3 11 11 3 2 0 -19.4657 6.22819 11 11 5 0.0407034 0.182109 0.24522 0.125067 0.0986572 0.0327906 -0.00320021 0.0408233 0.102139 0.188225 0.254932 -0.00587541 -0.0140195 0.111567 0.0449306 0.0136099 -0.0636816 0.0448222 -0.0102046 -0.0842356 -0.0718225 0.0832086 0.0185774 -0.0660062 -0.058771 0.230984 0.438388 0.424823 0.293772 0.0568969 -0.115903 0.0158899 0.0159534 -0.225909 -0.277407 0.0308148 0.452324 0.569234 0.452221 0.244041 0.0765863 -0.0223892 0.0184028 0.0748697 -0.27884 -0.0494407 0.232915 0.479484 0.610128 0.445088 0.0698381 -0.491476 -0.87774 -0.576022 -0.0667267 -0.0689978 0.0354084 0.0828232 -0.112844 -0.283865 -0.99124 -1.61841 -1.7073 -1.29448 -0.824122 -0.19375 -0.0295579 -0.249622 -0.524726 -0.798004 -0.142882 0.61532 -0.192655 -0.742398 -0.213958 0.114319 0.120996 -0.134196 -0.51336 -0.527002 -0.132206 0.904646 1.08922 -0.122978 -0.629621 -0.24219 0.00321249 0.072545 -0.0614748 -0.133641 0.0766717 0.250423 0.481864 0.647134 -0.000192868 -0.312752 -0.0904257 -0.0784619 0.124177 0.319933 0.285417 0.391842 0.350499 0.36679 0.255323 0.0528588 -0.0788931 -0.0569927 -0.0405515 0.0786432 0.337363 0.424781 0.402132 0.430481 0.41793 0.278085 0.105495 0.0697567 0.043617 0.0963012 0.317388 2 1 -13.7303 2.20443 11 11 5 -0.263632 -0.0365521 -0.0678276 0.0930677 0.110515 0.129039 0.130714 0.312414 0.362889 0.495486 0.499349 -0.0013709 -0.062252 -0.14928 -0.232187 -0.241222 -0.204512 -0.186721 -0.113365 0.0805919 0.221012 0.334646 0.125947 -0.0179951 -0.324806 -0.224467 -0.286108 -0.376686 -0.5037 -0.498845 -0.451472 -0.400963 -0.120732 0.148136 -0.178884 -0.349915 -0.38402 -0.367627 -0.508709 -0.451015 -0.252704 -0.123351 -0.554342 -0.413117 -0.0112717 -0.0339102 -0.417321 -0.30161 0.172587 1.0078 1.30318 1.41066 -0.0537671 -0.124725 0.0838642 -0.18737 -0.177669 0.172971 0.660851 0.382746 0.744006 0.566223 -0.482543 -0.937332 -0.149671 0.32363 -0.175442 0.0762108 0.116972 -0.379456 0.478183 0.981473 1.48365 0.460818 0.109111 -0.312889 -0.172732 -0.0874292 -0.247588 -0.419035 0.540646 0.349127 0.598902 1.08385 -0.0301878 -0.471199 -0.411898 0.0846595 -0.0398798 0.20036 0.129105 -0.31721 -0.642723 -0.671459 0.239055 -0.0580511 -0.170288 -0.0557055 0.0638794 -0.0873395 0.010237 -0.195464 -0.178563 -0.14817 -0.225432 -0.147037 -0.17664 -0.284497 -0.115145 0.094106 0.0780952 -0.0726557 -0.140333 0.0930374 0.0800521 0.111912 0.0530926 0.0254503 -0.0845566 0.147178 0.183085 2 2 -19.2244 4.72745 11 11 5 -0.133706 -0.0834947 -0.0552964 -0.151616 -0.188794 0.0296034 0.0815026 0.257715 0.194798 0.205481 0.0284716 -0.0606755 -0.0413202 -0.00518051 -0.126776 -0.17911 -0.142009 0.148104 0.1136 0.148887 0.082591 0.0652875 0.219327 0.112249 -0.129364 -0.0262454 0.0421267 0.177246 0.354182 0.296401 0.445824 0.366994 -0.246224 0.0829555 -0.0884877 -0.0339042 0.222835 0.355462 0.446614 0.563217 0.813574 0.903277 0.501257 -0.0526876 -0.419655 -0.18947 0.508496 0.887526 0.900083 1.14203 1.26668 0.848547 0.47609 0.098281 0.125363 0.163017 0.335105 0.424993 0.0238381 -0.0567472 -0.28093 -0.332367 -1.09534 -0.874483 -0.7625 -0.238109 0.0402179 -0.052135 -0.268179 -1.24058 -0.752091 0.263731 0.0816828 -0.266111 -0.106212 -0.138498 -0.296229 -0.275995 -0.573283 -0.557745 -0.388239 0.658177 0.959933 0.0514565 -0.634738 -0.489244 -0.416967 -0.29153 -0.490204 -0.669506 -0.450938 -0.0583952 0.572945 0.779611 0.205081 -0.403868 -0.538578 -0.571059 -0.0639944 -0.334631 -0.357853 -0.157618 -0.267032 0.15621 0.459949 0.278731 -0.115592 -0.47865 -0.349448 -0.371312 -0.207791 -0.15487 -0.244542 0.10071 0.358429 0.278883 0.287146 -0.0361312 -0.345015 -0.39813 -0.185096 3 11 11 3 2 0 -17.7641 5.94886 11 11 5 0.283863 0.235275 0.0746949 0.0409558 0.0422896 0.201333 0.184098 0.219714 0.320336 0.216141 0.268608 0.0576202 0.0135275 -0.0229845 -0.00454236 -0.021196 0.0249343 -0.100365 -0.0624746 0.0377007 -0.0362897 0.104725 0.0453748 0.13278 0.207165 0.231568 0.151265 0.0212647 -0.0605609 -0.159143 -0.174018 -0.235843 0.0884262 0.269839 0.504446 0.419834 0.317038 0.223486 0.0960155 -0.038746 -0.175545 -0.257855 -0.136935 0.167639 0.60694 0.569568 0.371832 0.232961 0.0383747 -0.175581 -0.381179 -0.221689 -0.00846794 -0.0528113 0.181007 0.176395 0.072604 0.00480984 -0.418706 -1.30835 -2.03025 -1.68453 -0.716524 0.077828 0.0776214 0.0834887 -0.645442 -0.426612 -0.495711 -0.744934 -1.10709 -0.660015 -0.45351 -0.146128 0.281018 0.0634411 0.0802711 -0.541541 0.469059 0.718602 -0.141855 -0.743675 -0.265339 -0.235727 -0.0653906 0.360807 0.114292 0.119959 0.152637 0.628854 0.840127 0.173285 -0.336334 -0.136367 -0.244804 0.0406609 0.229831 0.165273 0.16721 0.284957 0.3896 0.372865 0.162054 -0.00309169 -0.0868572 -0.243814 -0.121588 0.149846 0.240305 0.291866 0.388878 0.312863 0.21359 0.10441 0.0211448 -0.106291 -0.116447 0.131785 0.39967 0.405649 0.382947 2 1 -12.2665 1.67314 11 11 5 -0.283915 -0.0697238 0.0287388 0.0134304 0.223784 0.206602 0.349154 0.441937 0.319936 0.313636 -0.0768946 -0.0416985 0.00529841 -0.326214 -0.257421 -0.0495451 0.19759 0.440559 0.500346 0.456738 0.269914 -0.121877 -0.313546 -0.45886 -0.44874 -0.545087 -0.472705 -0.349753 -0.200958 0.100433 0.167063 0.0570001 -0.334725 -0.457601 -0.381619 -0.499098 -0.721486 -0.590788 -0.550688 -0.468661 -0.501099 -0.164153 0.114212 -0.392069 -0.52712 -0.405841 -0.130345 0.259568 0.572227 0.902866 0.18462 -0.318248 -0.145425 -0.241405 -0.280449 0.0848434 0.48442 0.673784 1.20257 1.05455 -0.475756 -0.747357 0.629697 0.349947 -0.318542 -0.345854 0.162027 0.0310406 0.263282 0.68089 0.683868 0.325151 0.0157979 0.213639 0.239114 -0.243864 -0.165932 -0.121556 0.611875 1.55797 0.954599 0.430643 -0.288541 -0.536293 0.26442 0.205366 -0.0999067 -0.139412 -0.153697 -0.430999 -0.186341 0.50595 0.147237 -0.57594 -0.345857 0.131397 -0.00812657 -0.0294246 -0.0229748 -0.495191 -0.507873 -0.340911 -0.0123718 -0.0296901 -0.225672 -0.183538 -0.0453156 0.177061 0.153306 -0.10265 -0.110243 -0.0103998 -0.0604577 -0.0199845 0.0482743 -0.163096 -0.0414219 0.331512 0.269593 -0.0763721 -0.220166 2 2 -14.8825 3.29218 11 11 5 -0.107886 -0.0321712 0.147738 0.175048 0.11573 0.124135 0.00618185 0.24342 0.0582734 0.0849993 -0.142498 -0.177462 -0.238232 -0.0487692 0.0314502 -0.0652497 0.0660371 3.35509e-05 0.130553 -0.0114526 -0.0611453 0.00609088 -0.0275932 -0.0357233 0.149429 0.229396 0.145001 0.405876 0.346057 0.114412 -0.184719 -0.530169 -0.22975 0.162139 0.184013 0.152844 0.264211 0.457648 0.761936 0.639583 0.107529 -0.206485 -0.546 -0.292049 0.637732 0.78438 0.564852 0.92496 1.25699 1.56217 0.970159 0.365694 0.202795 -0.252062 -0.324933 0.94181 0.547074 0.512545 0.361003 -0.166653 -0.843769 -0.815906 -0.674208 0.0587827 0.0223095 -0.239078 -0.403843 -0.752606 -0.406216 -0.317587 -0.590143 -0.0187261 -0.286089 -0.242305 0.0820091 -0.0720503 -0.321227 -0.674006 0.230048 0.46813 0.0130234 -0.393168 -0.0578501 -0.423922 -0.524263 0.0630418 -0.0153731 -0.295656 -0.399412 0.120612 0.638108 0.492615 -0.332784 -0.308058 -0.520163 -0.1296 0.165171 -0.0401156 -0.42352 -0.300906 0.0271483 0.487227 0.448906 0.051536 -0.375378 -0.569206 -0.520613 -0.278901 -0.30161 -0.54513 -0.248126 0.0970802 0.152214 0.334837 0.212329 -0.181534 -0.405541 -0.342405 -0.220216 -0.189258 -0.425576 3 11 11 3 2 0 -14.0443 5.92097 11 11 5 0.106091 0.0128514 -0.00904838 -0.0142249 -0.0848334 -0.0911109 -0.0862994 -0.0859236 0.130506 0.265301 0.242538 0.265031 0.0451395 0.0463234 -0.0903467 -0.184195 -0.281096 -0.211195 -0.30801 -0.0458248 0.19414 0.217143 0.199363 0.169103 0.0347554 -0.191782 -0.269575 -0.0962628 -0.107601 -0.120107 -0.0296156 0.243385 0.505987 0.230918 0.00531138 -0.190616 -0.220169 -0.343747 -0.116289 0.0541909 0.0689982 0.16252 0.341682 0.716302 -0.217879 -0.472202 -0.889907 -0.598703 -0.768546 -0.285471 0.0450371 -0.0167685 0.0489082 0.339325 0.720402 -0.243043 -0.816713 -1.44099 -1.30981 -1.37585 -1.02997 0.40727 0.0614857 -0.0606527 0.129556 0.621583 -0.369438 -0.387911 -0.680769 -0.546452 -0.237933 0.0854517 0.263717 -0.016774 -0.206525 -0.00948638 0.575579 0.380021 0.383425 0.189631 -0.00705305 -0.136318 -0.102469 -0.0405153 -0.00866246 -0.0700281 0.0503469 0.585521 0.366843 0.269515 0.0336811 -0.171704 -0.20866 0.0157815 0.194077 0.23268 0.156423 0.220215 0.489309 0.271307 0.0689368 -0.0972065 -0.235139 -0.029996 0.32283 0.434583 0.383943 0.314461 0.267521 0.369711 0.166391 0.124193 0.0735808 0.0776769 0.331023 0.498961 0.456426 0.352966 0.235627 0.179063 0.214841 2 1 -10.1421 1.57468 11 11 5 -0.0357867 -0.0646287 0.0556288 0.0454816 0.130445 0.390051 0.494436 0.41173 0.169842 -0.0745783 -0.525888 -0.592904 -0.541095 -0.376363 -0.270782 0.112875 0.192068 0.22375 0.144431 -0.0325603 -0.210545 -0.302543 -0.453968 -0.166455 -0.195001 -0.425719 -0.495972 -0.315675 -0.322605 -0.361828 -0.30194 0.0191828 -0.374558 0.376644 0.304954 0.252077 0.0414717 -0.484389 -0.303277 -0.315222 -0.318659 0.0141373 -0.0412791 -0.0885701 0.825187 0.757597 0.971748 0.365648 0.144469 0.256426 0.280719 -0.0728844 0.151194 -0.157464 -0.362702 1.31892 0.975372 0.762074 -0.0715181 -0.475176 0.929519 0.705757 -0.349254 -0.0305222 -0.165332 -0.556797 0.635498 0.870081 0.639135 -0.005487 0.421378 0.586789 -0.216702 -0.108984 -0.052108 -0.275637 -0.561335 -0.0131556 -0.0619146 -0.0436663 -0.188128 -0.257014 -0.116786 0.250916 0.160458 -0.0630801 -0.274089 -0.537634 0.0753053 -0.0707471 -0.28566 -0.155852 0.087303 0.433277 0.426376 -0.0320485 -0.100769 -0.268255 -0.610388 0.125729 0.0545286 0.0198114 -0.0301815 0.133138 0.229917 -0.0846239 -0.190706 -0.272248 -0.367399 -0.595292 0.0572065 0.205386 0.0793566 0.0271609 0.0497668 -0.127122 -0.18111 -0.179219 -0.157411 -0.230972 -0.44218 2 2 -13.5039 2.34416 11 11 5 -0.00625043 0.00832048 0.0663758 0.391297 0.212933 -0.0973698 -0.356232 -0.436096 -0.328824 0.0619655 0.243966 0.344929 0.237624 0.310038 0.509178 0.349755 -0.12531 -0.0799039 -0.239844 -0.445647 -0.125346 0.0803315 0.378721 0.514128 0.595324 0.454906 0.197472 0.0429627 0.0223688 -0.622979 -0.700864 -0.239079 0.307916 0.888076 0.926915 0.780139 0.607806 0.213115 0.238912 0.0162531 -0.368148 -0.0430511 0.0697076 0.293591 0.655242 0.620401 0.375156 0.859706 0.233107 0.380107 0.18361 -0.199072 -0.000471494 0.0230039 0.480662 0.189954 -0.306592 -0.744431 -0.371544 -0.865679 -0.994864 0.728789 0.0692258 -0.0118429 -0.13284 0.398966 0.126121 -0.276345 -0.688311 -0.856706 -0.303693 -0.0907764 0.309836 0.163335 -0.310361 -0.395769 0.00439654 0.672943 0.646487 0.229575 -0.439058 -0.538936 -0.663902 -0.404204 -0.589667 -0.71499 -0.547152 0.137089 0.438267 0.507199 -0.0560832 -0.444684 -0.566623 -0.642068 -0.731174 -0.619651 -0.582189 -0.304075 0.250823 0.539923 0.393168 -0.0235185 -0.719741 -0.833974 -0.161685 -0.024248 -0.101881 -0.0661103 0.162248 0.181246 0.435762 0.145337 -0.141861 -0.500437 -0.0645762 0.172353 0.148438 0.204305 0.351163 0.18594 0.277818 3 11 11 3 2 0 -17.3554 7.37909 11 11 5 0.524868 0.376432 0.0960495 -0.159507 -0.134412 -0.125101 -0.102556 -0.0363939 -0.0508639 -0.000171984 0.14563 0.192967 0.157999 0.124095 0.128695 0.0567579 -0.114025 -0.298388 -0.23278 -0.097874 -0.119615 0.0164692 0.128441 0.276626 0.337239 0.321503 -0.0677847 -0.301175 -0.406962 -0.282273 -0.0798028 -0.079214 0.142467 -0.249433 0.166788 0.496382 -0.136388 -0.690979 -0.780941 -0.3664 -0.384059 0.068529 0.0958731 0.238005 -0.431663 0.194012 0.5759 -0.191245 -1.01764 -1.09563 -0.502168 -0.740355 0.181294 0.208154 0.0143877 -0.4127 -0.213034 -0.26197 -0.842481 -1.91448 -1.59378 -1.13901 -0.604239 0.111907 0.126393 -0.146381 -0.169734 -0.229377 0.0669138 0.308694 0.262742 0.11956 0.0113505 -0.0967538 0.0972548 0.0543297 -0.0288645 0.3196 0.47663 0.595447 0.461276 0.145151 -0.0758302 -0.185977 -0.185764 -0.00781286 0.190125 0.176188 0.459562 0.422475 0.303014 0.236957 0.0687809 -0.0646878 -0.102356 0.120294 0.40273 0.407777 0.365589 0.390919 0.320772 0.250899 0.0967572 -0.0257992 -0.0994368 0.0639757 0.357796 0.515346 0.470245 0.513496 0.400759 0.381881 0.217901 0.0515114 -0.0435955 0.0694577 0.240967 0.416175 0.496577 0.463312 0.424802 2 1 -12.2526 1.75478 11 11 5 -0.259796 -0.140928 -0.19992 -0.192095 -0.148949 -0.0809197 0.12124 0.279031 0.237929 0.489438 0.185887 -0.613998 -0.575718 -0.384771 -0.452157 -0.193945 0.086758 -0.109291 -0.306505 0.0226541 0.171045 -0.23219 -0.564246 -0.358803 -0.155514 0.132074 0.457756 -0.231373 -0.400273 -0.355117 -0.510673 -0.443279 -0.441484 0.114593 0.419084 0.270162 0.731406 0.623969 0.0938132 -0.599105 -0.429027 -0.076159 -0.0556458 -0.30638 -0.120803 0.107852 0.805975 1.76269 1.43931 0.66703 -0.552681 0.0663055 0.670924 -0.242134 -0.462862 -0.2267 0.108373 0.434 0.907799 0.538166 -0.464258 -0.807359 0.775156 0.458152 -0.223975 -0.136107 -0.0579396 -0.13887 0.16835 0.611562 1.28898 0.499771 0.204432 0.143407 -0.0686763 0.194249 0.116969 -0.161192 0.0953385 0.0516042 -0.402467 -0.375544 -0.669506 -0.453941 -0.0053075 0.425459 0.414779 -0.0460144 -0.422245 -0.317944 -0.217621 -0.0845316 -0.0466616 -0.0558848 -0.0194483 0.419156 0.455125 0.00264802 -0.314774 -0.0677161 -0.0445906 0.0205497 -0.0811488 -0.0821645 -0.165711 -0.00632964 0.0520001 -0.196383 -0.310487 -0.243925 0.122156 0.105627 0.0541433 0.0333775 -0.0524246 -0.126718 -0.212551 -0.244023 -0.369006 -0.338867 -0.202495 2 2 -16.7057 3.19359 11 11 5 0.252185 0.0424517 -0.00080799 -0.118218 -0.0281792 0.242634 0.38394 0.0866354 -0.156674 -0.175399 -0.365391 0.259221 0.149413 0.0723006 0.318373 0.405901 0.473421 0.37761 0.0852241 -0.0794364 -0.259654 -0.631602 0.52798 0.353247 0.335609 0.545454 0.523711 0.419628 0.143965 -0.219833 -0.105317 -0.508887 -0.503406 0.132172 0.271972 0.804148 0.809604 0.430433 0.0965967 0.547209 -0.153066 0.263416 0.0796933 -0.17907 0.00191909 0.476119 1.31648 0.814525 -0.0373354 0.114049 0.730565 -0.448327 0.517879 0.210324 -0.26362 -0.36661 -0.253408 -0.233232 -0.497051 -1.46364 -1.08498 -1.16513 -0.68062 0.354101 0.452023 -0.338396 -0.578208 -0.22185 0.167813 0.664039 0.191354 -0.11732 -0.393729 -0.572125 -0.0764863 -0.0490138 -0.686454 -0.307532 0.0637341 0.425753 0.595939 0.238876 -0.386823 -0.595799 -0.728211 -0.469054 -0.402209 -0.854507 0.0564076 0.189102 0.468934 0.490428 0.328391 -0.242245 -0.507489 -0.590722 -0.107458 -0.142421 -0.530774 0.0458121 0.0874632 0.372599 0.584787 0.115323 -0.408467 -0.649725 -0.249871 0.159773 -0.0203776 0.116599 -0.00840551 0.227832 0.372799 0.264489 -0.254122 -0.520056 -0.291697 0.0214423 0.119336 0.329566 0.15973 3 11 11 3 2 0 -18.5815 7.58587 11 11 5 0.0992192 0.202966 0.411043 0.45397 0.267559 -0.0153048 -0.148749 -0.14541 -0.100124 -0.0687354 0.00334942 -0.117868 -0.0993632 0.135703 0.19246 0.231244 0.215875 0.160383 -0.0333464 -0.290695 -0.320792 -0.216709 -0.169531 -0.169995 0.0712149 0.365768 0.612523 0.547161 0.128103 -0.391464 -0.407565 -0.304132 -0.00922849 -0.301077 -0.200131 -0.10454 0.0226694 0.443125 0.314327 -0.27816 -1.13456 -0.665099 -0.380999 -0.0770686 -0.229877 -0.336968 -0.352764 -0.351243 0.693249 0.527572 -0.828997 -1.64096 -0.959269 -0.52274 -0.3427 -0.0885795 -0.371922 -0.525944 -0.650827 -0.76723 -0.798271 -1.0582 -1.36291 -0.694591 -0.398275 0.0795942 -0.155423 -0.243681 -0.121332 0.128523 0.493288 0.780848 0.553822 0.178304 0.0203376 0.0362125 0.136091 0.125021 0.154525 0.308837 0.467026 0.566334 0.468249 0.206041 -0.0629303 -0.151755 -0.0468568 0.0254263 0.267876 0.363191 0.412241 0.394302 0.333141 0.218589 0.0370901 -0.0306299 -0.0688983 0.0152935 0.323489 0.478057 0.451925 0.383051 0.336398 0.248389 0.123961 -0.00732387 -0.0626135 0.00334998 0.205122 0.560493 0.455653 0.502903 0.442244 0.417769 0.328502 0.118639 0.00189835 -0.0147486 0.15952 0.393836 0.594223 2 1 -12.1401 2.0375 11 11 5 -0.0911283 -0.0679423 -0.239039 0.031257 -0.0670017 -0.0609686 -0.383126 -0.200082 0.0495305 0.0716662 0.372752 -0.019011 -0.0410704 -0.414208 -0.483389 -0.537017 -0.605264 -0.311576 0.0556404 -0.144218 -0.2186 -0.0533706 -0.0317198 -0.297296 -0.541182 -0.376377 -0.188527 0.153586 0.413092 0.501295 -0.319564 -0.425797 -0.44722 -0.050552 -0.00774765 0.106313 0.117816 0.182909 0.479964 0.973566 0.486664 -0.155637 -0.364195 -0.0494024 0.0949618 0.0272776 0.00916716 0.147048 0.855236 1.81534 1.88626 0.437241 -0.49315 -0.174089 0.417505 -0.0877041 0.0857691 -0.0956613 0.165017 -0.490975 0.00617789 0.709585 0.429016 -0.423504 -0.100607 0.495908 -0.270084 -0.130335 0.0544889 0.687438 0.798057 0.620659 0.731363 0.364962 -0.174965 -0.100485 -0.188593 -0.137992 0.0516999 -0.0823109 -0.228866 -0.306195 -0.461574 -0.480402 -0.567538 -0.411731 -0.119296 0.0921394 -0.229773 -0.273519 -0.279544 -0.288103 -0.141345 -0.206065 -0.18378 -0.0543773 0.0110016 0.0742832 0.498544 -0.0708876 -0.127174 0.000153755 0.0105398 -0.0361953 -0.051787 -0.0489501 -0.0469095 -0.125647 0.0678116 -0.0481876 0.0657926 0.0569267 0.0741776 0.0723373 0.0254152 -0.0653939 -0.107539 -0.152349 -0.135781 -0.165025 -0.378727 2 2 -16.8835 3.66888 11 11 5 -0.023751 0.0489399 0.0685554 0.00359653 -0.119007 -0.0139307 0.00162335 0.166691 0.293176 0.225344 -0.108076 0.271418 0.232435 0.195952 -0.0446183 0.108946 0.15972 0.337136 0.455368 0.358444 0.113946 -0.293906 0.247073 0.24048 0.332254 0.207411 0.191894 0.465754 0.823577 0.384391 0.420372 0.0753844 -0.317963 0.23146 0.291901 0.177519 0.282125 0.559035 1.02638 0.790595 0.274431 0.409466 0.243256 0.122039 0.192899 0.0346563 0.052023 -0.0477413 1.36068 1.24769 0.142549 -0.547677 0.0196833 -0.0251979 -0.289952 -0.0993306 -0.600679 -0.71326 -0.89787 -0.701579 -0.496009 -0.58282 -1.14703 -0.805748 -0.782851 0.0487349 -0.608443 -0.853298 -0.587051 -0.290957 0.234042 0.764503 0.758633 -0.0159389 -0.51298 -0.649221 -0.277892 -0.239262 -0.408083 -0.294427 0.138104 0.525773 0.689373 0.423078 -0.101059 -0.512372 -0.629415 -0.53211 -0.370897 -0.367396 -0.194809 0.114934 0.327475 0.411159 0.339868 -0.0065418 -0.47746 -0.51907 -0.272858 -0.21932 -0.20614 -0.176198 0.0891531 0.209231 0.435238 0.451383 -0.0461316 -0.64747 -0.552772 -0.239962 0.0225676 -0.0297823 -0.0429748 0.0935232 0.258807 0.377749 -0.0702787 -0.387638 -0.441927 -0.279374 0.118929 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 12972592 3 0 3 11 11 3 2 0 -16.3873 4.14789 11 11 5 -0.0169805 0.155967 0.225595 0.0996388 -0.0615401 0.0621552 0.379554 0.585115 0.655194 0.687922 0.744197 0.03751 0.185161 0.331226 0.115538 -0.171566 -0.100765 0.110362 0.317988 0.200919 0.0789203 0.223238 0.0888156 0.115378 0.291537 0.0767093 -0.294617 -0.292265 0.0992424 0.0307713 -0.0359054 -0.0293777 0.101723 0.0381257 -0.0371173 0.00173245 -0.0265849 -0.210459 0.0795195 0.0285144 -0.456621 -0.275675 -0.34849 -0.294309 0.0194807 0.0529327 0.0180562 -0.0653597 0.00589584 0.129808 -1.0043 -1.02833 -0.661416 -0.536497 -0.377205 0.162128 0.387283 0.541881 0.400973 0.0154251 -1.05903 -2.76181 -1.19061 -0.385932 -0.0261359 -0.0718248 0.223501 0.549838 0.77851 0.379859 0.0459998 0.479187 -0.391456 -0.418598 0.165336 0.518962 0.525146 0.154721 0.239518 0.324609 0.0415331 -0.09215 0.53662 0.517936 -0.051796 -0.121031 0.0304125 -0.163234 -0.039609 -0.105448 -0.0542984 -0.0911449 -0.105433 0.365636 0.427606 -0.0972345 -0.099797 -0.0265071 -0.228147 -0.126933 -0.264065 -0.343751 -0.333525 -0.242867 0.0884253 0.289876 0.11361 -0.0407648 0.147956 0.121673 -0.153435 -0.280969 -0.334036 -0.271771 -0.141792 0.023447 0.162865 0.323414 0.287377 0.402693 0.292116 2 1 -11.8068 2.5314 11 11 5 -0.077416 -0.321788 -0.222761 -0.0780359 0.014931 -0.0969509 -0.311891 -0.449052 -0.498625 -0.309758 -0.321181 0.00670294 -0.337194 -0.192968 0.140148 0.243772 -0.0707341 -0.531889 -0.380047 -0.180174 0.0268935 0.437776 -0.0365039 -0.20869 -0.121878 0.233941 0.257299 -0.511453 -0.472236 0.0445113 0.203298 0.388632 0.4799 0.0973706 0.0740243 -0.0285075 0.209426 -0.349004 -0.597718 0.53458 0.72806 0.575404 0.241662 0.506881 0.0874833 0.111498 -0.0495982 -0.246647 -0.785743 0.920215 1.74455 0.563746 0.19935 0.048937 -0.192491 -0.0506911 -0.182336 -0.357026 -0.195116 0.238164 0.648381 -0.297616 -0.195358 -0.541991 -0.277362 -0.0905337 -0.184398 -0.407378 -0.367294 -0.0998381 -0.251899 1.21835 2.06514 0.568034 0.0416397 0.171755 0.446004 -0.161552 -0.409088 -0.368948 -0.21025 -0.147648 -0.220093 0.211149 -0.0449238 -0.358493 -0.119876 0.13644 0.00478115 -0.22798 -0.287458 -0.296488 -0.20693 -0.330076 -0.066635 -0.240523 -0.213978 0.184208 0.121284 0.0997837 0.037937 -0.0415615 -0.198069 -0.211645 -0.185911 -0.181016 -0.0103881 -0.238157 0.126975 0.541413 0.114899 0.114498 0.109914 0.0270633 0.0333818 0.0116057 -0.119629 0.00619741 0.0181948 -0.00313313 0.162037 2 2 -14.4253 2.22488 11 11 5 -0.324425 0.229036 0.350598 -0.0518964 -0.15539 -0.126972 0.263812 0.261626 0.286177 0.338928 0.372904 -0.000603435 0.0450792 0.449497 0.0525112 -0.220372 0.0556739 0.354157 0.215279 0.0749101 0.0150202 0.267503 0.233404 0.102759 0.521809 -0.0189286 -0.353979 0.000856123 0.557055 0.39309 0.349783 0.344747 0.239411 -0.124193 0.077181 0.0674901 -0.0244261 0.223052 0.83149 1.17506 0.623336 0.332469 0.12262 0.141447 -0.335685 -0.172875 -0.0423115 -0.124181 0.625345 1.23536 0.340474 -0.218876 -0.442785 -0.490667 -0.116825 -0.00872367 -0.232279 0.241646 0.410051 -0.343372 -1.22924 -2.04129 -0.600759 -0.295333 -0.442459 -0.530175 0.0590066 0.205703 1.04448 0.159488 -0.872095 -0.665697 -0.772504 -0.300424 0.0959834 0.33802 0.338219 0.582432 0.501322 0.972128 0.14215 -0.76427 -0.453145 0.188874 -0.803805 -0.581879 -0.0481092 0.0537976 0.182915 0.487935 0.686513 -0.052464 -0.169925 -0.0638046 0.110759 -0.297202 -0.393292 -0.239687 -0.0499369 0.0627243 0.113967 -0.0419763 -0.235402 -0.259225 -0.22694 0.0533173 -0.10439 -0.378469 -0.00905111 0.00989307 0.028441 0.141402 -0.257089 -0.217777 -0.513054 -0.366995 -0.422968 -0.223717 -0.231897 -0.198796 -0.0971146 3 11 11 3 2 0 -12.1422 2.21428 11 11 5 -0.205456 -0.405743 -0.226888 0.0339194 0.36086 0.397279 0.220482 0.082806 0.353748 0.50469 0.277403 -0.187426 -0.249727 -0.0509237 0.191663 0.508344 0.312302 0.170656 0.182779 0.329551 0.568271 0.19975 0.0321835 -0.0674355 -0.0317402 0.261814 0.265208 0.110543 0.183753 0.342272 0.481655 0.464476 0.139758 0.064985 -0.0995463 -0.0994669 -0.0300314 0.0180811 0.0861791 0.401052 0.585574 0.536408 0.236292 -0.181267 -0.0999999 -0.232912 -0.300089 -0.0836365 0.225225 0.558691 0.739847 0.291176 0.0155503 -0.11908 -0.251938 -0.264606 -0.331098 -0.33985 0.105955 0.500707 0.243954 -0.926966 -1.28404 -0.680153 -0.278766 -0.182685 -0.00917034 -0.114592 -0.497787 -0.621367 -0.766225 -1.55066 -1.27119 -0.573932 -0.102306 0.123815 0.0825238 0.327932 0.205278 0.0210174 -0.481023 -0.586866 -0.661764 -0.128823 0.587065 0.534809 0.328912 0.0792687 0.292961 0.293788 0.48249 0.432332 -0.428186 -0.48539 -0.0812194 0.328828 0.0526679 0.0363512 -0.168803 0.134977 0.183413 0.418765 0.528864 -0.055857 -0.321635 -0.120907 0.063783 -0.0412955 -0.150219 -0.338152 -0.128631 -0.00544408 0.0860182 0.34702 0.0946358 -0.0673474 0.0536055 0.268058 0.0374694 -0.286112 -0.756099 2 1 -11.5303 2.54234 11 11 5 0.137661 0.123067 -0.24224 -0.273604 -0.326905 -0.30977 -0.145459 -0.324194 -0.314274 -0.269368 -0.514329 0.0754256 -0.156414 -0.141809 -0.261624 -0.132888 -0.142345 -0.237067 -0.314943 -0.430549 -0.441138 -0.421687 -0.0243281 -0.0576907 -0.0108371 -0.117195 -0.0429228 -0.060387 -0.393503 -0.525928 -0.426206 -0.155231 -0.0271122 0.143679 0.206041 0.0839301 -0.0794101 -0.265943 -0.52333 -0.406755 -0.20057 0.124044 0.225399 0.160649 0.30885 0.167444 -0.135782 -0.470817 -0.899613 -0.617782 0.383882 0.892513 0.823312 0.53002 0.225194 0.0686587 -0.168332 -0.00913529 0.194304 0.373055 1.4043 1.32809 0.589896 0.488153 0.0901712 0.128047 0.0267581 0.0429779 0.0915442 0.0848608 0.389839 0.110573 -0.396863 -0.468574 -0.0979923 0.495182 0.981044 -0.235937 -0.189947 0.182721 0.524761 0.766702 0.147594 0.0869907 0.1633 0.143914 0.603791 0.397635 -0.33829 -0.373158 0.0338256 0.714204 0.485761 -0.257676 -0.282213 -0.315802 -0.251078 -0.0523879 0.0275839 -0.295445 -0.247069 -0.375446 -0.275013 0.345087 0.0441068 -0.37981 -0.265227 -0.161627 0.0633354 0.0886888 -0.333117 -0.248001 -0.296667 -0.195002 0.0921667 0.137325 -0.0360784 0.192582 0.229918 0.260914 0.156364 2 2 -12.7679 1.90924 11 11 5 0.276767 -0.239931 -0.611741 -0.67153 0.059676 0.098289 -0.57999 -1.00214 -0.589067 0.0182084 0.212333 0.0265865 -0.0599933 -0.201487 0.180704 0.495097 0.318507 -0.0368871 -0.328971 0.0364537 0.515083 0.384765 0.235777 0.139602 0.00594023 0.308559 0.186943 0.0219075 -0.158488 -0.301442 0.470366 0.882626 0.911704 0.00960983 0.127748 0.062398 -0.141123 -0.463912 -0.535608 -0.0768125 0.459522 0.607978 0.4961 0.322924 0.201387 0.328783 0.0374866 0.203236 0.653379 1.12952 1.32626 0.810825 0.37278 0.144735 0.131961 -0.0423296 0.0999535 0.177735 0.599824 1.0351 0.896055 0.198969 -0.448146 -0.317026 -0.38357 -0.230453 0.091444 -0.388973 -0.40357 -0.11082 -0.232096 -0.876416 -1.17493 -0.770498 -0.45497 -0.324358 -0.142392 0.124344 -0.219556 -0.403029 -0.205484 -0.406122 -0.391154 -0.235524 0.157004 0.0757945 0.174162 -0.220664 0.184141 -0.397469 -0.565114 0.0386064 -0.62354 -0.493059 -0.0588208 0.16684 0.0957986 0.0603181 -0.0203084 0.461747 -0.168375 -0.0363112 0.076928 -0.239262 -0.499503 -0.173038 0.067479 -0.046833 0.187567 0.21702 0.194538 -0.0977728 -0.0813266 0.245875 0.00119644 -0.426879 -0.370277 -0.131317 -0.127198 0.251843 -0.155194 3 11 11 3 2 0 -11.9437 2.38589 11 11 5 0.130001 0.221141 -0.0583842 -0.679397 -0.639293 -0.441802 -0.0693351 0.024225 -0.335467 -0.682495 -0.735422 0.231386 0.528823 0.400049 -0.02792 -0.177845 0.345637 0.662016 0.495092 -0.0432647 -0.247242 -0.408426 0.26136 0.493396 0.423353 0.246747 0.29035 0.651824 0.806157 0.524016 0.233741 0.0451994 -0.329858 0.160588 0.239024 -0.0117295 -0.0472215 0.0397009 0.468651 0.577194 0.0157356 0.000966796 0.137495 -0.269875 -0.00584773 0.0118061 0.00243092 0.283641 0.4782 0.601548 0.707058 0.138669 -0.176956 0.207685 0.070794 -0.117623 0.131668 0.551111 0.921583 1.25887 1.08118 0.277414 -0.225584 -0.193279 -0.333811 -0.567647 -0.353511 -0.147364 0.0693276 -0.0738384 -0.810579 -1.11301 -0.790728 -0.56783 -0.481288 -0.867372 -0.949391 -0.197315 -0.18251 -0.359805 -0.590202 -0.763874 -0.161684 0.19827 0.325673 0.0660894 -0.126768 -0.11462 -0.054066 -0.273746 -0.673741 -0.353334 -0.226525 0.319608 0.624914 0.546266 0.374246 0.311787 0.329316 0.15807 -0.395477 -0.339121 -0.141479 0.0443263 0.162462 -0.0199791 -0.0622232 -0.129861 -0.122634 -0.0467691 0.177113 -0.244514 -0.227234 -0.0125502 0.201483 0.0447729 -0.176355 -0.21897 -0.11548 -0.0539868 0.0342411 2 1 -10.7452 2.1948 11 11 5 -0.277939 -0.0664071 -0.325581 -0.246108 -0.00384572 0.369634 0.286541 -0.197726 -0.0823209 0.398972 0.502379 -0.31492 -0.415903 -0.0262734 -0.134466 -0.253289 -0.417164 -0.61767 -0.701222 -0.509186 -0.220414 0.182371 -0.321425 -0.419677 -0.427001 -0.204721 -0.261664 -0.357565 -0.454341 -0.277642 -0.503499 -0.290429 0.048042 -0.309683 -0.264892 -0.236152 -0.30038 -0.436155 -0.559081 -0.285573 -0.349946 -0.488828 -0.407018 -0.154379 -0.240803 -0.325298 -0.398307 -0.542109 -0.47382 -0.572518 -0.163695 -0.0628637 -0.326017 -0.126805 -0.0112137 0.00620183 -0.181325 -0.04666 0.255333 0.565149 0.794014 0.853992 0.334782 0.0144603 0.384912 0.424072 0.235382 0.236333 0.586786 0.870215 0.935816 0.532231 0.140126 0.10107 0.132774 0.333357 0.162313 -0.146297 0.132769 0.719591 0.500776 0.484429 0.189262 0.12907 0.133313 0.0148008 0.434418 0.579598 -0.0804708 0.200349 0.320124 0.155519 -0.24021 0.190925 0.537175 0.319618 0.387808 0.64 0.730785 0.279094 0.295709 0.219897 -0.25759 -0.127116 0.15773 0.449708 0.359745 0.185925 0.227222 0.469991 0.160919 0.175738 -0.218815 -0.652863 -0.630326 -0.387231 -0.184997 -0.346333 -0.316888 -0.169074 -0.119138 2 2 -12.1369 1.57444 11 11 5 -0.234199 -0.109632 -0.0930531 -0.605349 -1.00615 -0.846619 -0.2125 -0.0268488 0.00766457 -0.183886 -0.535987 -0.0721817 0.0779811 -0.172264 -0.521667 -1.25572 -0.686656 0.211058 0.353106 -0.255798 -0.219104 -0.423255 0.249889 0.371113 0.410666 0.0467884 -0.599662 -0.397003 0.555787 0.10236 -0.145877 0.0700485 -0.352178 0.259061 0.350448 -0.114715 -0.41281 -0.420352 0.058769 0.721025 0.217242 0.373552 0.524947 -0.267166 0.298555 0.0148043 -0.390439 -0.513603 -0.261338 0.367646 1.02422 0.666424 0.180866 0.754385 0.773704 0.244496 0.17401 0.376444 0.868517 1.2715 1.18706 0.846027 0.561666 0.388219 0.561172 0.315792 0.0548972 0.0666735 0.324387 0.38562 -0.114199 -0.411385 -0.492938 -0.225733 -0.169302 -0.354117 -0.563713 -0.268735 -0.0730553 -0.251516 -0.320076 -0.395729 -0.14277 -0.22724 -0.27984 -0.173395 -0.171512 -0.213404 -0.247068 0.062436 -0.159326 -0.0976579 -0.0158679 0.144771 0.15052 0.136316 -0.00851513 -0.112271 -0.222825 -0.0398028 -0.290216 -0.2328 -0.12898 -0.0701433 0.115153 0.169047 0.0946627 -0.00666652 -0.0267238 -0.111837 -0.0436997 -0.269909 -0.175696 -0.288167 0.048431 0.489266 0.178088 0.446536 0.219274 0.0422185 -0.232475 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 0 0 0 3 12972736 5 0 3 11 11 3 2 0 -6.98515 1.52457 11 11 5 -0.0439695 0.439375 0.436884 0.1143 -0.301008 -0.16519 -0.177563 -0.332977 -0.00470923 -0.0756559 0.188205 -0.789884 -0.510501 -0.261499 -0.0896173 -0.43592 -0.508884 -0.597528 -0.576742 -0.388627 -0.28268 0.070571 -0.465663 -0.249085 -0.132684 -0.327878 -0.733397 -0.636326 -0.505746 -0.482088 -0.497156 -0.376975 0.0581175 -0.0442121 0.109026 0.451631 0.201697 -0.0676669 0.0615962 0.0851623 -0.251575 -0.438263 -0.186926 0.143418 0.548913 0.417915 0.264905 0.194842 -0.0219942 -0.142884 -0.390359 -0.363262 -0.213543 0.110802 0.349236 0.748994 0.699079 0.358528 -0.05093 -0.165295 -0.238794 0.023132 0.260738 0.291001 0.238979 0.224027 0.213322 -0.0691023 -0.386843 -0.657319 -0.538296 -0.362284 -0.120173 0.158243 0.245464 0.215138 0.0874359 -0.101518 -0.201169 -0.485174 -0.615664 -0.521651 -0.346643 -0.0585405 0.190226 0.178801 0.153314 0.0102901 0.3422 0.257511 0.0562071 -0.00649697 0.0101583 0.106913 0.187245 0.136623 0.119392 0.188991 0.184415 0.595532 0.522892 0.430782 0.294389 0.25976 0.314683 0.185822 -0.0701094 -0.074604 -0.0112224 0.156605 0.789282 0.695049 0.723529 0.761123 0.701697 0.573759 0.268543 -0.0115246 -0.12091 -0.131206 0.00970908 2 1 -6.12922 1.04958 11 11 5 0.129539 0.18197 0.199737 0.143504 -0.363511 -0.0149798 0.839063 0.323051 -0.0308714 0.0602033 -0.276757 0.97253 0.722988 0.291492 -0.0177399 0.272356 0.714842 0.797404 0.496944 0.209111 0.294719 0.205487 0.642883 0.48356 0.50709 0.356872 -0.113054 0.199392 0.707481 0.457133 0.256382 0.321742 0.345402 0.221311 0.219947 -0.146353 0.0428229 -0.156557 -0.580397 -0.498572 -0.128031 0.0452956 0.694203 0.496918 -0.0828851 0.0992512 0.0435483 -0.260911 -0.216572 -0.528558 -0.214097 0.119821 0.47394 0.467813 0.358367 -0.738452 -0.0758182 0.37064 0.0702815 -0.509005 -0.235764 0.31526 0.44864 0.205028 0.155919 -0.00601963 -0.590182 -0.202823 -0.222592 -0.258329 -0.267239 -0.194918 -0.212458 -0.0859173 -0.3226 0.0785989 -0.163783 -0.489964 -0.0135013 0.0241008 -0.0854402 -0.115165 -0.177077 -0.143191 -0.303724 -0.145238 0.226828 -0.0461855 -0.365978 3.46121e-05 0.109011 -0.137203 -0.153126 -0.100392 -0.207204 -0.0430417 0.0675877 0.127372 -0.0556004 -0.57078 -0.298552 -0.261563 -0.346328 -0.317123 -0.280003 -0.198646 0.159117 0.141545 0.113435 -0.205194 -0.849881 -0.638228 -0.691458 -0.677315 -0.44253 -0.497398 -0.152437 -0.0557349 0.106693 -0.147396 -0.207864 2 2 -7.88453 0.513056 11 11 5 0.0870303 0.876567 0.793594 0.998212 0.45876 0.483647 0.145932 -0.0387792 0.141663 0.244749 0.266349 -0.723281 0.252806 0.377457 0.715185 0.224691 0.0705945 -0.137113 0.0437709 0.138252 0.219389 0.0787306 -0.370988 -0.0750801 -0.195719 -0.439173 -0.939156 -0.544703 -0.349111 -0.0520554 -0.243945 -0.42009 -0.0592941 -0.283045 -0.0497649 0.34385 0.649973 0.284616 0.67763 0.947476 0.206398 -0.473866 -0.337845 -0.0472648 0.0913235 0.235183 0.423752 0.575496 0.26657 -0.368886 -0.732101 -0.843093 -0.933578 -0.359519 0.0389463 0.250323 0.683425 0.51821 0.115701 0.153356 -0.193809 -0.119706 0.088534 -0.037526 -0.0404794 -0.0888301 0.226402 0.316046 0.229668 -0.188083 0.101709 -0.345876 -0.284125 0.119693 -0.0471321 0.110948 0.0115234 -0.88835 -0.420714 -0.429151 -0.568916 -0.446627 -0.659274 -0.211564 0.192955 -0.102256 0.136067 -0.0350802 -0.617145 -0.127039 -0.316476 -0.417276 -0.454131 -0.618792 -0.095914 0.261352 0.195795 0.241636 0.415785 -0.167571 -0.0203087 -0.221107 -0.540567 -0.363993 -0.0926865 -0.228237 -0.00534642 -0.17455 0.380086 0.491846 0.242046 0.261544 0.0785319 0.305488 0.360545 0.104017 0.0550264 0.0888383 -0.0651526 0.141756 0.413792 3 11 11 3 2 0 -8.49405 1.66292 11 11 5 0.0905568 0.146653 -0.17008 -0.236743 0.331203 0.541889 0.312458 -0.0175007 -0.0658408 -0.32294 -0.35706 -0.326579 -0.230949 -0.33931 -0.454708 -0.527614 0.00367584 -0.0992772 -0.0811047 -0.263401 -0.455058 -0.435132 -0.19276 -0.22059 -0.306701 -0.328618 -0.554 -0.465823 -0.511761 -0.140349 -0.287101 -0.37304 -0.525936 -0.0753588 -0.229936 -0.284206 -0.292191 -0.126498 0.141272 0.0520807 -0.281332 -0.444665 -0.382583 -0.311344 -0.0857124 -0.0341699 0.155539 0.295787 0.298328 0.471612 0.894331 0.297185 0.00915605 -0.10329 -0.34281 0.0741893 0.276999 0.53132 0.870399 1.0088 0.766726 0.00914047 -0.278608 -0.469367 -0.500783 -0.222443 -0.362468 -0.0733873 0.156987 0.277167 0.206912 -0.0571558 -0.345019 -0.453912 -0.368915 -0.217137 0.188317 -0.572422 -0.259814 0.000751176 0.138724 0.0436558 -0.250807 -0.529838 -0.505986 -0.462483 -0.332614 0.153503 -0.36603 -0.135805 0.219881 0.433481 0.374547 0.090323 -0.275398 -0.35428 -0.107194 0.0319003 0.280558 -0.108385 0.00623251 0.311777 0.514103 0.413426 0.267714 0.047881 0.0444828 0.297202 0.375416 0.331609 -0.0272869 0.243672 0.440315 0.737599 0.794747 0.716657 0.694963 0.684346 0.761896 0.662459 0.399073 2 1 -7.3157 1.61771 11 11 5 -0.968739 0.0382756 0.302995 0.0412599 -0.217071 -0.16545 -0.426161 -0.18993 -0.087102 0.419367 0.500236 0.337419 0.565537 0.861368 0.987775 0.608155 0.131471 0.0408534 0.187288 0.292098 0.411041 0.531171 0.518454 0.855065 0.591061 0.684592 0.596695 0.609184 0.231299 0.163413 0.376237 0.646501 0.873328 0.558443 0.730731 0.285605 -0.204234 -0.368109 0.40843 0.567262 -0.179596 -0.337468 0.0254393 0.245914 0.0147553 -0.0695135 0.00953835 0.0601891 0.393655 -0.0746161 -0.21235 0.0428746 -0.302582 -0.509228 -0.140256 -0.336612 -0.267595 -0.549093 -0.334236 -0.0837647 0.672686 0.495808 -0.392112 -0.429005 -0.167093 0.206903 -0.430886 -0.616931 -0.709584 -0.532799 -0.198569 0.0163095 0.273598 0.106797 -0.134464 0.0103214 0.282371 -0.16409 -0.373696 -0.408761 -0.156934 0.258574 0.320851 0.0494903 -0.0953718 -0.164044 -0.071584 -0.0696761 -0.146652 -0.277692 -0.311845 -0.231536 -0.0222296 0.148752 0.00620897 -0.139748 -0.175635 -0.0240841 0.00887669 -0.165161 -0.338497 -0.392422 -0.378337 -0.227545 0.0128122 -0.223426 -0.426129 -0.292416 -0.219444 0.132328 -0.252161 -0.447504 -0.518581 -0.502564 -0.467318 -0.231919 -0.409838 -0.246452 -0.349607 -0.312916 0.123307 2 2 -7.39386 0.311777 11 11 5 0.629309 0.27192 -0.141006 0.129716 0.380356 0.639451 0.82978 0.704584 0.552858 0.259199 0.0247569 -0.0853067 -0.0223457 0.125654 0.00616018 0.130457 0.56433 0.484593 0.655856 0.180372 0.0392614 0.198195 -0.50092 -0.246494 -0.142753 -0.179576 -0.206199 -0.332248 0.00280475 0.0297254 -0.0667237 -0.400255 -0.179521 -0.205543 -0.197934 -0.24292 -0.271437 -0.0320555 -0.0379989 -0.0108415 -0.267043 -0.157722 0.365142 0.598446 0.00206493 0.134787 -0.329291 -0.28471 -0.242443 0.33363 1.13179 0.860041 0.537551 0.225264 -0.380201 0.443817 0.189747 0.0366593 0.345529 0.503815 0.456689 0.0368648 0.0162579 0.0371419 -0.559395 -0.67694 -0.121921 0.00724586 0.324707 0.418948 0.501987 0.655061 0.336676 0.223658 0.468338 -0.205547 0.067232 -0.735623 -0.783288 -0.395621 -0.47163 -0.291079 -0.196011 -0.0812062 -0.160532 -0.37918 -0.729478 -0.24575 -0.581325 -0.793049 -0.440151 -0.2343 -0.0781946 -0.202622 -0.462791 -0.525029 -0.600276 -0.0932588 0.226296 -0.212735 -0.282957 -0.205681 0.109163 -0.31899 -0.298387 -0.450067 -0.431352 -0.147555 0.0213245 -0.025615 -0.0704264 -0.289644 -0.0549344 0.338191 0.599047 0.304528 0.102494 0.216405 0.123472 0.123721 -0.267039 3 11 11 3 2 0 -14.1039 2.55771 11 11 5 0.22648 0.195346 0.513238 0.852163 0.55178 -0.168837 0.126846 0.26404 0.519856 0.548292 0.174975 -0.115437 0.0269496 0.186526 0.504668 -0.386423 -0.825465 -0.203175 0.229273 0.242825 0.096469 -0.343646 -0.191282 -0.104531 -0.104251 -0.197873 -0.639202 -1.04834 -0.6262 -0.123054 0.0793274 0.0976312 -0.1903 0.216741 0.0730626 -0.52548 -0.659009 -0.60737 -1.27701 -1.16879 -0.312392 -0.0881822 0.11099 -0.131903 0.452272 -0.0456865 -0.499265 -0.266094 -0.358624 -0.705488 -1.11289 -0.402283 -0.00826857 -0.202413 -0.255014 0.252512 -0.100664 0.193116 0.895911 1.02006 0.883197 0.0918796 -0.306843 0.143458 0.22577 -0.244397 -0.307138 -0.29006 0.240453 0.66151 0.690926 0.745222 0.607885 0.530529 0.335201 0.0469624 -0.208118 -0.653693 -0.501768 -0.151314 0.0668341 0.113759 0.291778 0.421541 0.215649 0.0553073 -0.197097 -0.344065 -0.500947 -0.503078 -0.325155 -0.252153 -0.00865403 0.20753 0.379753 0.147191 -0.135155 -0.310706 -0.557069 -0.275269 -0.358126 -0.219492 -0.105018 0.14346 0.39596 0.494951 0.388215 -0.0216771 -0.191193 -0.429532 0.120182 0.0550036 0.152546 0.260449 0.412403 0.684626 0.696849 0.6843 0.577623 0.366109 0.20619 2 1 -11.1437 2.39631 11 11 5 -0.103739 -0.263283 -0.92116 -1.07029 0.236045 0.0795271 -0.0607736 -0.272916 0.0527151 0.0358129 -0.198823 0.0710527 -0.571553 -0.888855 0.0539616 0.855678 -0.0713388 -0.156093 0.169823 0.112597 0.27727 -0.0259331 -0.0100691 -0.414204 -0.0370633 0.645814 1.35759 0.567033 0.227807 0.218606 -0.0546216 -0.214831 0.00191718 -0.317147 -0.00265337 0.717305 0.761936 1.3012 1.03457 -0.0832915 -0.00451484 0.135528 0.17448 0.0852195 -0.241482 -0.105103 0.057034 0.49425 0.722226 0.89143 0.0511655 -0.245993 0.225867 0.554074 0.490269 -0.463732 -0.306502 0.366152 0.448386 0.204841 0.742333 0.968513 0.230357 0.110252 0.127586 0.0567255 -0.729407 -0.521826 -0.50308 -0.543388 -0.771744 -0.872768 -0.607694 -0.370382 0.122383 0.20139 0.0345055 -0.242955 -0.267887 -0.383682 -0.368505 -0.429529 -0.469727 -0.249165 0.021463 0.19199 0.216352 -0.134567 0.103821 0.0672127 -0.114004 -0.297768 -0.360884 -0.246004 -0.0167968 0.304178 0.0978975 0.146121 0.0597745 0.120489 0.0772832 0.0242626 -0.0821711 -0.164561 -0.163626 -0.0578352 0.145567 0.220531 0.0599022 -0.0714797 0.0472746 -0.035611 -0.0825371 -0.231237 -0.19852 -0.19364 -0.298054 -0.404862 -0.258356 -0.124194 -0.202925 2 2 -11.5005 0.862103 11 11 5 0.0588111 0.0677171 0.482135 1.24007 0.673035 0.0195084 -0.152153 0.0280716 0.363211 0.822577 0.575356 0.0157172 0.338889 0.22854 0.970871 0.148712 -0.366957 0.0151411 -0.0760517 0.333097 0.561556 0.399591 0.176522 0.659573 0.377704 0.445604 0.14517 -0.357293 -0.0491965 -0.0483476 0.287294 0.461903 0.30385 0.371226 0.36167 -0.418576 -0.509909 0.169137 -0.367257 -0.682245 0.0957507 -0.0480347 0.184178 0.177984 0.736538 -0.405527 -1.32984 -1.02727 -0.597907 -0.647375 -0.699579 -0.154992 0.161259 0.0847424 0.0784042 0.888364 -0.409826 -0.703284 0.0637779 -0.0379969 -0.0244808 -0.560221 -0.521188 0.00999371 0.459122 0.144256 0.438303 -0.303545 -0.0103436 0.557388 0.388542 0.489697 0.321295 0.155852 0.445376 0.225878 0.222798 -0.163284 -0.266013 -0.236138 -0.0434979 -0.107196 0.0253744 0.336163 -0.0610884 0.041081 0.327145 0.377842 -0.317058 -0.580237 -0.203117 -0.384486 -0.351621 -0.128514 0.304925 0.156631 -0.00661407 0.290949 0.0545861 -0.558508 -0.569132 -0.569119 -0.742851 -0.241929 0.055088 0.0828546 0.153306 -0.215844 -0.176928 -0.216938 -0.234003 -0.434731 -0.635499 -0.506222 -0.246535 -0.029548 -0.00209434 -0.102488 -0.0868128 -0.302803 -0.407461 3 11 11 3 2 0 -13.3864 2.65891 11 11 5 -0.221171 0.170099 0.534337 0.491001 0.288473 0.212264 0.432354 0.751155 0.481967 0.127541 -0.0075722 -0.155468 0.142646 0.452451 0.13641 0.071871 0.0753591 0.413669 0.618622 0.331985 0.0455409 0.0233557 -0.179579 -0.0691286 0.0835672 -0.107131 0.0840386 0.412725 0.638259 0.741458 0.379581 0.0310331 -0.0270411 -0.316375 -0.213387 0.0722536 0.195373 0.652647 0.852652 0.871342 0.507253 0.0905907 -0.150055 -0.298369 -0.374198 -0.179963 0.115657 0.348811 0.27592 -0.125875 -0.577971 -0.603644 -0.534245 -0.437632 -0.8175 -0.367922 -0.489638 -0.296997 -0.579267 -1.10557 -1.60908 -1.16685 0.0788261 0.151819 0.079242 -0.42572 0.165952 0.0406146 -0.321225 -0.489725 -0.579584 0.233071 0.438322 0.583234 0.581801 0.486182 0.0799827 0.405476 0.338375 -0.189016 -0.558321 -0.277606 0.0773899 0.340129 0.388048 0.221124 0.110302 -0.212746 0.361517 0.417913 -0.240295 -0.51367 -0.129975 0.234282 0.0461997 -0.117791 -0.239487 -0.216928 -0.251474 0.08335 0.358946 0.0256112 -0.363603 -0.0250159 0.233311 0.134606 -0.275267 -0.503464 -0.413026 -0.31163 -0.0287256 0.19688 -0.037285 -0.16881 -0.0861665 0.174548 0.125529 -0.210491 -0.423679 -0.503925 -0.220567 2 1 -11.3076 2.34867 11 11 5 -0.31687 -0.45613 -0.299313 -0.133888 -0.233509 -0.306481 -0.480282 -0.577185 -0.64734 -0.605826 -0.587762 -0.0162228 -0.0976969 -0.0880509 -0.149829 -0.354445 -0.536068 -0.599922 -0.465979 -0.344978 -0.444013 -0.540831 0.111327 -0.0488668 -0.21538 -0.407122 -0.541143 -0.482957 -0.154987 0.00584555 0.270488 -0.0525431 -0.165761 0.00619594 -0.175398 -0.388044 -0.279121 0.0312783 0.371043 0.557193 0.539404 0.408042 0.0676746 0.0727734 -0.00930501 0.198169 0.430276 0.78345 0.991897 1.37406 1.09117 0.221397 0.0838561 0.00396636 0.100722 -0.271499 -0.0583806 0.053485 -0.0468858 0.462101 0.429817 0.131575 -0.0994657 -0.0806073 0.480223 0.580051 -0.16144 0.183527 0.478119 0.491006 0.276416 -0.470385 0.126938 0.531651 0.519293 0.486714 0.425557 -0.311159 0.412377 0.755386 -0.0147944 -0.498026 0.0241872 0.13581 0.0971643 0.273759 0.551848 0.431449 -0.612666 -0.042976 0.431101 -0.275099 -0.512962 -0.534299 -0.302782 -0.0595555 -0.134678 -0.206336 -0.149597 -0.471059 -0.190467 0.178505 0.19982 -0.231838 -0.0585824 -0.0455177 0.122799 -0.029438 -0.257007 -0.0200403 -0.258139 -0.0995772 0.097875 0.15868 -0.0282796 0.192831 0.186121 0.151652 0.00826098 -0.109074 0.0595258 2 2 -14.5462 2.26144 11 11 5 -0.432294 -0.477465 0.100525 0.26546 -0.251392 -0.803566 -0.523842 0.434065 0.580436 0.158962 -0.0773861 0.120203 -0.0159093 0.664327 0.337035 -0.0438925 -0.485133 -0.14553 0.373538 0.703683 0.26341 0.357988 0.247235 0.247221 0.0107259 -0.585705 -0.519035 -0.310497 -0.00961907 0.589851 0.918528 0.525553 0.640044 0.182715 0.14117 0.0859729 -0.153323 0.559015 0.870957 1.00526 0.87138 0.631739 0.909474 0.879258 0.100711 0.195958 0.437949 0.986951 1.32671 0.847166 -0.0772814 -0.493069 -0.223423 -0.114697 -0.325345 -0.486613 -0.191225 0.00636891 -0.205878 -0.532993 -0.832594 -1.11215 -0.409427 -0.432331 -0.442666 -0.805741 -0.285227 -0.033372 -0.024467 -0.0931161 -0.467598 -0.175428 0.0186661 0.0573035 0.0824232 0.00290164 0.0182963 -0.317407 0.13635 -0.228309 -0.502733 -0.499145 -0.240992 0.0208209 0.300393 0.172511 0.128699 -0.209036 -0.0345523 0.158698 -0.117798 -0.412431 -0.191288 0.15708 -0.0173033 0.262937 0.0462482 0.057522 -0.213964 -0.168179 0.413208 0.143827 -0.342367 -0.254733 0.0715022 -0.0108874 0.221377 -0.0891724 0.0451897 -0.414058 -0.514518 -0.244752 -0.318038 -0.240484 -0.346294 -0.0732193 0.0221017 -0.0244466 -0.359252 -0.444815 -0.686191 3 11 11 3 2 0 -11.8216 2.36044 11 11 5 -0.116674 0.0584312 0.46834 0.594053 0.252705 0.0291036 -0.437731 -0.684702 -0.283564 0.142924 0.452242 0.366828 0.564086 0.759603 0.72848 0.132307 0.171591 0.0659858 -0.238762 -0.107151 0.05526 0.202308 0.221998 0.44878 0.560101 0.498705 -0.152337 0.0291567 0.404045 -0.0133851 -0.082109 -0.0575704 -0.0632233 0.324449 0.570621 0.568653 0.508406 0.313737 0.300759 0.312503 -0.0918627 -0.133211 -0.16207 -0.157563 0.253015 0.364942 0.166764 -0.117186 -0.246038 -0.425018 -0.886058 -0.795137 -0.37562 -0.231002 -0.304273 -0.444712 -0.479516 -0.69249 -0.723677 -1.00016 -1.43299 -1.1295 -0.797873 -0.0975201 -0.132611 -0.171621 -0.381798 -0.127987 0.467067 1.21954 0.955957 0.436239 0.337912 0.0741081 0.136128 -0.0141337 0.0168517 -0.414185 -0.0213638 0.506033 0.408772 0.361031 -0.0393218 0.0406143 0.00545891 0.0108196 0.00334506 0.129132 -0.239201 -0.105859 0.0265022 -0.0533533 -0.105178 -0.172958 -0.102022 0.04796 0.100412 0.237774 0.166987 -0.191145 0.0602396 -0.105193 -0.31313 -0.431853 -0.356367 -0.185394 0.0213778 0.107045 0.24772 0.224148 -0.120741 -0.043326 -0.243514 -0.471464 -0.424184 -0.278817 -0.0730989 0.192754 0.189697 0.286142 0.371844 2 1 -10.7136 1.65442 11 11 5 -0.436673 -0.49943 -0.785282 -0.814992 -0.745298 -0.709131 -0.22869 -0.224431 -0.0521053 0.150517 0.19935 -0.669122 -0.744621 -0.950419 -0.72912 -0.81235 -0.772049 -0.506072 -0.418871 -0.3172 -0.149306 0.0790369 -0.706898 -0.639514 -0.513787 -0.23216 -0.194199 -0.335707 -0.113289 -0.0555143 -0.278532 -0.0921978 0.0698771 -0.117802 0.108911 0.303423 0.344591 -0.171685 -0.161669 0.401979 0.383273 0.197772 0.23177 0.225266 0.785351 0.672041 0.557913 0.399867 0.270765 0.331025 0.471046 0.150613 0.284749 0.222775 0.310522 0.42124 0.582812 0.25355 -0.174036 -0.155539 -0.281248 0.141117 0.223514 0.282775 0.28285 0.444191 0.524379 0.377298 0.429333 0.0764187 0.200751 0.442396 0.906809 0.465763 0.304012 0.250542 0.241911 0.236711 0.0456747 0.264982 0.557256 0.305882 0.529736 0.514323 0.27637 0.137659 -0.0116909 0.090705 -0.65728 -0.350979 0.186185 0.37736 0.00805611 -0.00416345 -0.00683827 -0.0511144 0.0279192 0.146834 -0.0224164 -0.31745 -0.368099 -0.2224 -0.364884 -0.397147 -0.359523 -0.00106176 -0.0420612 0.0963222 0.153975 0.110758 -0.0591026 0.103685 -0.0682293 -0.161769 -0.247345 -0.203057 -0.0930667 0.114748 0.214613 0.245685 0.0490949 2 2 -14.5993 2.34825 11 11 5 -0.625012 -0.994139 -0.111876 0.809904 0.139505 0.0709223 -0.397381 -0.953539 -0.192977 -0.0322482 0.389133 -0.32013 -0.524713 0.437921 0.768862 0.160538 -0.0196177 0.0518952 -0.576803 -0.0947764 0.0201177 0.211793 -0.101604 0.0049699 0.217366 0.479912 -0.33987 -0.145302 0.714145 0.101079 -0.102057 -0.21048 -0.0307631 -0.0356976 0.357772 0.625863 0.827786 0.911223 1.25553 1.28342 0.543921 0.218105 -0.0423606 -0.100578 0.699171 0.679305 0.426631 0.584546 0.744769 0.77526 0.373248 -0.0815485 0.0270577 0.002556 0.0980168 -0.290698 -0.410683 -1.06157 -0.837721 -0.918303 -0.87844 -0.927382 -0.689141 -0.162817 -0.127038 -0.229746 0.125395 -0.0507048 -0.0780146 0.432985 0.162518 0.246441 -0.0491244 -0.147586 -0.239769 -0.247029 -0.131133 -0.211089 -0.0698071 0.399063 0.343278 0.16541 0.0251959 0.0358277 -0.157148 -0.193035 -0.179639 -0.124767 -0.122704 0.0667504 0.119742 0.182265 0.0698467 -0.109648 -0.136446 -0.294112 0.0358457 -0.12579 -0.058529 -0.0929232 0.334476 0.30659 -0.112891 0.0460108 -0.196433 -0.134878 -0.178466 0.00102851 -0.188692 -0.0370846 -0.0864085 0.0913933 0.0355901 -0.211769 -0.105548 -0.58718 -0.457293 -0.366664 -0.219886 -0.087884 0.1192 3 0 0 0 3 0 12988480 0 3 11 11 3 2 0 -13.085 1.84256 11 11 5 -0.0989187 0.19906 0.491586 0.669641 0.22526 0.0347991 -0.289197 -0.510856 0.0493725 0.362975 0.53603 0.276803 0.385622 0.293515 0.362859 0.0319906 -0.157372 -0.18248 -0.380515 0.197929 0.342233 0.317059 -0.295933 0.227588 0.14193 0.228963 -0.222816 -0.192284 -0.181841 -0.2655 0.0811877 0.0996456 0.109541 -0.315246 0.0463575 0.249666 0.236533 0.05431 0.0382853 -0.2614 -0.397098 -0.0926063 -0.090777 0.0308717 -0.547816 -0.750961 -0.249494 0.349434 0.43228 0.0612489 -0.671895 -0.683036 -0.331816 -0.27739 -0.0242733 -0.577156 -0.628226 -0.821094 -1.15545 -1.54462 -1.30541 -0.493939 -0.192527 -0.218035 -0.248554 -0.0383897 0.343998 0.827684 1.09238 0.867063 0.477123 0.539676 0.516026 0.0320339 -0.253412 -0.159345 0.00567257 0.804828 0.769468 0.68501 0.382751 0.107978 0.157849 -0.137865 -0.411723 -0.148422 -0.0251465 0.112167 0.551205 0.350861 -0.024187 -0.358621 -0.391945 -0.292652 -0.299616 0.00390503 0.117256 0.297262 0.0549004 0.259039 -0.0799518 -0.406649 -0.753032 -0.753376 -0.534597 -0.078923 0.247988 0.307917 0.290257 0.0441494 0.349384 0.193896 0.00275729 -0.164832 0.0444975 0.202219 0.355643 0.508389 0.389218 0.406304 0.105881 2 1 -8.27077 0.85125 11 11 5 -0.356754 -0.603678 -0.698964 -0.392078 -0.385717 -0.284346 -0.120139 -0.159709 -0.116889 0.0893822 0.223161 -0.506906 -0.635518 -0.333337 -0.0651472 -0.581392 -0.224788 0.0714501 0.21064 0.072196 -0.0148894 0.051972 -0.233136 0.127143 -0.112682 -0.00202685 0.0744432 0.321272 0.664229 0.531456 0.0624345 0.15227 0.00644695 0.79375 0.456782 0.150288 0.402825 0.279392 0.150378 0.727307 0.229335 0.369301 0.219366 -0.108025 1.29925 0.930434 0.539978 0.104348 0.175735 0.591008 0.808086 0.644446 0.374815 -0.0313533 0.0532705 -0.0648791 0.0861026 0.0688732 -0.262122 -0.444485 -0.129702 0.235974 -0.00985348 -0.253964 -0.029264 0.321434 -0.100756 0.297639 0.417382 0.575743 0.50846 -0.0771051 -0.400784 -0.277756 -0.0616891 0.166295 0.26712 -0.49058 -0.560224 -0.491527 -0.661927 -1.07263 -0.95145 -0.675713 -0.322334 0.0791584 0.200444 0.167141 -0.571497 -0.2104 0.109601 0.0530558 -0.322502 -0.36657 -0.149056 0.285051 0.0297366 0.350408 -0.222355 -0.0458047 0.133213 0.0632379 -0.163536 -0.221431 -0.199599 0.0796713 -0.0031331 0.0800555 0.181077 -0.0590627 -0.146511 -0.0293028 -0.120948 -0.0914788 -0.0435951 -0.0646039 -0.287852 -0.325538 -0.0665676 0.181004 0.121102 2 2 -15.4135 1.95709 11 11 5 -0.161585 -0.178641 0.275317 0.877696 0.462955 0.230765 0.159481 -0.252037 -0.119741 -0.0177116 0.256224 -0.185721 -0.125919 0.264727 0.703974 0.422908 0.136145 0.209975 -0.372358 -0.248628 0.220723 0.344301 -0.0221966 0.249413 0.226164 0.458489 0.0774468 -0.00134766 0.174255 -0.00718506 0.0251693 0.278638 0.253398 0.0649072 0.310344 0.45347 0.580671 0.327415 0.283992 0.255437 -0.0522397 0.222594 0.1164 0.0910145 -0.0544715 0.0337365 0.407562 1.01008 0.910122 0.785072 -0.176397 -0.157532 -0.0514101 -0.0878471 -0.0163072 -1.00922 -1.02455 -1.16133 -1.36318 -1.65098 -1.57508 -0.769536 -0.0976404 -0.305537 -0.209674 0.0662815 -0.189628 0.194153 0.721399 0.57232 0.245114 0.632564 0.767707 0.0684554 -0.308036 -0.320337 -0.160165 0.30145 0.446776 0.437973 0.352423 0.213922 0.278673 -0.196641 -0.365444 -0.147012 -0.222991 0.00382937 0.174062 0.330789 0.168102 0.105423 0.28921 0.172634 -0.260279 -0.25879 -0.0452983 -0.0863971 -0.125437 -0.23058 -0.0952683 0.138486 -0.169792 -0.276343 -0.460084 -0.437943 0.0516539 -0.311405 0.114382 0.125416 -0.344559 -0.0786672 -0.26396 -0.565359 -0.750731 -0.718538 -0.588339 -0.106287 -0.102621 0.256819 0.251947 3 11 11 3 2 0 -15.3001 2.3487 11 11 5 0.0953178 0.717429 0.642504 0.0230282 -0.146052 -0.0255504 0.233276 0.605788 0.490267 -0.000829569 -0.266021 0.229334 0.657964 0.586993 -0.376102 -0.0281643 0.403516 0.51739 0.752972 0.382508 0.180762 -0.107776 0.0277376 0.222358 -0.0918204 -0.733788 -0.431108 0.123054 0.15216 0.316413 0.160986 -0.0825123 -0.360239 -0.235273 -0.263246 -0.144115 -0.49509 -0.798139 0.135509 0.378997 0.266737 0.0296361 0.0756103 -0.45427 -0.255118 -0.294739 -0.139997 -0.199567 -0.767355 -0.778173 -0.247776 0.262205 0.25005 0.0800288 -0.410318 0.157266 -0.0642542 -0.257078 -0.654831 -1.05877 -1.28249 -1.55939 -0.78576 -0.5157 -0.599982 -0.620943 0.151451 0.103596 0.0204512 0.134682 0.452011 0.659872 0.918992 0.603086 0.0928717 -0.0671164 0.0348774 0.00606898 0.387255 0.713565 0.739195 0.676601 0.544745 0.827563 1.19769 0.441128 0.00585032 -0.0855623 -0.128584 0.123501 0.16848 0.251576 0.374071 0.371403 0.262109 -0.0352341 -0.387675 -0.440688 -0.33044 -0.344888 -0.114041 -0.0688996 0.037495 0.172905 0.15522 -0.148771 -0.624904 -0.644823 -0.502185 -0.139158 -0.285804 -0.133022 -0.0648161 0.162308 0.261313 0.255341 0.0447245 -0.265004 -0.236461 -0.117003 0.187621 2 1 -11.085 1.69634 11 11 5 -0.842703 -0.753393 -0.11201 0.433467 -0.0714589 -0.420745 -0.539473 -0.538303 -0.143669 0.0239648 -0.303466 -0.526815 -0.515968 0.7228 0.126089 -0.257686 -0.328212 -0.300526 -0.184828 -0.236175 -0.251183 -0.223523 -0.612729 -0.180609 0.575933 0.392907 -0.25689 -0.148347 -0.101639 -0.0921075 0.118282 0.473624 0.187305 -0.228111 0.196065 0.628705 0.708807 0.0161042 0.00728838 0.0198446 0.203535 0.430995 0.785575 0.741256 -0.335614 0.503041 0.893496 1.1179 1.22658 0.618946 0.274013 -0.0307519 0.0635922 0.188595 0.399093 -0.227144 0.381343 0.39756 0.119155 0.247181 0.166363 -0.398652 -0.335724 0.0606135 0.348842 0.489403 -0.102782 0.193819 0.258153 0.27504 0.284962 0.362738 0.982501 0.733867 0.0951546 -0.233077 -0.201309 -0.422535 -0.255672 -0.143722 -0.356045 -0.559178 -0.524965 -0.822106 -0.681772 -0.255603 -0.483172 -0.583118 -0.421189 -0.407196 -0.519093 -0.571135 -0.486478 -0.179695 0.163399 0.246552 -0.14764 -0.382088 -0.361432 -0.156381 -0.076566 -0.105458 -0.11456 -0.0857975 0.132217 0.34793 0.366726 0.106315 -0.0876991 0.00589283 0.00963652 -0.130561 -0.13288 -0.0961594 -0.0201425 0.243284 0.216731 0.18557 0.0752518 0.017793 0.0138616 2 2 -15.324 1.79215 11 11 5 -0.531755 0.201061 0.218114 0.115342 -0.223851 -0.201153 -0.0779621 0.4245 0.456924 0.14702 -0.0996816 0.259728 0.583808 0.639687 -0.220512 -0.341701 0.178369 0.207263 0.381553 0.52496 0.335411 0.285614 0.525577 0.270616 0.166873 -0.273899 -0.169337 0.207881 0.138906 0.431831 0.519192 0.384947 0.229019 0.230266 0.0584364 0.244848 0.189302 -0.209693 0.439654 0.391845 0.460198 0.307422 0.508124 0.162631 -0.428359 -0.524012 -0.185964 -0.00929982 -0.0143241 0.277656 0.658255 0.616595 0.635737 0.228623 -0.30577 -0.534849 -0.570856 -0.394635 -0.882751 -1.2661 -1.7053 -1.54 -0.594943 -0.260539 -0.593587 -0.50431 -0.288984 -0.455404 0.0547851 -0.353427 -0.00925801 0.0761078 -0.0357765 0.0753265 -0.19368 -0.0417887 0.38153 -0.300478 -0.0776836 0.294223 0.124367 0.0407048 -0.0399919 0.303451 1.12376 0.63524 0.355783 0.35796 0.0568545 0.245317 0.324639 0.141622 0.106583 0.174701 0.244637 0.243162 0.320588 0.264693 -0.116487 -0.148999 0.171623 0.0771106 0.176751 0.258643 -0.079827 -0.0838102 0.0869074 0.13336 -0.0664879 -0.398203 -0.833523 -0.406114 -0.648688 -0.320276 -0.338059 -0.110381 -0.0914046 -0.243269 -0.391246 -0.695328 -0.660497 5 2 30 1.3 1.1 20 20 20 -1 -1 1 0.350692 3 2 0.00432723 0 1 0.0383819 0 -1 2 7 16 4 2 2 9 16 2 0 0 0 0 0 0.0130762 -1 -2 0.896526 0 -1 8 4 3 14 2 8 11 3 7 0 0 0 0 0 0.262931 2 0.000524346 0 1 0.102166 0 -1 13 6 1 6 2 13 9 1 3 0 0 0 0 0 0.0044573 -1 -2 0.12384 0 -1 4 2 12 8 3 8 2 4 8 0 0 0 0 0 0.691038 2 -0.000927083 1 0 0.19537 0 -1 6 3 1 9 3 6 6 1 3 0 0 0 0 0 0.000339891 -1 -2 0.210144 0 -1 3 7 14 9 3 3 10 14 3 0 0 0 0 0 0.825867 0 -1 2 3.47218 9 2 0.00230257 0 1 0.101838 0 -1 4 7 4 4 2 4 9 4 2 0 0 0 0 0 0.00441743 -1 -2 0.821906 0 -1 9 4 2 16 2 9 12 2 8 0 0 0 0 0 0.195655 2 0.0222032 0 1 0.220541 0 -1 1 1 18 5 3 7 1 6 5 0 0 0 0 0 -0.000172831 -1 -2 0.0732633 0 -1 4 5 13 8 2 4 9 13 4 0 0 0 0 0 0.593148 2 0.00435673 0 1 0.184411 0 -1 1 7 16 9 3 1 10 16 3 0 0 0 0 0 -0.00260329 -1 -2 0.403221 0 -1 2 0 15 4 2 2 2 15 2 0 0 0 0 0 0.806652 2 0.00173096 0 1 0.254833 0 -1 7 5 6 4 3 9 5 2 4 0 0 0 0 0 -0.00781464 -1 -2 0.605707 0 -1 6 3 8 9 3 6 6 8 3 0 0 0 0 0 0.277906 2 -0.00873434 0 1 0.288998 0 -1 8 12 3 8 2 8 16 3 4 0 0 0 0 0 0.000945223 -1 -2 0.761659 0 -1 3 16 2 2 2 3 17 2 1 0 0 0 0 0 0.349564 2 0.0494149 1 0 0.815165 0 -1 14 1 6 12 2 14 1 3 12 0 0 0 0 0 0.00448918 -1 -2 0.280878 0 -1 4 4 12 6 3 8 4 4 6 0 0 0 0 0 0.602777 2 0.0603136 1 0 0.76075 0 -1 0 2 6 15 2 3 2 3 15 0 0 0 0 0 -0.00107629 -1 -2 0.444404 0 -1 5 4 9 6 3 5 6 9 2 0 0 0 0 0 0.143731 2 -0.00950832 1 0 0.531817 0 -1 13 11 6 3 3 13 12 6 1 0 0 0 0 0 0.00766013 -1 -2 0.541105 0 -1 12 12 6 4 2 12 14 6 2 0 0 0 0 0 0.218069 2 0.00764677 1 0 0.115896 0 -1 1 11 6 3 3 1 12 6 1 0 0 0 0 0 -0.000846629 -1 -2 0.234068 0 -1 2 5 5 8 2 2 9 5 4 0 0 0 0 0 0.599038 1 -1 3 5.98449 14 2 -0.00485062 1 0 0.18055 0 -1 5 4 10 4 2 5 6 10 2 0 0 0 0 0 -0.00461417 -1 -2 0.217789 0 -1 2 4 16 12 3 2 8 16 4 0 0 0 0 0 0.801824 2 -0.00243013 0 1 0.114135 0 -1 4 5 12 6 3 8 5 4 6 0 0 0 0 0 0.00041788 -1 -2 0.120309 0 -1 13 7 2 9 3 13 10 2 3 0 0 0 0 0 0.610853 2 0.00100109 0 1 0.207996 0 -1 5 7 2 9 3 5 10 2 3 0 0 0 0 0 0.00105771 -1 -2 0.330205 0 -1 7 1 6 8 3 9 1 2 8 0 0 0 0 0 0.751109 2 0.00123765 1 0 0.276822 0 -1 12 0 4 12 2 14 0 2 6 2 12 6 2 6 0.00035315 -1 -2 0.166829 0 -1 5 8 10 2 2 5 9 10 1 0 0 0 0 0 0.582948 2 -0.0119537 0 1 0.150879 0 -1 5 1 6 4 3 7 1 2 4 0 0 0 0 0 0.0014183 -1 -2 0.439123 0 -1 0 3 9 12 3 3 3 3 12 0 0 0 0 0 0.76466 2 0.0034643 1 0 0.265156 0 -1 9 8 3 12 3 9 12 3 4 0 0 0 0 0 -0.014949 -1 -2 0.229805 0 -1 0 5 20 15 3 0 10 20 5 0 0 0 0 0 0.544217 2 -0.00105068 1 0 0.362284 0 -1 2 2 6 8 2 2 2 3 4 2 5 6 3 4 -0.00407829 -1 -2 0.260126 0 -1 2 1 6 2 2 2 2 6 1 0 0 0 0 0 0.723366 2 0.000542428 0 1 0.384968 0 -1 10 15 6 4 2 13 15 3 2 2 10 17 3 2 -0.00732041 -1 -2 0.296551 0 -1 12 14 2 6 3 12 16 2 2 0 0 0 0 0 0.548031 2 0.00114213 0 1 0.410477 0 -1 5 15 4 4 2 5 15 2 2 2 7 17 2 2 0.00117834 -1 -2 0.723902 0 -1 7 18 1 2 2 7 19 1 1 0 0 0 0 0 0.278728 2 0.0440771 0 1 0.564052 0 -1 4 5 12 10 2 10 5 6 5 2 4 10 6 5 0.00379001 -1 -2 0.594755 0 -1 7 4 8 12 2 11 4 4 6 2 7 10 4 6 0.331202 2 -0.00242914 0 1 0.660323 0 -1 9 11 2 3 3 9 12 2 1 0 0 0 0 0 0.00942623 -1 -2 0.468067 0 -1 3 3 12 12 2 3 3 6 6 2 9 9 6 6 0.206434 2 0.00806303 0 1 0.529885 0 -1 15 11 5 3 3 15 12 5 1 0 0 0 0 0 0.00522408 -1 -2 0.52816 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.190955 2 -0.00706306 0 1 0.138065 0 -1 0 11 5 3 3 0 12 5 1 0 0 0 0 0 0.00568975 -1 -2 0.549064 0 -1 7 18 3 2 3 8 18 1 2 0 0 0 0 0 0.126028 2 0.00124729 0 1 0.237266 0 -1 2 8 16 2 2 2 9 16 1 0 0 0 0 0 0.0495435 -1 -2 0.524017 0 -1 9 6 5 12 2 9 12 5 6 0 0 0 0 0 0.176922 2 -1 4 8.51179 19 2 -0.00493261 1 0 0.199806 0 -1 6 3 8 6 2 6 6 8 3 0 0 0 0 0 2.79181e-05 -1 -2 0.229938 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 0.739321 2 0.00308762 1 0 0.153384 0 -1 10 9 6 8 2 10 13 6 4 0 0 0 0 0 7.46697e-06 -1 -2 0.203686 0 -1 12 5 3 10 2 12 10 3 5 0 0 0 0 0 0.585492 2 0.00187397 0 1 0.20499 0 -1 4 6 3 9 3 4 9 3 3 0 0 0 0 0 0.000933803 -1 -2 0.32342 0 -1 7 4 6 4 3 9 4 2 4 0 0 0 0 0 0.732301 2 0.00191519 0 1 0.304515 0 -1 12 3 8 3 2 12 3 4 3 0 0 0 0 0 -0.00596838 -1 -2 0.293213 0 -1 15 0 3 6 2 15 3 3 3 0 0 0 0 0 0.56213 2 -0.000721156 0 1 0.365804 0 -1 2 12 10 8 2 2 12 5 4 2 7 16 5 4 -0.00596631 -1 -2 0.271216 0 -1 5 5 6 8 2 5 9 6 4 0 0 0 0 0 0.722633 2 0.0308742 0 1 0.441984 0 -1 12 3 8 3 2 12 3 4 3 0 0 0 0 0 -0.0110997 -1 -2 0.361298 0 -1 15 0 3 6 2 15 3 3 3 0 0 0 0 0 0.525145 2 0.00211642 0 1 0.362862 0 -1 0 3 8 3 2 4 3 4 3 0 0 0 0 0 -0.00943174 -1 -2 0.16011 0 -1 2 1 4 4 2 2 3 4 2 0 0 0 0 0 0.705228 2 -0.0035266 0 1 0.130129 0 -1 10 2 3 2 3 11 2 1 2 0 0 0 0 0 -0.00169076 -1 -2 0.178632 0 -1 10 3 3 1 3 11 3 1 1 0 0 0 0 0 0.552153 2 0.000464709 0 1 0.348738 0 -1 7 15 3 4 2 7 17 3 2 0 0 0 0 0 -0.0102156 -1 -2 0.267399 0 -1 4 13 3 6 3 4 15 3 2 0 0 0 0 0 0.666792 2 0.00126347 1 0 0.343786 0 -1 10 5 1 14 2 10 12 1 7 0 0 0 0 0 -0.0118753 -1 -2 0.599534 0 -1 5 4 10 6 3 5 6 10 2 0 0 0 0 0 0.349772 2 -0.0107323 0 1 0.215049 0 -1 5 0 6 3 3 7 0 2 3 0 0 0 0 0 0.00718365 -1 -2 0.627144 0 -1 6 0 3 5 3 7 0 1 5 0 0 0 0 0 0.251954 2 -0.0283409 0 1 0.0824119 0 -1 7 15 6 5 3 9 15 2 5 0 0 0 0 0 -0.000458132 -1 -2 0.591006 0 -1 9 10 2 6 3 9 12 2 2 0 0 0 0 0 0.37052 2 0.00429403 1 0 0.159473 0 -1 8 17 3 2 3 9 17 1 2 0 0 0 0 0 0.0107511 -1 -2 0.598048 0 -1 1 12 7 6 3 1 14 7 2 0 0 0 0 0 0.283251 2 0.0224651 1 0 0.787709 0 -1 9 6 3 7 3 10 6 1 7 0 0 0 0 0 -0.0579885 -1 -2 0.155574 0 -1 16 3 4 9 3 16 6 4 3 0 0 0 0 0 0.523966 2 0.00721109 1 0 0.662037 0 -1 8 6 3 7 3 9 6 1 7 0 0 0 0 0 -0.0483676 -1 -2 0.142472 0 -1 0 5 18 8 2 0 5 9 4 2 9 9 9 4 0.442983 2 -0.0144181 0 1 0.158854 0 -1 13 5 2 10 2 13 10 2 5 0 0 0 0 0 -0.0231564 -1 -2 0.23758 0 -1 12 10 2 6 2 12 13 2 3 0 0 0 0 0 0.521713 2 0.00769853 1 0 0.194173 0 -1 7 0 3 5 3 8 0 1 5 0 0 0 0 0 -0.00562486 -1 -2 0.627841 0 -1 6 5 8 6 3 6 7 8 2 0 0 0 0 0 0.374604 2 -0.000729367 1 0 0.384092 0 -1 10 3 6 14 2 13 3 3 7 2 10 10 3 7 0.000617839 -1 -2 0.310649 0 -1 13 5 1 8 2 13 9 1 4 0 0 0 0 0 0.553785 2 -4.58039e-05 1 0 0.344445 0 -1 4 3 6 14 2 4 3 3 7 2 7 10 3 7 -1.47194e-05 -1 -2 0.272955 0 -1 6 5 1 8 2 6 9 1 4 0 0 0 0 0 0.642895 3 -1 5 8.46802 19 2 -0.00134694 0 1 0.165709 0 -1 8 1 1 6 3 8 3 1 2 0 0 0 0 0 -0.00247748 -1 -2 0.227385 0 -1 2 0 15 2 2 2 1 15 1 0 0 0 0 0 0.698935 2 0.00526328 0 1 0.151207 0 -1 0 7 20 6 3 0 9 20 2 0 0 0 0 0 0.00490753 -1 -2 0.556447 0 -1 10 10 6 8 2 10 14 6 4 0 0 0 0 0 0.160544 2 -0.00232543 0 1 0.188026 0 -1 7 1 3 2 3 8 1 1 2 0 0 0 0 0 -0.00146655 -1 -2 0.31225 0 -1 8 1 2 2 2 9 1 1 2 0 0 0 0 0 0.71654 2 -0.123117 1 0 0.385958 0 -1 4 3 12 9 3 4 6 12 3 0 0 0 0 0 0.00221083 -1 -2 0.245529 0 -1 6 5 9 5 3 9 5 3 5 0 0 0 0 0 0.569571 2 0.00206615 0 1 0.271652 0 -1 5 5 9 5 3 8 5 3 5 0 0 0 0 0 0.000361303 -1 -2 0.229336 0 -1 4 6 6 12 3 4 10 6 4 0 0 0 0 0 0.720863 2 0.0799579 1 0 0.783362 0 -1 13 0 6 18 2 13 0 3 18 0 0 0 0 0 0.00260647 -1 -2 0.554523 0 -1 10 8 1 12 3 10 12 1 4 0 0 0 0 0 0.255069 2 0.0065699 1 0 0.181939 0 -1 3 2 6 10 2 3 2 3 5 2 6 7 3 5 0.00162596 -1 -2 0.352988 0 -1 1 2 4 6 2 3 2 2 6 0 0 0 0 0 0.655282 2 0.0036205 0 1 0.546231 0 -1 9 18 3 2 3 10 18 1 2 0 0 0 0 0 -0.0044392 -1 -2 0.135984 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.541582 2 -0.00905409 0 1 0.111512 0 -1 2 8 2 6 3 2 10 2 2 0 0 0 0 0 -0.000460675 -1 -2 0.584672 0 -1 7 5 6 6 3 7 7 6 2 0 0 0 0 0 0.259835 2 -0.0056621 0 1 0.161057 0 -1 7 19 6 1 3 9 19 2 1 0 0 0 0 0 0.00511658 -1 -2 0.537668 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.173946 2 -0.00213623 0 1 0.190207 0 -1 8 3 3 1 3 9 3 1 1 0 0 0 0 0 -0.00548099 -1 -2 0.327201 0 -1 2 2 16 2 2 2 2 8 1 2 10 3 8 1 0.636484 2 -0.00810619 0 1 0.691485 0 -1 8 11 5 3 3 8 12 5 1 0 0 0 0 0 0.00600487 -1 -2 0.432733 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.696384 2 -0.0870285 0 1 0.859413 0 -1 0 1 6 15 3 2 1 2 15 0 0 0 0 0 -0.00478096 -1 -2 0.0973945 0 -1 2 12 2 3 3 2 13 2 1 0 0 0 0 0 0.458703 2 -0.00221667 0 1 0.255463 0 -1 16 13 1 3 3 16 14 1 1 0 0 0 0 0 0.00136427 -1 -2 0.331909 0 -1 13 7 6 4 2 16 7 3 2 2 13 9 3 2 0.59641 2 -0.00900779 0 1 0.266659 0 -1 7 13 3 6 2 7 16 3 3 0 0 0 0 0 -0.0154941 -1 -2 0.184819 0 -1 7 5 1 14 2 7 12 1 7 0 0 0 0 0 0.624597 2 -0.0042165 1 0 0.537993 0 -1 15 12 2 3 3 15 13 2 1 0 0 0 0 0 0.0432498 -1 -2 0.518303 0 -1 10 5 3 14 2 10 12 3 7 0 0 0 0 0 0.217042 2 0.000287865 1 0 0.261338 0 -1 6 10 2 6 2 6 13 2 3 0 0 0 0 0 0.00123732 -1 -2 0.278653 0 -1 6 5 1 8 2 6 9 1 4 0 0 0 0 0 0.590899 2 0.00195283 1 0 0.261287 0 -1 13 11 2 1 2 13 11 1 1 0 0 0 0 0 -0.00149471 -1 -2 0.591541 0 -1 12 1 6 10 2 15 1 3 5 2 12 6 3 5 0.345578 2 0.00358787 1 0 0.158705 0 -1 3 12 2 3 3 3 13 2 1 0 0 0 0 0 -0.00259387 -1 -2 0.127041 0 -1 9 18 2 1 2 10 18 1 1 0 0 0 0 0 0.597943 4 -1 6 12.5785 27 2 0.00358107 0 1 0.19951 0 -1 1 0 17 9 3 1 3 17 3 0 0 0 0 0 -0.00285524 -1 -2 0.737307 0 -1 1 2 8 8 2 1 2 4 4 2 5 6 4 4 0.292174 2 0.00197585 0 1 0.195642 0 -1 9 5 6 4 2 9 5 3 4 0 0 0 0 0 0.00325831 -1 -2 0.569205 0 -1 10 9 7 10 2 10 14 7 5 0 0 0 0 0 0.183906 2 0.000237117 0 1 0.217167 0 -1 5 5 6 4 2 8 5 3 4 0 0 0 0 0 0.00259425 -1 -2 0.271999 0 -1 0 7 20 6 3 0 9 20 2 0 0 0 0 0 0.715024 2 -0.0250324 0 1 0.182518 0 -1 6 5 9 10 2 6 10 9 5 0 0 0 0 0 0.00630879 -1 -2 0.569984 0 -1 8 4 4 12 2 8 10 4 6 0 0 0 0 0 0.350985 2 -0.00324949 1 0 0.402393 0 -1 6 6 8 3 3 6 7 8 1 0 0 0 0 0 -0.0148857 -1 -2 0.36041 0 -1 3 13 10 6 2 3 13 5 3 2 8 16 5 3 0.7292 2 0.00806232 1 0 0.649149 0 -1 15 1 4 11 2 15 1 2 11 0 0 0 0 0 0.0274057 -1 -2 0.551899 0 -1 5 7 10 10 2 10 7 5 5 2 5 12 5 5 0.265968 2 0.0343686 1 0 0.671251 0 -1 1 1 4 11 2 3 1 2 11 0 0 0 0 0 -0.027293 -1 -2 0.169138 0 -1 1 5 8 12 2 1 11 8 6 0 0 0 0 0 0.432628 2 0.000744521 0 1 0.34051 0 -1 13 7 6 4 2 16 7 3 2 2 13 9 3 2 0.000703363 -1 -2 0.551679 0 -1 11 10 7 4 2 11 12 7 2 0 0 0 0 0 0.331139 2 -0.122755 0 1 0.167532 0 -1 0 4 20 12 2 0 4 10 6 2 10 10 10 6 0.00325599 -1 -2 0.361575 0 -1 1 5 6 15 3 1 10 6 5 0 0 0 0 0 0.642078 2 -0.0320904 0 1 0.292108 0 -1 11 10 3 8 2 11 14 3 4 0 0 0 0 0 0.0032958 -1 -2 0.561303 0 -1 11 12 7 6 3 11 14 7 2 0 0 0 0 0 0.335786 2 -0.00322732 0 1 0.697064 0 -1 9 11 2 3 3 9 12 2 1 0 0 0 0 0 0.00111717 -1 -2 0.354115 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 0.614401 2 -0.01728 1 0 0.553718 0 -1 3 14 14 4 2 10 14 7 2 2 3 16 7 2 0.0117412 -1 -2 0.534196 0 -1 18 7 2 4 2 18 9 2 2 0 0 0 0 0 0.27571 2 0.00464052 1 0 0.248952 0 -1 3 12 6 6 3 3 14 6 2 0 0 0 0 0 -0.016913 -1 -2 0.171193 0 -1 0 4 3 6 3 0 6 3 2 0 0 0 0 0 0.552395 2 0.0100602 1 0 0.827345 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 -0.000607155 -1 -2 0.377939 0 -1 10 7 10 4 2 15 7 5 2 2 10 9 5 2 0.547625 2 -0.00108654 1 0 0.329654 0 -1 7 2 6 8 2 7 6 6 4 0 0 0 0 0 0.00893621 -1 -2 0.606288 0 -1 6 3 6 2 3 8 3 2 2 0 0 0 0 0 0.243422 2 -0.000263727 1 0 0.381409 0 -1 10 6 3 5 3 11 6 1 5 0 0 0 0 0 0.0131101 -1 -2 0.551762 0 -1 9 0 6 19 3 11 0 2 19 0 0 0 0 0 0.372689 2 -0.00298063 0 1 0.122966 0 -1 3 12 1 2 2 3 13 1 1 0 0 0 0 0 -0.00416196 -1 -2 0.725227 0 -1 7 14 5 3 3 7 15 5 1 0 0 0 0 0 0.497346 2 0.0338423 0 1 0.534831 0 -1 2 1 18 4 2 11 1 9 2 2 2 3 9 2 -0.00125646 -1 -2 0.585191 0 -1 10 5 3 8 3 11 5 1 8 0 0 0 0 0 0.438417 2 -0.0196352 0 1 0.229783 0 -1 0 1 18 4 2 0 1 9 2 2 9 3 9 2 -0.000996255 -1 -2 0.629594 0 -1 7 5 3 8 3 8 5 1 8 0 0 0 0 0 0.41316 2 -0.0231271 0 1 0.169546 0 -1 9 5 2 6 3 9 7 2 2 0 0 0 0 0 0.0235257 -1 -2 0.517413 0 -1 10 8 5 2 2 10 9 5 1 0 0 0 0 0 0.0595194 2 -0.0193565 0 1 0.135725 0 -1 2 10 15 1 3 7 10 5 1 0 0 0 0 0 -0.00417871 -1 -2 0.299663 0 -1 2 7 2 6 3 2 9 2 2 0 0 0 0 0 0.57917 2 0.00314888 1 0 0.659259 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 0.00739723 -1 -2 0.530717 0 -1 9 7 4 10 2 9 12 4 5 0 0 0 0 0 0.379512 2 7.19551e-06 0 1 0.312831 0 -1 0 8 8 2 2 0 8 4 1 2 4 9 4 1 0.0471144 -1 -2 0.553789 0 -1 5 9 10 8 2 5 9 5 4 2 10 13 5 4 0.102731 2 0.00728787 0 1 0.466086 0 -1 9 7 2 4 2 9 7 1 4 0 0 0 0 0 -0.00618875 -1 -2 0.715886 0 -1 9 6 3 4 3 10 6 1 4 0 0 0 0 0 0.472445 2 0.00297573 1 0 0.0593457 0 -1 8 3 2 1 2 9 3 1 1 0 0 0 0 0 -0.00184498 -1 -2 0.70273 0 -1 8 6 3 4 3 9 6 1 4 0 0 0 0 0 0.471873 2 0.000102395 0 1 0.589473 0 -1 12 0 4 14 2 14 0 2 7 2 12 7 2 7 0.0024277 -1 -2 0.486236 0 -1 12 5 6 9 2 12 5 3 9 0 0 0 0 0 0.524759 2 -0.0647513 0 1 0.691747 0 -1 0 2 6 16 2 3 2 3 16 0 0 0 0 0 0.000393802 -1 -2 0.466962 0 -1 1 12 4 2 2 1 13 4 1 0 0 0 0 0 0.238241 5 -1 7 14.5468 31 2 0.00143974 0 1 0.277347 0 -1 7 7 6 1 3 9 7 2 1 0 0 0 0 0 -0.000540686 -1 -2 0.742715 0 -1 8 3 4 9 3 8 6 4 3 0 0 0 0 0 0.247974 2 -7.1238e-06 1 0 0.21995 0 -1 12 10 4 6 2 12 13 4 3 0 0 0 0 0 -0.0023661 -1 -2 0.588999 0 -1 8 1 8 16 2 12 1 4 8 2 8 9 4 8 0.259572 2 0.00173433 0 1 0.186013 0 -1 4 6 3 6 2 4 9 3 3 0 0 0 0 0 0.00158746 -1 -2 0.415187 0 -1 1 3 6 2 2 4 3 3 2 0 0 0 0 0 0.710347 2 0.00372856 1 0 0.252797 0 -1 9 8 3 12 3 9 12 3 4 0 0 0 0 0 -0.128838 -1 -2 0.1393 0 -1 10 9 7 10 2 10 14 7 5 0 0 0 0 0 0.525451 2 0.00794122 1 0 0.248773 0 -1 3 9 7 10 2 3 14 7 5 0 0 0 0 0 -0.0126617 -1 -2 0.27107 0 -1 7 5 1 14 2 7 12 1 7 0 0 0 0 0 0.661884 2 3.01468e-05 0 1 0.381283 0 -1 13 14 1 6 3 13 16 1 2 0 0 0 0 0 -0.0163302 -1 -2 0.232643 0 -1 14 12 3 6 3 14 14 3 2 0 0 0 0 0 0.526301 2 1.46228e-05 0 1 0.429333 0 -1 6 14 1 6 3 6 16 1 2 0 0 0 0 0 -0.0208587 -1 -2 0.16004 0 -1 3 12 3 6 3 3 14 3 2 0 0 0 0 0 0.678231 2 0.00281946 1 0 0.667929 0 -1 8 13 5 3 3 8 14 5 1 0 0 0 0 0 0.00378994 -1 -2 0.458771 0 -1 9 14 2 3 3 9 15 2 1 0 0 0 0 0 0.717624 2 0.0353446 1 0 0.186408 0 -1 5 1 10 8 2 5 1 5 4 2 10 5 5 4 -0.00115716 -1 -2 0.553826 0 -1 6 4 5 4 2 6 6 5 2 0 0 0 0 0 0.315045 2 -0.00587428 0 1 0.282879 0 -1 1 10 18 1 3 7 10 6 1 0 0 0 0 0 -1.52018e-05 -1 -2 0.587022 0 -1 11 10 4 3 2 11 10 2 3 0 0 0 0 0 0.370482 2 -0.000226819 1 0 0.421893 0 -1 5 11 6 1 3 7 11 2 1 0 0 0 0 0 0.00378457 -1 -2 0.6667 0 -1 3 13 2 3 3 3 14 2 1 0 0 0 0 0 0.246118 2 -8.5296e-05 1 0 0.355759 0 -1 12 12 3 4 2 12 14 3 2 0 0 0 0 0 -0.0443949 -1 -2 0.166555 0 -1 11 10 5 6 3 11 12 5 2 0 0 0 0 0 0.523485 2 0.0010126 0 1 0.288461 0 -1 0 8 16 2 2 0 9 16 1 0 0 0 0 0 -0.00763278 -1 -2 0.296934 0 -1 2 1 3 4 2 2 3 3 2 0 0 0 0 0 0.608011 2 0.00403304 0 1 0.453639 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 0.136767 -1 -2 0.517726 0 -1 5 6 12 6 3 9 6 4 6 0 0 0 0 0 0.144918 2 -0.00500605 0 1 0.761691 0 -1 8 7 3 3 3 9 7 1 3 0 0 0 0 0 -0.0124758 -1 -2 0.215971 0 -1 3 6 12 6 3 7 6 4 6 0 0 0 0 0 0.546019 2 -0.000940123 1 0 0.39263 0 -1 10 5 6 5 3 12 5 2 5 0 0 0 0 0 -0.012192 -1 -2 0.347888 0 -1 5 7 10 2 2 5 7 5 2 0 0 0 0 0 0.554266 2 -0.000549595 0 1 0.606428 0 -1 4 5 6 5 3 6 5 2 5 0 0 0 0 0 -0.000218024 -1 -2 0.569741 0 -1 9 3 2 10 2 9 8 2 5 0 0 0 0 0 0.177971 2 0.00691158 0 1 0.537937 0 -1 3 1 16 2 2 11 1 8 1 2 3 2 8 1 -0.000976317 -1 -2 0.332784 0 -1 9 9 3 2 2 9 10 3 1 0 0 0 0 0 0.546153 2 -0.00878702 0 1 0.211616 0 -1 1 1 16 2 2 1 1 8 1 2 9 2 8 1 -0.0016761 -1 -2 0.663582 0 -1 8 14 1 3 3 8 15 1 1 0 0 0 0 0 0.436586 2 -0.0556949 1 0 0.538742 0 -1 4 5 12 10 2 10 5 6 5 2 4 10 6 5 -0.0198444 -1 -2 0.16028 0 -1 7 13 6 6 2 10 13 3 3 2 7 16 3 3 0.533046 2 -0.000747516 0 1 0.291748 0 -1 8 9 3 2 2 8 10 3 1 0 0 0 0 0 0.0230329 -1 -2 0.560812 0 -1 7 2 6 4 3 9 2 2 4 0 0 0 0 0 0.199798 2 -0.00307003 1 0 0.393831 0 -1 6 6 9 3 3 6 7 9 1 0 0 0 0 0 -0.00116368 -1 -2 0.575744 0 -1 10 7 6 1 3 12 7 2 1 0 0 0 0 0 0.423946 2 0.224643 1 0 0.767655 0 -1 0 0 18 6 3 6 0 6 6 0 0 0 0 0 0.00144121 -1 -2 0.535387 0 -1 6 10 2 6 2 6 13 2 3 0 0 0 0 0 0.251478 2 -0.0300112 0 1 0.23649 0 -1 11 12 3 6 2 11 15 3 3 0 0 0 0 0 -0.053079 -1 -2 0.238586 0 -1 4 4 12 12 2 10 4 6 6 2 4 10 6 6 0.541466 2 0.00208009 1 0 0.651161 0 -1 1 2 3 6 3 2 2 1 6 0 0 0 0 0 -0.00407382 -1 -2 0.603041 0 -1 1 5 3 7 3 2 5 1 7 0 0 0 0 0 0.35877 2 -0.0195294 1 0 0.542359 0 -1 4 13 12 4 2 10 13 6 2 2 4 15 6 2 -0.0533095 -1 -2 0.236095 0 -1 3 3 17 12 2 3 9 17 6 0 0 0 0 0 0.540176 2 -0.0348496 0 1 0.283699 0 -1 3 3 14 12 2 3 3 7 6 2 10 9 7 6 -0.126585 -1 -2 0.181352 0 -1 2 11 16 9 3 2 14 16 3 0 0 0 0 0 0.542105 2 7.33251e-06 0 1 0.398037 0 -1 9 14 3 6 2 9 17 3 3 0 0 0 0 0 -0.0118439 -1 -2 0.261638 0 -1 8 14 4 6 2 10 14 2 3 2 8 17 2 3 0.523773 2 -0.00484707 0 1 0.243811 0 -1 6 2 6 1 3 8 2 2 1 0 0 0 0 0 0.0081694 -1 -2 0.532715 0 -1 9 5 2 5 2 10 5 1 5 0 0 0 0 0 0.819038 2 -0.00647168 1 0 0.467969 0 -1 9 8 3 5 3 10 8 1 5 0 0 0 0 0 -1.51885e-05 -1 -2 0.556391 0 -1 9 12 6 1 2 9 12 3 1 0 0 0 0 0 0.436759 2 0.00306967 1 0 0.666435 0 -1 8 8 3 5 3 9 8 1 5 0 0 0 0 0 -0.000162967 -1 -2 0.559461 0 -1 6 10 4 3 2 8 10 2 3 0 0 0 0 0 0.304271 6 -1 8 18.5723 39 2 -0.00982759 1 0 0.211602 0 -1 0 4 20 6 3 0 6 20 2 0 0 0 0 0 -0.00416939 -1 -2 0.692469 0 -1 1 3 8 6 2 1 3 4 3 2 5 6 4 3 0.304378 2 0.000353413 0 1 0.318329 0 -1 7 15 6 4 2 7 17 6 2 0 0 0 0 0 0.00480545 -1 -2 0.545656 0 -1 3 10 14 10 2 3 15 14 5 0 0 0 0 0 0.252227 2 0.000210712 0 1 0.290262 0 -1 6 4 4 4 2 8 4 2 4 0 0 0 0 0 -0.00283189 -1 -2 0.313046 0 -1 0 4 20 10 2 0 9 20 5 0 0 0 0 0 0.688494 2 -7.56337e-06 1 0 0.296247 0 -1 9 4 2 14 2 9 11 2 7 0 0 0 0 0 -0.000828881 -1 -2 0.309963 0 -1 2 0 16 4 2 2 2 16 2 0 0 0 0 0 0.575252 2 0.00162093 0 1 0.39932 0 -1 4 12 6 8 2 4 12 3 4 2 7 16 3 4 0.0091339 -1 -2 0.482737 0 -1 0 5 6 7 2 3 5 3 7 0 0 0 0 0 0.753783 2 -0.00412123 0 1 0.261693 0 -1 10 7 10 4 2 15 7 5 2 2 10 9 5 2 -0.00254473 -1 -2 0.31087 0 -1 5 8 12 1 3 9 8 4 1 0 0 0 0 0 0.549124 2 -0.000626528 0 1 0.323969 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 -3.65963e-05 -1 -2 0.651741 0 -1 9 4 2 4 2 9 6 2 2 0 0 0 0 0 0.417891 2 0.0138827 1 0 0.67712 0 -1 9 6 3 6 3 10 6 1 6 0 0 0 0 0 0.00104937 -1 -2 0.415951 0 -1 12 7 6 4 2 15 7 3 2 2 12 9 3 2 0.565289 2 0.0182154 1 0 0.76896 0 -1 8 6 3 6 3 9 6 1 6 0 0 0 0 0 -0.0113346 -1 -2 0.287332 0 -1 1 6 18 6 2 1 6 9 3 2 10 9 9 3 0.498893 2 -0.00410976 1 0 0.546301 0 -1 9 1 3 3 3 10 1 1 3 0 0 0 0 0 0.000426129 -1 -2 0.363124 0 -1 10 8 5 2 2 10 9 5 1 0 0 0 0 0 0.551255 2 0.00603015 1 0 0.114377 0 -1 8 1 3 3 3 9 1 1 3 0 0 0 0 0 0.000335877 -1 -2 0.289108 0 -1 5 8 5 2 2 5 9 5 1 0 0 0 0 0 0.544734 2 0.000622795 1 0 0.302343 0 -1 8 6 8 8 2 12 6 4 4 2 8 10 4 4 -0.0258371 -1 -2 0.216701 0 -1 5 7 10 2 2 5 7 5 2 0 0 0 0 0 0.527815 2 0.0217749 1 0 0.325483 0 -1 4 5 12 10 2 4 5 6 5 2 10 10 6 5 0.00176823 -1 -2 0.526305 0 -1 5 5 2 3 3 5 6 2 1 0 0 0 0 0 0.752633 2 -0.0137938 0 1 0.741033 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 -0.00508528 -1 -2 0.683661 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 0.457907 2 0.0061795 1 0 0.744994 0 -1 8 14 3 3 3 8 15 3 1 0 0 0 0 0 0.0100303 -1 -2 0.486078 0 -1 1 10 8 9 3 1 13 8 3 0 0 0 0 0 0.236146 2 -0.00642019 0 1 0.146733 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 -0.00569613 -1 -2 0.234782 0 -1 12 3 3 3 3 13 3 1 3 0 0 0 0 0 0.532338 2 -0.00714982 0 1 0.147706 0 -1 5 3 3 3 3 6 3 1 3 0 0 0 0 0 0.00244507 -1 -2 0.349853 0 -1 5 6 2 12 3 5 10 2 4 0 0 0 0 0 0.580356 2 -0.0375034 1 0 0.525955 0 -1 1 11 18 4 2 10 11 9 2 2 1 13 9 2 0.000477994 -1 -2 0.436288 0 -1 7 12 6 2 2 7 13 6 1 0 0 0 0 0 0.620892 2 -0.00708061 0 1 0.203946 0 -1 6 0 3 6 3 7 0 1 6 0 0 0 0 0 0.032818 -1 -2 0.519836 0 -1 0 11 18 4 2 0 11 9 2 2 9 13 9 2 0.13712 2 0.00065189 1 0 0.632343 0 -1 7 12 6 2 2 7 13 6 1 0 0 0 0 0 0.00464856 -1 -2 0.472016 0 -1 9 12 3 3 3 9 13 3 1 0 0 0 0 0 0.656709 2 -0.00198279 0 1 0.605306 0 -1 9 12 2 3 3 9 13 2 1 0 0 0 0 0 -0.00160113 -1 -2 0.509052 0 -1 8 11 4 3 3 8 12 4 1 0 0 0 0 0 0.311693 2 -0.00305399 0 1 0.34298 0 -1 13 3 4 2 2 13 4 4 1 0 0 0 0 0 0.00043212 -1 -2 0.38384 0 -1 4 0 12 2 2 4 1 12 1 0 0 0 0 0 0.57756 2 -0.0274521 0 1 0.214347 0 -1 6 9 8 8 2 6 9 4 4 2 10 13 4 4 0.000930994 -1 -2 0.595297 0 -1 1 11 6 2 2 1 12 6 1 0 0 0 0 0 0.376016 2 0.00671442 0 1 0.569263 0 -1 2 5 18 8 2 11 5 9 4 2 2 9 9 4 -0.00337017 -1 -2 0.57843 0 -1 7 1 6 10 2 7 6 6 5 0 0 0 0 0 0.397428 2 -0.018904 0 1 0.181889 0 -1 0 3 3 6 3 0 5 3 2 0 0 0 0 0 -0.00658509 -1 -2 0.684911 0 -1 4 5 4 3 3 4 6 4 1 0 0 0 0 0 0.435158 2 0.00588105 1 0 0.272666 0 -1 19 3 1 6 3 19 5 1 2 0 0 0 0 0 0.000800921 -1 -2 0.423643 0 -1 6 15 8 2 2 6 16 8 1 0 0 0 0 0 0.584468 2 0.00185106 1 0 0.337132 0 -1 0 3 1 6 3 0 5 1 2 0 0 0 0 0 0.00632737 -1 -2 0.527022 0 -1 5 5 3 3 3 5 6 3 1 0 0 0 0 0 0.805365 2 -0.00338209 0 1 0.286602 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 -0.0019293 -1 -2 0.588895 0 -1 10 6 6 3 3 12 6 2 3 0 0 0 0 0 0.389579 2 0.0149952 1 0 0.217782 0 -1 8 13 2 6 2 8 16 2 3 0 0 0 0 0 -0.0263308 -1 -2 0.177532 0 -1 9 11 2 8 2 9 15 2 4 0 0 0 0 0 0.567147 2 -0.00417342 1 0 0.465296 0 -1 10 6 6 3 3 12 6 2 3 0 0 0 0 0 0.0272684 -1 -2 0.476831 0 -1 5 15 15 5 3 10 15 5 5 0 0 0 0 0 0.569524 2 0.000988803 1 0 0.33974 0 -1 2 14 2 2 2 2 15 2 1 0 0 0 0 0 -0.00105288 -1 -2 0.625004 0 -1 4 7 6 2 3 6 7 2 2 0 0 0 0 0 0.428841 2 0.00522881 0 1 0.534776 0 -1 8 3 6 1 3 10 3 2 1 0 0 0 0 0 0.0303955 -1 -2 0.411552 0 -1 1 0 18 12 3 7 0 6 12 0 0 0 0 0 0.566075 2 -0.0791139 0 1 0.788132 0 -1 0 14 8 6 2 4 14 4 6 0 0 0 0 0 0.0182317 -1 -2 0.360434 0 -1 0 15 15 5 3 5 15 5 5 0 0 0 0 0 0.556951 2 0.00522881 0 1 0.541664 0 -1 8 3 6 1 3 10 3 2 1 0 0 0 0 0 0.000439228 -1 -2 0.550716 0 -1 11 11 3 6 2 11 14 3 3 0 0 0 0 0 0.388228 2 -0.00086502 0 1 0.318585 0 -1 6 3 6 1 3 8 3 2 1 0 0 0 0 0 0.0010327 -1 -2 0.557836 0 -1 6 11 3 6 2 6 14 3 3 0 0 0 0 0 0.321925 2 -0.00729977 0 1 0.707323 0 -1 9 6 3 4 3 10 6 1 4 0 0 0 0 0 -0.00093629 -1 -2 0.555802 0 -1 12 10 4 7 2 12 10 2 7 0 0 0 0 0 0.461384 2 -0.00604832 0 1 0.686929 0 -1 8 6 3 4 3 9 6 1 4 0 0 0 0 0 0.00675292 -1 -2 0.487032 0 -1 4 6 4 7 2 6 6 2 7 0 0 0 0 0 0.265037 2 0.053078 0 1 0.528152 0 -1 10 3 4 12 2 10 3 2 12 0 0 0 0 0 -0.00102258 -1 -2 0.608588 0 -1 10 8 3 4 3 11 8 1 4 0 0 0 0 0 0.430487 2 0.0312706 1 0 0.544583 0 -1 1 0 18 14 3 7 0 6 14 0 0 0 0 0 -0.00635222 -1 -2 0.532834 0 -1 2 8 6 11 2 5 8 3 11 0 0 0 0 0 0.236432 7 -1 9 21.5781 45 2 -0.00622156 1 0 0.262558 0 -1 1 4 15 4 2 1 6 15 2 0 0 0 0 0 0.00210974 -1 -2 0.156499 0 -1 5 5 10 8 2 5 9 10 4 0 0 0 0 0 0.679288 2 0.0108459 0 1 0.348581 0 -1 14 2 6 8 2 14 2 3 8 0 0 0 0 0 0.000642304 -1 -2 0.369826 0 -1 11 6 6 14 2 14 6 3 7 2 11 13 3 7 0.592166 2 0.000733117 1 0 0.300708 0 -1 9 5 2 12 2 9 11 2 6 0 0 0 0 0 0.00101342 -1 -2 0.362492 0 -1 3 7 4 6 3 3 9 4 2 0 0 0 0 0 0.707243 2 0.0110936 0 1 0.44167 0 -1 14 3 6 6 2 14 3 3 6 0 0 0 0 0 -0.00791275 -1 -2 0.302871 0 -1 15 2 4 4 2 15 4 4 2 0 0 0 0 0 0.541738 2 0.0129053 0 1 0.43745 0 -1 0 2 6 7 2 3 2 3 7 0 0 0 0 0 -0.00424309 -1 -2 0.440159 0 -1 3 6 6 14 2 3 6 3 7 2 6 13 3 7 0.756519 2 -0.000213043 0 1 0.231079 0 -1 4 6 16 8 2 4 10 16 4 0 0 0 0 0 -0.00223086 -1 -2 0.35682 0 -1 10 12 2 8 2 10 16 2 4 0 0 0 0 0 0.575 2 0.00264005 0 1 0.359369 0 -1 7 0 6 20 3 9 0 2 20 0 0 0 0 0 0.075101 -1 -2 0.636357 0 -1 1 7 16 12 2 1 7 8 6 2 9 13 8 6 0.232703 2 -0.0077013 0 1 0.707462 0 -1 9 11 3 3 3 9 12 3 1 0 0 0 0 0 0.00155884 -1 -2 0.570024 0 -1 11 9 4 5 2 11 9 2 5 0 0 0 0 0 0.359045 2 -0.000476879 0 1 0.280544 0 -1 3 3 1 2 2 3 4 1 1 0 0 0 0 0 0.000842347 -1 -2 0.412542 0 -1 7 17 5 3 3 7 18 5 1 0 0 0 0 0 0.6178 2 -0.0128251 1 0 0.540308 0 -1 8 12 4 8 2 10 12 2 4 2 8 16 2 4 -0.000651566 -1 -2 0.563364 0 -1 7 4 10 12 2 12 4 5 6 2 7 10 5 6 0.335654 2 -0.0120062 0 1 0.710951 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 0.00132134 -1 -2 0.490385 0 -1 5 9 4 5 2 7 9 2 5 0 0 0 0 0 0.282458 2 -0.0203074 0 1 0.189137 0 -1 9 9 8 2 2 9 9 4 2 0 0 0 0 0 0.00401809 -1 -2 0.537797 0 -1 14 15 5 2 2 14 16 5 1 0 0 0 0 0 0.311949 2 0.00453153 1 0 0.720676 0 -1 9 14 2 3 3 9 15 2 1 0 0 0 0 0 -0.00443817 -1 -2 0.185467 0 -1 1 7 8 4 2 1 7 4 2 2 5 9 4 2 0.498173 2 0.0015692 1 0 0.263827 0 -1 19 3 1 2 2 19 4 1 1 0 0 0 0 0 -0.00495164 -1 -2 0.687107 0 -1 9 12 2 3 3 9 13 2 1 0 0 0 0 0 0.471469 2 -0.0274297 0 1 0.154829 0 -1 3 14 14 4 2 3 14 7 2 2 10 16 7 2 0.0014182 -1 -2 0.437684 0 -1 5 0 10 2 2 5 1 10 1 0 0 0 0 0 0.632737 2 -0.0130789 0 1 0.316681 0 -1 11 14 4 6 3 11 16 4 2 0 0 0 0 0 -0.00350928 -1 -2 0.619974 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.437969 2 0.0189207 1 0 0.147071 0 -1 7 13 6 6 2 7 13 3 3 2 10 16 3 3 0.00216834 -1 -2 0.580946 0 -1 0 2 1 6 3 0 4 1 2 0 0 0 0 0 0.343195 2 0.00164016 0 1 0.395946 0 -1 6 7 8 2 2 6 8 8 1 0 0 0 0 0 0.000140059 -1 -2 0.324003 0 -1 9 7 6 1 2 9 7 3 1 0 0 0 0 0 0.564665 2 -0.00331376 1 0 0.427453 0 -1 7 1 6 10 2 7 6 6 5 0 0 0 0 0 -0.0029459 -1 -2 0.334167 0 -1 0 2 6 2 2 0 3 6 1 0 0 0 0 0 0.662796 2 0.000136122 0 1 0.404693 0 -1 11 4 2 4 2 11 4 1 4 0 0 0 0 0 0.00060512 -1 -2 0.548406 0 -1 11 10 3 6 2 11 13 3 3 0 0 0 0 0 0.356994 2 -0.017514 0 1 0.182415 0 -1 3 9 8 2 2 7 9 4 2 0 0 0 0 0 -0.018735 -1 -2 0.797182 0 -1 0 0 4 6 2 2 0 2 6 0 0 0 0 0 0.506857 2 0.0120656 1 0 0.216701 0 -1 7 0 6 2 3 9 0 2 2 0 0 0 0 0 -0.00265442 -1 -2 0.658418 0 -1 9 15 2 3 3 9 16 2 1 0 0 0 0 0 0.462824 2 0.00145013 1 0 0.209025 0 -1 3 12 1 2 2 3 13 1 1 0 0 0 0 0 0.010954 -1 -2 0.511231 0 -1 4 5 11 3 3 4 6 11 1 0 0 0 0 0 0.778458 2 0.0157717 0 1 0.513236 0 -1 11 4 2 4 2 11 4 1 4 0 0 0 0 0 -0.0142527 -1 -2 0.174241 0 -1 8 3 6 3 3 10 3 2 3 0 0 0 0 0 0.526715 2 3.04119e-05 0 1 0.341845 0 -1 7 4 2 4 2 8 4 1 4 0 0 0 0 0 0.0234863 -1 -2 0.563127 0 -1 6 3 6 3 3 8 3 2 3 0 0 0 0 0 0.200639 2 0.00522054 1 0 0.624965 0 -1 11 4 4 3 3 11 5 4 1 0 0 0 0 0 -0.0258124 -1 -2 0.320323 0 -1 11 8 2 8 2 11 12 2 4 0 0 0 0 0 0.519933 2 -0.00195267 0 1 0.614071 0 -1 8 7 3 5 3 9 7 1 5 0 0 0 0 0 -0.008147 -1 -2 0.65929 0 -1 9 7 2 5 2 10 7 1 5 0 0 0 0 0 0.371112 2 0.00329624 1 0 0.295211 0 -1 14 11 1 6 3 14 13 1 2 0 0 0 0 0 -0.00139613 -1 -2 0.33208 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 0.552841 2 -0.00410554 0 1 0.171055 0 -1 0 3 2 2 2 0 4 2 1 0 0 0 0 0 -0.0108888 -1 -2 0.335943 0 -1 4 14 5 6 3 4 16 5 2 0 0 0 0 0 0.567491 2 -0.00767684 1 0 0.477324 0 -1 11 4 4 3 3 11 5 4 1 0 0 0 0 0 -0.00977298 -1 -2 0.808105 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.484583 2 0.00604397 1 0 0.6784 0 -1 5 4 4 3 3 5 5 4 1 0 0 0 0 0 -0.000461346 -1 -2 0.551464 0 -1 5 15 4 2 2 7 15 2 2 0 0 0 0 0 0.364236 2 0.0579924 1 0 0.125444 0 -1 15 1 5 9 3 15 4 5 3 0 0 0 0 0 0.00059385 -1 -2 0.442488 0 -1 9 10 3 3 3 9 11 3 1 0 0 0 0 0 0.572846 2 -0.00623535 0 1 0.280504 0 -1 1 6 2 6 3 1 8 2 2 0 0 0 0 0 -0.0127849 -1 -2 0.195091 0 -1 2 4 8 15 3 2 9 8 5 0 0 0 0 0 0.565292 2 0.000419737 1 0 0.616648 0 -1 9 12 3 2 2 9 13 3 1 0 0 0 0 0 0.000806468 -1 -2 0.452658 0 -1 9 12 3 3 3 9 13 3 1 0 0 0 0 0 0.594449 2 -0.0016339 1 0 0.408694 0 -1 7 6 3 5 3 8 6 1 5 0 0 0 0 0 -0.00483 -1 -2 0.279353 0 -1 5 3 6 2 3 7 3 2 2 0 0 0 0 0 0.644494 2 -0.00639921 1 0 0.567166 0 -1 6 1 8 10 2 10 1 4 5 2 6 6 4 5 0.108192 -1 -2 0.531181 0 -1 0 0 20 10 2 10 0 10 5 2 0 5 10 5 0.261436 2 0.000650566 1 0 0.299677 0 -1 6 3 3 1 3 7 3 1 1 0 0 0 0 0 0.0206113 -1 -2 0.448994 0 -1 0 2 6 8 3 2 2 2 8 0 0 0 0 0 0.688828 2 -0.0251291 1 0 0.519686 0 -1 11 10 3 4 2 11 12 3 2 0 0 0 0 0 0.00179229 -1 -2 0.3467 0 -1 12 6 3 8 2 12 10 3 4 0 0 0 0 0 0.553359 2 0.00156262 1 0 0.308144 0 -1 6 10 3 4 2 6 12 3 2 0 0 0 0 0 -0.000618987 -1 -2 0.269387 0 -1 5 6 3 8 2 5 10 3 4 0 0 0 0 0 0.554449 2 0.00481114 0 1 0.558785 0 -1 2 6 18 6 2 11 6 9 3 2 2 9 9 3 0.00224842 -1 -2 0.467211 0 -1 7 14 7 3 3 7 15 7 1 0 0 0 0 0 0.609083 2 -0.0301472 0 1 0.902759 0 -1 0 0 2 12 2 1 0 1 12 0 0 0 0 0 0.275487 -1 -2 0.471983 0 -1 1 2 18 16 2 1 10 18 8 0 0 0 0 0 0.219692 2 0.00368946 1 0 0.627301 0 -1 9 13 5 3 3 9 14 5 1 0 0 0 0 0 0.00729577 -1 -2 0.483922 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 0.690906 2 -0.0562111 0 1 0.173849 0 -1 0 6 18 6 2 0 6 9 3 2 9 9 9 3 -0.00264786 -1 -2 0.630414 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.44743 2 -0.0014534 1 0 0.530254 0 -1 17 4 1 3 3 17 5 1 1 0 0 0 0 0 0.00285409 -1 -2 0.53384 0 -1 12 11 1 9 3 12 14 1 3 0 0 0 0 0 0.379688 2 0.00058243 1 0 0.326984 0 -1 2 4 1 3 3 2 5 1 1 0 0 0 0 0 0.000925095 -1 -2 0.455481 0 -1 5 4 2 3 3 5 5 2 1 0 0 0 0 0 0.635835 8 -1 10 22.5853 47 2 0.0198064 0 1 0.280973 0 -1 1 2 18 3 3 7 2 6 3 0 0 0 0 0 0.000703956 -1 -2 0.311983 0 -1 0 1 20 6 3 0 3 20 2 0 0 0 0 0 0.709031 2 0.00255638 0 1 0.298195 0 -1 7 5 6 3 3 9 5 2 3 0 0 0 0 0 0.00108242 -1 -2 0.302056 0 -1 13 7 6 4 2 16 7 3 2 2 13 9 3 2 0.580881 2 -0.000928938 1 0 0.37381 0 -1 3 1 4 10 2 3 1 2 5 2 5 6 2 5 -0.0180097 -1 -2 0.216313 0 -1 0 4 19 10 2 0 9 19 5 0 0 0 0 0 0.661925 2 0.00235002 1 0 0.29104 0 -1 9 8 3 12 3 9 12 3 4 0 0 0 0 0 0.000818225 -1 -2 0.557862 0 -1 11 18 5 2 2 11 19 5 1 0 0 0 0 0 0.336663 2 0.000620953 0 1 0.407243 0 -1 5 16 6 4 2 5 16 3 2 2 8 18 3 2 0.00096781 -1 -2 0.68596 0 -1 5 18 3 2 2 5 19 3 1 0 0 0 0 0 0.310546 2 0.000480002 1 0 0.333733 0 -1 13 11 3 2 2 13 12 3 1 0 0 0 0 0 9.05386e-05 -1 -2 0.337096 0 -1 8 5 8 4 2 8 5 4 4 0 0 0 0 0 0.545121 2 -0.0439148 0 1 0.262567 0 -1 1 2 18 6 2 1 2 9 3 2 10 5 9 3 -0.00565013 -1 -2 0.605046 0 -1 3 5 14 6 3 3 7 14 2 0 0 0 0 0 0.323242 2 0.00386615 1 0 0.326261 0 -1 18 1 2 6 3 18 3 2 2 0 0 0 0 0 -6.30694e-05 -1 -2 0.581731 0 -1 9 11 6 1 3 11 11 2 1 0 0 0 0 0 0.416439 2 0.0525337 1 0 0.70954 0 -1 0 2 6 11 2 3 2 3 11 0 0 0 0 0 0.00138187 -1 -2 0.529288 0 -1 4 12 2 3 3 4 13 2 1 0 0 0 0 0 0.254139 2 -0.000892641 1 0 0.408534 0 -1 6 12 9 2 3 9 12 3 2 0 0 0 0 0 0.0855795 -1 -2 0.526324 0 -1 9 4 6 15 2 9 4 3 15 0 0 0 0 0 0.30032 2 -0.000183433 1 0 0.402921 0 -1 5 11 6 1 3 7 11 2 1 0 0 0 0 0 -0.00979248 -1 -2 0.352132 0 -1 5 4 6 15 2 8 4 3 15 0 0 0 0 0 0.6664 2 0.0144286 0 1 0.459357 0 -1 14 12 6 7 2 14 12 3 7 0 0 0 0 0 -0.045687 -1 -2 0.147476 0 -1 18 3 2 9 3 18 6 2 3 0 0 0 0 0 0.517863 2 -0.00257631 0 1 0.183728 0 -1 8 1 3 1 3 9 1 1 1 0 0 0 0 0 -0.0383019 -1 -2 0.808266 0 -1 0 12 6 7 2 3 12 3 7 0 0 0 0 0 0.516669 2 0.00289783 0 1 0.479801 0 -1 13 7 6 4 2 16 7 3 2 2 13 9 3 2 -0.00251651 -1 -2 0.33463 0 -1 8 0 10 2 2 8 1 10 1 0 0 0 0 0 0.544445 2 0.00056282 0 1 0.358903 0 -1 1 7 6 4 2 1 7 3 2 2 4 9 3 2 0.00366844 -1 -2 0.598313 0 -1 1 2 3 3 3 1 3 3 1 0 0 0 0 0 0.298396 2 0.00213198 1 0 0.616322 0 -1 9 13 4 3 3 9 14 4 1 0 0 0 0 0 0.00760373 -1 -2 0.521713 0 -1 12 13 7 2 2 12 14 7 1 0 0 0 0 0 0.205416 2 -0.000116681 1 0 0.344667 0 -1 5 12 9 2 3 8 12 3 2 0 0 0 0 0 0.00316595 -1 -2 0.559748 0 -1 6 10 4 8 2 6 14 4 4 0 0 0 0 0 0.267379 2 -0.0225695 0 1 0.690027 0 -1 1 0 18 4 3 7 0 6 4 0 0 0 0 0 0.000271296 -1 -2 0.448664 0 -1 12 0 5 2 2 12 1 5 1 0 0 0 0 0 0.550879 2 -0.0154345 0 1 0.204832 0 -1 7 7 1 12 2 7 13 1 6 0 0 0 0 0 -0.00848617 -1 -2 0.125495 0 -1 6 2 3 4 3 7 2 1 4 0 0 0 0 0 0.506036 2 -0.118075 0 1 0.0676331 0 -1 0 13 20 6 3 0 15 20 2 0 0 0 0 0 -0.00123001 -1 -2 0.56607 0 -1 8 5 12 2 2 14 5 6 1 2 8 6 6 1 0.42922 2 -0.00702904 0 1 0.71364 0 -1 8 14 2 3 3 8 15 2 1 0 0 0 0 0 0.00893252 -1 -2 0.433888 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 0.706088 2 -0.047736 1 0 0.526869 0 -1 12 13 7 6 3 12 15 7 2 0 0 0 0 0 -0.0441556 -1 -2 0.258058 0 -1 6 0 8 12 2 10 0 4 6 2 6 6 4 6 0.540696 2 -0.0259835 0 1 0.190505 0 -1 0 15 9 4 2 0 17 9 2 0 0 0 0 0 -0.00478858 -1 -2 0.255189 0 -1 9 0 2 5 2 10 0 1 5 0 0 0 0 0 0.533908 2 0.00674235 0 1 0.469331 0 -1 9 5 2 6 2 9 5 1 6 0 0 0 0 0 0.0116548 -1 -2 0.526196 0 -1 17 2 3 6 3 17 4 3 2 0 0 0 0 0 0.314543 2 -0.00569827 0 1 0.175685 0 -1 3 11 2 3 3 3 12 2 1 0 0 0 0 0 -0.00729833 -1 -2 0.777473 0 -1 7 13 3 3 3 7 14 3 1 0 0 0 0 0 0.512429 2 0.00790918 0 1 0.528456 0 -1 14 12 5 3 3 14 13 5 1 0 0 0 0 0 -0.00015875 -1 -2 0.38878 0 -1 4 8 14 3 3 4 9 14 1 0 0 0 0 0 0.550117 2 -0.00622359 0 1 0.248983 0 -1 1 12 5 3 3 1 13 5 1 0 0 0 0 0 0.00133089 -1 -2 0.426215 0 -1 1 15 12 2 2 1 15 6 1 2 7 16 6 1 0.593506 2 0.00520553 1 0 0.254522 0 -1 12 11 4 2 2 12 12 4 1 0 0 0 0 0 0.0140652 -1 -2 0.485199 0 -1 9 8 3 5 3 10 8 1 5 0 0 0 0 0 0.702142 2 -0.00673841 0 1 0.714327 0 -1 9 5 2 6 2 10 5 1 6 0 0 0 0 0 0.00334068 -1 -2 0.517573 0 -1 0 2 3 6 3 0 4 3 2 0 0 0 0 0 0.280864 2 -0.0118807 1 0 0.517322 0 -1 12 11 4 2 2 12 12 4 1 0 0 0 0 0 0.00142264 -1 -2 0.450287 0 -1 9 7 3 5 3 10 7 1 5 0 0 0 0 0 0.57957 2 0.00298581 1 0 0.191512 0 -1 4 11 4 2 2 4 12 4 1 0 0 0 0 0 -0.00204816 -1 -2 0.650243 0 -1 8 8 3 5 3 9 8 1 5 0 0 0 0 0 0.455932 2 0.00171227 0 1 0.537625 0 -1 9 3 3 1 3 10 3 1 1 0 0 0 0 0 -0.0169809 -1 -2 0.705623 0 -1 16 5 3 8 3 17 5 1 8 0 0 0 0 0 0.491461 2 -0.00112905 0 1 0.267871 0 -1 8 3 3 1 3 9 3 1 1 0 0 0 0 0 0.00286201 -1 -2 0.441085 0 -1 1 5 3 8 3 2 5 1 8 0 0 0 0 0 0.636832 2 -0.00380658 0 1 0.276356 0 -1 10 1 3 3 3 11 1 1 3 0 0 0 0 0 0.00590903 -1 -2 0.48673 0 -1 17 5 2 4 2 17 5 1 4 0 0 0 0 0 0.672878 2 0.00110044 0 1 0.407051 0 -1 2 8 14 3 3 2 9 14 1 0 0 0 0 0 -0.00233963 -1 -2 0.260495 0 -1 9 7 1 3 3 9 8 1 1 0 0 0 0 0 0.615486 2 -0.00360682 0 1 0.5732 0 -1 6 1 8 10 2 6 6 8 5 0 0 0 0 0 0.0408312 -1 -2 0.497338 0 -1 13 0 6 8 2 16 0 3 4 2 13 4 3 4 0.738701 2 -0.00710823 0 1 0.698475 0 -1 1 5 2 4 2 2 5 1 4 0 0 0 0 0 -0.000937597 -1 -2 0.269117 0 -1 4 2 12 2 2 4 3 12 1 0 0 0 0 0 0.474178 2 -0.00167408 0 1 0.355101 0 -1 8 8 4 4 2 8 10 4 2 0 0 0 0 0 0.0882877 -1 -2 0.524461 0 -1 5 6 12 4 3 9 6 4 4 0 0 0 0 0 0.209665 2 0.000820096 0 1 0.41311 0 -1 1 2 8 1 2 5 2 4 1 0 0 0 0 0 -0.000766246 -1 -2 0.462029 0 -1 1 1 6 10 3 3 1 2 10 0 0 0 0 0 0.677541 2 0.000657697 1 0 0.562828 0 -1 8 6 8 2 2 8 6 4 2 0 0 0 0 0 -0.00213048 -1 -2 0.557686 0 -1 10 7 6 6 3 12 7 2 6 0 0 0 0 0 0.457765 2 -0.000373171 1 0 0.495926 0 -1 4 6 8 2 2 8 6 4 2 0 0 0 0 0 -0.0111722 -1 -2 0.562564 0 -1 4 7 6 6 3 6 7 2 6 0 0 0 0 0 0.204711 2 0.0434352 1 0 0.224215 0 -1 3 14 16 4 2 3 16 16 2 0 0 0 0 0 0.000967362 -1 -2 0.453334 0 -1 8 12 4 2 2 8 13 4 1 0 0 0 0 0 0.619993 2 -0.00314529 0 1 0.666276 0 -1 8 12 3 3 3 8 13 3 1 0 0 0 0 0 0.00152331 -1 -2 0.500799 0 -1 5 12 6 1 2 8 12 3 1 0 0 0 0 0 0.238499 2 0.00208543 1 0 0.37535 0 -1 18 10 2 3 3 18 11 2 1 0 0 0 0 0 0.0360982 -1 -2 0.517717 0 -1 16 8 4 6 3 16 10 4 2 0 0 0 0 0 0.163449 2 0.00161796 1 0 0.258738 0 -1 8 3 2 1 2 9 3 1 1 0 0 0 0 0 -0.000621323 -1 -2 0.629953 0 -1 7 1 3 9 3 8 1 1 9 0 0 0 0 0 0.465879 2 0.000718785 1 0 0.335408 0 -1 5 11 11 6 2 5 14 11 3 0 0 0 0 0 -0.0393395 -1 -2 0.215413 0 -1 12 2 3 14 2 12 9 3 7 0 0 0 0 0 0.523571 2 -0.00109888 0 1 0.64689 0 -1 8 7 3 3 3 9 7 1 3 0 0 0 0 0 0.00211914 -1 -2 0.289309 0 -1 3 5 12 5 3 7 5 4 5 0 0 0 0 0 0.525482 9 -1 11 25.6093 53 2 0.00523599 0 1 0.329971 0 -1 1 2 6 3 2 4 2 3 3 0 0 0 0 0 -0.00221699 -1 -2 0.704159 0 -1 5 5 6 10 2 5 5 3 5 2 8 10 3 5 0.323547 2 -0.00823036 1 0 0.496117 0 -1 16 18 2 2 2 16 18 1 2 0 0 0 0 0 -0.00823036 -1 -2 0.712804 0 -1 16 18 2 2 2 16 18 1 2 0 0 0 0 0 0.496117 2 0.000453433 0 1 0.320847 0 -1 8 4 2 5 2 9 4 1 5 0 0 0 0 0 -0.000417771 -1 -2 0.661392 0 -1 8 4 1 4 2 8 6 1 2 0 0 0 0 0 0.355133 2 0.00278238 0 1 0.371013 0 -1 7 15 12 4 2 13 15 6 2 2 7 17 6 2 -6.03619e-05 -1 -2 0.574639 0 -1 11 18 6 2 2 11 19 6 1 0 0 0 0 0 0.389488 2 0.00350618 1 0 0.30541 0 -1 7 7 4 10 2 7 12 4 5 0 0 0 0 0 0.000170131 -1 -2 0.288558 0 -1 5 6 10 8 2 5 10 10 4 0 0 0 0 0 0.648775 2 -0.00233789 1 0 0.317443 0 -1 11 1 6 12 2 14 1 3 6 2 11 7 3 6 -0.00213692 -1 -2 0.382092 0 -1 5 8 12 1 3 9 8 4 1 0 0 0 0 0 0.523289 2 0.00102504 0 1 0.36228 0 -1 4 7 3 6 3 4 9 3 2 0 0 0 0 0 -4.47262e-05 -1 -2 0.653896 0 -1 4 11 3 4 2 4 13 3 2 0 0 0 0 0 0.400368 2 0.000571023 1 0 0.389317 0 -1 14 16 2 2 2 14 17 2 1 0 0 0 0 0 0.00057743 -1 -2 0.561453 0 -1 15 15 2 2 2 15 16 2 1 0 0 0 0 0 0.368764 2 0.000796921 1 0 0.644303 0 -1 7 12 6 2 2 7 13 6 1 0 0 0 0 0 0.000359459 -1 -2 0.338085 0 -1 8 13 4 2 2 8 14 4 1 0 0 0 0 0 0.582465 2 0.000439739 1 0 0.393877 0 -1 11 1 6 12 2 14 1 3 6 2 11 7 3 6 -0.000890614 -1 -2 0.342797 0 -1 12 2 4 2 2 12 3 4 1 0 0 0 0 0 0.55157 2 0.00541102 1 0 0.380354 0 -1 3 10 12 6 2 3 10 6 3 2 9 13 6 3 -0.000857649 -1 -2 0.643951 0 -1 3 1 6 12 2 3 1 3 6 2 6 7 3 6 0.416835 2 -0.0220006 0 1 0.66546 0 -1 16 6 4 14 2 18 6 2 7 2 16 13 2 7 -0.00787317 -1 -2 0.418272 0 -1 5 1 10 8 2 10 1 5 4 2 5 5 5 4 0.560472 2 -0.0274445 0 1 0.658686 0 -1 0 6 4 14 2 0 6 2 7 2 2 13 2 7 0.00197923 -1 -2 0.324491 0 -1 1 15 12 4 2 1 15 6 2 2 7 17 6 2 0.488287 2 -0.00567837 0 1 0.222908 0 -1 10 17 3 3 3 11 17 1 3 0 0 0 0 0 1.50572e-05 -1 -2 0.410729 0 -1 11 2 2 6 2 12 2 1 3 2 11 5 1 3 0.574759 2 -0.00541367 0 1 0.20658 0 -1 7 17 3 3 3 8 17 1 3 0 0 0 0 0 0.00536792 -1 -2 0.492642 0 -1 8 15 4 3 3 8 16 4 1 0 0 0 0 0 0.713948 2 -0.00314267 0 1 0.678009 0 -1 10 15 4 2 2 12 15 2 1 2 10 16 2 1 0.0109074 -1 -2 0.521493 0 -1 13 13 4 3 3 13 14 4 1 0 0 0 0 0 0.1144 2 0.00584368 1 0 0.193753 0 -1 3 13 4 3 3 3 14 4 1 0 0 0 0 0 9.05072e-05 -1 -2 0.381258 0 -1 7 2 2 6 2 7 2 1 3 2 8 5 1 3 0.551419 2 -0.0163458 0 1 0.247402 0 -1 2 1 16 3 3 2 2 16 1 0 0 0 0 0 0.00159875 -1 -2 0.481778 0 -1 10 15 4 2 2 12 15 2 1 2 10 16 2 1 0.592308 2 -0.0040258 0 1 0.750821 0 -1 6 15 4 2 2 6 15 2 1 2 8 16 2 1 -0.00677505 -1 -2 0.287981 0 -1 3 0 13 3 3 3 1 13 1 0 0 0 0 0 0.51997 2 -0.00324707 0 1 0.304491 0 -1 0 9 20 3 3 0 10 20 1 0 0 0 0 0 0.00154096 -1 -2 0.406348 0 -1 6 7 9 2 2 6 8 9 1 0 0 0 0 0 0.567656 2 -0.0128581 0 1 0.0967176 0 -1 8 14 3 6 3 9 14 1 6 0 0 0 0 0 -0.000148247 -1 -2 0.453783 0 -1 9 10 2 2 2 9 11 2 1 0 0 0 0 0 0.611538 2 -0.00902108 1 0 0.480775 0 -1 9 7 2 5 2 9 7 1 5 0 0 0 0 0 -0.028795 -1 -2 0.34038 0 -1 5 6 10 3 2 5 6 5 3 0 0 0 0 0 0.525553 2 0.00902108 1 0 0.750584 0 -1 9 7 2 5 2 10 7 1 5 0 0 0 0 0 0.00741212 -1 -2 0.545545 0 -1 5 6 10 3 2 10 6 5 3 0 0 0 0 0 0.322607 2 -0.00372175 0 1 0.231185 0 -1 13 9 2 2 2 13 9 1 2 0 0 0 0 0 0.198659 -1 -2 0.527105 0 -1 4 3 12 11 3 8 3 4 11 0 0 0 0 0 0.146993 2 1.52087e-05 0 1 0.367814 0 -1 7 1 2 7 2 8 1 1 7 0 0 0 0 0 -0.00390899 -1 -2 0.713193 0 -1 7 4 3 8 3 8 4 1 8 0 0 0 0 0 0.499387 2 0.00251063 0 1 0.531205 0 -1 13 9 2 2 2 13 9 1 2 0 0 0 0 0 0.000239217 -1 -2 0.468938 0 -1 11 6 2 2 2 12 6 1 1 2 11 7 1 1 0.571402 2 0.00694431 1 0 0.69488 0 -1 5 4 2 3 3 5 5 2 1 0 0 0 0 0 0.00120656 -1 -2 0.40045 0 -1 6 5 1 3 3 6 6 1 1 0 0 0 0 0 0.587488 2 0.00251063 0 1 0.532957 0 -1 13 9 2 2 2 13 9 1 2 0 0 0 0 0 0.0017514 -1 -2 0.554585 0 -1 16 14 3 3 3 16 15 3 1 0 0 0 0 0 0.344958 2 -0.00419782 0 1 0.121718 0 -1 5 9 2 2 2 6 9 1 2 0 0 0 0 0 0.00130929 -1 -2 0.537505 0 -1 1 14 3 3 3 1 15 3 1 0 0 0 0 0 0.341563 2 0.000673962 0 1 0.419518 0 -1 13 1 1 6 3 13 3 1 2 0 0 0 0 0 -0.0105307 -1 -2 0.346075 0 -1 13 3 7 2 2 13 4 7 1 0 0 0 0 0 0.515586 2 -0.406723 0 1 0.0580657 0 -1 0 6 20 14 2 0 13 20 7 0 0 0 0 0 -0.0263145 -1 -2 0.147345 0 -1 0 4 3 6 3 0 6 3 2 0 0 0 0 0 0.555938 2 0.00225571 1 0 0.547772 0 -1 10 1 9 6 3 10 3 9 2 0 0 0 0 0 0.0121549 -1 -2 0.420779 0 -1 8 0 12 5 2 8 0 6 5 0 0 0 0 0 0.562188 2 -0.0184365 0 1 0.644715 0 -1 0 0 18 5 3 6 0 6 5 0 0 0 0 0 0.000536761 -1 -2 0.276513 0 -1 1 1 9 6 3 1 3 9 2 0 0 0 0 0 0.48886 2 -0.00262655 1 0 0.526469 0 -1 15 15 2 2 2 15 16 2 1 0 0 0 0 0 -0.000511198 -1 -2 0.578531 0 -1 13 16 3 4 2 13 18 3 2 0 0 0 0 0 0.42911 2 0.000414548 1 0 0.345541 0 -1 3 15 2 2 2 3 16 2 1 0 0 0 0 0 -0.000550287 -1 -2 0.602692 0 -1 4 16 3 4 2 4 18 3 2 0 0 0 0 0 0.414389 2 -0.00103477 0 1 0.609529 0 -1 11 14 1 3 3 11 15 1 1 0 0 0 0 0 -0.00339666 -1 -2 0.610828 0 -1 9 13 5 3 3 9 14 5 1 0 0 0 0 0 0.470772 2 0.00317959 1 0 0.324437 0 -1 0 0 3 6 3 0 2 3 2 0 0 0 0 0 -0.00016529 -1 -2 0.383076 0 -1 4 1 6 3 3 6 1 2 3 0 0 0 0 0 0.573433 2 0.00837252 1 0 0.661092 0 -1 9 13 4 3 3 9 14 4 1 0 0 0 0 0 -0.00257998 -1 -2 0.613931 0 -1 8 15 5 3 3 8 16 5 1 0 0 0 0 0 0.468615 2 0.000901944 1 0 0.352002 0 -1 8 3 3 2 3 9 3 1 2 0 0 0 0 0 0.000369522 -1 -2 0.257875 0 -1 1 8 18 2 2 1 9 18 1 0 0 0 0 0 0.546724 2 0.000997461 0 1 0.482015 0 -1 11 14 1 3 3 11 15 1 1 0 0 0 0 0 -0.0036688 -1 -2 0.571015 0 -1 8 13 6 3 3 8 14 6 1 0 0 0 0 0 0.483191 2 -0.00089501 0 1 0.613368 0 -1 8 14 1 3 3 8 15 1 1 0 0 0 0 0 0.00519049 -1 -2 0.492858 0 -1 4 13 12 4 2 4 13 6 2 2 10 15 6 2 0.258131 2 0.000422744 0 1 0.447112 0 -1 10 7 2 2 2 10 7 1 2 0 0 0 0 0 0.00851767 -1 -2 0.516102 0 -1 13 4 2 8 2 14 4 1 4 2 13 8 1 4 0.331653 2 -0.0366236 0 1 0.0926062 0 -1 0 5 4 6 3 0 7 4 2 0 0 0 0 0 -0.00411037 -1 -2 0.852211 0 -1 8 7 2 2 2 9 7 1 2 0 0 0 0 0 0.513791 2 -0.00660173 1 0 0.545906 0 -1 13 0 3 7 3 14 0 1 7 0 0 0 0 0 0.0255786 -1 -2 0.521935 0 -1 11 2 2 14 2 11 2 1 14 0 0 0 0 0 0.192719 2 0.0114474 1 0 0.1916 0 -1 4 0 3 7 3 5 0 1 7 0 0 0 0 0 0.000724275 -1 -2 0.523157 0 -1 5 5 8 12 2 5 5 4 6 2 9 11 4 6 0.353534 2 0.00971275 1 0 0.64641 0 -1 11 4 6 3 3 11 5 6 1 0 0 0 0 0 -0.0113376 -1 -2 0.738304 0 -1 12 3 4 3 3 12 4 4 1 0 0 0 0 0 0.496474 2 -0.00814539 0 1 0.361171 0 -1 5 5 10 12 2 5 5 5 6 2 10 11 5 6 -0.00855708 -1 -2 0.342191 0 -1 3 6 12 3 2 9 6 6 3 0 0 0 0 0 0.594351 2 0.00229933 0 1 0.45501 0 -1 9 6 2 7 2 9 6 1 7 0 0 0 0 0 0.00384309 -1 -2 0.471686 0 -1 9 5 2 4 2 9 5 1 4 0 0 0 0 0 0.665619 2 -0.000991165 1 0 0.459272 0 -1 8 7 3 3 3 9 7 1 3 0 0 0 0 0 0.0254965 -1 -2 0.65634 0 -1 5 1 6 4 3 7 1 2 4 0 0 0 0 0 0.125884 2 -0.0157484 1 0 0.52395 0 -1 13 16 7 3 3 13 17 7 1 0 0 0 0 0 -0.0180461 -1 -2 0.801585 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.500796 2 0.0103234 1 0 0.227482 0 -1 0 16 7 3 3 0 17 7 1 0 0 0 0 0 0.00164522 -1 -2 0.435195 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.586763 2 0.0158811 0 1 0.446505 0 -1 12 9 8 10 2 12 9 4 10 0 0 0 0 0 0.0105865 -1 -2 0.454446 0 -1 8 10 12 5 3 12 10 4 5 0 0 0 0 0 0.570711 2 -0.0215317 0 1 0.652764 0 -1 0 9 8 10 2 4 9 4 10 0 0 0 0 0 0.00524805 -1 -2 0.344473 0 -1 0 10 12 5 3 4 10 4 5 0 0 0 0 0 0.532464 10 -1 12 32.6471 67 2 0.00182193 0 1 0.310879 0 -1 2 3 6 2 2 5 3 3 2 0 0 0 0 0 0.00813139 -1 -2 0.313324 0 -1 0 0 17 9 3 0 3 17 3 0 0 0 0 0 0.664587 2 0.0017056 0 1 0.264013 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 -7.44835e-05 -1 -2 0.564721 0 -1 10 4 6 4 3 12 4 2 4 0 0 0 0 0 0.348537 2 0.000383424 1 0 0.314065 0 -1 0 10 20 4 2 0 12 20 2 0 0 0 0 0 0.00318689 -1 -2 0.64892 0 -1 4 3 6 5 3 6 3 2 5 0 0 0 0 0 0.388773 2 0.160443 1 0 0.721653 0 -1 1 1 18 4 3 7 1 6 4 0 0 0 0 0 -0.00672856 -1 -2 0.165314 0 -1 13 9 2 3 2 13 9 1 3 0 0 0 0 0 0.513983 2 7.26385e-06 0 1 0.314062 0 -1 6 15 7 4 2 6 17 7 2 0 0 0 0 0 0.000555512 -1 -2 0.59937 0 -1 3 17 4 2 2 3 18 4 1 0 0 0 0 0 0.33174 2 -0.0108223 0 1 0.265294 0 -1 9 4 8 10 2 9 9 8 5 0 0 0 0 0 -0.0045834 -1 -2 0.184957 0 -1 9 17 3 2 3 10 17 1 2 0 0 0 0 0 0.531396 2 -0.00302051 1 0 0.40401 0 -1 8 2 4 8 2 8 6 4 4 0 0 0 0 0 0.0778646 -1 -2 0.615819 0 -1 3 4 14 12 2 3 4 7 6 2 10 10 7 6 0.178649 2 0.0264944 0 1 0.451109 0 -1 7 7 6 4 3 9 7 2 4 0 0 0 0 0 0.0369121 -1 -2 0.452822 0 -1 6 7 9 4 2 6 9 9 2 0 0 0 0 0 0.597228 2 0.00578578 1 0 0.253389 0 -1 2 10 3 3 3 2 11 3 1 0 0 0 0 0 0.000938498 -1 -2 0.341041 0 -1 4 6 2 9 3 4 9 2 3 0 0 0 0 0 0.592364 2 -0.0110032 0 1 0.695804 0 -1 9 11 3 3 3 9 12 3 1 0 0 0 0 0 -0.00117376 -1 -2 0.385108 0 -1 3 1 15 2 2 3 2 15 1 0 0 0 0 0 0.540819 2 -0.00365967 0 1 0.200931 0 -1 9 8 2 3 3 9 9 2 1 0 0 0 0 0 -0.00248228 -1 -2 0.629539 0 -1 9 6 2 5 2 10 6 1 5 0 0 0 0 0 0.439504 2 -0.00446061 0 1 0.24053 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 -0.00359696 -1 -2 0.545017 0 -1 4 10 12 10 2 4 15 12 5 0 0 0 0 0 0.378236 2 -0.00362226 0 1 0.30339 0 -1 0 10 4 2 2 0 11 4 1 0 0 0 0 0 0.00120593 -1 -2 0.463378 0 -1 5 15 9 2 2 5 16 9 1 0 0 0 0 0 0.633595 2 0.00431249 1 0 0.659883 0 -1 8 14 6 3 3 8 15 6 1 0 0 0 0 0 -0.00449613 -1 -2 0.66217 0 -1 8 16 4 3 3 8 17 4 1 0 0 0 0 0 0.475525 2 -0.00138607 0 1 0.28012 0 -1 8 9 4 2 2 8 10 4 1 0 0 0 0 0 -0.000515885 -1 -2 0.382949 0 -1 3 3 14 2 2 3 4 14 1 0 0 0 0 0 0.562363 2 7.033e-05 0 1 0.453634 0 -1 11 12 1 2 2 11 13 1 1 0 0 0 0 0 -0.000209765 -1 -2 0.560814 0 -1 4 12 12 1 3 8 12 4 1 0 0 0 0 0 0.426578 2 0.00136423 1 0 0.263709 0 -1 0 2 1 2 2 0 3 1 1 0 0 0 0 0 0.00154837 -1 -2 0.417075 0 -1 7 4 4 6 2 9 4 2 6 0 0 0 0 0 0.593299 2 0.191796 0 1 0.525676 0 -1 0 2 20 14 2 10 2 10 7 2 0 9 10 7 -0.00447769 -1 -2 0.663262 0 -1 14 6 1 3 3 14 7 1 1 0 0 0 0 0 0.489259 2 -0.126492 0 1 0.149978 0 -1 0 4 20 12 2 0 4 10 6 2 10 10 10 6 6.52533e-05 -1 -2 0.423332 0 -1 8 12 1 2 2 8 13 1 1 0 0 0 0 0 0.575604 2 0.00418564 0 1 0.528883 0 -1 9 18 3 2 3 10 18 1 2 0 0 0 0 0 0.000274782 -1 -2 0.452402 0 -1 9 17 6 2 3 11 17 2 2 0 0 0 0 0 0.560413 2 -0.00229068 0 1 0.557827 0 -1 5 6 2 3 3 5 7 2 1 0 0 0 0 0 0.00167445 -1 -2 0.332306 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.555879 2 0.00123498 1 0 0.365395 0 -1 14 15 3 2 2 14 16 3 1 0 0 0 0 0 -0.00871588 -1 -2 0.192453 0 -1 11 3 3 4 3 12 3 1 4 0 0 0 0 0 0.531365 2 0.00466136 1 0 0.202773 0 -1 3 15 3 2 2 3 16 3 1 0 0 0 0 0 -0.0085816 -1 -2 0.763606 0 -1 9 12 2 3 3 9 13 2 1 0 0 0 0 0 0.514083 2 0.0143521 0 1 0.525298 0 -1 9 13 3 7 3 10 13 1 7 0 0 0 0 0 -0.00779487 -1 -2 0.263294 0 -1 12 12 5 3 3 12 13 5 1 0 0 0 0 0 0.532869 2 -0.00341557 0 1 0.241609 0 -1 8 18 3 2 3 9 18 1 2 0 0 0 0 0 -0.00426391 -1 -2 0.393654 0 -1 4 7 12 4 2 4 7 6 2 2 10 9 6 2 0.547874 2 0.00871777 0 1 0.47882 0 -1 6 19 14 1 2 6 19 7 1 0 0 0 0 0 -0.00322326 -1 -2 0.363161 0 -1 16 14 3 2 2 16 15 3 1 0 0 0 0 0 0.528832 2 -0.0421884 0 1 0.693114 0 -1 1 0 6 10 2 1 0 3 5 2 4 5 3 5 0.0198757 -1 -2 0.45201 0 -1 1 0 4 10 2 1 0 2 5 2 3 5 2 5 0.685506 2 -0.0311345 1 0 0.530042 0 -1 15 3 5 6 3 15 5 5 2 0 0 0 0 0 0.00570324 -1 -2 0.560689 0 -1 9 5 2 15 3 9 10 2 5 0 0 0 0 0 0.423062 2 0.00527337 1 0 0.324723 0 -1 0 3 5 6 3 0 5 5 2 0 0 0 0 0 -0.00312311 -1 -2 0.19857 0 -1 6 0 3 2 3 7 0 1 2 0 0 0 0 0 0.534987 2 0.000464538 0 1 0.420751 0 -1 12 8 8 2 2 16 8 4 1 2 12 9 4 1 0.0303559 -1 -2 0.515346 0 -1 5 8 12 1 3 9 8 4 1 0 0 0 0 0 0.31181 2 -0.00429928 0 1 0.327451 0 -1 3 13 3 3 3 3 14 3 1 0 0 0 0 0 0.000195092 -1 -2 0.595308 0 -1 5 13 3 2 2 5 14 3 1 0 0 0 0 0 0.422552 2 -0.00777845 0 1 0.721118 0 -1 9 15 3 3 3 9 16 3 1 0 0 0 0 0 0.0169176 -1 -2 0.493659 0 -1 7 15 7 3 3 7 16 7 1 0 0 0 0 0 0.703028 2 -0.0519486 0 1 0.142553 0 -1 3 14 11 6 3 3 16 11 2 0 0 0 0 0 -0.00547512 -1 -2 0.605933 0 -1 0 19 14 1 2 7 19 7 1 0 0 0 0 0 0.4394 2 1.52108e-05 0 1 0.448885 0 -1 9 17 6 2 3 11 17 2 2 0 0 0 0 0 0.00102356 -1 -2 0.425655 0 -1 12 11 6 2 3 14 11 2 2 0 0 0 0 0 0.579544 2 -0.000104277 0 1 0.424604 0 -1 5 17 6 2 3 7 17 2 2 0 0 0 0 0 0.00878538 -1 -2 0.495801 0 -1 0 1 9 10 3 3 1 3 10 0 0 0 0 0 0.675943 2 0.00340127 0 1 0.542348 0 -1 10 1 3 3 3 11 1 1 3 0 0 0 0 0 0.000585824 -1 -2 0.363654 0 -1 9 5 6 4 2 9 5 3 4 0 0 0 0 0 0.546435 2 -0.00229734 0 1 0.254882 0 -1 7 1 3 3 3 8 1 1 3 0 0 0 0 0 -0.0143302 -1 -2 0.658766 0 -1 0 4 4 11 2 2 4 2 11 0 0 0 0 0 0.45328 2 0.00098566 0 1 0.382277 0 -1 9 5 6 4 2 9 5 3 4 0 0 0 0 0 -0.0466408 -1 -2 0.307732 0 -1 6 0 8 10 2 10 0 4 5 2 6 5 4 5 0.524413 2 -0.119073 0 1 0.103386 0 -1 6 6 5 14 2 6 13 5 7 0 0 0 0 0 0.0193333 -1 -2 0.555475 0 -1 8 5 4 14 2 8 12 4 7 0 0 0 0 0 0.322132 2 0.0314278 0 1 0.468238 0 -1 7 7 6 5 3 9 7 2 5 0 0 0 0 0 0.000200821 -1 -2 0.537307 0 -1 9 3 3 9 3 9 6 3 3 0 0 0 0 0 0.380067 2 -0.00625849 0 1 0.179921 0 -1 8 1 3 3 3 9 1 1 3 0 0 0 0 0 0.0082861 -1 -2 0.509507 0 -1 9 6 2 4 2 10 6 1 4 0 0 0 0 0 0.754461 2 0.00205297 0 1 0.562864 0 -1 10 8 6 9 2 10 8 3 9 0 0 0 0 0 0.00325249 -1 -2 0.480169 0 -1 16 4 3 8 3 17 4 1 8 0 0 0 0 0 0.58021 2 -0.0318849 0 1 0.174275 0 -1 5 9 10 6 2 5 9 5 3 2 10 12 5 3 0.00183793 -1 -2 0.34666 0 -1 5 5 6 4 2 8 5 3 4 0 0 0 0 0 0.510715 2 -0.000485127 1 0 0.532609 0 -1 9 8 4 2 2 9 9 4 1 0 0 0 0 0 -0.00254079 -1 -2 0.634278 0 -1 11 7 2 2 2 11 7 1 2 0 0 0 0 0 0.499269 2 -0.00515591 0 1 0.343343 0 -1 8 12 4 8 2 8 12 2 4 2 10 16 2 4 -0.0449688 -1 -2 0.186814 0 -1 0 1 4 9 3 0 4 4 3 0 0 0 0 0 0.521546 2 0.00589843 1 0 0.622931 0 -1 9 10 3 3 3 9 11 3 1 0 0 0 0 0 0.00327631 -1 -2 0.493577 0 -1 8 11 4 2 2 8 12 4 1 0 0 0 0 0 0.721794 2 -0.000101615 1 0 0.500798 0 -1 7 8 4 2 2 7 9 4 1 0 0 0 0 0 -0.000162903 -1 -2 0.602415 0 -1 7 8 6 1 3 9 8 2 1 0 0 0 0 0 0.232951 2 0.00905414 0 1 0.451042 0 -1 16 0 4 9 2 16 0 2 9 0 0 0 0 0 0.0353985 -1 -2 0.5142 0 -1 16 0 3 6 2 16 3 3 3 0 0 0 0 0 0.286029 2 0.00564694 0 1 0.470493 0 -1 0 0 4 9 2 2 0 2 9 0 0 0 0 0 -0.00248072 -1 -2 0.417985 0 -1 1 0 3 6 2 1 3 3 3 0 0 0 0 0 0.672665 2 -0.00410888 0 1 0.58098 0 -1 9 7 6 9 3 11 7 2 9 0 0 0 0 0 -0.00207145 -1 -2 0.607478 0 -1 10 6 3 6 3 11 6 1 6 0 0 0 0 0 0.452406 2 -0.00289391 0 1 0.338352 0 -1 1 2 18 2 2 1 2 9 1 2 10 3 9 1 0.00134673 -1 -2 0.569691 0 -1 5 8 6 8 3 7 8 2 8 0 0 0 0 0 0.397085 2 -0.0907791 0 1 0.15027 0 -1 9 0 6 16 3 11 0 2 16 0 0 0 0 0 -0.0831718 -1 -2 0.757367 0 -1 14 1 6 18 2 17 1 3 9 2 14 10 3 9 0.493644 2 -0.0014107 0 1 0.339093 0 -1 2 9 2 3 3 2 10 2 1 0 0 0 0 0 0.0556688 -1 -2 0.50251 0 -1 0 1 6 18 2 0 1 3 9 2 3 10 3 9 0.742208 2 0.0577015 0 1 0.519737 0 -1 11 8 4 12 2 11 8 2 12 0 0 0 0 0 -0.425033 -1 -2 0.0973469 0 -1 2 1 18 18 2 2 10 18 9 0 0 0 0 0 0.518574 2 -0.000443807 0 1 0.364935 0 -1 6 3 3 1 3 7 3 1 1 0 0 0 0 0 0.000179248 -1 -2 0.561928 0 -1 4 12 2 2 2 4 13 2 1 0 0 0 0 0 0.37603 2 0.00503825 1 0 0.632845 0 -1 8 13 5 3 3 8 14 5 1 0 0 0 0 0 0.0151912 -1 -2 0.493608 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 0.742652 2 -0.0123004 0 1 0.138935 0 -1 3 12 5 3 3 3 13 5 1 0 0 0 0 0 0.0015168 -1 -2 0.509196 0 -1 6 3 3 4 3 7 3 1 4 0 0 0 0 0 0.348265 2 0.000957545 1 0 0.603632 0 -1 11 10 2 2 2 12 10 1 1 2 11 11 1 1 -0.0189622 -1 -2 0.231917 0 -1 5 8 12 1 3 9 8 4 1 0 0 0 0 0 0.511665 2 -0.0222723 0 1 0.655502 0 -1 8 4 4 8 2 10 4 2 8 0 0 0 0 0 -0.0251452 -1 -2 0.132607 0 -1 6 6 8 5 2 10 6 4 5 0 0 0 0 0 0.467403 2 0.0195339 0 1 0.518203 0 -1 10 4 6 4 3 12 4 2 4 0 0 0 0 0 -0.00112313 -1 -2 0.631824 0 -1 12 7 2 2 2 13 7 1 1 2 12 8 1 1 0.482552 2 -0.00148611 0 1 0.291867 0 -1 3 5 10 8 2 3 9 10 4 0 0 0 0 0 0.000350029 -1 -2 0.562137 0 -1 7 1 2 12 2 7 7 2 6 0 0 0 0 0 0.424921 2 -0.00112313 1 0 0.481375 0 -1 12 7 2 2 2 13 7 1 1 2 12 8 1 1 0.0104097 -1 -2 0.518401 0 -1 11 13 1 6 2 11 16 1 3 0 0 0 0 0 0.205122 2 -0.0878326 0 1 0.117992 0 -1 5 1 6 15 3 7 1 2 15 0 0 0 0 0 0.00165849 -1 -2 0.498781 0 -1 6 7 2 2 2 6 7 1 1 2 7 8 1 1 0.697376 2 -0.00230088 1 0 0.533983 0 -1 17 5 2 2 2 17 6 2 1 0 0 0 0 0 0.0330262 -1 -2 0.503329 0 -1 10 3 4 10 2 12 3 2 5 2 10 8 2 5 0.685191 2 -0.00135851 0 1 0.300282 0 -1 1 5 2 2 2 1 6 2 1 0 0 0 0 0 0.000780675 -1 -2 0.459308 0 -1 7 10 2 2 2 7 10 1 1 2 8 11 1 1 0.644005 2 -0.0180258 1 0 0.531129 0 -1 3 12 14 4 2 10 12 7 2 2 3 14 7 2 0.00123549 -1 -2 0.472911 0 -1 9 15 3 2 2 9 16 3 1 0 0 0 0 0 0.572146 2 -0.00092583 0 1 0.366233 0 -1 1 13 3 3 3 1 14 3 1 0 0 0 0 0 0.00080124 -1 -2 0.536199 0 -1 0 3 1 2 2 0 4 1 1 0 0 0 0 0 0.300863 11 -1 13 30.6721 63 2 0.00249148 0 1 0.342239 0 -1 7 7 6 1 3 9 7 2 1 0 0 0 0 0 -0.0504886 -1 -2 0.770346 0 -1 0 4 16 6 3 0 6 16 2 0 0 0 0 0 0.451639 2 -0.000778384 1 0 0.325634 0 -1 9 3 2 14 2 9 10 2 7 0 0 0 0 0 0.000235729 -1 -2 0.340656 0 -1 12 0 4 3 2 12 0 2 3 0 0 0 0 0 0.589703 2 0.00455751 0 1 0.430658 0 -1 4 18 12 2 3 8 18 4 2 0 0 0 0 0 0.0081242 -1 -2 0.714959 0 -1 4 10 12 4 3 8 10 4 4 0 0 0 0 0 0.434568 2 -0.000446122 0 1 0.329597 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 -0.000289729 -1 -2 0.584562 0 -1 14 1 2 8 2 15 1 1 4 2 14 5 1 4 0.352669 2 7.16048e-06 0 1 0.408195 0 -1 3 4 9 1 3 6 4 3 1 0 0 0 0 0 -0.000384977 -1 -2 0.420311 0 -1 3 3 4 2 2 3 4 4 1 0 0 0 0 0 0.663413 2 0.000194899 0 1 0.394247 0 -1 11 15 2 4 2 11 17 2 2 0 0 0 0 0 -0.0170838 -1 -2 0.229407 0 -1 14 13 2 6 3 14 15 2 2 0 0 0 0 0 0.523896 2 0.000835137 0 1 0.302603 0 -1 6 6 1 6 2 6 9 1 3 0 0 0 0 0 0.000754996 -1 -2 0.60322 0 -1 6 10 8 8 2 6 14 8 4 0 0 0 0 0 0.341246 2 0.00802167 1 0 0.730624 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 -0.0389305 -1 -2 0.359933 0 -1 10 11 4 8 2 10 15 4 4 0 0 0 0 0 0.523438 2 -7.03488e-05 1 0 0.349376 0 -1 5 11 6 1 3 7 11 2 1 0 0 0 0 0 -0.00853506 -1 -2 0.274611 0 -1 5 4 6 10 2 8 4 3 10 0 0 0 0 0 0.562659 2 0.0108545 0 1 0.528223 0 -1 14 2 6 3 3 14 3 6 1 0 0 0 0 0 0.000453295 -1 -2 0.452205 0 -1 9 12 3 2 2 9 13 3 1 0 0 0 0 0 0.60543 2 0.000181172 0 1 0.330686 0 -1 8 1 4 6 3 8 3 4 2 0 0 0 0 0 0.000466416 -1 -2 0.1455 0 -1 3 5 13 8 2 3 9 13 4 0 0 0 0 0 0.538493 2 -0.00848548 1 0 0.481416 0 -1 12 5 5 3 3 12 6 5 1 0 0 0 0 0 -0.0189343 -1 -2 0.356374 0 -1 5 14 15 6 3 5 16 15 2 0 0 0 0 0 0.540515 2 0.00498145 1 0 0.695774 0 -1 3 5 5 3 3 3 6 5 1 0 0 0 0 0 0.00342868 -1 -2 0.505089 0 -1 9 14 2 6 2 9 14 1 3 2 10 17 1 3 0.231699 2 0.000442038 1 0 0.601858 0 -1 9 12 3 2 2 9 13 3 1 0 0 0 0 0 0.000238226 -1 -2 0.475508 0 -1 9 13 3 2 2 9 14 3 1 0 0 0 0 0 0.558524 2 -0.00642616 0 1 0.228247 0 -1 0 2 6 3 3 0 3 6 1 0 0 0 0 0 0.00996378 -1 -2 0.404059 0 -1 0 1 9 11 3 3 1 3 11 0 0 0 0 0 0.565017 2 0.0136541 0 1 0.526774 0 -1 8 13 4 6 2 10 13 2 3 2 8 16 2 3 -0.00998929 -1 -2 0.679405 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.479703 2 0.0365586 1 0 0.0884257 0 -1 3 12 14 4 2 3 12 7 2 2 10 14 7 2 4.89994e-05 -1 -2 0.402079 0 -1 7 14 1 4 2 7 16 1 2 0 0 0 0 0 0.545733 2 0.0136541 0 1 0.526761 0 -1 8 13 4 6 2 10 13 2 3 2 8 16 2 3 0.00188028 -1 -2 0.480605 0 -1 10 14 1 3 3 10 15 1 1 0 0 0 0 0 0.639436 2 -0.0136541 0 1 0.172481 0 -1 8 13 4 6 2 8 13 2 3 2 10 16 2 3 0.00127787 -1 -2 0.447982 0 -1 9 14 1 3 3 9 15 1 1 0 0 0 0 0 0.631001 2 0.000988434 1 0 0.594817 0 -1 10 15 2 3 3 10 16 2 1 0 0 0 0 0 1.45115e-05 -1 -2 0.485417 0 -1 11 16 1 2 2 11 17 1 1 0 0 0 0 0 0.530936 2 -0.000227754 0 1 0.318363 0 -1 9 0 2 2 2 9 1 2 1 0 0 0 0 0 -0.0147537 -1 -2 0.308498 0 -1 0 1 5 8 2 0 5 5 4 0 0 0 0 0 0.535203 2 -0.00341483 0 1 0.611533 0 -1 10 14 2 3 3 10 15 2 1 0 0 0 0 0 0.00758067 -1 -2 0.495165 0 -1 10 13 2 3 3 10 14 2 1 0 0 0 0 0 0.706133 2 -0.00577347 1 0 0.375422 0 -1 0 3 16 6 2 0 6 16 3 0 0 0 0 0 7.40337e-05 -1 -2 0.411552 0 -1 4 1 2 2 2 5 1 1 2 0 0 0 0 0 0.588944 2 -0.00822781 0 1 0.0956106 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 0.00533809 -1 -2 0.530051 0 -1 10 8 2 12 3 10 12 2 4 0 0 0 0 0 0.39619 2 -0.00270491 0 1 0.648187 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 0.00773413 -1 -2 0.511044 0 -1 5 0 6 8 3 7 0 2 8 0 0 0 0 0 0.312152 2 0.0108866 0 1 0.480143 0 -1 9 7 3 6 3 10 7 1 6 0 0 0 0 0 0.0110387 -1 -2 0.542971 0 -1 8 12 10 8 2 8 16 10 4 0 0 0 0 0 0.416236 2 -0.0100542 0 1 0.732934 0 -1 8 7 3 6 3 9 7 1 6 0 0 0 0 0 0.00770729 -1 -2 0.535687 0 -1 4 7 12 2 2 10 7 6 2 0 0 0 0 0 0.345555 2 -0.000582781 0 1 0.365502 0 -1 8 6 8 3 2 8 6 4 3 0 0 0 0 0 -0.00257392 -1 -2 0.377676 0 -1 16 15 3 3 3 16 16 3 1 0 0 0 0 0 0.539177 2 -0.00701678 0 1 0.40393 0 -1 4 6 12 3 2 10 6 6 3 0 0 0 0 0 -0.00177273 -1 -2 0.695044 0 -1 7 8 3 5 3 8 8 1 5 0 0 0 0 0 0.498112 2 -0.0163183 1 0 0.529673 0 -1 0 10 20 2 2 10 10 10 1 2 0 11 10 1 -0.011663 -1 -2 0.584264 0 -1 11 16 9 4 3 14 16 3 4 0 0 0 0 0 0.47895 2 0.00258815 1 0 0.609218 0 -1 0 5 3 4 3 1 5 1 4 0 0 0 0 0 -0.0037329 -1 -2 0.672174 0 -1 8 15 4 2 2 8 15 2 1 2 10 16 2 1 0.406689 2 -0.00143559 0 1 0.358509 0 -1 1 8 19 3 3 1 9 19 1 0 0 0 0 0 0.00183409 -1 -2 0.537116 0 -1 15 16 3 3 3 15 17 3 1 0 0 0 0 0 0.403351 2 0.122803 1 0 0.154757 0 -1 0 4 20 10 2 0 4 10 5 2 10 9 10 5 0.0502287 -1 -2 0.543384 0 -1 2 14 7 6 3 2 16 7 2 0 0 0 0 0 0.0842927 2 -0.021437 1 0 0.486005 0 -1 8 6 6 6 3 10 6 2 6 0 0 0 0 0 -0.0310096 -1 -2 0.183301 0 -1 16 4 4 6 3 16 6 4 2 0 0 0 0 0 0.520755 2 -0.0129737 0 1 0.704824 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.0015818 -1 -2 0.417059 0 -1 7 13 4 3 3 7 14 4 1 0 0 0 0 0 0.586516 2 -0.00978062 1 0 0.530792 0 -1 13 13 6 2 2 13 14 6 1 0 0 0 0 0 0.00117357 -1 -2 0.552245 0 -1 14 12 2 3 3 14 13 2 1 0 0 0 0 0 0.350717 2 0.00146516 1 0 0.304265 0 -1 1 13 6 2 2 1 14 6 1 0 0 0 0 0 0.00235321 -1 -2 0.533932 0 -1 4 12 2 3 3 4 13 2 1 0 0 0 0 0 0.280624 2 -0.00618097 0 1 0.641013 0 -1 17 4 3 5 3 18 4 1 5 0 0 0 0 0 0.000656886 -1 -2 0.562087 0 -1 5 5 14 8 2 12 5 7 4 2 5 9 7 4 0.439032 2 0.026228 1 0 0.644556 0 -1 6 8 6 5 3 8 8 2 5 0 0 0 0 0 -0.0179581 -1 -2 0.200271 0 -1 0 4 4 6 3 0 6 4 2 0 0 0 0 0 0.462467 2 -0.00764687 1 0 0.52632 0 -1 9 1 3 6 3 10 1 1 6 0 0 0 0 0 -0.00274828 -1 -2 0.587398 0 -1 10 4 6 3 3 10 5 6 1 0 0 0 0 0 0.48366 2 0.0138519 1 0 0.156613 0 -1 8 1 3 6 3 9 1 1 6 0 0 0 0 0 0.00263692 -1 -2 0.427018 0 -1 4 4 6 3 3 4 5 6 1 0 0 0 0 0 0.580666 2 -0.00315136 0 1 0.621587 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 -1.47885e-05 -1 -2 0.557664 0 -1 12 11 4 2 2 12 12 4 1 0 0 0 0 0 0.4122 2 -0.073677 0 1 0.153671 0 -1 0 2 20 6 2 0 2 10 3 2 10 5 10 3 -0.00309128 -1 -2 0.634427 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.450741 2 0.0079241 0 1 0.545798 0 -1 2 10 16 4 2 10 10 8 2 2 2 12 8 2 0.0085778 -1 -2 0.540166 0 -1 3 10 16 6 2 11 10 8 3 2 3 13 8 3 0.38908 2 0.00554032 1 0 0.355561 0 -1 1 10 16 6 2 1 10 8 3 2 9 13 8 3 -0.000118865 -1 -2 0.583675 0 -1 4 7 2 4 2 5 7 1 4 0 0 0 0 0 0.427432 2 -0.0184084 0 1 0.586044 0 -1 11 16 9 4 3 14 16 3 4 0 0 0 0 0 -0.00234906 -1 -2 0.449896 0 -1 3 16 14 4 2 10 16 7 2 2 3 18 7 2 0.54982 2 -0.00761574 1 0 0.410099 0 -1 0 16 9 4 3 3 16 3 4 0 0 0 0 0 -0.0033191 -1 -2 0.670138 0 -1 1 14 6 6 2 1 14 3 3 2 4 17 3 3 0.4353 2 -0.00094643 1 0 0.539118 0 -1 9 0 2 1 2 9 0 1 1 0 0 0 0 0 0.00878586 -1 -2 0.550405 0 -1 6 7 8 10 2 10 7 4 5 2 6 12 4 5 0.399094 2 0.000163955 1 0 0.359293 0 -1 2 15 1 2 2 2 16 1 1 0 0 0 0 0 -0.00235089 -1 -2 0.403417 0 -1 0 14 7 6 3 0 16 7 2 0 0 0 0 0 0.580608 2 7.545e-05 1 0 0.541238 0 -1 7 8 6 2 2 7 9 6 1 0 0 0 0 0 0.0270185 -1 -2 0.494492 0 -1 9 2 2 15 3 9 7 2 5 0 0 0 0 0 0.558944 2 0.000845612 1 0 0.580922 0 -1 5 6 2 2 2 5 7 2 1 0 0 0 0 0 -0.00116871 -1 -2 0.474696 0 -1 6 6 8 3 3 6 7 8 1 0 0 0 0 0 0.28459 2 0.0228975 1 0 0.241441 0 -1 12 13 5 6 3 12 15 5 2 0 0 0 0 0 0.708793 -1 -2 0.519576 0 -1 0 0 20 18 2 0 9 20 9 0 0 0 0 0 0.103009 2 0.0374838 1 0 0.181464 0 -1 5 1 6 6 3 7 1 2 6 0 0 0 0 0 0.00128275 -1 -2 0.424607 0 -1 5 1 4 9 2 7 1 2 9 0 0 0 0 0 0.570797 2 -0.00517183 0 1 0.614332 0 -1 1 19 18 1 3 7 19 6 1 0 0 0 0 0 0.00275459 -1 -2 0.520567 0 -1 14 16 5 2 2 14 17 5 1 0 0 0 0 0 0.422044 2 -0.00360729 0 1 0.318259 0 -1 0 5 15 10 2 0 10 15 5 0 0 0 0 0 -0.000252587 -1 -2 0.571047 0 -1 7 15 4 2 2 7 15 2 1 2 9 16 2 1 0.422609 2 -0.00705147 1 0 0.516283 0 -1 14 11 2 2 2 14 12 2 1 0 0 0 0 0 -0.00543238 -1 -2 0.266629 0 -1 9 8 3 3 3 9 9 3 1 0 0 0 0 0 0.521468 2 -1.46529e-05 1 0 0.398176 0 -1 4 11 2 2 2 4 12 2 1 0 0 0 0 0 -0.00185569 -1 -2 0.332276 0 -1 8 8 3 3 3 8 9 3 1 0 0 0 0 0 0.570583 2 0.00476095 1 0 0.663656 0 -1 9 10 2 3 3 9 11 2 1 0 0 0 0 0 0.00156763 -1 -2 0.550557 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 0.442066 2 0.00542399 1 0 0.595994 0 -1 1 9 4 10 2 1 9 2 5 2 3 14 2 5 -0.00646924 -1 -2 0.536959 0 -1 0 12 6 8 3 2 12 2 8 0 0 0 0 0 0.374434 2 -0.000780385 0 1 0.41036 0 -1 9 1 4 2 2 11 1 2 1 2 9 2 2 1 0.0450865 -1 -2 0.517751 0 -1 12 13 7 6 3 12 15 7 2 0 0 0 0 0 0.18781 2 -0.00514054 0 1 0.235289 0 -1 7 0 2 3 3 7 1 2 1 0 0 0 0 0 -0.0212361 -1 -2 0.170875 0 -1 7 14 6 3 3 9 14 2 3 0 0 0 0 0 0.542497 2 -0.00237633 0 1 0.583653 0 -1 9 6 6 4 3 11 6 2 4 0 0 0 0 0 0.0541226 -1 -2 0.511743 0 -1 8 10 8 3 2 8 10 4 3 0 0 0 0 0 0.186593 2 -0.00053493 0 1 0.510869 0 -1 6 10 4 3 2 8 10 2 3 0 0 0 0 0 -0.00058454 -1 -2 0.477549 0 -1 6 8 3 5 3 7 8 1 5 0 0 0 0 0 0.243985 12 -1 14 34.6771 71 2 0.00300319 0 1 0.334965 0 -1 0 4 8 1 2 4 4 4 1 0 0 0 0 0 0.000691612 -1 -2 0.451837 0 -1 8 2 2 6 2 8 2 1 3 2 9 5 1 3 0.728935 2 0.0112128 0 1 0.29508 0 -1 0 7 20 6 3 0 9 20 2 0 0 0 0 0 -0.000761082 -1 -2 0.566905 0 -1 12 10 3 6 2 12 13 3 3 0 0 0 0 0 0.283085 2 0.000119846 0 1 0.409058 0 -1 8 15 1 4 2 8 17 1 2 0 0 0 0 0 -0.000197253 -1 -2 0.695149 0 -1 5 16 2 4 2 5 18 2 2 0 0 0 0 0 0.463787 2 -0.00551804 1 0 0.316768 0 -1 6 2 8 12 3 6 6 8 4 0 0 0 0 0 0.00121482 -1 -2 0.331671 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 0.53964 2 -0.00424974 0 1 0.260057 0 -1 7 0 6 1 3 9 0 2 1 0 0 0 0 0 -0.00949157 -1 -2 0.748429 0 -1 8 11 3 3 3 8 12 3 1 0 0 0 0 0 0.507319 2 0.000653786 1 0 0.395201 0 -1 12 11 3 6 2 12 14 3 3 0 0 0 0 0 -0.000497411 -1 -2 0.588027 0 -1 11 2 6 10 2 14 2 3 5 2 11 7 3 5 0.355212 2 -0.0430792 0 1 0.243488 0 -1 5 7 10 12 2 5 7 5 6 2 10 13 5 6 -0.000519991 -1 -2 0.319556 0 -1 4 4 2 10 2 4 9 2 5 0 0 0 0 0 0.558545 2 -0.00454516 1 0 0.484529 0 -1 9 7 2 3 2 9 7 1 3 0 0 0 0 0 -0.00796104 -1 -2 0.380118 0 -1 11 9 6 2 2 11 9 3 2 0 0 0 0 0 0.535851 2 -0.000319193 1 0 0.435633 0 -1 4 7 2 2 2 5 7 1 2 0 0 0 0 0 -0.0192239 -1 -2 0.261307 0 -1 0 2 4 6 3 0 4 4 2 0 0 0 0 0 0.61555 2 -0.0013077 0 1 0.594206 0 -1 10 7 3 4 3 11 7 1 4 0 0 0 0 0 0.019825 -1 -2 0.494543 0 -1 9 7 3 5 3 10 7 1 5 0 0 0 0 0 0.738486 2 -0.00220133 0 1 0.221448 0 -1 9 1 1 3 3 9 2 1 1 0 0 0 0 0 -0.00785967 -1 -2 0.360098 0 -1 0 6 16 6 2 0 6 8 3 2 8 9 8 3 0.529855 2 0.00141422 1 0 0.577657 0 -1 10 15 3 3 3 10 16 3 1 0 0 0 0 0 -0.0112328 -1 -2 0.693446 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 0.482721 2 0.00297463 1 0 0.321668 0 -1 3 2 6 10 2 3 2 3 5 2 6 7 3 5 0.000532838 -1 -2 0.39625 0 -1 3 0 14 2 2 3 1 14 1 0 0 0 0 0 0.568036 2 0.0101053 1 0 0.756742 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 -0.0116537 -1 -2 0.652356 0 -1 10 15 3 3 3 10 16 3 1 0 0 0 0 0 0.502705 2 -0.007061 0 1 0.253877 0 -1 9 13 2 6 2 9 16 2 3 0 0 0 0 0 0.00223431 -1 -2 0.438728 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.617763 2 -0.0298023 1 0 0.520114 0 -1 12 11 3 6 2 12 14 3 3 0 0 0 0 0 0.00116118 -1 -2 0.464791 0 -1 8 12 5 2 2 8 13 5 1 0 0 0 0 0 0.618425 2 0.000948244 1 0 0.304099 0 -1 5 11 3 6 2 5 14 3 3 0 0 0 0 0 0.000412846 -1 -2 0.451881 0 -1 8 12 3 2 2 8 13 3 1 0 0 0 0 0 0.624578 2 -0.0312035 0 1 0.278894 0 -1 11 13 7 6 3 11 15 7 2 0 0 0 0 0 0.00276529 -1 -2 0.46985 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.650245 2 0.0256448 1 0 0.180517 0 -1 3 13 14 4 2 3 13 7 2 2 10 15 7 2 -0.00753315 -1 -2 0.320807 0 -1 8 14 4 6 2 8 14 2 3 2 10 17 2 3 0.552202 2 0.00320471 1 0 0.643693 0 -1 8 15 4 3 3 8 16 4 1 0 0 0 0 0 -0.000242825 -1 -2 0.567671 0 -1 7 16 6 2 3 9 16 2 2 0 0 0 0 0 0.45091 2 -0.000619793 0 1 0.312215 0 -1 7 7 6 2 2 7 8 6 1 0 0 0 0 0 -0.00080101 -1 -2 0.296519 0 -1 3 9 13 3 3 3 10 13 1 0 0 0 0 0 0.523049 2 -0.000918168 1 0 0.546471 0 -1 9 8 3 4 2 9 10 3 2 0 0 0 0 0 0.00122395 -1 -2 0.46185 0 -1 8 10 4 3 3 8 11 4 1 0 0 0 0 0 0.567955 2 -0.000687437 0 1 0.543088 0 -1 7 7 3 4 3 8 7 1 4 0 0 0 0 0 -0.00182525 -1 -2 0.543362 0 -1 8 7 3 5 3 9 7 1 5 0 0 0 0 0 0.338522 2 -0.00745708 1 0 0.526559 0 -1 12 3 3 4 3 13 3 1 4 0 0 0 0 0 0.00537757 -1 -2 0.485722 0 -1 9 7 2 3 2 9 7 1 3 0 0 0 0 0 0.681512 2 0.00376023 1 0 0.283216 0 -1 5 3 3 4 3 6 3 1 4 0 0 0 0 0 0.000877522 -1 -2 0.396683 0 -1 3 7 12 1 3 7 7 4 1 0 0 0 0 0 0.551248 2 0.00550845 1 0 0.678462 0 -1 12 5 3 3 3 12 6 3 1 0 0 0 0 0 -0.00075949 -1 -2 0.39065 0 -1 11 2 6 2 2 11 3 6 1 0 0 0 0 0 0.54572 2 0.00163527 1 0 0.36402 0 -1 3 2 14 2 2 3 2 7 1 2 10 3 7 1 -0.000127508 -1 -2 0.582972 0 -1 6 1 7 14 2 6 8 7 7 0 0 0 0 0 0.419498 2 0.0220676 0 1 0.46067 0 -1 8 0 12 5 2 8 0 6 5 0 0 0 0 0 -0.0192038 -1 -2 0.326148 0 -1 1 9 18 1 3 7 9 6 1 0 0 0 0 0 0.523608 2 -0.0129981 0 1 0.702211 0 -1 0 0 10 5 2 5 0 5 5 0 0 0 0 0 -0.00313327 -1 -2 0.287047 0 -1 2 5 8 15 3 2 10 8 5 0 0 0 0 0 0.507648 2 -0.00529376 1 0 0.470952 0 -1 12 5 3 3 3 12 6 3 1 0 0 0 0 0 0.00218571 -1 -2 0.470829 0 -1 13 4 2 3 3 13 5 2 1 0 0 0 0 0 0.616984 2 -0.00457507 0 1 0.311425 0 -1 2 15 4 3 3 2 16 4 1 0 0 0 0 0 -0.0451521 -1 -2 0.185144 0 -1 5 6 10 3 2 10 6 5 3 0 0 0 0 0 0.550481 2 -0.00277836 1 0 0.493735 0 -1 11 6 2 2 2 12 6 1 1 2 11 7 1 1 -0.00257525 -1 -2 0.615295 0 -1 12 4 4 3 3 12 5 4 1 0 0 0 0 0 0.47355 2 0.00116141 1 0 0.651057 0 -1 7 6 2 2 2 7 6 1 1 2 8 7 1 1 0.00233502 -1 -2 0.408834 0 -1 4 4 4 3 3 4 5 4 1 0 0 0 0 0 0.568415 2 0.00384993 1 0 0.302583 0 -1 11 4 3 3 3 12 4 1 3 0 0 0 0 0 0.00245296 -1 -2 0.52325 0 -1 9 3 2 1 2 9 3 1 1 0 0 0 0 0 0.201762 2 0.00367314 1 0 0.642843 0 -1 4 5 5 3 3 4 6 5 1 0 0 0 0 0 0.00219371 -1 -2 0.432887 0 -1 4 6 4 3 3 4 7 4 1 0 0 0 0 0 0.642051 2 -0.00646669 1 0 0.525407 0 -1 11 4 3 3 3 12 4 1 3 0 0 0 0 0 -0.00571863 -1 -2 0.249098 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 0.528762 2 0.000999419 1 0 0.33298 0 -1 6 4 3 3 3 7 4 1 3 0 0 0 0 0 -0.000782765 -1 -2 0.359834 0 -1 4 14 1 3 3 4 15 1 1 0 0 0 0 0 0.549834 2 0.00432312 0 1 0.481871 0 -1 9 7 2 3 2 9 7 1 3 0 0 0 0 0 0.00408383 -1 -2 0.526633 0 -1 17 0 3 2 2 17 1 3 1 0 0 0 0 0 0.310579 2 0.000305159 1 0 0.399529 0 -1 8 10 2 9 3 8 13 2 3 0 0 0 0 0 0.00126403 -1 -2 0.322844 0 -1 0 8 18 2 2 0 9 18 1 0 0 0 0 0 0.581922 2 -0.0101527 0 1 0.802607 0 -1 9 15 2 3 3 9 16 2 1 0 0 0 0 0 -0.00268637 -1 -2 0.387562 0 -1 8 7 4 3 3 8 8 4 1 0 0 0 0 0 0.546657 2 -0.00905156 1 0 0.437206 0 -1 1 14 6 6 2 1 14 3 3 2 4 17 3 3 -0.00632042 -1 -2 0.112655 0 -1 0 18 6 2 2 0 19 6 1 0 0 0 0 0 0.639542 2 0.00261173 0 1 0.542399 0 -1 12 9 4 3 2 12 9 2 3 0 0 0 0 0 0.014339 -1 -2 0.497927 0 -1 9 8 3 8 3 10 8 1 8 0 0 0 0 0 0.604224 2 0.00284528 1 0 0.349109 0 -1 4 9 4 3 2 6 9 2 3 0 0 0 0 0 1.47833e-05 -1 -2 0.419507 0 -1 4 18 6 1 3 6 18 2 1 0 0 0 0 0 0.577597 2 0.00818146 0 1 0.488599 0 -1 9 7 3 2 3 10 7 1 2 0 0 0 0 0 0.0066322 -1 -2 0.544447 0 -1 6 7 8 12 2 10 7 4 6 2 6 13 4 6 0.4421 2 -0.00224835 0 1 0.669979 0 -1 8 7 3 2 3 9 7 1 2 0 0 0 0 0 0.0123746 -1 -2 0.447861 0 -1 8 7 3 6 3 9 7 1 6 0 0 0 0 0 0.656489 2 -0.00665167 1 0 0.551188 0 -1 3 16 14 4 2 10 16 7 2 2 3 18 7 2 -0.00857506 -1 -2 0.401745 0 -1 1 14 18 4 2 10 14 9 2 2 1 16 9 2 0.540554 2 0.00650784 1 0 0.229439 0 -1 8 7 3 3 3 8 8 3 1 0 0 0 0 0 0.0286752 -1 -2 0.51779 0 -1 0 4 20 12 2 0 4 10 6 2 10 10 10 6 0.356776 2 0.00706739 0 1 0.55647 0 -1 5 5 10 12 2 10 5 5 6 2 5 11 5 6 0.00123678 -1 -2 0.36277 0 -1 10 2 4 7 2 10 2 2 7 0 0 0 0 0 0.557241 2 0.00748187 1 0 0.678491 0 -1 8 11 4 3 3 8 12 4 1 0 0 0 0 0 0.00471098 -1 -2 0.412125 0 -1 8 12 3 3 3 8 13 3 1 0 0 0 0 0 0.607224 2 -0.00694058 1 0 0.545977 0 -1 13 13 5 6 3 13 15 5 2 0 0 0 0 0 0.0333021 -1 -2 0.527671 0 -1 7 0 6 6 3 9 0 2 6 0 0 0 0 0 0.237492 2 0.0361046 1 0 0.0724928 0 -1 2 13 5 6 3 2 15 5 2 0 0 0 0 0 0.0196746 -1 -2 0.462635 0 -1 0 4 2 12 2 0 4 1 6 2 1 10 1 6 0.820896 2 0.00347662 0 1 0.520873 0 -1 9 19 3 1 3 10 19 1 1 0 0 0 0 0 0.00139874 -1 -2 0.548441 0 -1 18 0 2 6 3 18 2 2 2 0 0 0 0 0 0.423003 2 0.00409742 1 0 0.278055 0 -1 0 3 1 6 3 0 5 1 2 0 0 0 0 0 0.00269738 -1 -2 0.540383 0 -1 0 0 3 6 3 0 2 3 2 0 0 0 0 0 0.379099 2 -0.00565917 1 0 0.479834 0 -1 17 2 3 7 3 18 2 1 7 0 0 0 0 0 0.00039461 -1 -2 0.376695 0 -1 10 3 4 7 2 10 3 2 7 0 0 0 0 0 0.542923 2 0.00217506 1 0 0.620716 0 -1 0 2 3 7 3 1 2 1 7 0 0 0 0 0 0.00146144 -1 -2 0.335795 0 -1 6 2 4 8 2 8 2 2 8 0 0 0 0 0 0.514263 2 -0.000530066 1 0 0.534464 0 -1 13 0 1 4 2 13 2 1 2 0 0 0 0 0 0.148693 -1 -2 0.515961 0 -1 5 1 12 5 3 9 1 4 5 0 0 0 0 0 0.256182 2 -5.88165e-05 1 0 0.512309 0 -1 6 0 1 4 2 6 2 1 2 0 0 0 0 0 -0.00162754 -1 -2 0.601765 0 -1 3 1 12 5 3 7 1 4 5 0 0 0 0 0 0.310937 2 -0.0128818 0 1 0.271229 0 -1 9 12 3 8 3 10 12 1 8 0 0 0 0 0 0.000949829 -1 -2 0.544244 0 -1 7 13 6 1 3 9 13 2 1 0 0 0 0 0 0.402889 2 -0.012316 1 0 0.473607 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.00902866 -1 -2 0.745143 0 -1 5 16 7 3 3 5 17 7 1 0 0 0 0 0 0.348799 2 -0.0868761 0 1 0.229033 0 -1 0 12 20 6 3 0 14 20 2 0 0 0 0 0 -1.51076e-05 -1 -2 0.551789 0 -1 4 18 14 2 2 4 19 14 1 0 0 0 0 0 0.439315 2 -0.0174577 0 1 0.0901679 0 -1 8 12 3 8 3 9 12 1 8 0 0 0 0 0 -0.00252195 -1 -2 0.623354 0 -1 7 13 3 3 3 7 14 3 1 0 0 0 0 0 0.478946 2 0.00106565 0 1 0.54897 0 -1 5 5 12 10 2 11 5 6 5 2 5 10 6 5 -0.00425403 -1 -2 0.557981 0 -1 8 1 5 10 2 8 6 5 5 0 0 0 0 0 0.437588 2 -0.00903491 0 1 0.357916 0 -1 5 4 9 12 2 5 10 9 6 0 0 0 0 0 -0.0015231 -1 -2 0.561366 0 -1 7 13 6 6 3 7 15 6 2 0 0 0 0 0 0.393904 2 0.00284412 1 0 0.390155 0 -1 8 4 5 16 2 8 12 5 8 0 0 0 0 0 -0.00328244 -1 -2 0.452862 0 -1 8 12 4 6 2 8 15 4 3 0 0 0 0 0 0.544134 2 3.21617e-05 1 0 0.580311 0 -1 7 13 2 2 2 7 13 1 1 2 8 14 1 1 3.01184e-05 -1 -2 0.333685 0 -1 7 12 2 2 2 7 12 1 1 2 8 13 1 1 0.550486 2 -0.00561501 0 1 0.612479 0 -1 18 0 2 14 2 18 0 1 14 0 0 0 0 0 -0.0173892 -1 -2 0.0872716 0 -1 12 11 7 2 2 12 12 7 1 0 0 0 0 0 0.520459 2 -4.43611e-05 0 1 0.393533 0 -1 1 18 1 2 2 1 19 1 1 0 0 0 0 0 0.000103549 -1 -2 0.591885 0 -1 2 18 1 2 2 2 19 1 1 0 0 0 0 0 0.411961 2 0.00159396 0 1 0.483962 0 -1 9 7 2 1 2 9 7 1 1 0 0 0 0 0 0.00254408 -1 -2 0.478736 0 -1 9 6 2 3 2 9 6 1 3 0 0 0 0 0 0.636066 2 1.50832e-05 0 1 0.423112 0 -1 3 1 2 2 2 4 1 1 2 0 0 0 0 0 -9.92822e-05 -1 -2 0.427459 0 -1 3 0 3 2 2 3 1 3 1 0 0 0 0 0 0.609405 2 0.000553717 1 0 0.427199 0 -1 12 10 3 4 2 12 12 3 2 0 0 0 0 0 0.00191868 -1 -2 0.449711 0 -1 7 7 8 2 2 7 8 8 1 0 0 0 0 0 0.554912 2 -0.000507642 1 0 0.54772 0 -1 8 8 3 4 2 8 10 3 2 0 0 0 0 0 0.00172365 -1 -2 0.288292 0 -1 7 12 6 3 3 7 13 6 1 0 0 0 0 0 0.561513 13 -1 15 36.7265 75 2 0.0130922 0 1 0.333887 0 -1 0 2 10 3 2 5 2 5 3 0 0 0 0 0 0.000414465 -1 -2 0.309935 0 -1 0 1 20 6 3 0 3 20 2 0 0 0 0 0 0.667749 2 0.0218357 0 1 0.436905 0 -1 7 6 6 3 3 9 6 2 3 0 0 0 0 0 0.0483239 -1 -2 0.430172 0 -1 3 7 14 4 2 3 9 14 2 0 0 0 0 0 0.615389 2 0.0016092 0 1 0.338733 0 -1 5 7 3 6 3 5 9 3 2 0 0 0 0 0 0.00134698 -1 -2 0.624871 0 -1 8 8 3 12 3 8 12 3 4 0 0 0 0 0 0.359413 2 0.000177291 0 1 0.386842 0 -1 9 17 6 2 2 12 17 3 1 2 9 18 3 1 0.000367436 -1 -2 0.440935 0 -1 10 17 4 3 3 10 18 4 1 0 0 0 0 0 0.547647 2 -0.00123521 0 1 0.326017 0 -1 4 2 4 2 2 4 3 4 1 0 0 0 0 0 0.00117055 -1 -2 0.411135 0 -1 7 3 6 14 3 9 3 2 14 0 0 0 0 0 0.608816 2 -2.96954e-05 1 0 0.426942 0 -1 15 13 1 6 2 15 16 1 3 0 0 0 0 0 0.000270507 -1 -2 0.430647 0 -1 13 14 2 6 3 13 16 2 2 0 0 0 0 0 0.581051 2 -7.96262e-05 1 0 0.366914 0 -1 4 11 5 6 2 4 14 5 3 0 0 0 0 0 0.000331524 -1 -2 0.461066 0 -1 4 17 4 2 2 6 17 2 2 0 0 0 0 0 0.629059 2 -0.0523058 1 0 0.532869 0 -1 0 6 20 2 2 0 6 10 2 0 0 0 0 0 0.0268805 -1 -2 0.521326 0 -1 6 5 10 12 2 11 5 5 6 2 6 11 5 6 0.323122 2 -0.00024203 1 0 0.356857 0 -1 4 0 2 12 2 4 0 1 6 2 5 6 1 6 -0.00164246 -1 -2 0.344066 0 -1 4 1 6 2 3 6 1 2 2 0 0 0 0 0 0.56256 2 -0.000268303 1 0 0.456117 0 -1 13 7 2 1 2 13 7 1 1 0 0 0 0 0 -0.00226496 -1 -2 0.532135 0 -1 5 5 15 6 3 5 7 15 2 0 0 0 0 0 0.367415 2 0.0156272 1 0 0.202935 0 -1 1 10 18 2 2 1 10 9 1 2 10 11 9 1 0.162113 -1 -2 0.556303 0 -1 1 6 15 7 3 6 6 5 7 0 0 0 0 0 0.261885 2 -0.00373917 0 1 0.606219 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 -0.00208784 -1 -2 0.595076 0 -1 9 14 3 3 3 9 15 3 1 0 0 0 0 0 0.454512 2 0.00233342 1 0 0.643552 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 6.51164e-05 -1 -2 0.352073 0 -1 8 13 3 2 2 8 14 3 1 0 0 0 0 0 0.517978 2 0.00746257 0 1 0.532669 0 -1 15 14 5 3 3 15 15 5 1 0 0 0 0 0 -0.0220327 -1 -2 0.349198 0 -1 0 14 20 1 2 0 14 10 1 0 0 0 0 0 0.542924 2 -0.00830816 0 1 0.208402 0 -1 0 14 6 3 3 0 15 6 1 0 0 0 0 0 -0.000432594 -1 -2 0.396527 0 -1 5 3 4 2 2 5 4 4 1 0 0 0 0 0 0.542545 2 -0.0322092 1 0 0.530641 0 -1 0 6 20 1 2 0 6 10 1 0 0 0 0 0 -0.000904248 -1 -2 0.545039 0 -1 6 3 10 14 2 11 3 5 7 2 6 10 5 7 0.42567 2 0.00227275 1 0 0.596861 0 -1 8 12 4 2 2 8 13 4 1 0 0 0 0 0 0.005982 -1 -2 0.475814 0 -1 6 3 8 6 2 6 3 4 3 2 10 6 4 3 0.315094 2 -0.000588566 1 0 0.484775 0 -1 13 7 2 1 2 13 7 1 1 0 0 0 0 0 -0.000882272 -1 -2 0.542632 0 -1 6 3 10 14 2 11 3 5 7 2 6 10 5 7 0.433834 2 -7.44735e-05 1 0 0.428751 0 -1 5 7 2 1 2 6 7 1 1 0 0 0 0 0 0.00039149 -1 -2 0.634519 0 -1 4 3 10 14 2 4 3 5 7 2 9 10 5 7 0.410185 2 -0.00369396 1 0 0.48491 0 -1 9 7 2 2 2 9 7 1 2 0 0 0 0 0 -0.0112078 -1 -2 0.414634 0 -1 0 3 20 1 2 0 3 10 1 0 0 0 0 0 0.547126 2 -0.0103374 0 1 0.287718 0 -1 2 1 10 3 3 2 2 10 1 0 0 0 0 0 0.00368836 -1 -2 0.51019 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 0.721695 2 -0.00389843 1 0 0.527618 0 -1 9 17 3 2 3 10 17 1 2 0 0 0 0 0 -0.00599867 -1 -2 0.661846 0 -1 9 7 3 6 3 10 7 1 6 0 0 0 0 0 0.484163 2 0.00450437 1 0 0.187416 0 -1 8 17 3 2 3 9 17 1 2 0 0 0 0 0 0.0177995 -1 -2 0.461693 0 -1 8 7 3 6 3 9 7 1 6 0 0 0 0 0 0.708897 2 -0.0184626 0 1 0.300198 0 -1 16 3 4 6 3 16 5 4 2 0 0 0 0 0 1.49313e-05 -1 -2 0.456181 0 -1 15 6 2 12 2 16 6 1 6 2 15 12 1 6 0.561079 2 -0.0860212 0 1 0.23417 0 -1 1 4 18 10 2 1 4 9 5 2 10 9 9 5 -6.08188e-05 -1 -2 0.567229 0 -1 9 4 2 4 2 9 6 2 2 0 0 0 0 0 0.419996 2 0.00126707 1 0 0.620748 0 -1 12 5 3 2 2 12 6 3 1 0 0 0 0 0 0.00136999 -1 -2 0.539496 0 -1 5 12 10 4 2 5 14 10 2 0 0 0 0 0 0.382386 2 0.00331628 1 0 0.706168 0 -1 5 5 3 2 2 5 6 3 1 0 0 0 0 0 -0.0014532 -1 -2 0.306551 0 -1 4 6 12 6 3 8 6 4 6 0 0 0 0 0 0.482737 2 -0.0714921 1 0 0.519312 0 -1 14 4 6 6 3 14 6 6 2 0 0 0 0 0 0.0019858 -1 -2 0.464244 0 -1 16 0 4 6 2 18 0 2 3 2 16 3 2 3 0.580769 2 0.00625165 1 0 0.294981 0 -1 0 4 6 6 3 0 6 6 2 0 0 0 0 0 0.00270055 -1 -2 0.458589 0 -1 0 0 4 6 2 0 0 2 3 2 2 3 2 3 0.602235 2 0.0111304 0 1 0.435784 0 -1 12 0 8 5 2 12 0 4 5 0 0 0 0 0 0.0150928 -1 -2 0.456154 0 -1 16 0 4 17 2 16 0 2 17 0 0 0 0 0 0.611906 2 -0.0279433 0 1 0.653714 0 -1 1 0 18 20 3 7 0 6 20 0 0 0 0 0 4.4037e-05 -1 -2 0.347472 0 -1 6 0 2 5 2 7 0 1 5 0 0 0 0 0 0.533697 2 -0.0122328 0 1 0.373168 0 -1 0 6 20 1 2 0 6 10 1 0 0 0 0 0 -0.000685914 -1 -2 0.571723 0 -1 8 7 6 4 3 10 7 2 4 0 0 0 0 0 0.479338 2 -0.0038993 0 1 0.405644 0 -1 1 1 16 4 2 1 1 8 2 2 9 3 8 2 0.000491139 -1 -2 0.617405 0 -1 7 2 4 2 2 7 2 2 1 2 9 3 2 1 0.447175 2 0.00821177 1 0 0.61797 0 -1 7 4 9 3 3 7 5 9 1 0 0 0 0 0 -0.0455645 -1 -2 0.228549 0 -1 10 4 5 12 2 10 10 5 6 0 0 0 0 0 0.524957 2 -0.00536319 0 1 0.178495 0 -1 3 12 2 3 3 3 13 2 1 0 0 0 0 0 -0.012275 -1 -2 0.726195 0 -1 8 8 3 5 3 9 8 1 5 0 0 0 0 0 0.45504 2 0.0054186 0 1 0.525299 0 -1 13 9 2 3 2 13 9 1 3 0 0 0 0 0 0.00081847 -1 -2 0.544522 0 -1 15 11 2 2 2 15 12 2 1 0 0 0 0 0 0.327222 2 0.00413581 1 0 0.701383 0 -1 5 6 2 3 3 5 7 2 1 0 0 0 0 0 0.00039578 -1 -2 0.496594 0 -1 2 11 6 2 2 2 12 6 1 0 0 0 0 0 0.32956 2 0.00468877 0 1 0.536264 0 -1 15 11 4 3 3 15 12 4 1 0 0 0 0 0 -0.0182554 -1 -2 0.649611 0 -1 16 0 4 17 2 16 0 2 17 0 0 0 0 0 0.475714 2 -0.00627365 0 1 0.234374 0 -1 1 11 4 3 3 1 12 4 1 0 0 0 0 0 0.00243202 -1 -2 0.462012 0 -1 9 11 1 3 3 9 12 1 1 0 0 0 0 0 0.689842 2 -0.0496176 0 1 0.210072 0 -1 10 9 6 7 2 10 9 3 7 0 0 0 0 0 0.00117012 -1 -2 0.462153 0 -1 8 15 4 2 2 8 16 4 1 0 0 0 0 0 0.579714 2 -0.0452373 0 1 0.211826 0 -1 4 9 6 7 2 7 9 3 7 0 0 0 0 0 0.00475634 -1 -2 0.488461 0 -1 9 14 2 3 3 9 15 2 1 0 0 0 0 0 0.68725 2 -0.014836 1 0 0.527511 0 -1 0 2 20 2 2 10 2 10 1 2 0 3 10 1 0.000774366 -1 -2 0.417232 0 -1 6 7 8 2 2 6 8 8 1 0 0 0 0 0 0.549114 2 0.014836 1 0 0.212488 0 -1 0 2 20 2 2 0 2 10 1 2 10 3 10 1 -0.000808925 -1 -2 0.549522 0 -1 3 1 2 10 2 3 1 1 5 2 4 6 1 5 0.42078 2 0.000775177 0 1 0.332194 0 -1 13 4 1 10 2 13 9 1 5 0 0 0 0 0 -0.0067619 -1 -2 0.221296 0 -1 9 8 4 3 3 9 9 4 1 0 0 0 0 0 0.523265 2 -0.0401359 0 1 0.11018 0 -1 2 11 16 4 2 2 11 8 2 2 10 13 8 2 -0.00336515 -1 -2 0.38101 0 -1 5 1 3 5 3 6 1 1 5 0 0 0 0 0 0.561729 2 0.00074713 1 0 0.579506 0 -1 9 10 2 3 3 9 11 2 1 0 0 0 0 0 -0.00427274 -1 -2 0.639227 0 -1 9 11 2 2 2 9 12 2 1 0 0 0 0 0 0.471144 2 0.00362025 1 0 0.340988 0 -1 0 10 20 2 2 0 11 20 1 0 0 0 0 0 0.000473076 -1 -2 0.36593 0 -1 1 7 6 4 2 1 7 3 2 2 4 9 3 2 0.538817 2 0.0330949 1 0 0.717039 0 -1 12 0 8 8 2 16 0 4 4 2 12 4 4 4 -0.0115441 -1 -2 0.638682 0 -1 14 1 6 4 3 16 1 2 4 0 0 0 0 0 0.46813 2 -0.00742345 0 1 0.32637 0 -1 6 3 2 14 2 6 10 2 7 0 0 0 0 0 -0.0042253 -1 -2 0.576782 0 -1 6 1 7 12 2 6 7 7 6 0 0 0 0 0 0.434642 2 0.0181331 0 1 0.469783 0 -1 5 0 15 5 3 10 0 5 5 0 0 0 0 0 0.0070903 -1 -2 0.443739 0 -1 15 0 4 10 2 15 0 2 10 0 0 0 0 0 0.606167 2 -0.0132729 0 1 0.655851 0 -1 1 0 18 3 3 7 0 6 3 0 0 0 0 0 0.000146322 -1 -2 0.337635 0 -1 0 0 17 2 2 0 1 17 1 0 0 0 0 0 0.509166 2 -0.00357902 0 1 0.294788 0 -1 10 0 3 3 3 11 0 1 3 0 0 0 0 0 -0.000469971 -1 -2 0.555698 0 -1 10 0 3 12 3 11 0 1 12 0 0 0 0 0 0.466546 2 -0.0481794 0 1 0.733836 0 -1 1 3 4 16 2 1 3 2 8 2 3 11 2 8 -0.000925814 -1 -2 0.354387 0 -1 7 0 3 3 3 8 0 1 3 0 0 0 0 0 0.528515 2 -0.0147807 0 1 0.194444 0 -1 9 13 2 6 2 9 16 2 3 0 0 0 0 0 -0.100275 -1 -2 0.0990493 0 -1 9 0 6 13 3 11 0 2 13 0 0 0 0 0 0.513985 2 -0.000938481 0 1 0.582711 0 -1 7 7 3 2 3 8 7 1 2 0 0 0 0 0 -0.00288614 -1 -2 0.344143 0 -1 8 2 1 12 3 8 6 1 4 0 0 0 0 0 0.514884 2 -0.0436828 1 0 0.5208 0 -1 4 10 12 6 2 10 10 6 3 2 4 13 6 3 0.00261157 -1 -2 0.48355 0 -1 13 5 2 3 3 13 6 2 1 0 0 0 0 0 0.632222 2 0.0436828 1 0 0.136454 0 -1 4 10 12 6 2 4 10 6 3 2 10 13 6 3 0.00171795 -1 -2 0.453732 0 -1 5 5 2 3 3 5 6 2 1 0 0 0 0 0 0.606675 2 -0.0339649 1 0 0.496837 0 -1 8 6 6 7 3 10 6 2 7 0 0 0 0 0 -0.00109936 -1 -2 0.583168 0 -1 9 6 2 4 2 9 6 1 4 0 0 0 0 0 0.468824 2 0.0543011 1 0 0.756829 0 -1 6 6 6 7 3 8 6 2 7 0 0 0 0 0 0.00109936 -1 -2 0.433015 0 -1 9 6 2 4 2 10 6 1 4 0 0 0 0 0 0.576847 2 -1.49541e-05 1 0 0.444328 0 -1 12 9 2 3 2 12 9 1 3 0 0 0 0 0 0.0314159 -1 -2 0.527447 0 -1 0 6 20 1 2 0 6 10 1 0 0 0 0 0 0.303786 2 0.0108318 1 0 0.358172 0 -1 5 7 10 2 2 10 7 5 2 0 0 0 0 0 0.000865457 -1 -2 0.593758 0 -1 1 16 4 3 3 1 17 4 1 0 0 0 0 0 0.429463 2 0.00227432 1 0 0.595458 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.00393408 -1 -2 0.479222 0 -1 10 3 5 3 3 10 4 5 1 0 0 0 0 0 0.585613 2 0.00814519 1 0 0.357348 0 -1 3 9 14 8 2 3 9 7 4 2 10 13 7 4 -0.00527633 -1 -2 0.402602 0 -1 6 8 8 10 2 6 8 4 5 2 10 13 4 5 0.576474 2 -0.00837879 1 0 0.498133 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.00156219 -1 -2 0.473659 0 -1 10 3 5 3 3 10 4 5 1 0 0 0 0 0 0.558361 2 0.00323187 1 0 0.616744 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.0066804 -1 -2 0.413142 0 -1 5 3 5 3 3 5 4 5 1 0 0 0 0 0 0.62807 2 -0.00333965 0 1 0.344636 0 -1 13 16 2 3 3 13 17 2 1 0 0 0 0 0 -0.209335 -1 -2 0.103866 0 -1 0 5 20 6 3 0 7 20 2 0 0 0 0 0 0.520449 2 0.00638058 1 0 0.21674 0 -1 3 14 3 3 3 3 15 3 1 0 0 0 0 0 -0.00601378 -1 -2 0.67384 0 -1 7 15 5 3 3 7 16 5 1 0 0 0 0 0 0.489665 2 -0.00817561 1 0 0.517792 0 -1 12 9 2 3 2 12 9 1 3 0 0 0 0 0 0.000639518 -1 -2 0.481965 0 -1 15 13 2 6 2 15 13 1 6 0 0 0 0 0 0.546444 2 0.00101278 1 0 0.34236 0 -1 6 9 2 3 2 7 9 1 3 0 0 0 0 0 0.000497846 -1 -2 0.448846 0 -1 3 13 2 6 2 4 13 1 6 0 0 0 0 0 0.591267 2 0.000135965 1 0 0.556886 0 -1 11 4 2 4 2 11 4 1 4 0 0 0 0 0 0.0135717 -1 -2 0.516107 0 -1 13 4 2 5 2 13 4 1 5 0 0 0 0 0 0.1713 2 3.02591e-05 1 0 0.49162 0 -1 7 4 2 4 2 8 4 1 4 0 0 0 0 0 -0.00326258 -1 -2 0.640466 0 -1 5 4 2 5 2 6 4 1 5 0 0 0 0 0 0.285908 2 -0.00019217 1 0 0.545928 0 -1 19 6 1 2 2 19 7 1 1 0 0 0 0 0 0.0219939 -1 -2 0.471571 0 -1 12 7 8 13 2 12 7 4 13 0 0 0 0 0 0.569008 2 0.000789078 1 0 0.327983 0 -1 0 6 1 2 2 0 7 1 1 0 0 0 0 0 0.000508939 -1 -2 0.430201 0 -1 6 15 4 3 3 6 16 4 1 0 0 0 0 0 0.569605 2 0.000116627 1 0 0.538724 0 -1 11 8 2 2 2 11 9 2 1 0 0 0 0 0 0.00806041 -1 -2 0.502142 0 -1 11 7 2 4 2 11 7 1 4 0 0 0 0 0 0.596532 2 0.00095926 1 0 0.347349 0 -1 4 13 2 3 3 4 14 2 1 0 0 0 0 0 -0.0195261 -1 -2 0.647555 0 -1 0 17 18 3 3 6 17 6 3 0 0 0 0 0 0.464378 14 -1 16 38.236 78 2 0.0412424 0 1 0.339332 0 -1 1 0 18 5 3 7 0 6 5 0 0 0 0 0 0.0156267 -1 -2 0.51041 0 -1 5 7 3 4 2 5 9 3 2 0 0 0 0 0 0.777282 2 0.000299472 0 1 0.366467 0 -1 10 6 2 2 2 10 6 1 2 0 0 0 0 0 -0.00100376 -1 -2 0.540565 0 -1 6 4 14 4 2 13 4 7 2 2 6 6 7 2 0.392621 2 0.000681282 0 1 0.425152 0 -1 5 16 6 4 2 5 16 3 2 2 8 18 3 2 0.00013099 -1 -2 0.413514 0 -1 7 15 2 4 2 7 17 2 2 0 0 0 0 0 0.692575 2 0.00316967 1 0 0.345587 0 -1 8 5 5 14 2 8 12 5 7 0 0 0 0 0 -0.00205874 -1 -2 0.223419 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 0.528612 2 -0.00046395 1 0 0.420652 0 -1 7 5 3 7 3 8 5 1 7 0 0 0 0 0 0.00350895 -1 -2 0.650298 0 -1 0 0 3 9 3 0 3 3 3 0 0 0 0 0 0.41176 2 -0.0023976 1 0 0.36733 0 -1 8 6 8 8 2 12 6 4 4 2 8 10 4 4 0.00109013 -1 -2 0.290624 0 -1 4 8 13 2 2 4 9 13 1 0 0 0 0 0 0.544511 2 -0.000165244 0 1 0.423352 0 -1 4 3 6 1 3 6 3 2 1 0 0 0 0 0 -0.000416023 -1 -2 0.388636 0 -1 9 1 2 6 3 9 3 2 2 0 0 0 0 0 0.626917 2 -0.000237399 0 1 0.552445 0 -1 10 5 6 4 3 12 5 2 4 0 0 0 0 0 0.0247398 -1 -2 0.49601 0 -1 9 5 2 12 3 9 9 2 4 0 0 0 0 0 0.537349 2 -0.0153428 0 1 0.684941 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 0.0115405 -1 -2 0.403724 0 -1 8 12 4 3 3 8 13 4 1 0 0 0 0 0 0.678694 2 0.00642306 1 0 0.381468 0 -1 10 3 6 7 3 12 3 2 7 0 0 0 0 0 0.0129778 -1 -2 0.552706 0 -1 3 10 16 6 3 3 12 16 2 0 0 0 0 0 0.374496 2 0.00110634 0 1 0.352093 0 -1 5 5 3 10 2 5 10 3 5 0 0 0 0 0 0.00137437 -1 -2 0.56419 0 -1 6 10 3 6 2 6 13 3 3 0 0 0 0 0 0.307503 2 0.0162338 0 1 0.488883 0 -1 17 2 2 12 2 17 2 1 12 0 0 0 0 0 -0.000815194 -1 -2 0.545632 0 -1 16 6 2 14 2 16 13 2 7 0 0 0 0 0 0.474355 2 -0.0907825 0 1 0.292525 0 -1 3 11 12 9 3 3 14 12 3 0 0 0 0 0 0.0116652 -1 -2 0.468845 0 -1 0 2 4 12 2 2 2 2 12 0 0 0 0 0 0.623035 2 -0.0232864 0 1 0.689584 0 -1 18 0 2 18 2 18 0 1 18 0 0 0 0 0 0.00215593 -1 -2 0.53558 0 -1 16 12 3 2 2 16 13 3 1 0 0 0 0 0 0.342347 2 -0.00431672 0 1 0.593708 0 -1 0 2 2 15 2 1 2 1 15 0 0 0 0 0 0.00156106 -1 -2 0.470866 0 -1 1 10 2 4 2 1 12 2 2 0 0 0 0 0 0.2737 2 0.0140766 0 1 0.528716 0 -1 11 1 2 18 2 11 1 1 18 0 0 0 0 0 0.00710186 -1 -2 0.533619 0 -1 3 2 14 2 2 10 2 7 1 2 3 3 7 1 0.322481 2 -0.00482216 0 1 0.298391 0 -1 7 1 2 18 2 8 1 1 18 0 0 0 0 0 -0.00538529 -1 -2 0.5624 0 -1 6 1 8 12 2 6 7 8 6 0 0 0 0 0 0.429591 2 0.00734833 1 0 0.681396 0 -1 8 14 4 3 3 8 15 4 1 0 0 0 0 0 -0.00357075 -1 -2 0.585797 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.460343 2 0.00233401 1 0 0.274485 0 -1 0 13 5 2 2 0 14 5 1 0 0 0 0 0 0.00474328 -1 -2 0.504753 0 -1 9 0 2 6 2 9 0 1 3 2 10 3 1 3 0.236274 2 0.00650555 0 1 0.524225 0 -1 9 0 2 6 2 10 0 1 3 2 9 3 1 3 0.0125892 -1 -2 0.482369 0 -1 9 7 3 6 3 10 7 1 6 0 0 0 0 0 0.675254 2 -0.00633584 0 1 0.173463 0 -1 9 0 2 6 2 9 0 1 3 2 10 3 1 3 -0.00576397 -1 -2 0.635438 0 -1 8 7 3 6 3 9 7 1 6 0 0 0 0 0 0.458748 2 0.00135997 0 1 0.458038 0 -1 9 6 2 6 2 9 6 1 6 0 0 0 0 0 0.0284043 -1 -2 0.517638 0 -1 9 4 4 3 2 9 4 2 3 0 0 0 0 0 0.120439 2 -0.00929582 0 1 0.233796 0 -1 0 4 4 3 3 0 5 4 1 0 0 0 0 0 -0.00118003 -1 -2 0.390281 0 -1 8 7 4 2 2 8 8 4 1 0 0 0 0 0 0.565293 2 -0.00209481 0 1 0.551203 0 -1 10 6 6 3 3 12 6 2 3 0 0 0 0 0 0.004168 -1 -2 0.545598 0 -1 9 6 3 12 3 9 10 3 4 0 0 0 0 0 0.479895 2 0.00544589 1 0 0.612709 0 -1 5 4 2 3 3 5 5 2 1 0 0 0 0 0 -0.00127665 -1 -2 0.531713 0 -1 5 6 1 3 3 5 7 1 1 0 0 0 0 0 0.385093 2 0.000594043 0 1 0.544644 0 -1 9 17 3 2 3 10 17 1 2 0 0 0 0 0 0.0423096 -1 -2 0.523464 0 -1 0 7 20 2 2 0 8 20 1 0 0 0 0 0 0.221304 2 0.00561897 0 1 0.49162 0 -1 4 3 6 7 3 6 3 2 7 0 0 0 0 0 0.00724012 -1 -2 0.147148 0 -1 5 10 6 10 2 5 10 3 5 2 8 15 3 5 0.485289 2 -0.00456107 0 1 0.277377 0 -1 9 17 3 2 3 10 17 1 2 0 0 0 0 0 4.55062e-05 -1 -2 0.462646 0 -1 9 10 2 2 2 9 11 2 1 0 0 0 0 0 0.576808 2 -0.00619038 0 1 0.164429 0 -1 8 17 3 2 3 9 17 1 2 0 0 0 0 0 0.000811865 -1 -2 0.477859 0 -1 5 6 1 3 3 5 7 1 1 0 0 0 0 0 0.626186 2 0.0137798 0 1 0.525731 0 -1 0 1 20 2 2 10 1 10 1 2 0 2 10 1 0.00112903 -1 -2 0.549805 0 -1 14 2 6 9 3 14 5 6 3 0 0 0 0 0 0.398311 2 -0.000106104 0 1 0.403352 0 -1 5 3 3 2 2 5 4 3 1 0 0 0 0 0 0.000166958 -1 -2 0.414934 0 -1 5 4 4 2 2 7 4 2 2 0 0 0 0 0 0.579534 2 0.00112903 1 0 0.393411 0 -1 14 2 6 9 3 14 5 6 3 0 0 0 0 0 -0.120193 -1 -2 0.0734005 0 -1 0 12 20 6 3 0 14 20 2 0 0 0 0 0 0.520259 2 -0.0152307 0 1 0.374951 0 -1 2 2 16 4 2 2 2 8 2 2 10 4 8 2 0.00357598 -1 -2 0.507815 0 -1 7 12 5 3 3 7 13 5 1 0 0 0 0 0 0.660607 2 0.0134795 0 1 0.454771 0 -1 14 9 6 10 2 14 9 3 10 0 0 0 0 0 -0.0021163 -1 -2 0.331101 0 -1 16 6 3 2 2 16 7 3 1 0 0 0 0 0 0.538426 2 -0.0178777 0 1 0.651325 0 -1 0 9 6 10 2 3 9 3 10 0 0 0 0 0 0.0010932 -1 -2 0.526477 0 -1 0 16 5 2 2 0 17 5 1 0 0 0 0 0 0.345699 2 -0.00305532 0 1 0.626861 0 -1 9 12 2 3 3 9 13 2 1 0 0 0 0 0 0.0036365 -1 -2 0.539921 0 -1 9 7 2 12 3 9 11 2 4 0 0 0 0 0 0.43454 2 9.78965e-05 0 1 0.383561 0 -1 3 2 6 2 3 5 2 2 2 0 0 0 0 0 -0.000327144 -1 -2 0.333767 0 -1 4 1 1 2 2 4 2 1 1 0 0 0 0 0 0.553917 2 0.00043425 1 0 0.578827 0 -1 11 15 1 2 2 11 16 1 1 0 0 0 0 0 0.0140056 -1 -2 0.527508 0 -1 3 1 16 2 2 11 1 8 1 2 3 2 8 1 0.270113 2 -0.000926549 0 1 0.585228 0 -1 3 6 2 2 2 3 6 1 1 2 4 7 1 1 0.00395043 -1 -2 0.472834 0 -1 5 11 10 6 2 5 11 5 3 2 10 14 5 3 0.331392 2 -0.000580869 1 0 0.425881 0 -1 10 11 4 6 2 10 14 4 3 0 0 0 0 0 -0.012018 -1 -2 0.560979 0 -1 14 9 6 11 3 16 9 2 11 0 0 0 0 0 0.489519 2 -0.145215 0 1 0.0438945 0 -1 0 9 6 11 3 2 9 2 11 0 0 0 0 0 -0.0066049 -1 -2 0.422917 0 -1 2 11 16 6 2 2 11 8 3 2 10 14 8 3 0.561629 2 -0.0349098 1 0 0.478813 0 -1 12 0 8 10 2 16 0 4 5 2 12 5 4 5 0.00374784 -1 -2 0.480028 0 -1 14 2 6 4 3 16 2 2 4 0 0 0 0 0 0.580139 2 0.033038 1 0 0.707818 0 -1 0 0 8 10 2 0 0 4 5 2 4 5 4 5 0.00368726 -1 -2 0.444962 0 -1 0 2 6 4 3 2 2 2 4 0 0 0 0 0 0.595773 2 -0.00453119 0 1 0.417705 0 -1 4 9 15 2 3 9 9 5 2 0 0 0 0 0 0.00410585 -1 -2 0.537295 0 -1 12 3 4 8 2 14 3 2 4 2 12 7 2 4 0.373693 2 -0.00875998 0 1 0.665881 0 -1 9 2 2 9 2 10 2 1 9 0 0 0 0 0 -0.0230033 -1 -2 0.264792 0 -1 0 2 20 1 2 10 2 10 1 0 0 0 0 0 0.510182 2 0.00536648 0 1 0.454863 0 -1 16 1 4 5 2 16 1 2 5 0 0 0 0 0 0.0389718 -1 -2 0.515706 0 -1 16 0 4 6 2 16 3 4 3 0 0 0 0 0 0.343644 2 -0.0277672 0 1 0.235439 0 -1 4 3 6 4 3 6 3 2 4 0 0 0 0 0 -0.00988941 -1 -2 0.688774 0 -1 0 0 18 5 3 6 0 6 5 0 0 0 0 0 0.511105 2 -0.00320731 0 1 0.543887 0 -1 6 2 12 14 2 12 2 6 7 2 6 9 6 7 -0.00067485 -1 -2 0.545115 0 -1 11 8 3 5 3 12 8 1 5 0 0 0 0 0 0.483135 2 -0.00519475 0 1 0.211342 0 -1 5 12 2 2 2 5 13 2 1 0 0 0 0 0 -0.000261699 -1 -2 0.527368 0 -1 5 10 4 3 2 7 10 2 3 0 0 0 0 0 0.399259 2 0.00224215 0 1 0.468826 0 -1 4 9 15 2 3 9 9 5 2 0 0 0 0 0 -0.00121398 -1 -2 0.550424 0 -1 10 7 6 2 3 12 7 2 2 0 0 0 0 0 0.438487 2 -0.00294698 0 1 0.389285 0 -1 1 9 15 2 3 6 9 5 2 0 0 0 0 0 -0.000392918 -1 -2 0.600172 0 -1 5 0 2 10 2 5 0 1 5 2 6 5 1 5 0.456166 2 0.625507 1 0 0.0681256 0 -1 0 0 20 14 2 0 7 20 7 0 0 0 0 0 0.00977445 -1 -2 0.481303 0 -1 12 7 8 4 2 12 7 4 4 0 0 0 0 0 0.562066 2 0.0943782 1 0 0.0666323 0 -1 0 7 8 4 2 4 7 4 4 0 0 0 0 0 -0.00195609 -1 -2 0.358823 0 -1 8 1 3 3 3 9 1 1 3 0 0 0 0 0 0.529541 2 0.00906528 0 1 0.482269 0 -1 9 7 3 4 3 10 7 1 4 0 0 0 0 0 0.000421381 -1 -2 0.467033 0 -1 9 9 3 1 3 10 9 1 1 0 0 0 0 0 0.568311 2 -0.000442202 1 0 0.53608 0 -1 8 9 3 2 2 8 10 3 1 0 0 0 0 0 -0.00473135 -1 -2 0.613725 0 -1 8 4 2 8 2 8 4 1 4 2 9 8 1 4 0.318809 2 0.00153955 0 1 0.448772 0 -1 5 8 12 3 3 5 9 12 1 0 0 0 0 0 0.0024315 -1 -2 0.489417 0 -1 11 14 1 3 3 11 15 1 1 0 0 0 0 0 0.671665 2 -0.0155816 0 1 0.333674 0 -1 6 10 3 6 3 6 12 3 2 0 0 0 0 0 0.00108169 -1 -2 0.471822 0 -1 4 17 8 3 3 4 18 8 1 0 0 0 0 0 0.596063 2 -0.00221977 0 1 0.358855 0 -1 17 6 2 3 3 17 7 2 1 0 0 0 0 0 -0.000930487 -1 -2 0.621871 0 -1 9 12 2 2 2 10 12 1 1 2 9 13 1 1 0.48173 2 -0.00474187 0 1 0.255003 0 -1 9 13 2 4 2 9 13 1 2 2 10 15 1 2 -0.00629504 -1 -2 0.672808 0 -1 9 11 2 3 3 9 12 2 1 0 0 0 0 0 0.505106 2 0.0035216 0 1 0.540191 0 -1 5 5 12 10 2 11 5 6 5 2 5 10 6 5 -0.00242894 -1 -2 0.541946 0 -1 6 3 12 12 2 12 3 6 6 2 6 9 6 6 0.434714 2 -0.00252615 0 1 0.697062 0 -1 5 7 2 2 2 5 7 1 1 2 6 8 1 1 -0.00148173 -1 -2 0.326342 0 -1 4 3 3 2 3 5 3 1 2 0 0 0 0 0 0.491787 2 -0.224745 0 1 0.00729373 0 -1 6 2 12 14 2 12 2 6 7 2 6 9 6 7 0.00283425 -1 -2 0.457923 0 -1 5 2 12 3 3 9 2 4 3 0 0 0 0 0 0.537988 2 -0.0208216 0 1 0.602409 0 -1 1 1 18 17 3 7 1 6 17 0 0 0 0 0 0.000148963 -1 -2 0.333614 0 -1 0 9 10 1 2 5 9 5 1 0 0 0 0 0 0.496282 2 -0.00335245 0 1 0.355875 0 -1 16 8 4 3 3 16 9 4 1 0 0 0 0 0 -0.0372799 -1 -2 0.169856 0 -1 7 13 6 6 2 7 16 6 3 0 0 0 0 0 0.520899 2 0.000138968 1 0 0.559069 0 -1 6 14 1 6 3 6 16 1 2 0 0 0 0 0 -0.000319126 -1 -2 0.584873 0 -1 6 17 4 2 2 6 18 4 1 0 0 0 0 0 0.379584 2 0.000540035 1 0 0.567029 0 -1 10 18 6 2 2 13 18 3 1 2 10 19 3 1 0.00389569 -1 -2 0.518269 0 -1 16 8 1 3 3 16 9 1 1 0 0 0 0 0 0.332771 2 0.00160845 1 0 0.541049 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 -0.000574746 -1 -2 0.602264 0 -1 9 15 1 2 2 9 16 1 1 0 0 0 0 0 0.364464 2 0.013435 1 0 0.344128 0 -1 13 0 3 12 3 14 0 1 12 0 0 0 0 0 0.00213681 -1 -2 0.529243 0 -1 15 11 1 3 3 15 12 1 1 0 0 0 0 0 0.274708 2 0.0141576 1 0 0.802787 0 -1 8 15 3 3 3 8 16 3 1 0 0 0 0 0 0.00538844 -1 -2 0.522232 0 -1 4 0 3 12 3 5 0 1 12 0 0 0 0 0 0.358673 2 0.00880134 0 1 0.490039 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 0.000388588 -1 -2 0.468106 0 -1 9 9 3 1 3 10 9 1 1 0 0 0 0 0 0.572195 2 -0.00221436 0 1 0.538881 0 -1 2 2 12 14 2 2 2 6 7 2 8 9 6 7 -0.0084643 -1 -2 0.667554 0 -1 4 2 12 3 3 8 2 4 3 0 0 0 0 0 0.344844 2 0.0150444 1 0 0.923961 0 -1 18 18 2 2 2 18 18 1 2 0 0 0 0 0 0.00763464 -1 -2 0.48849 0 -1 17 2 3 8 3 18 2 1 8 0 0 0 0 0 0.630605 2 0.000338951 1 0 0.399743 0 -1 0 18 2 2 2 1 18 1 2 0 0 0 0 0 0.000211576 -1 -2 0.566398 0 -1 6 11 2 6 2 6 14 2 3 0 0 0 0 0 0.397298 2 -0.0275149 1 0 0.520106 0 -1 13 10 5 6 3 13 12 5 2 0 0 0 0 0 0.0516031 -1 -2 0.514073 0 -1 5 8 15 3 3 5 9 15 1 0 0 0 0 0 0.124513 2 0.00375107 1 0 0.38021 0 -1 2 10 5 6 3 2 12 5 2 0 0 0 0 0 -0.00214576 -1 -2 0.330945 0 -1 0 8 15 3 3 0 9 15 1 0 0 0 0 0 0.547454 2 -0.00058178 1 0 0.48926 0 -1 16 2 3 1 3 17 2 1 1 0 0 0 0 0 -0.000936385 -1 -2 0.59374 0 -1 17 4 3 2 3 18 4 1 2 0 0 0 0 0 0.466467 2 0.0416675 1 0 0.702135 0 -1 0 8 8 12 2 0 8 4 6 2 4 14 4 6 -0.00677638 -1 -2 0.322275 0 -1 1 7 8 6 2 1 7 4 3 2 5 10 4 3 0.50684 2 -0.00291706 1 0 0.47177 0 -1 14 1 6 2 3 16 1 2 2 0 0 0 0 0 0.000327895 -1 -2 0.450938 0 -1 15 0 4 4 2 17 0 2 2 2 15 2 2 2 0.565116 15 -1 17 44.683 91 2 0.0117298 0 1 0.380522 0 -1 1 1 4 11 2 3 1 2 11 0 0 0 0 0 0.00117122 -1 -2 0.314002 0 -1 5 5 1 8 2 5 9 1 4 0 0 0 0 0 0.685815 2 0.00935551 1 0 0.683467 0 -1 7 7 6 1 3 9 7 2 1 0 0 0 0 0 0.00165706 -1 -2 0.299247 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 0.547568 2 -0.00133878 1 0 0.294141 0 -1 8 4 4 4 2 8 6 4 2 0 0 0 0 0 0.000175806 -1 -2 0.389698 0 -1 2 4 9 1 3 5 4 3 1 0 0 0 0 0 0.587297 2 -0.00294732 0 1 0.357657 0 -1 9 12 2 8 2 9 16 2 4 0 0 0 0 0 0.00832209 -1 -2 0.52324 0 -1 3 8 14 12 2 3 14 14 6 0 0 0 0 0 0.323109 2 0.00743667 1 0 0.671567 0 -1 6 13 7 3 3 6 14 7 1 0 0 0 0 0 -0.000213229 -1 -2 0.547054 0 -1 5 9 6 3 3 7 9 2 3 0 0 0 0 0 0.38634 2 -0.00780246 0 1 0.277146 0 -1 12 1 6 3 3 12 2 6 1 0 0 0 0 0 0.000566112 -1 -2 0.468914 0 -1 8 12 6 2 2 8 13 6 1 0 0 0 0 0 0.585196 2 -0.00923465 0 1 0.27044 0 -1 0 2 18 2 2 0 2 9 1 2 9 3 9 1 -1.46765e-05 -1 -2 0.562255 0 -1 6 10 3 6 2 6 13 3 3 0 0 0 0 0 0.357932 2 0.00970079 0 1 0.417387 0 -1 14 0 6 6 2 14 0 3 6 0 0 0 0 0 -0.00353207 -1 -2 0.419501 0 -1 15 0 5 8 2 15 4 5 4 0 0 0 0 0 0.554947 2 0.0216164 1 0 0.285739 0 -1 7 16 6 4 3 9 16 2 4 0 0 0 0 0 0.00345676 -1 -2 0.602453 0 -1 2 11 14 4 2 2 11 7 2 2 9 13 7 2 0.437751 2 0.0229143 0 1 0.468935 0 -1 14 10 6 10 2 14 10 3 10 0 0 0 0 0 0.00343289 -1 -2 0.46646 0 -1 9 8 10 12 2 14 8 5 6 2 9 14 5 6 0.576256 2 -0.00865108 0 1 0.638174 0 -1 0 10 6 10 2 3 10 3 10 0 0 0 0 0 0.001451 -1 -2 0.371149 0 -1 1 8 10 12 2 1 8 5 6 2 6 14 5 6 0.553075 2 0.00781917 0 1 0.526436 0 -1 9 3 6 1 3 11 3 2 1 0 0 0 0 0 0.000207986 -1 -2 0.373051 0 -1 7 4 6 3 3 9 4 2 3 0 0 0 0 0 0.544573 2 -0.00399622 0 1 0.243817 0 -1 5 3 6 1 3 7 3 2 1 0 0 0 0 0 -1.50101e-05 -1 -2 0.532467 0 -1 4 5 6 3 3 6 5 2 3 0 0 0 0 0 0.368299 2 -0.00424288 0 1 0.648147 0 -1 9 16 3 3 3 9 17 3 1 0 0 0 0 0 0.0091375 -1 -2 0.489616 0 -1 8 14 6 3 3 8 15 6 1 0 0 0 0 0 0.655884 2 0.00882546 1 0 0.361387 0 -1 6 0 8 12 2 6 0 4 6 2 10 6 4 6 0.000940922 -1 -2 0.55029 0 -1 4 12 2 3 3 4 13 2 1 0 0 0 0 0 0.363252 2 -0.0125034 0 1 0.226113 0 -1 12 16 6 3 3 12 17 6 1 0 0 0 0 0 0.00867596 -1 -2 0.498789 0 -1 7 12 7 2 2 7 13 7 1 0 0 0 0 0 0.68472 2 -0.0104168 0 1 0.24463 0 -1 2 16 6 3 3 2 17 6 1 0 0 0 0 0 0.00274325 -1 -2 0.351153 0 -1 0 7 16 6 2 0 10 16 3 0 0 0 0 0 0.539983 2 -0.00423857 0 1 0.682367 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 0.0183259 -1 -2 0.489158 0 -1 9 7 3 5 3 10 7 1 5 0 0 0 0 0 0.713562 2 -0.0243345 0 1 0.352252 0 -1 0 5 20 10 2 0 5 10 5 2 10 10 10 5 0.000464694 -1 -2 0.404987 0 -1 3 1 4 2 2 5 1 2 2 0 0 0 0 0 0.551583 2 0.003426 1 0 0.412677 0 -1 7 6 8 10 2 11 6 4 5 2 7 11 4 5 -0.00258273 -1 -2 0.289943 0 -1 17 6 3 2 2 17 7 3 1 0 0 0 0 0 0.538643 2 0.00105457 1 0 0.377134 0 -1 5 6 8 10 2 5 6 4 5 2 9 11 4 5 -0.000912577 -1 -2 0.582739 0 -1 5 12 10 6 3 5 14 10 2 0 0 0 0 0 0.426756 2 0.0026589 0 1 0.468812 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 0.00485984 -1 -2 0.485392 0 -1 10 3 2 6 2 11 3 1 3 2 10 6 1 3 0.616364 2 0.00806387 1 0 0.17492 0 -1 0 4 3 3 3 0 5 3 1 0 0 0 0 0 -0.00758984 -1 -2 0.682619 0 -1 3 16 8 4 2 3 16 4 2 2 7 18 4 2 0.489407 2 0.000363681 0 1 0.46146 0 -1 8 13 5 2 2 8 14 5 1 0 0 0 0 0 0.062595 -1 -2 0.518302 0 -1 8 7 4 12 3 8 11 4 4 0 0 0 0 0 0.26867 2 -0.00497532 0 1 0.175847 0 -1 5 9 2 2 2 6 9 1 2 0 0 0 0 0 -0.00208801 -1 -2 0.636938 0 -1 9 15 2 3 3 9 16 2 1 0 0 0 0 0 0.493004 2 0.000956445 1 0 0.41394 0 -1 13 9 2 3 2 13 9 1 3 0 0 0 0 0 -0.0317215 -1 -2 0.604556 0 -1 14 0 6 17 3 16 0 2 17 0 0 0 0 0 0.481636 2 0.00128987 0 1 0.545081 0 -1 5 10 2 2 2 6 10 1 2 0 0 0 0 0 0.00984052 -1 -2 0.2924 0 -1 2 9 9 1 3 5 9 3 1 0 0 0 0 0 0.669961 2 0.00122371 1 0 0.628284 0 -1 9 11 2 3 3 9 12 2 1 0 0 0 0 0 -0.00842326 -1 -2 0.598657 0 -1 7 11 6 3 3 7 12 6 1 0 0 0 0 0 0.485258 2 -0.000727263 0 1 0.334005 0 -1 0 6 3 2 2 0 7 3 1 0 0 0 0 0 0.00468429 -1 -2 0.516892 0 -1 7 0 6 1 3 9 0 2 1 0 0 0 0 0 0.267948 2 -0.00103796 0 1 0.592579 0 -1 9 16 3 3 3 9 17 3 1 0 0 0 0 0 0.00913427 -1 -2 0.543773 0 -1 2 13 17 6 2 2 16 17 3 0 0 0 0 0 0.43468 2 0.00149711 0 1 0.41295 0 -1 1 3 3 7 3 2 3 1 7 0 0 0 0 0 0.00157623 -1 -2 0.452287 0 -1 1 1 6 4 3 3 1 2 4 0 0 0 0 0 0.655629 2 0.00874962 0 1 0.453203 0 -1 14 1 6 5 2 14 1 3 5 0 0 0 0 0 -0.000851036 -1 -2 0.378598 0 -1 13 2 3 2 2 13 3 3 1 0 0 0 0 0 0.541698 2 -0.0173256 0 1 0.688425 0 -1 0 1 6 5 2 3 1 3 5 0 0 0 0 0 -0.00832664 -1 -2 0.309133 0 -1 2 3 2 6 3 2 5 2 2 0 0 0 0 0 0.524365 2 1.51579e-05 0 1 0.476579 0 -1 9 10 3 2 2 9 11 3 1 0 0 0 0 0 0.00180415 -1 -2 0.472539 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 0.571656 2 0.00306916 1 0 0.214336 0 -1 6 3 3 1 3 7 3 1 1 0 0 0 0 0 -5.22255e-05 -1 -2 0.565321 0 -1 8 2 3 12 3 8 6 3 4 0 0 0 0 0 0.438511 2 0.000100722 1 0 0.592478 0 -1 11 12 1 2 2 11 13 1 1 0 0 0 0 0 0.000135737 -1 -2 0.457345 0 -1 11 12 2 2 2 12 12 1 1 2 11 13 1 1 0.576938 2 0.000921379 1 0 0.599261 0 -1 5 5 2 2 2 5 6 2 1 0 0 0 0 0 0.000303166 -1 -2 0.361008 0 -1 5 4 1 3 3 5 5 1 1 0 0 0 0 0 0.504933 2 0.0395825 1 0 0.153849 0 -1 3 11 16 4 2 11 11 8 2 2 3 13 8 2 0.0475197 -1 -2 0.521614 0 -1 0 10 20 3 3 0 11 20 1 0 0 0 0 0 0.142839 2 0.0188718 1 0 0.282551 0 -1 1 11 16 4 2 1 11 8 2 2 9 13 8 2 -0.000398765 -1 -2 0.403502 0 -1 4 2 4 2 2 4 3 4 1 0 0 0 0 0 0.543779 2 0.000465566 0 1 0.4669 0 -1 12 6 2 2 2 13 6 1 1 2 12 7 1 1 0.00670906 -1 -2 0.533135 0 -1 12 11 6 6 3 12 13 6 2 0 0 0 0 0 0.413657 2 -0.00189312 0 1 0.715516 0 -1 6 6 2 2 2 6 6 1 1 2 7 7 1 1 -0.0130569 -1 -2 0.31179 0 -1 6 4 4 16 2 8 4 2 16 0 0 0 0 0 0.520844 2 -0.000194841 1 0 0.463766 0 -1 11 18 3 2 2 11 19 3 1 0 0 0 0 0 1.50932e-05 -1 -2 0.456165 0 -1 9 17 6 2 2 12 17 3 1 2 9 18 3 1 0.544523 2 -7.1618e-06 1 0 0.419311 0 -1 2 13 5 2 2 2 14 5 1 0 0 0 0 0 0.000301647 -1 -2 0.596624 0 -1 3 15 2 2 2 3 16 2 1 0 0 0 0 0 0.41005 2 0.00441952 0 1 0.484506 0 -1 9 7 3 3 3 10 7 1 3 0 0 0 0 0 -0.00739842 -1 -2 0.620685 0 -1 9 6 2 6 2 9 6 1 6 0 0 0 0 0 0.493121 2 -0.00780312 1 0 0.528246 0 -1 1 14 7 6 3 1 16 7 2 0 0 0 0 0 -0.0107314 -1 -2 0.910483 0 -1 8 1 2 11 2 9 1 1 11 0 0 0 0 0 0.345592 2 0.00142468 0 1 0.470855 0 -1 9 7 2 4 2 9 7 1 4 0 0 0 0 0 -8.27176e-05 -1 -2 0.565162 0 -1 11 10 2 1 2 11 10 1 1 0 0 0 0 0 0.473102 2 0.00448034 1 0 0.617589 0 -1 0 3 3 9 3 1 3 1 9 0 0 0 0 0 0.00307891 -1 -2 0.513953 0 -1 0 3 3 6 3 0 5 3 2 0 0 0 0 0 0.342309 2 -0.00113103 1 0 0.491828 0 -1 11 15 2 2 2 12 15 1 1 2 11 16 1 1 -0.00104107 -1 -2 0.594209 0 -1 11 14 2 2 2 12 14 1 1 2 11 15 1 1 0.492304 2 0.00116485 1 0 0.640527 0 -1 7 15 2 2 2 7 15 1 1 2 8 16 1 1 0.000900574 -1 -2 0.45044 0 -1 7 14 2 2 2 7 14 1 1 2 8 15 1 1 0.619208 2 0.00687815 0 1 0.537481 0 -1 8 13 4 6 2 10 13 2 3 2 8 16 2 3 -0.0352839 -1 -2 0.22471 0 -1 2 14 16 4 2 10 14 8 2 2 2 16 8 2 0.521717 2 -0.00133202 0 1 0.25547 0 -1 9 8 2 2 2 9 9 2 1 0 0 0 0 0 -0.00231776 -1 -2 0.379252 0 -1 7 7 5 3 3 7 8 5 1 0 0 0 0 0 0.524323 2 0.000213329 0 1 0.386034 0 -1 7 5 6 2 3 9 5 2 2 0 0 0 0 0 0.0134679 -1 -2 0.538069 0 -1 9 1 6 18 3 11 1 2 18 0 0 0 0 0 0.417836 2 -0.00128292 0 1 0.613362 0 -1 8 6 3 4 3 9 6 1 4 0 0 0 0 0 0.000515716 -1 -2 0.402854 0 -1 8 5 2 4 2 8 5 1 2 2 9 7 1 2 0.553685 2 0.00392542 0 1 0.527992 0 -1 9 13 2 6 2 10 13 1 3 2 9 16 1 3 -0.0337806 -1 -2 0.233468 0 -1 11 0 3 18 3 12 0 1 18 0 0 0 0 0 0.517591 2 -0.0378537 0 1 0.107485 0 -1 6 0 3 18 3 7 0 1 18 0 0 0 0 0 -0.000407529 -1 -2 0.534593 0 -1 5 15 4 2 2 7 15 2 2 0 0 0 0 0 0.419894 2 -0.00311938 0 1 0.385583 0 -1 1 9 18 1 3 7 9 6 1 0 0 0 0 0 -0.015715 -1 -2 0.333519 0 -1 0 0 20 3 3 0 1 20 1 0 0 0 0 0 0.52632 2 -0.000785257 0 1 0.58604 0 -1 9 6 2 4 2 10 6 1 4 0 0 0 0 0 -0.000287505 -1 -2 0.543778 0 -1 6 10 6 2 3 8 10 2 2 0 0 0 0 0 0.37161 2 0.0280169 1 0 0.333075 0 -1 0 7 20 1 2 0 7 10 1 0 0 0 0 0 -0.00190188 -1 -2 0.53666 0 -1 11 3 5 4 2 11 5 5 2 0 0 0 0 0 0.469379 2 0.0206476 1 0 0.100696 0 -1 5 7 10 1 2 10 7 5 1 0 0 0 0 0 0.00430026 -1 -2 0.481604 0 -1 8 10 3 3 3 8 11 3 1 0 0 0 0 0 0.621568 2 0.0134591 0 1 0.546195 0 -1 2 0 16 8 2 10 0 8 4 2 2 4 8 4 -0.01032 -1 -2 0.457845 0 -1 11 0 9 10 2 11 5 9 5 0 0 0 0 0 0.541931 2 0.319907 1 0 0.200805 0 -1 0 2 8 18 2 4 2 4 18 0 0 0 0 0 0.000921988 -1 -2 0.519328 0 -1 0 0 2 6 3 0 2 2 2 0 0 0 0 0 0.391219 2 0.000418525 0 1 0.429974 0 -1 6 0 9 2 2 6 1 9 1 0 0 0 0 0 0.000358911 -1 -2 0.43445 0 -1 4 1 12 2 2 4 2 12 1 0 0 0 0 0 0.553197 2 -0.209924 0 1 0.107572 0 -1 2 1 16 14 2 2 8 16 7 0 0 0 0 0 -0.00493282 -1 -2 0.57628 0 -1 5 1 8 12 2 5 7 8 6 0 0 0 0 0 0.457464 2 0.00234091 1 0 0.747681 0 -1 9 11 2 2 2 9 12 2 1 0 0 0 0 0 0.00471203 -1 -2 0.526177 0 -1 9 10 5 6 3 9 12 5 2 0 0 0 0 0 0.450555 2 0.0287132 0 1 0.44071 0 -1 3 0 13 8 2 3 4 13 4 0 0 0 0 0 -0.00261566 -1 -2 0.424427 0 -1 6 7 5 8 2 6 11 5 4 0 0 0 0 0 0.689298 2 -0.013559 0 1 0.125227 0 -1 9 5 2 3 3 9 6 2 1 0 0 0 0 0 -0.000303318 -1 -2 0.407779 0 -1 6 8 8 3 3 6 9 8 1 0 0 0 0 0 0.544282 2 -0.000556018 0 1 0.5378 0 -1 2 2 7 6 2 2 5 7 3 0 0 0 0 0 0.00240253 -1 -2 0.316658 0 -1 2 1 14 4 2 2 1 7 2 2 9 3 7 2 0.528574 2 -0.00340899 1 0 0.490521 0 -1 11 14 1 3 3 11 15 1 1 0 0 0 0 0 0.000800196 -1 -2 0.452274 0 -1 6 15 8 2 2 6 16 8 1 0 0 0 0 0 0.558061 2 0.00219011 1 0 0.661268 0 -1 8 14 1 3 3 8 15 1 1 0 0 0 0 0 0.00337454 -1 -2 0.510777 0 -1 8 11 2 8 2 8 15 2 4 0 0 0 0 0 0.338693 2 0.000800196 1 0 0.570756 0 -1 6 15 8 2 2 6 16 8 1 0 0 0 0 0 0.0173461 -1 -2 0.501602 0 -1 7 16 8 3 3 7 17 8 1 0 0 0 0 0 0.630646 2 -0.00195684 0 1 0.301781 0 -1 0 16 2 2 2 0 17 2 1 0 0 0 0 0 -0.011229 -1 -2 0.629385 0 -1 1 16 8 4 2 1 16 4 2 2 5 18 4 2 0.452049 2 -0.00266084 0 1 0.334401 0 -1 2 9 16 3 3 2 10 16 1 0 0 0 0 0 -0.0116151 -1 -2 0.282538 0 -1 13 11 2 4 2 13 11 1 4 0 0 0 0 0 0.515097 2 -0.0952486 0 1 0.139827 0 -1 0 13 16 6 3 0 15 16 2 0 0 0 0 0 0.00737018 -1 -2 0.5294 0 -1 5 11 2 4 2 6 11 1 4 0 0 0 0 0 0.233173 2 -0.0149539 1 0 0.494047 0 -1 18 2 2 18 2 19 2 1 9 2 18 11 1 9 0.000570388 -1 -2 0.546657 0 -1 19 7 1 9 3 19 10 1 3 0 0 0 0 0 0.462677 2 0.00585162 1 0 0.627004 0 -1 0 2 2 18 2 0 2 1 9 2 1 11 1 9 0.000211505 -1 -2 0.550814 0 -1 0 7 1 9 3 0 10 1 3 0 0 0 0 0 0.406187 2 -6.96792e-06 1 0 0.409657 0 -1 14 12 2 2 2 14 13 2 1 0 0 0 0 0 -0.000796774 -1 -2 0.561556 0 -1 11 14 2 3 3 11 15 2 1 0 0 0 0 0 0.466689 2 0.0194595 1 0 0.231148 0 -1 7 8 6 2 2 7 9 6 1 0 0 0 0 0 -0.0111608 -1 -2 0.308701 0 -1 7 12 4 6 2 7 12 2 3 2 9 15 2 3 0.551466 2 0.0140561 1 0 0.700506 0 -1 8 13 5 3 3 8 14 5 1 0 0 0 0 0 -0.000329584 -1 -2 0.579749 0 -1 12 14 2 2 2 13 14 1 1 2 12 15 1 1 0.469165 2 -0.00546364 0 1 0.59286 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 5.88817e-05 -1 -2 0.37414 0 -1 7 13 5 2 2 7 14 5 1 0 0 0 0 0 0.517017 2 0.00663434 0 1 0.541499 0 -1 2 10 16 4 2 10 10 8 2 2 2 12 8 2 0.0452634 -1 -2 0.518033 0 -1 7 0 6 6 3 9 0 2 6 0 0 0 0 0 0.152968 2 -0.00806461 0 1 0.251547 0 -1 7 1 6 3 3 7 2 6 1 0 0 0 0 0 0.000473895 -1 -2 0.5122 0 -1 0 12 6 2 2 0 13 6 1 0 0 0 0 0 0.372595 2 1.48774e-05 1 0 0.553244 0 -1 6 3 11 2 2 6 4 11 1 0 0 0 0 0 0.0243212 -1 -2 0.496077 0 -1 12 0 8 6 2 16 0 4 3 2 12 3 4 3 0.598332 2 6.99314e-05 0 1 0.416395 0 -1 8 12 1 2 2 8 13 1 1 0 0 0 0 0 0.00262878 -1 -2 0.588014 0 -1 8 8 1 12 3 8 12 1 4 0 0 0 0 0 0.339966 2 0.00381905 1 0 0.784662 0 -1 11 11 2 2 2 12 11 1 1 2 11 12 1 1 -0.0259892 -1 -2 0.328811 0 -1 12 7 3 13 3 13 7 1 13 0 0 0 0 0 0.515509 2 0.00120624 0 1 0.459606 0 -1 7 11 2 2 2 7 11 1 1 2 8 12 1 1 -0.00155574 -1 -2 0.312699 0 -1 3 13 1 3 3 3 14 1 1 0 0 0 0 0 0.71834 2 -0.00226919 1 0 0.527401 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.000232872 -1 -2 0.487867 0 -1 11 11 2 1 2 11 11 1 1 0 0 0 0 0 0.561515 2 -0.00559997 1 0 0.516081 0 -1 1 10 5 9 3 1 13 5 3 0 0 0 0 0 -0.0104962 -1 -2 0.570161 0 -1 4 8 6 4 3 6 8 2 4 0 0 0 0 0 0.320485 2 -1.48149e-05 0 1 0.553884 0 -1 13 12 1 4 2 13 14 1 2 0 0 0 0 0 -0.000642871 -1 -2 0.534943 0 -1 11 3 4 14 2 13 3 2 7 2 11 10 2 7 0.447215 2 -0.000188919 0 1 0.501284 0 -1 6 12 1 4 2 6 14 1 2 0 0 0 0 0 -0.00904135 -1 -2 0.256294 0 -1 5 3 4 14 2 5 3 2 7 2 7 10 2 7 0.450338 2 0.00795347 1 0 0.26305 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 -0.0027909 -1 -2 0.575651 0 -1 9 12 3 3 3 9 13 3 1 0 0 0 0 0 0.485486 2 0.00328571 1 0 0.408475 0 -1 2 2 12 6 2 2 2 6 3 2 8 5 6 3 0.00077063 -1 -2 0.407336 0 -1 6 6 6 2 2 9 6 3 2 0 0 0 0 0 0.592024 16 -1 18 47.7635 97 2 0.0630219 0 1 0.341938 0 -1 1 0 18 12 3 7 0 6 12 0 0 0 0 0 -0.00283746 -1 -2 0.682956 0 -1 5 7 6 4 2 5 7 3 2 2 8 9 3 2 0.440452 2 0.046462 0 1 0.439175 0 -1 5 7 10 4 2 5 9 10 2 0 0 0 0 0 0.0291525 -1 -2 0.460106 0 -1 7 7 6 4 3 9 7 2 4 0 0 0 0 0 0.635794 2 -1.40003e-05 1 0 0.373001 0 -1 9 5 2 2 2 9 6 2 1 0 0 0 0 0 -0.00127571 -1 -2 0.309382 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 0.590137 2 0.00135965 0 1 0.433757 0 -1 6 17 8 3 3 6 18 8 1 0 0 0 0 0 0.000179919 -1 -2 0.42175 0 -1 9 17 6 2 2 12 17 3 1 2 9 18 3 1 0.584685 2 -1.41666e-05 1 0 0.408469 0 -1 4 12 2 2 2 4 13 2 1 0 0 0 0 0 6.02524e-05 -1 -2 0.508729 0 -1 3 12 9 2 2 3 13 9 1 0 0 0 0 0 0.727718 2 0.00643204 1 0 0.29679 0 -1 8 3 6 1 3 10 3 2 1 0 0 0 0 0 0.000466823 -1 -2 0.411046 0 -1 9 3 4 6 2 11 3 2 3 2 9 6 2 3 0.558122 2 0.00574363 0 1 0.428731 0 -1 0 3 6 5 2 3 3 3 5 0 0 0 0 0 0.00320192 -1 -2 0.42662 0 -1 2 0 2 18 3 2 6 2 6 0 0 0 0 0 0.644405 2 -0.000576379 1 0 0.408482 0 -1 14 2 4 9 3 14 5 4 3 0 0 0 0 0 -0.00379019 -1 -2 0.318192 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.523069 2 0.00489141 1 0 0.354836 0 -1 2 2 4 9 3 2 5 4 3 0 0 0 0 0 0.00464593 -1 -2 0.56106 0 -1 7 18 3 2 3 8 18 1 2 0 0 0 0 0 0.269385 2 -0.00687994 0 1 0.623541 0 -1 10 14 3 3 3 10 15 3 1 0 0 0 0 0 -0.0181475 -1 -2 0.286198 0 -1 10 12 2 6 2 10 15 2 3 0 0 0 0 0 0.522685 2 0.000114092 1 0 0.325783 0 -1 7 5 3 6 3 7 7 3 2 0 0 0 0 0 -0.000543343 -1 -2 0.388297 0 -1 3 3 6 2 2 3 4 6 1 0 0 0 0 0 0.534117 2 -0.00276025 0 1 0.635397 0 -1 8 4 7 3 3 8 5 7 1 0 0 0 0 0 -0.00197306 -1 -2 0.588076 0 -1 13 6 2 3 3 13 7 2 1 0 0 0 0 0 0.459309 2 0.00245652 1 0 0.313401 0 -1 8 8 2 12 3 8 12 2 4 0 0 0 0 0 0.00019392 -1 -2 0.527713 0 -1 5 4 8 14 2 5 4 4 7 2 9 11 4 7 0.360411 2 0.078643 0 1 0.529034 0 -1 0 1 20 8 2 10 1 10 4 2 0 5 10 4 0.00652769 -1 -2 0.465448 0 -1 4 0 12 2 2 4 1 12 1 0 0 0 0 0 0.604491 2 -0.0787168 0 1 0.254113 0 -1 0 1 20 8 2 0 1 10 4 2 10 5 10 4 0.00572985 -1 -2 0.436692 0 -1 4 0 12 2 2 4 1 12 1 0 0 0 0 0 0.582289 2 0.000623866 1 0 0.547269 0 -1 9 5 6 3 2 9 5 3 3 0 0 0 0 0 -0.0852672 -1 -2 0.146161 0 -1 8 13 10 6 3 8 15 10 2 0 0 0 0 0 0.518181 2 0.0409811 1 0 0.127014 0 -1 5 5 6 3 2 8 5 3 3 0 0 0 0 0 0.00771357 -1 -2 0.483268 0 -1 6 3 6 1 3 8 3 2 1 0 0 0 0 0 0.222358 2 -0.00686639 0 1 0.591893 0 -1 11 18 9 2 3 14 18 3 2 0 0 0 0 0 0.0145596 -1 -2 0.476151 0 -1 13 11 6 7 2 13 11 3 7 0 0 0 0 0 0.572722 2 -0.0100643 0 1 0.363673 0 -1 4 6 12 10 2 4 6 6 5 2 10 11 6 5 0.00362741 -1 -2 0.527173 0 -1 8 17 3 3 3 9 17 1 3 0 0 0 0 0 0.274053 2 -0.00234215 0 1 0.549778 0 -1 11 18 9 2 3 14 18 3 2 0 0 0 0 0 -0.0246864 -1 -2 0.60599 0 -1 13 11 6 8 2 13 11 3 8 0 0 0 0 0 0.496031 2 0.000194561 1 0 0.376947 0 -1 4 16 2 2 2 4 17 2 1 0 0 0 0 0 0.000317142 -1 -2 0.406236 0 -1 7 15 4 4 2 7 17 4 2 0 0 0 0 0 0.566822 2 0.0020794 0 1 0.461866 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.00179827 -1 -2 0.486751 0 -1 13 6 2 3 3 13 7 2 1 0 0 0 0 0 0.651845 2 -0.000222871 0 1 0.56776 0 -1 5 11 6 1 3 7 11 2 1 0 0 0 0 0 0.000326239 -1 -2 0.371073 0 -1 7 10 3 1 3 8 10 1 1 0 0 0 0 0 0.567661 2 -0.0667927 0 1 0.251152 0 -1 0 12 20 4 2 0 14 20 2 0 0 0 0 0 -0.00148699 -1 -2 0.388675 0 -1 10 2 3 2 2 10 3 3 1 0 0 0 0 0 0.526225 2 -0.00504549 0 1 0.655747 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 -0.00482976 -1 -2 0.593411 0 -1 5 5 4 3 3 5 6 4 1 0 0 0 0 0 0.428592 2 -0.00107226 1 0 0.542606 0 -1 8 8 4 3 3 8 9 4 1 0 0 0 0 0 0.00879012 -1 -2 0.53513 0 -1 10 4 2 12 3 10 8 2 4 0 0 0 0 0 0.483428 2 -0.00717504 0 1 0.206717 0 -1 0 3 4 3 3 0 4 4 1 0 0 0 0 0 0.00112512 -1 -2 0.511225 0 -1 1 3 2 3 3 1 4 2 1 0 0 0 0 0 0.346871 2 0.0106347 0 1 0.447901 0 -1 16 1 4 11 2 16 1 2 11 0 0 0 0 0 -0.0117632 -1 -2 0.62539 0 -1 18 2 2 16 2 19 2 1 8 2 18 10 1 8 0.496899 2 0.0923241 1 0 0.20313 0 -1 1 8 6 12 3 3 8 2 12 0 0 0 0 0 0.00189911 -1 -2 0.561872 0 -1 7 2 6 2 2 7 2 3 1 2 10 3 3 1 0.404657 2 -0.0105103 1 0 0.494326 0 -1 12 4 8 2 2 16 4 4 1 2 12 5 4 1 -0.000745313 -1 -2 0.561343 0 -1 10 6 6 2 3 12 6 2 2 0 0 0 0 0 0.384533 2 0.0080041 1 0 0.775984 0 -1 0 4 8 2 2 0 4 4 1 2 4 5 4 1 0.00581105 -1 -2 0.462473 0 -1 1 3 3 5 3 2 3 1 5 0 0 0 0 0 0.628628 2 -0.0279186 0 1 0.240931 0 -1 16 3 4 6 3 16 5 4 2 0 0 0 0 0 0.00217394 -1 -2 0.53455 0 -1 8 6 4 3 3 8 7 4 1 0 0 0 0 0 0.350796 2 -0.00406396 0 1 0.66471 0 -1 8 14 1 3 3 8 15 1 1 0 0 0 0 0 0.000600171 -1 -2 0.499851 0 -1 4 11 1 2 2 4 12 1 1 0 0 0 0 0 0.302217 2 0.00192148 1 0 0.591915 0 -1 8 14 6 3 3 8 15 6 1 0 0 0 0 0 -0.0138608 -1 -2 0.635177 0 -1 7 15 7 3 3 7 16 7 1 0 0 0 0 0 0.499331 2 0.0230069 1 0 0.190234 0 -1 9 12 2 8 2 9 16 2 4 0 0 0 0 0 -0.00138579 -1 -2 0.525337 0 -1 4 6 6 2 3 6 6 2 2 0 0 0 0 0 0.398586 2 0.00126374 0 1 0.46661 0 -1 12 7 4 2 2 12 8 4 1 0 0 0 0 0 -0.0146752 -1 -2 0.382316 0 -1 5 3 13 10 2 5 8 13 5 0 0 0 0 0 0.532663 2 -0.00295351 0 1 0.706366 0 -1 4 7 4 2 2 4 8 4 1 0 0 0 0 0 -0.00171898 -1 -2 0.381346 0 -1 0 8 16 2 2 0 8 8 1 2 8 9 8 1 0.524674 2 -0.000424841 1 0 0.479164 0 -1 11 8 2 5 2 11 8 1 5 0 0 0 0 0 -0.000852487 -1 -2 0.449122 0 -1 10 0 6 13 2 10 0 3 13 0 0 0 0 0 0.53709 2 0.00890346 1 0 0.207647 0 -1 1 6 4 2 2 1 7 4 1 0 0 0 0 0 1.48956e-05 -1 -2 0.444764 0 -1 4 3 2 1 2 5 3 1 1 0 0 0 0 0 0.566716 2 -0.000470916 0 1 0.546507 0 -1 11 8 2 5 2 11 8 1 5 0 0 0 0 0 0.000430848 -1 -2 0.549326 0 -1 12 10 4 8 2 12 10 2 8 0 0 0 0 0 0.458071 2 -0.00063894 0 1 0.550157 0 -1 7 8 2 5 2 8 8 1 5 0 0 0 0 0 -7.37337e-05 -1 -2 0.508579 0 -1 4 10 4 8 2 6 10 2 8 0 0 0 0 0 0.33057 2 -0.00889915 0 1 0.427647 0 -1 6 7 9 12 3 9 7 3 12 0 0 0 0 0 -0.0102534 -1 -2 0.112322 0 -1 11 13 2 3 2 11 13 1 3 0 0 0 0 0 0.515272 2 -0.0596375 0 1 0.738677 0 -1 7 10 6 10 2 10 10 3 10 0 0 0 0 0 0.0217072 -1 -2 0.499629 0 -1 8 11 4 8 2 8 11 2 4 2 10 15 2 4 0.133941 2 0.0099107 0 1 0.467901 0 -1 16 1 4 11 2 16 1 2 11 0 0 0 0 0 -0.0109983 -1 -2 0.692866 0 -1 18 2 2 4 2 18 2 1 4 0 0 0 0 0 0.501207 2 0.000746089 1 0 0.583358 0 -1 5 6 6 2 2 5 6 3 1 2 8 7 3 1 0.000295392 -1 -2 0.382639 0 -1 5 4 1 3 3 5 5 1 1 0 0 0 0 0 0.556635 2 0.0500541 1 0 0.300272 0 -1 11 1 4 14 2 11 1 2 14 0 0 0 0 0 -0.00723307 -1 -2 0.590804 0 -1 4 2 12 3 3 8 2 4 3 0 0 0 0 0 0.500087 2 -0.00268634 0 1 0.397503 0 -1 5 1 4 14 2 7 1 2 14 0 0 0 0 0 -0.00101958 -1 -2 0.369769 0 -1 7 3 6 2 3 9 3 2 2 0 0 0 0 0 0.575619 2 -0.0202049 0 1 0.637527 0 -1 2 0 18 4 3 8 0 6 4 0 0 0 0 0 0.00213404 -1 -2 0.536327 0 -1 9 5 2 10 2 9 10 2 5 0 0 0 0 0 0.443317 2 -0.00183489 0 1 0.5829 0 -1 8 6 3 4 3 9 6 1 4 0 0 0 0 0 -0.00594895 -1 -2 0.268067 0 -1 5 5 9 11 3 8 5 3 11 0 0 0 0 0 0.464289 2 -0.000230301 0 1 0.547532 0 -1 10 6 3 5 3 11 6 1 5 0 0 0 0 0 0.0050581 -1 -2 0.532083 0 -1 8 9 6 5 2 8 9 3 5 0 0 0 0 0 0.464649 2 -0.0005195 0 1 0.523274 0 -1 7 6 3 5 3 8 6 1 5 0 0 0 0 0 -0.000686209 -1 -2 0.493509 0 -1 6 10 6 3 2 9 10 3 3 0 0 0 0 0 0.310312 2 -0.00749363 0 1 0.288305 0 -1 10 0 3 7 3 11 0 1 7 0 0 0 0 0 -0.0156829 -1 -2 0.364031 0 -1 0 3 20 12 2 0 9 20 6 0 0 0 0 0 0.536875 2 -0.00326498 0 1 0.646863 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 0.000384639 -1 -2 0.525966 0 -1 5 9 4 1 2 7 9 2 1 0 0 0 0 0 0.383143 2 0.00444924 1 0 0.208682 0 -1 13 13 3 2 2 13 14 3 1 0 0 0 0 0 0.0231183 -1 -2 0.497853 0 -1 16 9 4 6 2 16 9 2 6 0 0 0 0 0 0.596126 2 0.00208352 1 0 0.574642 0 -1 7 15 6 3 3 7 16 6 1 0 0 0 0 0 0.00115132 -1 -2 0.358685 0 -1 6 16 7 3 3 6 17 7 1 0 0 0 0 0 0.536347 2 0.0361047 1 0 0.283314 0 -1 11 14 9 6 3 11 16 9 2 0 0 0 0 0 0.000362562 -1 -2 0.547772 0 -1 19 14 1 3 3 19 15 1 1 0 0 0 0 0 0.411053 2 -0.00346355 0 1 0.599039 0 -1 0 9 6 6 2 3 9 3 6 0 0 0 0 0 -0.00287968 -1 -2 0.572525 0 -1 0 19 9 1 3 3 19 3 1 0 0 0 0 0 0.414951 2 -0.00811195 1 0 0.539635 0 -1 11 14 9 6 3 11 16 9 2 0 0 0 0 0 0.00459321 -1 -2 0.53797 0 -1 12 12 6 6 3 12 14 6 2 0 0 0 0 0 0.38913 2 0.00700147 1 0 0.371467 0 -1 1 14 8 6 3 1 16 8 2 0 0 0 0 0 0.000801695 -1 -2 0.552957 0 -1 8 1 3 2 3 9 1 1 2 0 0 0 0 0 0.37558 2 -0.00866523 1 0 0.502577 0 -1 18 2 2 4 2 18 2 1 4 0 0 0 0 0 -0.00273151 -1 -2 0.585032 0 -1 14 0 6 3 3 16 0 2 3 0 0 0 0 0 0.461757 2 0.00133016 1 0 0.59377 0 -1 0 2 2 4 2 1 2 1 4 0 0 0 0 0 -0.00426482 -1 -2 0.564537 0 -1 0 0 6 3 3 2 0 2 3 0 0 0 0 0 0.393762 2 0.00632515 0 1 0.518211 0 -1 9 0 3 2 3 10 0 1 2 0 0 0 0 0 -0.00307537 -1 -2 0.300742 0 -1 12 1 2 2 2 12 1 1 2 0 0 0 0 0 0.51964 2 -0.000736221 0 1 0.369758 0 -1 8 0 3 2 3 9 0 1 2 0 0 0 0 0 3.00825e-05 -1 -2 0.432759 0 -1 6 1 2 2 2 7 1 1 2 0 0 0 0 0 0.571581 2 -0.00387227 0 1 0.347371 0 -1 10 8 2 3 3 10 9 2 1 0 0 0 0 0 0.000628791 -1 -2 0.543826 0 -1 13 15 6 2 2 13 16 6 1 0 0 0 0 0 0.445391 2 0.00134116 1 0 0.651171 0 -1 8 12 2 2 2 8 12 1 1 2 9 13 1 1 -0.00836819 -1 -2 0.14433 0 -1 8 15 3 5 3 9 15 1 5 0 0 0 0 0 0.48882 2 0.000933058 1 0 0.395111 0 -1 8 6 4 12 2 8 12 4 6 0 0 0 0 0 -0.00107465 -1 -2 0.391027 0 -1 7 6 7 8 2 7 10 7 4 0 0 0 0 0 0.53495 2 -0.0186101 0 1 0.127574 0 -1 0 11 8 2 2 0 12 8 1 0 0 0 0 0 0.00136514 -1 -2 0.503829 0 -1 8 11 2 2 2 8 11 1 1 2 9 12 1 1 0.69513 2 0.00737444 0 1 0.525344 0 -1 7 7 12 1 3 11 7 4 1 0 0 0 0 0 0.00841633 -1 -2 0.501124 0 -1 10 8 3 2 3 11 8 1 2 0 0 0 0 0 0.731133 2 0.0051414 0 1 0.495354 0 -1 1 7 12 1 3 5 7 4 1 0 0 0 0 0 0.0045847 -1 -2 0.253556 0 -1 6 5 8 2 2 6 5 4 1 2 10 6 4 1 0.646244 2 0.0285652 1 0 0.233072 0 -1 9 10 3 10 3 10 10 1 10 0 0 0 0 0 0.000439588 -1 -2 0.470224 0 -1 16 0 2 4 2 16 0 1 4 0 0 0 0 0 0.554455 2 0.0314595 1 0 0.0336897 0 -1 8 10 3 10 3 9 10 1 10 0 0 0 0 0 0.00560116 -1 -2 0.478712 0 -1 9 10 2 3 3 9 11 2 1 0 0 0 0 0 0.633835 2 0.000718357 0 1 0.543149 0 -1 8 9 4 2 2 10 9 2 1 2 8 10 2 1 -0.00553031 -1 -2 0.410583 0 -1 12 14 7 6 3 12 16 7 2 0 0 0 0 0 0.540399 2 0.00141293 1 0 0.310554 0 -1 6 1 3 1 3 7 1 1 1 0 0 0 0 0 0.000255307 -1 -2 0.425447 0 -1 2 0 2 4 2 3 0 1 4 0 0 0 0 0 0.544715 2 0.000319664 1 0 0.611836 0 -1 11 11 2 2 2 12 11 1 1 2 11 12 1 1 0.00504114 -1 -2 0.529004 0 -1 12 12 6 6 3 12 14 6 2 0 0 0 0 0 0.422479 2 0.00776179 0 1 0.431535 0 -1 1 0 6 10 2 1 0 3 5 2 4 5 3 5 0.00293746 -1 -2 0.662926 0 -1 3 0 2 9 3 3 3 2 3 0 0 0 0 0 0.302896 2 -0.00164977 1 0 0.549185 0 -1 14 13 3 2 2 14 14 3 1 0 0 0 0 0 -0.00588344 -1 -2 0.318855 0 -1 15 2 3 2 2 15 3 3 1 0 0 0 0 0 0.518429 2 0.000874592 1 0 0.332883 0 -1 2 13 5 2 2 2 14 5 1 0 0 0 0 0 -0.0153088 -1 -2 0.392361 0 -1 3 4 12 10 2 3 4 6 5 2 9 9 6 5 0.523514 2 0.0322925 1 0 0.597765 0 -1 5 1 14 6 3 5 3 14 2 0 0 0 0 0 -0.000438425 -1 -2 0.454169 0 -1 15 3 3 2 2 15 4 3 1 0 0 0 0 0 0.536943 2 0.00154295 1 0 0.631814 0 -1 7 11 2 2 2 7 11 1 1 2 8 12 1 1 -0.0024733 -1 -2 0.349063 0 -1 2 14 6 6 3 2 16 6 2 0 0 0 0 0 0.475902 2 0.00209949 1 0 0.58872 0 -1 6 13 8 3 3 6 14 8 1 0 0 0 0 0 -0.00575411 -1 -2 0.596133 0 -1 1 19 18 1 3 7 19 6 1 0 0 0 0 0 0.484198 2 -0.0102331 0 1 0.17054 0 -1 8 12 1 6 2 8 15 1 3 0 0 0 0 0 0.225545 -1 -2 0.477938 0 -1 0 0 14 15 3 0 5 14 5 0 0 0 0 0 0.0978797 2 0.0296666 1 0 0.582222 0 -1 3 0 16 8 2 3 4 16 4 0 0 0 0 0 -0.00285184 -1 -2 0.545963 0 -1 6 1 8 12 2 6 7 8 6 0 0 0 0 0 0.461007 2 0.000974653 1 0 0.367032 0 -1 5 3 3 3 3 6 3 1 3 0 0 0 0 0 1.40447e-05 -1 -2 0.430239 0 -1 5 1 3 4 3 6 1 1 4 0 0 0 0 0 0.569171 2 -0.0175794 0 1 0.691732 0 -1 15 14 4 6 2 17 14 2 3 2 15 17 2 3 -0.0523817 -1 -2 0.711004 0 -1 12 11 6 8 2 15 11 3 4 2 12 15 3 4 0.506015 2 -0.0112421 0 1 0.876919 0 -1 8 7 2 4 2 9 7 1 4 0 0 0 0 0 -0.00367284 -1 -2 0.651919 0 -1 6 11 3 1 3 7 11 1 1 0 0 0 0 0 0.454607 2 0.00350828 0 1 0.532987 0 -1 12 3 2 14 2 12 3 1 14 0 0 0 0 0 0.00616797 -1 -2 0.522046 0 -1 12 11 6 2 2 15 11 3 1 2 12 12 3 1 0.295352 2 -0.000970099 1 0 0.504863 0 -1 0 2 5 2 2 0 3 5 1 0 0 0 0 0 -0.010957 -1 -2 0.583736 0 -1 0 0 15 1 3 5 0 5 1 0 0 0 0 0 0.302009 2 -0.00832725 0 1 0.315806 0 -1 12 11 6 2 2 15 11 3 1 2 12 12 3 1 2.97984e-05 -1 -2 0.438639 0 -1 10 5 2 2 2 10 5 1 2 0 0 0 0 0 0.544321 2 0.00028244 1 0 0.56254 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 -0.000813641 -1 -2 0.52812 0 -1 9 0 2 10 2 9 0 1 5 2 10 5 1 5 0.340141 2 0.0018008 1 0 0.347166 0 -1 18 14 2 2 2 18 15 2 1 0 0 0 0 0 -0.00699448 -1 -2 0.44817 0 -1 13 11 4 9 3 13 14 4 3 0 0 0 0 0 0.538577 2 4.56254e-05 0 1 0.449251 0 -1 8 13 2 2 2 8 13 1 1 2 9 14 1 1 -0.000731899 -1 -2 0.416731 0 -1 7 8 4 3 3 7 9 4 1 0 0 0 0 0 0.60211 2 -0.000299802 0 1 0.414843 0 -1 8 9 4 2 2 8 10 4 1 0 0 0 0 0 -2.90609e-05 -1 -2 0.559209 0 -1 13 12 4 2 2 13 13 4 1 0 0 0 0 0 0.407321 2 -0.000597427 0 1 0.608891 0 -1 6 14 2 2 2 6 14 1 1 2 7 15 1 1 0.000148318 -1 -2 0.529831 0 -1 0 14 2 2 2 0 15 2 1 0 0 0 0 0 0.376195 2 -0.0029441 1 0 0.471608 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.137412 -1 -2 0.510134 0 -1 7 9 10 6 3 7 11 10 2 0 0 0 0 0 0.0467468 2 -0.0884142 0 1 0.118187 0 -1 2 9 12 4 3 6 9 4 4 0 0 0 0 0 0.0706103 -1 -2 0.511906 0 -1 7 9 6 11 2 10 9 3 11 0 0 0 0 0 0.777844 2 -0.0077189 0 1 0.187413 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 0.0151154 -1 -2 0.498003 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 0.700582 2 0.00106719 0 1 0.448224 0 -1 2 3 3 17 3 3 3 1 17 0 0 0 0 0 0.000704879 -1 -2 0.626575 0 -1 0 11 6 3 3 0 12 6 1 0 0 0 0 0 0.440266 17 -1 19 44.2513 90 2 -0.0986907 1 0 0.399947 0 -1 4 3 11 9 3 4 6 11 3 0 0 0 0 0 0.0623734 -1 -2 0.524778 0 -1 0 2 6 11 2 3 2 3 11 0 0 0 0 0 0.819358 2 0.00194965 0 1 0.352982 0 -1 13 0 4 5 2 13 0 2 5 0 0 0 0 0 -0.000891391 -1 -2 0.585273 0 -1 9 7 6 4 2 12 7 3 2 2 9 9 3 2 0.324598 2 -0.000551504 0 1 0.389282 0 -1 5 7 8 2 2 9 7 4 2 0 0 0 0 0 -0.00117219 -1 -2 0.433505 0 -1 1 8 15 1 3 6 8 5 1 0 0 0 0 0 0.652062 2 -0.000744806 1 0 0.404114 0 -1 4 12 12 2 3 8 12 4 2 0 0 0 0 0 -0.00262648 -1 -2 0.562498 0 -1 13 0 4 10 2 15 0 2 5 2 13 5 2 5 0.396753 2 -0.000397127 0 1 0.385611 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 0.00359849 -1 -2 0.599789 0 -1 3 9 6 2 2 6 9 3 2 0 0 0 0 0 0.424161 2 0.00530806 1 0 0.666017 0 -1 8 17 4 3 3 8 18 4 1 0 0 0 0 0 0.000963199 -1 -2 0.448138 0 -1 8 3 9 2 3 11 3 3 2 0 0 0 0 0 0.558349 2 0.000507765 0 1 0.353546 0 -1 3 3 9 2 3 6 3 3 2 0 0 0 0 0 0.00362232 -1 -2 0.340981 0 -1 5 0 9 14 3 8 0 3 14 0 0 0 0 0 0.542069 2 -0.0620614 0 1 0.193408 0 -1 7 3 7 10 2 7 8 7 5 0 0 0 0 0 0.000643872 -1 -2 0.408363 0 -1 4 8 13 3 3 4 9 13 1 0 0 0 0 0 0.549022 2 0.0262399 1 0 0.228571 0 -1 3 12 14 4 2 3 12 7 2 2 10 14 7 2 0.000819403 -1 -2 0.464867 0 -1 8 12 4 2 2 8 13 4 1 0 0 0 0 0 0.601736 2 0.000238331 1 0 0.359804 0 -1 6 10 9 8 2 6 14 9 4 0 0 0 0 0 -0.00158698 -1 -2 0.425965 0 -1 9 12 2 8 2 9 16 2 4 0 0 0 0 0 0.547643 2 -0.00672634 0 1 0.650724 0 -1 8 12 3 3 3 8 13 3 1 0 0 0 0 0 0.0110061 -1 -2 0.514941 0 -1 5 5 4 10 2 7 5 2 10 0 0 0 0 0 0.336298 2 0.00714458 1 0 0.267293 0 -1 14 15 3 3 3 14 16 3 1 0 0 0 0 0 -0.00472338 -1 -2 0.565218 0 -1 4 6 13 3 3 4 7 13 1 0 0 0 0 0 0.429814 2 0.00984374 1 0 0.115189 0 -1 3 15 3 3 3 3 16 3 1 0 0 0 0 0 1.51246e-05 -1 -2 0.43736 0 -1 3 9 4 2 2 3 9 2 1 2 5 10 2 1 0.561213 2 0.0399089 0 1 0.520465 0 -1 0 11 20 4 2 10 11 10 2 2 0 13 10 2 0.00539037 -1 -2 0.481347 0 -1 8 15 4 3 3 8 16 4 1 0 0 0 0 0 0.636121 2 -0.0399089 0 1 0.150687 0 -1 0 11 20 4 2 0 11 10 2 2 10 13 10 2 0.00539037 -1 -2 0.458169 0 -1 8 15 4 3 3 8 16 4 1 0 0 0 0 0 0.620024 2 0.00670052 1 0 0.343224 0 -1 10 13 1 6 2 10 16 1 3 0 0 0 0 0 -0.0126238 -1 -2 0.308823 0 -1 2 1 18 2 2 11 1 9 1 2 2 2 9 1 0.522674 2 0.0118066 1 0 0.718794 0 -1 8 14 3 3 3 8 15 3 1 0 0 0 0 0 -0.00342572 -1 -2 0.312081 0 -1 4 1 6 1 3 6 1 2 1 0 0 0 0 0 0.506584 2 0.000393853 0 1 0.475458 0 -1 11 13 1 3 3 11 14 1 1 0 0 0 0 0 0.0343882 -1 -2 0.526166 0 -1 13 5 2 12 2 13 11 2 6 0 0 0 0 0 0.335017 2 -0.07501 0 1 0.171348 0 -1 1 14 18 6 3 1 16 18 2 0 0 0 0 0 0.000490225 -1 -2 0.47258 0 -1 8 13 1 3 3 8 14 1 1 0 0 0 0 0 0.595647 2 -0.00855253 0 1 0.655822 0 -1 7 13 6 3 3 7 14 6 1 0 0 0 0 0 0.000131355 -1 -2 0.48354 0 -1 9 10 3 2 2 9 11 3 1 0 0 0 0 0 0.558691 2 0.00479487 1 0 0.264571 0 -1 5 1 3 3 3 6 1 1 3 0 0 0 0 0 0.00201247 -1 -2 0.365795 0 -1 5 5 6 5 2 8 5 3 5 0 0 0 0 0 0.512477 2 -0.117855 0 1 0.238565 0 -1 7 5 6 14 2 7 12 6 7 0 0 0 0 0 0.0015575 -1 -2 0.549047 0 -1 7 16 6 2 3 9 16 2 2 0 0 0 0 0 0.427475 2 -0.0155738 0 1 0.69389 0 -1 0 2 2 12 2 1 2 1 12 0 0 0 0 0 -0.00218548 -1 -2 0.364599 0 -1 1 0 5 3 3 1 1 5 1 0 0 0 0 0 0.509253 2 0.00292723 0 1 0.468581 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.00646637 -1 -2 0.497341 0 -1 12 6 3 3 3 12 7 3 1 0 0 0 0 0 0.77261 2 -0.00761404 0 1 0.687747 0 -1 5 4 3 3 3 5 5 3 1 0 0 0 0 0 0.00415126 -1 -2 0.478853 0 -1 5 6 3 3 3 5 7 3 1 0 0 0 0 0 0.692166 2 0.00277116 0 1 0.548184 0 -1 8 12 4 8 2 10 12 2 4 2 8 16 2 4 -0.0128361 -1 -2 0.380016 0 -1 2 17 18 2 2 11 17 9 1 2 2 18 9 1 0.520449 2 -0.00243801 0 1 0.258244 0 -1 9 3 2 2 2 9 4 2 1 0 0 0 0 0 0.00217133 -1 -2 0.496116 0 -1 8 5 4 6 3 8 7 4 2 0 0 0 0 0 0.32152 2 0.000628007 1 0 0.546042 0 -1 9 0 8 6 3 9 2 8 2 0 0 0 0 0 -0.00979824 -1 -2 0.604654 0 -1 1 0 18 4 3 7 0 6 4 0 0 0 0 0 0.493992 2 0.00735438 1 0 0.529109 0 -1 0 0 4 8 2 2 0 2 8 0 0 0 0 0 -0.014665 -1 -2 0.544612 0 -1 0 4 6 9 3 2 4 2 9 0 0 0 0 0 0.356736 2 0.0302445 0 1 0.551833 0 -1 1 4 18 2 3 7 4 6 2 0 0 0 0 0 -0.0566602 -1 -2 0.693098 0 -1 8 16 12 4 2 14 16 6 2 2 8 18 6 2 0.509339 2 -0.00569675 0 1 0.320153 0 -1 0 0 18 2 2 0 0 9 1 2 9 1 9 1 0.0308068 -1 -2 0.498925 0 -1 3 0 3 18 3 4 0 1 18 0 0 0 0 0 0.227705 2 0.00227488 0 1 0.481093 0 -1 14 9 4 7 2 14 9 2 7 0 0 0 0 0 0.00204369 -1 -2 0.528387 0 -1 15 14 2 2 2 15 15 2 1 0 0 0 0 0 0.325592 2 -0.0086278 0 1 0.626654 0 -1 2 9 4 7 2 4 9 2 7 0 0 0 0 0 0.000651134 -1 -2 0.509714 0 -1 3 14 2 2 2 3 15 2 1 0 0 0 0 0 0.319191 2 0.000881883 0 1 0.454959 0 -1 11 0 6 6 3 11 2 6 2 0 0 0 0 0 -0.0145949 -1 -2 0.264504 0 -1 14 0 2 6 2 15 0 1 3 2 14 3 1 3 0.515387 2 -0.00123046 0 1 0.619758 0 -1 7 11 2 2 2 7 11 1 1 2 8 12 1 1 -0.000218673 -1 -2 0.54692 0 -1 7 10 2 2 2 8 10 1 2 0 0 0 0 0 0.420686 2 -0.001091 0 1 0.414076 0 -1 9 14 2 6 2 9 17 2 3 0 0 0 0 0 0.000352104 -1 -2 0.547661 0 -1 12 18 4 2 2 12 19 4 1 0 0 0 0 0 0.415502 2 -0.00725638 0 1 0.716047 0 -1 8 17 4 3 3 8 18 4 1 0 0 0 0 0 0.00147019 -1 -2 0.524081 0 -1 2 18 8 2 2 2 19 8 1 0 0 0 0 0 0.372966 2 0.000114727 0 1 0.40338 0 -1 2 9 16 3 3 2 10 16 1 0 0 0 0 0 0.00305065 -1 -2 0.526399 0 -1 9 9 2 2 2 9 10 2 1 0 0 0 0 0 0.356009 2 0.000262699 0 1 0.45698 0 -1 5 14 2 4 2 5 14 1 2 2 6 16 1 2 -0.00363656 -1 -2 0.304257 0 -1 8 9 4 2 2 8 9 2 1 2 10 10 2 1 0.586825 2 -0.00848933 1 0 0.491416 0 -1 9 5 2 5 2 9 5 1 5 0 0 0 0 0 0.00581074 -1 -2 0.491853 0 -1 9 9 3 2 3 10 9 1 2 0 0 0 0 0 0.626696 2 0.00075584 1 0 0.563324 0 -1 8 9 3 2 3 9 9 1 2 0 0 0 0 0 -0.00220177 -1 -2 0.555392 0 -1 8 8 3 6 3 9 8 1 6 0 0 0 0 0 0.382765 2 0.00279089 0 1 0.54987 0 -1 8 12 4 8 2 10 12 2 4 2 8 16 2 4 -0.00182286 -1 -2 0.438228 0 -1 2 17 16 2 2 10 17 8 1 2 2 18 8 1 0.542403 2 -0.00724955 0 1 0.288812 0 -1 8 12 3 8 3 9 12 1 8 0 0 0 0 0 -0.000687445 -1 -2 0.347266 0 -1 3 10 1 3 3 3 11 1 1 0 0 0 0 0 0.507637 2 0.00251744 0 1 0.466121 0 -1 9 14 10 6 2 14 14 5 3 2 9 17 5 3 -0.0101514 -1 -2 0.374478 0 -1 14 13 3 6 3 14 15 3 2 0 0 0 0 0 0.5294 2 -0.00414 1 0 0.466049 0 -1 1 19 18 1 3 7 19 6 1 0 0 0 0 0 -0.00470786 -1 -2 0.417506 0 -1 2 10 15 2 3 7 10 5 2 0 0 0 0 0 0.691631 2 0.041981 1 0 0.201822 0 -1 4 17 16 3 3 4 18 16 1 0 0 0 0 0 -0.014273 -1 -2 0.75112 0 -1 8 6 4 9 3 8 9 4 3 0 0 0 0 0 0.503208 2 0.00408695 1 0 0.250451 0 -1 9 16 2 4 2 9 16 1 2 2 10 18 1 2 0.00176068 -1 -2 0.33014 0 -1 5 5 10 8 2 5 9 10 4 0 0 0 0 0 0.521834 2 0.000125505 0 1 0.461444 0 -1 13 1 4 2 2 13 1 2 2 0 0 0 0 0 -0.00295032 -1 -2 0.461995 0 -1 14 0 3 6 3 14 2 3 2 0 0 0 0 0 0.524703 2 -0.00113124 0 1 0.631437 0 -1 6 7 2 2 2 6 7 1 1 2 7 8 1 1 -0.00169832 -1 -2 0.340131 0 -1 7 1 6 1 3 9 1 2 1 0 0 0 0 0 0.505553 2 -0.0114578 1 0 0.494 0 -1 9 11 3 3 3 9 12 3 1 0 0 0 0 0 -0.00849626 -1 -2 0.296545 0 -1 12 9 3 3 3 13 9 1 3 0 0 0 0 0 0.519437 2 0.0119191 1 0 0.7887 0 -1 8 11 3 3 3 8 12 3 1 0 0 0 0 0 0.00644164 -1 -2 0.510699 0 -1 5 9 3 3 3 6 9 1 3 0 0 0 0 0 0.296715 2 -0.000878578 0 1 0.571437 0 -1 10 11 1 3 3 10 12 1 1 0 0 0 0 0 -0.00203127 -1 -2 0.44812 0 -1 7 9 6 4 2 10 9 3 2 2 7 11 3 2 0.538491 2 -0.00152624 0 1 0.619357 0 -1 4 7 2 2 2 4 7 1 1 2 5 8 1 1 0.00428609 -1 -2 0.433989 0 -1 5 7 3 1 3 6 7 1 1 0 0 0 0 0 0.76973 2 0.00350109 1 0 0.317139 0 -1 18 3 2 3 3 18 4 2 1 0 0 0 0 0 0.0125877 -1 -2 0.52467 0 -1 13 1 4 2 2 13 1 2 2 0 0 0 0 0 0.424121 2 0.000262075 0 1 0.42319 0 -1 3 1 4 2 2 5 1 2 2 0 0 0 0 0 4.47017e-05 -1 -2 0.417414 0 -1 3 0 5 2 2 3 1 5 1 0 0 0 0 0 0.59196 2 0.000780847 0 1 0.427739 0 -1 14 7 6 4 2 17 7 3 2 2 14 9 3 2 0.000888512 -1 -2 0.372016 0 -1 4 8 16 2 2 4 9 16 1 0 0 0 0 0 0.522682 2 0.00233691 0 1 0.547807 0 -1 2 11 5 6 3 2 13 5 2 0 0 0 0 0 0.00166884 -1 -2 0.362868 0 -1 5 16 2 4 2 5 16 1 2 2 6 18 1 2 0.615 2 0.000308445 0 1 0.474708 0 -1 15 6 2 12 2 16 6 1 6 2 15 12 1 6 0.00346176 -1 -2 0.458014 0 -1 13 3 6 16 3 15 3 2 16 0 0 0 0 0 0.558568 2 0.0189613 0 1 0.52988 0 -1 4 5 12 12 2 4 5 6 6 2 10 11 6 6 0.173473 -1 -2 0.369839 0 -1 5 1 10 13 2 10 1 5 13 0 0 0 0 0 0.849862 2 0.000200205 1 0 0.556566 0 -1 11 5 2 2 2 12 5 1 1 2 11 6 1 1 0.00109671 -1 -2 0.479571 0 -1 13 5 1 3 3 13 6 1 1 0 0 0 0 0 0.628626 2 0.000151071 0 1 0.405241 0 -1 7 4 2 4 2 7 4 1 2 2 8 6 1 2 -0.00344635 -1 -2 0.617302 0 -1 7 5 6 4 2 10 5 3 4 0 0 0 0 0 0.441426 2 0.00851766 1 0 0.357057 0 -1 12 4 4 6 2 14 4 2 3 2 12 7 2 3 -0.0358121 -1 -2 0.315133 0 -1 12 11 7 6 3 12 13 7 2 0 0 0 0 0 0.52527 2 -0.0211554 0 1 0.612472 0 -1 5 6 6 6 3 7 6 2 6 0 0 0 0 0 0.000898909 -1 -2 0.516998 0 -1 9 8 2 2 2 9 9 2 1 0 0 0 0 0 0.359627 2 -0.00156138 1 0 0.491499 0 -1 15 6 2 2 2 16 6 1 1 2 15 7 1 1 0.000671209 -1 -2 0.454621 0 -1 14 7 4 4 2 16 7 2 2 2 14 9 2 2 0.539581 2 -0.021597 0 1 0.190313 0 -1 5 5 6 2 3 7 5 2 2 0 0 0 0 0 -0.0249472 -1 -2 0.697408 0 -1 1 19 18 1 3 7 19 6 1 0 0 0 0 0 0.496772 2 0.0018726 0 1 0.474895 0 -1 12 3 3 3 3 12 4 3 1 0 0 0 0 0 0.00639127 -1 -2 0.518018 0 -1 16 0 2 3 3 16 1 2 1 0 0 0 0 0 0.292432 2 -0.00915524 0 1 0.766587 0 -1 5 3 3 3 3 5 4 3 1 0 0 0 0 0 0.00217157 -1 -2 0.521555 0 -1 2 0 2 3 3 2 1 2 1 0 0 0 0 0 0.336572 2 0.00123304 1 0 0.626096 0 -1 15 6 2 2 2 16 6 1 1 2 15 7 1 1 -0.000407859 -1 -2 0.453351 0 -1 10 13 1 6 2 10 16 1 3 0 0 0 0 0 0.538649 2 0.000464376 0 1 0.41035 0 -1 0 7 10 2 2 0 7 5 1 2 5 8 5 1 -0.000116002 -1 -2 0.583039 0 -1 3 10 6 2 2 3 11 6 1 0 0 0 0 0 0.430411 2 -0.0127187 0 1 0.213258 0 -1 12 18 4 2 2 12 19 4 1 0 0 0 0 0 8.94319e-05 -1 -2 0.487289 0 -1 12 18 2 2 2 13 18 1 1 2 12 19 1 1 0.545892 2 -0.000339137 0 1 0.397436 0 -1 6 19 2 1 2 7 19 1 1 0 0 0 0 0 -0.0180263 -1 -2 0.756855 0 -1 0 4 2 16 2 0 4 1 8 2 1 12 1 8 0.504561 2 0.00691792 1 0 0.39663 0 -1 16 1 4 9 3 16 4 4 3 0 0 0 0 0 -0.000118397 -1 -2 0.419808 0 -1 10 2 1 2 2 10 3 1 1 0 0 0 0 0 0.54358 2 -0.00394742 0 1 0.636946 0 -1 4 14 4 6 2 4 14 2 3 2 6 17 2 3 6.00509e-05 -1 -2 0.526957 0 -1 4 15 1 4 2 4 17 1 2 0 0 0 0 0 0.381224 2 0.00914236 1 0 0.415676 0 -1 0 2 20 4 2 10 2 10 2 2 0 4 10 2 0.000213054 -1 -2 0.352353 0 -1 14 5 2 8 2 14 9 2 4 0 0 0 0 0 0.534945 2 -0.000208559 1 0 0.440332 0 -1 5 12 4 5 2 7 12 2 5 0 0 0 0 0 0.00131304 -1 -2 0.605816 0 -1 0 13 9 6 3 0 15 9 2 0 0 0 0 0 0.446822 2 -0.00291348 1 0 0.482571 0 -1 9 14 11 3 3 9 15 11 1 0 0 0 0 0 0.00296458 -1 -2 0.4836 0 -1 7 14 7 3 3 7 15 7 1 0 0 0 0 0 0.603928 2 0.00177725 1 0 0.687183 0 -1 3 6 2 2 2 3 6 1 1 2 4 7 1 1 -0.00771363 -1 -2 0.284222 0 -1 6 7 2 7 2 7 7 1 7 0 0 0 0 0 0.514543 2 0.000510275 1 0 0.602443 0 -1 14 5 1 3 3 14 6 1 1 0 0 0 0 0 0.00174606 -1 -2 0.475661 0 -1 13 4 4 3 3 13 5 4 1 0 0 0 0 0 0.572115 2 0.000380683 1 0 0.493107 0 -1 2 7 4 4 2 2 7 2 2 2 4 9 2 2 0.00282289 -1 -2 0.33117 0 -1 2 9 13 6 2 2 12 13 3 0 0 0 0 0 0.62276 2 -0.00530005 1 0 0.523209 0 -1 10 1 3 4 3 11 1 1 4 0 0 0 0 0 4.49513e-05 -1 -2 0.399523 0 -1 9 8 5 2 2 9 9 5 1 0 0 0 0 0 0.53148 2 0.00327525 0 1 0.448162 0 -1 0 14 11 3 3 0 15 11 1 0 0 0 0 0 -0.00281626 -1 -2 0.390797 0 -1 8 11 2 8 2 8 15 2 4 0 0 0 0 0 0.667164 2 0.00141123 0 1 0.535701 0 -1 5 11 10 6 2 5 14 10 3 0 0 0 0 0 0.0083062 -1 -2 0.477097 0 -1 5 13 15 5 3 10 13 5 5 0 0 0 0 0 0.55701 2 0.00221648 0 1 0.494712 0 -1 8 10 1 10 2 8 15 1 5 0 0 0 0 0 -0.00498686 -1 -2 0.524131 0 -1 4 14 6 2 3 6 14 2 2 0 0 0 0 0 0.251265 2 -0.00366643 1 0 0.461955 0 -1 7 14 7 3 3 7 15 7 1 0 0 0 0 0 -0.0105812 -1 -2 0.630172 0 -1 7 16 9 3 3 7 17 9 1 0 0 0 0 0 0.497303 2 0.00733665 1 0 0.287097 0 -1 8 7 3 3 3 8 8 3 1 0 0 0 0 0 -0.000393189 -1 -2 0.425281 0 -1 3 5 1 6 2 3 8 1 3 0 0 0 0 0 0.557925 2 -0.00813753 0 1 0.574732 0 -1 6 5 11 2 2 6 6 11 1 0 0 0 0 0 0.00248092 -1 -2 0.520337 0 -1 9 0 3 2 3 10 0 1 2 0 0 0 0 0 0.390357 2 0.000887498 1 0 0.553432 0 -1 5 5 1 3 3 5 6 1 1 0 0 0 0 0 -0.000421949 -1 -2 0.533804 0 -1 8 7 3 2 3 9 7 1 2 0 0 0 0 0 0.392584 2 -0.00797901 0 1 0.414432 0 -1 5 2 10 6 2 10 2 5 3 2 5 5 5 3 0.00114396 -1 -2 0.470137 0 -1 8 4 6 4 2 8 4 3 4 0 0 0 0 0 0.528174 2 0.00755421 1 0 0.252726 0 -1 8 16 3 4 3 9 16 1 4 0 0 0 0 0 0.00102884 -1 -2 0.560515 0 -1 9 13 2 6 2 9 13 1 3 2 10 16 1 3 0.429786 2 -0.00172347 1 0 0.483968 0 -1 9 8 3 1 3 10 8 1 1 0 0 0 0 0 0.575867 -1 -2 0.51105 0 -1 2 5 18 15 3 2 10 18 5 0 0 0 0 0 0.0804893 18 -1 -1 53.7556 109 2 0.00666405 0 1 0.382892 0 -1 1 3 6 2 2 4 3 3 2 0 0 0 0 0 0.00899055 -1 -2 0.485843 0 -1 7 6 6 2 3 9 6 2 2 0 0 0 0 0 0.735496 2 0.00571542 1 0 0.672322 0 -1 8 17 4 3 3 8 18 4 1 0 0 0 0 0 0.00112579 -1 -2 0.442958 0 -1 10 13 2 3 3 10 14 2 1 0 0 0 0 0 0.607078 2 -0.00091789 1 0 0.307635 0 -1 0 10 20 4 2 0 12 20 2 0 0 0 0 0 -0.00104929 -1 -2 0.559364 0 -1 5 7 6 4 2 5 7 3 2 2 8 9 3 2 0.365102 2 3.54539e-05 0 1 0.427797 0 -1 11 12 1 2 2 11 13 1 1 0 0 0 0 0 0.000290157 -1 -2 0.458355 0 -1 10 10 2 3 3 10 11 2 1 0 0 0 0 0 0.528468 2 0.000160717 1 0 0.379819 0 -1 9 5 2 2 2 9 6 2 1 0 0 0 0 0 -0.000529611 -1 -2 0.385044 0 -1 4 4 1 10 2 4 9 1 5 0 0 0 0 0 0.593969 2 0.000266826 0 1 0.412302 0 -1 11 18 4 2 2 11 18 2 2 0 0 0 0 0 -0.000134925 -1 -2 0.57606 0 -1 12 18 3 2 2 12 19 3 1 0 0 0 0 0 0.423765 2 -0.0108417 0 1 0.392992 0 -1 0 6 16 6 2 0 6 8 3 2 8 9 8 3 0.0120778 -1 -2 0.576192 0 -1 7 6 4 12 2 7 12 4 6 0 0 0 0 0 0.278044 2 0.00221289 0 1 0.479451 0 -1 11 18 4 2 2 11 18 2 2 0 0 0 0 0 -0.0152662 -1 -2 0.0740559 0 -1 12 18 3 2 2 12 19 3 1 0 0 0 0 0 0.515358 2 6.79295e-05 1 0 0.585874 0 -1 8 12 1 2 2 8 13 1 1 0 0 0 0 0 0.000176336 -1 -2 0.356761 0 -1 8 13 1 3 3 8 14 1 1 0 0 0 0 0 0.559896 2 0.000813114 1 0 0.534685 0 -1 11 18 4 2 2 11 18 2 2 0 0 0 0 0 0.00326305 -1 -2 0.478254 0 -1 14 12 4 6 2 14 12 2 6 0 0 0 0 0 0.545675 2 -0.00395039 0 1 0.283181 0 -1 6 0 3 4 3 7 0 1 4 0 0 0 0 0 -0.000398646 -1 -2 0.548522 0 -1 4 0 2 8 2 4 0 1 4 2 5 4 1 4 0.41597 2 -0.0114325 0 1 0.56391 0 -1 11 17 9 3 3 14 17 3 3 0 0 0 0 0 0.00533392 -1 -2 0.459698 0 -1 16 2 4 5 2 16 2 2 5 0 0 0 0 0 0.593124 2 0.00831933 1 0 0.323062 0 -1 0 2 5 9 3 0 5 5 3 0 0 0 0 0 -0.000424799 -1 -2 0.379529 0 -1 7 2 3 2 3 8 2 1 2 0 0 0 0 0 0.540861 2 -0.111894 0 1 0.11323 0 -1 11 17 9 3 3 14 17 3 3 0 0 0 0 0 -0.00755538 -1 -2 0.633937 0 -1 16 2 4 5 2 16 2 2 5 0 0 0 0 0 0.483877 2 -0.0070337 0 1 0.566526 0 -1 0 17 9 3 3 3 17 3 3 0 0 0 0 0 -0.0148337 -1 -2 0.675142 0 -1 0 2 4 5 2 2 2 2 5 0 0 0 0 0 0.414095 2 0.00875067 1 0 0.356126 0 -1 5 11 10 9 3 5 14 10 3 0 0 0 0 0 0.0016645 -1 -2 0.534728 0 -1 9 6 3 3 3 9 7 3 1 0 0 0 0 0 0.364978 2 0.00949008 1 0 0.275466 0 -1 3 17 5 3 3 3 18 5 1 0 0 0 0 0 0.00111331 -1 -2 0.422599 0 -1 7 5 4 7 2 9 5 2 7 0 0 0 0 0 0.562918 2 0.00949408 0 1 0.490604 0 -1 9 8 2 5 2 9 8 1 5 0 0 0 0 0 -0.00153966 -1 -2 0.400705 0 -1 2 2 18 2 2 2 3 18 1 0 0 0 0 0 0.538071 2 0.13435 1 0 0.221467 0 -1 2 8 15 6 3 7 8 5 6 0 0 0 0 0 -0.00949408 -1 -2 0.735316 0 -1 9 8 2 5 2 10 8 1 5 0 0 0 0 0 0.500503 2 0.0200118 1 0 0.332791 0 -1 12 10 4 6 3 12 12 4 2 0 0 0 0 0 -0.0018875 -1 -2 0.391529 0 -1 14 3 6 2 2 14 4 6 1 0 0 0 0 0 0.540185 2 0.00718428 1 0 0.71766 0 -1 5 5 2 3 3 5 6 2 1 0 0 0 0 0 0.0016977 -1 -2 0.452698 0 -1 4 6 3 3 3 4 7 3 1 0 0 0 0 0 0.607691 2 0.004922 1 0 0.256983 0 -1 14 12 3 3 3 14 13 3 1 0 0 0 0 0 0.0118032 -1 -2 0.499964 0 -1 6 12 11 3 3 6 13 11 1 0 0 0 0 0 0.595823 2 -0.00977034 0 1 0.345909 0 -1 1 2 3 6 3 1 4 3 2 0 0 0 0 0 0.00211749 -1 -2 0.451513 0 -1 1 0 4 7 2 3 0 2 7 0 0 0 0 0 0.582972 2 0.00948014 0 1 0.480739 0 -1 9 8 3 4 3 10 8 1 4 0 0 0 0 0 -0.00260788 -1 -2 0.346222 0 -1 10 9 2 2 2 10 10 2 1 0 0 0 0 0 0.520159 2 -0.00572527 0 1 0.659985 0 -1 8 8 3 4 3 9 8 1 4 0 0 0 0 0 -0.00823256 -1 -2 0.282183 0 -1 4 4 10 10 2 4 9 10 5 0 0 0 0 0 0.512528 2 0.00089572 0 1 0.488382 0 -1 9 10 3 2 3 10 10 1 2 0 0 0 0 0 -0.000150216 -1 -2 0.482992 0 -1 9 10 3 2 2 9 11 3 1 0 0 0 0 0 0.542872 2 0.000484897 0 1 0.44346 0 -1 8 10 3 2 3 9 10 1 2 0 0 0 0 0 -0.0961927 -1 -2 0.225664 0 -1 2 4 14 12 2 2 4 7 6 2 9 10 7 6 0.595623 2 -0.00110535 0 1 0.452722 0 -1 10 12 1 6 2 10 15 1 3 0 0 0 0 0 -0.10215 -1 -2 0.284435 0 -1 7 3 8 16 2 11 3 4 8 2 7 11 4 8 0.518645 2 0.00301479 1 0 0.3809 0 -1 5 6 8 10 2 5 6 4 5 2 9 11 4 5 0.00761316 -1 -2 0.57187 0 -1 6 2 8 8 2 6 2 4 4 2 10 6 4 4 0.426256 2 0.00151976 1 0 0.594272 0 -1 10 5 4 2 2 12 5 2 1 2 10 6 2 1 -0.0141973 -1 -2 0.77311 0 -1 12 4 3 3 3 12 5 3 1 0 0 0 0 0 0.499765 2 -0.0138189 0 1 0.668114 0 -1 4 19 12 1 3 8 19 4 1 0 0 0 0 0 -0.000507013 -1 -2 0.330561 0 -1 8 2 3 1 3 9 2 1 1 0 0 0 0 0 0.474997 2 -0.00935375 0 1 0.286093 0 -1 13 17 4 3 3 13 18 4 1 0 0 0 0 0 -0.00947711 -1 -2 0.618888 0 -1 7 14 6 3 3 7 15 6 1 0 0 0 0 0 0.48421 2 0.00169237 1 0 0.607025 0 -1 9 14 2 3 3 9 15 2 1 0 0 0 0 0 0.000586525 -1 -2 0.378269 0 -1 7 15 6 3 3 7 16 6 1 0 0 0 0 0 0.53682 2 -0.00258266 0 1 0.369021 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 -0.00273076 -1 -2 0.385711 0 -1 14 12 2 3 3 14 13 2 1 0 0 0 0 0 0.531811 2 0.0218716 1 0 0.232701 0 -1 4 10 4 6 3 4 12 4 2 0 0 0 0 0 -1.50103e-05 -1 -2 0.556072 0 -1 4 13 3 2 2 4 14 3 1 0 0 0 0 0 0.430141 2 0.00535837 1 0 0.676764 0 -1 9 16 2 3 3 9 17 2 1 0 0 0 0 0 0.00500575 -1 -2 0.51949 0 -1 10 18 3 2 3 11 18 1 2 0 0 0 0 0 0.361285 2 -0.00190301 0 1 0.323785 0 -1 7 18 3 2 3 8 18 1 2 0 0 0 0 0 -0.00785067 -1 -2 0.119485 0 -1 1 10 4 2 2 1 11 4 1 0 0 0 0 0 0.499172 2 -0.00270937 1 0 0.485496 0 -1 12 4 6 3 3 12 5 6 1 0 0 0 0 0 0.00141381 -1 -2 0.487232 0 -1 14 4 1 3 3 14 5 1 1 0 0 0 0 0 0.590358 2 0.00903002 1 0 0.654732 0 -1 2 4 6 3 3 2 5 6 1 0 0 0 0 0 -0.000979257 -1 -2 0.584927 0 -1 5 4 1 3 3 5 5 1 1 0 0 0 0 0 0.455423 2 0.00139844 1 0 0.406463 0 -1 14 12 3 3 3 14 13 3 1 0 0 0 0 0 0.000833721 -1 -2 0.539954 0 -1 15 12 2 3 3 15 13 2 1 0 0 0 0 0 0.415281 2 0.0105511 1 0 0.179668 0 -1 3 16 4 3 3 3 17 4 1 0 0 0 0 0 8.83441e-05 -1 -2 0.425186 0 -1 8 0 4 2 2 8 1 4 1 0 0 0 0 0 0.541352 2 -0.0410223 1 0 0.522812 0 -1 0 0 20 1 2 0 0 10 1 0 0 0 0 0 0.00750656 -1 -2 0.485374 0 -1 9 7 3 4 3 10 7 1 4 0 0 0 0 0 0.609344 2 0.0410223 1 0 0.220502 0 -1 0 0 20 1 2 10 0 10 1 0 0 0 0 0 -0.000539614 -1 -2 0.569273 0 -1 8 7 3 4 3 9 7 1 4 0 0 0 0 0 0.446876 2 -0.068696 0 1 0.148331 0 -1 1 6 19 3 3 1 7 19 1 0 0 0 0 0 -0.00184479 -1 -2 0.621128 0 -1 12 7 4 2 2 12 8 4 1 0 0 0 0 0 0.49666 2 -0.00609599 0 1 0.229467 0 -1 7 8 3 3 3 7 9 3 1 0 0 0 0 0 -0.00420683 -1 -2 0.640709 0 -1 7 7 3 3 3 8 7 1 3 0 0 0 0 0 0.474856 2 -0.000713328 1 0 0.535494 0 -1 2 9 16 3 3 2 10 16 1 0 0 0 0 0 0.117568 -1 -2 0.513698 0 -1 9 4 2 12 3 9 8 2 4 0 0 0 0 0 0.0105957 2 5.93543e-05 0 1 0.37118 0 -1 7 3 2 5 2 8 3 1 5 0 0 0 0 0 -0.00631737 -1 -2 0.171207 0 -1 9 7 2 3 3 9 8 2 1 0 0 0 0 0 0.506176 2 0.0149415 1 0 0.672912 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 -0.00207894 -1 -2 0.441065 0 -1 7 8 6 4 2 10 8 3 2 2 7 10 3 2 0.544403 2 -0.000707362 0 1 0.556891 0 -1 9 7 2 2 2 10 7 1 2 0 0 0 0 0 -0.00312471 -1 -2 0.502387 0 -1 5 5 6 6 3 7 5 2 6 0 0 0 0 0 0.356241 2 -0.000789194 1 0 0.545679 0 -1 9 1 3 6 3 10 1 1 6 0 0 0 0 0 0.0101796 -1 -2 0.554514 0 -1 4 5 12 2 3 8 5 4 2 0 0 0 0 0 0.462231 2 -0.00275061 1 0 0.494254 0 -1 4 2 6 4 3 6 2 2 4 0 0 0 0 0 0.0106013 -1 -2 0.296123 0 -1 4 7 8 2 2 4 8 8 1 0 0 0 0 0 0.596434 2 0.00514668 0 1 0.549523 0 -1 3 6 14 6 2 10 6 7 3 2 3 9 7 3 0.0763211 -1 -2 0.517396 0 -1 3 6 14 3 2 3 6 7 3 0 0 0 0 0 0.294022 2 -0.00150277 0 1 0.31063 0 -1 0 5 2 2 2 0 6 2 1 0 0 0 0 0 0.0122667 -1 -2 0.465115 0 -1 8 13 4 3 3 8 14 4 1 0 0 0 0 0 0.684661 2 -0.0311186 1 0 0.522606 0 -1 13 0 3 20 3 14 0 1 20 0 0 0 0 0 0.0289056 -1 -2 0.518224 0 -1 10 8 10 3 3 10 9 10 1 0 0 0 0 0 0.270543 2 0.0475984 1 0 0.110951 0 -1 4 0 3 20 3 5 0 1 20 0 0 0 0 0 0.0308085 -1 -2 0.493863 0 -1 0 8 10 3 3 0 9 10 1 0 0 0 0 0 0.140411 2 -0.000212778 1 0 0.439236 0 -1 12 5 3 4 3 13 5 1 4 0 0 0 0 0 0.07897 -1 -2 0.521655 0 -1 6 7 12 4 3 10 7 4 4 0 0 0 0 0 0.229411 2 -0.010258 0 1 0.617665 0 -1 1 14 6 6 2 1 14 3 3 2 4 17 3 3 0.00126049 -1 -2 0.523622 0 -1 1 17 6 2 2 1 18 6 1 0 0 0 0 0 0.332897 2 -0.0334905 1 0 0.486619 0 -1 14 8 6 12 2 17 8 3 6 2 14 14 3 6 -0.000592028 -1 -2 0.411641 0 -1 18 5 2 2 2 18 6 2 1 0 0 0 0 0 0.539564 2 3.03208e-05 1 0 0.561074 0 -1 3 16 4 2 2 3 16 2 1 2 5 17 2 1 -0.000543697 -1 -2 0.562139 0 -1 2 16 6 2 3 4 16 2 2 0 0 0 0 0 0.34612 2 -0.0334905 1 0 0.489676 0 -1 14 8 6 12 2 17 8 3 6 2 14 14 3 6 -0.000592028 -1 -2 0.43054 0 -1 18 5 2 2 2 18 6 2 1 0 0 0 0 0 0.534071 2 0.00205509 0 1 0.5545 0 -1 5 16 9 2 3 8 16 3 2 0 0 0 0 0 -0.00443536 -1 -2 0.603854 0 -1 3 14 6 6 2 3 14 3 3 2 6 17 3 3 0.374659 2 -0.0841704 1 0 0.500735 0 -1 14 8 6 12 2 17 8 3 6 2 14 14 3 6 0.0067419 -1 -2 0.52981 0 -1 11 7 2 12 3 11 11 2 4 0 0 0 0 0 0.471615 2 0.0102782 1 0 0.626938 0 -1 0 8 6 12 2 0 8 3 6 2 3 14 3 6 0.00588009 -1 -2 0.515483 0 -1 7 7 2 12 3 7 11 2 4 0 0 0 0 0 0.381304 2 -6.96792e-06 1 0 0.444024 0 -1 14 12 1 2 2 14 13 1 1 0 0 0 0 0 0.000824195 -1 -2 0.469753 0 -1 12 13 8 1 2 12 13 4 1 0 0 0 0 0 0.54855 2 -0.00552683 0 1 0.55136 0 -1 0 3 16 6 2 0 6 16 3 0 0 0 0 0 0.000961287 -1 -2 0.361864 0 -1 1 4 8 2 2 1 4 4 1 2 5 5 4 1 0.583846 2 0.00248105 1 0 0.252322 0 -1 14 12 1 2 2 14 13 1 1 0 0 0 0 0 -0.00104806 -1 -2 0.411726 0 -1 15 12 2 3 3 15 13 2 1 0 0 0 0 0 0.5393 2 -0.00612879 0 1 0.672633 0 -1 8 16 3 3 3 8 17 3 1 0 0 0 0 0 0.000116823 -1 -2 0.504119 0 -1 5 12 1 2 2 5 13 1 1 0 0 0 0 0 0.360773 2 -0.0399095 0 1 0.156374 0 -1 13 4 3 15 3 14 4 1 15 0 0 0 0 0 0.00158595 -1 -2 0.489198 0 -1 17 3 2 6 2 18 3 1 3 2 17 6 1 3 0.577985 2 -0.0226902 0 1 0.218688 0 -1 4 4 3 15 3 5 4 1 15 0 0 0 0 0 0.00209161 -1 -2 0.477158 0 -1 1 3 2 6 2 1 3 1 3 2 2 6 1 3 0.609923 2 -0.0247154 0 1 0.3464 0 -1 7 15 12 4 2 7 17 12 2 0 0 0 0 0 -0.0134195 -1 -2 0.363069 0 -1 1 0 19 3 3 1 1 19 1 0 0 0 0 0 0.52522 2 -0.00606295 0 1 0.666632 0 -1 3 17 10 2 2 3 17 5 1 2 8 18 5 1 -0.0020921 -1 -2 0.339955 0 -1 2 5 10 15 3 2 10 10 5 0 0 0 0 0 0.50357 2 0.0259619 0 1 0.50368 0 -1 13 8 3 4 2 13 10 3 2 0 0 0 0 0 0.000179087 -1 -2 0.541853 0 -1 19 13 1 2 2 19 14 1 1 0 0 0 0 0 0.431898 2 -0.00315469 0 1 0.722103 0 -1 4 8 3 4 2 4 10 3 2 0 0 0 0 0 -0.00113978 -1 -2 0.332097 0 -1 0 13 1 2 2 0 14 1 1 0 0 0 0 0 0.502443 2 -0.0478402 0 1 0.193877 0 -1 12 7 2 12 2 12 13 2 6 0 0 0 0 0 0.000415771 -1 -2 0.480219 0 -1 14 7 2 2 2 15 7 1 1 2 14 8 1 1 0.573071 2 -0.00044247 0 1 0.426252 0 -1 5 3 8 2 2 5 4 8 1 0 0 0 0 0 0.00144794 -1 -2 0.571917 0 -1 0 2 2 6 3 0 4 2 2 0 0 0 0 0 0.406415 2 0.0157015 0 1 0.499573 0 -1 18 2 2 12 2 19 2 1 6 2 18 8 1 6 0.000278057 -1 -2 0.528929 0 -1 18 1 1 2 2 18 2 1 1 0 0 0 0 0 0.458173 2 -0.00290105 0 1 0.601215 0 -1 0 2 2 12 2 0 2 1 6 2 1 8 1 6 0.000208305 -1 -2 0.505798 0 -1 1 1 1 2 2 1 2 1 1 0 0 0 0 0 0.359943 2 -0.05153 1 0 0.49918 0 -1 16 4 4 14 2 18 4 2 7 2 16 11 2 7 0.000171634 -1 -2 0.467547 0 -1 10 14 1 6 2 10 17 1 3 0 0 0 0 0 0.537477 2 0.0236143 1 0 0.658648 0 -1 0 4 4 14 2 0 4 2 7 2 2 11 2 7 -0.000564278 -1 -2 0.38533 0 -1 9 14 1 6 2 9 17 1 3 0 0 0 0 0 0.519604 2 0.0066904 1 0 0.600424 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 -0.00487895 -1 -2 0.329323 0 -1 4 7 12 2 3 8 7 4 2 0 0 0 0 0 0.524524 2 -0.00685373 0 1 0.256591 0 -1 0 8 4 3 3 0 9 4 1 0 0 0 0 0 0.000998938 -1 -2 0.461549 0 -1 4 7 2 2 2 4 7 1 1 2 5 8 1 1 0.594243 2 -0.000133547 0 1 0.548738 0 -1 13 7 2 1 2 13 7 1 1 0 0 0 0 0 0.00101651 -1 -2 0.457836 0 -1 11 4 4 5 2 11 4 2 5 0 0 0 0 0 0.542693 2 0.000912168 1 0 0.393946 0 -1 4 8 3 3 3 5 8 1 3 0 0 0 0 0 0.00100803 -1 -2 0.404979 0 -1 0 3 8 1 2 4 3 4 1 0 0 0 0 0 0.55207 2 -0.000131025 1 0 0.487909 0 -1 13 7 2 1 2 13 7 1 1 0 0 0 0 0 0.000552287 -1 -2 0.484494 0 -1 14 7 3 2 3 15 7 1 2 0 0 0 0 0 0.551283 2 -0.00012131 1 0 0.436797 0 -1 5 7 2 1 2 6 7 1 1 0 0 0 0 0 -1.5113e-05 -1 -2 0.642596 0 -1 3 7 3 2 3 4 7 1 2 0 0 0 0 0 0.488183 2 -0.000401258 1 0 0.53721 0 -1 18 5 2 2 2 18 6 2 1 0 0 0 0 0 -0.000657669 -1 -2 0.583455 0 -1 12 14 2 2 2 13 14 1 1 2 12 15 1 1 0.486908 2 0.000622204 1 0 0.382464 0 -1 0 5 2 2 2 0 6 2 1 0 0 0 0 0 0.00146634 -1 -2 0.481349 0 -1 6 14 2 2 2 6 14 1 1 2 7 15 1 1 0.696674 2 -0.0495477 0 1 0.0539277 0 -1 7 12 6 5 3 9 12 2 5 0 0 0 0 0 0.00130176 -1 -2 0.533746 0 -1 12 17 5 2 2 12 18 5 1 0 0 0 0 0 0.416075 2 -0.00449145 0 1 0.599744 0 -1 1 11 6 3 2 4 11 3 3 0 0 0 0 0 0.00165924 -1 -2 0.372719 0 -1 1 9 6 3 2 4 9 3 3 0 0 0 0 0 0.511563 2 0.00646955 0 1 0.525204 0 -1 12 7 2 12 2 12 13 2 6 0 0 0 0 0 0.00498103 -1 -2 0.525672 0 -1 8 7 5 3 3 8 8 5 1 0 0 0 0 0 0.393441 2 -0.038537 0 1 0.206192 0 -1 6 7 2 12 2 6 13 2 6 0 0 0 0 0 -0.282757 -1 -2 0.0618832 0 -1 1 2 9 18 3 4 2 3 18 0 0 0 0 0 0.492506 2 -0.00903018 0 1 0.315759 0 -1 12 17 5 2 2 12 18 5 1 0 0 0 0 0 -0.0438663 -1 -2 0.203368 0 -1 4 7 12 2 2 4 7 6 2 0 0 0 0 0 0.516477 2 -0.00457011 0 1 0.661118 0 -1 6 7 6 1 3 8 7 2 1 0 0 0 0 0 -0.00233624 -1 -2 0.280779 0 -1 7 3 3 2 3 8 3 1 2 0 0 0 0 0 0.496288 2 0.00539603 0 1 0.514639 0 -1 9 4 3 1 3 10 4 1 1 0 0 0 0 0 -0.00262976 -1 -2 0.628449 0 -1 11 11 3 1 3 12 11 1 1 0 0 0 0 0 0.495559 2 -0.00385775 0 1 0.148675 0 -1 8 4 3 1 3 9 4 1 1 0 0 0 0 0 0.00139638 -1 -2 0.470134 0 -1 6 11 3 1 3 7 11 1 1 0 0 0 0 0 0.632097 2 -0.00886995 1 0 0.528682 0 -1 12 13 6 6 3 12 15 6 2 0 0 0 0 0 -0.000706263 -1 -2 0.464837 0 -1 14 13 1 6 3 14 15 1 2 0 0 0 0 0 0.533321 2 0.00426458 0 1 0.508488 0 -1 2 13 6 6 3 2 15 6 2 0 0 0 0 0 0.0615721 -1 -2 0.362963 0 -1 1 5 18 1 3 7 5 6 1 0 0 0 0 0 0.875716 2 -0.0045382 1 0 0.48567 0 -1 4 7 12 2 2 10 7 6 1 2 4 8 6 1 -0.00408779 -1 -2 0.458412 0 -1 6 1 8 10 2 10 1 4 5 2 6 6 4 5 0.542024 2 0.00643086 1 0 0.27073 0 -1 3 13 4 3 3 3 14 4 1 0 0 0 0 0 0.00704553 -1 -2 0.505749 0 -1 6 13 4 3 3 6 14 4 1 0 0 0 0 0 0.702652 2 -0.00232464 1 0 0.482728 0 -1 9 14 4 3 3 9 15 4 1 0 0 0 0 0 6.02766e-05 -1 -2 0.424725 0 -1 12 9 2 3 3 12 10 2 1 0 0 0 0 0 0.550876 2 0.0180846 1 0 0.81048 0 -1 7 14 4 3 3 7 15 4 1 0 0 0 0 0 0.000846935 -1 -2 0.515462 0 -1 9 0 2 1 2 10 0 1 1 0 0 0 0 0 0.351438 2 -0.026931 1 0 0.488689 0 -1 5 0 10 5 2 5 0 5 5 0 0 0 0 0 -0.00423466 -1 -2 0.462238 0 -1 6 6 8 7 2 6 6 4 7 0 0 0 0 0 0.538248 2 0.0269471 1 0 0.63666 0 -1 5 0 10 5 2 10 0 5 5 0 0 0 0 0 0.00464469 -1 -2 0.536851 0 -1 6 6 8 7 2 10 6 4 7 0 0 0 0 0 0.376543 2 -0.00695777 0 1 0.423469 0 -1 5 9 10 8 2 10 9 5 4 2 5 13 5 4 0.000876097 -1 -2 0.467241 0 -1 10 0 4 10 2 12 0 2 5 2 10 5 2 5 0.535068 2 0.00161033 1 0 0.573276 0 -1 1 4 8 3 3 1 5 8 1 0 0 0 0 0 -0.00128486 -1 -2 0.54818 0 -1 4 4 8 3 3 4 5 8 1 0 0 0 0 0 0.378459 2 0.0102435 0 1 0.515591 0 -1 9 7 4 3 3 9 8 4 1 0 0 0 0 0 0.000268893 -1 -2 0.535319 0 -1 12 8 3 12 2 12 14 3 6 0 0 0 0 0 0.438715 2 0.00379037 0 1 0.5032 0 -1 7 7 4 3 3 7 8 4 1 0 0 0 0 0 -0.0293697 -1 -2 0.587354 0 -1 5 8 3 12 2 5 14 3 6 0 0 0 0 0 0.221545 2 0.00607431 1 0 0.541703 0 -1 10 0 7 6 3 10 2 7 2 0 0 0 0 0 -0.0127107 -1 -2 0.605651 0 -1 2 1 18 1 3 8 1 6 1 0 0 0 0 0 0.498518 2 -0.00594454 0 1 0.335207 0 -1 5 0 3 8 3 6 0 1 8 0 0 0 0 0 -0.00289275 -1 -2 0.692924 0 -1 4 7 4 2 2 4 8 4 1 0 0 0 0 0 0.477822 7 3 6 -2.2435 1328 1 6 0.623263 0.483043 0.507911 0.606885 0.747231 0.618075 0.413542 -0.0788034 -0.447611 -0.589104 -0.549595 -0.570635 -0.462644 -0.327687 -0.0261964 0.113736 0.0216082 -0.0707817 -0.143685 -0.356914 -0.4188 -0.420425 -0.13388 0.267355 0.598552 0.704435 0.623869 0.576048 0.5079 0.407373 0.333783 -0.0230939 -0.424639 -0.800567 -0.85576 -0.637587 -0.409775 -0.159687 0.00580683 0.0538857 -0.0650469 -0.247039 -0.292479 -0.167995 -0.251696 -0.30552 -0.372988 -0.429569 -0.619078 -0.880047 -0.959196 -0.760656 -0.377095 0.0032958 0.34763 0.50114 0.530526 0.486292 0.331617 -0.0338176 -0.329994 -0.464074 -0.569984 -0.441663 -0.120354 0.0658776 0.279776 0.474369 0.417247 0.353382 0.0945356 -0.183757 -0.16674 -0.473743 -0.30617 0.0500787 0.198275 0.16764 0.0493832 -0.160088 -0.383436 -0.601355 -0.555673 -0.475544 -0.32011 -0.0257607 0.31611 0.511375 0.527629 0.156016 -0.295657 -0.56454 -0.487654 -0.34828 -0.0806881 0.353766 0.510522 0.552885 0.456441 0.427701 0.469433 0.266274 0.0615987 -0.20363 -0.0590605 -0.421882 -0.27799 0.0938345 0.393059 0.499345 0.41622 0.372375 0.355672 0.212244 -0.0907458 -0.277528 -0.411423 -0.509004 -0.541882 0.117594 0.550819 0.563411 0.0522097 -0.508403 -0.618534 -0.502627 -0.128908 -0.0839776 -0.178831 -0.0506758 0.0613511 -0.0924506 0.132522 0.405745 0.380923 0.156544 -0.121531 -0.134284 -0.384511 -0.0746661 0.143788 0.372547 0.285758 0.337977 0.374313 0.242372 0.092176 -0.0317277 -0.0163867 -0.268412 -0.59841 -0.662903 -0.144459 0.354344 0.425123 -0.0554344 -0.635616 -0.56972 -0.394723 -0.283875 -0.214016 -0.342304 -0.875061 -0.847186 -0.575329 -0.233163 -0.175979 0.0671294 0.133296 0.00778021 -0.0915352 0.225348 -0.148476 -0.382253 0.052214 0.187279 0.154906 -0.196671 -0.198184 -0.241995 -0.483503 -0.304471 -0.0904829 -0.168743 -0.29292 -0.566755 -0.713779 -0.47494 0.175347 0.426339 -0.0938432 -0.569342 -0.325556 -0.299704 -0.27622 0.152017 -0.732922 -0.198797 0.146543 0.229469 0.122645 0.213106 0.0728031 0.00754986 -0.256208 -0.00885472 0.0574308 -0.431565 -0.470053 -0.64451 -0.265541 -0.187388 -0.188222 -0.567154 -0.516763 0.0735278 0.456418 -0.0149528 -0.631314 -0.285895 -0.332067 -0.48671 -0.107058 0.461135 0.138153 -0.142573 -0.499076 -0.345633 -0.0250756 0.222695 0.341164 0.333272 0.176499 0.792731 0.20126 -0.054062 0.0629747 -0.182098 -0.86873 -0.880631 0.560894 -0.154317 -0.230849 -0.247199 -0.397215 -0.267403 0.209019 0.527688 0.238439 -0.227373 -0.347374 -0.172703 -0.440755 -0.298795 -0.140066 -0.11819 -0.242167 -0.27637 -0.30061 -0.309257 -0.237203 -0.0953731 0.251542 0.394132 0.392159 0.262255 -0.53759 0.802862 0.618264 0.24887 -0.000607345 -0.520761 -0.683721 -0.540254 -0.232894 -0.170648 -0.195386 -0.166846 -0.210557 -0.227176 -0.408013 -0.0310326 -0.253013 -0.0966267 0.342917 0.576731 0.451113 0.084285 -0.107413 0.0188512 -0.0467256 -0.184215 0.0865749 0.115687 0.00161995 -0.0766908 -0.0745084 -0.120601 -0.130329 0.00956071 0.215522 0.390962 0.356257 0.296431 -0.163502 -0.3506 0.782788 0.920884 0.371487 0.0152024 -0.421811 -0.462868 -0.432138 -0.322713 -0.145826 -0.11808 -0.131083 -0.0194955 -0.0817828 0.230268 0.108118 -0.0912658 0.138755 0.282545 0.578954 0.532475 0.251844 0.0150014 -0.0466376 0.20553 0.167832 0.41159 0.463175 0.389144 0.24173 0.0936452 0.100279 0.0661405 0.0488136 0.260757 0.262533 0.290279 0.198091 0.16227 -1.11622 -0.266298 0.499278 0.916079 0.373187 0.10122 -0.193115 -0.259686 -0.179204 -0.11667 0.00161173 0.225175 0.286377 0.305577 0.27342 0.270517 0.05651 0.106794 0.0815307 0.163393 0.596403 0.523328 0.336469 0.0170639 -0.0284378 -0.00729964 0.182776 0.299261 0.443811 0.560756 0.52916 0.467163 0.333445 0.239134 0.216961 0.266955 0.250008 0.194922 0.0690718 0.254464 -0.843211 -0.185913 0.330949 0.829082 0.316452 0.142833 -0.0650101 -0.0317445 0.0712205 0.150274 0.325089 0.552534 0.401585 0.228266 0.331911 0.0146361 -0.00483019 0.0873858 0.098003 0.095111 0.666065 0.523416 0.44632 0.122535 -0.208729 -0.0878723 0.181921 0.365009 0.385014 0.314717 0.253436 0.242877 0.314812 0.245453 0.1299 0.127829 0.130294 0.0447218 -0.0329502 0.283927 -0.668002 -0.154312 0.118434 0.626158 0.329032 0.227282 0.140448 0.197139 0.323922 0.504761 0.490004 0.454104 0.332927 0.293357 0.264276 -0.116108 -0.237846 0.0382578 0.158377 0.0585711 0.539075 0.451824 0.416212 0.187817 -0.146804 -0.268859 -0.0902684 0.263549 0.324032 0.126692 0.12377 0.0967073 0.181919 0.192044 0.115094 0.0699337 0.111989 -0.0364491 -0.0293226 0.210436 -0.437033 -0.19999 0.0220828 0.386548 0.406336 0.202597 0.21603 0.297865 0.37421 0.321277 0.23938 0.212098 0.147517 0.216604 -0.0495292 -0.409215 -0.299607 -0.0621216 0.0982613 -0.0245607 0.79098 0.793322 0.420879 0.158652 -0.131508 -0.375441 -0.444836 0.00947073 0.372586 0.332723 0.201544 0.0949147 0.0672706 0.0839739 0.0697231 0.0709288 0.0283635 -0.085697 -0.0728764 0.21025 -0.307015 -0.236751 -0.0355751 0.172644 0.315563 0.210813 0.150589 0.290837 0.278371 0.207841 0.141689 0.103703 0.189153 0.0715613 -0.415714 -0.493206 -0.219465 -0.0207913 0.15743 0.0583034 0.910402 1.10435 0.458918 0.242169 0.0113538 -0.302871 -0.554352 -0.286339 0.287368 0.44243 0.340116 0.195549 0.104374 0.00273475 -0.0238324 0.0169021 -0.0386063 -0.149476 -0.125719 0.136947 -0.240394 -0.238869 -0.0948088 0.0609419 0.256115 0.204913 0.20898 0.176384 0.204222 0.162884 0.169778 0.217984 0.249199 -0.0463073 -0.57683 -0.5618 -0.104793 -0.0403155 -0.109285 -0.307186 0.460908 0.70152 0.197084 -0.0743892 0.0704459 -0.127106 -0.554249 -0.367274 0.0682696 0.412486 0.4526 0.237009 0.124307 0.022155 -0.0708431 -0.0948125 -0.0906122 -0.19656 -0.102837 0.0937425 -0.187048 -0.147502 -0.170265 -0.0735227 0.0976562 0.0820412 0.0943118 0.0697737 0.129332 0.215483 0.290502 0.319495 0.234636 -0.116433 -0.618983 -0.566617 -0.131257 -0.371754 -1.19586 -0.592758 0.250622 0.456967 0.170544 -0.843114 -0.553434 -0.155863 -0.40714 -0.217984 0.0389639 0.196358 0.268867 0.240493 0.096747 -0.0457327 -0.066532 -0.134587 -0.1256 -0.180205 -0.117818 0.046955 -0.214118 -0.0850684 -0.223239 -0.154275 -0.0336591 0.0427423 0.0279175 0.0119131 0.0971068 0.209588 0.332141 0.289189 0.19009 -0.0367319 -0.262312 -0.333354 -0.321604 -0.472757 -0.739472 -0.495998 -0.240784 -0.00516839 -0.0264473 -0.23163 -0.270976 -0.056838 0.0967693 0.117016 0.144921 0.0624376 0.101378 0.093626 0.0565668 -0.0384202 -0.0823131 -0.14858 -0.160279 -0.201999 -0.13674 -0.061341 -0.432605 -0.0669298 -0.200048 -0.249886 -0.181021 0.0265039 -0.0365465 -0.0313269 0.0431565 0.153364 0.234334 0.194019 0.0992613 0.0654941 0.117347 0.0667366 -0.0651208 -0.324014 -0.567268 -0.293573 -0.158033 -0.193238 0.0988836 -0.127469 -0.220659 0.207307 0.514127 0.47163 0.296795 0.173791 0.0768499 0.0761019 0.00190138 -0.0653883 -0.0978477 -0.101574 -0.143221 -0.218033 -0.113413 -0.0115242 -0.427477 -0.138923 -0.303002 -0.249552 -0.061375 -0.0538632 -0.0681422 -0.0504605 0.0336572 0.0686103 0.113085 0.107453 0.243433 0.487195 0.439762 0.29221 -0.0517288 -0.273226 -0.088153 -0.0651453 -0.380128 0.138393 0.0618526 -0.0199152 0.126399 0.294552 0.402038 0.325159 0.193101 0.0882709 0.0665189 0.0654924 -0.0557314 -0.0698695 -0.0717502 -0.0827326 -0.175777 -0.0958071 -0.0704699 -0.0923878 -0.211431 -0.253392 -0.130693 -0.048849 -0.0942271 -0.105673 -0.0201833 0.0345279 0.0320925 0.154522 0.227781 0.410461 0.324288 0.212696 -0.0223608 -0.161056 -0.0559766 0.0448842 -0.380541 0.173924 0.224521 0.0546289 0.0652742 0.128447 0.224259 0.114977 0.0438755 0.0432644 0.0458123 0.0605269 0.00961362 -0.0506206 -0.0462234 -0.0833507 -0.130439 -0.112767 -0.123041 -0.0915796 -0.10812 -0.156969 -0.0145134 0.0170459 -0.0738564 -0.109064 -0.049948 -0.0338808 -0.0637681 -0.026078 0.119938 0.158368 0.182976 0.0941058 0.0389003 0.000184166 0.108778 0.00696453 -0.266861 0.106738 0.179122 0.0828993 0.110769 0.0384154 -0.0176822 -0.101101 -0.138105 -0.0803424 0.0275096 0.0757786 0.0925191 -0.0190242 -0.0247351 -0.0578282 -0.129062 -0.114197 -0.144627 -0.159352 -0.0952682 -0.123988 0.0502635 0.105232 -0.0308314 -0.1136 -0.0674647 -0.0671404 -0.135782 -0.235845 -0.127744 -0.0205892 0.0735144 0.0521831 0.0283412 0.0120333 -0.166074 -0.311511 -0.197455 -0.235039 -0.127196 -0.13948 -0.0843294 0.0212085 0.00757653 -0.0826418 -0.17432 -0.1111 0.00995712 0.166446 0.144419 0.0362309 -0.0205815 -0.04086 -0.0969934 -0.13439 -0.196608 -0.307173 -0.0349412 -0.0390054 0.0949899 0.180582 0.0341116 -0.0763702 -0.0103158 -0.0698275 -0.207767 -0.340443 -0.191968 -0.0809141 0.0295565 -0.00376214 -0.145893 -0.220311 -0.314655 -0.585054 -0.547231 -0.451091 -0.251155 -0.199701 -0.299378 -0.374119 -0.107932 0.0095834 0.000815142 -0.0308762 0.0623372 0.203897 0.177339 0.0298429 -0.043939 -0.0582814 -0.0728402 -0.109557 -0.264819 -0.0838517 0.00915912 0.130454 0.218996 0.0847602 -0.00134005 0.0551891 0.0591578 -0.100281 -0.271786 -0.170135 -0.14511 -0.18948 -0.460811 -0.479773 -0.647904 -0.640693 -0.582825 -0.879117 -0.98972 -0.661657 0.0740377 0.202867 0.0842365 0.200001 0.181099 -0.0288996 -0.0809209 -0.0489607 -0.0530027 -0.0869673 -0.410557 -0.229187 -0.0102453 0.147006 0.281609 0.136781 0.0639054 0.11661 0.149216 0.0403784 -0.0305627 0.0283547 -0.760816 -1.14673 -0.554597 -0.540861 -0.0902951 0.263148 0.264529 0.172 0.189827 0.133965 -0.0713434 -0.0970904 -0.0228955 -0.0179342 -0.0417786 -0.581129 -0.466255 0.0286439 0.142622 0.304099 0.192566 0.0325709 0.0728117 0.204462 0.173013 0.107919 0.0644596 -0.175886 -0.499747 -0.543826 -0.416797 -0.359511 -0.402662 -0.352673 -0.37864 -0.253359 -0.137456 -0.00895678 0.05295 -0.00969408 -0.00611944 0.156579 0.237378 0.270053 0.28132 0.234689 0.0941361 -0.0945024 -0.0796037 -0.0275497 -0.00932472 -0.0800757 -0.0120123 0.19372 0.273178 0.210342 0.00567843 -0.00283292 0.201832 0.253539 0.172137 0.117014 0.149038 0.00901804 -0.122188 -0.0722821 0.0201007 0.0802847 -0.0243579 0.0445901 0.0819032 0.182211 0.229003 0.187653 0.113802 0.16418 0.163456 0.224466 0.197192 0.218439 0.219593 0.0540844 -0.0574774 -0.0238332 0.0254588 0.0232885 -0.159292 -0.136792 0.178828 0.249012 0.232975 0.0394712 0.00509086 0.132469 0.307946 0.117873 0.143296 0.210802 0.100329 -0.0254813 0.00382121 0.0525701 0.102713 0.117823 0.0907234 0.0841288 0.160271 0.210963 0.211773 0.226445 0.172373 0.130619 0.137655 0.105002 0.165565 0.174217 0.0225662 -0.0187576 0.0310166 0.0854026 0.0146607 -0.369738 0.0471242 0.227176 0.277906 0.111811 0.00875457 0.0666216 0.212289 0.0914203 0.113587 0.16511 0.0920289 -0.0168675 0.00848272 0.0522136 0.0355221 0.0247475 -0.0437243 -0.0612469 0.0630056 0.201033 0.216024 0.11202 0.10722 0.0839167 0.0714075 0.0243558 0.0749034 0.0111036 0.0122681 0.0387482 0.0765993 0.0492888 -0.0673475 -0.100036 0.157014 0.271421 0.159213 0.0390859 0.0202626 0.0892168 0.0776694 0.0516584 0.13188 0.0761023 0.0321381 0.0377984 0.0310917 -0.0226604 0.00939599 -0.010491 0.00167948 0.0842227 0.133719 0.143288 0.14654 0.119993 0.0386336 -0.00977325 -0.00507006 -0.0181704 -0.0594402 0.0217064 0.104754 0.11144 -0.0113311 -0.26035 0.0719817 0.25643 0.246072 0.0729775 0.000142584 -0.0742654 0.0204304 0.0390969 0.0574038 0.0733148 0.103874 0.116067 0.116707 0.0478852 -0.0457853 -0.0884643 -0.154953 -0.0831672 0.0284784 0.104334 0.162593 0.112541 -0.0152012 -0.0499033 -0.0197497 -0.0751873 -0.086733 0.0717776 0.124932 0.0870143 -0.1362 0.121139 0.249655 0.110271 -0.0310497 -0.120413 -0.0384219 0.0432405 0.0100535 0.0165787 0.0510185 0.108241 0.122484 0.174961 0.128217 0.117936 0.147005 0.12121 0.135299 0.132812 0.126817 0.0960166 -0.0400675 -0.0920112 -0.0768674 -0.108704 -0.0944974 0.0851858 0.085144 -0.0553785 -0.140276 0.116583 0.15274 0.0405587 -0.109368 -0.116483 -0.0148225 -0.0114241 -0.00423647 0.0288036 0.106686 0.12954 0.180491 0.253741 0.250511 0.212939 0.237834 0.15854 0.12938 0.0383797 0.0181169 -0.107004 -0.10965 -0.115292 -0.131517 -0.00805002 0.0888623 -0.021489 -0.177876 -0.0229225 0.0531726 -0.0421281 -0.141093 -0.0745302 -0.0219588 -0.0217425 0.0378178 0.0864688 0.15972 0.237779 0.241924 0.246606 0.217723 0.244793 0.152 0.0796913 0.00844192 -0.048649 -0.113 -0.133845 -0.165849 -0.121878 0.0085247 0.00700563 -0.230371 -0.0876582 -0.0303734 -0.152799 -0.121337 -0.0448916 0.0178635 0.0367903 0.0756181 0.0905979 0.155266 0.145826 0.118731 0.125491 0.127101 0.0829068 0.0346941 -0.04352 -0.0436702 -0.0650366 -0.146588 -0.185721 -0.100031 -0.101273 -0.19747 -0.140505 -0.214079 -0.116899 0.0151634 0.026216 0.072928 0.0606477 0.0547937 0.0979792 0.080449 0.0857663 0.062053 0.00994852 0.016529 -0.0453253 -0.0490256 -0.066189 -0.171531 -0.148674 -0.111521 -0.264624 -0.269639 -0.242598 -0.109868 -0.00728914 0.030653 0.0524402 0.0807258 0.0602077 0.0588578 0.0492709 0.051759 0.0442122 0.00179862 0.00966734 -0.0300758 -0.0849871 -0.16344 -0.121469 -0.350259 -0.326249 -0.200494 -0.10128 -0.00445752 0.0282298 0.0455222 0.082789 0.0286826 -0.00581873 -0.0202676 -0.00992105 -0.0909018 -0.161074 -0.192008 -0.395061 -0.279311 -0.214642 -0.198601 -0.123433 -0.129753 -0.15099 -0.156039 -0.143937 1 1328 -20.6547 -18.6656 132 1 6 -20.6547 -20.0519 -19.1146 -17.7568 -15.6469 -12.4006 -8.27017 -3.55056 1.65875 6.75338 11.0958 14.7165 17.3322 18.7221 19.3316 19.5157 19.3623 -16.9434 -14.6923 -11.7473 -8.64008 -5.61118 3.24342 6.14406 9.21432 12.2557 14.7675 -0.800008 -0.571382 -0.341526 -0.111056 -3.34691 -1.6415 0.142254 1.89493 3.5165 -12.5316 -10.6698 -8.3451 -6.35058 -8.3556 -10.5048 4.83678 6.66716 8.99246 11.0209 9.08377 6.92444 -6.63855 -4.73902 -2.32888 0.427259 3.15408 5.72158 7.86034 6.14905 3.75933 0.883179 -2.0422 -4.62825 -2.38864 0.55887 3.50364 3.65722 0.689237 -2.33557 -5.64822 -0.423649 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.90089 1.2941 1.35258 1.04463 0.412997 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 91 3 4 20 21 23 21 22 23 0 1 36 15 16 45 0 17 36 16 26 45 17 18 37 25 26 44 17 36 37 26 44 45 18 19 38 24 25 43 18 37 38 25 43 44 19 20 38 23 24 43 20 21 39 22 23 42 20 38 39 23 42 43 21 22 27 21 27 39 22 27 42 27 28 42 27 28 39 28 42 47 28 39 40 1 36 41 15 45 46 1 2 41 14 15 46 28 29 40 28 29 47 2 40 41 14 46 47 2 29 40 14 29 47 2 3 29 13 14 29 29 30 31 29 30 35 3 29 31 13 29 35 30 32 33 30 33 34 30 31 32 30 34 35 3 4 31 12 13 35 4 5 48 11 12 54 5 6 48 10 11 54 6 48 59 10 54 55 6 7 59 9 10 55 7 58 59 9 55 56 8 57 58 8 56 57 7 8 58 8 9 56 4 31 48 12 35 54 31 48 49 35 53 54 31 49 50 35 52 53 31 32 50 34 35 52 32 33 50 33 34 52 33 50 51 33 51 52 48 49 60 49 60 50 50 60 61 50 51 61 51 52 61 61 62 52 52 53 62 53 54 62 54 55 63 55 56 63 56 63 64 56 57 64 64 65 57 57 58 65 58 59 65 48 59 65 42 41 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 1 17 17 15 15 15 11 11 11 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10 10 14 14 14 16 16 16 20 20 20 20 20 20 20 20 22 17 17 15 15 15 11 11 13 7 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 10 10 10 14 14 14 16 16 21 21 20 20 20 20 20 20 22 22 17 17 19 15 11 11 13 7 7 7 5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 6 6 10 10 10 14 14 16 16 21 21 20 20 20 20 20 20 22 22 17 17 19 15 11 13 7 7 9 9 5 5 -1 -1 -1 -1 -1 -1 -1 -1 4 6 6 6 12 12 10 14 14 18 16 21 21 21 20 20 20 20 22 22 22 17 19 19 11 13 13 7 9 9 5 5 5 -1 -1 -1 -1 -1 -1 -1 -1 4 4 8 6 6 12 12 10 14 18 16 21 21 21 21 20 20 22 22 22 22 22 19 19 13 13 9 9 9 5 5 5 5 5 -1 -1 -1 -1 -1 -1 4 4 4 4 8 8 6 12 12 10 18 16 21 21 21 21 21 22 22 22 22 22 22 19 -1 -1 -1 -1 -1 5 5 5 5 5 5 5 -1 -1 -1 -1 -1 4 4 4 4 4 8 8 -1 -1 -1 -1 18 21 21 24 24 24 23 23 23 23 23 25 25 25 -1 -1 28 28 28 3 5 5 5 5 5 -1 -1 -1 -1 4 4 4 4 4 4 2 -1 -1 -1 -1 26 26 26 26 24 24 24 24 23 23 25 25 32 32 36 36 34 34 30 28 28 3 3 3 5 5 5 -1 -1 -1 4 4 4 4 2 2 27 27 33 33 35 35 35 31 31 31 31 31 24 32 32 32 32 36 36 36 36 36 34 34 30 28 28 3 3 3 3 3 -1 -1 4 4 4 4 2 2 27 27 29 33 35 35 35 35 35 35 31 31 31 31 32 32 32 36 36 36 36 36 36 36 34 34 30 28 28 3 3 3 3 3 -1 4 4 2 2 2 27 27 29 33 33 35 35 35 35 35 35 35 35 31 31 32 36 36 36 36 36 36 36 36 36 36 34 30 30 30 28 3 3 3 3 -1 2 2 2 2 27 27 29 33 33 35 35 35 35 35 35 35 35 35 35 35 36 36 36 36 36 36 36 36 36 36 36 36 34 30 30 30 28 3 3 3 -1 2 2 2 2 27 29 29 33 35 35 35 35 35 35 35 35 35 35 37 39 42 38 36 36 36 36 36 36 36 36 36 36 36 34 30 30 30 30 3 3 -1 2 2 2 27 29 29 33 35 35 35 35 35 35 35 35 35 37 37 41 39 40 42 42 38 38 36 36 36 36 36 36 36 36 36 34 30 30 30 30 3 -1 2 2 27 29 29 29 33 35 35 35 35 35 35 35 37 37 41 41 39 39 40 40 42 42 38 38 38 36 36 36 36 36 36 36 36 34 30 30 30 30 -1 2 29 29 29 29 33 35 35 35 35 35 35 35 37 37 41 41 41 39 45 44 40 42 42 42 42 38 38 38 38 36 36 36 36 36 36 34 30 30 30 -1 29 29 29 29 33 35 35 35 35 35 35 37 37 37 41 41 41 41 45 43 44 46 40 42 42 42 42 38 38 38 38 38 38 36 36 36 36 30 30 30 -1 29 29 29 29 35 35 35 35 35 37 37 37 37 41 41 41 41 45 45 43 44 44 46 46 42 42 42 42 42 38 38 38 38 38 38 36 36 36 30 30 -1 29 29 29 33 35 35 35 37 37 37 37 37 41 41 41 41 63 69 69 71 72 72 70 70 64 48 42 42 42 42 38 38 38 38 38 38 38 38 36 30 -1 -1 29 29 35 35 37 37 37 37 37 37 41 41 41 47 63 67 69 71 71 74 72 70 70 66 64 48 48 42 42 42 42 38 38 38 38 38 38 38 -1 -1 -1 29 35 35 37 37 37 37 37 37 41 41 41 47 47 63 67 69 71 73 74 74 72 68 68 64 64 48 48 48 42 42 42 38 38 38 38 38 38 -1 -1 -1 35 37 37 37 37 37 37 37 41 41 47 47 47 63 65 67 67 73 73 73 74 74 68 68 66 64 64 48 48 48 48 48 42 42 38 38 38 38 -1 -1 -1 37 37 37 37 37 37 41 41 41 47 47 47 63 63 65 67 67 73 73 73 79 79 81 68 68 66 64 64 64 48 48 48 48 48 42 38 38 38 -1 -1 -1 37 37 37 37 37 41 41 47 47 47 47 63 63 63 65 76 76 77 78 78 79 80 80 81 82 66 64 64 64 64 48 48 48 48 48 48 42 38 -1 -1 -1 -1 37 37 37 41 47 47 47 47 47 63 63 63 65 75 75 76 77 77 -1 -1 -1 -1 -1 82 82 66 64 64 64 64 48 48 48 48 48 48 48 -1 -1 -1 -1 37 37 41 47 47 47 47 47 63 63 63 63 75 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 83 83 83 50 64 64 64 64 48 48 48 48 48 48 -1 -1 -1 -1 37 47 47 47 47 47 47 63 63 63 63 53 90 90 90 89 87 87 87 85 85 85 84 83 83 54 52 50 50 50 64 64 48 48 48 48 -1 -1 -1 -1 -1 -1 47 47 47 47 47 63 63 63 49 49 53 53 90 89 89 88 87 87 86 86 85 84 84 56 54 54 52 50 50 50 50 64 64 48 48 -1 -1 -1 -1 -1 -1 47 47 47 47 63 63 49 49 49 51 53 53 55 57 89 88 88 87 86 86 86 58 58 56 54 54 52 52 50 50 50 50 50 64 48 -1 -1 -1 -1 -1 -1 -1 47 47 63 63 49 49 49 51 51 53 53 55 57 57 59 59 59 60 60 60 58 58 56 56 54 52 52 52 50 50 50 50 50 -1 -1 -1 -1 -1 -1 -1 -1 47 63 49 49 49 49 49 51 51 53 53 55 57 57 61 59 59 60 60 60 58 58 56 56 54 54 52 52 52 50 50 50 50 -1 -1 -1 -1 -1 -1 -1 -1 -1 49 49 49 49 49 51 51 51 53 55 55 57 57 61 59 59 60 60 62 62 58 58 56 56 54 52 52 52 52 50 50 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 49 49 49 51 51 51 51 53 55 55 57 57 61 59 59 60 60 62 62 58 58 56 56 54 52 52 52 52 50 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 49 49 49 51 51 51 53 55 55 55 57 61 61 61 59 60 60 62 62 58 58 56 56 56 52 52 52 52 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 49 51 51 51 51 53 55 55 55 57 61 61 61 59 60 60 62 62 62 58 56 56 56 54 52 52 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 51 51 51 51 53 55 55 55 57 61 61 61 59 60 60 62 62 62 58 56 56 56 56 52 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 51 51 55 55 55 55 57 61 61 61 61 59 62 62 62 62 58 56 56 56 56 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 51 55 55 55 55 57 61 61 61 61 59 62 62 62 62 58 56 56 56 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 55 55 55 57 61 61 61 61 59 62 62 62 62 62 56 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 55 61 61 61 61 61 62 62 62 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 42 41 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 91 3 6 22.7259 0.0907014 1.27152 29.386 0.232632 1.68286 2.90581 0.0912225 0.180878 -4.31161 0.18827 -0.195723 -2.47823 -0.0777993 -0.154262 -2.4839 0.0568033 -0.162574 -1.89812 0.145961 -0.312175 -0.48549 0.280494 0.163289 2.7705 -0.213046 0.455652 0.767628 -0.352395 -0.272673 -1.46301 0.234737 -0.304078 -0.523497 0.305164 0.122599 2.43132 -0.390101 0.505336 0.773074 -0.446646 -0.260015 0.59289 0.316655 -0.182134 -2.49716 0.322454 -0.0281788 1.06275 0.351718 -0.114513 -2.41943 0.317198 -0.0803081 -1.82068 -0.602557 0.196182 3.98322 -0.514345 0.0449479 -1.07853 0.105808 -0.100216 1.39466 0.185445 0.0212205 1.38962 -0.182185 0.0461255 3.85597 -0.0346672 0.334609 3.8466 0.0811239 0.325821 -8.8991 -0.271891 -1.01737 -8.9492 0.123005 -1.04945 -8.09861 -0.394885 -0.425869 -8.04398 0.333844 -0.46944 3.13835 0.153024 0.165031 -3.98752 0.225212 -0.181891 2.87904 -0.039572 0.337619 2.86765 0.0876143 0.327838 8.06473 0.498066 0.305369 -7.76091 0.447292 -0.440064 1.41689 0.0912848 0.068808 1.42484 -0.0821193 0.0807923 1.01351 0.0966422 0.174915 -0.975205 0.121061 -0.181346 1.82125 0.621421 0.287038 1.93223 -0.59421 0.3809 -0.246688 -0.131415 -0.214394 -0.263686 0.102193 -0.231659 0.0314727 -0.56179 0.0358161 0.68874 -0.520504 0.284866 -0.610815 -0.537886 -0.21028 1.27171 -0.420725 0.503085 0.199862 0.10647 0.173698 -0.425377 0.140995 -0.170537 -0.86832 0.105554 0.177491 -0.213512 0.164396 -0.138216 0.171067 0.168239 0.106989 -1.24097 0.21862 -0.0611774 -0.288381 -0.374091 -0.135184 -0.345274 0.35591 -0.186086 0.142352 0.18466 0.06673 -1.26388 0.223629 -0.0112285 2.24312 0.401516 -0.0360487 -0.202544 0.358392 -0.10108 2.04844 0.345212 -0.114453 -0.0189783 0.343515 -0.0240527 0.0808773 0.190838 0.0263122 -1.1817 0.203232 0.0368803 0.817858 -0.09942 -0.167177 0.804519 0.0767781 -0.180412 -2.18916 -0.698085 -0.163472 2.87993 -0.879693 0.516981 -1.29993 -0.3662 0.08246 1.55837 -0.464307 0.180047 2.19546 0.61848 -0.139268 -0.859465 0.549147 -0.173391 0.795097 0.557571 0.0928493 0.481249 0.498823 -0.408263 0.0166435 -0.362205 0.0257889 -0.322539 -0.334317 0.273623 4.80307 -0.208128 -0.699621 -1.90977 0.278837 0.472002 -3.13447 -0.283352 0.456404 3.86363 0.349267 -0.562575 -0.0175149 0.363678 -0.0257437 -3.17789 0.347731 0.413537 -0.972417 0.418074 -0.0687976 -3.23979 0.174961 0.367039 -5.2933 0.111014 0.566432 -2.5536 -0.193774 0.378093 3.28188 0.275357 -0.381182 -3.34157 -0.280364 0.388114 0.0129238 -0.33101 0.0236308 -4.55225 -0.353973 0.41143 -1.34658 -0.404899 0.0442741 -5.28975 -0.0288067 0.576747 91 3 6 -4.07155 0.0490576 -0.260502 -21.6576 -0.0901608 -1.26761 2.32708 0.116336 -0.0134226 2.37523 -0.121119 0.00353436 3.67497 0.158651 0.0704798 3.68947 -0.151174 0.0895525 3.38183 0.107024 0.112015 3.38199 -0.0905406 0.125688 0.75244 0.309219 -0.320429 2.75835 0.276275 0.4203 2.99358 0.0486356 0.141087 2.99242 -0.0282196 0.146387 0.773933 0.404774 -0.320254 2.43174 0.45847 0.445295 2.91137 0.00472711 0.166343 2.91127 0.0190857 0.165391 2.36782 -0.0285296 0.151496 2.36888 0.0501598 0.146197 4.00836 0.51441 -0.0252762 -1.79101 0.626281 0.112329 3.15124 0.0131187 0.18444 1.48601 -0.145782 0.138079 1.49081 0.165279 0.117051 -0.0144706 0.178812 -0.0135716 0.0143094 -0.17682 0.0134204 6.49684 0.329575 0.734024 6.57071 -0.219787 0.779141 8.47963 0.415797 0.335459 8.42104 -0.367711 0.382269 1.7922 0.0897204 -0.0162022 1.81477 -0.0935358 -0.00326762 0.011611 -0.129634 0.00996937 -0.0117084 0.130721 -0.010053 -7.85776 -0.506247 -0.381596 7.96831 -0.450044 0.363476 -0.695669 -0.0663349 -0.120061 -0.701168 0.0496119 -0.128106 0.944888 0.0462779 -0.0126511 0.950906 -0.0485854 -0.00579798 0.0260259 -0.285082 0.0220117 -0.0269036 0.294697 -0.0227541 1.5304 0.22822 0.259109 1.56185 -0.193887 0.290437 0.628571 0.553521 0.216393 -0.0316098 0.564236 -0.035972 1.2189 0.483859 0.444601 -0.672621 0.508322 -0.278199 1.203 0.0538075 -0.0254329 1.21174 -0.0581969 -0.0171565 2.04985 0.07297 -0.0639618 2.06501 -0.0831352 -0.0527308 2.02949 0.0529499 -0.0766932 2.04071 -0.0644247 -0.0684616 2.40002 0.442178 0.0605639 2.46888 -0.434939 0.121711 2.08635 0.0352768 -0.0864762 2.09335 -0.0478382 -0.0806827 -0.155085 -0.365939 -0.0504545 2.29648 -0.406335 0.0204023 0.0189247 -0.342544 0.0239847 2.08735 -0.358987 -0.0651451 2.0746 0.00388833 -0.0908724 2.07637 -0.0168479 -0.0894475 0.620231 0.246756 0.228263 0.656386 -0.217565 0.26315 2.77206 0.932287 0.38653 -2.27149 0.676773 -0.262437 1.51004 0.481527 0.11276 -1.3386 0.377186 0.029592 -0.390215 -0.0537916 0.233302 -0.398083 0.0869791 0.223298 -0.324773 -0.0078993 0.240944 -0.327286 0.0417437 0.237581 -0.354821 0.368216 0.223603 -0.0167104 0.36366 -0.0258926 -0.584725 0.328323 0.312701 3.8287 0.142991 -0.460298 0.741603 0.340427 0.00944494 -2.88107 0.0129414 0.536935 -2.88349 0.0631785 0.533379 3.39058 -0.00924361 -0.469238 -1.88065 -0.209995 0.505315 -0.544448 -0.282154 0.353936 4.02527 -0.283117 -0.230621 4.91664 -0.215478 -0.3626 1.11535 -0.334881 0.012678 4.35498 -0.0630698 -0.363597 -3.35226 -0.00640786 0.368557 4.41172 0.0110311 -0.37393 4.90886 0.160514 -0.390276 4.01409 0.245855 -0.269449 6 -1.41084 642 1 6 -0.229138 -0.342096 -0.435054 -0.497543 -0.473292 -0.410801 -0.259749 -0.188997 -0.0891568 -0.313809 -0.578583 -0.631612 -0.608174 -0.52452 -0.354501 -0.287024 -0.27085 -0.255214 -0.246498 -0.158981 -0.157238 -0.246565 -0.332129 -0.327564 -0.288244 -0.143322 -0.104807 0.00969226 0.00823118 -0.00921247 -0.110622 -0.182004 -0.177111 -0.0710213 -0.118147 -0.202979 -0.231444 -0.14728 0.00933428 0.0968805 0.164604 0.182241 0.137217 0.0709353 -0.00203208 -0.0845348 -0.01734 0.131079 -0.0411704 -0.0992257 -0.178669 -0.288786 -0.328105 -0.213287 -0.0412528 0.00877609 0.11068 0.161382 0.163185 0.119232 -0.00420354 -0.000347168 0.360222 0.132415 -0.0347328 -0.0756998 -0.206521 -0.429496 -0.426498 -0.381032 -0.195975 -0.127047 -0.0611995 -0.0892674 -0.0129688 0.0759774 0.081313 0.0821374 0.137196 0.449483 0.361856 0.0503861 -0.0243986 -0.0710027 -0.265362 -0.498382 -0.510169 -0.0583733 0.0972897 0.156185 0.0944394 0.159709 0.218012 0.34422 0.339807 0.0437636 -0.064934 -0.0484084 -0.202793 -0.366114 -0.457795 0.0266252 -0.140781 -0.194509 -0.0517417 0.156725 0.146521 0.128616 0.128561 0.133954 0.303174 0.0981582 -0.0468601 -0.0628898 -0.141841 -0.258679 -0.219613 -0.0558679 0.0461725 0.042142 0.0081171 0.0610856 0.0733726 0.177568 0.131711 0.107395 0.140225 0.0346425 -0.153247 0.261082 0.187549 0.0854307 0.00307952 -0.0264841 -0.158934 -0.157064 0.00310336 0.00424241 0.0428952 0.0663485 0.133913 0.156927 0.1668 0.119175 0.0691781 0.115149 -0.0210788 -0.168654 0.226825 0.17563 0.153301 0.105573 0.106449 0.0547876 -0.0233314 0.0658891 0.0976637 0.153281 0.159065 0.178442 0.192328 0.11882 0.0810918 0.0203633 0.0646629 -0.00545284 -0.159905 -0.210331 0.201427 0.143093 0.127276 0.180399 0.193085 0.178461 0.0938818 0.170798 0.221838 0.265582 0.218584 0.211523 0.200701 0.117625 0.0278791 -0.012134 0.0305471 -0.0156446 -0.183543 -0.168981 0.175422 0.0882466 0.101788 0.154166 0.191616 0.187154 0.146299 0.184549 0.259641 0.259257 0.248737 0.210442 0.137973 0.0825725 0.00482543 -0.0247265 0.0128163 -0.0121374 -0.13813 -0.10499 0.145193 0.0533783 0.011672 0.0832952 0.219978 0.222641 0.215035 0.173664 0.205639 0.249126 0.206432 0.148102 0.0949642 0.0262702 -0.0185792 -0.0266492 0.0187361 -0.0322968 -0.114993 -0.0414796 0.245142 0.111649 -0.0401896 -0.117109 0.159479 0.157637 0.177991 0.181959 0.208288 0.21212 0.148182 0.124594 0.0616133 -0.0209508 -0.0216908 -0.0262879 0.0110096 -0.0410204 -0.116593 -0.0270853 0.315634 0.201775 0.177457 -0.0427288 -0.0756415 0.0703775 0.0816063 0.190621 0.230739 0.204243 0.12655 0.07134 0.0381182 -0.00404485 -0.0215907 -0.00865347 0.0017018 -0.0476841 -0.125073 -0.039106 0.144883 -0.170021 -0.00751101 0.0712355 -0.231243 0.0240905 0.0563357 0.139673 0.21313 0.184238 0.0932578 0.0570697 0.015701 -0.0089469 -0.044044 -0.0233585 -0.0247527 -0.0582376 -0.0974607 -0.0297168 -0.1562 -0.289255 -0.33037 -0.0464933 -0.23575 -0.0158885 0.0139892 0.083424 0.142293 0.121535 0.0605468 0.0290612 -0.00326567 -0.0185593 -0.0342025 -0.02121 -0.0574236 -0.0752143 -0.108567 -0.0743619 -0.183352 0.0226307 -0.0205212 -0.185863 -0.0442135 0.0946416 -0.0789009 0.0351899 0.052456 0.0511055 0.0258277 0.020872 0.00141575 -0.0124566 -0.0331589 -0.0293904 -0.0596236 -0.0753986 -0.0974114 -0.0956824 -0.176061 -0.026241 0.0165459 0.000799791 0.0565201 0.107067 -0.0758108 -0.0489389 0.00388595 0.0124476 0.00240463 0.00626842 0.00110845 -0.020014 -0.0288288 -0.0469481 -0.0691599 -0.0891266 -0.146963 -0.11131 -0.247355 -0.0923444 0.0160489 0.0386353 0.0377207 0.0487897 -0.0683742 -0.0948205 -0.0283998 -0.0283121 -0.00792872 -0.00231621 -0.00767136 -0.0271916 -0.0342774 -0.0237391 -0.0559661 -0.0904784 -0.142792 -0.202677 -0.0948073 0.0461865 0.038093 0.0440789 0.00830153 -0.0133566 -0.0689964 -0.0324316 -0.00395833 -0.00355956 0.0114843 0.0131352 -0.0318672 -0.0221516 -0.025695 -0.0379526 -0.0789668 -0.164661 -0.000738646 0.132441 0.171507 0.14303 0.114406 0.0415121 -0.0576986 -0.0569161 0.00775604 0.0389119 0.0373291 0.0187183 -0.00809879 -0.0183155 -0.00730157 -0.0343966 -0.0635447 -0.15888 -0.147617 -0.0474673 0.0716807 0.133625 0.235253 0.0666988 -0.0467351 -0.027641 0.0276273 0.0520571 0.0814359 0.0417175 0.00221689 -0.00421763 0.00221261 -0.0138004 -0.0594484 -0.174633 -0.303034 -0.281213 -0.330283 -0.408104 -0.168204 -0.0604001 -0.0305703 -0.0153369 0.094119 0.0931352 0.10239 0.0473788 0.0199307 -0.00287946 0.00537511 -0.00315129 -0.0491345 -0.187168 -0.470086 -0.417353 -0.279156 0.0352802 0.0937176 0.144504 0.0791088 0.0413956 0.0331328 0.0140807 -0.00432201 -0.0141012 -0.0463092 -0.188401 -0.462145 -0.486097 -0.204723 0.0365832 0.0867299 0.136793 0.076672 0.0583754 0.0572949 0.0274796 -0.00257327 -0.00633421 -0.0565259 -0.192409 -0.241994 -0.163531 -0.00329836 -0.0103637 -0.0387723 -0.0567753 0.146717 -0.00950213 0.0156434 0.0900663 0.0739471 0.067142 0.0521588 0.013624 0.0159171 -0.0109652 -0.0735784 -0.0960133 0.0435681 0.117909 0.135601 0.0759608 0.149461 0.184945 0.0591852 -0.00505096 0.0382164 0.0506666 0.0475438 0.0327374 -0.0139075 -0.0130354 -0.00236552 -0.0464339 -0.0988322 -0.0288621 -0.00213429 0.0396101 0.116323 0.177676 0.162036 0.0579 -0.0153517 0.0200273 0.0233199 0.0423598 0.0320809 -0.00038944 -0.0319774 -0.0259382 -0.0498243 -0.143768 -0.182309 -0.126565 0.0401184 0.116245 0.152559 0.139714 0.0491775 -0.0239676 -0.0292883 -0.00491885 0.0214951 0.0274669 -0.0182689 -0.0273807 -0.0291538 -0.0999042 -0.0904442 -0.0306169 0.0506478 0.12121 0.138187 0.0864958 0.0151197 0.00975271 -0.0167952 -0.0388751 0.00923133 0.0146675 -0.00648375 -0.0210482 -0.0659143 -0.00323474 0.011808 0.0429001 0.0878522 0.131457 0.12006 0.0712131 0.0232431 -0.00619243 -0.058229 -0.0425944 0.01377 0.00921718 -0.0037824 -0.0553703 0.106752 0.12724 0.116897 0.13672 0.154118 0.136275 0.0907085 0.0377523 -0.00588459 -0.0583466 -0.039738 -0.0249391 0.00175965 -0.0321719 0.137511 0.186052 0.190132 0.173419 0.179223 0.15314 0.10992 0.0380026 -0.0276196 -0.0590655 -0.0271101 0.00691691 -0.0216868 0.139236 0.189689 0.214823 0.210466 0.194385 0.150269 0.115546 0.0279836 -0.0537297 -0.0496783 -0.0205187 -0.0319495 0.140441 0.182164 0.250387 0.230456 0.185829 0.142997 0.0899882 -0.00628175 -0.0743692 -0.0528165 -0.0466005 0.133484 0.187869 0.203883 0.186129 0.145956 0.0416264 -0.0457256 -0.0935063 -0.0628973 0.0805673 0.130514 0.15426 0.134912 0.0778683 -0.0103545 -0.101087 -0.0768935 -0.0344459 -0.0138445 -0.0229982 0.0134838 -0.0512096 -0.074295 -0.198002 -0.209223 -0.196956 1 642 -20.6547 -18.6656 132 1 6 -20.6547 -20.0519 -19.1146 -17.7568 -15.6469 -12.4006 -8.27017 -3.55056 1.65875 6.75338 11.0958 14.7165 17.3322 18.7221 19.3316 19.5157 19.3623 -16.9434 -14.6923 -11.7473 -8.64008 -5.61118 3.24342 6.14406 9.21432 12.2557 14.7675 -0.800008 -0.571382 -0.341526 -0.111056 -3.34691 -1.6415 0.142254 1.89493 3.5165 -12.5316 -10.6698 -8.3451 -6.35058 -8.3556 -10.5048 4.83678 6.66716 8.99246 11.0209 9.08377 6.92444 -6.63855 -4.73902 -2.32888 0.427259 3.15408 5.72158 7.86034 6.14905 3.75933 0.883179 -2.0422 -4.62825 -2.38864 0.55887 3.50364 3.65722 0.689237 -2.33557 -5.64822 -0.423649 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.90089 1.2941 1.35258 1.04463 0.412997 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 44 3 4 15 16 45 16 26 45 25 26 44 26 44 45 24 25 43 25 43 44 23 24 43 22 23 42 23 42 43 22 27 42 27 28 42 28 42 47 15 45 46 14 15 46 28 29 47 14 46 47 14 29 47 13 14 29 29 30 35 13 29 35 30 33 34 30 34 35 12 13 35 11 12 54 10 11 54 10 54 55 9 10 55 9 55 56 8 56 57 8 9 56 12 35 54 35 53 54 35 52 53 34 35 52 33 34 52 33 51 52 51 52 61 61 62 52 52 53 62 53 54 62 54 55 63 55 56 63 56 63 64 56 57 64 42 41 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 7 7 6 6 6 4 4 4 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 7 7 6 6 6 4 4 5 2 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 7 7 8 6 4 4 5 2 2 2 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 7 7 8 6 4 5 2 2 3 3 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 9 7 8 8 4 5 5 2 3 3 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 9 9 9 8 8 5 5 3 3 3 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 9 9 9 9 9 8 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10 10 10 10 10 11 11 11 -1 -1 12 12 12 0 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 10 10 11 11 14 14 16 16 15 15 13 12 12 0 0 0 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 14 14 14 14 16 16 16 16 16 15 15 13 12 12 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 14 14 14 16 16 16 16 16 16 16 15 15 13 12 12 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 14 16 16 16 16 16 16 16 16 16 16 15 13 13 13 12 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 16 16 16 16 16 16 16 16 16 16 16 15 13 13 13 12 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 19 17 16 16 16 16 16 16 16 16 16 16 16 15 13 13 13 13 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 18 19 19 17 17 16 16 16 16 16 16 16 16 16 15 13 13 13 13 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 18 18 19 19 17 17 17 16 16 16 16 16 16 16 16 15 13 13 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 20 18 19 19 19 19 17 17 17 17 16 16 16 16 16 16 15 13 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 20 21 18 19 19 19 19 17 17 17 17 17 17 16 16 16 16 13 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 20 20 21 21 19 19 19 19 19 17 17 17 17 17 17 16 16 16 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 34 34 33 33 30 22 19 19 19 19 17 17 17 17 17 17 17 17 16 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 35 34 33 33 31 30 22 22 19 19 19 19 17 17 17 17 17 17 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 35 35 34 32 32 30 30 22 22 22 19 19 19 17 17 17 17 17 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 35 35 32 32 31 30 30 22 22 22 22 22 19 19 17 17 17 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 36 36 38 32 32 31 30 30 30 22 22 22 22 22 19 17 17 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 36 37 37 38 39 31 30 30 30 30 22 22 22 22 22 22 19 17 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 39 39 31 30 30 30 30 22 22 22 22 22 22 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 40 40 40 23 30 30 30 30 22 22 22 22 22 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 42 42 42 41 40 40 25 24 23 23 23 30 30 22 22 22 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 43 43 42 41 41 26 25 25 24 23 23 23 23 30 30 22 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 43 43 43 27 27 26 25 25 24 24 23 23 23 23 23 30 22 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 28 27 27 26 26 25 24 24 24 23 23 23 23 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 28 27 27 26 26 25 25 24 24 24 23 23 23 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 27 27 26 26 25 24 24 24 24 23 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 27 27 26 26 25 24 24 24 24 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 27 27 26 26 26 24 24 24 24 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 29 27 26 26 26 25 24 24 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 28 28 29 29 29 27 26 26 26 26 24 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 29 29 29 29 27 26 26 26 26 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 29 29 29 29 27 26 26 26 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 29 29 29 29 29 26 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 29 29 29 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 42 41 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   44 3 6 -4.31161 0.18827 -0.195723 -2.4839 0.0568033 -0.162574 -0.48549 0.280494 0.163289 0.767628 -0.352395 -0.272673 -0.523497 0.305164 0.122599 0.773074 -0.446646 -0.260015 -2.49716 0.322454 -0.0281788 -2.41943 0.317198 -0.0803081 3.98322 -0.514345 0.0449479 1.38962 -0.182185 0.0461255 3.85597 -0.0346672 0.334609 -8.8991 -0.271891 -1.01737 -8.04398 0.333844 -0.46944 -3.98752 0.225212 -0.181891 2.86765 0.0876143 0.327838 -7.76091 0.447292 -0.440064 1.42484 -0.0821193 0.0807923 -0.975205 0.121061 -0.181346 1.93223 -0.59421 0.3809 -0.263686 0.102193 -0.231659 0.68874 -0.520504 0.284866 1.27171 -0.420725 0.503085 -0.425377 0.140995 -0.170537 -0.213512 0.164396 -0.138216 -1.24097 0.21862 -0.0611774 -0.345274 0.35591 -0.186086 -1.26388 0.223629 -0.0112285 -0.202544 0.358392 -0.10108 -0.0189783 0.343515 -0.0240527 -1.1817 0.203232 0.0368803 0.804519 0.0767781 -0.180412 2.87993 -0.879693 0.516981 1.55837 -0.464307 0.180047 -0.859465 0.549147 -0.173391 0.481249 0.498823 -0.408263 -0.322539 -0.334317 0.273623 -0.0175149 0.363678 -0.0257437 -3.17789 0.347731 0.413537 -0.972417 0.418074 -0.0687976 -3.23979 0.174961 0.367039 -5.2933 0.111014 0.566432 -2.5536 -0.193774 0.378093 3.28188 0.275357 -0.381182 -3.34157 -0.280364 0.388114 44 3 6 2.37523 -0.121119 0.00353436 3.68947 -0.151174 0.0895525 3.38199 -0.0905406 0.125688 2.75835 0.276275 0.4203 2.99242 -0.0282196 0.146387 2.43174 0.45847 0.445295 2.91127 0.0190857 0.165391 2.36888 0.0501598 0.146197 -1.79101 0.626281 0.112329 1.49081 0.165279 0.117051 -0.0144706 0.178812 -0.0135716 6.49684 0.329575 0.734024 8.42104 -0.367711 0.382269 1.81477 -0.0935358 -0.00326762 -0.0117084 0.130721 -0.010053 7.96831 -0.450044 0.363476 -0.701168 0.0496119 -0.128106 0.950906 -0.0485854 -0.00579798 -0.0269036 0.294697 -0.0227541 1.56185 -0.193887 0.290437 -0.0316098 0.564236 -0.035972 -0.672621 0.508322 -0.278199 1.21174 -0.0581969 -0.0171565 2.06501 -0.0831352 -0.0527308 2.04071 -0.0644247 -0.0684616 2.46888 -0.434939 0.121711 2.09335 -0.0478382 -0.0806827 2.29648 -0.406335 0.0204023 2.08735 -0.358987 -0.0651451 2.07637 -0.0168479 -0.0894475 0.656386 -0.217565 0.26315 -2.27149 0.676773 -0.262437 -1.3386 0.377186 0.029592 -0.398083 0.0869791 0.223298 -0.327286 0.0417437 0.237581 -0.0167104 0.36366 -0.0258926 -2.88349 0.0631785 0.533379 3.39058 -0.00924361 -0.469238 -1.88065 -0.209995 0.505315 -0.544448 -0.282154 0.353936 4.02527 -0.283117 -0.230621 4.91664 -0.215478 -0.3626 1.11535 -0.334881 0.012678 4.35498 -0.0630698 -0.363597 6 -1.35685 653 1 6 -0.1098 -0.211349 -0.312218 -0.329083 -0.322195 -0.276521 -0.204835 -0.0361057 -0.140523 -0.305985 -0.391965 -0.390452 -0.455127 -0.512671 -0.559451 -0.513571 -0.490571 -0.277802 -0.0333117 -0.206069 -0.276326 -0.233597 -0.152524 -0.137754 -0.146755 -0.191939 -0.281475 -0.364643 -0.31651 -0.251553 -0.128505 -0.144964 -0.170683 -0.095257 0.0123117 0.0838017 0.125275 0.0812552 -0.0388612 -0.120785 -0.242729 -0.205848 -0.126245 -0.0216738 0.0822074 -0.10687 -0.0184377 0.0682778 0.122225 0.130139 0.103574 0.0963061 -0.0697316 -0.244103 -0.34209 -0.197172 -0.0563225 0.0175577 0.0827474 0.312059 0.00566386 -0.0415579 0.0716005 0.103446 0.0450845 -0.0146125 -0.0925795 -0.0990304 -0.244961 -0.442316 -0.461251 -0.335267 -0.112719 -0.0180612 0.0327305 0.198577 0.427527 0.0677001 -0.00160185 0.0796855 0.0431031 -0.138431 -0.253547 -0.327676 -0.447526 -0.122557 0.0359831 -0.0410852 0.100638 0.376312 0.231054 0.107182 0.0707745 0.0977549 0.0410471 -0.168042 -0.592087 -0.443013 -0.324582 -0.0496244 0.00532065 -0.0317698 0.112496 0.2782 0.33706 0.173718 0.151612 0.140253 0.166212 0.117761 -0.0526467 -0.108083 -0.0592217 -0.0244675 -0.0507921 -0.166631 -0.219314 -0.202927 -0.0574452 0.0129191 0.0208015 0.16938 0.256726 0.363296 -0.161302 0.0570747 0.1619 0.143915 0.150639 0.152873 0.126492 0.108373 0.0445161 0.0130894 0.0174787 -0.0553333 -0.11529 -0.130493 0.0331928 0.0721688 0.153201 0.176987 0.207237 0.334254 -0.210865 -0.00819124 0.13789 0.115843 0.153191 0.184456 0.145956 0.156605 0.113403 0.118173 0.0738238 0.0346273 0.0452499 0.0974988 0.174328 0.189664 0.212382 0.104264 0.146593 0.269318 -0.185857 -0.0497556 0.105906 0.0970851 0.123261 0.145807 0.164657 0.19103 0.18931 0.183885 0.151852 0.13684 0.122255 0.188143 0.248004 0.224631 0.170985 0.0524169 0.0970537 0.255172 -0.208495 -0.0893337 0.0761735 0.059234 0.0642052 0.0874943 0.14861 0.200985 0.226071 0.248516 0.195226 0.142646 0.132068 0.199223 0.237888 0.192365 0.0775725 -0.0143053 0.028969 0.228331 -0.202502 -0.0953761 0.045672 0.0502379 0.0183664 0.0666487 0.134391 0.161803 0.202372 0.237145 0.207897 0.148158 0.137296 0.16872 0.175707 0.139839 -0.0694222 -0.0692079 0.0230107 0.263003 -0.176166 -0.0659921 0.0116594 0.0347963 0.00305719 0.0263498 0.0637447 0.124708 0.182316 0.218197 0.235301 0.189637 0.173696 0.144519 0.106203 0.0231482 -0.1078 0.0680429 0.122139 0.329013 -0.0976383 -0.0758124 0.0217611 0.0345143 -0.004716 -0.00689305 0.0249401 0.0740927 0.131801 0.172749 0.216012 0.240643 0.204053 0.110484 0.0468854 -0.0837928 -0.0482264 0.149829 -0.119901 0.102163 0.0133592 -0.0538652 -0.00462294 0.00977685 -0.0218277 -0.0356321 -0.0121193 0.0149026 0.0884582 0.142171 0.203942 0.20704 0.171499 0.0682697 0.0199595 -0.113025 -0.100976 -0.347098 -0.421744 -0.266188 0.055822 -0.0630405 -0.0341456 -0.00172322 -0.0180043 -0.0467841 -0.0288743 -0.00781338 0.0469965 0.0683338 0.119253 0.143582 0.102324 0.0159166 -0.00672509 -0.0272345 -0.203273 -0.0938749 0.0121025 -0.0532965 0.0667043 -0.0482105 -0.0442173 -0.0509093 -0.0145393 -0.0548868 -0.0445648 -0.0243641 0.00138075 0.0151432 0.0338352 0.0576139 0.0385988 -0.0285342 0.00960517 0.119383 -0.0416415 -0.0829324 0.00132579 -0.050498 -0.0626203 -0.0697639 -0.0420595 -0.0346471 -0.0370465 -0.0452066 -0.0374199 -0.0202013 -0.0141998 -0.0133042 0.000416262 -0.00514089 -0.0655234 0.0250193 0.140183 0.0580999 -0.00746433 -0.0154728 -0.12677 -0.0764455 -0.0474155 -0.0577616 -0.0371724 -0.0396205 -0.0569209 -0.054872 -0.0206026 -0.0356152 -0.0252482 -0.0184496 -0.034308 -0.0647248 -0.0305155 0.0749458 0.0398899 0.0101691 0.00397646 -0.0827515 -0.0857373 -0.063861 -0.0407783 -0.0324608 -0.0306425 -0.0402907 -0.0596773 -0.0267509 0.0106291 0.00408676 -0.0244404 -0.0430118 -0.0650145 -0.0304257 0.0439901 0.0758004 0.07707 0.0877745 -0.017723 -0.110189 -0.102596 -0.100083 -0.0533799 -0.0328175 -0.0201284 -0.0195591 -0.0483811 -0.00349751 0.012961 -0.0110591 -0.032614 -0.0626239 -0.0700576 -0.00842555 0.095857 0.126673 0.119792 0.0353096 -0.131831 -0.211061 -0.165584 -0.0810638 -0.0627594 -0.0290699 -0.0100143 -0.0134837 -0.0210609 0.0144445 0.0308056 -0.0118519 -0.0247454 -0.063684 -0.0734964 -0.0167584 0.0662864 -0.0339124 -0.17237 -0.322669 -0.27379 -0.295613 -0.130846 -0.0852942 -0.0284661 -0.0114784 -0.0128179 -0.00802686 0.0341804 0.0573941 0.0355876 0.0214973 -0.0356826 -0.0857869 -0.12105 -0.241469 -0.428758 -0.49764 -0.435445 -0.317376 -0.158998 -0.0835252 -0.0179585 0.0166161 -0.00159016 0.00803864 0.0561073 0.0712137 0.0466256 0.0520652 -0.0409669 -0.183255 -0.435711 -0.162719 -0.0908093 -0.0298288 0.0164219 0.0412218 0.0319229 0.0612769 0.0649102 0.080704 0.0677866 0.00335052 -0.0864381 -0.275475 -0.307744 -0.260612 -0.210563 -0.217846 -0.225578 -0.187828 -0.0830118 -0.0201334 0.0118158 0.0413162 0.0372302 0.0489428 0.0432502 0.0695059 0.0738667 -0.00101631 -0.00730479 0.0929783 0.0374697 -0.0192633 -0.00408658 0.0637097 0.0436661 -0.0389302 -0.105206 -0.00875169 0.0104858 0.0209764 0.0384004 0.0630279 0.0494571 0.0453783 0.0556259 -0.0199507 0.0242607 0.129767 0.153967 0.0752776 0.0430211 0.0487952 0.0504643 -0.0519514 -0.0260151 0.0127588 0.0169443 0.0178278 0.0520955 0.061707 0.0489218 0.0381496 -0.00498182 0.0360127 0.0926927 0.115552 0.113574 0.0351675 -0.0153387 -0.0718983 -0.149644 -0.0298004 0.012503 0.0113469 0.00635995 0.0331221 0.0609931 0.0477704 0.0282339 -0.00941507 0.02073 0.0674168 0.0811155 0.0767169 0.0631551 0.0135107 -0.0642434 -0.118162 0.0146882 0.0116869 0.00411791 0.0337086 0.0610205 0.0360355 -0.000783214 0.0226398 0.0418133 0.0478023 0.0764996 0.0861692 0.0945795 0.0832353 0.0106318 -0.00938577 -0.00662454 0.00618966 0.0305577 0.0434248 0.0375327 0.00281279 0.0107827 0.0343775 0.0719598 0.0911631 0.113717 0.119473 0.115514 0.13562 0.123796 -0.0133937 -0.00516196 0.036545 0.0679044 0.0519343 0.00870685 -0.00580157 0.0383404 0.0819867 0.0992864 0.107126 0.15136 0.177436 0.175792 0.184582 -0.0188941 0.00322551 0.0307536 0.0494038 0.021831 -0.0103495 -0.00374629 0.0589839 0.101298 0.126017 0.189852 0.213409 0.222514 0.197826 -0.0472999 0.00821943 0.020567 0.0273177 0.00941736 -0.0109966 0.0234136 0.105071 0.138474 0.174881 0.189462 0.240013 0.198392 -0.0206917 0.00948281 0.00368 -0.0437657 -0.0120675 0.0532602 0.107015 0.133217 0.140208 0.181327 0.165085 0.0936744 -0.0412768 -0.0212722 -0.0327954 -0.0246955 -0.012377 0.0572379 0.0720384 0.110237 0.122175 0.0805515 0.0308916 -0.0538278 -0.048487 -0.101114 -0.0850886 -0.0394513 -0.00308506 0.00720565 0.0148116 -0.0871444 -0.166542 -0.188835 -0.185787 -0.176831 -0.214663 -0.229556 1 653 -20.6547 -18.6656 132 1 6 -20.6547 -20.0519 -19.1146 -17.7568 -15.6469 -12.4006 -8.27017 -3.55056 1.65875 6.75338 11.0958 14.7165 17.3322 18.7221 19.3316 19.5157 19.3623 -16.9434 -14.6923 -11.7473 -8.64008 -5.61118 3.24342 6.14406 9.21432 12.2557 14.7675 -0.800008 -0.571382 -0.341526 -0.111056 -3.34691 -1.6415 0.142254 1.89493 3.5165 -12.5316 -10.6698 -8.3451 -6.35058 -8.3556 -10.5048 4.83678 6.66716 8.99246 11.0209 9.08377 6.92444 -6.63855 -4.73902 -2.32888 0.427259 3.15408 5.72158 7.86034 6.14905 3.75933 0.883179 -2.0422 -4.62825 -2.38864 0.55887 3.50364 3.65722 0.689237 -2.33557 -5.64822 -0.423649 4.7667 9.73356 14.1974 17.9009 20.7526 22.6779 22.9008 21.9412 19.3665 15.9593 11.8354 7.12069 2.01325 -3.2566 -8.51341 -14.0024 -16.1532 -17.1684 -17.2567 -16.6863 -17.3161 -18.3113 -18.6656 -18.0793 -16.2699 -11.6067 -8.59445 -5.60559 -2.62069 0.90089 1.2941 1.35258 1.04463 0.412997 -9.74495 -11.0691 -11.2534 -10.2247 -9.50683 -9.27615 -11.0227 -12.3254 -12.4738 -11.4279 -10.6753 -10.5977 8.84013 6.8457 5.4219 5.35547 5.03248 6.09946 7.80446 9.90529 11.3254 11.8243 11.738 10.6744 7.57584 7.21472 7.15671 8.62822 9.10764 9.05505 44 3 4 0 1 36 0 17 36 17 18 37 17 36 37 18 19 38 18 37 38 19 20 38 20 21 39 20 38 39 21 27 39 27 28 39 28 39 40 1 36 41 1 2 41 28 29 40 2 40 41 2 29 40 2 3 29 29 30 31 3 29 31 30 32 33 30 31 32 3 4 31 4 5 48 5 6 48 6 48 59 6 7 59 7 58 59 8 57 58 7 8 58 4 31 48 31 48 49 31 49 50 31 32 50 32 33 50 33 50 51 48 49 60 49 60 50 50 60 61 50 51 61 64 65 57 57 58 65 58 59 65 48 59 65 42 41 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 4 4 6 6 6 7 7 7 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 4 4 4 6 6 6 7 7 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 2 2 4 4 4 6 6 7 7 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 2 2 2 5 5 4 6 6 8 7 9 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 3 2 2 5 5 4 6 8 7 9 9 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 3 3 2 5 5 4 8 7 9 9 9 9 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 3 3 -1 -1 -1 -1 8 9 9 10 10 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 0 -1 -1 -1 -1 11 11 11 11 10 10 10 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 0 0 12 12 15 15 16 16 16 14 14 14 14 14 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 0 0 12 12 13 15 16 16 16 16 16 16 14 14 14 14 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 0 0 0 12 12 13 15 15 16 16 16 16 16 16 16 16 14 14 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 12 12 13 15 15 16 16 16 16 16 16 16 16 16 16 16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 12 13 13 15 16 16 16 16 16 16 16 16 16 16 17 18 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 12 13 13 15 16 16 16 16 16 16 16 16 16 17 17 19 18 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 12 13 13 13 15 16 16 16 16 16 16 16 17 17 19 19 18 18 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 13 13 13 13 15 16 16 16 16 16 16 16 17 17 19 19 19 18 21 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 13 13 13 15 16 16 16 16 16 16 17 17 17 19 19 19 19 21 20 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 13 13 13 16 16 16 16 16 17 17 17 17 19 19 19 19 21 21 20 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 13 13 15 16 16 16 17 17 17 17 17 19 19 19 19 30 33 33 34 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 13 16 16 17 17 17 17 17 17 19 19 19 22 30 32 33 34 34 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 13 16 16 17 17 17 17 17 17 19 19 19 22 22 30 32 33 34 35 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 16 17 17 17 17 17 17 17 19 19 22 22 22 30 31 32 32 35 35 35 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 17 17 17 17 17 19 19 19 22 22 22 30 30 31 32 32 35 35 35 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 17 17 17 17 19 19 22 22 22 22 30 30 30 31 37 37 38 39 39 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 17 17 19 22 22 22 22 22 30 30 30 31 36 36 37 38 38 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 17 19 22 22 22 22 22 30 30 30 30 36 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 17 22 22 22 22 22 22 30 30 30 30 25 43 43 43 42 40 40 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 22 22 22 22 22 30 30 30 23 23 25 25 43 42 42 41 40 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 22 22 22 22 30 30 23 23 23 24 25 25 26 27 42 41 41 40 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 22 22 30 30 23 23 23 24 24 25 25 26 27 27 28 28 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 22 30 23 23 23 23 23 24 24 25 25 26 27 27 29 28 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 23 23 23 23 23 24 24 24 25 26 26 27 27 29 28 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 23 23 23 24 24 24 24 25 26 26 27 27 29 28 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 23 23 23 24 24 24 25 26 26 26 27 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 23 24 24 24 24 25 26 26 26 27 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 24 24 24 24 25 26 26 26 27 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 24 24 26 26 26 26 27 29 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 24 26 26 26 26 27 29 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 26 26 26 27 29 29 29 29 28 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 26 29 29 29 29 29 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 42 41 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              44 3 6 2.90581 0.0912225 0.180878 -2.47823 -0.0777993 -0.154262 -1.89812 0.145961 -0.312175 2.7705 -0.213046 0.455652 -1.46301 0.234737 -0.304078 2.43132 -0.390101 0.505336 0.59289 0.316655 -0.182134 1.06275 0.351718 -0.114513 -1.82068 -0.602557 0.196182 1.39466 0.185445 0.0212205 3.8466 0.0811239 0.325821 -8.9492 0.123005 -1.04945 -8.09861 -0.394885 -0.425869 3.13835 0.153024 0.165031 2.87904 -0.039572 0.337619 8.06473 0.498066 0.305369 1.41689 0.0912848 0.068808 1.01351 0.0966422 0.174915 1.82125 0.621421 0.287038 -0.246688 -0.131415 -0.214394 0.0314727 -0.56179 0.0358161 -0.610815 -0.537886 -0.21028 0.199862 0.10647 0.173698 -0.86832 0.105554 0.177491 0.171067 0.168239 0.106989 -0.288381 -0.374091 -0.135184 0.142352 0.18466 0.06673 2.24312 0.401516 -0.0360487 2.04844 0.345212 -0.114453 0.0808773 0.190838 0.0263122 0.817858 -0.09942 -0.167177 -2.18916 -0.698085 -0.163472 -1.29993 -0.3662 0.08246 2.19546 0.61848 -0.139268 0.795097 0.557571 0.0928493 0.0166435 -0.362205 0.0257889 4.80307 -0.208128 -0.699621 -1.90977 0.278837 0.472002 -3.13447 -0.283352 0.456404 3.86363 0.349267 -0.562575 0.0129238 -0.33101 0.0236308 -4.55225 -0.353973 0.41143 -1.34658 -0.404899 0.0442741 -5.28975 -0.0288067 0.576747 44 3 6 2.32708 0.116336 -0.0134226 3.67497 0.158651 0.0704798 3.38183 0.107024 0.112015 0.75244 0.309219 -0.320429 2.99358 0.0486356 0.141087 0.773933 0.404774 -0.320254 2.91137 0.00472711 0.166343 2.36782 -0.0285296 0.151496 4.00836 0.51441 -0.0252762 1.48601 -0.145782 0.138079 0.0143094 -0.17682 0.0134204 6.57071 -0.219787 0.779141 8.47963 0.415797 0.335459 1.7922 0.0897204 -0.0162022 0.011611 -0.129634 0.00996937 -7.85776 -0.506247 -0.381596 -0.695669 -0.0663349 -0.120061 0.944888 0.0462779 -0.0126511 0.0260259 -0.285082 0.0220117 1.5304 0.22822 0.259109 0.628571 0.553521 0.216393 1.2189 0.483859 0.444601 1.203 0.0538075 -0.0254329 2.04985 0.07297 -0.0639618 2.02949 0.0529499 -0.0766932 2.40002 0.442178 0.0605639 2.08635 0.0352768 -0.0864762 -0.155085 -0.365939 -0.0504545 0.0189247 -0.342544 0.0239847 2.0746 0.00388833 -0.0908724 0.620231 0.246756 0.228263 2.77206 0.932287 0.38653 1.51004 0.481527 0.11276 -0.390215 -0.0537916 0.233302 -0.324773 -0.0078993 0.240944 -0.354821 0.368216 0.223603 -0.584725 0.328323 0.312701 3.8287 0.142991 -0.460298 0.741603 0.340427 0.00944494 -2.88107 0.0129414 0.536935 -3.35226 -0.00640786 0.368557 4.41172 0.0110311 -0.37393 4.90886 0.160514 -0.390276 4.01409 0.245855 -0.269449 132 1 6 -1.48514 -1.46509 -1.41889 -1.34124 -1.18709 -0.937523 -0.621347 -0.268475 0.117437 0.496454 0.822908 1.10406 1.30944 1.41162 1.43416 1.42476 1.38928 -1.20848 -1.07764 -0.878198 -0.655394 -0.434822 0.264582 0.477937 0.699107 0.90952 1.06351 -0.0579142 -0.0401739 -0.0225292 -0.00496145 -0.261042 -0.126064 0.0119111 0.147738 0.278208 -0.877872 -0.746557 -0.576717 -0.431194 -0.574253 -0.730215 0.324609 0.457678 0.627624 0.772099 0.631309 0.474522 -0.453414 -0.317312 -0.15224 0.0335401 0.21521 0.391274 0.543732 0.39817 0.232665 0.054876 -0.125037 -0.297861 -0.136382 0.0408012 0.216349 0.220279 0.0457716 -0.132065 -0.571236 -0.180538 0.208769 0.592441 0.948413 1.24275 1.46757 1.62901 1.65024 1.57457 1.36479 1.09746 0.77075 0.396537 0.0057352 -0.386191 -0.77579 -0.937727 -1.11049 -1.20218 -1.2065 -1.17123 -1.221 -1.28715 -1.31443 -1.25191 -1.09941 -0.813817 -0.56453 -0.316582 -0.0697161 0.139796 0.162023 0.167377 0.142538 0.101422 -0.684455 -0.786728 -0.799568 -0.721978 -0.663401 -0.646474 -0.775765 -0.87318 -0.884519 -0.801873 -0.743364 -0.738036 0.670062 0.544878 0.455505 0.471311 0.429356 0.494452 0.599101 0.680016 0.743476 0.771125 0.768931 0.729549 0.574397 0.573345 0.549296 0.607259 0.643189 0.632333 0.277703 0.0709181 0.00378804 0.112153 \ No newline at end of file diff --git a/pix_opencv-meta.pd b/pix_opencv-meta.pd deleted file mode 100644 index 11221b6..0000000 --- a/pix_opencv-meta.pd +++ /dev/null @@ -1,9 +0,0 @@ -#N canvas 13 111 200 200 10; -#N canvas 23 83 420 300 META 1; -#X text 13 10 NAME pix_opencv; -#X text 10 65 VERSION 0.2; -#X text 10 85 LICENSE Intel License Agreement For Open Source Computer -Vision Library; -#X text 10 30 AUTHOR Yves Degoyon \, Lluis Gomez -i Bigorda and Antoine Villleret; -#X restore 10 10 pd META; diff --git a/pix_opencv_athreshold-help.pd b/pix_opencv_athreshold-help.pd deleted file mode 100644 index 61afeba..0000000 --- a/pix_opencv_athreshold-help.pd +++ /dev/null @@ -1,188 +0,0 @@ -#N canvas 67 259 976 687 10; -#X obj -362 59 cnv 15 430 470 empty empty empty 20 12 0 14 -233017 --66577 0; -#X obj -362 13 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text -353 17 Arguments:; -#X obj -363 -83 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 --66577 0; -#X text -332 37 none; -#X obj 74 -140 cnv 15 510 670 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 250 -136 gemhead; -#X obj 234 459 pix_texture; -#X obj 234 478 square 2; -#X obj 356 452 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 366 496 pd gemwin; -#X msg 366 478 destroy; -#X obj 79 463 pix_texture; -#X obj 79 483 square 2; -#X obj 234 171 separator; -#X obj 262 -109 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 319 66 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 301 31 5 0 10000 1 frame# - -; -#X obj 262 -80 openpanel; -#X msg 262 -60 open \$1; -#X obj 250 49 pix_film; -#X msg 268 -17 auto \$1; -#X obj 268 -35 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X obj 227 217 cnv 15 350 230 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X text 364 458 Create window and render; -#X obj 234 417 pix_opencv_athreshold; -#X floatatom 393 388 5 0 0 0 - - -; -#X msg 288 326 mode \$1; -#X floatatom 390 360 5 0 0 0 - - -; -#X text 426 388 ( default 3 ); -#X msg 264 240 method \$1; -#X msg 286 287 dim \$1; -#X floatatom 337 290 5 0 0 0 - - -; -#X text -344 367 written by Yves Degoyon ( ydegoyon@gmail.com ); -#X msg 363 -34 colorspace RGBA; -#X msg 378 -16 colorspace RGB; -#X msg 388 4 colorspace Grey; -#X obj 363 -62 loadbang; -#X obj 234 142 pix_separator; -#X obj 79 174 separator; -#X obj 79 145 pix_separator; -#X obj 79 199 translateXYZ -2 0 0; -#X obj 234 196 translateXYZ 2 0 0; -#N canvas 115 397 321 254 vswitch 0; -#X obj -109 160 outlet; -#X obj -109 31 inlet; -#X obj -5 31 inlet; -#X obj 40 31 inlet; -#X obj -109 88 spigot 1; -#X obj -5 90 spigot 0; -#X obj -64 67 == 0; -#X connect 1 0 4 0; -#X connect 2 0 5 0; -#X connect 3 0 5 1; -#X connect 3 0 6 0; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 4 1; -#X restore 79 84 pd vswitch; -#X obj 147 85 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 79 52 pix_video; -#X obj 79 -136 gemhead; -#X msg 118 -23 device 0; -#X msg 127 8 driver 1; -#X msg 104 -77 dialog; -#X msg 109 -47 device /dev/dv1394-0; -#X text 373 289 value to correct the theshold; -#X text 390 346 MaxValue (default 255); -#X text 367 325 inverse mode ( default 0 ); -#X text -356 -79 Thresholding is used to segment an image by setting -all pixels whose intensity values are above a threshold to a foreground -value and all the remaining pixels to a background value.; -#X text -354 66 Whereas the conventional thresholding operator uses -a global threshold for all pixels \, adaptive thresholding changes -the threshold dynamically over the image. This more sophisticated version -of thresholding can accommodate changing lighting conditions in the -image \, e.g. those occurring as a result of a strong illumination -gradient or shadows.; -#X text -325 205 - zero otherwise; -#X text -351 168 Adaptive thresholding sets a pixel dst(x \, y) value -to:; -#X text -325 190 - MaxValue (see MaxValue inlet) if src(x \, y) > T(x -\, y); -#X text -347 238 Where T(x \, y) is a threshold calculated individually -for each pixel. For the method ADAPTIVE_THRESH_MEAN_C the threshold -value is the mean of a blockSize x blockSize (see blocksize inlet) -neighborhood of (x \, y) \, minus dim parameter value (see dim message). -; -#X text -347 314 For the method ADAPTIVE_THRESH_GAUSSIAN_C the threshold -value is the weighted sum (i.e. cross-correlation with a Gaussian window) -of a blockSize x blockSize neighborhood of (x \, y) \, minus dim parameter -value.; -#X text 391 374 blockSize; -#X obj 338 241 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X text 256 218 Thresholding method ( default 0 ); -#X obj 347 327 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X text 356 235 0 = CV_ADAPTIVE_THRESH_MEAN_C; -#X text 356 245 1 = CV_ADAPTIVE_THRESH_GAUSSIAN_C; -#X obj 79 110 pix_rgba; -#X text -356 -103 pix_opencv_athreshold :; -#X connect 6 0 20 0; -#X connect 7 0 8 0; -#X connect 10 0 11 0; -#X connect 11 0 10 0; -#X connect 12 0 13 0; -#X connect 14 0 42 0; -#X connect 15 0 18 0; -#X connect 16 0 17 0; -#X connect 17 0 20 1; -#X connect 18 0 19 0; -#X connect 19 0 20 0; -#X connect 20 0 43 1; -#X connect 20 2 16 0; -#X connect 21 0 20 0; -#X connect 22 0 21 0; -#X connect 25 0 7 0; -#X connect 26 0 25 2; -#X connect 27 0 25 0; -#X connect 28 0 25 1; -#X connect 30 0 25 0; -#X connect 31 0 25 0; -#X connect 32 0 31 0; -#X connect 34 0 20 0; -#X connect 34 0 45 0; -#X connect 35 0 20 0; -#X connect 36 0 20 0; -#X connect 37 0 34 0; -#X connect 37 0 22 0; -#X connect 38 0 14 0; -#X connect 39 0 41 0; -#X connect 40 0 39 0; -#X connect 41 0 12 0; -#X connect 42 0 25 0; -#X connect 43 0 67 0; -#X connect 44 0 43 2; -#X connect 45 0 43 0; -#X connect 46 0 45 0; -#X connect 47 0 45 0; -#X connect 48 0 45 0; -#X connect 49 0 45 0; -#X connect 50 0 45 0; -#X connect 62 0 30 0; -#X connect 64 0 27 0; -#X connect 67 0 40 0; -#X connect 67 0 38 0; diff --git a/pix_opencv_athreshold.cc b/pix_opencv_athreshold.cc deleted file mode 100644 index ee819b0..0000000 --- a/pix_opencv_athreshold.cc +++ /dev/null @@ -1,258 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_athreshold.h" - -CPPEXTERN_NEW(pix_opencv_athreshold) - -///////////////////////////////////////////////////////// -// -// pix_opencv_athreshold -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_athreshold :: pix_opencv_athreshold() -{ - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("max_value")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("blocksize")); - - max_value = 255; - x_threshold_mode = 0; - x_threshold_method = CV_ADAPTIVE_THRESH_MEAN_C; - x_blocksize = 3; - x_dim = 0; - - comp_xsize=320; - comp_ysize=240; - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_athreshold :: ~pix_opencv_athreshold() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_athreshold :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgba ) - { - cvReleaseImage(&rgba); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - } - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - } - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor(rgba, gray, CV_BGRA2GRAY); - - // Applies fixed-level thresholding to single-channel array. - switch(x_threshold_mode) { - case 0: - cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY, x_blocksize, x_dim); - break; - case 1: - cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY_INV, x_blocksize, x_dim); - break; - } - - cvCvtColor(gray, rgba, CV_GRAY2BGRA); - //copy back the processed frame to image - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_athreshold :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgb ) - { - cvReleaseImage(&rgba); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - } - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - // Applies fixed-level thresholding to single-channel array. - switch(x_threshold_mode) { - case 0: - cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY, x_blocksize, x_dim); - break; - case 1: - cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY_INV, x_blocksize, x_dim); - break; - } - - cvCvtColor(gray, rgb, CV_GRAY2BGR); - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_athreshold :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_athreshold : yuv format not supported" ); -} - -void pix_opencv_athreshold :: processGrayImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgb ) - { - cvReleaseImage(&rgba); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - } - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - // Applies fixed-level thresholding to single-channel array. - switch(x_threshold_mode) { - case 0: - cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY, x_blocksize, x_dim); - break; - case 1: - cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY_INV, x_blocksize, x_dim); - break; - } - - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); -} - -void pix_opencv_athreshold :: floatMaxValueMess (float maxvalue) -{ - if ( (int)maxvalue>0 ) max_value = (int)maxvalue; -} - -void pix_opencv_athreshold :: floatModeMess (float mode) -{ - if ( ( (int)mode==0 ) || ( (int)mode==1 ) ) x_threshold_mode = (int)mode; -} - -void pix_opencv_athreshold :: floatMethodMess (float method) -{ - if ( (int)method==CV_ADAPTIVE_THRESH_MEAN_C ) x_threshold_method = CV_ADAPTIVE_THRESH_MEAN_C; - if ( (int)method==CV_ADAPTIVE_THRESH_GAUSSIAN_C ) x_threshold_method = CV_ADAPTIVE_THRESH_GAUSSIAN_C; -} - -void pix_opencv_athreshold :: floatBlockSizeMess (float blocksize) -{ - if ( ( (int)blocksize>=3 ) && ( (int)(blocksize+1)%2 == 0 ) ) - { - x_blocksize = (int)blocksize; - } -} - -void pix_opencv_athreshold :: floatDimMess (float dim) -{ - if ( (int)dim>0 ) x_dim = (int)dim; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_athreshold :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatModeMessCallback, - gensym("mode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatMethodMessCallback, - gensym("method"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatMaxValueMessCallback, - gensym("max_value"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatBlockSizeMessCallback, - gensym("blocksize"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatDimMessCallback, - gensym("dim"), A_FLOAT, A_NULL); -} - -void pix_opencv_athreshold :: floatModeMessCallback(void *data, t_floatarg mode) -{ - GetMyClass(data)->floatModeMess((float)mode); -} - -void pix_opencv_athreshold :: floatMethodMessCallback(void *data, t_floatarg method) -{ - GetMyClass(data)->floatMethodMess((float)method); -} - -void pix_opencv_athreshold :: floatMaxValueMessCallback(void *data, t_floatarg maxvalue) -{ - GetMyClass(data)->floatMaxValueMess((float)maxvalue); -} - -void pix_opencv_athreshold :: floatBlockSizeMessCallback(void *data, t_floatarg blocksize) -{ - GetMyClass(data)->floatBlockSizeMess((float)blocksize); -} - -void pix_opencv_athreshold :: floatDimMessCallback(void *data, t_floatarg dim) -{ - GetMyClass(data)->floatDimMess((float)dim); -} diff --git a/pix_opencv_athreshold.h b/pix_opencv_athreshold.h deleted file mode 100644 index 48913a4..0000000 --- a/pix_opencv_athreshold.h +++ /dev/null @@ -1,95 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Adaptive threshold object - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_ATHRESHOLD_H_ -#define INCLUDE_PIX_OPENCV_ATHRESHOLD_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_athreshold - - Adaptive threshold object - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_athreshold : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_athreshold, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_athreshold(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_athreshold(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatMaxValueMess(float maxvalue); - void floatModeMess(float mode); - void floatMethodMess(float method); - void floatBlockSizeMess(float blocksize); - void floatDimMess(float dim); - - // The new edge threshold - int max_value; - int x_threshold_mode; - int x_threshold_method; - int x_blocksize; - int x_dim; - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - ////////// - // Static member functions - static void floatMaxValueMessCallback(void *data, float maxvalue); - static void floatModeMessCallback(void *data, float mode); - static void floatMethodMessCallback(void *data, float method); - static void floatBlockSizeMessCallback(void *data, float blocksize); - static void floatDimMessCallback(void *data, float dim); - - ///////// - // IplImage needed - IplImage *rgba, *rgb, *gray; -}; - -#endif // for header file diff --git a/pix_opencv_bgstats-help.pd b/pix_opencv_bgstats-help.pd deleted file mode 100644 index 9413df2..0000000 --- a/pix_opencv_bgstats-help.pd +++ /dev/null @@ -1,150 +0,0 @@ -#N canvas 94 527 960 504 10; -#X obj -7 39 cnv 15 430 270 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj -7 -7 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 2 -3 Arguments:; -#X obj -8 -103 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text -3 -148 Class: pix_opencv; -#X text 23 17 none; -#X obj 431 -180 cnv 15 510 490 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 591 232 pix_texture; -#X obj 591 250 square 2; -#X obj 714 229 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 192 276 gemwin; -#X msg 191 223 create \, 1; -#X msg 267 224 destroy; -#X msg 313 196 frame 25; -#X obj 194 186 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 726 275 pd gemwin; -#X msg 726 251 create; -#X text 722 231 Create window and render; -#X obj 440 231 pix_texture; -#X obj 440 249 square 2; -#X obj 585 173 cnv 15 200 50 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 591 203 pix_opencv_bgstats; -#X text 5 -90 pix_opencv_bgstats : background and foreground extraction -using a statitical method.; -#X obj 677 -168 gemhead; -#X obj 591 127 separator; -#X obj 689 -141 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 746 34 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 728 -1 5 0 10000 1 frame# - -; -#X obj 689 -112 openpanel; -#X msg 689 -92 open \$1; -#X obj 677 17 pix_film; -#X msg 695 -49 auto \$1; -#X obj 695 -67 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X msg 790 -66 colorspace RGBA; -#X msg 801 -46 colorspace RGB; -#X msg 810 -26 colorspace Grey; -#X obj 790 -94 loadbang; -#X obj 591 108 pix_separator; -#X obj 440 130 separator; -#X obj 440 111 pix_separator; -#X obj 440 150 translateXYZ -2 0 0; -#X obj 591 147 translateXYZ 2 0 0; -#N canvas 3 83 450 300 vswitch 0; -#X obj 36 140 outlet; -#X obj 36 26 inlet; -#X obj 130 25 inlet; -#X obj 175 25 inlet; -#X obj 36 103 spigot 1; -#X obj 130 104 spigot 0; -#X obj 81 78 == 0; -#X connect 1 0 4 0; -#X connect 2 0 5 0; -#X connect 3 0 6 0; -#X connect 3 0 5 1; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 4 1; -#X restore 440 59 pd vswitch; -#X obj 508 59 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 440 15 pix_video; -#X obj 440 -169 gemhead; -#X msg 479 -60 device 0; -#X msg 488 -29 driver 1; -#X msg 465 -114 dialog; -#X msg 470 -84 device /dev/dv1394-0; -#X obj 440 38 pix_resize 160 120; -#X text 6 51 Objects disappear from the background after a certain -amount of time of presence \, they are then considered as background. -; -#X msg 609 179 reset; -#X text 655 180 reset the background; -#X obj 440 83 pix_rgba; -#X text 6 116 written by Yves Degoyon ( ydegoyon.gmail.com ); -#X text -2 -164 Synopsis: [pix_opencv_bgstats]; -#X connect 7 0 8 0; -#X connect 10 0 11 0; -#X connect 11 0 10 0; -#X connect 13 0 14 0; -#X connect 16 0 7 0; -#X connect 18 0 25 0; -#X connect 19 0 36 0; -#X connect 20 0 23 0; -#X connect 21 0 22 0; -#X connect 22 0 25 1; -#X connect 23 0 24 0; -#X connect 24 0 25 0; -#X connect 25 0 37 1; -#X connect 25 2 21 0; -#X connect 26 0 25 0; -#X connect 27 0 26 0; -#X connect 28 0 25 0; -#X connect 28 0 39 0; -#X connect 29 0 25 0; -#X connect 30 0 25 0; -#X connect 31 0 28 0; -#X connect 31 0 27 0; -#X connect 32 0 19 0; -#X connect 33 0 35 0; -#X connect 34 0 33 0; -#X connect 35 0 13 0; -#X connect 36 0 16 0; -#X connect 37 0 49 0; -#X connect 38 0 37 2; -#X connect 39 0 45 0; -#X connect 40 0 39 0; -#X connect 41 0 39 0; -#X connect 42 0 39 0; -#X connect 43 0 39 0; -#X connect 44 0 39 0; -#X connect 45 0 37 0; -#X connect 47 0 16 0; -#X connect 49 0 34 0; -#X connect 49 0 32 0; diff --git a/pix_opencv_bgstats.cc b/pix_opencv_bgstats.cc deleted file mode 100644 index c1fe298..0000000 --- a/pix_opencv_bgstats.cc +++ /dev/null @@ -1,251 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_bgstats.h" - -CPPEXTERN_NEW(pix_opencv_bgstats) - -///////////////////////////////////////////////////////// -// -// pix_opencv_bgstats -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_bgstats :: pix_opencv_bgstats() -{ - comp_xsize=320; - comp_ysize=240; - - x_erode = 1; - x_minarea = CV_BGFG_FGD_MINAREA; - x_alpha = CV_BGFG_FGD_ALPHA_1; - x_frames = 0; - - foreground = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - incoming = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - x_model = NULL; - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_bgstats :: ~pix_opencv_bgstats() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&foreground); - cvReleaseImage(&incoming); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_bgstats :: processRGBAImage(imageStruct &image) -{ - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - x_frames = 0; - - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&foreground); - cvReleaseImage(&incoming); - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - - incoming = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - foreground = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - cvReleaseBGStatModel( &x_model ); - x_model = NULL; - - } - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor(rgba, incoming, CV_BGRA2BGR); - - if ( x_model == NULL ) - { - x_model = cvCreateFGDStatModel( incoming ); - } - else if ( x_frames == 5 ) - { - // strange model stabilize after a few frames - //cvReleaseBGStatModel( &x_model ); - //x_model = cvCreateFGDStatModel( incoming, &x_modelparams ); - } - else - { - cvUpdateBGStatModel( incoming, x_model ); - } - - x_frames++; - cvCvtColor(x_model->foreground, rgba, CV_GRAY2BGRA); - - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_bgstats :: processRGBImage(imageStruct &image) -{ - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - x_frames = 0; - - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&foreground); - cvReleaseImage(&incoming); - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - - incoming = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - foreground = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - cvReleaseBGStatModel( &x_model ); - x_model = NULL; - } - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - memcpy( incoming->imageData, image.data, image.xsize*image.ysize*3 ); - - if ( x_model == NULL ) - { - x_model = cvCreateFGDStatModel( incoming ); - } - else if ( x_frames == 5 ) - { - // strange model stabilize after a few frames - //cvReleaseBGStatModel( &x_model ); - //x_model = cvCreateFGDStatModel( incoming, &x_modelparams ); - } - else - { - cvUpdateBGStatModel( incoming, x_model ); - } - - x_frames++; - cvCvtColor(x_model->foreground, rgb, CV_GRAY2BGR); - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); - -} - -void pix_opencv_bgstats :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_bgstats : yuv format not supported" ); -} - -void pix_opencv_bgstats :: processGrayImage(imageStruct &image) -{ - post( "pix_opencv_bgstats : gray format not supported" ); -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_bgstats :: floatMinAreaMess (float minarea) -{ - if ( ( (int)minarea>0 ) && ( x_model != NULL ) ) - { - x_minarea = minarea; - } -} - -void pix_opencv_bgstats :: floatErodeMess(float erode) -{ - if ( ( (int)erode>0 ) && ( x_model != NULL ) ) - { - x_erode = (int)erode; - } -} - -void pix_opencv_bgstats :: floatAlphaMess(float alpha) -{ - if ( ( alpha>0.0 ) && ( x_model != NULL ) ) - { - x_alpha = alpha; - } -} - -void pix_opencv_bgstats :: resetMess () -{ - if ( x_model != NULL ) - { - } -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_bgstats :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_bgstats::floatMinAreaMessCallback, - gensym("minarea"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_bgstats::floatErodeMessCallback, - gensym("erode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_bgstats::floatAlphaMessCallback, - gensym("alpha"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_bgstats::resetMessCallback, - gensym("reset"), A_NULL); - -} - -void pix_opencv_bgstats :: floatMinAreaMessCallback(void *data, t_floatarg minarea) -{ - GetMyClass(data)->floatMinAreaMess((float)minarea); -} - -void pix_opencv_bgstats :: floatErodeMessCallback(void *data, t_floatarg erode) -{ - GetMyClass(data)->floatErodeMess((float)erode); -} - -void pix_opencv_bgstats :: floatAlphaMessCallback(void *data, t_floatarg alpha) -{ - GetMyClass(data)->floatAlphaMess((float)alpha); -} - -void pix_opencv_bgstats :: resetMessCallback(void *data) -{ - GetMyClass(data)->resetMess(); -} diff --git a/pix_opencv_bgstats.h b/pix_opencv_bgstats.h deleted file mode 100644 index 0f791e9..0000000 --- a/pix_opencv_bgstats.h +++ /dev/null @@ -1,100 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Statistical background substraction - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_BGSTATS_H -#define INCLUDE_PIX_OPENCV_BGSTATS_H - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/video/background_segm.hpp" - -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_bgstats - - Statistical background substraction - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_bgstats : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_bgstats, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_bgstats(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_bgstats(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatMinAreaMess(float minarea); - void floatErodeMess(float erode); - void floatAlphaMess(float alpha); - void resetMess(void); - - // The new threshold - int x_erode; - float x_minarea; - float x_alpha; - int x_frames; - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - ////////// - // Static member functions - static void floatMinAreaMessCallback(void *data, float minarea); - static void floatErodeMessCallback(void *data, float erode); - static void floatAlphaMessCallback(void *data, float alpha); - static void resetMessCallback(void *data); - - ///////// - // IplImage needed - IplImage *rgba, *rgb, *gray; - IplImage *foreground, *incoming; - - // Stat background model data - CvBGStatModel *x_model; - CvFGDStatModelParams x_modelparams; - -}; - -#endif // for header file diff --git a/pix_opencv_bgsubstract-help.pd b/pix_opencv_bgsubstract-help.pd deleted file mode 100644 index 85876e2..0000000 --- a/pix_opencv_bgsubstract-help.pd +++ /dev/null @@ -1,158 +0,0 @@ -#N canvas 253 422 985 540 10; -#X obj 17 17 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 17 -29 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 26 -25 Arguments:; -#X obj 17 -124 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 22 -162 Class: pix_opencv; -#X text 47 -5 none; -#X obj 459 -182 cnv 15 510 520 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 611 168 cnv 15 280 80 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X floatatom 744 211 5 0 0 0 - - -; -#X obj 615 228 pix_opencv_bgsubstract; -#X msg 627 172 set; -#X text 663 172 set the background; -#X text 741 195 threshold (default 13); -#X text 22 84 This object takes an image as a background reference -and the compare each incomming frame with that. On the output you get -a bw image \, black pixels are considered as background and white poixels -as foreground.; -#X text 27 -107 pix_opencv_bgsubstract :: A simple background substract -and binarization object.; -#X text 22 37 It is useful if you want to detect objects that are in -front of an static background and you want to isolate the foreground -silhouete of the foreground objects.; -#X text 22 145 pix_opencv_bgsubstract works comparing color values -of each pixel \, so it can fail if the foreground object has the same -color that the background \, and also if the light conditions or the -shadows changes since you SET the background image.; -#X obj 641 -173 gemhead; -#X obj 615 255 pix_texture; -#X obj 615 274 square 2; -#X obj 741 259 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 751 303 pd gemwin; -#X msg 751 285 destroy; -#X obj 464 253 pix_texture; -#X obj 464 272 square 2; -#X obj 615 121 separator; -#X obj 653 -146 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 710 29 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 692 -6 5 0 10000 1 frame# - -; -#X obj 653 -117 openpanel; -#X msg 653 -97 open \$1; -#X obj 641 12 pix_film; -#X msg 659 -54 auto \$1; -#X obj 659 -72 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X text 749 265 Create window and render; -#X msg 754 -71 colorspace RGBA; -#X msg 765 -52 colorspace RGB; -#X msg 772 -32 colorspace Grey; -#X obj 754 -99 loadbang; -#X obj 615 100 pix_separator; -#X obj 464 121 separator; -#X obj 464 101 pix_separator; -#X obj 464 141 translateXYZ -2 0 0; -#X obj 615 141 translateXYZ 2 0 0; -#N canvas 1 168 274 215 vswitch 0; -#X obj 36 138 outlet; -#X obj 36 26 inlet; -#X obj 100 29 inlet; -#X obj 149 29 inlet; -#X obj 149 67 == 0; -#X obj 36 101 spigot 1; -#X obj 100 101 spigot 0; -#X connect 1 0 5 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X restore 464 58 pd vswitch; -#X obj 532 58 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 464 10 pix_video; -#X obj 464 -175 gemhead; -#X msg 503 -65 device 0; -#X msg 512 -34 driver 1; -#X msg 489 -119 dialog; -#X msg 494 -89 device /dev/dv1394-0; -#X obj 464 78 pix_rgba; -#X text 24 219 written by Yves Degoyon ( ydegoyon@gmail.com ); -#X text 23 -178 Synopsis: [pix_opencv_bgsubstract]; -#X connect 8 0 9 1; -#X connect 9 0 18 0; -#X connect 10 0 9 0; -#X connect 17 0 31 0; -#X connect 18 0 19 0; -#X connect 21 0 22 0; -#X connect 22 0 21 0; -#X connect 23 0 24 0; -#X connect 25 0 43 0; -#X connect 26 0 29 0; -#X connect 27 0 28 0; -#X connect 28 0 31 1; -#X connect 29 0 30 0; -#X connect 30 0 31 0; -#X connect 31 0 44 1; -#X connect 31 2 27 0; -#X connect 32 0 31 0; -#X connect 33 0 32 0; -#X connect 35 0 31 0; -#X connect 35 0 46 0; -#X connect 36 0 31 0; -#X connect 37 0 31 0; -#X connect 38 0 35 0; -#X connect 38 0 33 0; -#X connect 39 0 25 0; -#X connect 40 0 42 0; -#X connect 41 0 40 0; -#X connect 42 0 23 0; -#X connect 43 0 9 0; -#X connect 44 0 52 0; -#X connect 45 0 44 2; -#X connect 46 0 44 0; -#X connect 47 0 46 0; -#X connect 48 0 46 0; -#X connect 49 0 46 0; -#X connect 50 0 46 0; -#X connect 51 0 46 0; -#X connect 52 0 41 0; -#X connect 52 0 39 0; diff --git a/pix_opencv_bgsubstract.cc b/pix_opencv_bgsubstract.cc deleted file mode 100644 index ca3bb03..0000000 --- a/pix_opencv_bgsubstract.cc +++ /dev/null @@ -1,258 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_bgsubstract.h" - -CPPEXTERN_NEW(pix_opencv_bgsubstract) - -///////////////////////////////////////////////////////// -// -// pix_opencv_bgsubstract -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_bgsubstract :: pix_opencv_bgsubstract() -{ - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); - x_threshold = 13; - x_set = 1; - comp_xsize = 0; - comp_ysize = 0; - orig = NULL; - gray = NULL; - rgb = NULL; - grayLow = NULL; - grayUp = NULL; - prev_gray = NULL; - diff_8U = NULL; -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_bgsubstract :: ~pix_opencv_bgsubstract() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - cvReleaseImage(&prev_gray); - cvReleaseImage(&grayLow); - cvReleaseImage(&grayUp); - cvReleaseImage(&diff_8U); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_bgsubstract :: processRGBAImage(imageStruct &image) -{ - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - cvReleaseImage(&prev_gray); - cvReleaseImage(&grayLow); - cvReleaseImage(&grayUp); - cvReleaseImage(&diff_8U); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - // Create the output images with new sizes - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - grayLow = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - grayUp = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - prev_gray = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); - diff_8U = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to grayscale - cvCvtColor(orig, gray, CV_BGRA2GRAY); - - if (x_set) { - memcpy( prev_gray->imageData, gray->imageData, image.xsize*image.ysize ); - x_set=0; - } - - cvSubS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayLow,NULL); - cvAddS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayUp,NULL); - cvInRange (gray, grayLow, grayUp, diff_8U); - - cvNot (diff_8U,diff_8U); - - cvCvtColor(diff_8U, orig, CV_GRAY2BGRA); - - //copy back the processed frame to image - memcpy( image.data, orig->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_bgsubstract :: processRGBImage(imageStruct &image) -{ - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - cvReleaseImage(&prev_gray); - cvReleaseImage(&grayLow); - cvReleaseImage(&grayUp); - cvReleaseImage(&diff_8U); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - // Create the output images with new sizes - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - grayLow = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - grayUp = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - prev_gray = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); - diff_8U = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to grayscale - cvCvtColor(rgb, gray, CV_BGRA2GRAY); - - if (x_set) { - memcpy( prev_gray->imageData, gray->imageData, image.xsize*image.ysize ); - x_set=0; - } - - cvSubS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayLow,NULL); - cvAddS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayUp,NULL); - cvInRange (gray, grayLow, grayUp, diff_8U); - - cvNot (diff_8U,diff_8U); - - cvCvtColor(diff_8U, rgb, CV_GRAY2BGR); - - //copy back the processed frame to image - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); - -} - -void pix_opencv_bgsubstract :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_bgsubstract : yuv format not supported" ); -} - -void pix_opencv_bgsubstract :: processGrayImage(imageStruct &image) -{ - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - cvReleaseImage(&prev_gray); - cvReleaseImage(&grayLow); - cvReleaseImage(&grayUp); - cvReleaseImage(&diff_8U); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - // Create the output images with new sizes - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - grayLow = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - grayUp = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - prev_gray = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); - diff_8U = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - - if (x_set) { - memcpy( prev_gray->imageData, gray->imageData, image.xsize*image.ysize ); - x_set=0; - } - - cvSubS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayLow,NULL); - cvAddS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayUp,NULL); - cvInRange (gray, grayLow, grayUp, diff_8U); - - cvNot (diff_8U,diff_8U); - - //copy back the processed frame to image - memcpy( image.data, diff_8U->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_bgsubstract :: floatThreshMess (float x_threshold) -{ - this->x_threshold = (int)x_threshold; -} -void pix_opencv_bgsubstract :: SetMess () -{ - this->x_set = 1; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_bgsubstract :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_bgsubstract::floatTreshMessCallback, - gensym("ft1"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_bgsubstract::SetMessCallback, - gensym("set"), A_NULL); -} -void pix_opencv_bgsubstract :: floatTreshMessCallback(void *data, t_floatarg x_threshold) -{ - GetMyClass(data)->floatThreshMess((float)x_threshold); -} -void pix_opencv_bgsubstract :: SetMessCallback(void *data) -{ - GetMyClass(data)->SetMess(); -} diff --git a/pix_opencv_bgsubstract.h b/pix_opencv_bgsubstract.h deleted file mode 100644 index bb177c4..0000000 --- a/pix_opencv_bgsubstract.h +++ /dev/null @@ -1,86 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Change pix to greyscale - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_BGSUBSTRACT_H_ -#define INCLUDE_PIX_OPENCV_BGSUBSTRACT_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_bgsubstract - - Change pix to greyscale - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_bgsubstract : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_bgsubstract, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_bgsubstract(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_bgsubstract(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatThreshMess(float x_threshold); - void SetMess(); - // The new threshold - int x_threshold; - int x_set; - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - ////////// - // Static member functions - static void floatTreshMessCallback(void *data, t_floatarg thresh_value); - static void SetMessCallback(void *data); - - ///////// - // IplImage needed - IplImage *orig, *rgb, *gray, *prev_gray, *grayLow, *grayUp, *diff_8U; - -}; - -#endif // for header file diff --git a/pix_opencv_blobtrack-help.pd b/pix_opencv_blobtrack-help.pd deleted file mode 100644 index 0de2f93..0000000 --- a/pix_opencv_blobtrack-help.pd +++ /dev/null @@ -1,273 +0,0 @@ -#N canvas 933 415 818 513 10; -#X obj 7 200 cnv 15 430 300 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 7 156 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 16 160 Arguments:; -#X obj 7 60 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 443 10 cnv 15 320 420 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X text 50 19 Synopsis: [pix_opencv_blobtrack]; -#X text 71 38 Class: pix_opencv; -#X text 17 63 Description: all-in-one blobtracker; -#X text 28 86 [pix_opencv_blobtrack] implements a blobtracking pipeline. -This is made by a foreground detector \, a blob detector \, a blob -tracker and a trajectory post processor.; -#X text 30 173 none; -#X obj 446 222 cnv 15 250 120 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 656 363 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 1 98 450 300 gemwin 0; -#X obj 132 136 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 142 68 set create; -#X msg 132 112 create \, 1; -#X msg 198 112 destroy; -#X msg 234 221 dimen 500 500; -#X obj 295 164 loadbang; -#X msg 279 190 dimen 640 480; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 6 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 8 0 0 0; -#X connect 9 0 10 0; -#X connect 10 0 0 0; -#X restore 661 402 pd gemwin; -#X msg 661 383 destroy; -#X text 657 362 Create window:; -#X obj 454 364 pix_texture; -#X obj 454 30 gemhead; -#X floatatom 531 323 5 0 0 0 blob_num - -; -#N canvas 1062 357 709 722 showblob 0; -#X obj 187 13 inlet blobinformation; -#X obj 279 316 gemlist; -#X obj 279 296 t b a; -#X obj 291 50 gemhead 70; -#X obj 129 258 list append; -#X obj 124 140 list split 2; -#X obj 124 114 list append; -#X obj 291 73 t b a; -#X obj 158 232 t b a; -#X obj 279 506 translateXYZ; -#X msg 420 349 \$2; -#X obj 279 356 alpha 1; -#X obj 279 466 translateXYZ -0.5 -0.5 0; -#X obj 279 530 scaleXYZ 0.125 0.25 0; -#X msg 459 349 \$3; -#X msg 420 499 \$4; -#X msg 469 472 \$5; -#X obj 463 328 t a a; -#X obj 279 576 circle 0.5; -#X obj 279 426 color 1 0 0 0.2; -#X obj 279 336 separator; -#X msg 499 499 \$1; -#X obj 279 616 color 1 1 0 1; -#X obj 158 198 list split 6; -#X msg 124 167 \$2; -#X obj 366 622 loadbang; -#X msg 366 641 12; -#X msg 521 377 \$6; -#X obj 521 399 > 0; -#X obj 521 420 sel 1 0; -#X msg 520 441 1 0 0 0.2; -#X msg 540 461 0 1 0 0.2; -#X obj 279 596 translateXYZ 0.2 0.2 0; -#X text 336 194 here is an example on how to display blobs with Gem -; -#X obj 279 446 scaleXYZ 10.666 -8 0; -#X obj 279 677 text2d; -#X connect 0 0 6 1; -#X connect 1 0 20 0; -#X connect 2 0 1 0; -#X connect 2 1 17 0; -#X connect 3 0 7 0; -#X connect 4 0 23 0; -#X connect 5 0 24 0; -#X connect 5 1 23 0; -#X connect 6 0 5 0; -#X connect 7 0 6 0; -#X connect 7 1 1 1; -#X connect 8 0 4 0; -#X connect 8 1 2 0; -#X connect 9 0 13 0; -#X connect 10 0 9 1; -#X connect 11 0 19 0; -#X connect 12 0 9 0; -#X connect 13 0 18 0; -#X connect 14 0 9 2; -#X connect 15 0 13 1; -#X connect 16 0 13 2; -#X connect 17 0 14 0; -#X connect 17 0 10 0; -#X connect 17 1 16 0; -#X connect 17 1 15 0; -#X connect 17 1 21 0; -#X connect 17 1 27 0; -#X connect 18 0 32 0; -#X connect 19 0 34 0; -#X connect 20 0 11 0; -#X connect 21 0 35 0; -#X connect 22 0 35 0; -#X connect 23 0 8 0; -#X connect 23 1 4 1; -#X connect 24 0 23 1; -#X connect 25 0 26 0; -#X connect 26 0 35 1; -#X connect 27 0 28 0; -#X connect 28 0 29 0; -#X connect 29 0 30 0; -#X connect 29 1 31 0; -#X connect 30 0 19 1; -#X connect 31 0 19 1; -#X connect 32 0 22 0; -#X connect 34 0 12 0; -#X restore 568 320 pd showblob; -#X obj 454 124 pix_resize 320 240; -#X obj 454 173 pix_rgba; -#X obj 471 227 r \$0-properties; -#X text 464 153 input format : rgba or grey; -#N canvas 21 469 806 579 properties 1; -#X msg 99 407 monitorStage \$1; -#X msg 4 21 getModule; -#X msg 4 41 getModule fg; -#X msg 4 61 getModule bd; -#X msg 4 81 getModule bt; -#X msg 4 101 getModule btpp; -#X obj 12 142 loadbang; -#X msg 260 194 setModule bd BD_CC; -#X msg 27 194 setModule fg FG_0S; -#X msg 147 194 setModule fg FG_1; -#X text 98 342 monitoring stage :; -#X obj 99 359 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1 --1 0; -#X text 117 358 input image; -#X text 116 374 foreground mask; -#X text 116 389 diplsay blobs; -#X obj -35 513 s \$0-properties; -#X obj -35 353 t a; -#X msg -14 405 fgTrainFrames \$1; -#X floatatom -14 378 5 0 0 0 - - -; -#X text 72 20 post all accessibles modules and their nickname; -#X text 108 56 post information of specific module and get the avaiblable -variant to load; -#X msg 12 160 setModule fg FG_1 \, setModule bd BD_Simple \, setModule -bt CC \, setModule btpp none \, setModule bta none; -#X msg 241 229 getParam fg; -#X floatatom 241 257 5 0 0 0 - - -; -#X msg 241 275 setParam fg NG \$1; -#X text 319 222 getParam : returns all parameters for -a given module; -#X text 359 275 setParam : set a -module parameter \, value could be float or symbol; -#X msg 33 222 setModule fg FG_0; -#X floatatom 241 295 5 0 0 0 - - -; -#X msg 241 313 setParam fg alpha1 \$1; -#X msg 192 106 setModule fg FG_0 \, setModule bd BD_Simple \, setModule -bt CC \, setModule btpp none \, setModule bta none \, setParam fg alpha1 -0.35; -#X msg 234 411 areaThreshold \$1; -#X floatatom 261 367 5 0 0 0 - - -; -#X connect 0 0 15 0; -#X connect 1 0 16 0; -#X connect 2 0 16 0; -#X connect 3 0 16 0; -#X connect 4 0 16 0; -#X connect 5 0 16 0; -#X connect 6 0 21 0; -#X connect 7 0 16 0; -#X connect 8 0 16 0; -#X connect 9 0 16 0; -#X connect 11 0 0 0; -#X connect 16 0 15 0; -#X connect 17 0 15 0; -#X connect 18 0 17 0; -#X connect 21 0 16 0; -#X connect 22 0 16 0; -#X connect 23 0 24 0; -#X connect 24 0 16 0; -#X connect 27 0 16 0; -#X connect 28 0 29 0; -#X connect 29 0 16 0; -#X connect 30 0 16 0; -#X connect 31 0 15 0; -#X connect 32 0 31 0; -#X restore 595 230 pd properties; -#X obj 454 70 pix_film; -#X text 459 96 the bigger the image is \, the more CPU expensive the -algo will be; -#X text 16 202 Inlet 1 accepts a lot of messages \, here are the most -usefull ones \, see [pd properties] for details.; -#X text 26 232 getModule : get information about loaded modules.; -#X text 26 252 setModule : set algorythm to use in each module.; -#X text 26 272 monitoringStage : set the location where output image -is taken (input \, foreground mask or input with tracking information) -; -#X obj 550 50 openpanel; -#X obj 550 32 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X text 15 321 Outlet 1 : gemstate; -#X text 15 341 Outlet 2 :; -#X text 35 360 blobnum : number of blobs in the current frame; -#X text 36 376 blob matrix (follow the iem matrix standard) :; -#X text 55 389 ; -#X text 35 428 there are also a lots of informations about parameters -and algorithms... check out the pd-properties; -#X text 65 399 and for each blob : ID \, x \, y \, width \, height -\, state (valid or not); -#X msg 550 70 open \$1 \, auto 1; -#X obj 454 395 rectangle 5.333 4; -#X msg 509 70 0; -#X msg 531 302 \$1; -#X obj 531 281 route cvblob; -#N canvas 1 92 593 300 info 0; -#X obj 153 40 inlet; -#X obj 153 62 route modulelist param; -#X msg 55 148 fg bd bt btpp bta; -#X obj 55 106 list prepend set; -#X obj 55 128 list trim; -#X msg 78 211 getModule; -#X obj 78 236 s \$0-properties; -#X text -59 148 available module :; -#X msg 146 212 getParam fg; -#X obj 217 108 print param; -#X obj 298 96 print dumpout; -#X connect 0 0 1 0; -#X connect 1 0 3 0; -#X connect 1 1 9 0; -#X connect 1 2 10 0; -#X connect 3 0 4 0; -#X connect 4 0 2 0; -#X connect 5 0 6 0; -#X connect 8 0 6 0; -#X restore 645 322 pd info; -#X obj 454 255 pix_opencv_blobtrack; -#X connect 12 0 13 0; -#X connect 13 0 12 0; -#X connect 15 0 40 0; -#X connect 16 0 24 0; -#X connect 19 0 20 0; -#X connect 20 0 45 0; -#X connect 21 0 45 0; -#X connect 24 0 19 0; -#X connect 24 2 41 0; -#X connect 30 0 39 0; -#X connect 31 0 30 0; -#X connect 39 0 24 0; -#X connect 41 0 24 1; -#X connect 42 0 17 0; -#X connect 43 0 42 0; -#X connect 43 0 18 0; -#X connect 43 1 44 0; -#X connect 45 0 15 0; -#X connect 45 1 43 0; diff --git a/pix_opencv_blobtrack.cc b/pix_opencv_blobtrack.cc deleted file mode 100644 index 864176f..0000000 --- a/pix_opencv_blobtrack.cc +++ /dev/null @@ -1,692 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) -// mainly copy and paste from blobtrack_sample.cpp provided by OpenCV 2.3 SVN rev7875 - -#include "pix_opencv_blobtrack.h" - - - -CPPEXTERN_NEW(pix_opencv_blobtrack) - -///////////////////////////////////////////////////////// -// -// pix_opencv_blobtrack -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_blobtrack :: pix_opencv_blobtrack() : m_fg_name(FGDetector_Modules[0].nickname), \ - m_bd_name(BlobDetector_Modules[0].nickname), \ - m_bt_name(BlobTracker_Modules[0].nickname), \ - m_btpp_name(BlobTrackPostProc_Modules[0].nickname), \ - m_bta_name(BlobTrackAnalysis_Modules[0].nickname), \ - m_bt_corr("none"), \ - m_FGTrainFrames(6), \ - m_monitoring_stage(0), \ - m_areaThreshold(0.), \ - m_tracker(NULL) -{ - m_param.pBT=NULL; - m_param.pBD=NULL; - m_param.pBTGen=NULL; - m_param.pBTA=NULL; - m_param.pFG=NULL; - m_dataout = outlet_new(this->x_obj, 0); - setupModules(); - createModules(); - printParamsMess(); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_blobtrack :: ~pix_opencv_blobtrack() -{ - releaseModules(); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_blobtrack :: processRGBAImage(imageStruct &image) -{ - cv::Mat imgMat( image.ysize, image.xsize, CV_8UC4, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data - IplImage img = imgMat; // convert cv::Mat to IplImage - RunBlobTrackingAuto( &img ); -} - -void pix_opencv_blobtrack :: processRGBImage(imageStruct &image) { - cv::Mat imgMat( image.ysize, image.xsize, CV_8UC3, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data - IplImage img = imgMat; - RunBlobTrackingAuto( &img ); -} - -void pix_opencv_blobtrack :: processYUVImage(imageStruct &image) { - - error("YVU format not supported"); -} - -void pix_opencv_blobtrack :: processGrayImage(imageStruct &image) -{ - cv::Mat imgMat( image.ysize, image.xsize, CV_8UC1, image.data, image.csize*image.xsize); // convert imageStruct to cv::Mat without copying data - IplImage img = imgMat; // convert cv::Mat to IplImage - RunBlobTrackingAuto( &img ); -} - -void pix_opencv_blobtrack :: RunBlobTrackingAuto( IplImage* img ) -{ - IplImage* pMask = NULL; - IplImage* imgRGB = NULL; - - if ( x_size != img->width || y_size != img->height ){ - releaseModules(); - createModules(); - x_size = img->width; - y_size = img->height; - } - - imgRGB = cvCreateImage(cvSize(img->width,img->height),img->depth,3); - switch (img->nChannels){ - case 1: - cvCvtColor(img, imgRGB, CV_GRAY2RGB); - break; - case 4: - cvCvtColor(img, imgRGB, CV_RGBA2RGB); - break; - } - - /* Process: */ - m_tracker->Process(imgRGB, pMask); - - //~ t_atom blob_num; - //~ SETFLOAT(&blob_num, m_tracker->GetBlobNum()); - //~ outlet_anything(m_dataout, gensym("blobnum"), 1, &blob_num); - - int blob_num=m_tracker->GetBlobNum(); - int blob_atom_size = 2+blob_num*6; - - t_atom* blob_atom = new t_atom[blob_atom_size]; - SETFLOAT(&blob_atom[0], blob_num); - SETFLOAT(&blob_atom[1], 6); - - for(int i=0; iGetBlob(i); - if ( blob->w*blob->h/(img->width*img->height) > m_areaThreshold ){ - SETFLOAT(&blob_atom[2+i*6], blob->ID); - SETFLOAT(&blob_atom[3+i*6], blob->x/img->width); - SETFLOAT(&blob_atom[4+i*6], blob->y/img->height); - SETFLOAT(&blob_atom[5+i*6], blob->w/img->width); - SETFLOAT(&blob_atom[6+i*6], blob->h/img->height); - SETFLOAT(&blob_atom[7+i*6], m_tracker->GetState(blob->ID)); - } - } - - outlet_anything(m_dataout, gensym("cvblob"), blob_atom_size, blob_atom); - - if(blob_atom) delete blob_atom; - blob_atom = NULL; - - if ( m_monitoring_stage == 1 ) { // show foreground - IplImage* fg = m_tracker->GetFGMask(); - switch (img->nChannels){ - case 1: - cvCopy(fg, img); - break; - case 4: - cvCvtColor(fg, img, CV_GRAY2RGBA); - break; - } - } - - if ( m_monitoring_stage == 2 ) { - /* Draw all information about test sequence: */ - char str[1024]; - int line_type = CV_AA; // Change it to 8 to see non-antialiased graphics. - CvFont font; - int i; - - cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 0.7, 0.7, 0, 1, line_type ); - - for(i=m_tracker->GetBlobNum(); i>0; i--) - { - CvSize TextSize; - CvBlob* pB = m_tracker->GetBlob(i-1); - CvPoint p = cvPoint(cvRound(pB->x*256),cvRound(pB->y*256)); - CvSize s = cvSize(MAX(1,cvRound(CV_BLOB_RX(pB)*256)), MAX(1,cvRound(CV_BLOB_RY(pB)*256))); - int c = cvRound(255*m_tracker->GetState(CV_BLOB_ID(pB))); - - cvEllipse( imgRGB, - p, - s, - 0, 0, 360, - CV_RGB(c,255-c,0), cvRound(1+(3*0)/255), CV_AA, 8 ); - - p.x >>= 8; - p.y >>= 8; - s.width >>= 8; - s.height >>= 8; - sprintf(str,"%03d",CV_BLOB_ID(pB)); - cvGetTextSize( str, &font, &TextSize, NULL ); - p.y -= s.height; - cvPutText( imgRGB, str, p, &font, CV_RGB(0,255,255)); - { - const char* pS = m_tracker->GetStateDesc(CV_BLOB_ID(pB)); - - if(pS) - { - char* pStr = strdup(pS); - char* pStrFree = pStr; - - while (pStr && strlen(pStr) > 0) - { - char* str_next = strchr(pStr,'\n'); - - if(str_next) - { - str_next[0] = 0; - str_next++; - } - - p.y += TextSize.height+1; - cvPutText( imgRGB, pStr, p, &font, CV_RGB(0,255,255)); - pStr = str_next; - } - free(pStrFree); - } - } - - } /* Next blob. */; - switch (img->nChannels){ - case 1: - cvCvtColor(imgRGB, img, CV_RGB2GRAY); - break; - case 4: - cvCvtColor(imgRGB, img, CV_RGB2RGBA); - break; - } - - }/* Draw all information about test sequence. */ - cvReleaseImage(&imgRGB); - imgRGB = NULL; - -} /* RunBlobTrackingAuto */ - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_blobtrack :: obj_setupCallback(t_class *classPtr) -{ - CPPEXTERN_MSG1(classPtr, "monitorStage", monitorStageMess, int); - CPPEXTERN_MSG1(classPtr, "fgTrainFrames", fgTrainFramesMess, int); - CPPEXTERN_MSG (classPtr, "getParam", getParamMess); - CPPEXTERN_MSG (classPtr, "setParam", setParamMess); - CPPEXTERN_MSG (classPtr, "getModule", getModuleMess); - CPPEXTERN_MSG (classPtr, "setModule", setModuleMess); - CPPEXTERN_MSG1 (classPtr, "areaThreshold", areaThresholdMess, t_float); -} - -///////////////////////////////////////////////////////// -// private function -// -///////////////////////////////////////////////////////// -void pix_opencv_blobtrack :: setupModules() -{ - const char* fg_name = m_fg_name.c_str(); - const char* bd_name = m_bd_name.c_str(); - const char* bt_name = m_bt_name.c_str(); - const char* btpp_name = m_btpp_name.c_str(); - const char* bta_name = m_bta_name.c_str(); - - for(m_FGModule=FGDetector_Modules; m_FGModule->nickname; ++m_FGModule) - if( fg_name && MY_STRICMP(fg_name,m_FGModule->nickname)==0 ) break; - if ( m_FGModule->nickname == NULL ){ - error("FG Module %s doesn't exist, swith to default one", fg_name); - m_FGModule=FGDetector_Modules; - } - - for(m_BDModule=BlobDetector_Modules; m_BDModule->nickname; ++m_BDModule) - if( bd_name && MY_STRICMP(bd_name,m_BDModule->nickname)==0 ) break; - if ( m_BDModule->nickname == NULL ){ - error("BD Module %s doesn't exist, swith to default one", bd_name); - m_BDModule=BlobDetector_Modules; - } - - for(m_BTModule=BlobTracker_Modules; m_BTModule->nickname; ++m_BTModule) - if( bt_name && MY_STRICMP(bt_name,m_BTModule->nickname)==0 ) break; - if ( m_BTModule->nickname == NULL ){ - error("BT Module %s doesn't exist, swith to default one", bt_name); - m_BTModule=BlobTracker_Modules; - } - - for(m_BTPostProcModule=BlobTrackPostProc_Modules; m_BTPostProcModule->nickname; ++m_BTPostProcModule) - if( btpp_name && MY_STRICMP(btpp_name,m_BTPostProcModule->nickname)==0 ) break; - if ( m_BTPostProcModule->nickname == NULL ){ - error("BTPP Module %s doesn't exist, swith to default one", btpp_name); - m_BTPostProcModule=BlobTrackPostProc_Modules; - } - - for(m_BTAnalysisModule=BlobTrackAnalysis_Modules; m_BTAnalysisModule->nickname; ++m_BTAnalysisModule) - if( bta_name && MY_STRICMP(bta_name,m_BTAnalysisModule->nickname)==0 ) break; - if ( m_BTAnalysisModule->nickname == NULL ){ - error("BTA Module %s doesn't exist, swith to default one", bta_name); - m_BTAnalysisModule=BlobTrackAnalysis_Modules; - } -} /* setupModules */ - -void pix_opencv_blobtrack :: createModules() -{ /* Create autotracker module and its components: */ - - m_param.FGTrainFrames = m_FGTrainFrames; - /* Create FG Detection module: */ - m_param.pFG = m_FGModule->create(); - if(!m_param.pFG){ - error("Can not create FGDetector module"); - return; - } - m_param.pFG->SetNickName(m_FGModule->nickname); - //~ set_params(argc, argv, m_param.pFG, "fg", m_FGModule->nickname); - /* Create Blob Entrance Detection module: */ - m_param.pBD = m_BDModule->create(); - if(!m_param.pBD){ - error("Can not create BlobDetector module"); - return; - } - m_param.pBD->SetNickName(m_BDModule->nickname); - //~ set_params(argc, argv, m_param.pBD, "bd", m_BDModule->nickname); - - /* Create blob tracker module: */ - m_param.pBT = m_BTModule->create(); - if(!m_param.pBT){ - error("Can not create BlobTracker module"); - } - m_param.pBT->SetNickName(m_BTModule->nickname); - //~ set_params(argc, argv, m_param.pBT, "bt", m_BTModule->nickname); - - /* Create blob trajectory generation module: */ - /* - m_param.pBTGen = NULL; - if(m_BTGenModule && track_name && m_BTGenModule->create) - { - m_param.pBTGen = m_BTGenModule->create(); - m_param.pBTGen->SetFileName(track_name); - } - if(m_param.pBTGen) - { - m_param.pBTGen->SetNickName(m_BTGenModule->nickname); - //~ set_params(argc, argv, m_param.pBTGen, "btgen", m_BTGenModule->nickname); - } - */ - - /* Create blob trajectory post processing module: */ - m_param.pBTPP = NULL; - if(m_BTPostProcModule && m_BTPostProcModule->create) - { - m_param.pBTPP = m_BTPostProcModule->create(); - } - if(m_param.pBTPP) - { - m_param.pBTPP->SetNickName(m_BTPostProcModule->nickname); - //~ set_params(argc, argv, m_param.pBTPP, "btpp", pBTPostProcModule->nickname); - } - - const char * bt_corr = m_bt_corr.c_str(); - - m_param.UsePPData = (bt_corr && MY_STRICMP(bt_corr,"PostProcRes")==0); - - /* Create blob trajectory analysis module: */ - m_param.pBTA = NULL; - if(m_BTAnalysisModule && m_BTAnalysisModule->create) - { - m_param.pBTA = m_BTAnalysisModule->create(); - //~ m_param.pBTA->SetFileName(bta_data_name); - } - if(m_param.pBTA) - { - m_param.pBTA->SetNickName(m_BTAnalysisModule->nickname); - //~ set_params(argc, argv, m_param.pBTA, "bta", m_BTAnalysisModule->nickname); - } - - /* Create whole pipline: */ - m_tracker = cvCreateBlobTrackerAuto1(&m_param); - if(!m_tracker) - error("Can not create BlobTrackerAuto"); -} /* createModules */ - -void pix_opencv_blobtrack :: releaseModules(void) -{ - if(m_param.pBT)cvReleaseBlobTracker(&m_param.pBT); - if(m_param.pBD)cvReleaseBlobDetector(&m_param.pBD); - if(m_param.pBTGen)cvReleaseBlobTrackGen(&m_param.pBTGen); - if(m_param.pBTA)cvReleaseBlobTrackAnalysis(&m_param.pBTA); - if(m_param.pFG)cvReleaseFGDetector(&m_param.pFG); - if(m_tracker)cvReleaseBlobTrackerAuto(&m_tracker); -} /* releaseModules */ - -void pix_opencv_blobtrack :: print_params(CvVSModule* pM, const char* module) -{ - int i; - if(pM->GetParamName(0) == NULL ) return; - - - post("%s(%s) module parameters:",module,pM->GetNickName()); - - for (i=0; ; ++i) - { - const char* param = pM->GetParamName(i); - const char* str = param?pM->GetParamStr(param):NULL; - if(param == NULL)break; - if(str) - { - post(" %s: %s",param,str); - } - else - { - post(" %s: %g",param,pM->GetParam(param)); - } - } -} /* print_params */ - -///////////////////////////////////////////////////////// -// messages handling -// -///////////////////////////////////////////////////////// -void pix_opencv_blobtrack :: monitorStageMess(int arg) -{ - m_monitoring_stage = int(arg); - t_atom data_out; - SETFLOAT(&data_out, m_monitoring_stage); - outlet_anything( m_dataout, gensym("monitorStage"), 1, &data_out); -} - -void pix_opencv_blobtrack :: areaThresholdMess(t_float arg) -{ - m_areaThreshold = arg; - t_atom data_out; - SETFLOAT(&data_out, m_areaThreshold); - outlet_anything( m_dataout, gensym("areaThreshold"), 1, &data_out); -} - -void pix_opencv_blobtrack :: fgTrainFramesMess(int arg) -{ - //~ m_FGTrainFrames = int(arg); - t_atom data_out; - SETFLOAT(&data_out, m_FGTrainFrames); - outlet_anything( m_dataout, gensym("FGTrainFrames"), 1, &data_out); -} - -void pix_opencv_blobtrack :: printParamsMess(void) -{ /* Print module parameters: */ - struct DefMMM - { - CvVSModule* pM; - const char* name; - } Modules[] = { - {(CvVSModule*)m_param.pFG,"FGdetector"}, - {(CvVSModule*)m_param.pBD,"BlobDetector"}, - {(CvVSModule*)m_param.pBT,"BlobTracker"}, - {(CvVSModule*)m_param.pBTGen,"TrackGen"}, - {(CvVSModule*)m_param.pBTPP,"PostProcessing"}, - {(CvVSModule*)m_param.pBTA,"TrackAnalysis"}, - {NULL,NULL} - }; - int i; - for(i=0; Modules[i].name; ++i) - { - if(Modules[i].pM) - print_params(Modules[i].pM,Modules[i].name); - } -} /* Print module parameters. */ - -void pix_opencv_blobtrack :: getParamMess(t_symbol*s, int argc, t_atom*argv) -{ - int i; - CvVSModule* pM; - pM=NULL; - if ( argc < 1 ){ - error("getParam need a module name as symbol arg"); - return; - } - - if ( argv[0].a_type == A_SYMBOL ) { - if (std::string(argv[0].a_w.w_symbol->s_name) == "fg") { - pM=m_param.pFG; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bd") { - pM=m_param.pBD; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bt") { - pM=m_param.pBT; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "btpp") { - pM=m_param.pBTPP; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bta") { - pM=m_param.pBTA; - } - else { - error("unknown module : %s",argv[0].a_w.w_symbol->s_name); - return; - } - } else { - error("getParam need a module name as symbol arg"); - } - - t_atom a_param[4]; - t_atom a_params; - - a_param[0] = argv[0]; - - if(pM->GetParamName(0) == NULL ) return; - - for (i=0; ; ++i) - { - const char* param = pM->GetParamName(i); - if(param == NULL)break; - } - SETFLOAT(&a_params, i); - outlet_anything(m_dataout, gensym("params"), 1, &a_params); - - for (i=0; ; ++i) - { - const char* param = pM->GetParamName(i); - const char* str = param?pM->GetParamStr(param):NULL; - - if(param == NULL)break; - SETSYMBOL(a_param+1,gensym(param)); - if(str) - { - SETSYMBOL(a_param+2,gensym(str)); - } - else - { - SETFLOAT(a_param+2,pM->GetParam(param)); - } - const char* comment = pM->GetParamComment(param); - if ( !comment ) comment = "N/A"; - SETSYMBOL(a_param+3,gensym(comment)); - - outlet_anything(m_dataout, gensym("param"), 4, a_param); - } -} /* getParamMess */ - -void pix_opencv_blobtrack :: setParamMess(t_symbol*s, int argc, t_atom*argv) -{ - if ( argc != 3 ){ - error("setParam need 3 args : "); - return; - } - - int i; - CvVSModule* pM; - pM=NULL; - - if ( argv[0].a_type == A_SYMBOL ) { - if (std::string(argv[0].a_w.w_symbol->s_name) == "fg") { - pM=m_param.pFG; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bd") { - pM=m_param.pBD; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bt") { - pM=m_param.pBT; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "btpp") { - pM=m_param.pBTPP; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bta") { - pM=m_param.pBTA; - } - else { - error("unknown module : %s",argv[0].a_w.w_symbol->s_name); - return; - } - } else { - error("getParam need a module name as symbol arg"); - } - - const char* param; - const char* str; - for ( i = 0 ; ; i++ ){ - param = pM->GetParamName(i); - str = param?pM->GetParamStr(param):NULL; - - if(param == NULL){ - error("module %s doesn't have a %s parameter", argv[0].a_w.w_symbol->s_name, argv[1].a_w.w_symbol->s_name); - return; - } - - if( std::string(argv[1].a_w.w_symbol->s_name) == param ) - break; - } - - if ( str ){ /* parameter is a string */ - if ( argv[2].a_type != A_SYMBOL ){ - error("module (%s) parameter (%s) is a symbol"); - return; - } else { - pM->SetParamStr(param, argv[2].a_w.w_symbol->s_name); - } - } else { - if ( argv[2].a_type != A_FLOAT ){ - error("module (%s) parameter (%s) is a float"); - return; - } else { - pM->SetParam(param, argv[2].a_w.w_float); - } - } - - pM->ParamUpdate(); -} - -void pix_opencv_blobtrack :: getModuleMess(t_symbol*s, int argc, t_atom*argv) -{ - if ( argc == 0 ){ // no args : print all modules in pipeline - post("avaible modules in pipeline :\n \ - fg : ForeGround detector\n \ - bd : Blob Detector\n \ - bt : Blob Tracker\n \ - btpp : Blob Tracker Post Processing\n \ - bta : Blob Tracker Analysis"); - - t_atom module_list[5]; - SETSYMBOL(&module_list[0], gensym("fg")); - SETSYMBOL(&module_list[1], gensym("bd")); - SETSYMBOL(&module_list[2], gensym("bt")); - SETSYMBOL(&module_list[3], gensym("btpp")); - SETSYMBOL(&module_list[4], gensym("bta")); - outlet_anything(m_dataout, gensym("modulelist"), 5, module_list); - - } else if ( argc == 1 ) { // one arg : print available algo for specified module - if ( argv[0].a_type == A_SYMBOL ) { - t_atom algo_list[512]; - int i; - if ( std::string(argv[0].a_w.w_symbol->s_name) == "fg" ){ - post("available foreground detector algo :"); - for (i = 0 ; FGDetector_Modules[i].nickname!=NULL ; i++){ - post("\t%s : %s", FGDetector_Modules[i].nickname, FGDetector_Modules[i].description); - SETSYMBOL(&algo_list[i],gensym(FGDetector_Modules[i].nickname)); - } - outlet_anything(m_dataout, gensym("fg_algo"), i, algo_list); - } else if ( std::string(argv[0].a_w.w_symbol->s_name) == "bd" ){ - post("available blob detector algo :"); - for (i = 0 ; BlobDetector_Modules[i].nickname!=NULL ; i++){ - post("\t%s : %s", BlobDetector_Modules[i].nickname, BlobDetector_Modules[i].description); - SETSYMBOL(&algo_list[i],gensym(BlobDetector_Modules[i].nickname)); - } - outlet_anything(m_dataout, gensym("bd_algo"), i, algo_list); - } else if ( std::string(argv[0].a_w.w_symbol->s_name) == "bt" ){ - post("available blob tracker algo :"); - for (i = 0 ; BlobTracker_Modules[i].nickname!=NULL ; i++){ - post("\t%s : %s", BlobTracker_Modules[i].nickname, BlobTracker_Modules[i].description); - SETSYMBOL(&algo_list[i],gensym(BlobTracker_Modules[i].nickname)); - } - outlet_anything(m_dataout, gensym("bt_algo"), i, algo_list); - } else if ( std::string(argv[0].a_w.w_symbol->s_name) == "btpp" ){ - post("available blob tracker post processing algo :"); - for (i = 0 ; BlobTrackPostProc_Modules[i].nickname!=NULL ; i++){ - post("\t%s : %s", BlobTrackPostProc_Modules[i].nickname, BlobTrackPostProc_Modules[i].description); - SETSYMBOL(&algo_list[i],gensym(BlobTrackPostProc_Modules[i].nickname)); - } - outlet_anything(m_dataout, gensym("btpp_algo"), i, algo_list); - } else if ( std::string(argv[0].a_w.w_symbol->s_name) == "bta" ){ - post("available blob tracker analysis algo :"); - for (i = 0 ; BlobTrackAnalysis_Modules[i].nickname!=NULL ; i++){ - post("\t%s : %s", BlobTrackAnalysis_Modules[i].nickname, BlobTrackAnalysis_Modules[i].description); - SETSYMBOL(&algo_list[i],gensym(BlobTrackAnalysis_Modules[i].nickname)); - } - outlet_anything(m_dataout, gensym("bd_algo"), i, algo_list); - } - } else error("getModules []"); - } else error("getModules [] : need 1 or 2 args"); -} - -void pix_opencv_blobtrack :: setModuleMess(t_symbol*s, int argc, t_atom*argv) -{ - if ( argc != 2 ){ - error("use : setModule "); - error("try getModule to get available module list"); - return; - } - - if ( argv[0].a_type == A_SYMBOL ) { - if (std::string(argv[0].a_w.w_symbol->s_name) == "fg") { - m_fg_name = argv[1].a_w.w_symbol->s_name; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bd") { - m_bd_name = argv[1].a_w.w_symbol->s_name; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bt") { - m_bt_name = argv[1].a_w.w_symbol->s_name; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "btpp") { - m_btpp_name = argv[1].a_w.w_symbol->s_name; - } - else if (std::string(argv[0].a_w.w_symbol->s_name) == "bta") { - m_bta_name = argv[1].a_w.w_symbol->s_name; - } - releaseModules(); - setupModules(); - createModules(); - printParamsMess(); - } -} diff --git a/pix_opencv_blobtrack.h b/pix_opencv_blobtrack.h deleted file mode 100644 index e0e3029..0000000 --- a/pix_opencv_blobtrack.h +++ /dev/null @@ -1,106 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_BLOBTRACK_H_ -#define INCLUDE_PIX_OPENCV_BLOBTRACK_H_ - -#ifndef _EiC -#include "opencv2/video/background_segm.hpp" -#include "opencv2/legacy/blobtrack.hpp" -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/highgui/highgui.hpp" -#include -#endif - -#include "blobtrack.h" - -#include "Base/GemPixObj.h" -#include -#include -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_blobtrack - - advanced blob tracker - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_blobtrack : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_blobtrack, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_blobtrack(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_blobtrack(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - void RunBlobTrackingAuto( IplImage* img ); - - ////////// - // Messages handling - void monitorStageMess(int arg); - void areaThresholdMess(t_float arg); - void fgTrainFramesMess(int arg); - void printParamsMess(void); - void getParamMess(t_symbol*s, int argc, t_atom*argv); // get available params or param value - void setParamMess(t_symbol*s, int argc, t_atom*argv); // set param - void getModuleMess(t_symbol*s, int argc, t_atom*argv); // list available and currently used modules - void setModuleMess(t_symbol*s, int argc, t_atom*argv); // set selected modules - - // Members - std::string m_fg_name, m_bd_name, m_bt_name, m_btgen_name, m_btpp_name, m_bta_name, m_bt_corr; - int m_FGTrainFrames; - int m_monitoring_stage; // 0 : input image, 1 : FG 3 : input with trackng info - t_float m_areaThreshold; - int x_size, y_size; - - - CvBlobTrackerAuto* m_tracker; - CvBlobTrackerAutoParam1 m_param; - - DefModule_FGDetector* m_FGModule; - DefModule_BlobDetector* m_BDModule; - DefModule_BlobTracker* m_BTModule; - DefModule_BlobTrackPostProc* m_BTPostProcModule; - DefModule_BlobTrackGen* m_BTGenModule; - DefModule_BlobTrackAnalysis* m_BTAnalysisModule; - - - private: - - void setupModules(); - void createModules(); - void releaseModules(void); - void print_params(CvVSModule* pM, const char* module); - t_outlet *m_dataout; // info outlet - -}; -#endif // for header file diff --git a/pix_opencv_calibration-help.pd b/pix_opencv_calibration-help.pd deleted file mode 100644 index 41eea90..0000000 --- a/pix_opencv_calibration-help.pd +++ /dev/null @@ -1,258 +0,0 @@ -#N canvas 84 222 1188 810 10; -#X obj 20 33 cnv 15 430 580 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 20 -13 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 29 -9 Arguments:; -#X obj 19 -109 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 24 -145 Class: pix_opencv; -#X text 39 -100 Description: pix_opencv_calibration is an object allowing -camera less calibration. you need to move a checkboard in front of -the camera during the calibration part.; -#X text 25 -161 Synopsis: [pix_opencv_calibration]; -#X text 37 37 getting started with camera calibration :; -#X text 65 123 3 Check calibration toggle to start and move the chessboard -in front of the camera (or move the camera in front of your screen). -Your computer may slow down during searching chessboard corners. When -all corners are found it takes a snapshot (and the image will be negative) -; -#X text 65 103 2 Plug a supported camera and start rendering; -#X text 66 73 1 Print the chessboard ona rigid paperboard (or just -show it on the screen); -#X text 65 194 4 When enought chessboard have been found (20 by default) -it computes transformation matrix and map to undistord the image; -#X text 65 244 5 Then all incoming images are undistord \, you can -save the transformation and distorsion matrix to files to load it next -times; -#X text 31 287 for more information about this calibration see :; -#X text 41 327 - A flexible new technique for camera calibration \, -Zhang \, 1998 \, Microsoft Research; -#X text 41 307 - Learning Opencv \, Bradski and Kaehler \, 2008 \, -O'Reilly; -#X text 50 11 none; -#X obj 455 -188 cnv 15 720 800 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 615 374 cnv 15 400 160 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 815 -160 gemhead; -#X obj 619 569 pix_texture; -#X obj 795 538 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 3 81 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 342 184 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X msg 161 189 dimen 640 560 \, create \, 1; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 9 0; -#X connect 2 1 4 0; -#X connect 2 1 7 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 10 0; -#X connect 9 2 8 0; -#X connect 10 0 6 0; -#X restore 805 584 pd gemwin; -#X msg 805 564 destroy; -#X obj 485 570 pix_texture; -#X obj 619 216 separator; -#X obj 827 -133 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 884 42 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 866 7 5 0 10000 1 frame# - -; -#X obj 827 -104 openpanel; -#X msg 827 -84 open \$1; -#X obj 815 25 pix_film; -#X msg 833 -41 auto \$1; -#X obj 833 -59 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X text 803 544 Create window and render; -#X msg 928 -58 colorspace RGBA; -#X msg 942 -35 colorspace RGB; -#X msg 957 -13 colorspace Grey; -#X obj 928 -86 loadbang; -#X obj 619 197 pix_separator; -#X obj 485 217 separator; -#X obj 485 198 pix_separator; -#N canvas 1 184 299 199 vswitch 0; -#X obj 36 128 outlet; -#X obj 36 26 inlet; -#X obj 130 26 inlet; -#X obj 175 27 inlet; -#X obj 81 61 == 0; -#X obj 36 83 spigot 1; -#X obj 130 84 spigot 0; -#X connect 1 0 5 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 3 0 6 1; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X restore 485 67 pd vswitch; -#X obj 581 68 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 485 34 pix_video; -#X obj 485 -160 gemhead; -#X msg 504 -88 dimen 640 480; -#X msg 502 -113 dimen 320 240; -#X text 681 432 load distorsion coefficients and intrinsic matrix; -#X msg 531 -18 driver v4l2; -#X msg 515 -65 driver dc1394 \, dimen 640 480 \, colorspace grey; -#X msg 540 3 driver dc1394; -#X obj 619 494 pix_opencv_calibration; -#X obj 485 165 pix_grey; -#X obj 485 236 translateXYZ 0 -2 0; -#X obj 619 236 translateXYZ 0 2 0; -#X obj 485 590 rectangle 2.666 2; -#X obj 619 590 rectangle 2.666 2; -#X msg 682 451 loadDist \$1; -#X msg 698 471 loadIntra \$1; -#X msg 652 391 writeDist \$1; -#X msg 663 413 writeIntra \$1; -#X text 651 372 write distorsion coefficients and intrinsic matrix -; -#X obj 746 117 cnv 15 420 240 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 754 128 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 754 148 calibration \$1; -#X msg 754 192 view \$1; -#X text 793 170 number of view to take during calibration; -#X floatatom 754 174 5 0 0 0 - - -; -#X obj 754 233 pack f f; -#X msg 754 253 patternSize \$1 \$2; -#X floatatom 754 215 5 0 0 0 - - -; -#X floatatom 807 215 5 0 0 0 - - -; -#X text 844 211 number of inner corners on the chessboard; -#N canvas 130 67 612 325 advance-options 0; -#X msg 55 161 findChessFlag \$1 \$2 \$3; -#X obj 68 91 t b f; -#X obj 55 142 pack f f f; -#X obj 118 111 t b f; -#X obj 55 51 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 68 71 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 118 91 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 55 267 outlet; -#X text 53 27 findChessBoardCorner option; -#X text 75 50 CV_CALIB_CB_ADAPTIVE_TRESH : adaptive threhold (default -1); -#X text 84 70 CV_CALIB_CB_NORMALIZE_IMAGE : normalize image (default -0); -#X text 135 91 CV_CALIB_CB_FILTER_QUADS: advance filtering (default -1); -#X connect 0 0 7 0; -#X connect 1 0 2 0; -#X connect 1 1 2 1; -#X connect 2 0 0 0; -#X connect 3 0 2 0; -#X connect 3 1 2 2; -#X connect 4 0 2 0; -#X connect 5 0 1 0; -#X connect 6 0 3 0; -#X restore 753 315 pd advance-options; -#X floatatom 754 274 5 0 0 0 - - -; -#X msg 754 292 wait \$1; -#X text 792 273 number of frame to wait between two takes during calibration -; -#X text 773 128 start callibration; -#X obj 544 166 pix_rgba; -#X obj 485 140 spigot 1; -#X text 598 66 switch source (camera / film); -#X obj 530 95 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X text 547 93 switch color mode ( grey / rgba ); -#X msg 524 -41 device 1; -#X obj 530 118 == 0; -#X obj 544 140 spigot 0; -#X msg 753 335 reset; -#X text 797 334 reset corrections; -#X obj 748 516 print; -#X text 784 516 print some infos; -#X obj 635 351 t a; -#X connect 19 0 31 0; -#X connect 20 0 57 0; -#X connect 22 0 23 0; -#X connect 23 0 22 0; -#X connect 24 0 56 0; -#X connect 25 0 55 0; -#X connect 26 0 29 0; -#X connect 27 0 28 0; -#X connect 28 0 31 1; -#X connect 29 0 30 0; -#X connect 30 0 31 0; -#X connect 31 0 42 1; -#X connect 31 2 27 0; -#X connect 32 0 31 0; -#X connect 33 0 32 0; -#X connect 35 0 31 0; -#X connect 35 0 44 0; -#X connect 36 0 31 0; -#X connect 37 0 31 0; -#X connect 38 0 35 0; -#X connect 38 0 33 0; -#X connect 39 0 25 0; -#X connect 40 0 54 0; -#X connect 41 0 40 0; -#X connect 42 0 80 0; -#X connect 42 0 86 0; -#X connect 43 0 42 2; -#X connect 44 0 42 0; -#X connect 45 0 44 0; -#X connect 46 0 44 0; -#X connect 47 0 44 0; -#X connect 49 0 44 0; -#X connect 50 0 44 0; -#X connect 51 0 44 0; -#X connect 52 0 20 0; -#X connect 52 1 89 0; -#X connect 53 0 41 0; -#X connect 53 0 39 0; -#X connect 54 0 24 0; -#X connect 55 0 52 0; -#X connect 58 0 52 0; -#X connect 59 0 52 0; -#X connect 60 0 52 0; -#X connect 61 0 52 0; -#X connect 64 0 65 0; -#X connect 65 0 91 0; -#X connect 66 0 91 0; -#X connect 68 0 66 0; -#X connect 69 0 70 0; -#X connect 70 0 91 0; -#X connect 71 0 69 0; -#X connect 72 0 69 1; -#X connect 74 0 91 0; -#X connect 75 0 76 0; -#X connect 76 0 91 0; -#X connect 79 0 41 0; -#X connect 79 0 39 0; -#X connect 80 0 53 0; -#X connect 82 0 85 0; -#X connect 82 0 86 1; -#X connect 84 0 44 0; -#X connect 85 0 80 1; -#X connect 86 0 79 0; -#X connect 87 0 91 0; -#X connect 91 0 52 0; diff --git a/pix_opencv_calibration.cc b/pix_opencv_calibration.cc deleted file mode 100644 index 053a6a5..0000000 --- a/pix_opencv_calibration.cc +++ /dev/null @@ -1,547 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) -// camera calibration function by Antoine Villeret helped by Cyrille Henry - -#include "pix_opencv_calibration.h" -#include - -CPPEXTERN_NEW(pix_opencv_calibration) - -///////////////////////////////////////////////////////// -// -// pix_opencv_calibration -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_calibration :: pix_opencv_calibration() -{ - m_dataout = outlet_new(this->x_obj, 0); - - find_rgb = NULL; - find_gray = NULL; - rgb = NULL; - gray = NULL; - tmp = NULL; - mapx = NULL; - mapy = NULL; - - success_count = 0; - board_view_nb = 10; - calibration = 0; - patternSize[0] = 6; - patternSize[1] = 7; - frame = 0; - wait_n_frame = 10; - findChessFlag = CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS; - - // allocate storage matrix - image_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 2, CV_32FC1); - object_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 3, CV_32FC1); - point_counts = cvCreateMat(board_view_nb, 1, CV_32SC1); - intrinsic_matrix = cvCreateMat(3, 3, CV_32FC1); - distortion_coeffs = cvCreateMat(5, 1, CV_32FC1); - - pix_opencv_calibration :: resetCorrectionMatrix(); - //~ post("pix_opencv_calibration build on %s at %s", __DATE__, __TIME__); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_calibration :: ~pix_opencv_calibration() -{ - //Destroy cv_images to clean memory - if ( find_rgb ) cvReleaseImage(&find_rgb); - if ( find_gray ) cvReleaseImage(&find_gray); - if ( gray ) cvReleaseImage(&gray); - if ( rgb ) cvReleaseImage(&rgb); - if ( tmp ) cvReleaseImage(&tmp); - if ( mapx ) cvReleaseImage(&mapx); - if ( mapy ) cvReleaseImage(&mapy); - cvReleaseMat(&intrinsic_matrix); - cvReleaseMat(&distortion_coeffs); - cvReleaseMat(&image_points); - cvReleaseMat(&object_points); - cvReleaseMat(&point_counts); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_calibration :: processRGBAImage(imageStruct &image) -{ - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - if ( calibration ) error ( "image size changed, calibration was cancelled"); - calibration = 0; - - if ( find_rgb ) cvReleaseImage(&find_rgb); - if ( find_gray ) cvReleaseImage(&find_gray); - if ( gray ) cvReleaseImage(&gray); // TODO : cette ligne crash qd on passe du gray a couleur apres ou pendant calibration - if ( rgb ) cvReleaseImage(&rgb); - if ( tmp ) cvReleaseImage(&tmp); - if ( mapx ) cvReleaseImage(&mapx); - if ( mapy ) cvReleaseImage(&mapy); - - // used in findCorners - find_rgb = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 4); - find_gray = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 1); - - //create the images with new size - rgb = cvCreateImageHeader(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 4); - tmp = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 4); - mapx = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_32F, 1); - mapy = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_32F, 1); - - // create new map - cvInitUndistortMap(this->intrinsic_matrix, this->distortion_coeffs, this->mapx, this->mapy); - } - - // no need to copy a lot of memory, just point to it... - rgb->imageData = (char*) image.data; - - // this will loop until we got enought views (x->board_view_nb) with all corners visible - if ( success_count < board_view_nb && calibration != 0 ) { - findCorners( rgb ); - image.data = (unsigned char*) rgb->imageData; - } - else if ( success_count >= board_view_nb && calibration != 0 ) { - computeCalibration( rgb ); - image.data = (unsigned char*) rgb->imageData; - } - else if ( this->calibration == 0 ) { - cvRemap(rgb,tmp,mapx,mapy); - image.data = (unsigned char*) tmp->imageData; - } -} - -void pix_opencv_calibration :: processRGBImage(imageStruct &image) { - error( "pix_opencv_calibration : rgb format not supported"); -} - -void pix_opencv_calibration :: processYUVImage(imageStruct &image) { - error( "pix_opencv_calibration : yuv format not supported" ); -} - -void pix_opencv_calibration :: processGrayImage(imageStruct &image) -{ - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!gray)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - if ( calibration ) { - error ( "image size changed, calibration was cancelled"); - calibration = 0; - - t_atom data_out; - SETFLOAT(&data_out, calibration); - outlet_anything( this->m_dataout, gensym("calibration"), 1, &data_out); - } - - if ( find_rgb ) cvReleaseImage(&find_rgb); - if ( find_gray ) cvReleaseImage(&find_gray); - if ( gray ) cvReleaseImage(&gray); - if ( rgb ) cvReleaseImage(&rgb); - if ( tmp ) cvReleaseImage(&tmp); - if ( mapx ) cvReleaseImage(&mapx); - if ( mapy ) cvReleaseImage(&mapy); - - // used in findCorners - find_rgb = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 4); - find_gray = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 1); - - //create the images with new size - gray = cvCreateImageHeader(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 1); - tmp = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 1); - mapx = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_32F, 1); - mapy = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_32F, 1); - - // create new map - cvInitUndistortMap(this->intrinsic_matrix, this->distortion_coeffs, this->mapx, this->mapy); - } - - // no need to copy a lot of memory, just point to it... - gray->imageData = (char*) image.data; - - // this will loop until we got enought views (x->board_view_nb) with all corners visible - if ( success_count < board_view_nb && calibration != 0 ) { - findCorners( gray ); - image.data = (unsigned char*) gray->imageData; - } - else if ( success_count >= board_view_nb && calibration != 0 ) { - computeCalibration( gray ); - image.data = (unsigned char*) gray->imageData; - } - else if ( this->calibration == 0 ) { - cvRemap(gray,tmp,mapx,mapy); - image.data = (unsigned char*) tmp->imageData; - } -} - -///////////////////////////////////////////////////////// -// findCorners -// -///////////////////////////////////////////////////////// -void pix_opencv_calibration :: findCorners ( IplImage *image ) -{ - int board_point_nb = this->patternSize[0]*this->patternSize[1]; - CvPoint2D32f *corners = new CvPoint2D32f[board_point_nb]; - int corner_count; - int step; - CvSize patternSize, image_size; - - patternSize = cvSize( this->patternSize[0], this->patternSize[1] ); - image_size = cvSize( image->width, image->height ); - - // find chessboard corners (gray or RGBA image...) - int found = cvFindChessboardCorners(image, - patternSize, - corners, - &corner_count, - findChessFlag); - if (image->nChannels == 4) { - cvCopy(image, find_rgb) ; - cvCvtColor( image , find_gray , CV_RGBA2GRAY); // convert color to gray - } else { - cvCopy(image, find_gray) ; - } - - // get subpixel accuracy on those corners (grayscale image only) - cvFindCornerSubPix(find_gray, - corners, - corner_count, - cvSize(11,11), - cvSize(-1,-1), - cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.1)); - - - // draw chessboard corner (color image only) - if (image->nChannels == 4) cvDrawChessboardCorners(find_rgb, patternSize, corners, corner_count, found); - else - { - cvCvtColor( find_gray , find_rgb , CV_GRAY2RGBA); // convert gray to color - cvDrawChessboardCorners(find_rgb, patternSize, corners, corner_count, found); - } - - this->frame++; - if ( this->frame % this->wait_n_frame == 0 ) { - // update arrays - - if( corner_count == board_point_nb ) { - step = this->success_count*board_point_nb; - for( int i=step, j=0; jimage_points, float,i,0) = corners[j].x; - CV_MAT_ELEM(*this->image_points, float,i,1) = corners[j].y; - CV_MAT_ELEM(*this->object_points,float,i,0) = j/this->patternSize[0]; - CV_MAT_ELEM(*this->object_points,float,i,1) = j%this->patternSize[0]; - CV_MAT_ELEM(*this->object_points,float,i,2) = 0.0f; - } - CV_MAT_ELEM(*this->point_counts, int,this->success_count,0) = board_point_nb; - this->success_count++; - - cvNot( find_rgb , find_rgb ); - } - - t_atom data_out; - SETFLOAT(&data_out, success_count); - outlet_anything( this->m_dataout, gensym("take"), 1, &data_out); - - } - - // convert color to gray - if (image->nChannels == 1) { - cvCvtColor( find_rgb , image, CV_RGBA2GRAY); // convert color to gray - } else { - cvCopy(find_rgb, image); - } - -} -///////////////////////////////////////////////////////// -// computeCalibration -// -///////////////////////////////////////////////////////// -void pix_opencv_calibration :: computeCalibration ( IplImage *image ) -{ - //CALIBRATE THE CAMERA! - cvCalibrateCamera2(this->object_points, - this->image_points, - this->point_counts, - cvSize( image->width , image->height ), - this->intrinsic_matrix, - this->distortion_coeffs, - NULL, - NULL, - 0); - cvReleaseImage(&mapx); - cvReleaseImage(&mapy); - this->mapx = cvCreateImage( cvSize( image->width, image->height ), IPL_DEPTH_32F, 1 ); - this->mapy = cvCreateImage( cvSize( image->width, image->height ), IPL_DEPTH_32F, 1 ); - - cvInitUndistortMap(this->intrinsic_matrix, this->distortion_coeffs, this->mapx, this->mapy); - - t_atom intra_out[9]; - for ( int i = 0 ; i < 9 ; i++ ){ - SETFLOAT(&intra_out[i], CV_MAT_ELEM( *intrinsic_matrix, float, i%3, i/3)); - } - outlet_anything( this->m_dataout, gensym("intrinsic_matrix"), 9, intra_out); - - t_atom dist_out[5]; - for ( int i = 0 ; i < 5 ; i++ ){ - SETFLOAT(&dist_out[i], CV_MAT_ELEM( *distortion_coeffs, float, i, 0)); - } - outlet_anything( this->m_dataout, gensym("distortion_coeffs"), 5, dist_out); - - calibration = 0; - - t_atom data_out; - SETFLOAT(&data_out, calibration); - outlet_anything( this->m_dataout, gensym("calibration"), 1, &data_out); -} -///////////////////////////////////////////////////////// -// LoadMess -// -///////////////////////////////////////////////////////// - -void pix_opencv_calibration :: loadIntraMess (t_symbol *filename) -{ - if ( filename->s_name[0] == 0 ) { - error("no filename passed to loadIntra message"); - return; - } - if ( filename == NULL ) { error("%s is not a valid matrix", filename->s_name); return;} - this->intrinsic_matrix = (CvMat*)cvLoad(filename->s_name, 0, 0, 0);// TODO crash when passing non-XML file - - if (intrinsic_matrix == NULL) { - intrinsic_matrix = cvCreateMat(3, 3, CV_32FC1); - error("can't open file %s", filename->s_name); - resetCorrectionMatrix(); - } - else if ( intrinsic_matrix->rows != 3 || intrinsic_matrix->cols != 3 || CV_MAT_TYPE(intrinsic_matrix->type) != CV_32FC1 ) { - error("%s is not a valid intrinsic matrix", filename->s_name); - cvReleaseMat(&intrinsic_matrix); - intrinsic_matrix = cvCreateMat(3, 3, CV_32FC1); - resetCorrectionMatrix(); - } - else post("load transformation matrix from %s",filename->s_name); - - t_atom intra_out[9]; - for ( int i = 0 ; i < 9 ; i++ ){ - SETFLOAT(&intra_out[i], CV_MAT_ELEM( *intrinsic_matrix, float, i%3, i/3)); - } - outlet_anything( this->m_dataout, gensym("intrinsic_matrix"), 9, intra_out); - - // reinitialise size to force reinitialisation of mapx and mapy on next frame - this->comp_xsize = 0; -} - -void pix_opencv_calibration :: loadDistMess (t_symbol *filename) -{ - if ( filename->s_name[0] == 0 ) { - error("no filename passed to loadDist message"); - return; - } - if ( filename == NULL ) { error("NULL pointer passed to function loadDist"); return;} - distortion_coeffs = (CvMat*)cvLoad(filename->s_name); // TODO crash when passing non-XML file - - if (distortion_coeffs == NULL) { - distortion_coeffs = cvCreateMat(5, 1, CV_32FC1); - error("can't open file %s", filename->s_name); - resetCorrectionMatrix(); - } - else if( distortion_coeffs->rows != 5 || distortion_coeffs->cols != 1 || CV_MAT_TYPE(distortion_coeffs->type) != CV_32FC1 ) { - error("%s is not a valid distortions coeffs file", filename->s_name); - cvReleaseMat(&distortion_coeffs); - distortion_coeffs = cvCreateMat(3, 3, CV_32FC1); - resetCorrectionMatrix(); - } - else post("load distortion coefficients from %s",filename->s_name); - - t_atom dist_out[5]; - for ( int i = 0 ; i < 5 ; i++ ){ - SETFLOAT(&dist_out[i], CV_MAT_ELEM( *distortion_coeffs, float, i, 0)); - } - outlet_anything( this->m_dataout, gensym("distortion_coeffs"), 5, dist_out); - - // reinitialise size to force reinitialisation of mapx and mapy on next frame - this->comp_xsize = 0; -} - -void pix_opencv_calibration :: writeIntraMess (t_symbol *filename) -{ - cvSave(filename->s_name,intrinsic_matrix); -} - -void pix_opencv_calibration :: writeDistMess (t_symbol *filename) -{ - cvSave(filename->s_name,distortion_coeffs); -} - -void pix_opencv_calibration :: floatCalibrationhMess (float calib_flag) -{ - this->calibration=calib_flag; - if ( this->calibration == 1 ) { - this->success_count = 0; - this->frame = 0; - } - t_atom data_out; - SETFLOAT(&data_out, calibration); - outlet_anything( this->m_dataout, gensym("calibration"), 1, &data_out); -} - -void pix_opencv_calibration :: patternSizeMess (float xsize, float ysize) -{ - if (calibration) {error("you can't change pattern size during calibration"); return;} - if ( xsize < 3 || ysize < 3 ) {error("patternSize should be at least 3x3"); return;} - this->patternSize[0]=xsize; - this->patternSize[1]=ysize; - - // reallocate matrix - cvReleaseMat(&image_points); - cvReleaseMat(&object_points); - cvReleaseMat(&point_counts); - image_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 2, CV_32FC1); - object_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 3, CV_32FC1); - point_counts = cvCreateMat(board_view_nb, 1, CV_32SC1); -} - -void pix_opencv_calibration :: viewMess (int view) -{ - if ( calibration == 1 ) {error("you can't change view number during calibration !"); return;} - board_view_nb=view<2?2:view; - if (view < 2) error("view should be greater or equal to 2"); - - // reallocate matrix - cvReleaseMat(&image_points); - cvReleaseMat(&object_points); - cvReleaseMat(&point_counts); - image_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 2, CV_32FC1); - object_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 3, CV_32FC1); - point_counts = cvCreateMat(board_view_nb, 1, CV_32SC1); - -} - -void pix_opencv_calibration :: waitMess (int wait) -{ - wait_n_frame=wait<1?1:wait; - if (wait < 1) error("wait should be greater or equal to 1, you can't calibrate more often than each frame !"); -} - -void pix_opencv_calibration :: findChessFlagMess(int adaptThres, int normalize, int filter) -{ - adaptThres=adaptThres<=0?0:adaptThres>=1?1:adaptThres; - normalize=normalize<=0?0:normalize>=1?1:normalize; - filter=filter<=0?0:filter>=1?1:filter; - findChessFlag = CV_CALIB_CB_ADAPTIVE_THRESH * adaptThres + CV_CALIB_CB_NORMALIZE_IMAGE * normalize + CV_CALIB_CB_FILTER_QUADS * filter; -} -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_calibration :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::loadIntraMessCallback, - gensym("loadIntra"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::loadDistMessCallback, - gensym("loadDist"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::writeIntraMessCallback, - gensym("writeIntra"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::writeDistMessCallback, - gensym("writeDist"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::floatCalibrationMessCallback, - gensym("calibration"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::patternSizeMessCallback, - gensym("patternSize"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::viewMessCallback, - gensym("view"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::waitMessCallback, - gensym("wait"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::findChessFlagMessCallback, - gensym("findChessFlag"), A_FLOAT, A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_calibration::resetMessCallback, - gensym("reset"), A_NULL); - -} -void pix_opencv_calibration :: loadIntraMessCallback(void *data, t_symbol* filename) -{ - GetMyClass(data)->loadIntraMess(filename); -} -void pix_opencv_calibration :: loadDistMessCallback(void *data, t_symbol* filename) -{ - GetMyClass(data)->loadDistMess(filename); -} -void pix_opencv_calibration :: writeIntraMessCallback(void *data, t_symbol* filename) -{ - GetMyClass(data)->writeIntraMess(filename); -} -void pix_opencv_calibration :: writeDistMessCallback(void *data, t_symbol* filename) -{ - GetMyClass(data)->writeDistMess(filename); -} -void pix_opencv_calibration :: floatCalibrationMessCallback(void *data, t_floatarg calib_flag) -{ - GetMyClass(data)->floatCalibrationhMess((float)calib_flag); -} -void pix_opencv_calibration :: patternSizeMessCallback(void *data, t_floatarg xsize, t_floatarg ysize) -{ - GetMyClass(data)->patternSizeMess((float)xsize, (float)ysize); -} -void pix_opencv_calibration :: viewMessCallback(void *data, t_floatarg view) -{ - GetMyClass(data)->viewMess((int)view); -} -void pix_opencv_calibration :: waitMessCallback(void *data, t_floatarg wait) -{ - GetMyClass(data)->waitMess((int)wait); -} -void pix_opencv_calibration :: findChessFlagMessCallback(void *data, t_floatarg adaptThres, t_floatarg normalize, t_floatarg filter) -{ - GetMyClass(data)->findChessFlagMess((int) adaptThres, (int) normalize, (int) filter); -} - -void pix_opencv_calibration :: resetMessCallback(void *data) -{ - GetMyClass(data)->resetCorrectionMatrix(); -} - -void pix_opencv_calibration :: resetCorrectionMatrix() -{ - // make an "empty" intrinsinc matrix - CV_MAT_ELEM( *intrinsic_matrix, float, 0, 0 ) = 8; - CV_MAT_ELEM( *intrinsic_matrix, float, 1, 0 ) = 0; - CV_MAT_ELEM( *intrinsic_matrix, float, 2, 0 ) = 0; - CV_MAT_ELEM( *intrinsic_matrix, float, 0, 1 ) = 0; - CV_MAT_ELEM( *intrinsic_matrix, float, 1, 1 ) = 8; - CV_MAT_ELEM( *intrinsic_matrix, float, 2, 1 ) = 0; - CV_MAT_ELEM( *intrinsic_matrix, float, 0, 2 ) = 3; - CV_MAT_ELEM( *intrinsic_matrix, float, 1, 2 ) = 3; - CV_MAT_ELEM( *intrinsic_matrix, float, 2, 2 ) = 1; - - // zeros distortion coeffs - for ( int i = 0 ; i < 5 ; i++ ) { - CV_MAT_ELEM( *distortion_coeffs, float, i, 0) = 0.0; - } - - // reinitialise size to force reinitialisation of mapx and mapy on next frame - this->comp_xsize = 0; -} diff --git a/pix_opencv_calibration.h b/pix_opencv_calibration.h deleted file mode 100644 index 49bc6ac..0000000 --- a/pix_opencv_calibration.h +++ /dev/null @@ -1,120 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Threshold filter - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_pix_opencv_calibration_H_ -#define INCLUDE_pix_opencv_calibration_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_calibration - - Threshold filter - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_calibration : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_calibration, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_calibration(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_calibration(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - void findCorners ( IplImage *image ); - void computeCalibration ( IplImage *image ); - - ////////// - // Set the new edge threshold - void loadIntraMess(t_symbol *filename); - void loadDistMess(t_symbol *filename); - void writeIntraMess(t_symbol *filename); - void writeDistMess(t_symbol *filename); - void floatCalibrationhMess (float calib_flag); - void patternSizeMess (float xsize, float ysize); - void viewMess (int view); - void waitMess (int wait); - void findChessFlagMess(int adaptThres, int normalize, int filter); - void resetCorrectionMatrix(); - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - int success_count, /* number of images on wich we correctly found corners */ - board_view_nb, /* number of views to take */ - calibration, /* calibration flag */ - patternSize[2], /* size of the calibration chessboard */ - frame, /* number of frames analysed for chessboard corner */ - wait_n_frame, /* number of frames to wait between two take */ - findChessFlag; // flag for cvFindChessboardCorners - - - private: - - t_outlet *m_dataout; - - ////////// - // Static member functions - static void loadIntraMessCallback(void *data, t_symbol* filename); - static void loadDistMessCallback(void *data, t_symbol* filename); - static void writeIntraMessCallback(void *data, t_symbol* filename); - static void writeDistMessCallback(void *data, t_symbol* filename); - static void floatCalibrationMessCallback(void *data, t_floatarg calib_flag); - static void patternSizeMessCallback(void *data, t_floatarg xsize, t_floatarg ysize); - static void viewMessCallback(void *data, t_floatarg view); - static void waitMessCallback(void *data, t_floatarg wait); - static void findChessFlagMessCallback(void *data, t_floatarg adaptThres, t_floatarg normalize, t_floatarg filter); - static void resetMessCallback(void *data); - ///////// - - // CvMat needed - CvMat *image_points, - *object_points, - *point_counts, - *intrinsic_matrix, - *distortion_coeffs; - - ///////// - // IplImage needed - IplImage *find_rgb, *find_gray, *rgb, *gray, *tmp, *mapx, *mapy; -}; - -#endif // for header file diff --git a/pix_opencv_camshift-help.pd b/pix_opencv_camshift-help.pd deleted file mode 100644 index f9a3fed..0000000 --- a/pix_opencv_camshift-help.pd +++ /dev/null @@ -1,190 +0,0 @@ -#N canvas 21 324 964 666 10; -#X obj 0 114 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 9 118 Arguments:; -#X obj -1 18 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 4 -19 Class: pix_opencv; -#X text 30 138 none; -#X obj 435 -41 cnv 15 510 650 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 440 533 pix_texture; -#X obj 717 529 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 189 149 454 304 gemwin 0; -#X obj 130 218 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#X msg 129 165 create \, 1; -#X msg 205 166 destroy; -#N canvas 87 154 363 340 Gem.init 0; -#X obj 112 15 loadbang; -#X msg 62 93 reset; -#X obj 49 135 outlet; -#X msg 107 89 dimen 320 240; -#X obj 107 51 t b b b; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 3 0 2 0; -#X connect 4 0 3 0; -#X connect 4 2 1 0; -#X restore 289 80 pd Gem.init; -#X obj 128 109 t b b b; -#X msg 156 138 dimen 320 240; -#X msg 247 137 frame 25; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 9 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 9 0 6 0; -#X connect 9 1 10 0; -#X connect 9 2 11 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X restore 724 575 pd gemwin; -#X msg 724 554 create; -#X text 727 536 Create window and render; -#X obj 438 255 cnv 15 500 270 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 440 552 pix_resize 320 240; -#X obj 440 423 pix_opencv_camshift; -#X obj 551 453 unpack f f f f f; -#X floatatom 551 478 5 0 0 0 - - -; -#X floatatom 590 478 5 0 0 0 - - -; -#X floatatom 628 478 5 0 0 0 - - -; -#X floatatom 667 478 5 0 0 0 - - -; -#X floatatom 708 478 5 0 0 0 - - -; -#X text 578 502 center Y; -#X text 628 492 width; -#X text 663 503 height; -#X text 538 492 center X; -#X text 706 494 angle; -#X text 663 452 for the tracked object; -#X msg 515 331 backproject \$1; -#X text 634 332 show the backproject flow image; -#X obj 612 332 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 473 268 vmin \$1; -#X floatatom 529 270 5 0 0 0 - - -; -#X floatatom 545 288 5 0 0 0 - - -; -#X msg 491 288 vmax \$1; -#X floatatom 558 311 5 0 0 0 - - -; -#X msg 504 310 smin \$1; -#X text 583 288 V pre-filtering maximal value ( default : 256 ); -#X text 597 309 S pre-filtering minimal value ( default : 30 ); -#X msg 547 394 track \$1 \$2; -#X text 624 392 track %x %y : mark the object to track; -#X floatatom 591 355 5 0 0 0 - - -; -#X floatatom 608 375 5 0 0 0 - - -; -#X msg 526 353 rwidth \$1; -#X msg 535 373 rheight \$1; -#X text 627 353 initial search region width ( default : 20 ); -#X text 646 374 initial search region height ( default : 20 ); -#X text 574 270 V pre-filtering minimal value ( default : 50 ); -#X text 15 31 pix_opencv_camshift : continuously adaptive mean-shift -algorithm to track objects based on a hidden histogram of the hue component -of pixels.; -#X obj 440 232 pix_resize 320 240; -#X obj 440 571 rectangle 5.3 4; -#X obj 617 -31 gemhead; -#X obj 629 -4 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 686 171 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 668 136 5 0 10000 1 frame# - -; -#X obj 629 25 openpanel; -#X msg 629 45 open \$1; -#X obj 617 154 pix_film; -#X msg 635 88 auto \$1; -#X obj 635 70 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 730 71 colorspace RGBA; -#X msg 741 91 colorspace RGB; -#X obj 730 43 loadbang; -#N canvas 1 83 450 300 vswitch 0; -#X obj 36 133 outlet; -#X obj 36 26 inlet; -#X obj 129 29 inlet; -#X obj 174 28 inlet; -#X obj 81 72 == 0; -#X obj 36 93 spigot 1; -#X obj 129 101 spigot 0; -#X connect 1 0 5 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 3 0 6 1; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X restore 440 194 pd vswitch; -#X obj 509 193 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 440 152 pix_video; -#X obj 440 -36 gemhead; -#X msg 479 88 device 0; -#X msg 488 108 driver 1; -#X msg 466 49 dialog; -#X msg 471 69 device /dev/dv1394-0; -#X obj 440 213 pix_rgba; -#X text 5 -35 Synopsis: [pix_opencv_camshift]; -#X obj 0 160 cnv 15 430 450 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 11 164 written by Yves Degoyon ( ydegoyon@gmail.com ) \, inspired -by OpenCV samples code.; -#X connect 6 0 12 0; -#X connect 8 0 9 0; -#X connect 9 0 8 0; -#X connect 12 0 48 0; -#X connect 13 0 6 0; -#X connect 13 1 14 0; -#X connect 14 0 15 0; -#X connect 14 1 16 0; -#X connect 14 2 17 0; -#X connect 14 3 18 0; -#X connect 14 4 19 0; -#X connect 26 0 13 0; -#X connect 28 0 26 0; -#X connect 29 0 13 0; -#X connect 30 0 29 0; -#X connect 31 0 32 0; -#X connect 32 0 13 0; -#X connect 33 0 34 0; -#X connect 34 0 13 0; -#X connect 37 0 13 0; -#X connect 39 0 41 0; -#X connect 40 0 42 0; -#X connect 41 0 13 0; -#X connect 42 0 13 0; -#X connect 47 0 13 0; -#X connect 49 0 55 0; -#X connect 50 0 53 0; -#X connect 51 0 52 0; -#X connect 52 0 55 1; -#X connect 53 0 54 0; -#X connect 54 0 55 0; -#X connect 55 0 61 1; -#X connect 55 2 51 0; -#X connect 56 0 55 0; -#X connect 57 0 56 0; -#X connect 58 0 55 0; -#X connect 58 0 63 0; -#X connect 59 0 55 0; -#X connect 60 0 58 0; -#X connect 60 0 57 0; -#X connect 61 0 69 0; -#X connect 62 0 61 2; -#X connect 63 0 61 0; -#X connect 64 0 63 0; -#X connect 65 0 63 0; -#X connect 66 0 63 0; -#X connect 67 0 63 0; -#X connect 68 0 63 0; -#X connect 69 0 47 0; diff --git a/pix_opencv_camshift.cc b/pix_opencv_camshift.cc deleted file mode 100644 index 879a9f2..0000000 --- a/pix_opencv_camshift.cc +++ /dev/null @@ -1,450 +0,0 @@ - -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_camshift.h" -#include - -CPPEXTERN_NEW(pix_opencv_camshift) - -///////////////////////////////////////////////////////// -// -// pix_opencv_camshift -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_camshift :: pix_opencv_camshift() -{ - int i; - int hdims = 16; - float hranges_arr[] = {0,180}; - float* hranges = hranges_arr; - - comp_xsize=320; - comp_ysize=240; - - m_dataout = outlet_new(this->x_obj, &s_anything); - - x_track = 0; - x_init = 0; - x_rwidth = 20; - x_rheight = 20; - x_backproject = 0; - x_vmin = 50; - x_vmax = 256; - x_smin = 30; - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - hue = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - mask = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - backproject = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_camshift :: ~pix_opencv_camshift() -{ - // Destroy cv_images - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&hsv); - cvReleaseImage(&hue); - cvReleaseImage(&mask); - cvReleaseImage(&backproject); - cvReleaseHist(&hist); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_camshift :: processRGBAImage(imageStruct &image) -{ - int i, k; - int im; - int marked; - int hdims = 16; - float hranges_arr[] = {0,180}; - float* hranges = hranges_arr; - - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&hsv); - cvReleaseImage(&hue); - cvReleaseImage(&mask); - cvReleaseImage(&backproject); - cvReleaseHist(&hist); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - hue = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - mask = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - backproject = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); - - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to hsv - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - cvCvtColor(rgb, hsv, CV_BGR2HSV); - - if ( x_track ) - { - cvInRangeS( hsv, cvScalar(0,x_smin,MIN(x_vmin,x_vmax),0), cvScalar(180,256,MAX(x_vmin,x_vmax),0), mask ); - cvSplit( hsv, hue, 0, 0, 0 ); - - if ( x_init ) - { - float max_val = 0.f; - x_init = 0; - cvSetImageROI( hue, selection ); - cvSetImageROI( mask, selection ); - cvCalcHist( &hue, hist, 0, mask ); - cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 ); - cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0., 0 ); - cvResetImageROI( hue ); - cvResetImageROI( mask ); - trackwindow = selection; - } - - cvCalcBackProject( (IplImage**)&(hue), (CvArr*)backproject, (const CvHistogram*)hist ); - cvAnd( backproject, mask, backproject, 0 ); - cvCamShift( backproject, trackwindow, - cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ), - &trackcomp, &trackbox ); - trackwindow = trackcomp.rect; - - if( x_backproject ) - cvCvtColor( backproject, rgb, CV_GRAY2BGR ); - if( !rgb->origin ) - trackbox.angle = -trackbox.angle; - cvEllipseBox( rgb, trackbox, CV_RGB(255,0,0), 3, CV_AA, 0 ); - SETFLOAT(&x_list[0], trackbox.center.x); - SETFLOAT(&x_list[1], trackbox.center.y); - SETFLOAT(&x_list[2], trackbox.size.width); - SETFLOAT(&x_list[3], trackbox.size.height); - SETFLOAT(&x_list[4], trackbox.angle); - outlet_list( m_dataout, 0, 5, x_list ); - } - - cvCvtColor(rgb, rgba, CV_BGR2BGRA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_camshift :: processRGBImage(imageStruct &image) -{ - int i, k; - int im; - int marked; - int hdims = 16; - float hranges_arr[] = {0,180}; - float* hranges = hranges_arr; - - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&hsv); - cvReleaseImage(&hue); - cvReleaseImage(&mask); - cvReleaseImage(&backproject); - cvReleaseHist(&hist); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - hue = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - mask = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - backproject = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); - - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to hsv - cvCvtColor(rgb, hsv, CV_BGR2HSV); - - if ( x_track ) - { - cvInRangeS( hsv, cvScalar(0,x_smin,MIN(x_vmin,x_vmax),0), cvScalar(180,256,MAX(x_vmin,x_vmax),0), mask ); - cvSplit( hsv, hue, 0, 0, 0 ); - - if ( x_init ) - { - float max_val = 0.f; - x_init = 0; - cvSetImageROI( hue, selection ); - cvSetImageROI( mask, selection ); - cvCalcHist( &hue, hist, 0, mask ); - cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 ); - cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0., 0 ); - cvResetImageROI( hue ); - cvResetImageROI( mask ); - trackwindow = selection; - } - - cvCalcBackProject( (IplImage**)&(hue), (CvArr*)backproject, (const CvHistogram*)hist ); - cvAnd( backproject, mask, backproject, 0 ); - cvCamShift( backproject, trackwindow, - cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ), - &trackcomp, &trackbox ); - trackwindow = trackcomp.rect; - - if( x_backproject ) - cvCvtColor( backproject, rgb, CV_GRAY2BGR ); - if( !rgb->origin ) - trackbox.angle = -trackbox.angle; - cvEllipseBox( rgb, trackbox, CV_RGB(255,0,0), 3, CV_AA, 0 ); - SETFLOAT(&x_list[0], trackbox.center.x); - SETFLOAT(&x_list[1], trackbox.center.y); - SETFLOAT(&x_list[2], trackbox.size.width); - SETFLOAT(&x_list[3], trackbox.size.height); - SETFLOAT(&x_list[4], trackbox.angle); - outlet_list( m_dataout, 0, 5, x_list ); - } - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_camshift :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_camshift : yuv format not supported" ); -} - -void pix_opencv_camshift :: processGrayImage(imageStruct &image) -{ - int i, k; - int im; - int marked; - int hdims = 16; - float hranges_arr[] = {0,180}; - float* hranges = hranges_arr; - - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&hsv); - cvReleaseImage(&hue); - cvReleaseImage(&mask); - cvReleaseImage(&backproject); - cvReleaseHist(&hist); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - hue = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - mask = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - backproject = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); - - } - - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - // Convert to hsv - cvCvtColor(gray, rgb, CV_GRAY2BGR); - cvCvtColor(rgb, hsv, CV_BGR2HSV); - - if ( x_track ) - { - cvInRangeS( hsv, cvScalar(0,x_smin,MIN(x_vmin,x_vmax),0), cvScalar(180,256,MAX(x_vmin,x_vmax),0), mask ); - cvSplit( hsv, hue, 0, 0, 0 ); - - if ( x_init ) - { - float max_val = 0.f; - x_init = 0; - cvSetImageROI( hue, selection ); - cvSetImageROI( mask, selection ); - cvCalcHist( &hue, hist, 0, mask ); - cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 ); - cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0., 0 ); - cvResetImageROI( hue ); - cvResetImageROI( mask ); - trackwindow = selection; - } - - cvCalcBackProject( (IplImage**)&(hue), (CvArr*)backproject, (const CvHistogram*)hist ); - cvAnd( backproject, mask, backproject, 0 ); - cvCamShift( backproject, trackwindow, - cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ), - &trackcomp, &trackbox ); - trackwindow = trackcomp.rect; - - if( x_backproject ) - memcpy( gray->imageData, backproject->imageData, image.xsize*image.ysize ); - if( !rgb->origin ) - trackbox.angle = -trackbox.angle; - cvEllipseBox( gray, trackbox, CV_RGB(255,0,0), 3, CV_AA, 0 ); - SETFLOAT(&x_list[0], trackbox.center.x); - SETFLOAT(&x_list[1], trackbox.center.y); - SETFLOAT(&x_list[2], trackbox.size.width); - SETFLOAT(&x_list[3], trackbox.size.height); - SETFLOAT(&x_list[4], trackbox.angle); - outlet_list( m_dataout, 0, 5, x_list ); - } - - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_camshift :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_camshift::backProjectMessCallback, - gensym("backproject"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_camshift::vMinMessCallback, - gensym("vmin"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_camshift::vMaxMessCallback, - gensym("vmax"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_camshift::sMinMessCallback, - gensym("smin"), A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_camshift::trackMessCallback, - gensym("track"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_camshift::rWidthMessCallback, - gensym("rwidth"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_camshift::rHeightMessCallback, - gensym("rheight"), A_NULL); -} - -void pix_opencv_camshift :: backProjectMessCallback(void *data, t_floatarg backproject) -{ - GetMyClass(data)->backProjectMess((float)backproject); -} - -void pix_opencv_camshift :: vMinMessCallback(void *data, t_floatarg vmin) -{ - GetMyClass(data)->vMinMess((float)vmin); -} - -void pix_opencv_camshift :: vMaxMessCallback(void *data, t_floatarg vmax) -{ - GetMyClass(data)->vMaxMess((float)vmax); -} - -void pix_opencv_camshift :: sMinMessCallback(void *data, t_floatarg smin) -{ - GetMyClass(data)->sMinMess((float)smin); -} - -void pix_opencv_camshift :: trackMessCallback(void *data, t_floatarg px, t_floatarg py) -{ - GetMyClass(data)->trackMess((float)px, (float)py); -} - -void pix_opencv_camshift :: rWidthMessCallback(void *data, t_floatarg rwidth) -{ - GetMyClass(data)->rWidthMess((float)rwidth); -} - -void pix_opencv_camshift :: rHeightMessCallback(void *data, t_floatarg rheight) -{ - GetMyClass(data)->rHeightMess((float)rheight); -} - -void pix_opencv_camshift :: backProjectMess(float backproject) -{ - if ( ( (int)backproject==0 ) || ( (int)backproject==1 ) ) x_backproject = (int)backproject; -} - -void pix_opencv_camshift :: vMinMess(float vmin) -{ - if ( ( (int)vmin>=0 ) || ( (int)vmin<256 ) ) x_vmin = (int)vmin; -} - -void pix_opencv_camshift :: vMaxMess(float vmax) -{ - if ( ( (int)vmax>=0 ) || ( (int)vmax<256 ) ) x_vmax = (int)vmax; -} - -void pix_opencv_camshift :: sMinMess(float smin) -{ - if ( ( (int)smin>=0 ) || ( (int)smin<256 ) ) x_smin = (int)smin; -} - -void pix_opencv_camshift :: trackMess(float px, float py) -{ - int rx, ry, w, h; - - if ( ( px<0.0 ) || ( px>comp_xsize ) || ( py<0.0 ) || ( py>comp_ysize ) ) return; - - //py = comp_ysize - py; - origin = cvPoint((int)px,(int)py); - rx = ( (int)px-(x_rwidth/2) < 0 )? 0:(int)px-(x_rwidth/2); - ry = ( (int)py-(x_rheight/2) < 0 )? 0:(int)py-(x_rheight/2); - w = (rx+x_rwidth>comp_xsize ) ? ( comp_xsize - rx ):x_rwidth; - h = (ry+x_rheight>comp_ysize ) ? ( comp_ysize - ry ):x_rheight; - selection = cvRect(rx,ry,w,h); - post( "pix_opencv_camshift : track point (%f,%f) region (%d %d %d %d)", px, py, rx, ry, w, h ); - x_track = 1; - x_init = 1; -} - -void pix_opencv_camshift :: rWidthMess(float rwidth) -{ - if ( (int)rwidth>=0 ) x_rwidth = (int)rwidth; - // refresh selection zone - trackMess( (float)origin.x, (float)origin.y ); -} - -void pix_opencv_camshift :: rHeightMess(float rheight) -{ - if ( (int)rheight>=0 ) x_rheight = (int)rheight; - // refresh selection zone - trackMess( (float)origin.x, (float)origin.y ); -} - diff --git a/pix_opencv_camshift.h b/pix_opencv_camshift.h deleted file mode 100644 index 7b127c8..0000000 --- a/pix_opencv_camshift.h +++ /dev/null @@ -1,110 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Continously adaptive mean-shift tracker - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_CAMSHIFT_H_ -#define INCLUDE_PIX_OPENCV_CAMSHIFT_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/video/tracking.hpp" -#endif - -#include "Base/GemPixObj.h" - -#define MAX_MARKERS 500 -const int MAX_COUNT = 500; - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_camshift - - Continously adaptive mean-shift tracker - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_camshift : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_camshift, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_camshift(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_camshift(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - void backProjectMess(float backproject); - void vMinMess(float vmin); - void vMaxMess(float vmax); - void sMinMess(float smin); - void trackMess(float px, float py); - void rWidthMess(float rwidth); - void rHeightMess(float rheight); - - int comp_xsize; - int comp_ysize; - - t_outlet *m_dataout; - int x_track; - int x_init; - int x_rwidth; - int x_rheight; - int x_backproject; - int x_vmin; - int x_vmax; - int x_smin; - - private: - - ////////// - // Static member functions - static void backProjectMessCallback(void *data, float backproject); - static void vMinMessCallback(void *data, float vmin); - static void vMaxMessCallback(void *data, float vmax); - static void sMinMessCallback(void *data, float smin); - static void trackMessCallback(void *data, float px, float py); - static void rWidthMessCallback(void *data, float rwidth); - static void rHeightMessCallback(void *data, float rheight); - - // Internal Open CV data - IplImage *rgba, *rgb, *gray, *hsv, *hue, *mask, *backproject; - CvHistogram *hist; - CvPoint origin; - CvRect selection; - CvRect trackwindow; - CvBox2D trackbox; - CvConnectedComp trackcomp; - - t_atom x_list[5]; -}; - -#endif // for header file diff --git a/pix_opencv_colorfilt-help.pd b/pix_opencv_colorfilt-help.pd deleted file mode 100644 index 8244bac..0000000 --- a/pix_opencv_colorfilt-help.pd +++ /dev/null @@ -1,164 +0,0 @@ -#N canvas 240 210 936 587 10; -#X obj -6 52 cnv 15 430 370 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj -6 6 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 3 10 Arguments:; -#X obj -7 -90 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 24 30 none; -#X obj 430 -147 cnv 15 480 570 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 680 337 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 327 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X msg 161 188 dimen 320 240 \, create \, 1; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 9 0; -#X connect 2 1 4 0; -#X connect 2 1 7 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 10 0; -#X connect 9 2 8 0; -#X connect 10 0 6 0; -#X restore 690 381 pd gemwin; -#X msg 690 363 create; -#X obj 441 201 cnv 15 460 130 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X text 688 343 Create window and render; -#X text 2 -57 written by Yves Degoyon ( ydegoyon@gmail.com ); -#X obj 446 361 rectangle 5.3 4; -#X floatatom 485 310 5 0 0 0 - - -; -#X floatatom 530 310 5 0 0 0 - - -; -#X floatatom 575 310 5 0 0 0 - - -; -#X text 619 310 RGB selected components; -#X msg 483 230 tolerance \$1; -#X floatatom 569 232 5 0 0 0 - - -; -#X text 610 231 tolerance applied for the selection of colors; -#X obj 832 49 gemmouse; -#X obj 828 134 f; -#X obj 798 133 f; -#X obj 798 112 t b b; -#X obj 798 155 pack f f; -#X obj 798 90 route 1; -#X text 3 -112 pix_opencv_colorfilt : color filter; -#X text 4 -80 you can set the selected color with its RGB components -or by selecting a piksel in the video window; -#X msg 466 204 pick \$1 \$2; -#X text 542 203 pick a color from the video; -#X obj 633 -135 gemhead; -#X obj 645 -108 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 702 67 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 684 32 5 0 10000 1 frame# - -; -#X obj 645 -79 openpanel; -#X msg 645 -59 open \$1; -#X obj 633 50 pix_film; -#X msg 651 -16 auto \$1; -#X obj 651 -34 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X msg 746 -33 colorspace RGBA; -#X msg 759 5 colorspace RGB; -#X msg 754 -14 colorspace Grey; -#X obj 746 -61 loadbang; -#N canvas 1 165 267 218 vswitch 0; -#X obj 36 143 outlet; -#X obj 36 26 inlet; -#X obj 120 27 inlet; -#X obj 165 27 inlet; -#X obj 81 79 == 0; -#X obj 36 103 spigot 1; -#X obj 120 105 spigot 0; -#X connect 1 0 5 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 3 0 6 1; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X restore 446 91 pd vswitch; -#X obj 514 91 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 446 48 pix_video; -#X obj 446 -134 gemhead; -#X msg 485 -27 device 0; -#X msg 494 4 driver 1; -#X msg 471 -81 dialog; -#X msg 476 -51 device /dev/dv1394-0; -#X obj 446 289 pix_opencv_colorfilt; -#X obj 446 133 pix_resize 320 240; -#X obj 446 112 pix_rgba; -#X floatatom 485 270 5 0 0 0 - - -; -#X floatatom 530 270 5 0 0 0 - - -; -#X floatatom 575 270 5 0 0 0 - - -; -#X text 619 270 RGB selected components; -#X obj 446 339 pix_texture; -#X connect 7 0 8 0; -#X connect 8 0 7 0; -#X connect 17 0 51 0; -#X connect 18 0 17 0; -#X connect 20 0 22 1; -#X connect 20 1 21 1; -#X connect 20 2 25 0; -#X connect 21 0 24 1; -#X connect 22 0 24 0; -#X connect 23 0 22 0; -#X connect 23 1 21 0; -#X connect 24 0 28 0; -#X connect 25 0 23 0; -#X connect 28 0 51 0; -#X connect 30 0 36 0; -#X connect 31 0 34 0; -#X connect 32 0 33 0; -#X connect 33 0 36 1; -#X connect 34 0 35 0; -#X connect 35 0 36 0; -#X connect 36 0 43 1; -#X connect 36 2 32 0; -#X connect 37 0 36 0; -#X connect 38 0 37 0; -#X connect 39 0 36 0; -#X connect 39 0 45 0; -#X connect 40 0 36 0; -#X connect 41 0 36 0; -#X connect 42 0 39 0; -#X connect 42 0 38 0; -#X connect 43 0 53 0; -#X connect 44 0 43 2; -#X connect 45 0 43 0; -#X connect 46 0 45 0; -#X connect 47 0 45 0; -#X connect 48 0 45 0; -#X connect 49 0 45 0; -#X connect 50 0 45 0; -#X connect 51 0 58 0; -#X connect 51 1 13 0; -#X connect 51 2 14 0; -#X connect 51 3 15 0; -#X connect 52 0 51 0; -#X connect 53 0 52 0; -#X connect 54 0 51 1; -#X connect 55 0 51 2; -#X connect 56 0 51 3; -#X connect 58 0 12 0; diff --git a/pix_opencv_colorfilt.cc b/pix_opencv_colorfilt.cc deleted file mode 100644 index d977e0a..0000000 --- a/pix_opencv_colorfilt.cc +++ /dev/null @@ -1,299 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_colorfilt.h" -#include "g_canvas.h" - -CPPEXTERN_NEW(pix_opencv_colorfilt) - -///////////////////////////////////////////////////////// -// -// pix_opencv_colorfilt -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_colorfilt :: pix_opencv_colorfilt() -{ - inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("R")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("G")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("B")); - - x_R = outlet_new(this->x_obj, &s_float); - x_G = outlet_new(this->x_obj, &s_float); - x_B = outlet_new(this->x_obj, &s_float); - - x_colorR = 128; - x_colorG = 128; - x_colorB = 128; - - outlet_float( x_R, x_colorR ); - outlet_float( x_G, x_colorG ); - outlet_float( x_B, x_colorB ); - - comp_xsize=320; - comp_ysize=240; - - x_tolerance = 50; - - x_canvas = canvas_getcurrent(); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - brgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_colorfilt :: ~pix_opencv_colorfilt() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&brgb); -} - -void pix_opencv_colorfilt :: drawColor() -{ - int width, height; - char color[32]; - - sprintf( color, "#%.2X%.2X%.2X", x_colorR, x_colorG, x_colorB ); - width = rtext_width( glist_findrtext( (t_glist*)x_canvas, (t_text *)this->x_obj ) ); - height = rtext_height( glist_findrtext( (t_glist*)x_canvas, (t_text *)this->x_obj ) ); - sys_vgui((char*)".x%x.c delete rectangle %xCOLOR\n", x_canvas, this->x_obj ); - sys_vgui((char*)".x%x.c create rectangle %d %d %d %d -fill %s -tags %xCOLOR\n", - x_canvas, this->x_obj->te_xpix+width+5, this->x_obj->te_ypix, - this->x_obj->te_xpix+width+height+5, - this->x_obj->te_ypix+height, color, this->x_obj ); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_colorfilt :: processRGBAImage(imageStruct &image) -{ - int px,py; - unsigned char r,g,b; - int diff; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { - - comp_xsize = image.xsize; - comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgba ) - { - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&brgb); - } - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - brgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - } - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCopy(rgba, brgb); - - for( py=0; pyheight; py++ ) { - for( px=0; pxwidth; px++ ) { -#ifdef __APPLE__ - g = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4]; - r = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4+1]; - b = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4+3]; -#else - r = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4]; - g = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4+1]; - b = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4+2]; -#endif - - diff = 0; - diff = abs(r-x_colorR ); - diff += abs(g-x_colorG ); - diff += abs(b-x_colorB ); - diff = diff/3; - - if ( diff > x_tolerance ) - { - (rgba->imageData + rgba->widthStep*(int)py)[(int)px*4] = 0x0; - (rgba->imageData + rgba->widthStep*(int)py)[(int)px*4+1] = 0x0; - (rgba->imageData + rgba->widthStep*(int)py)[(int)px*4+2] = 0x0; - (rgba->imageData + rgba->widthStep*(int)py)[(int)px*4+3] = 0x0; - } - } - } - - //copy back the processed frame to image - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_colorfilt :: processRGBImage(imageStruct &image) -{ - unsigned char r,g,b; - int diff; - int px, py; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgb ) - { - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&brgb); - } - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - brgb = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 4); - - } - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCopy(rgb, brgb); - - for( py=0; pyheight; py++ ) { - for( px=0; pxwidth; px++ ) { - b = ((uchar*)(rgb->imageData + rgb->widthStep*(int)py))[(int)px*3]; - g = ((uchar*)(rgb->imageData + rgb->widthStep*(int)py))[(int)px*3+1]; - r = ((uchar*)(rgb->imageData + rgb->widthStep*(int)py))[(int)px*3+2]; - - diff = 0; - diff = abs(r-x_colorR ); - diff += abs(g-x_colorG ); - diff += abs(b-x_colorB ); - - if ( diff > x_tolerance ) - { - (rgb->imageData + rgb->widthStep*(int)py)[(int)px*3] = 0x0; - (rgb->imageData + rgb->widthStep*(int)py)[(int)px*3+1] = 0x0; - (rgb->imageData + rgb->widthStep*(int)py)[(int)px*3+2] = 0x0; - } - } - } - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_colorfilt :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_colorfilt : yuv format not supported" ); -} - -void pix_opencv_colorfilt :: processGrayImage(imageStruct &image) -{ - post( "pix_opencv_colorfilt : gray format not supported" ); -} - -void pix_opencv_colorfilt :: floatToleranceMess (float tolerance) -{ - if ( (int)tolerance>0 ) x_tolerance = (int)tolerance; -} - -void pix_opencv_colorfilt :: floatRMess (float r) -{ - if ( ( (int)r>=0 ) && ( (int)r<=255 ) ) x_colorR = (int)r; - if (glist_isvisible(x_canvas)) drawColor(); -} - -void pix_opencv_colorfilt :: floatGMess (float g) -{ - if ( ( (int)g>=0 ) && ( (int)g<=255 ) ) x_colorG = (int)g; - if (glist_isvisible(x_canvas)) drawColor(); -} - -void pix_opencv_colorfilt :: floatBMess (float b) -{ - if ( ( (int)b>=0 ) && ( (int)b<=255 ) ) x_colorB = (int)b; - if (glist_isvisible(x_canvas)) drawColor(); -} - -void pix_opencv_colorfilt :: pickMess (float xcur, float ycur) -{ - if ( ( xcur >= 0. ) && ( xcur <= comp_xsize ) - && ( ycur > 0. ) && ( ycur < comp_ysize ) ) - { -#ifdef __APPLE__ - x_colorR = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+1]; - x_colorG = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+2]; - x_colorB = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+3]; -#else - //ycur = brgb->height - ycur; - x_colorR = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4]; - x_colorG = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+1]; - x_colorB = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+2]; -#endif - outlet_float( x_R, x_colorR ); - outlet_float( x_G, x_colorG ); - outlet_float( x_B, x_colorB ); - - if (glist_isvisible(x_canvas)) drawColor(); - } -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_colorfilt :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::floatToleranceMessCallback, - gensym("tolerance"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::floatRMessCallback, - gensym("R"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::floatGMessCallback, - gensym("G"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::floatBMessCallback, - gensym("B"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::pickMessCallback, - gensym("pick"), A_FLOAT, A_FLOAT, A_NULL); -} - -void pix_opencv_colorfilt :: floatToleranceMessCallback(void *data, t_floatarg tolerance) -{ - GetMyClass(data)->floatToleranceMess((float)tolerance); -} - -void pix_opencv_colorfilt :: floatRMessCallback(void *data, t_floatarg r) -{ - GetMyClass(data)->floatRMess((float)r); -} - -void pix_opencv_colorfilt :: floatGMessCallback(void *data, t_floatarg g) -{ - GetMyClass(data)->floatGMess((float)g); -} - -void pix_opencv_colorfilt :: floatBMessCallback(void *data, t_floatarg b) -{ - GetMyClass(data)->floatBMess((float)b); -} - -void pix_opencv_colorfilt :: pickMessCallback(void *data, t_floatarg xcur, t_floatarg ycur) -{ - GetMyClass(data)->pickMess((float)xcur,(float)ycur); -} diff --git a/pix_opencv_colorfilt.h b/pix_opencv_colorfilt.h deleted file mode 100644 index 20b4996..0000000 --- a/pix_opencv_colorfilt.h +++ /dev/null @@ -1,103 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Color filter - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_COLORFILT_H_ -#define INCLUDE_PIX_OPENCV_COLORFILT_H_ - -#include - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_colorfilt - - Color filter object - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_colorfilt : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_colorfilt, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_colorfilt(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_colorfilt(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatToleranceMess(float tolerance); - void floatRMess(float r); - void floatGMess(float g); - void floatBMess(float b); - void pickMess(float xcur, float ycur); - void drawColor(void); - - // The color tolerance - int x_tolerance; - unsigned char x_colorR; // RGB components of binary mask - unsigned char x_colorG; - unsigned char x_colorB; - - t_outlet *x_R; // output R component of selected color - t_outlet *x_G; // output G component of selected color - t_outlet *x_B; // output B component of selected color - - t_canvas *x_canvas; - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - ////////// - // Static member functions - static void floatToleranceMessCallback(void *data, float tolerance); - static void floatRMessCallback(void *data, float r); - static void floatGMessCallback(void *data, float g); - static void floatBMessCallback(void *data, float b); - static void pickMessCallback(void *data, float xcur, float ycur); - - ///////// - // IplImage needed - IplImage *rgba, *rgb, *brgb; -}; - -#endif // for header file diff --git a/pix_opencv_contours-help.pd b/pix_opencv_contours-help.pd deleted file mode 100644 index ec67f1e..0000000 --- a/pix_opencv_contours-help.pd +++ /dev/null @@ -1,594 +0,0 @@ -#N canvas 950 118 794 766 10; -#X obj 472 35 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X obj 11 56 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 11 307 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 13 315 Inlets:; -#X obj 11 267 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 20 266 Arguments:; -#X text 12 436 Outlets:; -#X text 478 20 Example:; -#X text 58 21 Class: pix_opencv; -#X text 11 60 Description: finds contours; -#X text 66 276 none; -#X text 30 349 Inlet 1: message: epsilon [float]; -#X obj 353 315 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 1 122 450 300 gemwin 0; -#X obj 132 156 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 142 68 set create; -#X msg 198 112 destroy; -#X msg 132 132 reset \, dimen 640 480 \, create \, 1; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 7 0; -#X connect 3 1 5 0; -#X connect 3 1 6 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X restore 358 354 pd gemwin; -#X msg 358 335 destroy; -#X text 354 314 Create window:; -#X text 30 329 Inlet 1: binarized image; -#X text 354 314 Create window:; -#X text 30 329 Inlet 1: binarized image; -#X text 20 488 info; -#X text 30 569 <2> -; -#X text 25 447 Outlet 1: gemlist output; -#X text 25 467 Outlet 3: info output; -#X text 37 5 Synopsis: [pix_opencv_contours]; -#X text 21 558 contour (for each of them); -#X text 37 75 [pix_opencv_contours] finds contours in incomming image -\, simplifies it according to the epsilon value and outputs contours -with area greater than a threshold.; -#X text 30 339 Inlet 1: message: area threshold [float]; -#X text 25 457 Outlet 2: contour \, convexhull and convexity defect -output; -#X text 37 126 contrary to [pix_opencv_contour_convexhull] \, [pix_opencv_contours] -outputs all contours found not only the biggest.; -#X text 37 175 it can also output rotated bounding rectangle \, convexhull -and cenvexity defects; -#X text 37 215 you can choose the hierarchy level of output contour -; -#X text 37 235 so this external replaces all old pix_opencv_contours_* -; -#X text 30 599 <2> -; -#X text 21 586 convexhull (for each contour); -#X text 20 617 convexixitydefects (for each contour); -#X text 30 629 <7> depth; -#X text 26 699 by antoine villeret - 2012; -#X text 16 719 bug \, feedback \, comment... on the pd-list; -#X obj 476 193 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 541 151 pix_texture; -#X obj 487 171 pix_gray; -#X obj 487 141 pix_buf; -#X obj 487 76 t b a a; -#X obj 487 57 gemhead 1; -#X msg 542 214 epsilon \$1; -#X floatatom 542 197 5 0 0 0 - - -; -#X obj 625 121 loadbang; -#X obj 541 171 rectangle 5.333 4; -#X obj 514 116 t a a; -#X msg 617 214 area \$1; -#X floatatom 617 197 5 0 0 0 - - -; -#X msg 659 142 10; -#X msg 625 141 2; -#N canvas 1171 234 474 845 draw_rotrect 0; -#X obj 71 506 GEMglVertex2d; -#X obj 71 586 GEMglVertex2d; -#X obj 71 666 GEMglVertex2d; -#X obj 71 746 GEMglVertex2d; -#X obj 71 766 GEMglEnd; -#X obj 71 277 alpha; -#X obj 143 178 list split 1; -#X obj 71 420 GEMglBegin GL_LINE_LOOP; -#X obj 177 198 list split 8; -#X msg 363 324 0 0 0 0 0 0 0 0; -#X obj 32 -8 inlet INFO; -#X obj 71 256 gemhead; -#X obj 15 147 loadbang; -#X msg 15 168 0; -#X obj 71 52 t b a b; -#X obj 211 504 list split 2; -#X obj 177 448 list split 2; -#X obj 137 472 unpack; -#X obj 211 525 unpack; -#X obj 245 564 list split 2; -#X obj 245 585 unpack; -#X obj 279 664 list split 2; -#X obj 279 685 unpack; -#X obj 90 84 list split 2; -#X obj 95 154 list append; -#X obj 292 81 t b; -#X obj 32 32 route 0; -#X floatatom 342 463 5 0 0 0 - - -; -#X obj 342 442 list length; -#X obj 71 400 GEMglLineWidth 1; -#X obj 71 327 translateXYZ -5.3333 4 0; -#X obj 71 361 scaleXYZ 10.6666 -8 0; -#X obj 124 107 list split 20; -#X obj 71 302 color 1 1 0 1; -#X obj 124 128 t b b a; -#X obj 32 13 route info; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 5 0 33 0; -#X connect 6 1 8 0; -#X connect 7 0 0 0; -#X connect 8 0 16 0; -#X connect 9 0 16 0; -#X connect 10 0 35 0; -#X connect 11 0 5 0; -#X connect 12 0 13 0; -#X connect 13 0 11 0; -#X connect 14 1 23 0; -#X connect 14 2 25 0; -#X connect 15 0 18 0; -#X connect 15 1 19 0; -#X connect 16 0 17 0; -#X connect 16 1 15 0; -#X connect 17 0 0 1; -#X connect 17 1 0 2; -#X connect 18 0 1 1; -#X connect 18 1 1 2; -#X connect 19 0 20 0; -#X connect 19 1 21 0; -#X connect 20 0 2 1; -#X connect 20 1 2 2; -#X connect 21 0 22 0; -#X connect 22 0 3 1; -#X connect 22 1 3 2; -#X connect 23 1 32 0; -#X connect 24 0 32 0; -#X connect 25 0 9 0; -#X connect 26 1 14 0; -#X connect 28 0 27 0; -#X connect 29 0 7 0; -#X connect 30 0 31 0; -#X connect 31 0 29 0; -#X connect 32 0 34 0; -#X connect 32 1 24 1; -#X connect 33 0 30 0; -#X connect 34 0 24 0; -#X connect 34 1 11 0; -#X connect 34 2 6 0; -#X connect 34 2 28 0; -#X connect 35 0 26 0; -#X restore 658 323 pd draw_rotrect; -#X obj 487 240 pix_opencv_contours; -#N canvas 963 313 674 695 drawdefects 0; -#X obj 191 301 gemhead; -#X obj 134 217 loadbang; -#X msg 134 238 0; -#X obj 210 116 list split 2; -#X obj 215 186 list append; -#X obj 191 375 scaleXYZ 10.6666 -8 0; -#X obj 244 160 t b b a; -#X obj 210 76 inlet DEFECTS; -#X obj 210 96 route convexitydefects; -#X obj 244 139 list split 7; -#X obj 191 335 color 1 0 0 1; -#X obj 191 355 translateXYZ -5.3333 4 0; -#N canvas 895 575 739 379 ortho_point 0; -#X obj 192 7 inlet; -#X obj 192 57 t a a; -#X obj 204 238 *; -#X obj 174 238 *; -#X obj 114 124 unpack 0 0 0 0; -#X obj 114 279 +; -#X obj 154 279 +; -#X obj 114 340 outlet; -#X obj 174 320 outlet; -#X obj 153 198 -; -#X msg 153 178 1 \$1; -#X obj 144 238 *; -#X obj 114 238 *; -#X obj 219 84 list split 6; -#X text 519 123 dot product; -#X floatatom 244 163 5 0 0 0 - - -; -#X obj 300 29 t b; -#X msg 343 68 0 1 1 1 0.5 0.5; -#X obj 219 124 expr abs(($f3-$f1)*($f6-$f2)+($f4-$f2)*($f5-$f1)); -#X obj 302 158 expr $f1*sqrt(10.666*8); -#X connect 0 0 1 0; -#X connect 1 0 4 0; -#X connect 1 1 13 0; -#X connect 2 0 6 1; -#X connect 3 0 5 1; -#X connect 4 0 12 0; -#X connect 4 1 11 0; -#X connect 4 2 3 0; -#X connect 4 3 2 0; -#X connect 5 0 7 0; -#X connect 6 0 8 0; -#X connect 9 0 11 1; -#X connect 9 0 12 1; -#X connect 10 0 9 0; -#X connect 11 0 6 0; -#X connect 12 0 5 0; -#X connect 13 0 18 0; -#X connect 16 0 17 0; -#X connect 17 0 1 0; -#X connect 18 0 15 0; -#X connect 18 0 19 0; -#X connect 19 0 2 1; -#X connect 19 0 3 1; -#X connect 19 0 10 0; -#X restore 328 515 pd ortho_point; -#X obj 191 475 translateXYZ 10.6666 -8 0; -#X msg 240 451 \$5; -#X msg 289 451 \$6; -#X obj 191 556 circle 0.01; -#X msg 204 530 draw line; -#X obj 204 506 loadbang; -#X obj 354 369 t a; -#X connect 0 0 10 0; -#X connect 1 0 2 0; -#X connect 2 0 0 0; -#X connect 3 1 9 0; -#X connect 4 0 9 0; -#X connect 5 0 13 0; -#X connect 6 0 4 0; -#X connect 6 1 0 0; -#X connect 6 2 19 0; -#X connect 7 0 8 0; -#X connect 8 0 3 0; -#X connect 9 0 6 0; -#X connect 9 1 4 1; -#X connect 10 0 11 0; -#X connect 11 0 5 0; -#X connect 13 0 16 0; -#X connect 14 0 13 1; -#X connect 15 0 13 2; -#X connect 17 0 16 0; -#X connect 18 0 17 0; -#X connect 19 0 15 0; -#X connect 19 0 14 0; -#X restore 542 294 pd drawdefects; -#N canvas 791 386 1126 291 options 0; -#X obj 57 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 -1; -#X msg 57 167 contours \$1; -#X obj 57 251 outlet; -#X obj 147 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 247 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 147 167 convexhulls \$1; -#X msg 247 167 convexitydefects \$1; -#X text 25 57 set hierarchy level (which contour to send out); -#X obj 24 83 nbx 5 14 -1 1e+37 0 1 empty empty empty 0 -8 0 10 -262144 --1 -1 -1 256; -#X msg 24 100 hierarchy_level \$1; -#X text 71 125 send out different kind of infos (all on by default) -:; -#X text 25 67 -1 for all contours (default); -#X obj 564 89 table drawX 1000; -#X obj 564 109 table drawY 1000; -#X obj 564 129 table drawZ 1000; -#X msg 559 168 settab drawX drawY drawZ; -#X obj 558 200 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 558 229 taboutput \$1; -#X text 544 5 to improve performance and avoid "stack overflow" (because -contours could a huge number of points) you can use table output instead -of list output; -#X text 550 71 first set some tables (they are dynamically resized) -; -#X text 550 151 tell it what tables to use; -#X text 582 200 enable disable table output (automatically enable when -ou set table); -#X text 569 256 see [pd draw_contour_gemvertexbuffer] for an example -of drawing contours; -#N canvas 793 182 596 300 draw_contour_gemvertexbuffer 0; -#X obj 175 173 loadbang; -#X obj 135 65 translateXYZ -0.5 -0.5 0; -#X obj 135 42 scaleXYZ 10.6666 -8 1; -#X obj 135 87 t a b; -#X obj 135 -9 gemhead 1000; -#X obj 135 17 alpha 0; -#X msg 161 130 posX drawX \, posY drawY \, colorG drawZ \, colorA drawZ -; -#X msg 175 193 draw line; -#X obj 135 245 gemvertexbuffer; -#X obj 161 108 inlet; -#X obj 269 174 r point_number; -#X msg 269 201 resize \$1; -#X floatatom 342 206 5 0 0 0 - - -; -#X connect 0 0 7 0; -#X connect 1 0 3 0; -#X connect 2 0 1 0; -#X connect 3 0 8 0; -#X connect 3 1 6 0; -#X connect 4 0 5 0; -#X connect 5 0 2 0; -#X connect 6 0 8 0; -#X connect 7 0 8 0; -#X connect 9 0 6 0; -#X connect 10 0 11 0; -#X connect 10 0 12 0; -#X connect 11 0 8 0; -#X restore 797 147 pd draw_contour_gemvertexbuffer; -#X obj 797 126 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X text 813 127 draw with gemvertexbuffer; -#X msg 379 80 repeat_point \$1; -#X floatatom 379 62 5 0 0 0 - - -; -#X text 348 47 repeat the first point n times; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 3 0 5 0; -#X connect 4 0 6 0; -#X connect 5 0 2 0; -#X connect 6 0 2 0; -#X connect 8 0 9 0; -#X connect 9 0 2 0; -#X connect 15 0 2 0; -#X connect 16 0 17 0; -#X connect 17 0 2 0; -#X connect 24 0 23 0; -#X connect 26 0 2 0; -#X connect 27 0 26 0; -#X restore 674 213 pd options; -#X text 489 347 color legend :; -#X text 522 364 yellow = bounding box; -#X text 528 374 green = contour; -#X text 534 385 blue = convexhull; -#X text 534 397 pink = convexhull edge with defects; -#X text 540 409 red = farthest point from convexhull; -#N canvas 1 128 632 734 draw_contours 0; -#X obj 178 132 list split 2; -#X obj 170 593 GEMglEnd; -#X obj 300 590 GEMglVertex2d; -#X obj 212 263 list append; -#X obj 241 237 t b a; -#X obj 241 216 list split 2; -#X obj 341 495 unpack; -#X obj 310 257 t b a; -#X obj 429 319 color 1 0 0 1; -#X obj 405 545 * -8; -#X obj 405 565 + 4; -#X obj 429 377 GEMglLineWidth 2; -#X obj 341 545 * 10.6666; -#X obj 341 565 - 5.33333; -#X obj 170 564 gemlist; -#X obj 300 421 gemlist; -#X obj 468 227 gemhead; -#X obj 468 172 loadbang; -#X msg 468 193 0; -#X obj 133 161 unpack 0 0; -#X floatatom 133 182 5 0 0 0 nb_of_segments - -; -#X obj 107 -65 inlet CONTOUR; -#X obj 429 289 gemlist; -#X obj 212 159 t b a b b; -#X obj 106 -44 route convexhull contour convexitydefects; -#X obj 187 1 t a b; -#X msg 513 275 0 0 1 1; -#X msg 505 254 0 1 0 1; -#X obj 106 0 t a b; -#X obj 268 1 list split 2; -#X obj 290 96 list append; -#X obj 319 76 t b a; -#X obj 302 28 t b a b b; -#X obj 268 -19 t a b; -#X msg 523 295 1 0 1 1; -#X obj 319 55 list split 7; -#X obj 346 116 list split 4; -#X obj 429 414 GEMglBegin GL_LINE_LOOP; -#X connect 0 0 19 0; -#X connect 0 1 23 0; -#X connect 3 0 5 0; -#X connect 4 0 3 0; -#X connect 4 1 7 0; -#X connect 5 0 4 0; -#X connect 5 1 3 1; -#X connect 6 0 12 0; -#X connect 6 1 9 0; -#X connect 7 0 15 0; -#X connect 7 1 6 0; -#X connect 8 0 11 0; -#X connect 9 0 10 0; -#X connect 10 0 2 2; -#X connect 11 0 37 0; -#X connect 12 0 13 0; -#X connect 13 0 2 1; -#X connect 14 0 1 0; -#X connect 15 0 2 0; -#X connect 16 0 15 1; -#X connect 16 0 14 1; -#X connect 16 0 22 1; -#X connect 17 0 18 0; -#X connect 18 0 16 0; -#X connect 19 0 20 0; -#X connect 21 0 24 0; -#X connect 22 0 8 0; -#X connect 23 0 14 0; -#X connect 23 1 5 0; -#X connect 23 2 22 0; -#X connect 23 3 16 0; -#X connect 24 0 28 0; -#X connect 24 1 25 0; -#X connect 24 2 33 0; -#X connect 25 0 0 0; -#X connect 25 1 27 0; -#X connect 26 0 8 1; -#X connect 27 0 8 1; -#X connect 28 0 0 0; -#X connect 28 1 26 0; -#X connect 29 1 32 0; -#X connect 30 0 35 0; -#X connect 31 0 30 0; -#X connect 31 1 36 0; -#X connect 32 1 35 0; -#X connect 33 0 29 0; -#X connect 33 1 34 0; -#X connect 34 0 8 1; -#X connect 35 0 31 0; -#X connect 35 1 30 1; -#X connect 36 0 23 0; -#X restore 486 320 pd draw_contours; -#N canvas 231 255 816 668 info 0; -#X obj -187 105 cnv 15 250 40 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj -78 302 cnv 15 350 20 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 4 342 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 54 384 cnv 15 350 60 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 152 -29 cnv 15 100 40 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj -131 247 cnv 15 330 50 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 105 16 inlet; -#X obj 105 67 list split 2; -#X obj 139 97 list split 20; -#X text 189 70 cut matrix header; -#X text 226 98 cut infos for the 1st contour; -#X obj 77 154 list split 1; -#X floatatom 77 216 5 0 0 0 - - -; -#X obj 201 284 unpack; -#X floatatom 201 304 5 0 0 0 - - -; -#X floatatom 234 304 5 0 0 0 - - -; -#X obj 105 38 route info; -#X text -65 304 rotated rectangle center point (normalized); -#X obj 201 234 list split 2; -#X obj 235 324 unpack; -#X floatatom 235 344 5 0 0 0 - - -; -#X floatatom 268 344 5 0 0 0 - - -; -#X obj 235 254 list split 2; -#X text 19 344 rotated rectangle size (normalized); -#X text -60 214 contour area in pixels; -#X floatatom 269 384 5 0 0 0 - - -; -#X floatatom 303 404 5 0 0 0 - - -; -#X text 68 384 rotated rectangle angle (degrees); -#X obj 111 174 list split 8; -#X floatatom 174 -7 5 0 0 0 - - -; -#X obj 174 12 * 20; -#X obj 174 34 + 2; -#X obj 269 364 unpack f f f; -#X floatatom 338 424 5 0 0 0 - - -; -#X text 154 -25 selected contour; -#X obj -4 86 unpack; -#X floatatom -4 107 5 0 0 0 - - -; -#X floatatom 29 128 5 0 0 0 - - -; -#X text -172 104 number of detected contours; -#X text -181 127 numbers of values for each contour; -#X obj 111 194 list prepend set; -#X obj 111 214 list trim; -#X msg -120 262 0.681584 0.808552 0.679688 0.789583 0.704353 0.785198 -0.70625 0.804167; -#X text -123 245 rotrect corners coordinates; -#X text 160 424 length of contour (in pixels); -#X obj 450 153 list split 20; -#X obj 450 175 t b a; -#X obj 497 222 list; -#X msg 477 259 \$15; -#X obj 477 281 +; -#X obj 505 281 f; -#X msg 500 122 0; -#X obj 462 303 f; -#X obj 431 119 t b a b; -#X floatatom 462 325 5 0 0 0 - - -; -#X text 325 323 total number of points; -#X obj 462 343 s point_number; -#X text 201 403 number of points; -#X connect 6 0 16 0; -#X connect 7 0 35 0; -#X connect 7 1 8 0; -#X connect 7 1 53 0; -#X connect 8 0 11 0; -#X connect 11 0 12 0; -#X connect 11 1 28 0; -#X connect 13 0 14 0; -#X connect 13 1 15 0; -#X connect 16 0 7 0; -#X connect 18 0 13 0; -#X connect 18 1 22 0; -#X connect 19 0 20 0; -#X connect 19 1 21 0; -#X connect 22 0 19 0; -#X connect 22 1 32 0; -#X connect 28 0 40 0; -#X connect 28 1 18 0; -#X connect 29 0 30 0; -#X connect 30 0 31 0; -#X connect 31 0 7 1; -#X connect 32 0 25 0; -#X connect 32 1 26 0; -#X connect 32 2 33 0; -#X connect 35 0 36 0; -#X connect 35 1 37 0; -#X connect 35 1 30 1; -#X connect 40 0 41 0; -#X connect 41 0 42 0; -#X connect 45 0 46 0; -#X connect 45 1 47 1; -#X connect 46 0 47 0; -#X connect 46 1 48 0; -#X connect 47 0 45 0; -#X connect 48 0 49 0; -#X connect 49 0 50 0; -#X connect 49 0 52 1; -#X connect 50 0 49 1; -#X connect 51 0 49 1; -#X connect 52 0 54 0; -#X connect 53 0 52 0; -#X connect 53 1 45 0; -#X connect 53 2 51 0; -#X connect 54 0 56 0; -#X restore 675 294 pd info; -#X text 29 498 20 -0 0 0 0; -#X obj 554 32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X text 30 369 Inlet 1: message: contours <0|1>; -#X text 30 379 Inlet 1: message: convexhull <0|1>; -#X text 30 389 Inlet 1: message: convexitydefects <0|1>; -#X text 30 399 Inlet 1: message: settab tabname1 tabname2 tabname3 -; -#X text 30 409 Inlet 1: message: taboutput <0|1>; -#X text 30 359 Inlet 1: message: hierarchy_level [float]; -#X obj 514 96 pix_image examples/dessin.tif; -#X connect 13 0 14 0; -#X connect 14 0 13 0; -#X connect 39 0 47 0; -#X connect 40 0 54 0; -#X connect 41 0 40 0; -#X connect 42 0 41 0; -#X connect 42 1 73 0; -#X connect 43 0 42 0; -#X connect 44 0 54 0; -#X connect 45 0 44 0; -#X connect 46 0 52 0; -#X connect 46 0 51 0; -#X connect 48 0 41 0; -#X connect 48 1 39 0; -#X connect 49 0 54 0; -#X connect 50 0 49 0; -#X connect 51 0 50 0; -#X connect 52 0 45 0; -#X connect 54 1 55 0; -#X connect 54 1 63 0; -#X connect 54 2 64 0; -#X connect 54 2 53 0; -#X connect 56 0 54 0; -#X connect 66 0 43 0; -#X connect 73 0 48 0; diff --git a/pix_opencv_contours.cc b/pix_opencv_contours.cc deleted file mode 100644 index c6eefbb..0000000 --- a/pix_opencv_contours.cc +++ /dev/null @@ -1,532 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) -// pix_opencv_contours extract and simplify contours of incomming image -// by Antoine Villeret - 2012 - -#include "pix_opencv_contours.h" -#include -#include - - -CPPEXTERN_NEW(pix_opencv_contours) - -///////////////////////////////////////////////////////// -// -// pix_opencv_contours -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_contours :: pix_opencv_contours() : m_repeat_point(1), \ - m_area_threshold(30), \ - m_epsilon(2), \ - m_enable_contours(1), \ - m_enable_hulls(1), \ - m_enable_defects(1), \ - m_hierarchy_level(-1), \ - m_taboutput(0), \ - m_x_arrayname(NULL), \ - m_y_arrayname(NULL), \ - m_z_arrayname(NULL) -{ - m_dataout_middle = outlet_new(this->x_obj, 0); - m_dataout_right = outlet_new(this->x_obj, 0); - - //~ post("build on %s at %s", __DATE__, __TIME__); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_contours :: ~pix_opencv_contours() -{ -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_contours :: processRGBAImage(imageStruct &image) -{ - error( "pix_opencv_contours : rgba format not supported" ); -} - -void pix_opencv_contours :: processRGBImage(imageStruct &image) { - error( "pix_opencv_contours : rgb format not supported"); -} - -void pix_opencv_contours :: processYUVImage(imageStruct &image) { - error( "pix_opencv_contours : yuv format not supported" ); -} - -void pix_opencv_contours :: processGrayImage(imageStruct &image) -{ - if ( image.xsize < 0 || image.ysize < 0 ) return; - - cv::Mat imgMat2( image.ysize, image.xsize, CV_8UC1, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data - - cv::Mat imgMat = imgMat2.clone(); // copy data because findContours need it... - - m_contours.clear(); - m_convexhulls.clear(); - - /*****************/ - /* Find Contours */ - /*****************/ - - std::vector > contours; - std::vector hierarchy; - - cv::findContours(imgMat, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE); - - /* - std::cout << "hierarchy : \n" << std::endl; - std::cout << "id\tnext\tprev\tchild\tparent" << std::endl; - for ( size_t i = 0; i < contours.size(); i++ ) - { - std::cout << i << "\t" << hierarchy[i][0] << "\t" << hierarchy[i][1] << "\t" << hierarchy[i][2] << "\t" << hierarchy[i][3] << std::endl; - } - */ - - if ( m_hierarchy_level != -1 ) - { - int i=0; - int hierarchy_level=0; - - while ( i < (int) contours.size() && i!=-1 && hierarchy_level != -1 ) - { - if ( cv::contourArea(contours[i], false) > m_area_threshold && hierarchy_level == m_hierarchy_level ) - { - std::vector one_contour; - cv::approxPolyDP(contours[i], one_contour, m_epsilon, true); - m_contours.push_back(one_contour); // push contour if it's big enough - } - if ( hierarchy_level < m_hierarchy_level && hierarchy[i][2] != -1 ){ // si on n'a pas atteint le niveau choisi et qu'il y a un enfant on le prend - hierarchy_level++; - int j = i; - i=hierarchy[j][2]; // get the first child - } else if ( hierarchy[i][0] != -1 ) { - i=hierarchy[i][0]; // get the next contour at this hierarchy level if it exists - } else { - while ( hierarchy_level != -1 ) - { - hierarchy_level--; - i=hierarchy[i][3]; - if ( i < 0 ) break; // pas de parent... - if ( hierarchy[i][0] != -1 ) { - i=hierarchy[i][0]; // next du parent - break; - } - } - - } - } - } else { - for ( size_t i = 0; i < contours.size(); i++ ) - { - if ( cv::contourArea(contours[i], false) > m_area_threshold ){ - std::vector one_contour; - cv::approxPolyDP(contours[i], one_contour, m_epsilon, true); - m_contours.push_back(one_contour); - } - } - } - - if ( m_enable_contours ) - { - t_atom*info; - info = new t_atom[(int) m_contours.size()*20+2]; - // info : 20x(contour_nb) matrix - // info for each contour : area, rotrect corner (8 float), rotrect center, rotrect size, rotation angle, number of segments, length of contour, other are reserved for future use - int count(0); - SETFLOAT(info+1, 20.); - int info_offset(2); - - for( size_t i = 0 ; i < m_contours.size(); i++ ) - { - if (!m_contours[i].empty() && m_contours[i].size() > 2) { - SETFLOAT(info+info_offset, (float) cv::contourArea(m_contours[i])); - - cv::RotatedRect rot_rect = cv::minAreaRect(m_contours[i]); - cv::Point2f corners[4]; - rot_rect.points(corners); - double length = cv::arcLength(m_contours[i],true); - for (int j=0;j<4;j++) { - SETFLOAT(info+info_offset+j*2+1, corners[j].x/image.xsize); - SETFLOAT(info+info_offset+j*2+2, corners[j].y/image.ysize); - } - - SETFLOAT(info+info_offset+9, rot_rect.center.x/image.xsize); - SETFLOAT(info+info_offset+10, rot_rect.center.y/image.ysize); - SETFLOAT(info+info_offset+11, rot_rect.size.width/image.xsize); - SETFLOAT(info+info_offset+12, rot_rect.size.height/image.xsize); - SETFLOAT(info+info_offset+13, rot_rect.angle); - SETFLOAT(info+info_offset+14, m_contours[i].size()+m_repeat_point*2); // number of points in segment - SETFLOAT(info+info_offset+15, (float) length); - SETFLOAT(info+info_offset+16, 0); - SETFLOAT(info+info_offset+17, 0); - SETFLOAT(info+info_offset+18, 0); - SETFLOAT(info+info_offset+19, 0); - - info_offset+=20; - count++; - } - } - - SETFLOAT(info, (float) count); - if (count) outlet_anything(m_dataout_right, gensym("info"), count*20+2, info); - else outlet_float(m_dataout_right, 0); - - if ( !m_taboutput ){ - for( size_t i = 0 ; i < m_contours.size() ; i++ ) - { - - if (!m_contours[i].empty() && m_contours[i].size() > 2) { - int size = 2+(m_repeat_point*2+m_contours[i].size())*2; - t_atom*ap = new t_atom[size]; - SETFLOAT(ap, static_cast(m_repeat_point*2+m_contours[i].size())); - SETFLOAT(ap+1, 2.0); - - int offset(2); - - for ( size_t j = 0 ; j < m_repeat_point ; j++){ - cv::Point pt = m_contours[i][0]; - SETFLOAT(ap+offset, (float) pt.x/image.xsize); - SETFLOAT(ap+offset+1,(float) pt.y/image.ysize); - offset+=2; - } - - for ( size_t j = 1 ; j < m_contours[i].size() ; j++){ - cv::Point pt = m_contours[i][j]; - SETFLOAT(ap+offset,(float) pt.x/image.xsize); - SETFLOAT(ap+offset+1,(float) pt.y/image.ysize); - offset+=2; - } - - for ( size_t j = 0 ; j < m_repeat_point ; j++){ - cv::Point pt = m_contours[i][0]; // repeat the first point to close the contour - SETFLOAT(ap+offset, (float) pt.x/image.xsize); - SETFLOAT(ap+offset+1,(float) pt.y/image.ysize); - offset+=2; - } - - outlet_anything(m_dataout_middle, gensym("contour"), size, ap); - if(ap)delete[]ap;ap=NULL; - - } - } - - - if (info) delete info; - info = NULL; - - } else { - - //~ put contours in 3 tables. - //~ contours are separated by 0 values - - if ( m_x_arrayname == NULL || m_y_arrayname == NULL || m_z_arrayname == NULL){ - error("please settab before trying to write into..."); - return; - } - - int size(0), vecxsize(0), vecysize(0), veczsize(0); - t_garray *ax, *ay, *az; - t_word *vecx, *vecy, *vecz; - - //~ check if array exist - if (!(ax = (t_garray *)pd_findbyclass(m_x_arrayname, garray_class))){ - error("%s: no such array", m_x_arrayname->s_name); - return; - } - if (!(ay = (t_garray *)pd_findbyclass(m_y_arrayname, garray_class))){ - error("%s: no such array", m_y_arrayname->s_name); - return; - } - if (!(az = (t_garray *)pd_findbyclass(m_z_arrayname, garray_class))){ - error("%s: no such array", m_z_arrayname->s_name); - return; - } - - //~ check array and resize if needed - for( size_t i = 0 ; i < m_contours.size(); i++ ){ - size+=m_contours[i].size(); - } - size+=m_contours.size()*m_repeat_point*2; // on ajoute 2 fois m_repeat_point points (au début et à la fin) - - if (!garray_getfloatwords(ax, &vecxsize, &vecx)){ - error("%s: bad template for tabwrite", m_x_arrayname->s_name); - return; - } else if ( vecxsize != size ){ - garray_resize_long(ax,size); - if (!garray_getfloatwords(ax, &vecxsize, &vecx)){ - error("%s: can't resize correctly", m_x_arrayname->s_name); - return; - } - } - - if (!garray_getfloatwords(ay, &vecysize, &vecy)){ - error("%s: bad template for tabwrite", m_y_arrayname->s_name); - return; - } else if ( vecysize != size ){ - garray_resize_long(ay,size); - if (!garray_getfloatwords(ay, &vecysize, &vecy)){ - error("%s: can't resize correctly", m_y_arrayname->s_name); - return; - } - } - - if (!garray_getfloatwords(az, &veczsize, &vecz)){ - error("%s: bad template for tabwrite", m_z_arrayname->s_name); - return; - } else if ( veczsize != size ){ - garray_resize_long(az,size); - if (!garray_getfloatwords(az, &veczsize, &vecz)){ - error("%s: can't resize correctly", m_z_arrayname->s_name); - return; - } - } - - int n=0; - - for( size_t i = 0 ; i < m_contours.size(); i++ ) - { - if (n >= vecxsize || n>=vecysize || n>=veczsize) - { - error("array are not wide engouth"); - return; - } - - unsigned int j; - cv::Point pt; - pt = m_contours[i][0]; - //~ start with blank point - for (j=0; j convexhull; - cv::convexHull(m_contours[i], convexhull); - m_convexhulls.push_back(convexhull); - } - } - - if ( m_enable_hulls ) - { - for ( size_t i = 0 ; i < m_convexhulls.size() ; i++ ) - { - int list_size=(int) m_convexhulls[i].size()*2+2; - - t_atom* data = new t_atom[list_size]; - - SETFLOAT(data,m_convexhulls[i].size()); // nb of points for current convexhull - SETFLOAT(data+1, 2); // each point is represented by 2 values - - t_atom* apt=data+2; - - for ( size_t j = 0 ; j < m_convexhulls[i].size() ; j++){ - int k = m_convexhulls[i][j]; - cv::Point pt = m_contours[i][k]; - SETFLOAT(apt, (float) pt.x/image.xsize); - SETFLOAT(apt+1, (float) pt.y/image.ysize); - apt+=2; - } - outlet_anything(m_dataout_middle, gensym("convexhull"), list_size, data); - - if (data) delete data; - data = NULL; - } - } - - /*****************************/ - /* Compute convexity defects */ - /*****************************/ - if ( m_enable_defects ) - { - for ( size_t i = 0 ; i < m_contours.size() ; i++ ) - { - std::vector defects(m_convexhulls[i].size()); - - cv::Ptr storage = cvCreateMemStorage(); - cv::InputArray _points = m_contours[i]; - cv::InputArray _hull = m_convexhulls[i]; - - cv::Mat points = _points.getMat(); - cv::Mat hull = _hull.getMat(); - - CvMat c_points = points, c_hull = hull; - - CvSeq* seq = cvConvexityDefects(&c_points, &c_hull, storage); - - double norm = sqrtf( image.xsize*image.ysize ); - - if ( !seq ) { - error("seq undefined..."); - continue; - } - - int list_size=(int) seq->total*7+2; - - if (seq->total > 0) - { - t_atom* data = new t_atom[list_size]; - - SETFLOAT(data, seq->total); // number of defect for current contour - SETFLOAT(data+1, 7); // a defect is represented by 7 values : start point (x,y), end point (x,y), farthest point (x,y) and defect depth - - cv::SeqIterator it = cv::Seq(seq).begin(); // TODO : crash sometimes but don't know why yet... - t_atom* apt = data+2; - - for ( int j = 0 ; j < seq->total ; j++, ++it ) - { - CvConvexityDefect& defect = *it; - SETFLOAT(apt, (float) defect.start->x/image.xsize); - SETFLOAT(apt+1, (float) defect.start->y/image.ysize); - SETFLOAT(apt+2, (float) defect.end->x/image.xsize); - SETFLOAT(apt+3, (float) defect.end->y/image.ysize); - SETFLOAT(apt+4, (float) defect.depth_point->x/image.xsize); - SETFLOAT(apt+5, (float) defect.depth_point->y/image.ysize); - SETFLOAT(apt+6, (float) defect.depth/norm); - apt+=7; - } - - outlet_anything(m_dataout_middle, gensym("convexitydefects"), list_size, data); - - if (data) delete data; - data = NULL; - } - } - } -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_contours :: obj_setupCallback(t_class *classPtr) -{ - CPPEXTERN_MSG1(classPtr, "epsilon", epsilonMess, double); - CPPEXTERN_MSG1(classPtr, "area", areaMess, double); - CPPEXTERN_MSG1(classPtr, "contours", contoursMess, double); - CPPEXTERN_MSG1(classPtr, "convexhulls", convexhullsMess, double); - CPPEXTERN_MSG1(classPtr, "convexitydefects", convexitydefectsMess, double); - CPPEXTERN_MSG1(classPtr, "hierarchy_level", hierarchyMess, double); - CPPEXTERN_MSG1(classPtr, "taboutput", taboutputMess, float); - CPPEXTERN_MSG3(classPtr, "settab", tableMess, t_symbol*, t_symbol*, t_symbol*); - CPPEXTERN_MSG1(classPtr, "repeat_point", repeat_pointMess, float); -} - -///////////////////////////////////////////////////////// -// messages handling -// -///////////////////////////////////////////////////////// -void pix_opencv_contours :: epsilonMess(double arg) -{ - m_epsilon = arg > 0 ? arg : 3.; - t_atom data_out; - SETFLOAT(&data_out, (float) m_epsilon); - outlet_anything( m_dataout_right, gensym("epsilon"), 1, &data_out); -} -void pix_opencv_contours :: areaMess(double arg) -{ - m_area_threshold = arg > 0 ? arg : 30.; - t_atom data_out; - SETFLOAT(&data_out, (float) m_area_threshold); - outlet_anything( m_dataout_right, gensym("area"), 1, &data_out); -} -void pix_opencv_contours :: contoursMess(double arg) -{ - m_enable_contours = arg > 0; -} -void pix_opencv_contours :: convexhullsMess(double arg) -{ - m_enable_hulls = arg > 0; -} -void pix_opencv_contours :: convexitydefectsMess(double arg) -{ - m_enable_defects = arg > 0; -} -void pix_opencv_contours :: hierarchyMess(double arg) -{ - m_hierarchy_level = arg < -1 ? -1 : arg; - m_mode = m_hierarchy_level == -1 ? CV_RETR_LIST : CV_RETR_TREE; -} - -void pix_opencv_contours :: taboutputMess(float arg) -{ - m_taboutput = arg > 0; -} - -void pix_opencv_contours :: repeat_pointMess(float arg) -{ - m_repeat_point = arg > 1 ? arg : 1; -} - -void pix_opencv_contours :: tableMess(t_symbol*xarray, t_symbol*yarray, t_symbol*zarray) -{ - // check if arrays exist - m_x_arrayname = xarray; - m_y_arrayname = yarray; - m_z_arrayname = zarray; - - m_taboutput = 1; -} diff --git a/pix_opencv_contours.h b/pix_opencv_contours.h deleted file mode 100644 index bb2fff7..0000000 --- a/pix_opencv_contours.h +++ /dev/null @@ -1,88 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_CONTOURS_H_ -#define INCLUDE_PIX_OPENCV_CONTOURS_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_contours - - detects contours and send them out - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_contours : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_contours, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_contours(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_contours(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - // Messages handling - void epsilonMess(double arg); - void areaMess(double arg); - void contoursMess(double arg); - void convexhullsMess(double arg); - void convexitydefectsMess(double arg); - void hierarchyMess(double arg); - void taboutputMess(float arg); - void tableMess(t_symbol*x, t_symbol*y, t_symbol*z); - void repeat_pointMess(float arg); - - private: - - t_outlet *m_dataout_middle; // contour outlet - t_outlet *m_dataout_right; // info outlet - std::vector > m_contours; - std::vector > m_convexhulls; - //~ std::vector m_hierarchy; - - unsigned int m_repeat_point; - double m_area_threshold; // min area for contour - double m_epsilon; - - - int m_enable_contours, m_enable_hulls, m_enable_defects, m_hierarchy_level, m_mode, m_taboutput; - - t_symbol *m_x_arrayname, *m_y_arrayname, *m_z_arrayname; - -}; -#endif // for header file diff --git a/pix_opencv_contours_boundingrect-help.pd b/pix_opencv_contours_boundingrect-help.pd deleted file mode 100644 index 88fd8fc..0000000 --- a/pix_opencv_contours_boundingrect-help.pd +++ /dev/null @@ -1,255 +0,0 @@ -#N canvas 180 115 1202 794 10; -#X obj 2 42 cnv 15 430 560 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 2 -4 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 11 0 Arguments:; -#X obj 2 -99 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 7 -137 Class: pix_opencv; -#X text 32 17 none; -#X obj 437 -158 cnv 15 710 760 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 589 283 cnv 15 550 250 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X floatatom 693 467 5 0 0 0 - - -; -#X floatatom 788 481 5 0 0 0 - - -; -#X floatatom 693 581 5 0 0 0 - - -; -#X floatatom 728 581 5 0 0 0 - - -; -#X floatatom 765 581 5 0 0 0 - - -; -#X floatatom 799 581 5 0 0 0 - - -; -#X obj 693 558 unpack 0 0 0 0 0; -#X obj 693 536 route 0 1 2 3 4; -#X text 794 539 For each contour detected; -#X text 16 50 It is useful as a motion tracker if you have well isolated -silouets of the objects you want to track.; -#X msg 618 293 mode \$1; -#X obj 679 294 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 --1 -1 0; -#X text 748 295 retrieval mode ( see cvFindContours ); -#X obj 714 319 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 --1 -1 0; -#X text 796 319 retrieval method ( see cvFindContours ); -#X msg 647 318 method \$1; -#X msg 670 341 maxmove \$1; -#X floatatom 744 342 5 0 0 0 - - -; -#X floatatom 768 366 5 0 0 0 - - -; -#X msg 680 363 ftolerance \$1; -#X text 805 364 frame tolerance for identification ( default 5 ); -#X text 9 -93 pix_opencv_contours_boundingrect :: Calculates up-right -bounding rectangle of all contours of a binary image.; -#X text 16 89 This object considers a contour to be analyzed any group -of white pixels in a black background \, for this reason you will find -useful to use pdp_bgsubstract or pdp_threshold to obtain a correct -input for pix_opencv_contours_boundingrect.; -#X text 16 143 pix_opencv_contours_boundingrect works detecting any -white areas in the input image \, it's important to set max/min values -of the areas you want to detect to filter non interesting noise or -areas \, also sometimes you will need to use pix_opencv_morphology -to transform the contours of the shapes to be analyzed..; -#X floatatom 788 518 5 0 0 0 - - -; -#X text 826 519 number of contours; -#X msg 695 388 nightmode \$1; -#X obj 785 389 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 774 410 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 787 432 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 714 409 draw \$1; -#X text 801 408 draw bounding rectangle ( default : on ); -#X msg 729 430 show \$1; -#X text 814 429 draw the detected contours ( default : off ); -#X text 808 389 hide original image ( default : off ); -#X obj 614 -145 gemhead; -#X obj 599 541 pix_texture; -#X obj 919 -153 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 --66577 0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 929 -109 pd gemwin; -#X msg 929 -127 create; -#X obj 447 541 pix_texture; -#X obj 599 184 separator; -#X obj 626 -118 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 683 57 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 665 22 5 0 10000 1 frame# - -; -#X obj 626 -89 openpanel; -#X msg 626 -69 open \$1; -#X obj 614 40 pix_film; -#X msg 632 -26 auto \$1; -#X obj 632 -44 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X text 927 -147 Create window and render; -#X msg 727 -43 colorspace RGBA; -#X msg 733 -24 colorspace RGB; -#X msg 750 -1 colorspace Grey; -#X obj 727 -71 loadbang; -#X obj 599 155 pix_separator; -#X obj 447 187 separator; -#X obj 447 158 pix_separator; -#X obj 447 222 translateXYZ -2 0 0; -#X obj 599 219 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 447 96 pd vswitch; -#X obj 515 96 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 447 -150 gemhead; -#X msg 486 -37 device 0; -#X msg 495 -6 driver 1; -#X msg 472 -91 dialog; -#X msg 477 -61 device /dev/dv1394-0; -#X text 843 581 ( First contour ) Xorigin Yorigin Width Height; -#X text 728 463 min area in pixels (default 10x10); -#X text 825 479 max area in pixels (default 320x240); -#X obj 447 116 pix_resize 320 240; -#X text 787 341 maximum move of a countour ( default 20 ); -#X floatatom 765 245 5 0 0 0 - - -; -#X obj 599 252 pix_opencv_bgsubstract; -#X obj 527 394 loadbang; -#X msg 769 212 set; -#X text 803 214 reset background reference; -#X obj 599 498 pix_opencv_contours_boundingrect; -#X obj 447 38 pix_video; -#X text 16 268 TODO ::: in some cases i want to reuse losts tags inmediately -\, a message to do it is needed; -#X text 17 227 KNOWN BUGS :: in some input data all the blobs are tagged -with 0 label (if maxmove is very high????) ... if i put maxmove to -zero blobs are tagged in a crazy way....; -#X msg 527 414 50; -#X obj 837 244 loadbang; -#X msg 802 246 50; -#X obj 447 135 pix_rgba; -#X obj 447 561 square 2; -#X obj 599 561 square 2; -#X text 16 308 See also pix_opencv_contour_convexhull that output also -a contour rotation; -#X text 8 -153 Synopsis: [pix_opencv_contours_boundingrect]; -#X obj 88 419 cnv 15 100 60 empty empty DEPRECATED!! 20 12 0 18 -233017 --258113 0; -#X text 74 445 please consider the use of pix_opencv_contours; -#X connect 8 0 85 1; -#X connect 9 0 85 2; -#X connect 14 0 10 0; -#X connect 14 1 11 0; -#X connect 14 2 12 0; -#X connect 14 3 13 0; -#X connect 15 0 14 0; -#X connect 18 0 85 0; -#X connect 19 0 18 0; -#X connect 21 0 23 0; -#X connect 23 0 85 0; -#X connect 24 0 85 0; -#X connect 25 0 24 0; -#X connect 26 0 27 0; -#X connect 27 0 85 0; -#X connect 34 0 85 0; -#X connect 35 0 34 0; -#X connect 36 0 38 0; -#X connect 37 0 40 0; -#X connect 38 0 85 0; -#X connect 40 0 85 0; -#X connect 43 0 55 0; -#X connect 44 0 94 0; -#X connect 46 0 47 0; -#X connect 47 0 46 0; -#X connect 48 0 93 0; -#X connect 49 0 67 0; -#X connect 50 0 53 0; -#X connect 51 0 52 0; -#X connect 52 0 55 1; -#X connect 53 0 54 0; -#X connect 54 0 55 0; -#X connect 55 0 68 1; -#X connect 55 2 51 0; -#X connect 56 0 55 0; -#X connect 57 0 56 0; -#X connect 59 0 55 0; -#X connect 59 0 86 0; -#X connect 60 0 55 0; -#X connect 61 0 55 0; -#X connect 62 0 59 0; -#X connect 62 0 57 0; -#X connect 63 0 49 0; -#X connect 64 0 66 0; -#X connect 65 0 64 0; -#X connect 66 0 48 0; -#X connect 67 0 81 0; -#X connect 68 0 78 0; -#X connect 69 0 68 2; -#X connect 70 0 86 0; -#X connect 71 0 86 0; -#X connect 72 0 86 0; -#X connect 73 0 86 0; -#X connect 74 0 86 0; -#X connect 78 0 92 0; -#X connect 80 0 81 1; -#X connect 81 0 85 0; -#X connect 82 0 89 0; -#X connect 83 0 81 0; -#X connect 85 0 44 0; -#X connect 85 1 15 0; -#X connect 85 2 32 0; -#X connect 86 0 68 0; -#X connect 89 0 8 0; -#X connect 90 0 91 0; -#X connect 91 0 80 0; -#X connect 92 0 65 0; -#X connect 92 0 63 0; diff --git a/pix_opencv_contours_boundingrect.cc b/pix_opencv_contours_boundingrect.cc deleted file mode 100644 index 2d425d6..0000000 --- a/pix_opencv_contours_boundingrect.cc +++ /dev/null @@ -1,772 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_contours_boundingrect.h" -#include - -CPPEXTERN_NEW(pix_opencv_contours_boundingrect) - -///////////////////////////////////////////////////////// -// -// pix_opencv_contours_boundingrect -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_contours_boundingrect :: pix_opencv_contours_boundingrect() -{ - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); - m_dataout = outlet_new(this->x_obj, 0); - m_countout = outlet_new(this->x_obj, 0); - minarea = 10*10; - maxarea = 320*240; - comp_xsize = 320; - comp_ysize = 240; - orig = NULL; - gray = NULL; - cnt_img = NULL; - rgb = NULL; - x_ftolerance = 5; - x_mmove = 20; - x_nightmode = 0; - x_show = 0; - x_draw = 1; - x_cmode = CV_RETR_LIST; - x_cmethod = CV_CHAIN_APPROX_SIMPLE; - - // initialize font - cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 1.0, 1, 8 ); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_contours_boundingrect :: ~pix_opencv_contours_boundingrect() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&cnt_img); - cvReleaseImage(&rgb); -} - -///////////////////////////////////////////////////////// -// Mark a contour -// -///////////////////////////////////////////////////////// -int pix_opencv_contours_boundingrect :: mark(float fx, float fy, float fw, float fh ) -{ - int i; - - if ( ( fx < 0.0 ) || ( fx > this->comp_xsize ) || ( fy < 0 ) || ( fy > this->comp_ysize ) ) - { - return -1; - } - - for ( i=0; icomp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&cnt_img); - cvReleaseImage(&rgb); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - - // Create the output images with new sizes - rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - cnt_img = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to grayscale - cvCvtColor(orig, gray, CV_RGBA2GRAY); - if ( x_nightmode ) - { - cvZero( orig ); - } - - CvSeq* contours; - CvMemStorage* stor02; - stor02 = cvCreateMemStorage(0); - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), x_cmode, x_cmethod, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - for ( im=0; imh_next ) - { - int count = contours->total; // This is number point in contour - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - - if ( ( (rect.width*rect.height) > minarea ) && ( (rect.width*rect.height) < maxarea ) ) - { - - oi = -1; - dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; - - for ( im=0; immark(rect.x, rect.y, rect.width, rect.height ); - } - else - { - x_xmark[oi] = (float)(rect.x+rect.width/2); - x_ymark[oi] = (float)(rect.y+rect.height/2); - x_wmark[oi] = (int)rect.width; - x_hmark[oi] = (int)rect.height; - x_found[oi] = x_ftolerance; - } - - if ( x_draw ) - { - cvRectangle( orig, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,0,0), 2, 8 , 0 ); - sprintf( tindex, "%d", oi ); - cvPutText( orig, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,0,255)); - } - - if ( x_show ) - { - cvDrawContours( orig, contours, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - } - - SETFLOAT(&rlist[0], oi); - SETFLOAT(&rlist[1], rect.x); - SETFLOAT(&rlist[2], rect.y); - SETFLOAT(&rlist[3], rect.width); - SETFLOAT(&rlist[4], rect.height); - - outlet_list( m_dataout, 0, 5, rlist ); - i++; - ic++; - } - } - - outlet_float( m_countout, ic ); - - // delete lost objects - for ( im=0; imimageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_contours_boundingrect :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - char tindex[4]; - t_atom rlist[5]; - int im = 0; // Indicator of markers. - int oi; - float dist, odist; // Distances - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&cnt_img); - cvReleaseImage(&rgb); - - //create the orig image with new size - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - cnt_img = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to grayscale - cvCvtColor(rgb, gray, CV_RGB2GRAY); - if ( x_nightmode ) - { - cvZero( rgb ); - } - - CvSeq* contours; - CvMemStorage* stor02; - stor02 = cvCreateMemStorage(0); - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), x_cmode, x_cmethod, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - for ( im=0; imh_next ) - { - int count = contours->total; // This is number point in contour - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - if ( ( (rect.width*rect.height) > minarea ) && ( (rect.width*rect.height) < maxarea ) ) - { - - oi = -1; - dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; - - for ( im=0; immark(rect.x, rect.y, rect.width, rect.height ); - } - else - { - x_xmark[oi] = (float)(rect.x+rect.width/2); - x_ymark[oi] = (float)(rect.y+rect.height/2); - x_wmark[oi] = (int)rect.width; - x_hmark[oi] = (int)rect.height; - x_found[oi] = x_ftolerance; - } - - if ( x_draw ) - { - cvRectangle( rgb, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,0,0), 2, 8 , 0 ); - sprintf( tindex, "%d", oi ); - cvPutText( rgb, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,0,255)); - } - - if ( x_show ) - { - cvDrawContours( rgb, contours, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - } - - SETFLOAT(&rlist[0], oi); - SETFLOAT(&rlist[1], rect.x); - SETFLOAT(&rlist[2], rect.y); - SETFLOAT(&rlist[3], rect.width); - SETFLOAT(&rlist[4], rect.height); - - outlet_list( m_dataout, 0, 5, rlist ); - i++; - ic++; - } - } - outlet_float( m_countout, ic ); - - // delete lost objects - for ( im=0; imimageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_contours_boundingrect :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_contours_boundingrect : yuv format not supported" ); -} - -void pix_opencv_contours_boundingrect :: processGrayImage(imageStruct &image) -{ - char tindex[4]; - t_atom rlist[5]; - int im = 0; // Indicator of markers. - int oi; - float dist, odist; // Distances - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&cnt_img); - cvReleaseImage(&rgb); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - - // Create the output images with new sizes - rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - cnt_img = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - memcpy( cnt_img->imageData, image.data, image.xsize*image.ysize ); - if ( x_nightmode ) - { - cvZero( cnt_img ); - } - - CvSeq* contours; - CvMemStorage* stor02; - stor02 = cvCreateMemStorage(0); - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), x_cmode, x_cmethod, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - for ( im=0; imh_next ) - { - int count = contours->total; // This is number point in contour - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - if ( ( (rect.width*rect.height) > minarea ) && ( (rect.width*rect.height) < maxarea ) ) - { - - oi = -1; - dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; - - for ( im=0; immark(rect.x, rect.y, rect.width, rect.height ); - } - else - { - x_xmark[oi] = (float)(rect.x+rect.width/2); - x_ymark[oi] = (float)(rect.y+rect.height/2); - x_wmark[oi] = (int)rect.width; - x_hmark[oi] = (int)rect.height; - x_found[oi] = x_ftolerance; - } - - if ( x_draw ) - { - cvRectangle( cnt_img, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), cvScalarAll(255), 2, 8 , 0 ); - sprintf( tindex, "%d", oi ); - cvPutText( cnt_img, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, cvScalarAll(255)); - } - - if ( x_show ) - { - cvDrawContours( cnt_img, contours, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - } - - SETFLOAT(&rlist[0], oi); - SETFLOAT(&rlist[1], rect.x); - SETFLOAT(&rlist[2], rect.y); - SETFLOAT(&rlist[3], rect.width); - SETFLOAT(&rlist[4], rect.height); - - outlet_list( m_dataout, 0, 5, rlist ); - i++; - ic++; - } - } - - outlet_float( m_countout, ic ); - - // delete lost objects - for ( im=0; imimageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_contours_boundingrect :: floatMinAreaMess (float minarea) -{ - if (minarea>0) this->minarea = (int)minarea; -} - -void pix_opencv_contours_boundingrect :: floatMaxAreaMess (float maxarea) -{ - if (maxarea>0) this->maxarea = (int)maxarea; -} - -void pix_opencv_contours_boundingrect :: floatFToleranceMess (float ftolerance) -{ - if ((int)ftolerance>=1) x_ftolerance = (int)ftolerance; -} - -void pix_opencv_contours_boundingrect :: floatMMoveMess (float mmove) -{ - if ((int)mmove>=1) x_mmove = (int)mmove; -} - -void pix_opencv_contours_boundingrect :: floatCModeMess (float cmode) -{ - // CV_RETR_EXTERNAL || CV_RETR_LIST || CV_RETR_CCOMP || CV_RETR_TREE - int mode = (int)cmode; - - if ( mode == CV_RETR_EXTERNAL ) - { - x_cmode = CV_RETR_EXTERNAL; - post( "pix_opencv_contours_boundingrect : mode set to CV_RETR_EXTERNAL" ); - } - if ( mode == CV_RETR_LIST ) - { - x_cmode = CV_RETR_LIST; - post( "pix_opencv_contours_boundingrect : mode set to CV_RETR_LIST" ); - } - if ( mode == CV_RETR_CCOMP ) - { - x_cmode = CV_RETR_CCOMP; - post( "pix_opencv_contours_boundingrect : mode set to CV_RETR_CCOMP" ); - } - if ( mode == CV_RETR_TREE ) - { - x_cmode = CV_RETR_TREE; - post( "pix_opencv_contours_boundingrect : mode set to CV_RETR_TREE" ); - } -} - -void pix_opencv_contours_boundingrect :: floatCMethodMess (float cmethod) -{ - int method = (int)cmethod; - - // CV_CHAIN_CODE || CV_CHAIN_APPROX_NONE || CV_CHAIN_APPROX_SIMPLE || CV_CHAIN_APPROX_TC89_L1 || CV_CHAIN_APPROX_TC89_KCOS || CV_LINK_RUNS - if ( method == CV_CHAIN_CODE ) - { - post( "pix_opencv_contours_boundingrect : not supported method : CV_CHAIN_CODE" ); - } - if ( method == CV_CHAIN_APPROX_NONE ) - { - x_cmethod = CV_CHAIN_APPROX_NONE; - post( "pix_opencv_contours_boundingrect : method set to CV_CHAIN_APPROX_NONE" ); - } - if ( method == CV_CHAIN_APPROX_SIMPLE ) - { - x_cmethod = CV_CHAIN_APPROX_SIMPLE; - post( "pix_opencv_contours_boundingrect : method set to CV_CHAIN_APPROX_SIMPLE" ); - } - if ( method == CV_CHAIN_APPROX_TC89_L1 ) - { - x_cmethod = CV_CHAIN_APPROX_TC89_L1; - post( "pix_opencv_contours_boundingrect : method set to CV_CHAIN_APPROX_TC89_L1" ); - } - if ( method == CV_CHAIN_APPROX_TC89_KCOS ) - { - x_cmethod = CV_CHAIN_APPROX_TC89_KCOS; - post( "pix_opencv_contours_boundingrect : method set to CV_CHAIN_APPROX_TC89_KCOS" ); - } - if ( ( method == CV_LINK_RUNS ) && ( x_cmode == CV_RETR_LIST ) ) - { - x_cmethod = CV_LINK_RUNS; - post( "pix_opencv_contours_boundingrect : method set to CV_LINK_RUNS" ); - } - -} - -void pix_opencv_contours_boundingrect :: deleteMark(t_floatarg findex ) -{ - int i; - - if ( ( findex < 0.0 ) || ( findex >= MAX_MARKERS ) ) - { - return; - } - - x_xmark[(int)findex] = -1; - x_ymark[(int)findex] = -1; - x_wmark[(int)findex] = -1; - x_hmark[(int)findex] = -1; -} - - -void pix_opencv_contours_boundingrect :: floatClearMess (void) -{ - int i; - - for ( i=0; ifloatMaxAreaMess((float)maxarea); -} - -void pix_opencv_contours_boundingrect :: floatMinAreaMessCallback(void *data, t_floatarg minarea) -{ - GetMyClass(data)->floatMinAreaMess((float)minarea); -} - -void pix_opencv_contours_boundingrect :: floatFToleranceMessCallback(void *data, t_floatarg ftolerance) -{ - GetMyClass(data)->floatFToleranceMess((float)ftolerance); -} - -void pix_opencv_contours_boundingrect :: floatMMoveMessCallback(void *data, t_floatarg mmove) -{ - GetMyClass(data)->floatMMoveMess((float)mmove); -} - -void pix_opencv_contours_boundingrect :: floatCModeMessCallback(void *data, t_floatarg cmode) -{ - GetMyClass(data)->floatCModeMess((float)cmode); -} - -void pix_opencv_contours_boundingrect :: floatCMethodMessCallback(void *data, t_floatarg cmethod) -{ - GetMyClass(data)->floatCMethodMess((float)cmethod); -} - -void pix_opencv_contours_boundingrect :: floatClearMessCallback(void *data) -{ - GetMyClass(data)->floatClearMess(); -} - -void pix_opencv_contours_boundingrect :: floatNightmodeMessCallback(void *data, t_floatarg nightmode) -{ - GetMyClass(data)->floatNightmodeMess(nightmode); -} - -void pix_opencv_contours_boundingrect :: floatShowMessCallback(void *data, t_floatarg show) -{ - GetMyClass(data)->floatShowMess(show); -} - -void pix_opencv_contours_boundingrect :: floatDrawMessCallback(void *data, t_floatarg draw) -{ - GetMyClass(data)->floatDrawMess(draw); -} diff --git a/pix_opencv_contours_boundingrect.h b/pix_opencv_contours_boundingrect.h deleted file mode 100644 index e8634ff..0000000 --- a/pix_opencv_contours_boundingrect.h +++ /dev/null @@ -1,124 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Contours Bounding Rectangle detection - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_CONTOURS_BOUNDINGRECT_H_ -#define INCLUDE_PIX_OPENCV_CONTOURS_BOUNDINGRECT_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/compat.hpp" -#endif - -#include "Base/GemPixObj.h" - -#define MAX_MARKERS 500 - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_contours_boundingrect - - Contours Bounding Rectangle detection - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_contours_boundingrect : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_contours_boundingrect, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_contours_boundingrect(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_contours_boundingrect(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatMinAreaMess(float minarea); - void floatMaxAreaMess(float maxarea); - void floatFToleranceMess(float maxarea); - void floatMMoveMess(float maxarea); - void floatCModeMess(float maxarea); - void floatCMethodMess(float maxarea); - void floatClearMess(void); - void floatNightmodeMess(float nightmode); - void floatShowMess(float show); - void floatDrawMess(float draw); - int mark(float fx, float fy, float fw, float fh ); - void deleteMark(float findex); - // The new minimal/maximal area - int minarea; - int maxarea; - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - float x_xmark[MAX_MARKERS]; - float x_ymark[MAX_MARKERS]; - int x_wmark[MAX_MARKERS]; - int x_hmark[MAX_MARKERS]; - int x_found[MAX_MARKERS]; - int x_ftolerance; - int x_mmove; - int x_nightmode; - int x_draw; - int x_show; - - // contours retrieval mode - int x_cmode; - // contours retrieval method - int x_cmethod; - - private: - - t_outlet *m_dataout; - t_outlet *m_countout; - ////////// - // Static member functions - static void floatMinAreaMessCallback(void *data, t_floatarg minarea); - static void floatMaxAreaMessCallback(void *data, t_floatarg maxarea); - static void floatFToleranceMessCallback(void *data, t_floatarg ftolerance); - static void floatMMoveMessCallback(void *data, t_floatarg mmove); - static void floatCModeMessCallback(void *data, t_floatarg cmode); - static void floatCMethodMessCallback(void *data, t_floatarg cmethod); - static void floatClearMessCallback(void *data); - static void floatNightmodeMessCallback(void *data, t_floatarg nightmode); - static void floatShowMessCallback(void *data, t_floatarg show); - static void floatDrawMessCallback(void *data, t_floatarg draw); - - ///////// - // IplImage needed - IplImage *rgb, *orig, *cnt_img, *gray; - CvFont font; - -}; - -#endif // for header file diff --git a/pix_opencv_contours_convexhull-help.pd b/pix_opencv_contours_convexhull-help.pd deleted file mode 100644 index a509af6..0000000 --- a/pix_opencv_contours_convexhull-help.pd +++ /dev/null @@ -1,181 +0,0 @@ -#N canvas 586 108 1018 740 10; -#X obj 588 591 cnv 15 255 67 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X floatatom 841 790 5 0 0 0 - - -; -#X floatatom 876 790 5 0 0 0 - - -; -#X floatatom 906 771 5 0 0 0 - - -; -#X floatatom 940 771 5 0 0 0 - - -; -#X obj 868 710 unpack 0 0 0 0 0 0; -#X floatatom 970 752 5 0 0 0 - - -; -#X floatatom 1004 752 5 0 0 0 - - -; -#X text 36 159 This object considers a contour to be analyzed any group -of white pixels in a black background \, for this reason you will find -useful to use pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect. -; -#X obj 606 634 pix_opencv_contours_convexhull; -#X text 1043 753 etc ...; -#X text 978 771 Second vertex point (X -Y); -#X text 916 790 First vertex point (X -Y); -#X text 37 212 pix_opencv_contours_convexhull works detecting the bigest -white area in the input image \, sometimes you will need to use pix_opencv_morphology -to transform the contours of the shape to be analyzed..; -#X text 37 123 pix_opencv_contours_convexhull :: Finds convexhull of -the bigest contour of a binary image.; -#X floatatom 694 685 5 0 0 0 - - -; -#X obj 725 54 gemhead; -#X obj 606 852 pix_texture; -#X obj 606 871 square 2; -#X obj 43 50 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 53 94 pd gemwin; -#X msg 53 76 create; -#X obj 454 848 pix_texture; -#X obj 454 876 square 2; -#X obj 606 381 separator; -#X obj 737 81 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 794 256 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 776 221 5 0 10000 1 frame# - -; -#X obj 737 110 openpanel; -#X msg 737 130 open \$1; -#X obj 725 239 pix_film; -#X msg 743 173 auto \$1; -#X obj 743 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X text 51 56 Create window and render; -#X msg 838 156 colorspace RGBA; -#X msg 943 156 colorspace RGB; -#X msg 1047 156 colorspace Grey; -#X obj 838 128 loadbang; -#X obj 605 352 pix_separator; -#X obj 454 384 separator; -#X obj 454 355 pix_separator; -#X obj 454 419 translateXYZ -2 0 0; -#X obj 606 416 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 547 309 pd vswitch; -#X obj 615 309 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 488 237 pix_video; -#X obj 488 49 gemhead; -#X msg 527 162 device 0; -#X msg 536 193 driver 1; -#X msg 513 108 dialog; -#X msg 518 138 device /dev/dv1394-0; -#X obj 606 481 pix_opencv_bgsubstract; -#X obj 606 449 pix_resize 320 240; -#X text 728 684 number of vertex of the convexhull; -#X floatatom 753 480 5 0 0 0 - - -; -#X obj 543 334 pix_rgba; -#X msg 756 453 set; -#X text 785 453 <- Set the background reference; -#X obj 62 419 cnv 15 300 60 empty empty DEPRECATED!! 100 20 0 18 -233017 --258113 0; -#X text 74 445 please consider the use of pix_opencv_contours; -#X connect 5 0 1 0; -#X connect 5 1 2 0; -#X connect 5 2 3 0; -#X connect 5 3 4 0; -#X connect 5 4 6 0; -#X connect 5 5 7 0; -#X connect 9 0 17 0; -#X connect 9 1 15 0; -#X connect 9 2 5 0; -#X connect 16 0 30 0; -#X connect 17 0 18 0; -#X connect 20 0 21 0; -#X connect 21 0 20 0; -#X connect 22 0 23 0; -#X connect 24 0 42 0; -#X connect 25 0 28 0; -#X connect 26 0 27 0; -#X connect 27 0 30 1; -#X connect 28 0 29 0; -#X connect 29 0 30 0; -#X connect 30 0 43 1; -#X connect 30 2 26 0; -#X connect 31 0 30 0; -#X connect 32 0 31 0; -#X connect 34 0 30 0; -#X connect 34 0 45 0; -#X connect 35 0 30 0; -#X connect 36 0 30 0; -#X connect 37 0 34 0; -#X connect 37 0 32 0; -#X connect 38 0 24 0; -#X connect 39 0 41 0; -#X connect 40 0 39 0; -#X connect 41 0 22 0; -#X connect 42 0 52 0; -#X connect 43 0 55 0; -#X connect 44 0 43 2; -#X connect 45 0 43 0; -#X connect 46 0 45 0; -#X connect 47 0 45 0; -#X connect 48 0 45 0; -#X connect 49 0 45 0; -#X connect 50 0 45 0; -#X connect 51 0 9 0; -#X connect 52 0 51 0; -#X connect 54 0 51 1; -#X connect 55 0 40 0; -#X connect 55 0 38 0; -#X connect 56 0 51 0; diff --git a/pix_opencv_contours_convexhull.cc b/pix_opencv_contours_convexhull.cc deleted file mode 100644 index ee41e8b..0000000 --- a/pix_opencv_contours_convexhull.cc +++ /dev/null @@ -1,572 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_contours_convexhull.h" - -CPPEXTERN_NEW(pix_opencv_contours_convexhull) - -///////////////////////////////////////////////////////// -// -// pix_opencv_contours_convexhull -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_contours_convexhull :: pix_opencv_contours_convexhull() -{ - //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); - //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); - m_nomdef = outlet_new(this->x_obj, 0); - m_dataout = outlet_new(this->x_obj, 0); - minarea = 1; - maxarea = 320*240; - comp_xsize = 0; - comp_ysize = 0; - orig = NULL; - gray = NULL; - rgb = NULL; - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_contours_convexhull :: ~pix_opencv_contours_convexhull() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_contours_convexhull :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - - // Create the output images with new sizes - rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to grayscale - cvCvtColor(orig, gray, CV_RGBA2GRAY); - cvCvtColor(orig, rgb, CV_RGBA2RGB); - - //CvSeq* seqhull; - CvSeq* defects; - CvSeq* contours; - int* hull; - int hullsize; - CvPoint* PointArray; - CvConvexityDefect* defectArray; - CvMemStorage* stor02; - CvMemStorage* stor03; - stor02 = cvCreateMemStorage(0); - stor03 = cvCreateMemStorage(0); - - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - int i = 0; - int area = 0; - int selected = -1; - - //busquem el contorn mes gran - CvSeq* first_contour; - first_contour = contours; - for( ; contours != 0; contours = contours->h_next ) - { - CvRect rect; - int count = contours->total; - rect = cvContourBoundingRect(contours, 1); - if ( (rect.width*rect.height) > area ) - { - selected = i; - area = rect.width*rect.height; - } - i++; - } - - contours = first_contour; - - int k = 0; - for( ; contours != 0; contours = contours->h_next ) - { - int i; // Indicator of cycles. - int count = contours->total; // This is number point in contour - CvPoint center; - CvSize size; - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - if ( (k==selected) ) { - - - //fprintf(stderr,"malloc\n"); - // Alloc memory for contour point set. - PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); - - // Alloc memory for indices of convex hull vertices. - hull = (int*)malloc(sizeof(int)*count); - - // Get contour point set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); - - - // Find convex hull for curent contour. - //fprintf(stderr,"cvConvexHull\n"); - cvConvexHull( PointArray, - count, - NULL, - CV_COUNTER_CLOCKWISE, - hull, - &hullsize); - - // Find convex hull for current contour. - // This required for cvConvexityDefects(). - //fprintf(stderr,"cvConvexHull2\n"); - //seqhull = cvConvexHull2( contours,0, - // CV_COUNTER_CLOCKWISE, - // 0); - - - // Draw current contour. - //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); - //cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); - outlet_float( m_nomdef, hullsize ); - - t_atom rlist[hullsize*2]; - - int j=0; - // Draw convex hull for current contour. - for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); - //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); - } - k++; - } - - cvReleaseMemStorage( &stor03 ); - cvReleaseMemStorage( &stor02 ); - //if (defects) cvClearSeq(defects); - //if (seqhull) cvClearSeq(seqhull); - - cvCvtColor(rgb, orig, CV_RGB2RGBA); - //copy back the processed frame to image - memcpy( image.data, orig->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_contours_convexhull :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - - //create the orig image with new size - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - // Create the output images with new sizes - - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to grayscale - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - - //CvSeq* seqhull; - CvSeq* defects; - CvSeq* contours; - int* hull; - int hullsize; - CvPoint* PointArray; - CvConvexityDefect* defectArray; - CvMemStorage* stor02; - CvMemStorage* stor03; - stor02 = cvCreateMemStorage(0); - stor03 = cvCreateMemStorage(0); - - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - int i = 0; - int area = 0; - int selected = -1; - - //busquem el contorn mes gran - CvSeq* first_contour; - first_contour = contours; - for( ; contours != 0; contours = contours->h_next ) - { - CvRect rect; - int count = contours->total; - rect = cvContourBoundingRect(contours, 1); - if ( (rect.width*rect.height) > area ) - { - selected = i; - area = rect.width*rect.height; - } - i++; - } - - contours = first_contour; - - int k = 0; - for( ; contours != 0; contours = contours->h_next ) - { - int i; // Indicator of cycles. - int count = contours->total; // This is number point in contour - CvPoint center; - CvSize size; - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - if ( (k==selected) ) { - - - //fprintf(stderr,"malloc\n"); - // Alloc memory for contour point set. - PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); - - // Alloc memory for indices of convex hull vertices. - hull = (int*)malloc(sizeof(int)*count); - - // Get contour point set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); - - - // Find convex hull for curent contour. - //fprintf(stderr,"cvConvexHull\n"); - cvConvexHull( PointArray, - count, - NULL, - CV_COUNTER_CLOCKWISE, - hull, - &hullsize); - - // Find convex hull for current contour. - // This required for cvConvexityDefects(). - //fprintf(stderr,"cvConvexHull2\n"); - //seqhull = cvConvexHull2( contours,0, - // CV_COUNTER_CLOCKWISE, - // 0); - - - // Draw current contour. - //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); - //cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); - outlet_float( m_nomdef, hullsize ); - - t_atom rlist[hullsize*2]; - - int j=0; - // Draw convex hull for current contour. - for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); - //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); - } - k++; - } - - cvReleaseMemStorage( &stor03 ); - cvReleaseMemStorage( &stor02 ); - //if (defects) cvClearSeq(defects); - //if (seqhull) cvClearSeq(seqhull); - - //cvShowImage(wndname, cedge); - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_contours_convexhull :: processYUVImage(imageStruct &image) -{ -} - -void pix_opencv_contours_convexhull :: processGrayImage(imageStruct &image) -{ - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - - // Create the output images with new sizes - rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - cvCvtColor(gray, rgb, CV_GRAY2RGB); - - //CvSeq* seqhull; - CvSeq* defects; - CvSeq* contours; - int* hull; - int hullsize; - CvPoint* PointArray; - CvConvexityDefect* defectArray; - CvMemStorage* stor02; - CvMemStorage* stor03; - stor02 = cvCreateMemStorage(0); - stor03 = cvCreateMemStorage(0); - - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - int i = 0; - int area = 0; - int selected = -1; - - //busquem el contorn mes gran - CvSeq* first_contour; - first_contour = contours; - for( ; contours != 0; contours = contours->h_next ) - { - CvRect rect; - int count = contours->total; - rect = cvContourBoundingRect(contours, 1); - if ( (rect.width*rect.height) > area ) - { - selected = i; - area = rect.width*rect.height; - } - i++; - } - - contours = first_contour; - - int k = 0; - for( ; contours != 0; contours = contours->h_next ) - { - int i; // Indicator of cycles. - int count = contours->total; // This is number point in contour - CvPoint center; - CvSize size; - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - if ( (k==selected) ) { - - - //fprintf(stderr,"malloc\n"); - // Alloc memory for contour point set. - PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); - - // Alloc memory for indices of convex hull vertices. - hull = (int*)malloc(sizeof(int)*count); - - // Get contour point set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); - - - // Find convex hull for curent contour. - //fprintf(stderr,"cvConvexHull\n"); - cvConvexHull( PointArray, - count, - NULL, - CV_COUNTER_CLOCKWISE, - hull, - &hullsize); - - // Find convex hull for current contour. - // This required for cvConvexityDefects(). - //fprintf(stderr,"cvConvexHull2\n"); - //seqhull = cvConvexHull2( contours,0, - // CV_COUNTER_CLOCKWISE, - // 0); - - - // Draw current contour. - //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); - //cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); - - outlet_float( m_nomdef, hullsize ); - - t_atom rlist[hullsize*2]; - - int j=0; - // Draw convex hull for current contour. - for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); - //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); - } - k++; - } - - cvReleaseMemStorage( &stor03 ); - cvReleaseMemStorage( &stor02 ); - //if (defects) cvClearSeq(defects); - //if (seqhull) cvClearSeq(seqhull); - - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - //copy back the processed frame to image - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_contours_convexhull :: floatMinAreaMess (float minarea) -{ - if (minarea>0) this->minarea = (int)minarea; -} -void pix_opencv_contours_convexhull :: floatMaxAreaMess (float maxarea) -{ - if (maxarea>0) this->maxarea = (int)maxarea; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_contours_convexhull :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_contours_convexhull::floatMinAreaMessCallback, - gensym("minarea"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_contours_convexhull::floatMaxAreaMessCallback, - gensym("maxarea"), A_FLOAT, A_NULL); -} -void pix_opencv_contours_convexhull :: floatMaxAreaMessCallback(void *data, t_floatarg maxarea) -{ - GetMyClass(data)->floatMaxAreaMess((float)maxarea); -} -void pix_opencv_contours_convexhull :: floatMinAreaMessCallback(void *data, t_floatarg minarea) -{ - GetMyClass(data)->floatMinAreaMess((float)minarea); -} diff --git a/pix_opencv_contours_convexhull.h b/pix_opencv_contours_convexhull.h deleted file mode 100644 index 0162b71..0000000 --- a/pix_opencv_contours_convexhull.h +++ /dev/null @@ -1,88 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Change pix to greyscale - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_CONTOURS_CONVEXITY_H_ -#define INCLUDE_PIX_OPENCV_CONTOURS_CONVEXITY_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/compat.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_contours_convexhull - - Change pix to greyscale - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_contours_convexhull : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_contours_convexhull, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_contours_convexhull(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_contours_convexhull(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatMinAreaMess(float minarea); - void floatMaxAreaMess(float maxarea); - // The new minimal/maximal area - int minarea; - int maxarea; - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - t_outlet *m_nomdef; - t_outlet *m_dataout; - ////////// - // Static member functions - static void floatMinAreaMessCallback(void *data, t_floatarg minarea); - static void floatMaxAreaMessCallback(void *data, t_floatarg maxarea); - - ///////// - // IplImage needed - IplImage *rgb, *orig, *gray; - -}; - -#endif // for header file diff --git a/pix_opencv_contours_convexity-help.pd b/pix_opencv_contours_convexity-help.pd deleted file mode 100644 index 350bd73..0000000 --- a/pix_opencv_contours_convexity-help.pd +++ /dev/null @@ -1,191 +0,0 @@ -#N canvas 227 366 1068 671 10; -#X obj 17 217 cnv 15 430 450 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 17 171 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 26 175 Arguments:; -#X obj 17 76 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 22 38 Class: pix_opencv; -#X text 23 22 Synopsis: [pix_opencv_calibration]; -#X text 47 195 none; -#X text 26 86 pix_opencv_contours_convexity :: Finds convexity defects -of the bigest contour of a binary image.; -#X text 25 228 This object considers a contour to be analyzed any group -of white pixels in a black background \, for this reason you will find -useful to use pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect. -; -#X text 26 281 pix_opencv_contours_boundingrect works detecting the -bigest white area in the input image \, sometimes you will need to -use pix_opencv_morphology to transform the contours of the shape to -be analyzed..; -#X obj 453 6 cnv 15 610 660 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X obj 600 414 cnv 15 455 200 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 609 625 pix_texture; -#X obj 832 240 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 842 284 pd gemwin; -#X msg 842 266 destroy; -#X obj 458 627 pix_texture; -#X obj 458 646 square 2; -#X obj 609 291 separator; -#X obj 647 41 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 704 216 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 686 181 5 0 10000 1 frame# - -; -#X obj 647 70 openpanel; -#X msg 647 90 open \$1; -#X obj 635 199 pix_film; -#X msg 653 133 auto \$1; -#X obj 653 115 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X text 840 246 Create window and render; -#X msg 748 116 colorspace RGBA; -#X msg 758 137 colorspace RGB; -#X msg 772 156 colorspace Grey; -#X obj 748 88 loadbang; -#X obj 609 272 pix_separator; -#X obj 458 294 separator; -#X obj 458 275 pix_separator; -#X obj 458 312 translateXYZ -2 0 0; -#N canvas 1 158 405 225 vswitch 0; -#X obj 36 139 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 305 29 inlet; -#X obj 81 73 == 0; -#X obj 36 93 spigot 1; -#X obj 260 95 spigot 0; -#X connect 1 0 5 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 3 0 6 1; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X restore 458 230 pd vswitch; -#X obj 526 230 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 458 197 pix_video; -#X msg 497 132 device 0; -#X msg 506 153 driver 1; -#X msg 483 93 dialog; -#X msg 488 113 device /dev/dv1394-0; -#X obj 609 368 pix_opencv_bgsubstract; -#X obj 609 329 pix_resize 320 240; -#X floatatom 756 369 5 0 0 0 - - -; -#X obj 609 388 pix_opencv_morphology; -#X floatatom 757 387 5 0 0 0 - - -; -#X obj 609 644 square 2; -#X floatatom 746 588 5 0 0 0 - - -; -#X floatatom 781 588 5 0 0 0 - - -; -#X floatatom 811 569 5 0 0 0 - - -; -#X floatatom 845 569 5 0 0 0 - - -; -#X obj 780 466 route 0 1 2 3 4; -#X obj 780 524 unpack 0 0 0 0 0 0; -#X floatatom 875 550 5 0 0 0 - - -; -#X floatatom 909 550 5 0 0 0 - - -; -#X text 819 589 Start point (X -Y); -#X text 883 569 Depth point (X -Y); -#X text 948 551 End point (X -Y); -#X floatatom 694 441 5 0 0 0 - - -; -#X text 730 445 number convexity defects in our detected contour; -#X text 692 484 A convexity defect is defined by 3 points. So for each -convexity defects we have ::; -#X obj 609 310 translateXYZ 2 0 0; -#X obj 609 421 pix_opencv_contours_convexity; -#X obj 458 251 pix_rgba; -#X msg 623 348 set; -#X text 652 347 <- Set the background reference; -#X text 790 369 <-Adjust threshold; -#X text 796 389 <-Adjust morphology if needed; -#X obj 635 14 gemhead; -#X obj 458 9 gemhead; -#X obj 62 419 cnv 15 300 60 empty empty DEPRECATED!! 100 20 0 18 -233017 --258113 0; -#X text 74 445 please consider the use of pix_opencv_contours; -#X connect 12 0 48 0; -#X connect 14 0 15 0; -#X connect 15 0 14 0; -#X connect 16 0 17 0; -#X connect 18 0 63 0; -#X connect 19 0 22 0; -#X connect 20 0 21 0; -#X connect 21 0 24 1; -#X connect 22 0 23 0; -#X connect 23 0 24 0; -#X connect 24 0 36 1; -#X connect 24 2 20 0; -#X connect 25 0 24 0; -#X connect 26 0 25 0; -#X connect 28 0 24 0; -#X connect 28 0 38 0; -#X connect 29 0 24 0; -#X connect 30 0 24 0; -#X connect 31 0 28 0; -#X connect 31 0 26 0; -#X connect 32 0 18 0; -#X connect 33 0 35 0; -#X connect 34 0 33 0; -#X connect 35 0 16 0; -#X connect 36 0 65 0; -#X connect 37 0 36 2; -#X connect 38 0 36 0; -#X connect 39 0 38 0; -#X connect 40 0 38 0; -#X connect 41 0 38 0; -#X connect 42 0 38 0; -#X connect 43 0 46 0; -#X connect 44 0 43 0; -#X connect 45 0 43 1; -#X connect 46 0 64 0; -#X connect 47 0 46 1; -#X connect 53 0 54 0; -#X connect 54 0 49 0; -#X connect 54 1 50 0; -#X connect 54 2 51 0; -#X connect 54 3 52 0; -#X connect 54 4 55 0; -#X connect 54 5 56 0; -#X connect 63 0 44 0; -#X connect 64 0 12 0; -#X connect 64 1 60 0; -#X connect 64 2 53 0; -#X connect 65 0 34 0; -#X connect 65 0 32 0; -#X connect 66 0 43 0; -#X connect 70 0 24 0; -#X connect 71 0 38 0; diff --git a/pix_opencv_contours_convexity.cc b/pix_opencv_contours_convexity.cc deleted file mode 100644 index 4c7260a..0000000 --- a/pix_opencv_contours_convexity.cc +++ /dev/null @@ -1,685 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_contours_convexity.h" - -CPPEXTERN_NEW(pix_opencv_contours_convexity) - -///////////////////////////////////////////////////////// -// -// pix_opencv_contours_convexity -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_contours_convexity :: pix_opencv_contours_convexity() -{ - //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); - //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); - m_nomdef = outlet_new(this->x_obj, 0); - m_dataout = outlet_new(this->x_obj, 0); - minarea = 1; - maxarea = 320*240; - comp_xsize = 0; - comp_ysize = 0; - orig = NULL; - gray = NULL; - rgb = NULL; - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_contours_convexity :: ~pix_opencv_contours_convexity() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_contours_convexity :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - - // Create the output images with new sizes - rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to grayscale - cvCvtColor(orig, gray, CV_RGBA2GRAY); - cvCvtColor(orig, rgb, CV_RGBA2RGB); - - CvSeq* seqhull; - CvSeq* defects; - CvSeq* contours; - int* hull; - int hullsize; - CvPoint* PointArray; - CvConvexityDefect* defectArray; - CvMemStorage* stor02; - CvMemStorage* stor03; - stor02 = cvCreateMemStorage(0); - stor03 = cvCreateMemStorage(0); - - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - int i = 0; - int area = 0; - int selected = -1; - - //busquem el contorn mes gran - CvSeq* first_contour; - first_contour = contours; - for( ; contours != 0; contours = contours->h_next ) - { - CvRect rect; - int count = contours->total; - rect = cvContourBoundingRect(contours, 1); - if ( (rect.width*rect.height) > area ) - { - selected = i; - area = rect.width*rect.height; - } - i++; - } - - contours = first_contour; - - int k = 0; - for( ; contours != 0; contours = contours->h_next ) - { - int i; // Indicator of cycles. - int count = contours->total; // This is number point in contour - CvPoint center; - CvSize size; - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - if ( (k==selected) ) { - - - //fprintf(stderr,"malloc\n"); - // Alloc memory for contour point set. - PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); - - // Alloc memory for indices of convex hull vertices. - hull = (int*)malloc(sizeof(int)*count); - - // Get contour point set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); - - - // Find convex hull for curent contour. - //fprintf(stderr,"cvConvexHull\n"); - cvConvexHull( PointArray, - count, - NULL, - CV_COUNTER_CLOCKWISE, - hull, - &hullsize); - - // Find convex hull for current contour. - // This required for cvConvexityDefects(). - //fprintf(stderr,"cvConvexHull2\n"); - seqhull = cvConvexHull2( contours,0, - CV_COUNTER_CLOCKWISE, - 0); - - // This required for cvConvexityDefects(). - // Otherwise cvConvexityDefects() falled. - if( hullsize < 4 ) - continue; - - // Find defects of convexity of current contours. - //fprintf(stderr,"cvConvexityDefects\n"); - defects = cvConvexityDefects( contours, - seqhull, - stor03); - int j=0; - // This cycle marks all defects of convexity of current contours. - for(;defects;defects = defects->h_next) - { - int nomdef = defects->total; // defect amount - outlet_float( m_nomdef, nomdef ); - - if(nomdef == 0) - continue; - - // Alloc memory for defect set. - //fprintf(stderr,"malloc\n"); - defectArray = (CvConvexityDefect*)malloc(sizeof(CvConvexityDefect)*nomdef); - - // Get defect set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(defects,defectArray, CV_WHOLE_SEQ); - - - // Draw marks for all defects. - for(i=0; ix); - SETFLOAT(&rlist[2], defectArray[i].start->y); - SETFLOAT(&rlist[3], defectArray[i].depth_point->x); - SETFLOAT(&rlist[4], defectArray[i].depth_point->y); - SETFLOAT(&rlist[5], defectArray[i].end->x); - SETFLOAT(&rlist[6], defectArray[i].end->y); - outlet_list( m_dataout, 0, 7, rlist ); - } - - j++; - - // Free memory. - free(defectArray); - } - - // Draw current contour. - //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); - cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); - - // Draw convex hull for current contour. - for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); - //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); - } - k++; - } - - cvReleaseMemStorage( &stor03 ); - cvReleaseMemStorage( &stor02 ); - //if (defects) cvClearSeq(defects); - //if (seqhull) cvClearSeq(seqhull); - - cvCvtColor(rgb, orig, CV_RGB2RGBA); - //copy back the processed frame to image - memcpy( image.data, orig->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_contours_convexity :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - - //create the orig image with new size - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - // Create the output images with new sizes - - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to grayscale - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - - CvSeq* seqhull; - CvSeq* defects; - CvSeq* contours; - int* hull; - int hullsize; - CvPoint* PointArray; - CvConvexityDefect* defectArray; - CvMemStorage* stor02; - CvMemStorage* stor03; - stor02 = cvCreateMemStorage(0); - stor03 = cvCreateMemStorage(0); - - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - int i = 0; - int area = 0; - int selected = -1; - - //busquem el contorn mes gran - CvSeq* first_contour; - first_contour = contours; - for( ; contours != 0; contours = contours->h_next ) - { - CvRect rect; - int count = contours->total; - rect = cvContourBoundingRect(contours, 1); - if ( (rect.width*rect.height) > area ) - { - selected = i; - area = rect.width*rect.height; - } - i++; - } - - contours = first_contour; - - int k = 0; - for( ; contours != 0; contours = contours->h_next ) - { - int i; // Indicator of cycles. - int count = contours->total; // This is number point in contour - CvPoint center; - CvSize size; - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - if ( (k==selected) ) { - - - //fprintf(stderr,"malloc\n"); - // Alloc memory for contour point set. - PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); - - // Alloc memory for indices of convex hull vertices. - hull = (int*)malloc(sizeof(int)*count); - - // Get contour point set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); - - - // Find convex hull for curent contour. - //fprintf(stderr,"cvConvexHull\n"); - cvConvexHull( PointArray, - count, - NULL, - CV_COUNTER_CLOCKWISE, - hull, - &hullsize); - - // Find convex hull for current contour. - // This required for cvConvexityDefects(). - //fprintf(stderr,"cvConvexHull2\n"); - seqhull = cvConvexHull2( contours,0, - CV_COUNTER_CLOCKWISE, - 0); - - // This required for cvConvexityDefects(). - // Otherwise cvConvexityDefects() falled. - if( hullsize < 4 ) - continue; - - // Find defects of convexity of current contours. - //fprintf(stderr,"cvConvexityDefects\n"); - defects = cvConvexityDefects( contours, - seqhull, - stor03); - int j=0; - // This cycle marks all defects of convexity of current contours. - for(;defects;defects = defects->h_next) - { - int nomdef = defects->total; // defect amount - outlet_float( m_nomdef, nomdef ); - - if(nomdef == 0) - continue; - - // Alloc memory for defect set. - //fprintf(stderr,"malloc\n"); - defectArray = (CvConvexityDefect*)malloc(sizeof(CvConvexityDefect)*nomdef); - - // Get defect set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(defects,defectArray, CV_WHOLE_SEQ); - - - // Draw marks for all defects. - for(i=0; ix); - SETFLOAT(&rlist[2], defectArray[i].start->y); - SETFLOAT(&rlist[3], defectArray[i].depth_point->x); - SETFLOAT(&rlist[4], defectArray[i].depth_point->y); - SETFLOAT(&rlist[5], defectArray[i].end->x); - SETFLOAT(&rlist[6], defectArray[i].end->y); - outlet_list( m_dataout, 0, 7, rlist ); - } - - j++; - - // Free memory. - free(defectArray); - } - - // Draw current contour. - //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); - cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); - - // Draw convex hull for current contour. - for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); - //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); - } - k++; - } - - cvReleaseMemStorage( &stor03 ); - cvReleaseMemStorage( &stor02 ); - //if (defects) cvClearSeq(defects); - //if (seqhull) cvClearSeq(seqhull); - - //cvShowImage(wndname, cedge); - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_contours_convexity :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_contours_convexity : yuv format not supported" ); -} - -void pix_opencv_contours_convexity :: processGrayImage(imageStruct &image) -{ - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - - // Create the output images with new sizes - rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - cvCvtColor(gray, rgb, CV_GRAY2RGB); - - CvSeq* seqhull; - CvSeq* defects; - CvSeq* contours; - int* hull; - int hullsize; - CvPoint* PointArray; - CvConvexityDefect* defectArray; - CvMemStorage* stor02; - CvMemStorage* stor03; - stor02 = cvCreateMemStorage(0); - stor03 = cvCreateMemStorage(0); - - - cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); - - int i = 0; - int area = 0; - int selected = -1; - - //busquem el contorn mes gran - CvSeq* first_contour; - first_contour = contours; - for( ; contours != 0; contours = contours->h_next ) - { - CvRect rect; - int count = contours->total; - rect = cvContourBoundingRect(contours, 1); - if ( (rect.width*rect.height) > area ) - { - selected = i; - area = rect.width*rect.height; - } - i++; - } - - contours = first_contour; - - int k = 0; - for( ; contours != 0; contours = contours->h_next ) - { - int i; // Indicator of cycles. - int count = contours->total; // This is number point in contour - CvPoint center; - CvSize size; - CvRect rect; - - rect = cvContourBoundingRect( contours, 1); - if ( (k==selected) ) { - - - //fprintf(stderr,"malloc\n"); - // Alloc memory for contour point set. - PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); - - // Alloc memory for indices of convex hull vertices. - hull = (int*)malloc(sizeof(int)*count); - - // Get contour point set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); - - - // Find convex hull for curent contour. - //fprintf(stderr,"cvConvexHull\n"); - cvConvexHull( PointArray, - count, - NULL, - CV_COUNTER_CLOCKWISE, - hull, - &hullsize); - - // Find convex hull for current contour. - // This required for cvConvexityDefects(). - //fprintf(stderr,"cvConvexHull2\n"); - seqhull = cvConvexHull2( contours,0, - CV_COUNTER_CLOCKWISE, - 0); - - // This required for cvConvexityDefects(). - // Otherwise cvConvexityDefects() falled. - if( hullsize < 4 ) - continue; - - // Find defects of convexity of current contours. - //fprintf(stderr,"cvConvexityDefects\n"); - defects = cvConvexityDefects( contours, - seqhull, - stor03); - int j=0; - // This cycle marks all defects of convexity of current contours. - for(;defects;defects = defects->h_next) - { - int nomdef = defects->total; // defect amount - outlet_float( m_nomdef, nomdef ); - - if(nomdef == 0) - continue; - - // Alloc memory for defect set. - //fprintf(stderr,"malloc\n"); - defectArray = (CvConvexityDefect*)malloc(sizeof(CvConvexityDefect)*nomdef); - - // Get defect set. - //fprintf(stderr,"cvCvtSeqToArray\n"); - cvCvtSeqToArray(defects,defectArray, CV_WHOLE_SEQ); - - - // Draw marks for all defects. - for(i=0; ix); - SETFLOAT(&rlist[2], defectArray[i].start->y); - SETFLOAT(&rlist[3], defectArray[i].depth_point->x); - SETFLOAT(&rlist[4], defectArray[i].depth_point->y); - SETFLOAT(&rlist[5], defectArray[i].end->x); - SETFLOAT(&rlist[6], defectArray[i].end->y); - outlet_list( m_dataout, 0, 7, rlist ); - } - - j++; - - // Free memory. - free(defectArray); - } - - // Draw current contour. - //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); - cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); - - // Draw convex hull for current contour. - for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); - //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); - } - k++; - } - - cvReleaseMemStorage( &stor03 ); - cvReleaseMemStorage( &stor02 ); - //if (defects) cvClearSeq(defects); - //if (seqhull) cvClearSeq(seqhull); - - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - //copy back the processed frame to image - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_contours_convexity :: floatMinAreaMess (float minarea) -{ - if (minarea>0) this->minarea = (int)minarea; -} -void pix_opencv_contours_convexity :: floatMaxAreaMess (float maxarea) -{ - if (maxarea>0) this->maxarea = (int)maxarea; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_contours_convexity :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_contours_convexity::floatMinAreaMessCallback, - gensym("minarea"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_contours_convexity::floatMaxAreaMessCallback, - gensym("maxarea"), A_FLOAT, A_NULL); -} -void pix_opencv_contours_convexity :: floatMaxAreaMessCallback(void *data, t_floatarg maxarea) -{ - GetMyClass(data)->floatMaxAreaMess((float)maxarea); -} -void pix_opencv_contours_convexity :: floatMinAreaMessCallback(void *data, t_floatarg minarea) -{ - GetMyClass(data)->floatMinAreaMess((float)minarea); -} diff --git a/pix_opencv_contours_convexity.h b/pix_opencv_contours_convexity.h deleted file mode 100644 index d03e723..0000000 --- a/pix_opencv_contours_convexity.h +++ /dev/null @@ -1,88 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Contours convexity detection - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_CONTOURS_CONVEXITY_H_ -#define INCLUDE_PIX_OPENCV_CONTOURS_CONVEXITY_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/compat.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_contours_convexity - - Contours convexity detection - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_contours_convexity : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_contours_convexity, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_contours_convexity(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_contours_convexity(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatMinAreaMess(float minarea); - void floatMaxAreaMess(float maxarea); - // The new minimal/maximal area - int minarea; - int maxarea; - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - t_outlet *m_nomdef; - t_outlet *m_dataout; - ////////// - // Static member functions - static void floatMinAreaMessCallback(void *data, t_floatarg minarea); - static void floatMaxAreaMessCallback(void *data, t_floatarg maxarea); - - ///////// - // IplImage needed - IplImage *rgb, *orig, *gray; - -}; - -#endif // for header file diff --git a/pix_opencv_dft-help.pd b/pix_opencv_dft-help.pd deleted file mode 100644 index 5e71995..0000000 --- a/pix_opencv_dft-help.pd +++ /dev/null @@ -1,157 +0,0 @@ -#N canvas 522 300 1067 534 10; -#X obj 6 109 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 6 63 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 15 67 Arguments:; -#X obj 6 -32 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 11 -70 Class: pix_opencv; -#X text 12 -86 Synopsis: [pix_opencv_calibration]; -#X text 36 87 none; -#X obj 443 -91 cnv 15 610 520 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 769 -82 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 160 260 gemwin; -#X msg 159 207 create \, 1; -#X msg 235 208 destroy; -#X msg 281 180 frame 25; -#X obj 162 170 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 774 -38 pd gemwin; -#X msg 774 -59 create; -#X text 775 -77 Create window and render; -#X obj 598 236 cnv 15 450 120 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 601 329 pix_opencv_dft; -#X text 18 116 written by yves degoyon ( ydegoyon@gmail.com ); -#X text 16 -7 this can be used for pattern matching; -#X text 18 -24 pix_opencv_dft : discrete fourier transform; -#X msg 616 302 bang; -#X obj 608 242 loadbang; -#X obj 608 279 metro 100; -#X text 678 279 <-- Calculate Discrete Fourier Transform of the pattern -; -#X text 698 303 frame so it is just processed when it receives a bang -; -#X obj 617 -76 gemhead; -#X obj 601 367 pix_texture; -#X obj 601 386 square 2; -#X obj 450 369 pix_texture; -#X obj 450 389 square 2; -#X obj 601 193 separator; -#X obj 629 -49 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 686 126 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 668 91 5 0 10000 1 frame# - -; -#X obj 629 -20 openpanel; -#X msg 629 0 open \$1; -#X obj 617 109 pix_film; -#X msg 635 43 auto \$1; -#X obj 635 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X msg 730 26 colorspace RGBA; -#X msg 741 47 colorspace RGB; -#X msg 748 69 colorspace Grey; -#X obj 730 -2 loadbang; -#X obj 601 175 pix_separator; -#X obj 450 194 separator; -#X obj 450 176 pix_separator; -#X obj 450 213 translateXYZ -2 0 0; -#X obj 601 213 translateXYZ 2 0 0; -#N canvas 1 202 234 181 vswitch 0; -#X obj 36 113 outlet; -#X obj 36 26 inlet; -#X obj 100 25 inlet; -#X obj 145 25 inlet; -#X obj 36 83 spigot 1; -#X obj 100 83 spigot 0; -#X obj 81 62 == 0; -#X connect 1 0 4 0; -#X connect 2 0 5 0; -#X connect 3 0 6 0; -#X connect 3 0 5 1; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 4 1; -#X restore 450 133 pd vswitch; -#X obj 518 133 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 450 107 pix_video; -#X obj 450 -81 gemhead; -#X msg 479 54 device 0; -#X msg 488 73 driver 1; -#X msg 465 16 dialog; -#X msg 470 36 device /dev/dv1394-0; -#X obj 450 154 pix_rgba; -#X text 700 290 pix_opencv_dft is too greedy to be calculayed for every -; -#X obj 608 261 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X connect 9 0 10 0; -#X connect 10 0 9 0; -#X connect 13 0 23 0; -#X connect 17 0 13 0; -#X connect 18 0 55 0; -#X connect 19 0 13 0; -#X connect 22 0 33 0; -#X connect 23 0 24 0; -#X connect 25 0 26 0; -#X connect 27 0 44 0; -#X connect 28 0 31 0; -#X connect 29 0 30 0; -#X connect 30 0 33 1; -#X connect 31 0 32 0; -#X connect 32 0 33 0; -#X connect 33 0 45 1; -#X connect 33 2 29 0; -#X connect 34 0 33 0; -#X connect 35 0 34 0; -#X connect 36 0 33 0; -#X connect 36 0 47 0; -#X connect 37 0 33 0; -#X connect 38 0 33 0; -#X connect 39 0 36 0; -#X connect 39 0 35 0; -#X connect 40 0 27 0; -#X connect 41 0 43 0; -#X connect 42 0 41 0; -#X connect 43 0 25 0; -#X connect 44 0 13 0; -#X connect 45 0 53 0; -#X connect 46 0 45 2; -#X connect 47 0 45 0; -#X connect 48 0 47 0; -#X connect 49 0 47 0; -#X connect 50 0 47 0; -#X connect 51 0 47 0; -#X connect 52 0 47 0; -#X connect 53 0 42 0; -#X connect 53 0 40 0; -#X connect 55 0 19 0; diff --git a/pix_opencv_dft.cc b/pix_opencv_dft.cc deleted file mode 100644 index b7a3ce5..0000000 --- a/pix_opencv_dft.cc +++ /dev/null @@ -1,462 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_dft.h" - -CPPEXTERN_NEW(pix_opencv_dft) - -///////////////////////////////////////////////////////// -// -// pix_opencv_dft -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_dft :: pix_opencv_dft() -{ - int i; - - x_calculate = 1; - comp_xsize=0; - comp_ysize=0; - - rgb = NULL; - rgba = NULL; - gray = NULL; - input_re = NULL; - input_im = NULL; - input_co = NULL; - dft_A = NULL; - image_re = NULL; - image_im = NULL; - image_mout = NULL; -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_dft :: ~pix_opencv_dft() -{ - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &rgba ); - //cvReleaseImage( &gray ); - cvReleaseImage( &input_re ); - cvReleaseImage( &input_im ); - cvReleaseImage( &input_co ); - cvReleaseMat( &dft_A ); - //cvReleaseImage( &mage_re ); - //cvReleaseImage( &image_im ); - //cvReleaseImage( &image_mout ); - -} - -///////////////////////////////////////////////////////// -// shiftDFT -// -///////////////////////////////////////////////////////// -void pix_opencv_dft :: shiftDFT(CvArr * src_arr, CvArr * dst_arr ) -{ - CvMat *tmp=NULL; - CvMat q1stub, q2stub; - CvMat q3stub, q4stub; - CvMat d1stub, d2stub; - CvMat d3stub, d4stub; - CvMat * q1, * q2, * q3, * q4; - CvMat * d1, * d2, * d3, * d4; - - CvSize size = cvGetSize(src_arr); - CvSize dst_size = cvGetSize(dst_arr); - int cx, cy; - - if(dst_size.width != size.width || - dst_size.height != size.height){ - return; - } - - if(src_arr==dst_arr){ - tmp = cvCreateMat(size.height/2, size.width/2, cvGetElemType(src_arr)); - } - - cx = size.width/2; - cy = size.height/2; // image center - - q1 = cvGetSubRect( src_arr, &q1stub, cvRect(0,0,cx, cy) ); - q2 = cvGetSubRect( src_arr, &q2stub, cvRect(cx,0,cx,cy) ); - q3 = cvGetSubRect( src_arr, &q3stub, cvRect(cx,cy,cx,cy) ); - q4 = cvGetSubRect( src_arr, &q4stub, cvRect(0,cy,cx,cy) ); - d1 = cvGetSubRect( src_arr, &d1stub, cvRect(0,0,cx,cy) ); - d2 = cvGetSubRect( src_arr, &d2stub, cvRect(cx,0,cx,cy) ); - d3 = cvGetSubRect( src_arr, &d3stub, cvRect(cx,cy,cx,cy) ); - d4 = cvGetSubRect( src_arr, &d4stub, cvRect(0,cy,cx,cy) ); - - if(src_arr!=dst_arr) - { - if( !CV_ARE_TYPES_EQ( q1, d1 )){ - return; - } - cvCopy(q3, d1, 0); - cvCopy(q4, d2, 0); - cvCopy(q1, d3, 0); - cvCopy(q2, d4, 0); - } - else - { - cvCopy(q3, tmp, 0); - cvCopy(q1, q3, 0); - cvCopy(tmp, q1, 0); - cvCopy(q4, tmp, 0); - cvCopy(q2, q4, 0); - cvCopy(tmp, q2, 0); - } - if(src_arr==dst_arr){ - cvReleaseMat( &tmp ); - } - -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_dft :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - CvMat tmp; - double m,M; - int px,py; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &rgba ); - //cvReleaseImage( &gray ); - cvReleaseImage( &input_re ); - cvReleaseImage( &input_im ); - cvReleaseImage( &input_co ); - cvReleaseMat( &dft_A ); - //cvReleaseImage( &image_re ); - //cvReleaseImage( &image_im ); - //cvReleaseImage( &image_mout ); - //cvReleaseImage( &image_pout ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - input_re = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); - input_im = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); - input_co = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 2); - dft_M = cvGetOptimalDFTSize( image.ysize - 1 ); - dft_N = cvGetOptimalDFTSize( image.xsize - 1 ); - dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); - image_re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); - image_im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); - image_mout = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_8U, 1); - - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor(rgba, gray, CV_BGRA2GRAY); - - if ( x_calculate ) - { - // discrete fourier transform - cvScale(gray, input_re, 1.0, 0.0); - cvZero(input_im); - cvMerge(input_re, input_im, NULL, NULL, input_co); - - // copy A to dft_A and pad dft_A with zeros - cvGetSubRect( dft_A, &tmp, cvRect(0,0, gray->width, gray->height)); - cvCopy( input_co, &tmp, NULL ); - if( dft_A->cols > gray->width ) - { - cvGetSubRect( dft_A, &tmp, cvRect(gray->width,0, dft_A->cols - gray->width, gray->height)); - cvZero( &tmp ); - } - - // no need to pad bottom part of dft_A with zeros because of - // use nonzero_rows parameter in cvDFT() call below - cvDFT( dft_A, dft_A, CV_DXT_FORWARD, input_co->height ); - - // Split Fourier in real and imaginary parts - cvSplit( dft_A, image_re, image_im, 0, 0 ); - - // Compute the magnitude of the spectrum Mag = sqrt(Re^2 + Im^2) - cvPow( image_re, image_re, 2.0); - cvPow( image_im, image_im, 2.0); - cvAdd( image_re, image_im, image_re, NULL); - cvPow( image_re, image_re, 0.5 ); - - // Compute log(1 + Mag) - cvAddS( image_re, cvScalarAll(1.0), image_re, NULL ); // 1 + Mag - cvLog( image_re, image_re ); // log(1 + Mag) - - // Rearrange the quadrants of Fourier image so that the origin is at - // the image center - this->shiftDFT( image_re, image_re ); - - // normalize image - cvMinMaxLoc(image_re, &m, &M, NULL, NULL, NULL); - cvScale(image_re, image_re, 255.0/(M-m), 255.0*(-m)/(M-m)); - - for( py=0; pyheight; py++ ) { - double* ptri = (double*) ( image_re->imageData + py * image_re->widthStep); - unsigned char* ptrp = (unsigned char*) ( image_mout->imageData + py * image_mout->widthStep); - for( px=0; pxwidth; px++ ) { - if ( *(ptrp+px) > 255.0 ) post( "pix_opencv_dft : error value over 255" ); - (*(ptrp+px)) = (unsigned char)( (*(ptri+px)) ); - } - } - - x_calculate=0; - } - - cvCvtColor(image_mout, rgba, CV_GRAY2RGBA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_dft :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - CvMat tmp; - double m,M; - int px,py; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &rgba ); - //cvReleaseImage( &gray ); - cvReleaseImage( &input_re ); - cvReleaseImage( &input_im ); - cvReleaseImage( &input_co ); - cvReleaseMat( &dft_A ); - //cvReleaseImage( &image_re ); - //cvReleaseImage( &image_im ); - //cvReleaseImage( &image_mout ); - //cvReleaseImage( &image_pout ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - input_re = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); - input_im = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); - input_co = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 2); - dft_M = cvGetOptimalDFTSize( image.ysize - 1 ); - dft_N = cvGetOptimalDFTSize( image.xsize - 1 ); - dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); - image_re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); - image_im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); - image_mout = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_8U, 1); - - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor(rgb, gray, CV_BGR2GRAY); - - if ( x_calculate ) - { - // discrete fourier transform - cvScale(gray, input_re, 1.0, 0.0); - cvZero(input_im); - cvMerge(input_re, input_im, NULL, NULL, input_co); - - // copy A to dft_A and pad dft_A with zeros - cvGetSubRect( dft_A, &tmp, cvRect(0,0, gray->width, gray->height)); - cvCopy( input_co, &tmp, NULL ); - if( dft_A->cols > gray->width ) - { - cvGetSubRect( dft_A, &tmp, cvRect(gray->width,0, dft_A->cols - gray->width, gray->height)); - cvZero( &tmp ); - } - - // no need to pad bottom part of dft_A with zeros because of - // use nonzero_rows parameter in cvDFT() call below - cvDFT( dft_A, dft_A, CV_DXT_FORWARD, input_co->height ); - - // Split Fourier in real and imaginary parts - cvSplit( dft_A, image_re, image_im, 0, 0 ); - - // Compute the magnitude of the spectrum Mag = sqrt(Re^2 + Im^2) - cvPow( image_re, image_re, 2.0); - cvPow( image_im, image_im, 2.0); - cvAdd( image_re, image_im, image_re, NULL); - cvPow( image_re, image_re, 0.5 ); - - // Compute log(1 + Mag) - cvAddS( image_re, cvScalarAll(1.0), image_re, NULL ); // 1 + Mag - cvLog( image_re, image_re ); // log(1 + Mag) - - // Rearrange the quadrants of Fourier image so that the origin is at - // the image center - this->shiftDFT( image_re, image_re ); - - // normalize image - cvMinMaxLoc(image_re, &m, &M, NULL, NULL, NULL); - cvScale(image_re, image_re, 255.0/(M-m), 255.0*(-m)/(M-m)); - - for( py=0; pyheight; py++ ) { - double* ptri = (double*) ( image_re->imageData + py * image_re->widthStep); - unsigned char* ptrp = (unsigned char*) ( image_mout->imageData + py * image_mout->widthStep); - for( px=0; pxwidth; px++ ) { - if ( *(ptrp+px) > 255.0 ) post( "pix_opencv_dft : error value over 255" ); - (*(ptrp+px)) = (unsigned char)( (*(ptri+px)) ); - } - } - - x_calculate=0; - } - - cvCvtColor(image_mout, rgb, CV_GRAY2RGB); - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_dft :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_contours_convexity : yuv format not supported" ); -} - -void pix_opencv_dft :: processGrayImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - CvMat tmp; - double m,M; - int px,py; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &rgba ); - //cvReleaseImage( &gray ); - cvReleaseImage( &input_re ); - cvReleaseImage( &input_im ); - cvReleaseImage( &input_co ); - cvReleaseMat( &dft_A ); - //cvReleaseImage( &image_re ); - //cvReleaseImage( &image_im ); - //cvReleaseImage( &image_mout ); - //cvReleaseImage( &image_pout ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - input_re = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); - input_im = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); - input_co = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 2); - dft_M = cvGetOptimalDFTSize( image.ysize - 1 ); - dft_N = cvGetOptimalDFTSize( image.xsize - 1 ); - dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); - image_re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); - image_im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); - image_mout = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_8U, 1); - - } - - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - if ( x_calculate ) - { - // discrete fourier transform - cvScale(gray, input_re, 1.0, 0.0); - cvZero(input_im); - cvMerge(input_re, input_im, NULL, NULL, input_co); - - // copy A to dft_A and pad dft_A with zeros - cvGetSubRect( dft_A, &tmp, cvRect(0,0, gray->width, gray->height)); - cvCopy( input_co, &tmp, NULL ); - if( dft_A->cols > gray->width ) - { - cvGetSubRect( dft_A, &tmp, cvRect(gray->width,0, dft_A->cols - gray->width, gray->height)); - cvZero( &tmp ); - } - - // no need to pad bottom part of dft_A with zeros because of - // use nonzero_rows parameter in cvDFT() call below - cvDFT( dft_A, dft_A, CV_DXT_FORWARD, input_co->height ); - - // Split Fourier in real and imaginary parts - cvSplit( dft_A, image_re, image_im, 0, 0 ); - - // Compute the magnitude of the spectrum Mag = sqrt(Re^2 + Im^2) - cvPow( image_re, image_re, 2.0); - cvPow( image_im, image_im, 2.0); - cvAdd( image_re, image_im, image_re, NULL); - cvPow( image_re, image_re, 0.5 ); - - // Compute log(1 + Mag) - cvAddS( image_re, cvScalarAll(1.0), image_re, NULL ); // 1 + Mag - cvLog( image_re, image_re ); // log(1 + Mag) - - // Rearrange the quadrants of Fourier image so that the origin is at - // the image center - this->shiftDFT( image_re, image_re ); - - // normalize image - cvMinMaxLoc(image_re, &m, &M, NULL, NULL, NULL); - cvScale(image_re, image_re, 255.0/(M-m), 255.0*(-m)/(M-m)); - - for( py=0; pyheight; py++ ) { - double* ptri = (double*) ( image_re->imageData + py * image_re->widthStep); - unsigned char* ptrp = (unsigned char*) ( image_mout->imageData + py * image_mout->widthStep); - for( px=0; pxwidth; px++ ) { - if ( *(ptrp+px) > 255.0 ) post( "pix_opencv_dft : error value over 255" ); - (*(ptrp+px)) = (unsigned char)( (*(ptri+px)) ); - } - } - - x_calculate=0; - } - - memcpy( image.data, image_mout->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_dft :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_dft::calculateCallback, - gensym("bang"), A_NULL); -} - -void pix_opencv_dft :: calculateCallback(void *data) -{ - GetMyClass(data)->x_calculate = 1.0; -} diff --git a/pix_opencv_dft.h b/pix_opencv_dft.h deleted file mode 100644 index 26f1b1e..0000000 --- a/pix_opencv_dft.h +++ /dev/null @@ -1,88 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Discrete Fourier Transform - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_DFT_H_ -#define INCLUDE_PIX_OPENCV_DFT_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_dft - - Discrete Fourier Transform - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_dft : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_dft, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_dft(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_dft(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - int comp_xsize; - int comp_ysize; - int x_calculate; - int dft_M; - int dft_N; - - private: - - ////////// - // Static member functions - static void calculateCallback(void *data); - static void shiftDFT(CvArr*, CvArr*); - - // The output and temporary images - IplImage *rgb; - IplImage *rgba; - IplImage *gray; - IplImage *input_re; - IplImage *input_im; - IplImage *input_co; - CvMat *dft_A; - IplImage *image_re; - IplImage *image_im; - IplImage *image_mout; - -}; - -#endif // for header file diff --git a/pix_opencv_distrans-help.pd b/pix_opencv_distrans-help.pd deleted file mode 100644 index 2068f6f..0000000 --- a/pix_opencv_distrans-help.pd +++ /dev/null @@ -1,162 +0,0 @@ -#N canvas 553 329 1017 532 10; -#X obj 3 62 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 3 16 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 12 20 Arguments:; -#X obj 3 -79 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 8 -117 Class: pix_opencv; -#X text 34 33 none; -#X obj 445 -137 cnv 15 560 520 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 596 197 cnv 15 400 130 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 602 300 pix_opencv_distrans; -#X msg 672 207 voronoi \$1; -#X obj 763 207 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X text 782 207 switch Voronoi diagram mode on/off; -#X text 731 233 use 3x3 mask; -#X text 741 252 use 5x5 mask; -#X text 747 271 use precise distance transform; -#X text 802 298 edge threshold; -#X msg 694 271 mask 0; -#X msg 684 252 mask 5; -#X msg 674 232 mask 3; -#X text 11 68 it's a morphology filter that can be used to preprocess -video frames; -#X text 12 93 written by lluis gomez i bigorda ( lluisgomez@hangar.org -); -#X text 9 -75 pix_opencv_distrans : distance processing; -#X floatatom 755 298 5 0 0 0 - - -; -#X obj 204 302 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 160 260 gemwin; -#X msg 159 207 create \, 1; -#X msg 235 208 destroy; -#X msg 281 180 frame 25; -#X obj 162 170 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 209 346 pd gemwin; -#X msg 209 325 create; -#X text 210 307 Create window and render; -#X obj 687 -125 gemhead; -#X obj 602 329 pix_texture; -#X obj 602 350 square 2; -#X obj 450 329 pix_texture; -#X obj 450 350 square 2; -#X obj 602 155 separator; -#X obj 699 -98 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 756 77 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 738 42 5 0 10000 1 frame# - -; -#X obj 699 -69 openpanel; -#X msg 699 -49 open \$1; -#X obj 687 60 pix_film; -#X msg 705 -6 auto \$1; -#X obj 705 -24 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X msg 800 -23 colorspace RGBA; -#X msg 808 -4 colorspace RGB; -#X msg 820 15 colorspace Grey; -#X obj 800 -51 loadbang; -#X obj 602 136 pix_separator; -#X obj 450 155 separator; -#X obj 450 136 pix_separator; -#X obj 450 173 translateXYZ -2 0 0; -#X obj 602 174 translateXYZ 2 0 0; -#N canvas 1 83 450 300 vswitch 0; -#X obj 36 124 outlet; -#X obj 36 26 inlet; -#X obj 130 29 inlet; -#X obj 175 28 inlet; -#X obj 81 73 == 0; -#X obj 36 93 spigot 1; -#X obj 130 96 spigot 0; -#X connect 1 0 5 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 3 0 6 1; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X restore 450 94 pd vswitch; -#X obj 518 94 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 450 58 pix_video; -#X obj 450 -130 gemhead; -#X msg 489 -5 device 0; -#X msg 498 14 driver 1; -#X msg 475 -44 dialog; -#X msg 480 -24 device /dev/dv1394-0; -#X obj 450 115 pix_rgba; -#X text 9 -133 Synopsis: [pix_opencv_distrans<]; -#X connect 8 0 28 0; -#X connect 9 0 8 0; -#X connect 10 0 9 0; -#X connect 16 0 8 0; -#X connect 17 0 8 0; -#X connect 18 0 8 0; -#X connect 22 0 8 1; -#X connect 24 0 25 0; -#X connect 25 0 24 0; -#X connect 27 0 38 0; -#X connect 28 0 29 0; -#X connect 30 0 31 0; -#X connect 32 0 49 0; -#X connect 33 0 36 0; -#X connect 34 0 35 0; -#X connect 35 0 38 1; -#X connect 36 0 37 0; -#X connect 37 0 38 0; -#X connect 38 0 50 1; -#X connect 38 2 34 0; -#X connect 39 0 38 0; -#X connect 40 0 39 0; -#X connect 41 0 38 0; -#X connect 41 0 52 0; -#X connect 42 0 38 0; -#X connect 43 0 38 0; -#X connect 44 0 41 0; -#X connect 44 0 40 0; -#X connect 45 0 32 0; -#X connect 46 0 48 0; -#X connect 47 0 46 0; -#X connect 48 0 30 0; -#X connect 49 0 8 0; -#X connect 50 0 58 0; -#X connect 51 0 50 2; -#X connect 52 0 50 0; -#X connect 53 0 52 0; -#X connect 54 0 52 0; -#X connect 55 0 52 0; -#X connect 56 0 52 0; -#X connect 57 0 52 0; -#X connect 58 0 47 0; -#X connect 58 0 45 0; diff --git a/pix_opencv_distrans.cc b/pix_opencv_distrans.cc deleted file mode 100644 index a87485d..0000000 --- a/pix_opencv_distrans.cc +++ /dev/null @@ -1,420 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_distrans.h" - -CPPEXTERN_NEW(pix_opencv_distrans) - -///////////////////////////////////////////////////////// -// -// pix_opencv_distrans -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_distrans :: pix_opencv_distrans() -{ - int i; - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); - - edge_thresh = 25; - build_voronoi = 0; - comp_xsize = 0; - comp_ysize = 0; - - dist = NULL; - dist8u1 = NULL; - dist8u2 = NULL; - dist8u = NULL; - dist32s = NULL; - rgb = NULL; - gray = NULL; - edge = NULL; - labels = NULL; - rgba = NULL; - alpha = NULL; - - mask_size = CV_DIST_MASK_PRECISE; - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_distrans :: ~pix_opencv_distrans() -{ - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &edge ); - cvReleaseImage( &dist ); - cvReleaseImage( &dist8u ); - cvReleaseImage( &dist8u1 ); - cvReleaseImage( &dist8u2 ); - cvReleaseImage( &dist32s ); - cvReleaseImage( &labels ); - cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_distrans :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - static const uchar colors[][3] = - { - {0,0,0}, - {255,0,0}, - {255,128,0}, - {255,255,0}, - {0,255,0}, - {0,128,255}, - {0,255,255}, - {0,0,255}, - {255,0,255} - }; - int msize = mask_size; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &edge ); - cvReleaseImage( &dist ); - cvReleaseImage( &dist8u ); - cvReleaseImage( &dist8u1 ); - cvReleaseImage( &dist8u2 ); - cvReleaseImage( &dist32s ); - cvReleaseImage( &labels ); - cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); - dist8u1 = cvCloneImage( gray ); - dist8u2 = cvCloneImage( gray ); - dist8u = cvCreateImage( cvGetSize(gray), IPL_DEPTH_8U, 3 ); - dist32s = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); - edge = cvCloneImage( gray ); - labels = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); - rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - } - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - cvCvtColor(rgba, rgb, CV_RGBA2RGB); - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - cvThreshold( gray, edge, (float)edge_thresh, (float)edge_thresh, CV_THRESH_BINARY ); - - if( build_voronoi ) - msize = CV_DIST_MASK_5; - - cvDistTransform( edge, dist, CV_DIST_L2, msize, NULL, build_voronoi ? labels : NULL ); - - if( !build_voronoi ) - { - // begin "painting" the distance transform result - cvConvertScale( dist, dist, 5000.0, 0 ); - cvPow( dist, dist, 0.5 ); - - cvConvertScale( dist, dist32s, 1.0, 0.5 ); - cvAndS( dist32s, cvScalarAll(255), dist32s, 0 ); - cvConvertScale( dist32s, dist8u1, 1, 0 ); - cvConvertScale( dist32s, dist32s, -1, 0 ); - cvAddS( dist32s, cvScalarAll(255), dist32s, 0 ); - cvConvertScale( dist32s, dist8u2, 1, 0 ); - cvMerge( dist8u1, dist8u2, dist8u2, 0, dist8u ); - // end "painting" the distance transform result - } - else - { - int i, j; - for( i = 0; i < labels->height; i++ ) - { - int* ll = (int*)(labels->imageData + i*labels->widthStep); - float* dd = (float*)(dist->imageData + i*dist->widthStep); - uchar* d = (uchar*)(dist8u->imageData + i*dist8u->widthStep); - for( j = 0; j < labels->width; j++ ) - { - int idx = ll[j] == 0 || dd[j] == 0 ? 0 : (ll[j]-1)%8 + 1; - int b = cvRound(colors[idx][0]); - int g = cvRound(colors[idx][1]); - int r = cvRound(colors[idx][2]); - d[j*3] = (uchar)b; - d[j*3+1] = (uchar)g; - d[j*3+2] = (uchar)r; - } - } - } - - - cvCvtColor(dist8u, rgba, CV_RGB2RGBA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_distrans :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - static const uchar colors[][3] = - { - {0,0,0}, - {255,0,0}, - {255,128,0}, - {255,255,0}, - {0,255,0}, - {0,128,255}, - {0,255,255}, - {0,0,255}, - {255,0,255} - }; - int msize = mask_size; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &edge ); - cvReleaseImage( &dist ); - cvReleaseImage( &dist8u ); - cvReleaseImage( &dist8u1 ); - cvReleaseImage( &dist8u2 ); - cvReleaseImage( &dist32s ); - cvReleaseImage( &labels ); - cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); - dist8u1 = cvCloneImage( gray ); - dist8u2 = cvCloneImage( gray ); - dist8u = cvCreateImage( cvGetSize(gray), IPL_DEPTH_8U, 3 ); - dist32s = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); - edge = cvCloneImage( gray ); - labels = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); - rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - cvCvtColor(rgb, gray, CV_BGR2GRAY); - - cvThreshold( gray, edge, (float)edge_thresh, (float)edge_thresh, CV_THRESH_BINARY ); - - if( build_voronoi ) - msize = CV_DIST_MASK_5; - - cvDistTransform( edge, dist, CV_DIST_L2, msize, NULL, build_voronoi ? labels : NULL ); - - if( !build_voronoi ) - { - // begin "painting" the distance transform result - cvConvertScale( dist, dist, 5000.0, 0 ); - cvPow( dist, dist, 0.5 ); - - cvConvertScale( dist, dist32s, 1.0, 0.5 ); - cvAndS( dist32s, cvScalarAll(255), dist32s, 0 ); - cvConvertScale( dist32s, dist8u1, 1, 0 ); - cvConvertScale( dist32s, dist32s, -1, 0 ); - cvAddS( dist32s, cvScalarAll(255), dist32s, 0 ); - cvConvertScale( dist32s, dist8u2, 1, 0 ); - cvMerge( dist8u1, dist8u2, dist8u2, 0, dist8u ); - // end "painting" the distance transform result - } - else - { - int i, j; - for( i = 0; i < labels->height; i++ ) - { - int* ll = (int*)(labels->imageData + i*labels->widthStep); - float* dd = (float*)(dist->imageData + i*dist->widthStep); - uchar* d = (uchar*)(dist8u->imageData + i*dist8u->widthStep); - for( j = 0; j < labels->width; j++ ) - { - int idx = ll[j] == 0 || dd[j] == 0 ? 0 : (ll[j]-1)%8 + 1; - int b = cvRound(colors[idx][0]); - int g = cvRound(colors[idx][1]); - int r = cvRound(colors[idx][2]); - d[j*3] = (uchar)b; - d[j*3+1] = (uchar)g; - d[j*3+2] = (uchar)r; - } - } - } - - //cvShowImage(wndname, cedge); - memcpy( image.data, dist8u->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_distrans :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_distrans : yuv format not supported" ); -} - -void pix_opencv_distrans :: processGrayImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - static const uchar colors[][3] = - { - {0,0,0}, - {255,0,0}, - {255,128,0}, - {255,255,0}, - {0,255,0}, - {0,128,255}, - {0,255,255}, - {0,0,255}, - {255,0,255} - }; - int msize = mask_size; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &edge ); - cvReleaseImage( &dist ); - cvReleaseImage( &dist8u ); - cvReleaseImage( &dist8u1 ); - cvReleaseImage( &dist8u2 ); - cvReleaseImage( &dist32s ); - cvReleaseImage( &labels ); - cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); - dist8u1 = cvCloneImage( gray ); - dist8u2 = cvCloneImage( gray ); - dist8u = cvCreateImage( cvGetSize(gray), IPL_DEPTH_8U, 3 ); - dist32s = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); - edge = cvCloneImage( gray ); - labels = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); - rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - - cvThreshold( gray, edge, (float)edge_thresh, (float)edge_thresh, CV_THRESH_BINARY ); - - if( build_voronoi ) - msize = CV_DIST_MASK_5; - - cvDistTransform( edge, dist, CV_DIST_L2, msize, NULL, build_voronoi ? labels : NULL ); - - if( !build_voronoi ) - { - // begin "painting" the distance transform result - cvConvertScale( dist, dist, 5000.0, 0 ); - cvPow( dist, dist, 0.5 ); - - cvConvertScale( dist, dist32s, 1.0, 0.5 ); - cvAndS( dist32s, cvScalarAll(255), dist32s, 0 ); - cvConvertScale( dist32s, dist8u1, 1, 0 ); - cvConvertScale( dist32s, dist32s, -1, 0 ); - cvAddS( dist32s, cvScalarAll(255), dist32s, 0 ); - cvConvertScale( dist32s, dist8u2, 1, 0 ); - cvMerge( dist8u1, dist8u2, dist8u2, 0, dist8u ); - // end "painting" the distance transform result - } - else - { - int i, j; - for( i = 0; i < labels->height; i++ ) - { - int* ll = (int*)(labels->imageData + i*labels->widthStep); - float* dd = (float*)(dist->imageData + i*dist->widthStep); - uchar* d = (uchar*)(dist8u->imageData + i*dist8u->widthStep); - for( j = 0; j < labels->width; j++ ) - { - int idx = ll[j] == 0 || dd[j] == 0 ? 0 : (ll[j]-1)%8 + 1; - int b = cvRound(colors[idx][0]); - int g = cvRound(colors[idx][1]); - int r = cvRound(colors[idx][2]); - d[j*3] = (uchar)b; - d[j*3+1] = (uchar)g; - d[j*3+2] = (uchar)r; - } - } - } - - - cvCvtColor(dist8u, gray, CV_RGB2GRAY); - //cvShowImage(wndname, cedge); - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_distrans :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_distrans::thresholdMessCallback, - gensym("ft1"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_distrans::voronoiMessCallback, - gensym("voronoi"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_distrans::maskMessCallback, - gensym("mask"), A_DEFFLOAT, A_NULL); -} -void pix_opencv_distrans :: thresholdMessCallback(void *data, t_floatarg pos) -{ - if (pos>=0) GetMyClass(data)->edge_thresh = (int)pos; -} -void pix_opencv_distrans :: voronoiMessCallback(void *data, t_floatarg voronoi) -{ - GetMyClass(data)->build_voronoi=!(!(int)voronoi); -} -void pix_opencv_distrans :: maskMessCallback(void *data, t_floatarg f) -{ - if( (int)f == 3 ) - GetMyClass(data)->mask_size = CV_DIST_MASK_3; - else if( (int)f == 5 ) - GetMyClass(data)->mask_size = CV_DIST_MASK_5; - else if( (int)f == 0 ) - GetMyClass(data)->mask_size = CV_DIST_MASK_PRECISE; -} diff --git a/pix_opencv_distrans.h b/pix_opencv_distrans.h deleted file mode 100644 index c697aee..0000000 --- a/pix_opencv_distrans.h +++ /dev/null @@ -1,86 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Distrans algorithm - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_DISTRANS_H_ -#define INCLUDE_PIX_OPENCV_DISTRANS_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_distrans - - Distrans algorithm - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_distrans : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_distrans, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_distrans(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_distrans(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - // Some varibales to control mophology voronoi - int edge_thresh; - int build_voronoi; - int mask_size; - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - - private: - - ////////// - // Static member functions - static void thresholdMessCallback(void *data, t_floatarg pos); - static void voronoiMessCallback(void *data, t_floatarg voronoi); - static void maskMessCallback(void *data, t_floatarg f); - - // The output and temporary images - IplImage *dist, *dist8u1, *dist8u2, *dist8u, *dist32s; - IplImage *rgb, *gray, *edge, *labels; - IplImage *rgba, *alpha; - -}; - -#endif // for header file diff --git a/pix_opencv_edge-help.pd b/pix_opencv_edge-help.pd deleted file mode 100644 index c523796..0000000 --- a/pix_opencv_edge-help.pd +++ /dev/null @@ -1,144 +0,0 @@ -#N canvas 353 555 914 465 10; -#X obj 8 158 cnv 15 430 250 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 8 112 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 17 116 Arguments:; -#X obj 7 16 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 38 136 none; -#X obj 444 -41 cnv 15 460 450 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 597 324 cnv 15 300 40 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 604 330 pix_opencv_edge; -#X floatatom 733 329 5 0 0 0 - - -; -#X text 776 328 edge threshold; -#X text 23 165 written by lluis gomez i bigorda ( lluisgomez@hangar.org -); -#X obj 209 334 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 160 260 gemwin; -#X msg 159 207 create \, 1; -#X msg 235 208 destroy; -#X msg 281 180 frame 25; -#X obj 162 170 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 214 378 pd gemwin; -#X msg 214 357 destroy; -#X text 215 339 Create window and render; -#X obj 620 -28 gemhead; -#X obj 604 367 pix_texture; -#X obj 604 385 square 2; -#X obj 453 367 pix_texture; -#X obj 453 385 square 2; -#X obj 604 279 separator; -#X obj 632 -1 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 689 174 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 671 139 5 0 10000 1 frame# - -; -#X obj 632 28 openpanel; -#X msg 632 48 open \$1; -#X obj 620 157 pix_film; -#X msg 638 91 auto \$1; -#X obj 638 73 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X msg 733 74 colorspace RGBA; -#X msg 741 93 colorspace RGB; -#X msg 753 113 colorspace Grey; -#X obj 733 46 loadbang; -#X obj 604 260 pix_separator; -#X obj 453 279 separator; -#X obj 453 260 pix_separator; -#X obj 453 299 translateXYZ -2 0 0; -#X obj 604 299 translateXYZ 2 0 0; -#N canvas 1 83 450 300 vswitch 0; -#X obj 36 117 outlet; -#X obj 36 26 inlet; -#X obj 140 29 inlet; -#X obj 185 28 inlet; -#X obj 81 60 == 0; -#X obj 36 81 spigot 1; -#X obj 140 85 spigot 0; -#X connect 1 0 5 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 3 0 6 1; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X restore 453 207 pd vswitch; -#X obj 521 207 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 453 155 pix_video; -#X obj 453 -33 gemhead; -#X msg 492 80 device 0; -#X msg 501 111 driver 1; -#X msg 478 26 dialog; -#X msg 483 56 device /dev/dv1394-0; -#X obj 453 230 pix_grey; -#X text 16 -4 pix_opencv_edge; -#X text 15 20 edge detection filter; -#X connect 7 0 16 0; -#X connect 8 0 7 1; -#X connect 12 0 13 0; -#X connect 13 0 12 0; -#X connect 15 0 26 0; -#X connect 16 0 17 0; -#X connect 18 0 19 0; -#X connect 20 0 37 0; -#X connect 21 0 24 0; -#X connect 22 0 23 0; -#X connect 23 0 26 1; -#X connect 24 0 25 0; -#X connect 25 0 26 0; -#X connect 26 0 38 1; -#X connect 26 2 22 0; -#X connect 27 0 26 0; -#X connect 28 0 27 0; -#X connect 29 0 26 0; -#X connect 29 0 40 0; -#X connect 30 0 26 0; -#X connect 31 0 26 0; -#X connect 32 0 29 0; -#X connect 32 0 28 0; -#X connect 33 0 20 0; -#X connect 34 0 36 0; -#X connect 35 0 34 0; -#X connect 36 0 18 0; -#X connect 37 0 7 0; -#X connect 38 0 46 0; -#X connect 39 0 38 2; -#X connect 40 0 38 0; -#X connect 41 0 40 0; -#X connect 42 0 40 0; -#X connect 43 0 40 0; -#X connect 44 0 40 0; -#X connect 45 0 40 0; -#X connect 46 0 35 0; -#X connect 46 0 33 0; diff --git a/pix_opencv_edge.cc b/pix_opencv_edge.cc deleted file mode 100644 index 270f233..0000000 --- a/pix_opencv_edge.cc +++ /dev/null @@ -1,234 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_edge.h" - -CPPEXTERN_NEW(pix_opencv_edge) - -///////////////////////////////////////////////////////// -// -// pix_opencv_edge -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_edge :: pix_opencv_edge() -{ - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); - edge_thresh = 50; - comp_xsize = 0; - comp_ysize = 0; - orig = NULL; - gray = NULL; - edge = NULL; - cedge = NULL; - cedgergb = NULL; - rgb = NULL; - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_edge :: ~pix_opencv_edge() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&edge); - cvReleaseImage(&cedge); - cvReleaseImage(&cedgergb); - cvReleaseImage(&rgb); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_edge :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&edge); - cvReleaseImage(&cedge); - cvReleaseImage(&cedgergb); - cvReleaseImage(&rgb); - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - - // Create the output images with new sizes - cedge = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 4); - - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - edge = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to grayscale - cvCvtColor(orig, gray, CV_BGRA2GRAY); - - cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 ); - cvNot( gray, edge ); - - // Run the edge detector on grayscale - cvCanny(gray, edge, (float)this->edge_thresh, (float)this->edge_thresh*3, 3); - - cvZero( cedge ); - // copy edge points - cvCopy( orig, cedge, edge ); - - //copy back the processed frame to image - memcpy( image.data, cedge->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_edge :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&edge); - cvReleaseImage(&cedge); - cvReleaseImage(&cedgergb); - cvReleaseImage(&rgb); - - //create the orig image with new size - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - // Create the output images with new sizes - cedgergb = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - edge = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to grayscale - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 ); - cvNot( gray, edge ); - - // Run the edge detector on grayscale - cvCanny(gray, edge, (float)this->edge_thresh, (float)this->edge_thresh*3, 3); - - cvZero( cedgergb ); - // copy edge points - cvCopy( rgb, cedgergb, edge ); - - //cvShowImage(wndname, cedge); - memcpy( image.data, cedgergb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_edge :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_edge : yuv format not supported" ); -} - -void pix_opencv_edge :: processGrayImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&edge); - cvReleaseImage(&cedge); - cvReleaseImage(&cedgergb); - cvReleaseImage(&rgb); - - //create the orig image with new size - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - - // Create the output images with new sizes - cedgergb = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 3); - - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - edge = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - // Convert to RGB - cvCvtColor( gray, rgb, CV_GRAY2RGB); - - cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 ); - cvNot( gray, edge ); - - // Run the edge detector on grayscale - cvCanny(gray, edge, (float)this->edge_thresh, (float)this->edge_thresh*3, 3); - - cvZero( cedgergb ); - // copy edge points - cvCopy( rgb, cedgergb, edge ); - - cvCvtColor( cedgergb, gray, CV_RGB2GRAY); - //cvShowImage(wndname, cedge); - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_edge :: floatThreshMess (float edge_thresh) -{ - this->edge_thresh = (int)edge_thresh; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_edge :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_edge::floatTreshMessCallback, - gensym("ft1"), A_FLOAT, A_NULL); -} -void pix_opencv_edge :: floatTreshMessCallback(void *data, t_floatarg edge_thresh) -{ - GetMyClass(data)->floatThreshMess((float)edge_thresh); -} diff --git a/pix_opencv_edge.h b/pix_opencv_edge.h deleted file mode 100644 index 5a06ff2..0000000 --- a/pix_opencv_edge.h +++ /dev/null @@ -1,82 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Edge detection - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_EDGE_H_ -#define INCLUDE_PIX_OPENCV_EDGE_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_edge - - Edge detection - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_edge : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_edge, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_edge(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_edge(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatThreshMess(float edge_thresh); - // The new edge threshold - int edge_thresh; - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - ////////// - // Static member functions - static void floatTreshMessCallback(void *data, t_floatarg edge_thresh); - - ///////// - // IplImage needed - IplImage *rgb, *orig, *cedge, *cedgergb, *gray, *edge; - -}; - -#endif // for header file diff --git a/pix_opencv_findchessboardcorners-help.pd b/pix_opencv_findchessboardcorners-help.pd deleted file mode 100644 index 40bc6f1..0000000 --- a/pix_opencv_findchessboardcorners-help.pd +++ /dev/null @@ -1,185 +0,0 @@ -#N canvas 259 316 996 571 10; -#X obj -64 52 cnv 15 430 350 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj -64 6 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text -55 10 Arguments:; -#X obj -65 -90 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text -34 26 none; -#X obj 372 -157 cnv 15 540 560 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 525 238 cnv 15 380 120 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 530 -150 gemhead; -#X obj 531 365 pix_texture; -#X obj 685 161 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 695 205 pd gemwin; -#X msg 695 187 destroy; -#X obj 379 365 pix_texture; -#X obj 531 196 separator; -#X obj 542 -131 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 599 44 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 581 9 5 0 10000 1 frame# - -; -#X obj 542 -102 openpanel; -#X msg 542 -82 open \$1; -#X obj 530 27 pix_film; -#X msg 548 -39 auto \$1; -#X obj 548 -57 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X text 693 167 Create window and render; -#X msg 605 -39 colorspace RGBA; -#X msg 612 -16 colorspace Grey; -#X obj 605 -79 loadbang; -#X obj 531 178 pix_separator; -#X obj 379 196 separator; -#X obj 379 177 pix_separator; -#X obj 379 214 translateXYZ -2 0 0; -#X obj 531 214 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 379 67 pd vswitch; -#X obj 456 67 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 379 -150 gemhead; -#X msg 413 -80 device 0; -#X msg 404 -104 dialog; -#X obj 379 25 pix_video; -#X obj 379 386 square 2; -#X obj 531 387 square 2; -#X obj 531 331 pix_opencv_findchessboardcorners; -#X text -57 -82 pix_opencv_findchessboardcorners :: Search inner corners -coordinates of a known chessboard pattern; -#X text -55 61 It is useful to calibration severals cameras togehter -or camera(s) and video beamer(s)...; -#X obj 379 149 pix_gray; -#X msg 427 -29 driver 0; -#X obj 720 383 print; -#X obj 449 130 spigot; -#X obj 449 149 pix_rgba; -#X obj 379 130 spigot 1; -#X obj 482 108 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X text 499 108 switch gray/color; -#X text 683 363 print out raw corners coordinates...; -#X obj 545 267 pack 6 7; -#X floatatom 545 247 5 0 0 0 - - -; -#X floatatom 598 247 5 0 0 0 - - -; -#X msg 423 -54 device /dev/video0; -#X msg 545 287 patternSize \$1 \$2; -#X text 555 307 pattern size (number of inner corners in each direction) -; -#X obj 424 109 == 0; -#X obj 379 86 pix_resize 640 480; -#X obj 456 45 loadbang; -#X text -58 -110 pix_opencv_findchessboardcorners :; -#X connect 7 0 19 0; -#X connect 8 0 38 0; -#X connect 10 0 11 0; -#X connect 11 0 10 0; -#X connect 12 0 37 0; -#X connect 13 0 30 0; -#X connect 14 0 17 0; -#X connect 15 0 16 0; -#X connect 16 0 19 1; -#X connect 17 0 18 0; -#X connect 18 0 19 0; -#X connect 19 0 31 1; -#X connect 19 2 15 0; -#X connect 20 0 19 0; -#X connect 21 0 20 0; -#X connect 23 0 19 0; -#X connect 23 0 36 0; -#X connect 24 0 19 0; -#X connect 25 0 23 0; -#X connect 25 0 21 0; -#X connect 26 0 13 0; -#X connect 27 0 29 0; -#X connect 28 0 27 0; -#X connect 29 0 12 0; -#X connect 30 0 39 0; -#X connect 31 0 58 0; -#X connect 32 0 31 2; -#X connect 33 0 36 0; -#X connect 34 0 36 0; -#X connect 35 0 36 0; -#X connect 36 0 31 0; -#X connect 39 0 8 0; -#X connect 39 1 44 0; -#X connect 42 0 28 0; -#X connect 42 0 26 0; -#X connect 43 0 36 0; -#X connect 45 0 46 0; -#X connect 46 0 26 0; -#X connect 46 0 28 0; -#X connect 47 0 42 0; -#X connect 48 0 45 1; -#X connect 48 0 57 0; -#X connect 51 0 55 0; -#X connect 52 0 51 0; -#X connect 53 0 51 1; -#X connect 54 0 36 0; -#X connect 55 0 39 0; -#X connect 57 0 47 1; -#X connect 58 0 47 0; -#X connect 58 0 45 0; -#X connect 59 0 32 0; diff --git a/pix_opencv_findchessboardcorners.cc b/pix_opencv_findchessboardcorners.cc deleted file mode 100644 index 8574944..0000000 --- a/pix_opencv_findchessboardcorners.cc +++ /dev/null @@ -1,222 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_findchessboardcorners.h" -#include - -CPPEXTERN_NEW(pix_opencv_findchessboardcorners) - -///////////////////////////////////////////////////////// -// -// pix_opencv_findchessboardcorners -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_findchessboardcorners :: pix_opencv_findchessboardcorners() -{ - //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); - //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); - m_dataout = outlet_new(this->x_obj, 0); - //m_countout = outlet_new(this->x_obj, 0); - comp_xsize = 320; - comp_ysize = 240; - gray = NULL; - tmp_color = NULL; - tmp_gray = NULL; - rgb = NULL; - - pattern_size = cvSize(6,7); - corners = new CvPoint2D32f[pattern_size.width * pattern_size.height]; - cornerCount = 0; - win = cvSize(11, 11); - zero_zone = cvSize(-1,-1); - flags = CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS; - criteria = cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.1); - coord_list = new t_atom[pattern_size.width * pattern_size.height * 2]; // all coordinates are packed in one list [x0 y0 x1 y1 .. xn yn( - - post("pix_opencv_findchessboardcorners by Antoine Villeret"); - post("build on %s at %s", __DATE__, __TIME__); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_findchessboardcorners :: ~pix_opencv_findchessboardcorners() -{ - //Destroy cv_images to clean memory - if (gray) cvReleaseImage(&gray); - if (rgb) cvReleaseImage(&rgb); - if (tmp_color) cvReleaseImage(&tmp_color); - if (tmp_gray) cvReleaseImage(&tmp_gray); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_findchessboardcorners :: processRGBAImage(imageStruct &image) -{ - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if(gray) cvReleaseImage(&gray); - if(rgb) cvReleaseImage(&rgb); - if(tmp_color) cvReleaseImage(&tmp_color); - - // Create images with new sizes - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - tmp_gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - } - - // no need to copy a lot of memory, just point to it... - rgb->imageData = (char*) image.data; - cvCvtColor( rgb, tmp_gray, CV_RGBA2GRAY); - - //~ printf("find corner...*/\n"); - int found = cvFindChessboardCorners( tmp_gray, pattern_size, corners, &cornerCount, flags); - //~ printf(" found : %d\n",found); - - - if ( found ) { - //~ printf("find corner sub pix...\n"); - cvFindCornerSubPix( tmp_gray, corners, cornerCount, win, zero_zone, criteria); - } - - // Draw corners on the image - //cvCvtColor( gray, tmp_color, CV_GRAY2RGBA); - cvDrawChessboardCorners( rgb, pattern_size, corners, cornerCount, found); - //cvCvtColor( tmp_color, gray, CV_RGBA2GRAY); - - // send out corners screen coordinates if all corners have been found - if (found) { - int i; - CvPoint2D32f *pt; - pt = (CvPoint2D32f *) corners; - for ( i=0; ix); - SETFLOAT(&coord_list[i*2+1], pt->y); - pt++; - } - outlet_list( m_dataout, 0, pattern_size.width * pattern_size.height*2, coord_list ); - } -} - -void pix_opencv_findchessboardcorners :: processRGBImage(imageStruct &image) -{ - // TODO - error("cant't support RGB image for now"); -} - -void pix_opencv_findchessboardcorners :: processYUVImage(imageStruct &image) -{ - // TODO - error( "pix_opencv_findchessboardcorners : yuv format not supported" ); -} - -void pix_opencv_findchessboardcorners :: processGrayImage(imageStruct &image) -{ - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!gray)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if(gray) cvReleaseImage(&gray); - if(rgb) cvReleaseImage(&rgb); - if(tmp_color) cvReleaseImage(&tmp_color); - if(tmp_gray) cvReleaseImage(&tmp_gray); - - // Create images with new sizes - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - tmp_color = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - } - - // no need to copy a lot of memory, just point to it... - gray->imageData = (char*) image.data; - //~ printf("find corner...*/\n"); - int found = cvFindChessboardCorners( gray, pattern_size, corners, &cornerCount, flags); - //~ printf(" found : %d\n",found); - - - if ( found ) { - //~ printf("find corner sub pix...\n"); - cvFindCornerSubPix( gray, corners, cornerCount, win, zero_zone, criteria); - } - - // Draw corners on the image - cvCvtColor( gray, tmp_color, CV_GRAY2RGBA); - cvDrawChessboardCorners( tmp_color, pattern_size, corners, cornerCount, found); - cvCvtColor( tmp_color, gray, CV_RGBA2GRAY); - - // send out corners screen coordinates if all corners have been found - if (found) { - int i; - CvPoint2D32f *pt; - pt = (CvPoint2D32f *) corners; - for ( i=0; ix); - SETFLOAT(&coord_list[i*2+1], pt->y); - pt++; - } - outlet_list( m_dataout, 0, pattern_size.width * pattern_size.height*2, coord_list ); - } -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_findchessboardcorners :: patternSizeMess (int xsize, int ysize) -{ - if ( xsize < 3 || ysize < 3 ) { - error("patternSize should be at least 3x3"); - return; - } - pattern_size=cvSize(xsize,ysize); - // update corners array & output list size - delete coord_list; - coord_list = new t_atom[pattern_size.width * pattern_size.height * 2]; - delete corners; - corners = new CvPoint2D32f[pattern_size.width * pattern_size.height]; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_findchessboardcorners :: obj_setupCallback(t_class *classPtr) -{ - // TODO add support for message : win, zero_zone, flags and criteria - class_addmethod(classPtr, (t_method)&pix_opencv_findchessboardcorners::patternSizeMessCallback, - gensym("patternSize"), A_FLOAT, A_FLOAT, A_NULL); -} - -void pix_opencv_findchessboardcorners :: patternSizeMessCallback(void *data, t_floatarg xsize, t_floatarg ysize) -{ - GetMyClass(data)->patternSizeMess((int)xsize, (int)ysize); -} diff --git a/pix_opencv_findchessboardcorners.h b/pix_opencv_findchessboardcorners.h deleted file mode 100644 index 1dba447..0000000 --- a/pix_opencv_findchessboardcorners.h +++ /dev/null @@ -1,98 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Contours Bounding Rectangle detection - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ -// findchessboardcorners integration by Antoine Villeret - 2011 - -#ifndef INCLUDE_PIX_OPENCV_FINDCHESSBOARDCORNERS_H_ -#define INCLUDE_PIX_OPENCV_FINDCHESSBOARDCORNERS_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -#define MAX_MARKERS 500 - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_findchessboardcorners - - Chessboard corners detection - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_findchessboardcorners : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_findchessboardcorners, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_findchessboardcorners(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_findchessboardcorners(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ///////// - // Setup - void patternSizeMess (int xsize, int ysize); - - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - - CvSize pattern_size; // pattern size (inner corners count in 2D) - CvPoint2D32f *corners; // array to store corners coordinates - int cornerCount; // number of corners found - int flags; // flags for cvFindChessboardCorners - CvSize win; // half of the search window size for cvFindCornerSubPix - CvSize zero_zone; // for cvFindCornerSubPix - CvTermCriteria criteria; // for cvFindCornerSubPix - t_atom *coord_list; - - - private: - - t_outlet *m_dataout; - ////////// - // Static member functions - static void patternSizeMessCallback(void *data, t_floatarg xsize, t_floatarg ysize); - - - ///////// - // IplImage needed - IplImage *rgb, *tmp_color, *gray, *tmp_gray; - -}; - -#endif // for header file diff --git a/pix_opencv_floodfill-help.pd b/pix_opencv_floodfill-help.pd deleted file mode 100644 index 4655918..0000000 --- a/pix_opencv_floodfill-help.pd +++ /dev/null @@ -1,209 +0,0 @@ -#N canvas 194 115 986 717 10; -#X obj -177 159 cnv 15 430 520 empty empty empty 20 12 0 14 -233017 --66577 0; -#X obj -177 113 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 --66577 0; -#X text -168 117 Arguments:; -#X obj -177 18 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text -147 137 none; -#X obj 260 -34 cnv 15 520 710 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 30 604 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 112 15 loadbang; -#X msg 62 93 reset; -#X obj 49 135 outlet; -#X msg 107 89 dimen 320 240; -#X obj 107 51 t b b b; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 3 0 2 0; -#X connect 4 0 3 0; -#X connect 4 2 1 0; -#X restore 268 69 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 188 161 dimen 320 240; -#X obj 164 126 t b b b; -#X msg 279 161 frame 25; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 1 9 0; -#X connect 10 2 11 0; -#X connect 11 0 6 0; -#X restore 37 650 pd gemwin; -#X msg 38 628 create; -#X text 38 607 Create window and render; -#X obj 268 273 cnv 15 500 350 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 275 516 pix_opencv_floodfill; -#X text -170 172 used in tracking algorithms as an object selector -; -#X text -172 201 and Yves Degoyon ( ydegoyon@gmail.com ); -#X text -175 23 pdp_opencv_floodfill : mark image components with a -specific color; -#X text -170 187 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -); -#X floatatom 366 468 5 0 0 0 - - -; -#X floatatom 374 489 5 0 0 0 - - -; -#X msg 310 299 mark \$1 \$2; -#X msg 357 448 color \$1; -#X obj 419 449 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X text 445 447 activate color mode ( default : on ); -#X msg 341 374 fillcolor 1 255 0 123; -#X text 479 375 fillcolor of nth component ( 1 < n < 10 ); -#X msg 325 327 delete 1; -#X msg 339 349 clear; -#X text 385 327 delete a component ( 1 <= index <= 10 ); -#X text 388 349 delete all components; -#X text 439 410 set connectivity ( default 4 ); -#X text 408 468 lower tolerance ( default 20 ); -#X text 414 488 upper tolerance ( default 20 ); -#X obj 392 544 route 0 1 2 3 4 5 6 7 8 9; -#X floatatom 392 587 5 0 0 0 - - -; -#X floatatom 428 588 5 0 0 0 - - -; -#X floatatom 464 588 5 0 0 0 - - -; -#X floatatom 500 588 5 0 0 0 - - -; -#X obj 392 565 unpack f f f f; -#X text 394 604 X; -#X text 431 604 Y; -#X text 463 605 Width; -#X text 501 605 Height; -#X text 551 545 detected components; -#X msg 345 399 connectivity 4; -#X msg 347 422 connectivity 8; -#X obj 513 -1 gemhead; -#X obj 275 628 pix_texture; -#X obj 525 26 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 582 201 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 564 166 5 0 10000 1 frame# - -; -#X obj 525 55 openpanel; -#X msg 525 75 open \$1; -#X obj 513 184 pix_film; -#X msg 531 118 auto \$1; -#X obj 531 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X msg 626 101 colorspace RGBA; -#X msg 637 121 colorspace RGB; -#X msg 650 140 colorspace Grey; -#X obj 626 73 loadbang; -#N canvas 2 83 450 300 vswitch 0; -#X obj 36 131 outlet; -#X obj 36 26 inlet; -#X obj 130 26 inlet; -#X obj 175 26 inlet; -#X obj 81 73 == 0; -#X obj 36 93 spigot 1; -#X obj 130 95 spigot 0; -#X connect 1 0 5 0; -#X connect 2 0 6 0; -#X connect 3 0 4 0; -#X connect 3 0 6 1; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X restore 276 214 pd vswitch; -#X obj 344 214 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 276 182 pix_video; -#X obj 276 -6 gemhead; -#X msg 315 107 device 0; -#X msg 324 138 driver 1; -#X msg 301 53 dialog; -#X msg 306 83 device /dev/dv1394-0; -#X obj 275 647 rectangle 5.3 4; -#X text 384 299 mark x y : mark a component; -#X obj 276 252 pix_resize 320 240; -#X obj 276 233 pix_rgba; -#N canvas 1 83 450 300 gemmouse 0; -#X obj 74 28 gemmouse; -#X obj 130 135 f; -#X obj 100 134 f; -#X obj 144 106 t b b; -#X obj 100 162 pack f f; -#X obj 120 56 route 1; -#X msg 141 81 bang; -#X floatatom 22 69 5 0 0 0 - - -; -#X floatatom 70 68 5 0 0 0 - - -; -#X obj 100 185 outlet; -#X connect 0 0 7 0; -#X connect 0 0 2 1; -#X connect 0 1 8 0; -#X connect 0 1 1 1; -#X connect 0 2 5 0; -#X connect 1 0 4 1; -#X connect 2 0 4 0; -#X connect 3 0 2 0; -#X connect 3 1 1 0; -#X connect 4 0 9 0; -#X connect 5 0 6 0; -#X connect 6 0 3 0; -#X restore 310 279 pd gemmouse; -#X connect 7 0 8 0; -#X connect 8 0 7 0; -#X connect 11 0 45 0; -#X connect 11 1 31 0; -#X connect 16 0 11 1; -#X connect 17 0 11 2; -#X connect 18 0 11 0; -#X connect 19 0 11 0; -#X connect 20 0 19 0; -#X connect 22 0 11 0; -#X connect 24 0 11 0; -#X connect 25 0 11 0; -#X connect 31 0 36 0; -#X connect 36 0 32 0; -#X connect 36 1 33 0; -#X connect 36 2 34 0; -#X connect 36 3 35 0; -#X connect 42 0 11 0; -#X connect 43 0 11 0; -#X connect 44 0 51 0; -#X connect 45 0 66 0; -#X connect 46 0 49 0; -#X connect 47 0 48 0; -#X connect 48 0 51 1; -#X connect 49 0 50 0; -#X connect 50 0 51 0; -#X connect 51 0 58 1; -#X connect 51 2 47 0; -#X connect 52 0 51 0; -#X connect 53 0 52 0; -#X connect 54 0 51 0; -#X connect 54 0 60 0; -#X connect 55 0 51 0; -#X connect 56 0 51 0; -#X connect 57 0 54 0; -#X connect 57 0 53 0; -#X connect 58 0 69 0; -#X connect 59 0 58 2; -#X connect 60 0 58 0; -#X connect 61 0 60 0; -#X connect 62 0 60 0; -#X connect 63 0 60 0; -#X connect 64 0 60 0; -#X connect 65 0 60 0; -#X connect 68 0 11 0; -#X connect 69 0 68 0; -#X connect 70 0 18 0; diff --git a/pix_opencv_floodfill.cc b/pix_opencv_floodfill.cc deleted file mode 100644 index f41d3c0..0000000 --- a/pix_opencv_floodfill.cc +++ /dev/null @@ -1,442 +0,0 @@ - -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_floodfill.h" -#include - -CPPEXTERN_NEW(pix_opencv_floodfill) - -///////////////////////////////////////////////////////// -// -// pix_opencv_floodfill -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_floodfill :: pix_opencv_floodfill() -{ - int i; - - comp_xsize=320; - comp_ysize=240; - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("lo_diff")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("up_diff")); - m_dataout = outlet_new(this->x_obj, &s_anything); - - x_lo = 20; - x_up = 20; - x_connectivity = 4; - x_color = 1; - - for ( i=0; icomp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor(rgba, grey, CV_BGRA2GRAY); - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - - // mark recognized components - for ( i=0; iimageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_floodfill :: processRGBImage(imageStruct &image) -{ - int i, k; - int im; - int marked; - CvConnectedComp comp; - int flags = x_connectivity + ( 255 << 8 ) + CV_FLOODFILL_FIXED_RANGE; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - if ( !x_color ) - { - cvCvtColor(rgb, grey, CV_BGR2GRAY); - } - - // mark recognized components - for ( i=0; iimageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_floodfill :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_floodfill : yuv format not supported" ); -} - -void pix_opencv_floodfill :: processGrayImage(imageStruct &image) -{ - int i, k; - int im; - int marked; - CvConnectedComp comp; - int flags = x_connectivity + ( 255 << 8 ) + CV_FLOODFILL_FIXED_RANGE; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - } - - memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - - // mark recognized components - for ( i=0; iimageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_floodfill :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::colorMessCallback, - gensym("color"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::fillcolorMessCallback, - gensym("fillcolor"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::connectivityMessCallback, - gensym("connectivity"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::markMessCallback, - gensym("mark"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::deleteMessCallback, - gensym("delete"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::clearMessCallback, - gensym("clear"), A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::updiffMessCallback, - gensym("up_diff"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::lodiffMessCallback, - gensym("lo_diff"), A_FLOAT, A_NULL); -} - -void pix_opencv_floodfill :: colorMessCallback(void *data, t_floatarg color) -{ - GetMyClass(data)->colorMess((float)color); -} - -void pix_opencv_floodfill :: fillcolorMessCallback(void *data, t_floatarg index, t_floatarg r, t_floatarg g, t_floatarg b) -{ - GetMyClass(data)->fillcolorMess(index, r, g, b); -} - -void pix_opencv_floodfill :: connectivityMessCallback(void *data, t_floatarg connectivity) -{ - GetMyClass(data)->connectivityMess(connectivity); -} - -void pix_opencv_floodfill :: markMessCallback(void *data, t_floatarg px, t_floatarg py) -{ - GetMyClass(data)->markMess(px, py); -} - -void pix_opencv_floodfill :: deleteMessCallback(void *data, t_floatarg index) -{ - GetMyClass(data)->deleteMess((float)index); -} - -void pix_opencv_floodfill :: clearMessCallback(void *data) -{ - GetMyClass(data)->clearMess(); -} - -void pix_opencv_floodfill :: updiffMessCallback(void *data, t_floatarg updiff) -{ - GetMyClass(data)->updiffMess((float)updiff); -} - -void pix_opencv_floodfill :: lodiffMessCallback(void *data, t_floatarg lodiff) -{ - GetMyClass(data)->lodiffMess((float)lodiff); -} - -void pix_opencv_floodfill :: colorMess(float color) -{ - if ( ( (int)color == 0 ) || ( (int)color == 1 ) ) - { - x_color = (int)color; - } -} - -void pix_opencv_floodfill :: fillcolorMess(float index, float r, float g, float b) -{ - if ( ( (int)index <= 0 ) || ( (int)index > MAX_COMPONENTS ) ) - { - post( "pix_opencv_floodfill : wrong color index : %d", (int)index ); - return; - } - - if ( ( (int)r >= 0 ) || ( (int)r <= 255 ) ) - { - x_r[(int)index-1] = (int)r; - } - - if ( ( (int)g >= 0 ) || ( (int)g <= 255 ) ) - { - x_g[(int)index-1] = (int)g; - } - - if ( ( (int)b >= 0 ) || ( (int)b <= 255 ) ) - { - x_b[(int)index-1] = (int)b; - } -} - -void pix_opencv_floodfill :: connectivityMess(float connectivity) -{ - if ( ( connectivity != 4.0 ) && ( connectivity != 8.0 ) ) - { - return; - } - - x_connectivity = (int)connectivity; -} - -void pix_opencv_floodfill :: markMess(float fpx, float fpy) -{ - int i; - int inserted; - int px, py; - - if ( ( fpx < 0.0 ) || ( fpx > comp_xsize ) || ( fpy < 0.0 ) || ( fpy > comp_ysize ) ) - { - return; - } - - px = (int)fpx; - //py = comp_ysize-(int)fpy; - py = (int)fpy; - inserted = 0; - for ( i=0; i MAX_COMPONENTS ) ) - { - return; - } - - x_xcomp[(int)index-1] = -1; - x_ycomp[(int)index-1] = -1; - -} - -void pix_opencv_floodfill :: clearMess(void) -{ - int i; - - for ( i=0; i= 0 ) && ( (int)updiff <= 255 ) ) - { - x_up = (int)updiff; - } -} - -void pix_opencv_floodfill :: lodiffMess(float lodiff) -{ - if ( ( (int)lodiff >= 0 ) && ( (int)lodiff <= 255 ) ) - { - x_lo = (int)lodiff; - } -} diff --git a/pix_opencv_floodfill.h b/pix_opencv_floodfill.h deleted file mode 100644 index 9653666..0000000 --- a/pix_opencv_floodfill.h +++ /dev/null @@ -1,111 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Color blob tracker - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_FLOODFILL_H_ -#define INCLUDE_PIX_OPENCV_FLOODFILL_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -#define MAX_COMPONENTS 10 - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_floodfill - - Color blob tracker - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_floodfill : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_floodfill, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_floodfill(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_floodfill(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - void colorMess(float color); - void fillcolorMess(float index, float r, float g, float b); - void connectivityMess(float connectivity); - void markMess(float px, float py); - void deleteMess(float index); - void clearMess(void); - void updiffMess(float updiff); - void lodiffMess(float lodiff); - - int comp_xsize; - int comp_ysize; - - t_outlet *m_dataout; - t_atom x_list[5]; - - int x_up; - int x_lo; - int x_connectivity; - int x_color; - - - private: - - ////////// - // Static member functions - static void colorMessCallback(void *data, float color); - static void fillcolorMessCallback(void *data, float index, float r, float g, float b); - static void connectivityMessCallback(void *data, float connectivity); - static void markMessCallback(void *data, float px, float py); - static void deleteMessCallback(void *data, float index); - static void clearMessCallback(void *data); - static void updiffMessCallback(void *data, float updiff); - static void lodiffMessCallback(void *data, float lodiff); - - // Internal Open CV data - // tracked components - int x_xcomp[MAX_COMPONENTS]; - int x_ycomp[MAX_COMPONENTS]; - - // fill color - int x_r[MAX_COMPONENTS]; - int x_g[MAX_COMPONENTS]; - int x_b[MAX_COMPONENTS]; - - IplImage *rgba, *rgb, *grey; - -}; - -#endif // for header file diff --git a/pix_opencv_haarcascade-help.pd b/pix_opencv_haarcascade-help.pd deleted file mode 100644 index 43f62cc..0000000 --- a/pix_opencv_haarcascade-help.pd +++ /dev/null @@ -1,204 +0,0 @@ -#N canvas 428 140 1265 709 10; -#X obj 5 12 cnv 15 430 500 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 5 -34 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 14 -30 Arguments:; -#X obj 5 -129 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 35 -10 none; -#X obj 441 -187 cnv 15 810 700 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 595 165 cnv 15 650 300 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X floatatom 727 448 5 0 0 0 - - -; -#X floatatom 762 448 5 0 0 0 - - -; -#X floatatom 799 448 5 0 0 0 - - -; -#X obj 598 370 pix_opencv_haarcascade; -#X obj 684 169 openpanel; -#X obj 727 410 route 0 1 2 3 4; -#X text 840 449 Xcenter Ycenter Radius; -#X obj 727 429 unpack 0 0 0; -#X msg 624 170 load \$1; -#X text 774 171 Load a trained cascade classifier from XML file; -#X obj 754 169 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X floatatom 791 266 5 0 0 0 - - -; -#X floatatom 745 237 5 0 0 0 - - -; -#X msg 644 203 mode \$1; -#X obj 705 203 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 654 236 min_size \$1; -#X msg 668 263 min_neighbors \$1; -#X text 829 255 Minimum number (minus 1) of neighbor rectangles that -makes up an object (default 2); -#X msg 697 296 scale_factor \$1; -#X floatatom 815 296 5 0 0 0 - - -; -#X text 852 290 The factor by which the search window is scaled between -the subsequent scans (default 1.1); -#X text 825 411 For each object detected; -#X floatatom 662 391 5 0 0 0 - - -; -#X text 701 391 number of objects detected; -#X text 786 238 Minimum size of object (default 30); -#X msg 725 325 ftolerance \$1; -#X floatatom 815 326 5 0 0 0 - - -; -#X msg 730 349 clear; -#X text 856 333 temporarily ( default 5 ); -#X text 856 321 number of frames where an object can disappear; -#X text 775 350 clear markers history; -#X text 727 200 Mode of operation. Currently the only flag that may -be specified is CV_HAAR_DO_CANNY_PRUNING ( 0 ); -#X text 16 22 This object considers a contour to be analyzed any group -of white pixels in a black background \, for this reason you will find -useful to use pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect. -; -#X text 17 75 pix_opencv_contours_convexhull works detecting the bigest -white area in the input image \, sometimes you will need to use pix_opencv_morphology -to transform the contours of the shape to be analyzed..; -#X text 13 -120 pix_opencv_contours_convexhull :: Finds convexhull -of the bigest contour of a binary image.; -#X obj 633 -174 gemhead; -#X obj 598 469 pix_texture; -#X obj 598 488 square 2; -#X obj 1025 432 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 --66577 0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 1035 476 pd gemwin; -#X msg 1035 458 create; -#X obj 446 470 pix_texture; -#X obj 446 489 square 2; -#X obj 598 106 separator; -#X obj 645 -147 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 702 28 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 684 -7 5 0 10000 1 frame# - -; -#X obj 645 -118 openpanel; -#X msg 645 -98 open \$1; -#X obj 633 11 pix_film; -#X msg 651 -55 auto \$1; -#X obj 651 -73 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X text 1033 438 Create window and render; -#X msg 746 -72 colorspace RGBA; -#X msg 764 -52 colorspace RGB; -#X msg 783 -33 colorspace Grey; -#X obj 746 -100 loadbang; -#X obj 598 87 pix_separator; -#X obj 446 109 separator; -#X obj 446 90 pix_separator; -#X obj 446 128 translateXYZ -2 0 0; -#X obj 598 125 translateXYZ 2 0 0; -#N canvas 1 83 450 300 vswitch 0; -#X obj 36 237 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 399 34 inlet; -#X obj 36 133 spigot 1; -#X obj 260 141 spigot 0; -#X obj 81 108 == 0; -#X connect 1 0 4 0; -#X connect 2 0 5 0; -#X connect 3 0 6 0; -#X connect 3 0 5 1; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 4 1; -#X restore 446 41 pd vswitch; -#X obj 514 41 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 446 9 pix_video; -#X obj 446 -179 gemhead; -#X msg 485 -66 device 0; -#X msg 494 -35 driver 1; -#X msg 471 -120 dialog; -#X msg 476 -90 device /dev/dv1394-0; -#X obj 598 144 pix_resize 320 240; -#X obj 446 60 pix_rgba; -#X connect 10 0 43 0; -#X connect 10 1 29 0; -#X connect 10 2 12 0; -#X connect 11 0 15 0; -#X connect 12 0 14 0; -#X connect 14 0 7 0; -#X connect 14 1 8 0; -#X connect 14 2 9 0; -#X connect 15 0 10 0; -#X connect 17 0 11 0; -#X connect 18 0 23 0; -#X connect 19 0 22 0; -#X connect 20 0 10 0; -#X connect 21 0 20 0; -#X connect 22 0 10 0; -#X connect 23 0 10 0; -#X connect 25 0 10 0; -#X connect 26 0 25 0; -#X connect 32 0 10 0; -#X connect 33 0 32 0; -#X connect 34 0 10 0; -#X connect 42 0 56 0; -#X connect 43 0 44 0; -#X connect 46 0 47 0; -#X connect 47 0 46 0; -#X connect 48 0 49 0; -#X connect 50 0 68 0; -#X connect 51 0 54 0; -#X connect 52 0 53 0; -#X connect 53 0 56 1; -#X connect 54 0 55 0; -#X connect 55 0 56 0; -#X connect 56 0 69 1; -#X connect 56 2 52 0; -#X connect 57 0 56 0; -#X connect 58 0 57 0; -#X connect 60 0 56 0; -#X connect 60 0 71 0; -#X connect 61 0 56 0; -#X connect 62 0 56 0; -#X connect 63 0 60 0; -#X connect 63 0 58 0; -#X connect 64 0 50 0; -#X connect 65 0 67 0; -#X connect 66 0 65 0; -#X connect 67 0 48 0; -#X connect 68 0 77 0; -#X connect 69 0 78 0; -#X connect 70 0 69 2; -#X connect 71 0 69 0; -#X connect 72 0 71 0; -#X connect 73 0 71 0; -#X connect 74 0 71 0; -#X connect 75 0 71 0; -#X connect 76 0 71 0; -#X connect 77 0 10 0; -#X connect 78 0 66 0; -#X connect 78 0 64 0; diff --git a/pix_opencv_haarcascade.cc b/pix_opencv_haarcascade.cc deleted file mode 100644 index baf2f0d..0000000 --- a/pix_opencv_haarcascade.cc +++ /dev/null @@ -1,526 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_haarcascade.h" -#include -#include - -CPPEXTERN_NEW(pix_opencv_haarcascade) - -///////////////////////////////////////////////////////// -// -// pix_opencv_haarcascade -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_haarcascade :: pix_opencv_haarcascade() -{ - int i; - - m_numout = outlet_new(this->x_obj, 0); - m_dataout = outlet_new(this->x_obj, 0); - - scale_factor = 1.1; - min_neighbors = 2; - mode = 0; - min_size = 30; - - comp_xsize = 0; - comp_ysize = 0; - rgba = NULL; - grey = NULL; - frame = NULL; - x_ftolerance = 5; - - for ( i=0; icomp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&grey); - cvReleaseImage(&frame); - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - frame = cvCreateImage(cvSize(rgba->width,rgba->height), IPL_DEPTH_8U, 3); - grey = cvCreateImage( cvSize(rgba->width,rgba->height), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - CvMemStorage* storage = cvCreateMemStorage(0); - - static CvScalar colors[] = - { - {{0,0,255}}, - {{0,128,255}}, - {{0,255,255}}, - {{0,255,0}}, - {{255,128,0}}, - {{255,255,0}}, - {{255,0,0}}, - {{255,0,255}} - }; - - int i, im; - - if( cascade ) - { - CvSeq* faces = cvHaarDetectObjects( rgba, cascade, storage, - scale_factor, min_neighbors, mode, cvSize(min_size, min_size) ); - - if ( faces && (faces->total > 0 ) ) - outlet_float(this->m_numout, (float)faces->total); - else - outlet_float(this->m_numout, 0.0); - - for ( im=0; imx_xmark[im] != -1.0 ) - { - this->x_found[im]--; - } - } - - for( i = 0; i < (faces ? faces->total : 0); i++ ) - { - int oi, found; - - CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); - CvPoint center; - int radius; - center.x = cvRound((r->x + r->width*0.5)*scale); - center.y = cvRound((r->y + r->height*0.5)*scale); - radius = cvRound((r->width + r->height)*0.25*scale); - - found = 0; - oi = -1; - for ( im=0; imx_xmark[im], 2 ) + pow(center.y - this->x_ymark[im], 2 ) ) <= radius ) - { - oi=im; - found=1; - this->x_found[im] = this->x_ftolerance; - this->x_xmark[im] = center.x; - this->x_ymark[im] = center.y; - break; - } - } - // new object detected - if ( !found ) - { - oi = this->mark(center.x, center.y ); - } - - char tindex[4]; - sprintf( tindex, "%d", oi ); - cvCircle( rgba, center, radius, colors[oi%8], 3, 8, 0 ); - cvPutText( rgba, tindex, center, &this->font, CV_RGB(255,255,255)); - - SETFLOAT(&this->rlist[0], oi); - SETFLOAT(&this->rlist[1], center.x); - SETFLOAT(&this->rlist[2], center.y); - SETFLOAT(&this->rlist[3], radius); - outlet_list( m_dataout, 0, 4, this->rlist ); - } - // delete lost objects - for ( im=0; imx_found[im] < 0 ) - { - this->x_xmark[im] = -1.0; - this->x_ymark[im] = -1,0; - this->x_found[im] = this->x_ftolerance; - } - } - - } - - cvReleaseMemStorage( &storage ); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_haarcascade :: processRGBImage(imageStruct &image) -{ - double scale = 1; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!frame)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&grey); - cvReleaseImage(&frame); - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - frame = cvCreateImage(cvSize(rgba->width,rgba->height), IPL_DEPTH_8U, 3); - grey = cvCreateImage( cvSize(rgba->width,rgba->height), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( frame->imageData, image.data, image.xsize*image.ysize*3 ); - CvMemStorage* storage = cvCreateMemStorage(0); - - static CvScalar colors[] = - { - {{0,0,255}}, - {{0,128,255}}, - {{0,255,255}}, - {{0,255,0}}, - {{255,128,0}}, - {{255,255,0}}, - {{255,0,0}}, - {{255,0,255}} - }; - - int i, im; - - if( cascade ) - { - CvSeq* faces = cvHaarDetectObjects( frame, cascade, storage, - 1.1, 2, 0, cvSize(30, 30) ); - - if ( faces && (faces->total > 0 ) ) - outlet_float(this->m_numout, (float)faces->total); - else - outlet_float(this->m_numout, 0.0); - - for ( im=0; imx_xmark[im] != -1.0 ) - { - this->x_found[im]--; - } - } - - for( i = 0; i < (faces ? faces->total : 0); i++ ) - { - int oi, found; - - CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); - CvPoint center; - int radius; - center.x = cvRound((r->x + r->width*0.5)*scale); - center.y = cvRound((r->y + r->height*0.5)*scale); - radius = cvRound((r->width + r->height)*0.25*scale); - - found = 0; - oi = -1; - for ( im=0; imx_xmark[im], 2 ) + pow(center.y - this->x_ymark[im], 2 ) ) <= radius ) - { - oi=im; - found=1; - this->x_found[im] = this->x_ftolerance; - this->x_xmark[im] = center.x; - this->x_ymark[im] = center.y; - break; - } - } - // new object detected - if ( !found ) - { - oi = this->mark(center.x, center.y ); - } - - char tindex[4]; - sprintf( tindex, "%d", oi ); - cvCircle( frame, center, radius, colors[oi%8], 3, 8, 0 ); - cvPutText( frame, tindex, center, &this->font, CV_RGB(255,255,255)); - - SETFLOAT(&this->rlist[0], oi); - SETFLOAT(&this->rlist[1], center.x); - SETFLOAT(&this->rlist[2], center.y); - SETFLOAT(&this->rlist[3], radius); - outlet_list( m_dataout, 0, 4, this->rlist ); - } - // delete lost objects - for ( im=0; imx_found[im] < 0 ) - { - this->x_xmark[im] = -1.0; - this->x_ymark[im] = -1,0; - this->x_found[im] = this->x_ftolerance; - } - } - } - - cvReleaseMemStorage( &storage ); - memcpy( image.data, frame->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_haarcascade :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_haarcascade : yuv format not supported" ); -} - -void pix_opencv_haarcascade :: processGrayImage(imageStruct &image) -{ - double scale = 1; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!grey)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&grey); - cvReleaseImage(&frame); - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - frame = cvCreateImage(cvSize(rgba->width,rgba->height), IPL_DEPTH_8U, 3); - grey = cvCreateImage( cvSize(rgba->width,rgba->height), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - CvMemStorage* storage = cvCreateMemStorage(0); - - static CvScalar colors[] = - { - {{0,0,255}}, - {{0,128,255}}, - {{0,255,255}}, - {{0,255,0}}, - {{255,128,0}}, - {{255,255,0}}, - {{255,0,0}}, - {{255,0,255}} - }; - - int i; - - if( cascade ) - { - CvSeq* faces = cvHaarDetectObjects( grey, cascade, storage, - 1.1, 2, 0, cvSize(30, 30) ); - for( i = 0; i < (faces ? faces->total : 0); i++ ) - { - CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); - CvPoint center; - int radius; - center.x = cvRound((r->x + r->width*0.5)*scale); - center.y = cvRound((r->y + r->height*0.5)*scale); - radius = cvRound((r->width + r->height)*0.25*scale); - cvCircle( grey, center, radius, colors[i%8], 3, 8, 0 ); - - t_atom rlist[4]; - SETFLOAT(&rlist[0], i); - SETFLOAT(&rlist[1], center.x); - SETFLOAT(&rlist[2], center.y); - SETFLOAT(&rlist[3], radius); - outlet_list( m_dataout, 0, 4, rlist ); - } - } - - - cvReleaseMemStorage( &storage ); - //cvShowImage(wndname, cedge); - memcpy( image.data, grey->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// scaleFactorMess -// -///////////////////////////////////////////////////////// -void pix_opencv_haarcascade :: scaleFactorMess (float scale_factor) -{ - this->scale_factor = scale_factor; -} - -///////////////////////////////////////////////////////// -// minNeighborsMess -// -///////////////////////////////////////////////////////// -void pix_opencv_haarcascade :: minNeighborsMess (float min_neighbors) -{ - this->min_neighbors = (int)min_neighbors; -} - -///////////////////////////////////////////////////////// -// modeMess -// -///////////////////////////////////////////////////////// -void pix_opencv_haarcascade :: modeMess (float mode) -{ - this->mode = !(!(int)mode); -} - -///////////////////////////////////////////////////////// -// minSizeMess -// -///////////////////////////////////////////////////////// -void pix_opencv_haarcascade :: minSizeMess (float min_size) -{ - this->min_size = (int)min_size; -} - -///////////////////////////////////////////////////////// -// fToleranceMess -// -///////////////////////////////////////////////////////// -void pix_opencv_haarcascade :: fToleranceMess (float ftolerance) -{ - this->x_ftolerance = (int)ftolerance; -} - -///////////////////////////////////////////////////////// -// clearMess -// -///////////////////////////////////////////////////////// -void pix_opencv_haarcascade :: clearMess (void) -{ - int i; - - for ( i=0; ix_xmark[i] = -1; - this->x_ymark[i] = -1; - this->x_found[i] = this->x_ftolerance; - } -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_haarcascade :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::scaleFactorMessCallback, - gensym("scale_factor"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::minNeighborsMessCallback, - gensym("min_neighbors"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::modeMessCallback, - gensym("mode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::minSizeMessCallback, - gensym("min_size"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::loadCascadeMessCallback, - gensym("load"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::fToleranceMessCallback, - gensym("ftolerance"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::clearMessCallback, - gensym("clear"), A_NULL); -} -void pix_opencv_haarcascade :: scaleFactorMessCallback(void *data, t_floatarg scale_factor) -{ - if (scale_factor>1) GetMyClass(data)->scaleFactorMess((float)scale_factor); -} -void pix_opencv_haarcascade :: minNeighborsMessCallback(void *data, t_floatarg min_neighbors) -{ - if (min_neighbors>=1) GetMyClass(data)->minNeighborsMess((float)min_neighbors); -} -void pix_opencv_haarcascade :: modeMessCallback(void *data, t_floatarg mode) -{ - if ((mode==0)||(mode==1)) GetMyClass(data)->modeMess((float)mode); -} -void pix_opencv_haarcascade :: minSizeMessCallback(void *data, t_floatarg min_size) -{ - if (min_size>1) GetMyClass(data)->minSizeMess((float)min_size); -} -void pix_opencv_haarcascade :: fToleranceMessCallback(void *data, t_floatarg ftolerance) -{ - if (ftolerance>1) GetMyClass(data)->fToleranceMess((float)ftolerance); -} -void pix_opencv_haarcascade :: clearMessCallback(void *data) -{ - GetMyClass(data)->clearMess(); -} -void pix_opencv_haarcascade :: loadCascadeMessCallback(void *data, t_symbol* filename) -{ - GetMyClass(data)->loadCascadeMess(filename); -} -void pix_opencv_haarcascade :: loadCascadeMess(t_symbol *filename) -{ - cascade = (CvHaarClassifierCascade*)cvLoad( filename->s_name, 0, 0, 0 ); - if( !cascade ) - { - post( "ERROR: Could not load classifier cascade" ); - } - else post( "Loaded classifier cascade from %s", filename->s_name ); -} -int pix_opencv_haarcascade :: mark(float fx, float fy ) -{ - int i; - - if ( ( fx < 0.0 ) || ( fx > this->rgba->width ) || ( fy < 0 ) || ( fy > this->rgba->height ) ) - { - return -1; - } - - for ( i=0; ix_xmark[i] == -1 ) - { - this->x_xmark[i] = (int)fx; - this->x_ymark[i] = (int)fy; - this->x_found[i] = this->x_ftolerance; - return i; - } - } - - post( "pix_opencv_haarcascade : max markers reached" ); - return -1; -} diff --git a/pix_opencv_haarcascade.h b/pix_opencv_haarcascade.h deleted file mode 100644 index 6c9c5de..0000000 --- a/pix_opencv_haarcascade.h +++ /dev/null @@ -1,113 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Trained classifier using Haar's cascade - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_HAARSCASCADE_H_ -#define INCLUDE_PIX_OPENCV_HAARSCASCADE_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/objdetect/objdetect.hpp" -#endif - -#include "Base/GemPixObj.h" - -#define MAX_MARKERS 50 - -const char* cascade_name ="./haarcascade_frontalface_alt.xml"; - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_haarcascade - - Trained classifier using Haar's cascade - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_haarcascade : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_haarcascade, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_haarcascade(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_haarcascade(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void scaleFactorMess(float scale_factor); - void minNeighborsMess(float min_neighbors); - void modeMess(float mode); - void minSizeMess(float min_size); - void loadCascadeMess(t_symbol *filename); - void fToleranceMess(float ftolerance); - void clearMess(void); - int mark(float fx, float fy ); - // The parameters for cvHaarDetectObjects function - float scale_factor; - int min_neighbors; - int mode; - int min_size; - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - t_atom rlist[4]; - // marked objects history - int x_xmark[MAX_MARKERS]; - int x_ymark[MAX_MARKERS]; - int x_found[MAX_MARKERS]; - int x_ftolerance; - - private: - - ////////// - // Static member functions - static void scaleFactorMessCallback(void *data, t_floatarg scale_factor); - static void minNeighborsMessCallback(void *data, float min_neighbors); - static void modeMessCallback(void *data, float mode); - static void minSizeMessCallback(void *data, float min_size); - static void loadCascadeMessCallback(void *data, t_symbol* filename); - static void fToleranceMessCallback(void *data, float ftolerance); - static void clearMessCallback(void *data); - - CvHaarClassifierCascade* cascade; - CvFont font; - ///////// - // IplImage needed - IplImage *rgba, *frame, *grey; - - t_outlet *m_numout; - t_outlet *m_dataout; -}; - -#endif // for header file diff --git a/pix_opencv_hist_compare-help.pd b/pix_opencv_hist_compare-help.pd deleted file mode 100644 index 3ad5c2a..0000000 --- a/pix_opencv_hist_compare-help.pd +++ /dev/null @@ -1,168 +0,0 @@ -#N canvas 624 471 1101 564 10; -#X obj 5 20 cnv 15 430 350 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 5 -26 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 14 -22 Arguments:; -#X obj 5 -121 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 35 -2 none; -#X obj 447 -179 cnv 15 650 550 empty empty empty 20 12 0 14 -228992 --66577 0; -#X obj 589 143 cnv 15 500 180 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 678 148 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 --1 -1 0; -#X text 761 147 save an histogram at position nth ( 0 <= n <= 80 ) -; -#X floatatom 682 279 5 0 0 0 - - -; -#X obj 744 204 unpack f f f f f; -#X text 837 239 nearest to 1 is the winner; -#X text 718 280 closest histogram (winner); -#X obj 744 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144 --1 -1 0 1; -#X obj 767 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144 --1 -1 0 1; -#X obj 790 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144 --1 -1 0 1; -#X obj 813 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144 --1 -1 0 1; -#X text 836 228 matching measure with stored histograms; -#X obj 603 173 pix_opencv_hist_compare; -#X obj 688 -169 gemhead; -#X obj 603 331 pix_texture; -#X obj 603 350 square 2; -#X obj 869 289 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 879 333 pd gemwin; -#X msg 879 315 create; -#X obj 451 331 pix_texture; -#X obj 451 352 square 2; -#X obj 603 105 separator; -#X obj 700 -142 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 757 33 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 739 -2 5 0 10000 1 frame# - -; -#X obj 700 -113 openpanel; -#X msg 700 -93 open \$1; -#X obj 688 16 pix_film; -#X msg 706 -50 auto \$1; -#X obj 706 -68 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X text 877 295 Create window and render; -#X msg 801 -67 colorspace RGBA; -#X msg 812 -46 colorspace RGB; -#X msg 824 -25 colorspace Grey; -#X obj 801 -95 loadbang; -#X obj 603 86 pix_separator; -#X obj 451 106 separator; -#X obj 451 87 pix_separator; -#X obj 603 123 translateXYZ 2 0 0; -#N canvas 1 83 450 300 vswitch 0; -#X obj 36 214 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 399 34 inlet; -#X obj 36 133 spigot 1; -#X obj 260 141 spigot 0; -#X obj 81 111 == 0; -#X connect 1 0 4 0; -#X connect 2 0 5 0; -#X connect 3 0 6 0; -#X connect 3 0 5 1; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 4 1; -#X restore 451 38 pd vswitch; -#X obj 519 38 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 451 -174 gemhead; -#X msg 490 -61 device 0; -#X msg 499 -30 driver 1; -#X msg 476 -115 dialog; -#X msg 481 -85 device /dev/dv1394-0; -#X text 13 27 record histograms of specific situations; -#X text 15 39 the object will recognize the situations if they occur -again; -#X text 15 53 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -); -#X text 14 -114 pix_opencv_hist_compare : image recognition using histograms -; -#X obj 451 58 pix_rgba; -#X obj 451 14 pix_video; -#X obj 451 124 translateXYZ -2 0 0; -#X connect 7 0 18 1; -#X connect 10 0 13 0; -#X connect 10 1 14 0; -#X connect 10 2 15 0; -#X connect 10 3 16 0; -#X connect 18 0 20 0; -#X connect 18 1 9 0; -#X connect 18 2 10 0; -#X connect 19 0 33 0; -#X connect 20 0 21 0; -#X connect 23 0 24 0; -#X connect 24 0 23 0; -#X connect 25 0 26 0; -#X connect 27 0 44 0; -#X connect 28 0 31 0; -#X connect 29 0 30 0; -#X connect 30 0 33 1; -#X connect 31 0 32 0; -#X connect 32 0 33 0; -#X connect 33 0 45 1; -#X connect 33 2 29 0; -#X connect 34 0 33 0; -#X connect 35 0 34 0; -#X connect 37 0 33 0; -#X connect 37 0 57 0; -#X connect 38 0 33 0; -#X connect 39 0 33 0; -#X connect 40 0 37 0; -#X connect 40 0 35 0; -#X connect 41 0 27 0; -#X connect 42 0 58 0; -#X connect 43 0 42 0; -#X connect 44 0 18 0; -#X connect 45 0 56 0; -#X connect 46 0 45 2; -#X connect 47 0 57 0; -#X connect 48 0 57 0; -#X connect 49 0 57 0; -#X connect 50 0 57 0; -#X connect 51 0 57 0; -#X connect 56 0 43 0; -#X connect 56 0 41 0; -#X connect 57 0 45 0; -#X connect 58 0 25 0; diff --git a/pix_opencv_hist_compare.cc b/pix_opencv_hist_compare.cc deleted file mode 100644 index ccdb50c..0000000 --- a/pix_opencv_hist_compare.cc +++ /dev/null @@ -1,533 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_hist_compare.h" - -CPPEXTERN_NEW(pix_opencv_hist_compare) - -///////////////////////////////////////////////////////// -// -// pix_opencv_hist_compare -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_hist_compare :: pix_opencv_hist_compare() -{ - int i; - - comp_xsize=320; - comp_ysize=240; - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("save")); - m_dataout = outlet_new(this->x_obj, &s_anything); - m_measureout = outlet_new(this->x_obj, &s_anything); - - save_now = 0; - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grey = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3 ); - - h_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - s_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - v_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - planes[0] = h_plane; - planes[1] = s_plane; - h_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - s_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - v_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - saved_planes[0] = h_saved_plane; - saved_planes[1] = s_saved_plane; - - int h_bins = (int)(comp_xsize/10), s_bins = (int)(comp_ysize/10); - { - int hist_size[] = { h_bins, s_bins }; - float h_ranges[] = { 0, 180 }; // hue is [0,180] - float s_ranges[] = { 0, 255 }; - float* ranges[] = { h_ranges, s_ranges }; - hist = cvCreateHist( - 2, - hist_size, - CV_HIST_ARRAY, - ranges, - 1 - ); - int n; - for (n=0; ncomp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - post( "pix_opencv_hist_compare : reallocating buffers" ); - - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&grey); - cvReleaseImage(&h_plane); - cvReleaseImage(&s_plane); - cvReleaseImage(&v_plane); - cvReleaseImage(&h_saved_plane); - cvReleaseImage(&s_saved_plane); - cvReleaseImage(&v_saved_plane); - - //Create cv_images - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grey = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3 ); - - h_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - s_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - v_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - planes[0] = h_plane; - planes[1] = s_plane; - cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); - h_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - s_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - v_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - saved_planes[0] = h_saved_plane; - saved_planes[1] = s_saved_plane; - - h_bins = (int)(comp_xsize/10); - s_bins = (int)(comp_ysize/10); - { - int hist_size[] = { h_bins, s_bins }; - float h_ranges[] = { 0, 180 }; // hue is [0,180] - float s_ranges[] = { 0, 255 }; - float* ranges[] = { h_ranges, s_ranges }; - hist = cvCreateHist( - 2, - hist_size, - CV_HIST_ARRAY, - ranges, - 1 - ); - int n; - for (n=0; nimageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to hsv - cvCvtColor( rgba, rgb, CV_BGRA2BGR ); - cvCvtColor( rgb, hsv, CV_BGR2HSV ); - cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); - - // Build the histogram and compute its contents. - if (save_now>=0) { - post("saving histogram %d\n",save_now); - cvCvtPixToPlane( hsv, h_saved_plane, s_saved_plane, v_saved_plane, 0 ); - cvCalcHist( saved_planes, saved_hist[save_now], 0, 0 ); //Compute histogram - cvNormalizeHist( saved_hist[save_now], 1.0 ); //Normalize it - save_now=-1; - nbsaved++; - } - cvCalcHist( planes, hist, 0, 0 ); //Compute histogram - cvNormalizeHist( hist, 1.0 ); //Normalize it - - double tato[nbsaved]; - t_atom datalist[nbsaved]; - int nearest = -1; - double max = 0; - - int n; - if ( nbsaved > 0 ) - for (n=0; nmax) { - max = tato[n]; - nearest = n; - } - } - - if ( nbsaved > 0 ) { - outlet_float(m_dataout, (float)nearest); - outlet_list( m_measureout, 0, nbsaved , datalist ); - } else - outlet_float(m_dataout, -1.0); - - // Create an image to use to visualize our histogram. - int scale = 10; - // populate our visualization with little gray squares. - float max_value = 0; - cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 ); - - int h = 0; - int s = 0; - - for( h = 0; h < h_bins; h++ ) { - for( s = 0; s < s_bins; s++ ) { - float bin_val = cvQueryHistValue_2D( hist, h, s ); - int intensity = cvRound( bin_val * 255 / max_value ); - cvRectangle( - rgba, - cvPoint( h*scale, s*scale ), - cvPoint( (h+1)*scale - 1, (s+1)*scale - 1), - CV_RGB(intensity,intensity,intensity), CV_FILLED, 8 , 0 ); - } - } - - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); - -} - -void pix_opencv_hist_compare :: processRGBImage(imageStruct &image) -{ - int i; - int h_bins = (int)(comp_xsize/10), s_bins = (int)(comp_ysize/10); - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&grey); - cvReleaseImage(&h_plane); - cvReleaseImage(&s_plane); - cvReleaseImage(&v_plane); - cvReleaseImage(&h_saved_plane); - cvReleaseImage(&s_saved_plane); - cvReleaseImage(&v_saved_plane); - - //Create cv_images - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grey = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3 ); - - h_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - s_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - v_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - planes[0] = h_plane; - planes[1] = s_plane; - cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); - h_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - s_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - v_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - saved_planes[0] = h_saved_plane; - saved_planes[1] = s_saved_plane; - - h_bins = (int)(comp_xsize/10); - s_bins = (int)(comp_ysize/10); - { - int hist_size[] = { h_bins, s_bins }; - float h_ranges[] = { 0, 180 }; // hue is [0,180] - float s_ranges[] = { 0, 255 }; - float* ranges[] = { h_ranges, s_ranges }; - hist = cvCreateHist( - 2, - hist_size, - CV_HIST_ARRAY, - ranges, - 1 - ); - int n; - for (n=0; nimageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to hsv - cvCvtColor( rgb, hsv, CV_BGR2HSV ); - cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); - - // Build the histogram and compute its contents. - if (save_now>=0) { - post("saving histogram %d\n",save_now); - cvCvtPixToPlane( hsv, h_saved_plane, s_saved_plane, v_saved_plane, 0 ); - cvCalcHist( saved_planes, saved_hist[save_now], 0, 0 ); //Compute histogram - cvNormalizeHist( saved_hist[save_now], 1.0 ); //Normalize it - save_now=-1; - nbsaved++; - } - cvCalcHist( planes, hist, 0, 0 ); //Compute histogram - cvNormalizeHist( hist, 1.0 ); //Normalize it - - double tato[nbsaved]; - t_atom datalist[nbsaved]; - int nearest = -1; - double max = 0; - - int n; - if ( nbsaved > 0 ) - for (n=0; nmax) { - max = tato[n]; - nearest = n; - } - } - - if ( nbsaved > 0 ) { - outlet_float(m_dataout, (float)nearest); - outlet_list( m_measureout, 0, nbsaved , datalist ); - } else - outlet_float(m_dataout, -1.0); - - // Create an image to use to visualize our histogram. - int scale = 10; - // populate our visualization with little gray squares. - float max_value = 0; - cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 ); - - int h = 0; - int s = 0; - - for( h = 0; h < h_bins; h++ ) { - for( s = 0; s < s_bins; s++ ) { - float bin_val = cvQueryHistValue_2D( hist, h, s ); - int intensity = cvRound( bin_val * 255 / max_value ); - cvRectangle( - rgb, - cvPoint( h*scale, s*scale ), - cvPoint( (h+1)*scale - 1, (s+1)*scale - 1), - CV_RGB(intensity,intensity,intensity), CV_FILLED, 8 , 0 ); - } - } - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); - -} - -void pix_opencv_hist_compare :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_hist_compare : yuv format not supported" ); -} - -void pix_opencv_hist_compare :: processGrayImage(imageStruct &image) -{ - int i; - int h_bins = (int)(comp_xsize/10), s_bins = (int)(comp_ysize/10); - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&grey); - cvReleaseImage(&h_plane); - cvReleaseImage(&s_plane); - cvReleaseImage(&v_plane); - cvReleaseImage(&h_saved_plane); - cvReleaseImage(&s_saved_plane); - cvReleaseImage(&v_saved_plane); - - //Create cv_images - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grey = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3 ); - - h_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - s_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - v_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - planes[0] = h_plane; - planes[1] = s_plane; - cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); - h_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - s_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - v_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - saved_planes[0] = h_saved_plane; - saved_planes[1] = s_saved_plane; - - h_bins = (int)(comp_xsize/10); - s_bins = (int)(comp_ysize/10); - { - int hist_size[] = { h_bins, s_bins }; - float h_ranges[] = { 0, 180 }; // hue is [0,180] - float s_ranges[] = { 0, 255 }; - float* ranges[] = { h_ranges, s_ranges }; - hist = cvCreateHist( - 2, - hist_size, - CV_HIST_ARRAY, - ranges, - 1 - ); - int n; - for (n=0; nimageData, image.data, image.xsize*image.ysize ); - - // Convert to hsv - cvCvtColor( grey, rgb, CV_GRAY2BGR ); - cvCvtColor( rgb, hsv, CV_BGR2HSV ); - cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); - - // Build the histogram and compute its contents. - if (save_now>=0) { - post("saving histogram %d\n",save_now); - cvCvtPixToPlane( hsv, h_saved_plane, s_saved_plane, v_saved_plane, 0 ); - cvCalcHist( saved_planes, saved_hist[save_now], 0, 0 ); //Compute histogram - cvNormalizeHist( saved_hist[save_now], 1.0 ); //Normalize it - save_now=-1; - nbsaved++; - } - cvCalcHist( planes, hist, 0, 0 ); //Compute histogram - cvNormalizeHist( hist, 1.0 ); //Normalize it - - double tato[nbsaved]; - t_atom datalist[nbsaved]; - int nearest = -1; - double max = 0; - - int n; - if ( nbsaved > 0 ) - for (n=0; nmax) { - max = tato[n]; - nearest = n; - } - } - - if ( nbsaved > 0 ) { - outlet_float(m_dataout, (float)nearest); - outlet_list( m_measureout, 0, nbsaved , datalist ); - } else - outlet_float(m_dataout, -1.0); - - // Create an image to use to visualize our histogram. - int scale = 10; - // populate our visualization with little gray squares. - float max_value = 0; - cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 ); - - int h = 0; - int s = 0; - - for( h = 0; h < h_bins; h++ ) { - for( s = 0; s < s_bins; s++ ) { - float bin_val = cvQueryHistValue_2D( hist, h, s ); - int intensity = cvRound( bin_val * 255 / max_value ); - cvRectangle( - grey, - cvPoint( h*scale, s*scale ), - cvPoint( (h+1)*scale - 1, (s+1)*scale - 1), - CV_RGB(intensity,intensity,intensity), CV_FILLED, 8 , 0 ); - } - } - - memcpy( image.data, grey->imageData, image.xsize*image.ysize ); - -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_hist_compare :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_hist_compare::saveMessCallback, - gensym("save"), A_FLOAT, A_NULL); -} - -void pix_opencv_hist_compare :: saveMess(float index) -{ - if (((int)index>=0)&&((int)indexsaveMess(index); -} diff --git a/pix_opencv_hist_compare.h b/pix_opencv_hist_compare.h deleted file mode 100644 index 9dc24fd..0000000 --- a/pix_opencv_hist_compare.h +++ /dev/null @@ -1,90 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Histogram reognition object using Open CV - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_HIST_COMPARE_H_ -#define INCLUDE_PIX_OPENCV_HIST_COMPARE_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/compat.hpp" -#endif - -#include "Base/GemPixObj.h" - -#define MAX_HISTOGRAMS_TO_COMPARE 80 - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_hist_compare - - Histogram reognition object using Open CV - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ - -class GEM_EXTERN pix_opencv_hist_compare : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_hist_compare, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_hist_compare(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_hist_compare(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - void saveMess(float index); - - int comp_xsize; - int comp_ysize; - - t_outlet *m_dataout; - t_outlet *m_measureout; - - private: - - ////////// - // Static member functions - static void saveMessCallback(void *data, t_floatarg index); - - // The output and temporary images - int save_now; - int nbsaved; - - CvHistogram *hist; - CvHistogram *saved_hist[MAX_HISTOGRAMS_TO_COMPARE]; - IplImage *rgba, *rgb, *grey, *hsv, *h_plane, *s_plane, *v_plane, *h_saved_plane, *s_saved_plane, *v_saved_plane, *planes[2],*saved_planes[2]; - - -}; - -#endif // for header file diff --git a/pix_opencv_hough_circles-help.pd b/pix_opencv_hough_circles-help.pd deleted file mode 100644 index 9cbdd7f..0000000 --- a/pix_opencv_hough_circles-help.pd +++ /dev/null @@ -1,191 +0,0 @@ -#N canvas 501 132 1214 680 10; -#X obj 5 205 cnv 15 430 470 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 5 159 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 14 163 Arguments:; -#X obj 5 64 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 35 183 none; -#X obj 445 5 cnv 15 760 670 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X obj 599 357 cnv 15 600 270 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 605 527 pix_opencv_hough_circles; -#X obj 788 494 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 703 492 nightmode \$1; -#X text 807 495 set nightmode; -#X floatatom 726 390 5 0 0 0 - - -; -#X msg 637 387 threshold \$1; -#X floatatom 771 456 5 0 0 0 - - -; -#X floatatom 790 475 5 0 0 0 - - -; -#X floatatom 712 369 5 0 0 0 - - -; -#X msg 622 368 maxcircles \$1; -#X text 752 368 maximum nuber of circles detected ( default : 10 ) -; -#X floatatom 748 407 5 0 0 0 - - -; -#X msg 660 406 threshold2 \$1; -#X text 672 420 see documentation of cvHoughCircles for the meaning -of thresholds; -#X msg 685 455 mindist \$1; -#X text 808 454 minimum distance between circles ( default : 30 ); -#X msg 690 473 resolution \$1; -#X text 833 474 detector resolution ( default 1 ); -#X text 765 386 threshold ( default 100 ); -#X text 787 402 threshold2 ( default 10 ); -#X floatatom 746 588 5 0 0 0 - - -; -#X floatatom 782 589 5 0 0 0 - - -; -#X obj 746 548 route 1 2 3 4 5 6 7 8 9 10; -#X text 749 602 X1; -#X text 785 602 Y1; -#X floatatom 819 589 5 0 0 0 - - -; -#X text 915 548 position of each circle; -#X text 822 603 radius; -#X obj 746 569 unpack f f f; -#X text 12 208 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -) and Yves Degoyon ( ydegoyon@gmail.com ); -#X text 13 70 pix_opencv_hough_circles : Hough circles detection algorithm -; -#X obj 656 18 gemhead; -#X obj 605 631 pix_texture; -#X obj 605 650 square 2; -#X obj 977 15 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 987 59 pd gemwin; -#X msg 987 41 create; -#X obj 453 631 pix_texture; -#X obj 453 650 square 2; -#X obj 605 293 separator; -#X obj 668 45 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 725 220 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 707 185 5 0 10000 1 frame# - -; -#X obj 668 74 openpanel; -#X msg 668 94 open \$1; -#X obj 656 203 pix_film; -#X msg 674 137 auto \$1; -#X obj 674 119 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X text 985 21 Create window and render; -#X msg 769 120 colorspace RGBA; -#X msg 780 139 colorspace RGB; -#X msg 796 158 colorspace Grey; -#X obj 769 92 loadbang; -#X obj 605 274 pix_separator; -#X obj 453 294 separator; -#X obj 453 275 pix_separator; -#X obj 453 314 translateXYZ -2 0 0; -#X obj 605 313 translateXYZ 2 0 0; -#N canvas 1 83 450 300 vswitch 0; -#X obj 36 127 outlet; -#X obj 36 27 inlet; -#X obj 110 27 inlet; -#X obj 155 26 inlet; -#X obj 36 93 spigot 1; -#X obj 110 94 spigot 0; -#X obj 81 71 == 0; -#X connect 1 0 4 0; -#X connect 2 0 5 0; -#X connect 3 0 6 0; -#X connect 3 0 5 1; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 4 1; -#X restore 453 228 pd vswitch; -#X obj 521 228 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 453 201 pix_video; -#X obj 453 13 gemhead; -#X msg 492 126 device 0; -#X msg 501 157 driver 1; -#X msg 478 72 dialog; -#X msg 483 102 device /dev/dv1394-0; -#X obj 605 337 pix_resize 320 240; -#X obj 453 249 pix_rgba; -#X connect 7 0 39 0; -#X connect 7 1 29 0; -#X connect 8 0 9 0; -#X connect 9 0 7 0; -#X connect 11 0 12 0; -#X connect 12 0 7 0; -#X connect 13 0 21 0; -#X connect 14 0 23 0; -#X connect 15 0 16 0; -#X connect 16 0 7 0; -#X connect 18 0 19 0; -#X connect 19 0 7 0; -#X connect 21 0 7 0; -#X connect 23 0 7 0; -#X connect 29 0 35 0; -#X connect 35 0 27 0; -#X connect 35 1 28 0; -#X connect 35 2 32 0; -#X connect 38 0 52 0; -#X connect 39 0 40 0; -#X connect 42 0 43 0; -#X connect 43 0 42 0; -#X connect 44 0 45 0; -#X connect 46 0 64 0; -#X connect 47 0 50 0; -#X connect 48 0 49 0; -#X connect 49 0 52 1; -#X connect 50 0 51 0; -#X connect 51 0 52 0; -#X connect 52 0 65 1; -#X connect 52 2 48 0; -#X connect 53 0 52 0; -#X connect 54 0 53 0; -#X connect 56 0 52 0; -#X connect 56 0 67 0; -#X connect 57 0 52 0; -#X connect 58 0 52 0; -#X connect 59 0 56 0; -#X connect 59 0 54 0; -#X connect 60 0 46 0; -#X connect 61 0 63 0; -#X connect 62 0 61 0; -#X connect 63 0 44 0; -#X connect 64 0 73 0; -#X connect 65 0 74 0; -#X connect 66 0 65 2; -#X connect 67 0 65 0; -#X connect 68 0 67 0; -#X connect 69 0 67 0; -#X connect 70 0 67 0; -#X connect 71 0 67 0; -#X connect 72 0 67 0; -#X connect 73 0 7 0; -#X connect 74 0 62 0; -#X connect 74 0 60 0; diff --git a/pix_opencv_hough_circles.cc b/pix_opencv_hough_circles.cc deleted file mode 100644 index 2ebbdcf..0000000 --- a/pix_opencv_hough_circles.cc +++ /dev/null @@ -1,315 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_hough_circles.h" -#include - -CPPEXTERN_NEW(pix_opencv_hough_circles) - -///////////////////////////////////////////////////////// -// -// pix_opencv_hough_circles -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_hough_circles :: pix_opencv_hough_circles() -{ - int i; - - comp_xsize=320; - comp_ysize=240; - - m_dataout = outlet_new(this->x_obj, &s_anything); - - x_threshold = 100; - x_threshold2 = 10; - x_maxcircles = 10; - x_mindist = 30.0; - x_resolution = 1.0; - night_mode = 0; - - // initialize font - cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_hough_circles :: ~pix_opencv_hough_circles() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_hough_circles :: processRGBAImage(imageStruct &image) -{ - int i, ucircles; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor( rgba, gray, CV_BGRA2GRAY ); - - if( night_mode ) - cvZero( rgba ); - - x_storage = cvCreateMemStorage(0); - - cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); - CvSeq* circles = cvHoughCircles( gray, x_storage, CV_HOUGH_GRADIENT, x_resolution, x_mindist, x_threshold, x_threshold2 ); - ucircles = (circles->total>x_maxcircles)?x_maxcircles:circles->total; - for( i = 0; i < ucircles; i++ ) - { - float* p = (float*)cvGetSeqElem( circles, i ); - char tindex[10]; - - cvCircle( rgba, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 ); - cvCircle( rgba, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 ); - SETFLOAT(&x_list[0], i); - SETFLOAT(&x_list[1], cvRound(p[0])); - SETFLOAT(&x_list[2], cvRound(p[1])); - SETFLOAT(&x_list[3], cvRound(p[2])); - outlet_list( m_dataout, 0, 4, x_list ); - sprintf( tindex, "%d", i ); - cvPutText( rgba, tindex, cvPoint(cvRound(p[0]),cvRound(p[1])), &font, CV_RGB(255,255,255)); - } - - cvReleaseMemStorage( &x_storage ); - - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); - -} - -void pix_opencv_hough_circles :: processRGBImage(imageStruct &image) -{ - int i, ucircles; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor( rgb, gray, CV_BGR2GRAY ); - - if( night_mode ) - cvZero( rgb ); - - x_storage = cvCreateMemStorage(0); - - cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); - CvSeq* circles = cvHoughCircles( gray, x_storage, CV_HOUGH_GRADIENT, x_resolution, x_mindist, x_threshold, x_threshold2 ); - ucircles = (circles->total>x_maxcircles)?x_maxcircles:circles->total; - for( i = 0; i < ucircles; i++ ) - { - float* p = (float*)cvGetSeqElem( circles, i ); - char tindex[10]; - - cvCircle( rgb, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 ); - cvCircle( rgb, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 ); - SETFLOAT(&x_list[0], i); - SETFLOAT(&x_list[1], cvRound(p[0])); - SETFLOAT(&x_list[2], cvRound(p[1])); - SETFLOAT(&x_list[3], cvRound(p[2])); - outlet_list( m_dataout, 0, 4, x_list ); - sprintf( tindex, "%d", i ); - cvPutText( rgb, tindex, cvPoint(cvRound(p[0]),cvRound(p[1])), &font, CV_RGB(255,255,255)); - } - - cvReleaseMemStorage( &x_storage ); - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); - -} - -void pix_opencv_hough_circles :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_hough_circles : yuv format not supported" ); -} - -void pix_opencv_hough_circles :: processGrayImage(imageStruct &image) -{ - int i, ucircles; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - - } - - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - x_storage = cvCreateMemStorage(0); - - cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); - CvSeq* circles = cvHoughCircles( gray, x_storage, CV_HOUGH_GRADIENT, x_resolution, x_mindist, x_threshold, x_threshold2 ); - - if( night_mode ) - cvZero( gray ); - - ucircles = (circles->total>x_maxcircles)?x_maxcircles:circles->total; - for( i = 0; i < ucircles; i++ ) - { - float* p = (float*)cvGetSeqElem( circles, i ); - char tindex[10]; - - cvCircle( gray, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(255,255,255), -1, 8, 0 ); - cvCircle( gray, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,255,255), 3, 8, 0 ); - SETFLOAT(&x_list[0], i); - SETFLOAT(&x_list[1], cvRound(p[0])); - SETFLOAT(&x_list[2], cvRound(p[1])); - SETFLOAT(&x_list[3], cvRound(p[2])); - outlet_list( m_dataout, 0, 4, x_list ); - sprintf( tindex, "%d", i ); - cvPutText( gray, tindex, cvPoint(cvRound(p[0]),cvRound(p[1])), &font, CV_RGB(255,255,255)); - } - - cvReleaseMemStorage( &x_storage ); - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); - -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_hough_circles :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatNightModeMessCallback, - gensym("nightmode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatThresholdMessCallback, - gensym("threshold"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatThreshold2MessCallback, - gensym("threshold2"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatMinDistMessCallback, - gensym("mindist"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatResolutionMessCallback, - gensym("resolution"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatMaxCirclesMessCallback, - gensym("maxcircles"), A_FLOAT, A_NULL); -} - -void pix_opencv_hough_circles :: floatNightModeMessCallback(void *data, t_floatarg nightmode) -{ - GetMyClass(data)->floatNightModeMess((float)nightmode); -} - -void pix_opencv_hough_circles :: floatThresholdMessCallback(void *data, t_floatarg threshold) -{ - GetMyClass(data)->floatThresholdMess((float)threshold); -} - -void pix_opencv_hough_circles :: floatThreshold2MessCallback(void *data, t_floatarg threshold) -{ - GetMyClass(data)->floatThreshold2Mess((float)threshold); -} - -void pix_opencv_hough_circles :: floatMinDistMessCallback(void *data, t_floatarg mindist) -{ - GetMyClass(data)->floatMinDistMess((float)mindist); -} - -void pix_opencv_hough_circles :: floatResolutionMessCallback(void *data, t_floatarg resolution) -{ - GetMyClass(data)->floatResolutionMess((float)resolution); -} - -void pix_opencv_hough_circles :: floatMaxCirclesMessCallback(void *data, t_floatarg maxcircles) -{ - GetMyClass(data)->floatMaxCirclesMess((float)maxcircles); -} - -void pix_opencv_hough_circles :: floatNightModeMess(float nightmode) -{ - if ((nightmode==0.0)||(nightmode==1.0)) night_mode = (int)nightmode; -} - -void pix_opencv_hough_circles :: floatThresholdMess(float threshold) -{ - if (threshold>0.0) x_threshold = (int)threshold; -} - -void pix_opencv_hough_circles :: floatThreshold2Mess(float threshold) -{ - if (threshold>0.0) x_threshold2 = (int)threshold; -} - -void pix_opencv_hough_circles :: floatMinDistMess(float mindist) -{ - if (mindist>0.0) x_mindist = (int)mindist; -} - -void pix_opencv_hough_circles :: floatResolutionMess(float resolution) -{ - if (resolution>0.0) x_resolution = (int)resolution; -} - -void pix_opencv_hough_circles :: floatMaxCirclesMess(float maxcircles) -{ - if (maxcircles>0.0) x_maxcircles = (int)maxcircles; -} - diff --git a/pix_opencv_hough_circles.h b/pix_opencv_hough_circles.h deleted file mode 100644 index a378872..0000000 --- a/pix_opencv_hough_circles.h +++ /dev/null @@ -1,102 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Hough circles detection algorithm - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_HOUGH_CIRCLES_H_ -#define INCLUDE_PIX_OPENCV_HOUGH_CIRCLES_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -#define MAX_HISTOGRAMS_TO_COMPARE 80 - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_hough_circles - - Hough circles detection algorithm - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ - -class GEM_EXTERN pix_opencv_hough_circles : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_hough_circles, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_hough_circles(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_hough_circles(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - int comp_xsize; - int comp_ysize; - - void floatNightModeMess(t_float nightmode); - void floatThresholdMess(t_floatarg threshold); - void floatThreshold2Mess(t_floatarg threshold); - void floatMinDistMess(t_floatarg mindist); - void floatResolutionMess(t_floatarg resolution); - void floatMaxCirclesMess(t_floatarg maxcircles); - - t_outlet *m_dataout; - - int x_threshold; - int x_threshold2; - int x_maxcircles; - double x_mindist; - double x_resolution; - int night_mode; - - private: - - ////////// - // Static member functions - static void floatNightModeMessCallback(void *data, t_floatarg nightmode); - static void floatThresholdMessCallback(void *data, t_floatarg threshold); - static void floatThreshold2MessCallback(void *data, t_floatarg threshold); - static void floatMinDistMessCallback(void *data, t_floatarg mindist); - static void floatResolutionMessCallback(void *data, t_floatarg resolution); - static void floatMaxCirclesMessCallback(void *data, t_floatarg maxcircles); - - // The output and temporary images - IplImage *rgba, *rgb, *gray; - CvFont font; - CvMemStorage* x_storage; - CvSeq* x_circles; - t_atom x_list[4]; -}; - -#endif // for header file diff --git a/pix_opencv_hough_lines-help.pd b/pix_opencv_hough_lines-help.pd deleted file mode 100644 index b40976c..0000000 --- a/pix_opencv_hough_lines-help.pd +++ /dev/null @@ -1,213 +0,0 @@ -#N canvas 545 63 1680 940 10; -#X obj 580 463 cnv 15 600 400 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 606 762 pix_opencv_hough_lines; -#X obj 790 732 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 -1; -#X msg 705 730 nightmode \$1; -#X text 809 733 set nightmode; -#X floatatom 736 580 5 0 0 0 - - -; -#X msg 635 546 mode \$1; -#X obj 731 517 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 --1 -1 1; -#X text 752 517 CV_HOUGH_STANDARD; -#X text 752 531 CV_HOUGH_PROBABILISTIC; -#X text 753 547 CV_HOUGN_MULTI_SCALE; -#X msg 647 577 threshold \$1; -#X msg 661 607 minlength \$1; -#X floatatom 747 608 5 0 0 0 - - -; -#X floatatom 727 634 5 0 0 0 - - -; -#X msg 676 633 gap \$1; -#X text 770 634 gap betwwen lines ( default 10 \, for mode CV_HOUGH_PROBABILISTIC -); -#X text 784 605 minimum length ( default 30 \, for mode CV_HOUGH_PROBABILISTIC -); -#X floatatom 781 672 5 0 0 0 - - -; -#X floatatom 803 704 5 0 0 0 - - -; -#X msg 680 670 aresolution \$1; -#X text 847 700 distance resolution ( default 1 \, for mode CV_HOUGH_MULTI_SCALE -); -#X text 819 669 angle resolution ( default 1 \, for mode CV_HOUGH_MULTI_SCALE -); -#X msg 621 476 maxlines \$1; -#X floatatom 700 477 5 0 0 0 - - -; -#X text 741 473 maximum nuber of lines detected ( default : 10 ); -#X text 775 576 threshold ( default 50 ); -#X text 640 499 Detection mode ( default : CV_HOUGH_PROBABILISTIC ) -; -#X floatatom 750 831 5 0 0 0 - - -; -#X floatatom 786 832 5 0 0 0 - - -; -#X obj 750 791 route 1 2 3 4 5 6 7 8 9 10; -#X text 919 790 position of each line; -#X obj 750 811 unpack f f f f; -#X text 753 845 X1; -#X text 789 845 Y1; -#X floatatom 823 832 5 0 0 0 - - -; -#X floatatom 859 833 5 0 0 0 - - -; -#X text 826 846 X2; -#X text 862 846 Y2; -#X text 41 154 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -) and Yves Degoyon ( ydegoyon@gmail.com ); -#X text 40 139 pix_opencv_hough_lines : Hough lines algorithm; -#X msg 698 702 dresolution \$1; -#X obj 725 54 gemhead; -#X obj 606 884 pix_texture; -#X obj 606 903 square 2; -#X obj 43 50 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 53 94 pd gemwin; -#X msg 53 76 create; -#X obj 454 691 pix_texture; -#X obj 454 719 square 2; -#X obj 606 381 separator; -#X obj 737 81 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 794 256 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 776 221 5 0 10000 1 frame# - -; -#X obj 737 110 openpanel; -#X msg 737 130 open \$1; -#X obj 725 239 pix_film; -#X msg 743 173 auto \$1; -#X obj 743 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X text 51 56 Create window and render; -#X msg 838 156 colorspace RGBA; -#X msg 943 156 colorspace RGB; -#X msg 1047 156 colorspace Grey; -#X obj 838 128 loadbang; -#X obj 605 352 pix_separator; -#X obj 454 384 separator; -#X obj 454 355 pix_separator; -#X obj 454 419 translateXYZ -2 0 0; -#X obj 606 416 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 547 309 pd vswitch; -#X obj 615 309 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 488 237 pix_video; -#X obj 488 49 gemhead; -#X msg 527 162 device 0; -#X msg 536 193 driver 1; -#X msg 513 108 dialog; -#X msg 518 138 device /dev/dv1394-0; -#X obj 606 440 pix_resize 320 240; -#X text 884 547 (WARNING :: only for powerfull machines); -#X obj 547 329 pix_rgba; -#X connect 1 0 43 0; -#X connect 1 1 30 0; -#X connect 2 0 3 0; -#X connect 3 0 1 0; -#X connect 5 0 11 0; -#X connect 6 0 1 0; -#X connect 7 0 6 0; -#X connect 11 0 1 0; -#X connect 12 0 1 0; -#X connect 13 0 12 0; -#X connect 14 0 15 0; -#X connect 15 0 1 0; -#X connect 18 0 20 0; -#X connect 19 0 41 0; -#X connect 20 0 1 0; -#X connect 23 0 1 0; -#X connect 24 0 23 0; -#X connect 30 0 32 0; -#X connect 32 0 28 0; -#X connect 32 1 29 0; -#X connect 32 2 35 0; -#X connect 32 3 36 0; -#X connect 41 0 1 0; -#X connect 42 0 56 0; -#X connect 43 0 44 0; -#X connect 46 0 47 0; -#X connect 47 0 46 0; -#X connect 48 0 49 0; -#X connect 50 0 68 0; -#X connect 51 0 54 0; -#X connect 52 0 53 0; -#X connect 53 0 56 1; -#X connect 54 0 55 0; -#X connect 55 0 56 0; -#X connect 56 0 69 1; -#X connect 56 2 52 0; -#X connect 57 0 56 0; -#X connect 58 0 57 0; -#X connect 60 0 56 0; -#X connect 60 0 71 0; -#X connect 61 0 56 0; -#X connect 62 0 56 0; -#X connect 63 0 60 0; -#X connect 63 0 58 0; -#X connect 64 0 50 0; -#X connect 65 0 67 0; -#X connect 66 0 65 0; -#X connect 67 0 48 0; -#X connect 68 0 77 0; -#X connect 69 0 79 0; -#X connect 70 0 69 2; -#X connect 71 0 69 0; -#X connect 72 0 71 0; -#X connect 73 0 71 0; -#X connect 74 0 71 0; -#X connect 75 0 71 0; -#X connect 76 0 71 0; -#X connect 77 0 1 0; -#X connect 79 0 66 0; -#X connect 79 0 64 0; diff --git a/pix_opencv_hough_lines.cc b/pix_opencv_hough_lines.cc deleted file mode 100644 index cf84305..0000000 --- a/pix_opencv_hough_lines.cc +++ /dev/null @@ -1,600 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_hough_lines.h" -#include - -CPPEXTERN_NEW(pix_opencv_hough_lines) - -///////////////////////////////////////////////////////// -// -// pix_opencv_hough_lines -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_hough_lines :: pix_opencv_hough_lines() -{ - int i; - - comp_xsize=320; - comp_ysize=240; - - m_dataout = outlet_new(this->x_obj, &s_anything); - - x_mode = CV_HOUGH_PROBABILISTIC; - x_threshold = 50; - x_maxlines = 10; - x_minlength = 30.0; - x_gap = 10.0; - x_aresolution = 10.0; - x_dresolution = 30.0; - night_mode = 0; - - cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_hough_lines :: ~pix_opencv_hough_lines() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_hough_lines :: processRGBAImage(imageStruct &image) -{ - int i, ulines; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor( rgba, gray, CV_BGRA2GRAY ); - - cvCanny( gray, gray, 50, 200, 3 ); - - if( night_mode ) - cvZero( rgba ); - - x_storage = cvCreateMemStorage(0); - - switch( x_mode ) - { - case CV_HOUGH_STANDARD: - - x_lines = cvHoughLines2( gray, x_storage, x_mode, 1, CV_PI/180, x_threshold, 0, 0 ); - - if ( x_lines ) - { - ulines = ( x_lines->total >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i = 0; i < ulines; i++ ) - { - float* line = (float*)cvGetSeqElem(x_lines,i); - float rho = line[0]; - float theta = line[1]; - char tindex[10]; - CvPoint pt1, pt2; - double a = cos(theta), b = sin(theta); - double x0 = a*rho, y0 = b*rho; - pt1.x = cvRound(x0 + 1000*(-b)); - pt1.y = cvRound(y0 + 1000*(a)); - pt2.x = cvRound(x0 - 1000*(-b)); - pt2.y = cvRound(y0 - 1000*(a)); - cvLine( rgba, pt1, pt2, CV_RGB(255,0,0), 3, 8 ); - SETFLOAT(&x_list[0], i); - SETFLOAT(&x_list[1], pt1.x); - SETFLOAT(&x_list[2], pt1.y); - SETFLOAT(&x_list[3], pt2.x); - SETFLOAT(&x_list[4], pt2.y); - outlet_list( m_dataout, 0, 5, x_list ); - pt1.x = (pt1.x+pt2.x)/2; - pt1.y = (pt1.y+pt2.y)/2; - sprintf( tindex, "%d", i ); - cvPutText( rgba, tindex, pt1, &font, CV_RGB(255,255,255)); - } - } - break; - } - - cvReleaseMemStorage( &x_storage ); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); - -} - -void pix_opencv_hough_lines :: processRGBImage(imageStruct &image) -{ - int i, ulines; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor( rgb, gray, CV_BGR2GRAY ); - - cvCanny( gray, gray, 50, 200, 3 ); - - if( night_mode ) - cvZero( rgb ); - - x_storage = cvCreateMemStorage(0); - - switch( x_mode ) - { - case CV_HOUGH_STANDARD: - - x_lines = cvHoughLines2( gray, x_storage, x_mode, 1, CV_PI/180, x_threshold, 0, 0 ); - - if ( x_lines ) - { - ulines = ( x_lines->total >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i = 0; i < ulines; i++ ) - { - float* line = (float*)cvGetSeqElem(x_lines,i); - float rho = line[0]; - float theta = line[1]; - char tindex[10]; - CvPoint pt1, pt2; - double a = cos(theta), b = sin(theta); - double x0 = a*rho, y0 = b*rho; - pt1.x = cvRound(x0 + 1000*(-b)); - pt1.y = cvRound(y0 + 1000*(a)); - pt2.x = cvRound(x0 - 1000*(-b)); - pt2.y = cvRound(y0 - 1000*(a)); - cvLine( rgb, pt1, pt2, CV_RGB(255,0,0), 3, 8 ); - SETFLOAT(&x_list[0], i); - SETFLOAT(&x_list[1], pt1.x); - SETFLOAT(&x_list[2], pt1.y); - SETFLOAT(&x_list[3], pt2.x); - SETFLOAT(&x_list[4], pt2.y); - outlet_list( m_dataout, 0, 5, x_list ); - pt1.x = (pt1.x+pt2.x)/2; - pt1.y = (pt1.y+pt2.y)/2; - sprintf( tindex, "%d", i ); - cvPutText( rgb, tindex, pt1, &font, CV_RGB(255,255,255)); - } - } - break; - } - - cvReleaseMemStorage( &x_storage ); - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); - -} - -void pix_opencv_hough_lines :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_hough_lines : yuv format not supported" ); -} - -void pix_opencv_hough_lines :: processGrayImage(imageStruct &image) -{ - int i, ulines; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - - } - - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - cvCanny( gray, gray, 50, 200, 3 ); - - x_storage = cvCreateMemStorage(0); - - switch( x_mode ) - { - case CV_HOUGH_STANDARD: - - x_lines = cvHoughLines2( gray, x_storage, x_mode, 1, CV_PI/180, x_threshold, 0, 0 ); - - if( night_mode ) - cvZero( gray ); - - if ( x_lines ) - { - ulines = ( x_lines->total >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; - for( i = 0; i < ulines; i++ ) - { - float* line = (float*)cvGetSeqElem(x_lines,i); - float rho = line[0]; - float theta = line[1]; - char tindex[10]; - CvPoint pt1, pt2; - double a = cos(theta), b = sin(theta); - double x0 = a*rho, y0 = b*rho; - pt1.x = cvRound(x0 + 1000*(-b)); - pt1.y = cvRound(y0 + 1000*(a)); - pt2.x = cvRound(x0 - 1000*(-b)); - pt2.y = cvRound(y0 - 1000*(a)); - cvLine( gray, pt1, pt2, CV_RGB(255,255,255), 3, 8 ); - SETFLOAT(&x_list[0], i); - SETFLOAT(&x_list[1], pt1.x); - SETFLOAT(&x_list[2], pt1.y); - SETFLOAT(&x_list[3], pt2.x); - SETFLOAT(&x_list[4], pt2.y); - outlet_list( m_dataout, 0, 5, x_list ); - pt1.x = (pt1.x+pt2.x)/2; - pt1.y = (pt1.y+pt2.y)/2; - sprintf( tindex, "%d", i ); - cvPutText( gray, tindex, pt1, &font, CV_RGB(255,255,255)); - } - } - break; - } - - cvReleaseMemStorage( &x_storage ); - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); - -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_hough_lines :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatNightModeMessCallback, - gensym("nightmode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatModeMessCallback, - gensym("mode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatThresholdMessCallback, - gensym("threshold"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatMinLengthMessCallback, - gensym("minlength"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatGapMessCallback, - gensym("gap"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatAResolutionMessCallback, - gensym("aresolution"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatDResolutionMessCallback, - gensym("dresolution"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatMaxLinesMessCallback, - gensym("maxlines"), A_FLOAT, A_NULL); -} - -void pix_opencv_hough_lines :: floatNightModeMessCallback(void *data, t_floatarg nightmode) -{ - GetMyClass(data)->floatNightModeMess((float)nightmode); -} - -void pix_opencv_hough_lines :: floatModeMessCallback(void *data, t_floatarg mode) -{ - GetMyClass(data)->floatModeMess((float)mode); -} - -void pix_opencv_hough_lines :: floatThresholdMessCallback(void *data, t_floatarg threshold) -{ - GetMyClass(data)->floatThresholdMess((float)threshold); -} - -void pix_opencv_hough_lines :: floatMinLengthMessCallback(void *data, t_floatarg minlength) -{ - GetMyClass(data)->floatMinLengthMess((float)minlength); -} - -void pix_opencv_hough_lines :: floatGapMessCallback(void *data, t_floatarg gap) -{ - GetMyClass(data)->floatGapMess((float)gap); -} - -void pix_opencv_hough_lines :: floatAResolutionMessCallback(void *data, t_floatarg aresolution) -{ - GetMyClass(data)->floatAResolutionMess((float)aresolution); -} - -void pix_opencv_hough_lines :: floatDResolutionMessCallback(void *data, t_floatarg dresolution) -{ - GetMyClass(data)->floatDResolutionMess((float)dresolution); -} - -void pix_opencv_hough_lines :: floatMaxLinesMessCallback(void *data, t_floatarg maxlines) -{ - GetMyClass(data)->floatMaxLinesMess((float)maxlines); -} - -void pix_opencv_hough_lines :: floatNightModeMess(float nightmode) -{ - if ((nightmode==0.0)||(nightmode==1.0)) night_mode = (int)nightmode; -} - -void pix_opencv_hough_lines :: floatModeMess(float mode) -{ - if ( mode == CV_HOUGH_STANDARD ) - { - x_mode = CV_HOUGH_STANDARD; - } - if ( mode == CV_HOUGH_PROBABILISTIC ) - { - x_mode = CV_HOUGH_PROBABILISTIC; - } - if ( mode == CV_HOUGH_MULTI_SCALE ) - { - x_mode = CV_HOUGH_MULTI_SCALE; - } -} - -void pix_opencv_hough_lines :: floatThresholdMess(float threshold) -{ - if (threshold>0.0) x_threshold = (int)threshold; -} - -void pix_opencv_hough_lines :: floatMinLengthMess(float minlength) -{ - if (minlength>0.0) x_minlength = (double)minlength; -} - -void pix_opencv_hough_lines :: floatGapMess(float gap) -{ - if (gap>0.0) x_gap = (double)gap; -} - -void pix_opencv_hough_lines :: floatAResolutionMess(float aresolution) -{ - if (aresolution>0.0) x_aresolution = (double)aresolution; -} - -void pix_opencv_hough_lines :: floatDResolutionMess(float dresolution) -{ - if (dresolution>0.0) x_dresolution = (double)dresolution; -} - -void pix_opencv_hough_lines :: floatMaxLinesMess(float maxlines) -{ - if (maxlines>0.0) x_maxlines = (int)maxlines; -} - diff --git a/pix_opencv_hough_lines.h b/pix_opencv_hough_lines.h deleted file mode 100644 index 6f277da..0000000 --- a/pix_opencv_hough_lines.h +++ /dev/null @@ -1,110 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Hough lines detection algorithm - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_HOUGH_LINES_H_ -#define INCLUDE_PIX_OPENCV_HOUGH_LINES_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -#define MAX_HISTOGRAMS_TO_COMPARE 80 - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_hough_lines - - Hough lines detection algorithm - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ - -class GEM_EXTERN pix_opencv_hough_lines : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_hough_lines, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_hough_lines(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_hough_lines(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - int comp_xsize; - int comp_ysize; - - void floatNightModeMess(t_float nightmode); - void floatModeMess(t_floatarg mode); - void floatThresholdMess(t_floatarg threshold); - void floatMinLengthMess(t_floatarg minlength); - void floatGapMess(t_floatarg gap); - void floatAResolutionMess(t_floatarg aresolution); - void floatDResolutionMess(t_floatarg dresolution); - void floatMaxLinesMess(t_floatarg maxlines); - - t_outlet *m_dataout; - - int x_mode; - int x_threshold; - int x_maxlines; - double x_minlength; - double x_gap; - double x_aresolution; - double x_dresolution; - int night_mode; - - private: - - ////////// - // Static member functions - static void floatNightModeMessCallback(void *data, t_float nightmode); - static void floatModeMessCallback(void *data, t_floatarg mode); - static void floatThresholdMessCallback(void *data, t_floatarg threshold); - static void floatMinLengthMessCallback(void *data, t_floatarg minlength); - static void floatGapMessCallback(void *data, t_floatarg gap); - static void floatAResolutionMessCallback(void *data, t_floatarg aresolution); - static void floatDResolutionMessCallback(void *data, t_floatarg dresolution); - static void floatMaxLinesMessCallback(void *data, t_floatarg maxlines); - - // The output and temporary images - IplImage *rgba, *rgb, *gray; - t_atom x_list[5]; - - CvFont font; - CvMemStorage* x_storage; - CvSeq* x_lines; - -}; - -#endif // for header file diff --git a/pix_opencv_hu_compare-help.pd b/pix_opencv_hu_compare-help.pd deleted file mode 100644 index 413d8bc..0000000 --- a/pix_opencv_hu_compare-help.pd +++ /dev/null @@ -1,240 +0,0 @@ -#N canvas 542 83 1154 759 10; -#X obj 937 -7 gemhead; -#X obj 375 543 pix_texture; -#X obj 374 566 square 2; -#X obj 9 -28 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 160 260 gemwin; -#X msg 159 207 create \, 1; -#X msg 235 208 destroy; -#X msg 281 180 frame 25; -#X obj 162 170 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 14 16 pd gemwin; -#X msg 14 -5 create; -#X text 15 -23 Create window and render; -#X obj 353 225 cnv 15 700 300 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 619 -90 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 676 85 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 658 50 5 0 10000 1 frame# - -; -#X obj 619 -61 openpanel; -#X msg 619 -41 open \$1; -#X obj 607 68 pix_film; -#X msg 625 2 auto \$1; -#X obj 625 -16 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X obj 373 395 pix_opencv_hu_compare; -#X floatatom 491 481 30 0 0 0 - - -; -#X text 496 464 distance; -#X obj 707 499 route 1; -#X obj 759 499 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X obj 668 500 < 0.1; -#X obj 768 479 hsl 128 15 0 0.2 0 0 cdist empty empty -2 -8 0 10 -262144 --1 -1 0 1; -#X text 788 499 criteria value; -#X floatatom 686 481 10 0 0 0 - - -; -#X text 528 376 calculating their hu moments ( CvMatchShape ); -#X text 527 364 compares the contours to the pattern reference contour -; -#X msg 511 333 criteria \$1; -#X obj 595 334 r cdist; -#X text 648 328 criteria value under which the contour is recongnized -; -#X text 646 339 ( adjust to your situation : default : 0.1 ); -#X obj 575 283 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 --1 -1 0; -#X text 626 277 method used for comparison : one of : CV_CONTOURS_MATCH_I1 -\, CV_CONTOURS_MATCH_I2 or CV_CONTOURS_MATCH_I3; -#X obj 547 282 + 1; -#X msg 477 282 method \$1; -#X msg 463 255 minsize \$1; -#X floatatom 537 256 5 0 0 0 - - -; -#X text 578 256 minimum size of selected contours ( default : 10x10 -); -#X msg 513 304 clear; -#X text 621 304 recalculates the pattern contour; -#X obj 562 305 r reset; -#X text 12 -57 Written by Yves Degoyon ( ydegoyon@gmail.com ); -#X text 13 -85 pix_opencv_hu_compare :: compare contours using their -hu moments using CvMatchShape.; -#X text 666 -88 playing a video file; -#X text 684 -75 ( try estrella.mov ); -#X msg 854 -80 bang; -#X text 900 -87 loading a pattern image; -#X text 899 -74 ( try estrella.jpg ); -#X text 853 -105 Compare to a pattern; -#X obj 854 -4 pix_image; -#X obj 856 -53 openpanel; -#X msg 855 -26 open \$1; -#X floatatom 1007 113 5 0 0 0 - - -; -#X text 836 192 threshold (default 13) to use when comparing pixel -colors; -#X obj 1075 86 loadbang; -#X msg 1044 86 160; -#X obj 976 85 r tresh; -#X floatatom 511 185 5 0 0 0 - - -; -#X obj 579 183 loadbang; -#X msg 551 183 160; -#X obj 512 203 s tresh; -#X obj 985 145 pix_texture; -#X obj 853 112 pix_opencv_threshold; -#X obj 378 204 pix_opencv_threshold; -#X obj 985 173 square 2; -#X obj 853 58 translateXYZ -2 0 0; -#X obj 854 26 pix_resize 320 240; -#X obj 373 130 pix_resize 320 240; -#X obj 683 -24 loadbang; -#X msg 683 1 colorspace RGBA; -#X msg 685 22 colorspace RGB; -#X msg 746 -25 colorspace Grey; -#X obj 687 -52 gemhead; -#X obj 376 180 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 375 98 pd vswitch; -#X obj 443 98 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 374 60 pix_video; -#X obj 378 -88 gemhead; -#X msg 413 -15 device 0; -#X msg 422 16 driver 1; -#X msg 399 -69 dialog; -#X msg 404 -39 device /dev/dv1394-0; -#X obj 547 415 unpack f f f f f; -#X text 661 415 position of detected contours; -#X floatatom 570 437 5 0 0 0 - - -; -#X floatatom 608 438 5 0 0 0 - - -; -#X floatatom 648 437 5 0 0 0 - - -; -#X floatatom 691 438 5 0 0 0 - - -; -#X text 577 450 X; -#X text 616 449 Y; -#X text 648 449 width; -#X text 689 450 height; -#X obj 373 156 pix_rgba; -#X obj 850 150 pix_rgba; -#X connect 0 0 49 0; -#X connect 1 0 2 0; -#X connect 4 0 5 0; -#X connect 5 0 4 0; -#X connect 8 0 11 0; -#X connect 9 0 10 0; -#X connect 10 0 13 1; -#X connect 11 0 12 0; -#X connect 12 0 13 0; -#X connect 13 0 74 1; -#X connect 13 2 9 0; -#X connect 14 0 13 0; -#X connect 15 0 14 0; -#X connect 16 0 1 0; -#X connect 16 1 17 0; -#X connect 16 2 82 0; -#X connect 17 0 21 0; -#X connect 19 0 20 0; -#X connect 21 0 19 0; -#X connect 22 0 21 1; -#X connect 22 0 24 0; -#X connect 27 0 16 0; -#X connect 28 0 27 0; -#X connect 31 0 33 0; -#X connect 33 0 34 0; -#X connect 34 0 16 0; -#X connect 35 0 16 0; -#X connect 36 0 35 0; -#X connect 38 0 16 0; -#X connect 40 0 38 0; -#X connect 45 0 50 0; -#X connect 49 0 66 0; -#X connect 50 0 51 0; -#X connect 51 0 49 0; -#X connect 52 0 62 2; -#X connect 54 0 55 0; -#X connect 55 0 52 0; -#X connect 56 0 52 0; -#X connect 57 0 60 0; -#X connect 57 0 63 2; -#X connect 58 0 59 0; -#X connect 59 0 57 0; -#X connect 61 0 64 0; -#X connect 62 0 61 0; -#X connect 62 0 93 0; -#X connect 63 0 16 0; -#X connect 65 0 62 0; -#X connect 66 0 65 0; -#X connect 67 0 92 0; -#X connect 68 0 69 0; -#X connect 69 0 13 0; -#X connect 69 0 49 0; -#X connect 70 0 49 0; -#X connect 70 0 13 0; -#X connect 71 0 13 0; -#X connect 71 0 49 0; -#X connect 72 0 13 0; -#X connect 73 0 63 0; -#X connect 74 0 67 0; -#X connect 75 0 74 2; -#X connect 76 0 74 0; -#X connect 77 0 76 0; -#X connect 78 0 76 0; -#X connect 79 0 76 0; -#X connect 80 0 76 0; -#X connect 81 0 76 0; -#X connect 82 1 84 0; -#X connect 82 2 85 0; -#X connect 82 3 86 0; -#X connect 82 4 87 0; -#X connect 92 0 73 0; -#X connect 93 0 16 1; diff --git a/pix_opencv_hu_compare.cc b/pix_opencv_hu_compare.cc deleted file mode 100644 index 101c448..0000000 --- a/pix_opencv_hu_compare.cc +++ /dev/null @@ -1,468 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-1998 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_hu_compare.h" - -CPPEXTERN_NEW_WITH_GIMME(pix_opencv_hu_compare) - -///////////////////////////////////////////////////////// -// -// pix_opencv_hu_compare -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_hu_compare :: pix_opencv_hu_compare(int argc, t_atom*argv) -{ - m_dataout = outlet_new(this->x_obj, &s_anything); - m_posout = outlet_new(this->x_obj, &s_anything); - - comp_xsize=320; - comp_ysize=240; - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - - x_method = CV_CONTOURS_MATCH_I1; - x_storage = cvCreateMemStorage(0); - - x_bcontourr = NULL; - x_minsize = 10*10; - x_cdistance = 0.1; -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_hu_compare :: ~pix_opencv_hu_compare() -{ - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&rgbar); - cvReleaseImage(&rgbr); - cvReleaseImage(&grayr); -} - -///////////////////////////////////////////////////////// -// processDualImage -// -///////////////////////////////////////////////////////// -void pix_opencv_hu_compare :: processRGBA_RGBA(imageStruct &left, imageStruct &right) -{ - double dist = 100.0, ndist; - int i = 0; // Indicator of cycles. - CvSeq *contourl=NULL, *contourlp; - CvRect rect; - CvMemStorage *mstorage; - CvSeq *contourr = NULL; - int size; - - if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) - { - post( "pix_opencv_hu_compare : left and right image are not of the same size" ); - return; - } - - if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) - { - this->comp_xsize=left.xsize; - this->comp_ysize=left.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&rgbar); - cvReleaseImage(&rgbr); - cvReleaseImage(&grayr); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - } - - memcpy( rgbar->imageData, right.data, right.xsize*right.ysize*4 ); - cvCvtColor(rgbar, grayr, CV_BGRA2GRAY); - - // calculate the biggest contour - try { - cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - } - catch(...) { - post( "pix_opencv_hu_compare : error calculating contours" ); - return; - } - - if ( contourr ) - { - size=0; - for( ; contourr != 0; contourr = contourr->h_next ) - { - rect = cvContourBoundingRect( contourr, 1); - if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - x_bcontourr = contourr; - size = rect.width*rect.height; - } - } - } - - memcpy( rgba->imageData, left.data, left.xsize*left.ysize*4 ); - cvCvtColor(rgba, gray, CV_BGRA2GRAY); - - mstorage = cvCreateMemStorage(0); - - cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - - i=0; - if ( contourl && x_bcontourr ) - { - contourlp=contourl; - for( ; contourlp != 0; contourlp = contourlp->h_next ) - { - rect = cvContourBoundingRect( contourlp, 1); - if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - ndist = cvMatchShapes( x_bcontourr, contourlp, x_method, 0 ); - if ( ndist < dist ) dist = ndist; - if ( ndist < x_cdistance ) - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - SETFLOAT(&rlist[0], i++); - SETFLOAT(&rlist[1], rect.x); - SETFLOAT(&rlist[2], rect.y); - SETFLOAT(&rlist[3], rect.width); - SETFLOAT(&rlist[4], rect.height); - outlet_list( m_posout, 0, 5, rlist ); - } - else - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); - } - } - } - } - - if ( dist < 100.00 ) outlet_float( m_dataout, dist ); - - cvReleaseMemStorage(&mstorage); - - cvCvtColor(gray, rgba, CV_GRAY2BGR); - memcpy( left.data, rgba->imageData, left.xsize*left.ysize*4 ); - -} - -///////////////////////////////////////////////////////// -// processDualImage -// -///////////////////////////////////////////////////////// -void pix_opencv_hu_compare :: processRGB_RGB(imageStruct &left, imageStruct &right) -{ - double dist = 100.0, ndist; - int i = 0; // Indicator of cycles. - CvSeq *contourl=NULL, *contourlp; - CvRect rect; - CvMemStorage *mstorage; - CvSeq *contourr = NULL; - int size; - - if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) - { - post( "pix_opencv_hu_compare : left and right image are not of the same size" ); - return; - } - - if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) - { - this->comp_xsize=left.xsize; - this->comp_ysize=left.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&rgbar); - cvReleaseImage(&rgbr); - cvReleaseImage(&grayr); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - } - - memcpy( rgbr->imageData, right.data, right.xsize*right.ysize*3 ); - cvCvtColor(rgbr, grayr, CV_BGRA2GRAY); - - // calculate the biggest contour - try { - cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - } - catch(...) { - post( "pix_opencv_hu_compare : error calculating contours" ); - return; - } - - if ( contourr ) - { - size=0; - for( ; contourr != 0; contourr = contourr->h_next ) - { - rect = cvContourBoundingRect( contourr, 1); - if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - x_bcontourr = contourr; - size = rect.width*rect.height; - } - } - } - - memcpy( rgb->imageData, left.data, left.xsize*left.ysize*3 ); - cvCvtColor(rgb, gray, CV_BGRA2GRAY); - - mstorage = cvCreateMemStorage(0); - - cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - - if ( contourl && x_bcontourr ) - { - contourlp=contourl; - for( ; contourlp != 0; contourlp = contourlp->h_next ) - { - rect = cvContourBoundingRect( contourlp, 1); - if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - ndist = cvMatchShapes( x_bcontourr, contourlp, x_method, 0 ); - if ( ndist < dist ) dist = ndist; - if ( ndist < x_cdistance ) - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - } - else - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); - } - } - } - } - - if ( dist < 100.00 ) outlet_float( m_dataout, dist ); - - cvReleaseMemStorage(&mstorage); - - cvCvtColor(gray, rgb, CV_GRAY2BGR); - memcpy( left.data, rgb->imageData, left.xsize*left.ysize*3 ); - -} - -///////////////////////////////////////////////////////// -// processDualImage -// -///////////////////////////////////////////////////////// -void pix_opencv_hu_compare :: processGray_Gray(imageStruct &left, imageStruct &right) -{ - double dist = 100.0, ndist; - int i = 0; // Indicator of cycles. - CvSeq *contourl=NULL, *contourlp; - CvRect rect; - CvMemStorage *mstorage; - CvSeq *contourr = NULL; - int size; - - if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) - { - post( "pix_opencv_hu_compare : left and right image are not of the same size" ); - return; - } - - if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) - { - this->comp_xsize=left.xsize; - this->comp_ysize=left.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&rgbar); - cvReleaseImage(&rgbr); - cvReleaseImage(&grayr); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - } - - memcpy( grayr->imageData, right.data, right.xsize*right.ysize ); - - // calculate the biggest contour - try { - cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - } - catch(...) { - post( "pix_opencv_hu_compare : error calculating contours" ); - return; - } - - if ( contourr ) - { - size=0; - for( ; contourr != 0; contourr = contourr->h_next ) - { - rect = cvContourBoundingRect( contourr, 1); - if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - x_bcontourr = contourr; - size = rect.width*rect.height; - } - } - } - - memcpy( gray->imageData, left.data, left.xsize*left.ysize ); - - mstorage = cvCreateMemStorage(0); - - cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - - if ( contourl && x_bcontourr ) - { - contourlp=contourl; - for( ; contourlp != 0; contourlp = contourlp->h_next ) - { - rect = cvContourBoundingRect( contourlp, 1); - if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - ndist = cvMatchShapes( x_bcontourr, contourlp, x_method, 0 ); - if ( ndist < dist ) dist = ndist; - if ( ndist < x_cdistance ) - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - } - else - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); - } - } - } - } - - if ( dist < 100.00 ) outlet_float( m_dataout, dist ); - - cvReleaseMemStorage(&mstorage); - - memcpy( left.data, gray->imageData, left.xsize*left.ysize ); - -} - -void pix_opencv_hu_compare :: processYUV_YUV(imageStruct &left, imageStruct &right) -{ - post( "pix_opencv_hu_compare : YUV colorspace not supported" ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_hu_compare :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_hu_compare::floatMethodMessCallback, - gensym("method"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hu_compare::floatMinSizeMessCallback, - gensym("minsize"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hu_compare::clearMessCallback, - gensym("clear"), A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_hu_compare::floatCriteriaMessCallback, - gensym("criteria"), A_FLOAT, A_NULL); -} - -void pix_opencv_hu_compare :: floatMethodMessCallback(void *data, t_floatarg method) -{ - GetMyClass(data)->floatMethodMess((float)method); -} - -void pix_opencv_hu_compare :: floatMinSizeMessCallback(void *data, t_floatarg minsize) -{ - GetMyClass(data)->floatMinSizeMess((float)minsize); -} - -void pix_opencv_hu_compare :: clearMessCallback(void *data) -{ - GetMyClass(data)->clearMess(); -} - -void pix_opencv_hu_compare :: floatCriteriaMessCallback(void *data, t_floatarg criteria) -{ - GetMyClass(data)->floatCriteriaMess((float)criteria); -} - -void pix_opencv_hu_compare :: floatMethodMess(float method) -{ - if ((int)method==CV_CONTOURS_MATCH_I1) - { - post( "pix_opencv_hu_compare : method set to CV_CONTOURS_MATCH_I1" ); - x_method = (int)method; - } - if ((int)method==CV_CONTOURS_MATCH_I2) - { - post( "pix_opencv_hu_compare : method set to CV_CONTOURS_MATCH_I2" ); - x_method = (int)method; - } - if ((int)method==CV_CONTOURS_MATCH_I3) - { - post( "pix_opencv_hu_compare : method set to CV_CONTOURS_MATCH_I3" ); - x_method = (int)method; - } -} - -void pix_opencv_hu_compare :: floatMinSizeMess(float minsize) -{ - if ( (int)minsize > 0 ) - { - x_minsize = (int)minsize; - } -} - -void pix_opencv_hu_compare :: clearMess(void) -{ - x_bcontourr = NULL; -} - -void pix_opencv_hu_compare :: floatCriteriaMess(float criteria) -{ - if ( criteria > 0.0 ) - { - x_cdistance = criteria; - } -} diff --git a/pix_opencv_hu_compare.h b/pix_opencv_hu_compare.h deleted file mode 100644 index fbe1c12..0000000 --- a/pix_opencv_hu_compare.h +++ /dev/null @@ -1,93 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Hu moments comparison used to compare contours - - Copyright (c) 1997-1998 Mark Danks. mark@danks.org - Copyright (c) G¸nther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::f¸r::uml‰ute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_HU_COMPARE_H_ -#define INCLUDE_PIX_OPENCV_HU_COMPARE_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/compat.hpp" -#endif - -#include "Base/GemPixDualObj.h" - -/*----------------------------------------------------------------- -CLASS - pix_opencv_hu_compare - - Hu moments comparison used to compare contours - ------------------------------------------------------------------*/ - -class GEM_EXTERN pix_opencv_hu_compare : public GemPixDualObj -{ - CPPEXTERN_HEADER(pix_opencv_hu_compare, GemPixDualObj) - - public: - - ////////// - // Constructor - pix_opencv_hu_compare(int,t_atom*); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_hu_compare(); - - ////////// - // Do the processing - virtual void processRGBA_RGBA(imageStruct &left, imageStruct &right); - virtual void processRGB_RGB(imageStruct &left, imageStruct &right); - virtual void processYUV_YUV(imageStruct &left, imageStruct &right); - virtual void processGray_Gray(imageStruct &left, imageStruct &right); - - ////////// - // change method used - void floatMethodMess(float method); - void floatMinSizeMess(float minsize); - void clearMess(void); - void floatCriteriaMess(float criteria); - - int comp_xsize; - int comp_ysize; - - t_outlet *m_dataout; - t_outlet *m_posout; - - int x_method; - int x_minsize; - float x_cdistance; - - private: - - ////////// - // Static member functions - static void floatMethodMessCallback(void *data, float method); - static void floatMinSizeMessCallback(void *data, float minsize); - static void clearMessCallback(void *data); - static void floatCriteriaMessCallback(void *data, float criteria); - - IplImage *rgba, *rgb, *gray; - IplImage *rgbar, *rgbr, *grayr; - - CvMemStorage *x_storage; - CvSeq *x_bcontourr; - - t_atom rlist[5]; - -}; - -#endif // for header file diff --git a/pix_opencv_hu_moments-help.pd b/pix_opencv_hu_moments-help.pd deleted file mode 100644 index dcac648..0000000 --- a/pix_opencv_hu_moments-help.pd +++ /dev/null @@ -1,147 +0,0 @@ -#N canvas 625 121 820 711 10; -#X obj 13 0 gemhead; -#X obj 30 439 pix_texture; -#X obj 30 467 square 2; -#X obj 506 536 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 171 266 gemwin; -#X msg 164 226 create \, 1; -#X msg 252 229 destroy; -#X msg 292 186 frame 25; -#X obj 173 176 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 516 580 pd gemwin; -#X msg 516 562 create; -#X obj 114 -18 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 114 11 openpanel; -#X msg 114 31 open \$1; -#X obj 15 182 cnv 15 400 250 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X text 514 539 Create window and render; -#X obj 32 235 pix_opencv_hu_moments; -#X msg 82 197 binary \$1; -#X obj 152 198 tgl 15 0 sbin empty empty 17 7 0 10 -262144 -1 -1 1 -1; -#X text 171 198 treat incoming frames as binary data; -#X text 187 -19 Written by Yves Degoyon ( ydegoyon@gmail.com ); -#X text 186 -67 pix_opencv_hu_moments :: Calculates the hu moments -of contours.; -#X obj 135 256 unpack f f f f f f f; -#X floatatom 145 283 30 0 0 0 - - h1; -#X text 125 282 h1; -#X floatatom 156 305 30 0 0 0 - - h2; -#X floatatom 167 326 30 0 0 0 - - h3; -#X floatatom 180 347 30 0 0 0 - - h4; -#X floatatom 196 369 30 0 0 0 - - h5; -#X floatatom 208 389 30 0 0 0 - - h6; -#X floatatom 217 412 30 0 0 0 - - h7; -#X text 136 304 h2; -#X text 148 325 h3; -#X text 161 346 h4; -#X text 176 368 h5; -#X text 188 388 h6; -#X text 197 411 h7; -#X obj 115 104 pix_image; -#X text 187 -43 Load here with a simple patterns image and compare -the moments.; -#X obj 546 20 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 546 49 openpanel; -#X msg 546 69 open \$1; -#X obj 430 185 cnv 15 400 250 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 447 238 pix_opencv_hu_moments; -#X msg 497 200 binary \$1; -#X obj 567 201 tgl 15 0 sbin empty empty 17 7 0 10 -262144 -1 -1 1 -1; -#X text 593 201 treat incoming frames as binary data; -#X obj 550 259 unpack f f f f f f f; -#X floatatom 560 286 30 0 0 0 - - h1; -#X text 540 285 h1; -#X floatatom 571 308 30 0 0 0 - - h2; -#X floatatom 582 329 30 0 0 0 - - h3; -#X floatatom 595 350 30 0 0 0 - - h4; -#X floatatom 611 372 30 0 0 0 - - h5; -#X floatatom 623 392 30 0 0 0 - - h6; -#X floatatom 632 415 30 0 0 0 - - h7; -#X text 551 307 h2; -#X text 563 328 h3; -#X text 576 349 h4; -#X text 591 371 h5; -#X text 603 391 h6; -#X text 612 414 h7; -#X obj 484 117 pix_image; -#X obj 115 133 translateXYZ -2 0 0; -#X obj 447 445 pix_texture; -#X obj 447 473 square 2; -#X floatatom 216 100 5 0 0 0 - - -; -#X obj 384 9 gemhead; -#X obj 385 29 translateXYZ 2 0 0; -#X obj 116 161 pix_rgba; -#X obj 469 155 pix_rgba; -#X connect 0 0 32 0; -#X connect 1 0 2 0; -#X connect 4 0 5 0; -#X connect 5 0 4 0; -#X connect 6 0 7 0; -#X connect 7 0 8 0; -#X connect 8 0 32 0; -#X connect 11 0 1 0; -#X connect 11 1 17 0; -#X connect 12 0 11 0; -#X connect 13 0 12 0; -#X connect 17 0 18 0; -#X connect 17 1 20 0; -#X connect 17 2 21 0; -#X connect 17 3 22 0; -#X connect 17 4 23 0; -#X connect 17 5 24 0; -#X connect 17 6 25 0; -#X connect 32 0 58 0; -#X connect 34 0 35 0; -#X connect 35 0 36 0; -#X connect 36 0 57 0; -#X connect 38 0 59 0; -#X connect 38 1 42 0; -#X connect 39 0 38 0; -#X connect 40 0 39 0; -#X connect 42 0 43 0; -#X connect 42 1 45 0; -#X connect 42 2 46 0; -#X connect 42 3 47 0; -#X connect 42 4 48 0; -#X connect 42 5 49 0; -#X connect 42 6 50 0; -#X connect 57 0 65 0; -#X connect 58 0 64 0; -#X connect 59 0 60 0; -#X connect 61 0 58 1; -#X connect 62 0 63 0; -#X connect 63 0 57 0; -#X connect 64 0 11 0; -#X connect 65 0 38 0; diff --git a/pix_opencv_hu_moments.cc b/pix_opencv_hu_moments.cc deleted file mode 100644 index 6665107..0000000 --- a/pix_opencv_hu_moments.cc +++ /dev/null @@ -1,207 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_hu_moments.h" - -CPPEXTERN_NEW(pix_opencv_hu_moments) - -///////////////////////////////////////////////////////// -// -// pix_opencv_hu_moments -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_hu_moments :: pix_opencv_hu_moments() -{ - m_dataout = outlet_new(this->x_obj, &s_anything); - - comp_xsize = 320; - comp_ysize = 240; - - x_binary = 0; - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_hu_moments :: ~pix_opencv_hu_moments() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_hu_moments :: processRGBAImage(imageStruct &image) -{ - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgba ) - { - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - } - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor(rgba, gray, CV_BGRA2GRAY); - - cvMoments( gray, &x_moments, x_binary ); - cvGetHuMoments( &x_moments, &x_humoments ); - - SETFLOAT(&rlist[0], x_humoments.hu1); - SETFLOAT(&rlist[1], x_humoments.hu2); - SETFLOAT(&rlist[2], x_humoments.hu3); - SETFLOAT(&rlist[3], x_humoments.hu4); - SETFLOAT(&rlist[4], x_humoments.hu5); - SETFLOAT(&rlist[5], x_humoments.hu6); - SETFLOAT(&rlist[6], x_humoments.hu7); - - outlet_list( m_dataout, 0, 7, rlist ); -} - -void pix_opencv_hu_moments :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgb ) - { - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - } - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - cvMoments( gray, &x_moments, x_binary ); - cvGetHuMoments( &x_moments, &x_humoments ); - - SETFLOAT(&rlist[0], x_humoments.hu1); - SETFLOAT(&rlist[1], x_humoments.hu2); - SETFLOAT(&rlist[2], x_humoments.hu3); - SETFLOAT(&rlist[3], x_humoments.hu4); - SETFLOAT(&rlist[4], x_humoments.hu5); - SETFLOAT(&rlist[5], x_humoments.hu6); - SETFLOAT(&rlist[6], x_humoments.hu7); - - outlet_list( m_dataout, 0, 7, rlist ); -} - -void pix_opencv_hu_moments :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_hu_moments : yuv format not supported" ); -} - -void pix_opencv_hu_moments :: processGrayImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgb ) - { - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - } - - //create the orig image with new size - rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - cvMoments( gray, &x_moments, x_binary ); - cvGetHuMoments( &x_moments, &x_humoments ); - - SETFLOAT(&rlist[0], x_humoments.hu1); - SETFLOAT(&rlist[1], x_humoments.hu2); - SETFLOAT(&rlist[2], x_humoments.hu3); - SETFLOAT(&rlist[3], x_humoments.hu4); - SETFLOAT(&rlist[4], x_humoments.hu5); - SETFLOAT(&rlist[5], x_humoments.hu6); - SETFLOAT(&rlist[6], x_humoments.hu7); - - outlet_list( m_dataout, 0, 7, rlist ); -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_hu_moments :: floatBinaryMess (float binary) -{ - if ( ((int)binary==1) || ((int)binary==0) ) x_binary = (int)binary; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_hu_moments :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_hu_moments::floatBinaryMessCallback, - gensym("binary"), A_FLOAT, A_NULL); -} - -void pix_opencv_hu_moments :: floatBinaryMessCallback(void *data, t_floatarg binary) -{ - GetMyClass(data)->floatBinaryMess((float)binary); -} - diff --git a/pix_opencv_hu_moments.h b/pix_opencv_hu_moments.h deleted file mode 100644 index d7b2d48..0000000 --- a/pix_opencv_hu_moments.h +++ /dev/null @@ -1,86 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Hu moments calculator object - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_HU_MOMENTS_H_ -#define INCLUDE_PIX_OPENCV_HU_MOMENTS_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_hu_moments - - Hu moments calculator object - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_hu_moments : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_hu_moments, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_hu_moments(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_hu_moments(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatBinaryMess(float binary); - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - int x_binary; - t_outlet *m_dataout; - t_atom rlist[7]; - - private: - - ////////// - // Static member functions - static void floatBinaryMessCallback(void *data, t_floatarg binary); - - ///////// - // IplImage needed - IplImage *rgba, *rgb, *gray; - CvMoments x_moments; - CvHuMoments x_humoments; -}; - -#endif // for header file diff --git a/pix_opencv_knear-help.pd b/pix_opencv_knear-help.pd deleted file mode 100644 index 7638871..0000000 --- a/pix_opencv_knear-help.pd +++ /dev/null @@ -1,90 +0,0 @@ -#N canvas 435 113 1154 642 10; -#X obj 384 31 gemhead; -#X obj 365 414 pix_texture; -#X obj 365 442 square 2; -#X obj 9 -28 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 5 49 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 39 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#X msg 156 142 dimen 256 128; -#X obj 127 212 gemwin; -#X msg 120 172 create \, 1; -#X msg 208 175 destroy; -#X msg 248 132 frame 25; -#X obj 129 122 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 6 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 1 5 0; -#X connect 10 2 9 0; -#X restore 14 16 pd gemwin; -#X msg 14 -8 destroy; -#X text 15 -25 Create window and render; -#X obj 200 368 pix_texture; -#X obj 200 396 square 2; -#X obj 367 159 translateXYZ -2 0 0; -#X obj 367 193 separator; -#X obj 343 221 cnv 15 700 180 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 356 -55 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 356 -26 openpanel; -#X msg 356 -6 open \$1; -#X obj 364 259 translateXYZ 4 0 0; -#X text 9 -82 based on basic OCR with Open CV tutorial; -#X text 9 -71 by damiles : http://blog.damiles.com/?p=93; -#X text 9 -58 adapted to PD by Yves Degoyon ( ydegoyon@gmail.com ) -; -#X text 9 -93 pix_opencv_knear : OCR-like pattern recognition; -#X msg 532 250 bang; -#X text 628 251 Compare the incoming frame to the patterns; -#X text 667 281 Load a new set of patterns from a directory; -#X text 668 293 All patterns should be of the same size; -#X msg 550 283 load ../plus 50; -#X floatatom 591 355 10 0 0 0 - - -; -#X text 663 356 Distance of the incoming frame compared to the patterns -; -#X obj 384 72 pix_image; -#X obj 365 335 pix_opencv_knear /usr/local/pd/pdp_opencv/doc/plus 50 -; -#X obj 592 380 print distance; -#X obj 572 251 loadbang; -#X obj 382 110 pix_grey; -#X text 433 -33 load patterns \, create the Gem window and then load -a character image; -#X msg 560 310 load /usr/local/pd/pdp_opencv/plus 50; -#X connect 0 0 27 0; -#X connect 1 0 2 0; -#X connect 4 0 5 0; -#X connect 5 0 4 0; -#X connect 7 0 8 0; -#X connect 9 0 7 0; -#X connect 9 0 10 0; -#X connect 10 0 15 0; -#X connect 12 0 13 0; -#X connect 12 0 20 0; -#X connect 13 0 14 0; -#X connect 14 0 27 0; -#X connect 15 0 28 0; -#X connect 20 0 28 0; -#X connect 24 0 28 0; -#X connect 27 0 31 0; -#X connect 28 0 1 0; -#X connect 28 1 25 0; -#X connect 28 1 29 0; -#X connect 30 0 20 0; -#X connect 31 0 9 0; -#X connect 33 0 28 0; diff --git a/pix_opencv_knear.cc b/pix_opencv_knear.cc deleted file mode 100644 index 76944dd..0000000 --- a/pix_opencv_knear.cc +++ /dev/null @@ -1,494 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_knear.h" - -#include - -CPPEXTERN_NEW_WITH_TWO_ARGS(pix_opencv_knear, t_symbol *, A_DEFSYM, t_floatarg, A_DEFFLOAT ) - -///////////////////////////////////////////////////////// -// -// pix_opencv_knear -// -///////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////// -// -// Find the min box. The min box respect original aspect ratio image -// The image is a binary data and background is white. -// -///////////////////////////////////////////////////////// - - -void pix_opencv_knear :: findX(IplImage* imgSrc,int* min, int* max) -{ - int i; - int minFound=0; - CvMat data; - CvScalar maxVal=cvRealScalar(imgSrc->width * 255); - CvScalar val=cvRealScalar(0); - - // for each col sum, if sum < width*255 then we find the min - // then continue to end to search the max, if sum< width*255 then is new max - for (i=0; i< imgSrc->width; i++) - { - cvGetCol(imgSrc, &data, i); - val= cvSum(&data); - if(val.val[0] < maxVal.val[0]) - { - *max= i; - if(!minFound) - { - *min= i; - minFound= 1; - } - } - - } -} - -void pix_opencv_knear :: findY(IplImage* imgSrc,int* min, int* max) -{ - int i; - int minFound=0; - CvMat data; - CvScalar maxVal=cvRealScalar(imgSrc->width * 255); - CvScalar val=cvRealScalar(0); - - // for each col sum, if sum < width*255 then we find the min - // then continue to end to search the max, if sum< width*255 then is new max - for (i=0; i< imgSrc->height; i++) - { - cvGetRow(imgSrc, &data, i); - val= cvSum(&data); - if(val.val[0] < maxVal.val[0]) - { - *max=i; - if(!minFound) - { - *min= i; - minFound= 1; - } - } - } -} - -///////////////////////////////////////////////////////// -// -// Find the bounding box. -// -// -///////////////////////////////////////////////////////// - -CvRect pix_opencv_knear :: findBB(IplImage* imgSrc) -{ - CvRect aux; - int xmin, xmax, ymin, ymax; - xmin=xmax=ymin=ymax=0; - - this->findX(imgSrc, &xmin, &xmax); - this->findY(imgSrc, &ymin, &ymax); - - aux=cvRect(xmin, ymin, xmax-xmin, ymax-ymin); - - return aux; -} - -IplImage pix_opencv_knear :: preprocessing(IplImage* imgSrc,int new_width, int new_height) -{ - IplImage* result; - IplImage* scaledResult; - - CvMat data; - CvMat dataA; - CvRect bb;//bounding box - CvRect bba;//boundinb box maintain aspect ratio - - // find bounding box - bb=this->findBB(imgSrc); - - if ( ( bb.width == 0 ) || ( bb.height == 0 ) ) - { - bb.x = 0; - bb.y = 0; - bb.width = imgSrc->width; - bb.height = imgSrc->height; - } - - // get bounding box data and no with aspect ratio, the x and y can be corrupted - cvGetSubRect(imgSrc, &data, cvRect(bb.x, bb.y, bb.width, bb.height)); - // create image with this data with width and height with aspect ratio 1 - // then we get highest size betwen width and height of our bounding box - int size=(bb.width>bb.height)?bb.width:bb.height; - result=cvCreateImage( cvSize( size, size ), 8, 1 ); - cvSet(result,CV_RGB(255,255,255),NULL); - // copy de data in center of image - int x=(int)floor((float)(size-bb.width)/2.0f); - int y=(int)floor((float)(size-bb.height)/2.0f); - cvGetSubRect(result, &dataA, cvRect(x,y,bb.width, bb.height)); - cvCopy(&data, &dataA, NULL); - // scale result - scaledResult=cvCreateImage( cvSize( new_width, new_height ), 8, 1 ); - cvResize(result, scaledResult, CV_INTER_NN); - - // return processed data - return *scaledResult; - -} - -void pix_opencv_knear :: load_patterns(void) -{ - IplImage* src_image; - IplImage prs_image; - CvMat row,data; - char file[255]; - int i=0,j; - CvMat row_header, *row1; - - this->x_rsamples = 0; - - for( j = 0; j< this->x_nsamples; j++) - { - - // load file - sprintf(file,"%s/%03d.png",this->x_filepath, j); - src_image = cvLoadImage(file,0); - if(!src_image) - { - post("pix_opencv_knear : error: couldn't load image %s\n", file); - continue; - } - if ( ( this->x_pwidth == -1 ) || ( this->x_pheight == -1 ) ) - { - this->x_pwidth = src_image->width; - this->x_pheight = src_image->height; - // post( "pix_opencv_knear : loaded : %s (%dx%d)", file, src_image->width, src_image->height); - this->x_rsamples++; - } - else if ( ( src_image->width != this->x_pwidth ) || ( src_image->height != this->x_pheight ) ) - { - post( "pix_opencv_knear : error : %s (%dx%d) : wrong size ( should be %dx%d )", file, src_image->width, src_image->height, this->x_pwidth, this->x_pheight); - continue; - } - else - { - // post( "pix_opencv_knear : loaded : %s (%dx%d)", file, src_image->width, src_image->height); - this->x_rsamples++; - } - - // process file - prs_image = this->preprocessing(src_image, this->x_pwidth, this->x_pheight); - // post( "pix_opencv_knear : preprocessed : %s (%dx%d)", file, this->x_pwidth, this->x_pheight); - - if ( ( this->trainData == NULL ) || ( this->trainClasses == NULL )) - { - this->trainData = cvCreateMat(this->x_nsamples, this->x_pwidth*this->x_pheight, CV_32FC1); - this->trainClasses = cvCreateMat(this->x_nsamples, 1, CV_32FC1); - } - - // set class label - cvGetRow(this->trainClasses, &row, j); - cvSet(&row, cvRealScalar(i), NULL); - // set data - cvGetRow(this->trainData, &row, j); - - IplImage* img = cvCreateImage( cvSize( this->x_pwidth, this->x_pheight ), IPL_DEPTH_32F, 1 ); - // convert 8 bits image to 32 float image - cvConvertScale(&prs_image, img, 0.0039215, 0); - - cvGetSubRect(img, &data, cvRect( 0, 0, this->x_pwidth, this->x_pheight) ); - - // convert data matrix sizexsize to vecor - row1 = cvReshape( &data, &row_header, 0, 1 ); - cvCopy(row1, &row, NULL); - cvReleaseImage( &img ); - } - - // create the classifier - post( "pix_opencv_knear : loaded : %d samples from %s", this->x_rsamples, this->x_filepath); - if ( this->x_rsamples == this->x_nsamples ) - { - this->knn=new CvKNearest( this->trainData, this->trainClasses, 0, false, this->x_nsamples ); - this->x_nearest=cvCreateMat(1,this->x_nsamples,CV_32FC1); - this->x_dist=cvCreateMat(1,this->x_nsamples,CV_32FC1); - } -} - - -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_knear :: pix_opencv_knear(t_symbol *path, t_floatarg nsamples) -{ - m_dataout = outlet_new(this->x_obj, &s_anything); - - comp_xsize = 320; - comp_ysize = 240; - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_filepath = ( char * ) getbytes( 1024 ); - sprintf( x_filepath, path->s_name ); - x_nsamples = (int)nsamples; - - x_classify = 0; - x_pwidth = -1; - x_pheight = -1; - - trainData = NULL; - trainClasses = NULL; - - this->load_patterns(); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_knear :: ~pix_opencv_knear() -{ - // destroy cv structures - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseMat( &trainData ); - cvReleaseMat( &trainClasses ); - -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_knear :: processRGBAImage(imageStruct &image) -{ - int i; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - // destroy cv_images to clean memory - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - - // create cv_images - this->rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - this->rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - this->grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor(rgba, grey, CV_BGRA2GRAY); - - if ( this->x_classify ) - { - IplImage prs_image; - float result; - CvMat row_header, *row1, odata; - - // post( "pix_opencv_knear : size : (%dx%d)", this->x_pwidth, this->x_pheight); - - // process file - prs_image = this->preprocessing(this->grey, this->x_pwidth, this->x_pheight); - - //Set data - IplImage* img32 = cvCreateImage( cvSize( this->x_pwidth, this->x_pheight ), IPL_DEPTH_32F, 1 ); - cvConvertScale(&prs_image, img32, 0.0039215, 0); - cvGetSubRect(img32, &odata, cvRect(0,0, this->x_pwidth, this->x_pheight)); - row1 = cvReshape( &odata, &row_header, 0, 1 ); - - result=this->knn->find_nearest(row1,this->x_nsamples,0,0,this->x_nearest,this->x_dist); - for ( i=0; ix_nsamples; i++ ) - { - // post( "pix_opencv_knear : distance : %f", this->x_dist->data.fl[i] ); - } - outlet_float(this->m_dataout, this->x_dist->data.fl[0]); - - cvReleaseImage( &img32 ); - this->x_classify = 0; - } - - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_knear :: processRGBImage(imageStruct &image) -{ - int i; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - // destroy cv_images to clean memory - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - - // create cv_images - this->rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - this->rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - this->grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor(rgb, grey, CV_BGR2GRAY); - - if ( this->x_classify ) - { - IplImage prs_image; - float result; - CvMat row_header, *row1, odata; - - // post( "pix_opencv_knear : size : (%dx%d)", this->x_pwidth, this->x_pheight); - - // process file - prs_image = this->preprocessing(this->grey, this->x_pwidth, this->x_pheight); - - //Set data - IplImage* img32 = cvCreateImage( cvSize( this->x_pwidth, this->x_pheight ), IPL_DEPTH_32F, 1 ); - cvConvertScale(&prs_image, img32, 0.0039215, 0); - cvGetSubRect(img32, &odata, cvRect(0,0, this->x_pwidth, this->x_pheight)); - row1 = cvReshape( &odata, &row_header, 0, 1 ); - - result=this->knn->find_nearest(row1,this->x_nsamples,0,0,this->x_nearest,this->x_dist); - for ( i=0; ix_nsamples; i++ ) - { - // post( "pix_opencv_knear : distance : %f", this->x_dist->data.fl[i] ); - } - outlet_float(this->m_dataout, this->x_dist->data.fl[0]); - - cvReleaseImage( &img32 ); - this->x_classify = 0; - } - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_knear :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_knear : yuv format not supported" ); -} - -void pix_opencv_knear :: processGrayImage(imageStruct &image) -{ - int i; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - // destroy cv_images to clean memory - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - - // create cv_images - this->rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - this->rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - this->grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - } - - memcpy( grey->imageData, image.data, image.xsize*image.ysize*1 ); - - if ( this->x_classify ) - { - IplImage prs_image; - float result; - CvMat row_header, *row1, odata; - - // post( "pix_opencv_knear : size : (%dx%d)", this->x_pwidth, this->x_pheight); - - // process file - prs_image = this->preprocessing(this->grey, this->x_pwidth, this->x_pheight); - - //Set data - IplImage* img32 = cvCreateImage( cvSize( this->x_pwidth, this->x_pheight ), IPL_DEPTH_32F, 1 ); - cvConvertScale(&prs_image, img32, 0.0039215, 0); - cvGetSubRect(img32, &odata, cvRect(0,0, this->x_pwidth, this->x_pheight)); - row1 = cvReshape( &odata, &row_header, 0, 1 ); - - result=this->knn->find_nearest(row1,this->x_nsamples,0,0,this->x_nearest,this->x_dist); - for ( i=0; ix_nsamples; i++ ) - { - // post( "pix_opencv_knear : distance : %f", this->x_dist->data.fl[i] ); - } - outlet_float(this->m_dataout, this->x_dist->data.fl[0]); - - cvReleaseImage( &img32 ); - this->x_classify = 0; - } - - memcpy( image.data, grey->imageData, image.xsize*image.ysize*1 ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_knear :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_knear::bangMessCallback, - gensym("bang"), A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_knear::loadMessCallback, - gensym("load"), A_SYMBOL, A_DEFFLOAT, A_NULL); -} - -void pix_opencv_knear :: bangMessCallback(void *data) -{ - if ( GetMyClass(data)->trainData == NULL ) - { - ::post( "pix_opencv_knear : no patterns loaded : cannot process" ); - return; - } - GetMyClass(data)->x_classify=1; -} - -void pix_opencv_knear :: loadMessCallback(void *data, t_symbol *path, t_floatarg nsamples) -{ - if ( (int) nsamples <= 0 ) - { - ::post( "pix_opencv_knear : wrong number of samples : %d", nsamples ); - return; - } - else - { - GetMyClass(data)->x_nsamples = (int)nsamples; - GetMyClass(data)->x_rsamples = 0; - cvReleaseMat( &GetMyClass(data)->trainData ); - cvReleaseMat( &GetMyClass(data)->trainClasses ); - GetMyClass(data)->trainData = NULL; - GetMyClass(data)->trainClasses = NULL; - } - strcpy( GetMyClass(data)->x_filepath, path->s_name ); - GetMyClass(data)->load_patterns(); -} diff --git a/pix_opencv_knear.h b/pix_opencv_knear.h deleted file mode 100644 index f19a477..0000000 --- a/pix_opencv_knear.h +++ /dev/null @@ -1,103 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Simple distance classifier - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_KNEAR_H_ -#define INCLUDE_PIX_OPENCV_KNEAR_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/highgui/highgui_c.h" -#include "opencv2/ml/ml.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - - pix_opencv_knear : OCR like pattern recognition - based on basic OCR with Open CV tutorial - by damiles : http://blog.damiles.com/?p=93 - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_knear : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_knear, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_knear(t_symbol *path, t_floatarg nsamples); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_knear(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - void findX(IplImage* imgSrc,int* min, int* max); - void findY(IplImage* imgSrc,int* min, int* max); - CvRect findBB(IplImage* imgSrc); - IplImage preprocessing(IplImage* imgSrc,int new_width, int new_height); - void load_patterns(void); - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - - private: - - ////////// - // Static member functions - static void bangMessCallback(void *data); - static void loadMessCallback(void *data, t_symbol *path, t_floatarg nsamples); - - // internal data - t_outlet *m_dataout; - int x_classify; - - // open cv classifier data - char *x_filepath; - int x_nsamples; - int x_rsamples; - CvMat *trainData; - CvMat *trainClasses; - CvMat *x_nearest; - CvMat *x_dist; - int x_pwidth; - int x_pheight; - CvKNearest *knn; - - // The output and temporary images - IplImage *rgba, *rgb, *grey; - -}; - -#endif // for header file diff --git a/pix_opencv_laplace-help.pd b/pix_opencv_laplace-help.pd deleted file mode 100644 index ca44d22..0000000 --- a/pix_opencv_laplace-help.pd +++ /dev/null @@ -1,153 +0,0 @@ -#N canvas 487 97 970 899 10; -#X obj 347 393 cnv 15 200 70 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 374 435 pix_opencv_laplace; -#X msg 419 410 1; -#X msg 453 410 3; -#X msg 486 410 5; -#X msg 518 410 7; -#X text 381 392 aperture size ( default 3 ); -#X text 517 343 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -); -#X text 517 332 used as an edge detector; -#X text 516 319 pix_opencv_laplace : laplace filter; -#X obj 515 232 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 160 260 gemwin; -#X msg 159 207 create \, 1; -#X msg 235 208 destroy; -#X msg 281 180 frame 25; -#X obj 162 170 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 520 276 pd gemwin; -#X msg 520 255 create; -#X text 521 237 Create window and render; -#X obj 493 -11 gemhead; -#X obj 374 316 separator; -#X obj 505 16 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 562 191 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 544 156 5 0 10000 1 frame# - -; -#X obj 505 45 openpanel; -#X msg 505 65 open \$1; -#X obj 493 174 pix_film; -#X msg 511 108 auto \$1; -#X obj 511 90 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 606 91 colorspace RGBA; -#X msg 711 91 colorspace RGB; -#X msg 815 91 colorspace Grey; -#X obj 606 63 loadbang; -#X obj 373 287 pix_separator; -#X obj 222 319 separator; -#X obj 222 290 pix_separator; -#X obj 222 354 translateXYZ -2 0 0; -#X obj 374 351 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 315 245 pd vswitch; -#X obj 383 244 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 256 172 pix_video; -#X obj 256 -16 gemhead; -#X msg 295 97 device 0; -#X msg 304 128 driver 1; -#X msg 281 43 dialog; -#X msg 286 73 device /dev/dv1394-0; -#X obj 374 495 pix_texture; -#X obj 374 514 square 2; -#X obj 222 491 pix_texture; -#X obj 222 519 square 2; -#X obj 316 271 pix_rgba; -#X connect 1 0 41 0; -#X connect 2 0 1 1; -#X connect 3 0 1 1; -#X connect 4 0 1 1; -#X connect 5 0 1 1; -#X connect 11 0 12 0; -#X connect 12 0 11 0; -#X connect 14 0 21 0; -#X connect 15 0 32 0; -#X connect 16 0 19 0; -#X connect 17 0 18 0; -#X connect 18 0 21 1; -#X connect 19 0 20 0; -#X connect 20 0 21 0; -#X connect 21 0 33 1; -#X connect 21 2 17 0; -#X connect 22 0 21 0; -#X connect 23 0 22 0; -#X connect 24 0 21 0; -#X connect 24 0 35 0; -#X connect 25 0 21 0; -#X connect 26 0 21 0; -#X connect 27 0 24 0; -#X connect 27 0 23 0; -#X connect 28 0 15 0; -#X connect 29 0 31 0; -#X connect 30 0 29 0; -#X connect 31 0 43 0; -#X connect 32 0 1 0; -#X connect 33 0 45 0; -#X connect 34 0 33 2; -#X connect 35 0 33 0; -#X connect 36 0 35 0; -#X connect 37 0 35 0; -#X connect 38 0 35 0; -#X connect 39 0 35 0; -#X connect 40 0 35 0; -#X connect 41 0 42 0; -#X connect 43 0 44 0; -#X connect 45 0 30 0; -#X connect 45 0 28 0; diff --git a/pix_opencv_laplace.cc b/pix_opencv_laplace.cc deleted file mode 100644 index 163cd63..0000000 --- a/pix_opencv_laplace.cc +++ /dev/null @@ -1,228 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_laplace.h" - -CPPEXTERN_NEW(pix_opencv_laplace) - -///////////////////////////////////////////////////////// -// -// pix_opencv_laplace -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_laplace :: pix_opencv_laplace() -{ - int i; - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); - - aperture_size = 3; - comp_xsize = 0; - comp_ysize = 0; - - rgb = NULL; - rgba = NULL; - grey = NULL; - laplace = NULL; - colorlaplace = NULL; - for (i=0; i<3; i++) planes[i] = NULL; - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_laplace :: ~pix_opencv_laplace() -{ - int i; - //Destroy cv_images to clean memory - for( i = 0; i < 3; i++ ) - cvReleaseImage( &planes[i] ); - cvReleaseImage( &rgb ); - cvReleaseImage( &rgba ); - cvReleaseImage( &grey ); - cvReleaseImage( &laplace ); - cvReleaseImage( &colorlaplace ); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_laplace :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - for( i = 0; i < 3; i++ ) - cvReleaseImage( &planes[i] ); - cvReleaseImage( &rgb ); - cvReleaseImage( &rgba ); - cvReleaseImage( &grey ); - cvReleaseImage( &laplace ); - cvReleaseImage( &colorlaplace ); - - //Create cv_images - for( i = 0; i < 3; i++ ) - planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); - colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - rgba = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 4 ); - grey = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - cvCvtColor( rgba, rgb, CV_RGBA2RGB); - - cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); - for( i = 0; i < 3; i++ ) - { - cvLaplace( planes[i], laplace, aperture_size ); - cvConvertScaleAbs( laplace, planes[i], 1, 0 ); - } - cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); - colorlaplace->origin = rgb->origin; - - cvCvtColor( colorlaplace, rgba, CV_RGB2RGBA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_laplace :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - for( i = 0; i < 3; i++ ) - cvReleaseImage( &planes[i] ); - cvReleaseImage( &rgb ); - cvReleaseImage( &laplace ); - cvReleaseImage( &colorlaplace ); - - //Create cv_images - for( i = 0; i < 3; i++ ) - planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); - colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); - for( i = 0; i < 3; i++ ) - { - cvLaplace( planes[i], laplace, 3 ); - cvConvertScaleAbs( laplace, planes[i], 1, 0 ); - } - cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); - colorlaplace->origin = rgb->origin; - - //cvShowImage(wndname, cedge); - memcpy( image.data, colorlaplace->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_laplace :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_laplace : yuv format not supported" ); -} - -void pix_opencv_laplace :: processGrayImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!grey)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - for( i = 0; i < 3; i++ ) - cvReleaseImage( &planes[i] ); - cvReleaseImage( &rgb ); - cvReleaseImage( &laplace ); - cvReleaseImage( &colorlaplace ); - cvReleaseImage( &grey ); - - //Create cv_images - for( i = 0; i < 3; i++ ) - planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); - colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - grey = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 1 ); - } - memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - - cvCvtColor( grey, rgb, CV_GRAY2RGB); - - cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); - for( i = 0; i < 3; i++ ) - { - cvLaplace( planes[i], laplace, 3 ); - cvConvertScaleAbs( laplace, planes[i], 1, 0 ); - } - cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); - colorlaplace->origin = rgb->origin; - - - cvCvtColor( colorlaplace, grey, CV_RGB2GRAY); - //cvShowImage(wndname, cedge); - memcpy( image.data, grey->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// floatApertureMess -// -///////////////////////////////////////////////////////// -void pix_opencv_laplace :: floatApertureMess (float aperture_size) -{ - if ((aperture_size==1)||(aperture_size==3)||(aperture_size==5)||(aperture_size==7)) this->aperture_size = (int)aperture_size; - else post("aperture size out of range ... must be 1,3,5 or 7"); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_laplace :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_laplace::floatApertureMessCallback, - gensym("ft1"), A_FLOAT, A_NULL); -} -void pix_opencv_laplace :: floatApertureMessCallback(void *data, t_floatarg aperture_size) -{ - GetMyClass(data)->floatApertureMess((float)aperture_size); -} diff --git a/pix_opencv_laplace.h b/pix_opencv_laplace.h deleted file mode 100644 index 948c425..0000000 --- a/pix_opencv_laplace.h +++ /dev/null @@ -1,83 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Laplace transform / edge detection - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_LAPLACE_H_ -#define INCLUDE_PIX_OPENCV_LAPLACE_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/compat.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_laplace - - Laplace transform / edge detection - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_laplace : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_laplace, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_laplace(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_laplace(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new aperture_size - void floatApertureMess(float aperture_size); - // The new aperture size - int aperture_size; - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - ////////// - // Static member functions - static void floatApertureMessCallback(void *data, t_floatarg aperture_size); - - ///////// - // IplImage needed - IplImage *rgb, *rgba, *grey, *laplace, *colorlaplace, *planes[3]; - -}; - -#endif // for header file diff --git a/pix_opencv_lk-help.pd b/pix_opencv_lk-help.pd deleted file mode 100644 index 8343d60..0000000 --- a/pix_opencv_lk-help.pd +++ /dev/null @@ -1,242 +0,0 @@ -#N canvas 331 42 1192 685 10; -#X obj 141 -12 cnv 15 700 450 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X floatatom 288 328 5 0 0 0 - - -; -#X text 323 327 window size; -#X obj 353 70 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 268 68 nightmode \$1; -#X text 372 71 set nightmode; -#X msg 263 42 quality \$1; -#X floatatom 338 43 5 0 0 0 - - -; -#X floatatom 346 18 5 0 0 0 - - -; -#X msg 249 17 mindistance \$1; -#X text 387 16 set distance ( default 10 ); -#X msg 242 -11 init; -#X text 311 -11 init point detections; -#X floatatom 431 43 5 0 0 0 - - -; -#X obj 376 41 / 1000; -#X msg 294 136 mark \$1 \$2; -#X msg 308 157 delete \$1; -#X text 502 157 delete a marker; -#X msg 316 177 clear; -#X text 364 178 delete all markers; -#X msg 322 197 maxmove \$1; -#X floatatom 398 199 5 0 0 0 - - -; -#X text 563 42 set quality ( default 100 ); -#X msg 471 41 100; -#X obj 504 41 loadbang; -#X obj 285 383 unpack f f; -#X floatatom 286 408 5 0 0 0 - - -; -#X floatatom 344 409 5 0 0 0 - - -; -#X text 287 424 X; -#X text 342 425 Y; -#X obj 284 357 route 1 2 3 4 5 6 7 8 9 10; -#X text 450 306 position of each marked point; -#X obj 178 346 pix_opencv_lk; -#X obj 664 -167 gemmouse; -#X obj 678 -133 f; -#X obj 648 -134 f; -#X obj 734 -89 t b b; -#X obj 645 -89 pack f f; -#X text 373 137 mark x y : mark a point to track ( max points : 10 -); -#X obj 710 -139 route 1; -#X msg 731 -114 bang; -#X msg 277 91 mark all; -#X msg 287 112 mark none; -#X text 340 92 mark all points; -#X text 357 113 reset all markers; -#X text 422 241 make a delaunay with all points; -#X msg 342 241 delaunay on; -#X msg 350 261 delaunay off; -#X text 451 274 make a delaunay with point 1 and a tolerance of 50 -( all points which color is in that range will be included in the delaunay) -; -#X msg 333 217 ftolerance \$1; -#X floatatom 425 217 5 0 0 0 - - -; -#X text 465 217 frame tolerance for point identification ( default -: 5 ); -#X text -232 -324 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -) and Yves Degoyon ( ydegoyon@gmail.com ); -#X text -231 -336 Corner points detection based on Shi and Tomasi; -#X text -231 -348 pix_opencv_lk : Lukas-Kanade corner points tracking -; -#X obj 376 158 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144 --1 -1 0; -#X floatatom 639 -112 5 0 0 0 - - -; -#X floatatom 692 -109 5 0 0 0 - - -; -#X msg 350 283 pdelaunay 1 500; -#X obj 341 -335 gemhead; -#X obj 353 -308 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 410 -133 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 392 -168 5 0 10000 1 frame# - -; -#X obj 353 -279 openpanel; -#X msg 353 -259 open \$1; -#X obj 341 -150 pix_film; -#X msg 359 -216 auto \$1; -#X obj 359 -234 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X msg 454 -233 colorspace RGBA; -#X msg 559 -233 colorspace RGB; -#X msg 663 -233 colorspace Grey; -#X obj 454 -261 loadbang; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 178 -115 pd vswitch; -#X obj 250 -119 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 161 -166 pix_video; -#X obj 163 -320 gemhead; -#X msg 200 -241 device 0; -#X msg 209 -210 driver 1; -#X msg 186 -295 dialog; -#X msg 191 -265 device /dev/dv1394-0; -#X obj 178 469 pix_texture; -#X obj -231 -425 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 --66577 0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 112 15 loadbang; -#X msg 62 93 reset; -#X obj 49 135 outlet; -#X msg 107 89 dimen 320 240; -#X obj 107 51 t b b b; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 3 0 2 0; -#X connect 4 0 3 0; -#X connect 4 2 1 0; -#X restore 268 69 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 188 161 dimen 320 240; -#X obj 164 126 t b b b; -#X msg 279 161 frame 25; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 1 9 0; -#X connect 10 2 11 0; -#X connect 11 0 6 0; -#X restore -224 -379 pd gemwin; -#X msg -223 -401 destroy; -#X text -223 -422 Create window and render; -#X obj 178 488 rectangle 5.3 4; -#X obj 178 -78 pix_resize 320 240; -#X text 642 -68 selection of a point; -#X text 436 196 max movement of a marker ( default 20 pixels ); -#X obj 178 -40 pix_rgba; -#X connect 1 0 32 1; -#X connect 3 0 4 0; -#X connect 4 0 32 0; -#X connect 6 0 32 0; -#X connect 7 0 6 0; -#X connect 8 0 9 0; -#X connect 9 0 32 0; -#X connect 11 0 32 0; -#X connect 13 0 14 0; -#X connect 14 0 7 0; -#X connect 15 0 32 0; -#X connect 16 0 32 0; -#X connect 18 0 32 0; -#X connect 20 0 32 0; -#X connect 21 0 20 0; -#X connect 23 0 13 0; -#X connect 24 0 23 0; -#X connect 25 0 26 0; -#X connect 25 1 27 0; -#X connect 30 0 25 0; -#X connect 32 0 80 0; -#X connect 32 1 30 0; -#X connect 33 0 35 1; -#X connect 33 1 34 1; -#X connect 33 2 39 0; -#X connect 34 0 37 1; -#X connect 34 0 57 0; -#X connect 35 0 37 0; -#X connect 35 0 56 0; -#X connect 36 0 35 0; -#X connect 36 1 34 0; -#X connect 37 0 15 0; -#X connect 39 0 40 0; -#X connect 40 0 36 0; -#X connect 41 0 32 0; -#X connect 42 0 32 0; -#X connect 46 0 32 0; -#X connect 47 0 32 0; -#X connect 49 0 32 0; -#X connect 50 0 49 0; -#X connect 55 0 16 0; -#X connect 58 0 32 0; -#X connect 59 0 65 0; -#X connect 60 0 63 0; -#X connect 61 0 62 0; -#X connect 62 0 65 1; -#X connect 63 0 64 0; -#X connect 64 0 65 0; -#X connect 65 0 72 1; -#X connect 65 2 61 0; -#X connect 66 0 65 0; -#X connect 67 0 66 0; -#X connect 68 0 65 0; -#X connect 68 0 74 0; -#X connect 69 0 65 0; -#X connect 70 0 65 0; -#X connect 71 0 68 0; -#X connect 71 0 67 0; -#X connect 72 0 86 0; -#X connect 73 0 72 2; -#X connect 74 0 72 0; -#X connect 75 0 74 0; -#X connect 76 0 74 0; -#X connect 77 0 74 0; -#X connect 78 0 74 0; -#X connect 79 0 74 0; -#X connect 80 0 85 0; -#X connect 82 0 83 0; -#X connect 83 0 82 0; -#X connect 86 0 89 0; -#X connect 89 0 32 0; diff --git a/pix_opencv_lk.cc b/pix_opencv_lk.cc deleted file mode 100644 index 8a9fe2e..0000000 --- a/pix_opencv_lk.cc +++ /dev/null @@ -1,1170 +0,0 @@ - -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_lk.h" -#include - -CPPEXTERN_NEW(pix_opencv_lk) - -///////////////////////////////////////////////////////// -// -// pix_opencv_lk -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_lk :: pix_opencv_lk() -{ - int i; - - comp_xsize=320; - comp_ysize=240; - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("winsize")); - - m_dataout = outlet_new(this->x_obj, &s_anything); - win_size = 10; - - points[0] = 0; - points[1] = 0; - status = 0; - count = 0; - need_to_init = 1; - night_mode = 0; - flags = 0; - add_remove_pt = 0; - quality = 0.1; - min_distance = 10; - maxmove = 20; - markall = 0; - ftolerance = 5; - delaunay = -1; - threshold = -1; - - for ( i=0; icomp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &orgb ); - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &ogray ); - cvReleaseImage( &prev_gray ); - cvReleaseImage( &pyramid ); - cvReleaseImage( &prev_pyramid ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - points[0] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); - points[1] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); - status = (char*)cvAlloc(MAX_COUNT); - - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor(rgba, rgb, CV_BGRA2RGB); - cvCvtColor(rgba, orgb, CV_BGRA2RGB); - cvCvtColor(rgba, gray, CV_BGRA2GRAY); - - if( night_mode ) - cvZero( rgb ); - - for ( im=0; im= 0 ) - { - // init data structures for the delaunay - x_fullrect.x = -comp_xsize/2; - x_fullrect.y = -comp_ysize/2; - x_fullrect.width = 2*comp_xsize; - x_fullrect.height = 2*comp_ysize; - - x_storage = cvCreateMemStorage(0); - x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), - sizeof(CvSubdiv2DPoint), - sizeof(CvQuadEdge2D), - x_storage ); - cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); - } - - if( need_to_init ) - { - /* automatic initialization */ - IplImage* eig = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); - IplImage* temp = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); - - count = MAX_COUNT; - cvGoodFeaturesToTrack( gray, eig, temp, points[1], &count, - quality, min_distance, 0, 3, 0, 0.04 ); - // cvFindCornerSubPix( gray, points[1], count, - // cvSize(win_size,win_size), cvSize(-1,-1), - // cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03)); - cvReleaseImage( &eig ); - cvReleaseImage( &temp ); - - add_remove_pt = 0; - } - else if( count > 0 ) - { - cvCalcOpticalFlowPyrLK( prev_gray, gray, prev_pyramid, pyramid, - points[0], points[1], count, cvSize(win_size,win_size), 3, status, 0, - cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), flags ); - flags |= CV_LKFLOW_PYR_A_READY; - for( i = k = 0; i < count; i++ ) - { - if( add_remove_pt ) - { - double dx = pt.x - points[1][i].x; - double dy = pt.y - points[1][i].y; - - if( dx*dx + dy*dy <= 25 ) - { - add_remove_pt = 0; - continue; - } - } - - if( !status[i] ) - continue; - - points[1][k++] = points[1][i]; - if ( delaunay == 0 ) // add all the points - { - cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - // only add points included in (color-threshold) 0 ) && ( x_xmark[delaunay-1] != -1 ) ) - { - int px = cvPointFrom32f(points[1][i]).x; - int py = cvPointFrom32f(points[1][i]).y; - int ppx, ppy; - - // eight connected pixels - for ( ppx=px-1; ppx<=px+1; ppx++ ) - { - for ( ppy=py-1; ppy<=py+1; ppy++ ) - { - if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; - if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; - - uchar red = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3]; - uchar green = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+1]; - uchar blue = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+2]; - - uchar pred = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3]; - uchar pgreen = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3+1]; - uchar pblue = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3+2]; - - int diff = abs(red-pred) + abs(green-pgreen) + abs(blue-pblue); - - // post( "pix_opencv_lk : point (%d,%d,%d) : diff : %d threshold : %d", blue, green, red, diff, threshold ); - - if ( diff < threshold ) - { - cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - } - } - } - - cvCircle( rgb, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0); - - marked=0; - oi=-1; - dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; - - for ( im=0; im= 0 ) - { - CvSeqReader reader; - int i, total = x_subdiv->edges->total; - int elem_size = x_subdiv->edges->elem_size; - - cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); - - for( i = 0; i < total; i++ ) - { - CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); - CvSubdiv2DPoint* org_pt; - CvSubdiv2DPoint* dst_pt; - CvPoint2D32f org; - CvPoint2D32f dst; - CvPoint iorg, idst; - - if( CV_IS_SET_ELEM( edge )) - { - org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); - dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); - - if( org_pt && dst_pt ) - { - org = org_pt->pt; - dst = dst_pt->pt; - - iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); - idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); - - if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && - ( dst.x > 0 ) && ( dst.x < comp_xsize ) && - ( org.y > 0 ) && ( org.y < comp_ysize ) && - ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) - cvLine( rgb, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); - } - } - - CV_NEXT_SEQ_ELEM( elem_size, reader ); - } - } - - CV_SWAP( prev_gray, gray, swap_temp ); - CV_SWAP( prev_pyramid, pyramid, swap_temp ); - CV_SWAP( points[0], points[1], swap_points ); - need_to_init = 0; - - cvCvtColor(rgb, rgba, CV_BGR2BGRA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_lk :: processRGBImage(imageStruct &image) -{ - int i, k; - int im, oi; - int marked; - float dist, odist; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &orgb ); - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &ogray ); - cvReleaseImage( &prev_gray ); - cvReleaseImage( &pyramid ); - cvReleaseImage( &prev_pyramid ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - points[0] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); - points[1] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); - status = (char*)cvAlloc(MAX_COUNT); - - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - memcpy( orgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor(rgb, gray, CV_BGRA2GRAY); - - if( night_mode ) - cvZero( rgb ); - - for ( im=0; im= 0 ) - { - // init data structures for the delaunay - x_fullrect.x = -comp_xsize/2; - x_fullrect.y = -comp_ysize/2; - x_fullrect.width = 2*comp_xsize; - x_fullrect.height = 2*comp_ysize; - - x_storage = cvCreateMemStorage(0); - x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), - sizeof(CvSubdiv2DPoint), - sizeof(CvQuadEdge2D), - x_storage ); - cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); - } - - if( need_to_init ) - { - /* automatic initialization */ - IplImage* eig = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); - IplImage* temp = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); - - count = MAX_COUNT; - cvGoodFeaturesToTrack( gray, eig, temp, points[1], &count, - quality, min_distance, 0, 3, 0, 0.04 ); - // cvFindCornerSubPix( gray, points[1], count, - // cvSize(win_size,win_size), cvSize(-1,-1), - // cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03)); - cvReleaseImage( &eig ); - cvReleaseImage( &temp ); - - add_remove_pt = 0; - } - else if( count > 0 ) - { - cvCalcOpticalFlowPyrLK( prev_gray, gray, prev_pyramid, pyramid, - points[0], points[1], count, cvSize(win_size,win_size), 3, status, 0, - cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), flags ); - flags |= CV_LKFLOW_PYR_A_READY; - for( i = k = 0; i < count; i++ ) - { - if( add_remove_pt ) - { - double dx = pt.x - points[1][i].x; - double dy = pt.y - points[1][i].y; - - if( dx*dx + dy*dy <= 25 ) - { - add_remove_pt = 0; - continue; - } - } - - if( !status[i] ) - continue; - - points[1][k++] = points[1][i]; - if ( delaunay == 0 ) // add all the points - { - cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - // only add points included in (color-threshold) 0 ) && ( x_xmark[delaunay-1] != -1 ) ) - { - int px = cvPointFrom32f(points[1][i]).x; - int py = cvPointFrom32f(points[1][i]).y; - int ppx, ppy; - - // eight connected pixels - for ( ppx=px-1; ppx<=px+1; ppx++ ) - { - for ( ppy=py-1; ppy<=py+1; ppy++ ) - { - if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; - if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; - - uchar red = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3]; - uchar green = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+1]; - uchar blue = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+2]; - - uchar pred = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3]; - uchar pgreen = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3+1]; - uchar pblue = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3+2]; - - int diff = abs(red-pred) + abs(green-pgreen) + abs(blue-pblue); - - // post( "pix_opencv_lk : point (%d,%d,%d) : diff : %d", blue, green, red, diff ); - - if ( diff < threshold ) - { - cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - } - } - } - - cvCircle( rgb, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0); - - marked=0; - oi=-1; - dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; - - for ( im=0; im= 0 ) - { - CvSeqReader reader; - int i, total = x_subdiv->edges->total; - int elem_size = x_subdiv->edges->elem_size; - - cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); - - for( i = 0; i < total; i++ ) - { - CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); - CvSubdiv2DPoint* org_pt; - CvSubdiv2DPoint* dst_pt; - CvPoint2D32f org; - CvPoint2D32f dst; - CvPoint iorg, idst; - - if( CV_IS_SET_ELEM( edge )) - { - org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); - dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); - - if( org_pt && dst_pt ) - { - org = org_pt->pt; - dst = dst_pt->pt; - - iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); - idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); - - if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && - ( dst.x > 0 ) && ( dst.x < comp_xsize ) && - ( org.y > 0 ) && ( org.y < comp_ysize ) && - ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) - cvLine( rgb, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); - } - } - - CV_NEXT_SEQ_ELEM( elem_size, reader ); - } - } - - CV_SWAP( prev_gray, gray, swap_temp ); - CV_SWAP( prev_pyramid, pyramid, swap_temp ); - CV_SWAP( points[0], points[1], swap_points ); - need_to_init = 0; - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_lk :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_lk : yuv format not supported" ); -} - -void pix_opencv_lk :: processGrayImage(imageStruct &image) -{ - int i, k; - int im, oi; - int marked; - float dist, odist; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &orgb ); - cvReleaseImage( &rgb ); - cvReleaseImage( &ogray ); - cvReleaseImage( &gray ); - cvReleaseImage( &prev_gray ); - cvReleaseImage( &pyramid ); - cvReleaseImage( &prev_pyramid ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - points[0] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); - points[1] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); - status = (char*)cvAlloc(MAX_COUNT); - - } - - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - memcpy( ogray->imageData, image.data, image.xsize*image.ysize ); - - if( night_mode ) - cvZero( gray ); - - for ( im=0; im= 0 ) - { - // init data structures for the delaunay - x_fullrect.x = -comp_xsize/2; - x_fullrect.y = -comp_ysize/2; - x_fullrect.width = 2*comp_xsize; - x_fullrect.height = 2*comp_ysize; - - x_storage = cvCreateMemStorage(0); - x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), - sizeof(CvSubdiv2DPoint), - sizeof(CvQuadEdge2D), - x_storage ); - cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); - } - - if( need_to_init ) - { - /* automatic initialization */ - IplImage* eig = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); - IplImage* temp = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); - - count = MAX_COUNT; - cvGoodFeaturesToTrack( gray, eig, temp, points[1], &count, - quality, min_distance, 0, 3, 0, 0.04 ); - // cvFindCornerSubPix( gray, points[1], count, - // cvSize(win_size,win_size), cvSize(-1,-1), - // cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03)); - cvReleaseImage( &eig ); - cvReleaseImage( &temp ); - - add_remove_pt = 0; - } - else if( count > 0 ) - { - cvCalcOpticalFlowPyrLK( prev_gray, gray, prev_pyramid, pyramid, - points[0], points[1], count, cvSize(win_size,win_size), 3, status, 0, - cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), flags ); - flags |= CV_LKFLOW_PYR_A_READY; - for( i = k = 0; i < count; i++ ) - { - if( add_remove_pt ) - { - double dx = pt.x - points[1][i].x; - double dy = pt.y - points[1][i].y; - - if( dx*dx + dy*dy <= 25 ) - { - add_remove_pt = 0; - continue; - } - } - - if( !status[i] ) - continue; - - points[1][k++] = points[1][i]; - if ( delaunay == 0 ) // add all the points - { - cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - // only add points included in (color-threshold) 0 ) && ( x_xmark[delaunay-1] != -1 ) ) - { - int px = cvPointFrom32f(points[1][i]).x; - int py = cvPointFrom32f(points[1][i]).y; - int ppx, ppy; - - // eight connected pixels - for ( ppx=px-1; ppx<=px+1; ppx++ ) - { - for ( ppy=py-1; ppy<=py+1; ppy++ ) - { - if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; - if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; - - uchar lum = ((uchar*)(ogray->imageData + ogray->widthStep*ppx))[ppy]; - uchar plum = ((uchar*)(ogray->imageData + ogray->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]]; - - int diff = abs(plum-lum); - - // post( "pix_opencv_lk : point (%d,%d,%d) : diff : %d", blue, green, red, diff ); - - if ( diff < threshold ) - { - cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - } - } - } - - cvCircle( gray, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0); - - marked=0; - oi=-1; - dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; - - for ( im=0; im= 0 ) - { - CvSeqReader reader; - int i, total = x_subdiv->edges->total; - int elem_size = x_subdiv->edges->elem_size; - - cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); - - for( i = 0; i < total; i++ ) - { - CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); - CvSubdiv2DPoint* org_pt; - CvSubdiv2DPoint* dst_pt; - CvPoint2D32f org; - CvPoint2D32f dst; - CvPoint iorg, idst; - - if( CV_IS_SET_ELEM( edge )) - { - org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); - dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); - - if( org_pt && dst_pt ) - { - org = org_pt->pt; - dst = dst_pt->pt; - - iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); - idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); - - if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && - ( dst.x > 0 ) && ( dst.x < comp_xsize ) && - ( org.y > 0 ) && ( org.y < comp_ysize ) && - ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) - cvLine( gray, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); - } - } - - CV_NEXT_SEQ_ELEM( elem_size, reader ); - } - } - - CV_SWAP( prev_gray, gray, swap_temp ); - CV_SWAP( prev_pyramid, pyramid, swap_temp ); - CV_SWAP( points[0], points[1], swap_points ); - need_to_init = 0; - - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_lk :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_lk::winSizeMessCallback, - gensym("winsize"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::nightModeMessCallback, - gensym("nightmode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::qualityMessCallback, - gensym("quality"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::initMessCallback, - gensym("init"), A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::markMessCallback, - gensym("mark"), A_GIMME, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::deleteMessCallback, - gensym("delete"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::clearMessCallback, - gensym("clear"), A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::minDistanceMessCallback, - gensym("mindistance"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::maxMoveMessCallback, - gensym("maxmove"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::ftoleranceMessCallback, - gensym("ftolerance"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::delaunayMessCallback, - gensym("delaunay"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_lk::pdelaunayMessCallback, - gensym("pdelaunay"), A_FLOAT, A_FLOAT, A_NULL); -} - -void pix_opencv_lk :: winSizeMessCallback(void *data, t_floatarg winsize) -{ - GetMyClass(data)->winSizeMess((float)winsize); -} - -void pix_opencv_lk :: nightModeMessCallback(void *data, t_floatarg nightmode) -{ - GetMyClass(data)->nightModeMess((float)nightmode); -} - -void pix_opencv_lk :: qualityMessCallback(void *data, t_floatarg quality) -{ - GetMyClass(data)->qualityMess((float)quality); -} - -void pix_opencv_lk :: initMessCallback(void *data) -{ - GetMyClass(data)->initMess(); -} - -void pix_opencv_lk :: markMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) -{ - GetMyClass(data)->markMess(argc, argv); -} - -void pix_opencv_lk :: deleteMessCallback(void *data, t_floatarg index) -{ - GetMyClass(data)->deleteMess((float)index); -} - -void pix_opencv_lk :: clearMessCallback(void *data) -{ - GetMyClass(data)->clearMess(); -} - -void pix_opencv_lk :: minDistanceMessCallback(void *data, t_floatarg mindistance) -{ - GetMyClass(data)->minDistanceMess((float)mindistance); -} - -void pix_opencv_lk :: maxMoveMessCallback(void *data, t_floatarg maxmove) -{ - GetMyClass(data)->maxMoveMess((float)maxmove); -} - -void pix_opencv_lk :: ftoleranceMessCallback(void *data, t_floatarg ftolerance) -{ - GetMyClass(data)->ftoleranceMess((float)ftolerance); -} - -void pix_opencv_lk :: delaunayMessCallback(void *data, t_symbol *s) -{ - GetMyClass(data)->delaunayMess(s); -} - -void pix_opencv_lk :: pdelaunayMessCallback(void *data, t_floatarg fpoint, t_floatarg fthreshold) -{ - GetMyClass(data)->pdelaunayMess((float)fpoint, (float)fthreshold); -} - -void pix_opencv_lk :: winSizeMess(float fwinsize) -{ - if (fwinsize>1.0) win_size = (int)fwinsize; -} - -void pix_opencv_lk :: nightModeMess(float fnightmode) -{ - if ((fnightmode==0.0)||(fnightmode==1.0)) night_mode = (int)fnightmode; -} - -void pix_opencv_lk :: qualityMess(float fquality) -{ - if (fquality>0.0) quality = fquality; -} - -void pix_opencv_lk :: initMess(void) -{ - need_to_init = 1; -} - -void pix_opencv_lk :: markMess(int argc, t_atom *argv) -{ - int i; - int inserted; - - if ( argc == 1 ) // mark all or none - { - if ( argv[0].a_type != A_SYMBOL ) - { - error( "pix_opencv_lk : wrong argument (should be 'all')" ); - return; - } - if ( !strcmp( argv[0].a_w.w_symbol->s_name, "all" ) ) - { - markall = 1; - return; - } - if ( !strcmp( argv[0].a_w.w_symbol->s_name, "none" ) ) - { - markall = 0; - clearMess(); - return; - } - } - else - { - if ( ( argv[0].a_type != A_FLOAT ) || ( argv[1].a_type != A_FLOAT ) ) - { - error( "pix_opencv_lk : wrong argument (should be mark px py)" ); - return; - } - else - { - float fpx = argv[0].a_w.w_float; - float fpy = argv[1].a_w.w_float; - int px, py; - - if ( ( fpx < 0.0 ) || ( fpx > comp_xsize ) || ( fpy < 0.0 ) || ( fpy > comp_ysize ) ) - { - return; - } - - px = (int)fpx; - py = (int)fpy; - inserted = 0; - for ( i=0; i= MAX_MARKERS ) ) - { - return; - } - - x_xmark[(int)index] = -1; - x_ymark[(int)index] = -1; - -} - -void pix_opencv_lk :: clearMess(void) -{ - int i; - - for ( i=0; i1.0) min_distance = (int)fmindistance; -} - -void pix_opencv_lk :: maxMoveMess(float fmaxmove) -{ - // has to be more than the size of a point - if (fmaxmove>=3.0) maxmove = (int)fmaxmove; -} - -void pix_opencv_lk :: ftoleranceMess(float ftolerance) -{ - if (ftolerance>=0.0) ftolerance = (int)ftolerance; -} - -void pix_opencv_lk :: delaunayMess(t_symbol *s) -{ - if (s == gensym("on")) - delaunay = 0; - if (s == gensym("off")) - delaunay = -1; -} - -void pix_opencv_lk :: pdelaunayMess(float fpoint, float fthreshold) -{ - if (((int)fpoint>0) && ((int)fpoint; -#X text 40 363 Inlet 1: message: contour ; -#X text 40 373 Inlet 1: message: method ; -#X text 40 383 Inlet 1: message: threshold ; -#X text 34 413 Outlet 1: input image; -#X text 40 343 Inlet 1: image; -#X obj 364 368 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 0 450 300 gemwin 0; -#X obj 132 136 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 142 68 set create; -#X msg 198 112 destroy; -#X msg 132 112 create \, 1; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 7 0; -#X connect 3 1 5 0; -#X connect 3 1 6 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X restore 369 407 pd gemwin; -#X msg 369 388 create; -#X text 365 367 Create window:; -#X connect 8 0 10 0; -#X connect 8 1 21 0; -#X connect 9 0 8 0; -#X connect 10 0 11 0; -#X connect 12 0 8 0; -#X connect 13 0 8 0; -#X connect 14 0 13 0; -#X connect 15 0 8 0; -#X connect 16 0 8 0; -#X connect 17 0 8 0; -#X connect 18 0 19 0; -#X connect 19 0 8 0; -#X connect 20 0 8 0; -#X connect 21 0 22 0; -#X connect 21 1 28 0; -#X connect 22 0 24 0; -#X connect 22 1 25 0; -#X connect 48 0 49 0; -#X connect 49 0 48 0; diff --git a/pix_opencv_matchshape.cc b/pix_opencv_matchshape.cc deleted file mode 100644 index 75dc910..0000000 --- a/pix_opencv_matchshape.cc +++ /dev/null @@ -1,221 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) -// Template for pix_opencv class - -#include "pix_opencv_matchshape.h" -#include -#include - -using namespace std; - - -CPPEXTERN_NEW(pix_opencv_matchshape) - -///////////////////////////////////////////////////////// -// -// pix_opencv_matchshape -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_matchshape :: pix_opencv_matchshape() : m_threshold(2), m_method(CV_CONTOURS_MATCH_I1) -{ - m_dataout = outlet_new(this->x_obj, 0); - m_template_vec_vec.clear(); - m_template_vec_mat.clear(); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_matchshape :: ~pix_opencv_matchshape() -{ -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_matchshape :: processRGBAImage(imageStruct &image) -{ - error( "pix_opencv_matchshape : rgba format not supported" ); -} - -void pix_opencv_matchshape :: processRGBImage(imageStruct &image) { - error( "pix_opencv_matchshape : rgb format not supported"); -} - -void pix_opencv_matchshape :: processYUVImage(imageStruct &image) -{ - error( "pix_opencv_matchshape : yuv format not supported" ); -} - -void pix_opencv_matchshape :: processGrayImage(imageStruct &image) -{ - error( "pix_opencv_matchshape : gray format not supported" ); - error( "pix_opencv_matchshape only works on pd lists" ); - - // TODO add support to compare grayscale images -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_matchshape :: obj_setupCallback(t_class *classPtr) -{ - CPPEXTERN_MSG0(classPtr, "clear", clearMess); - CPPEXTERN_MSG(classPtr, "template", templateMess); - CPPEXTERN_MSG(classPtr, "contour", contourMess); - CPPEXTERN_MSG1(classPtr, "threshold", thresholdMess, float); - CPPEXTERN_MSG1(classPtr, "method", methodMess, int); -} - -void pix_opencv_matchshape :: clearMess(void) -{ - for ( vector >::iterator it=m_template_vec_vec.end(); it!=m_template_vec_vec.begin(); it--) - { - (*it).clear(); - } - m_template_vec_vec.clear(); - m_template_vec_mat.clear(); - - t_atom data; - SETFLOAT(&data, (float)m_template_vec_vec.size()); - outlet_anything(m_dataout, gensym("template_vec"), 1, &data); - - SETFLOAT(&data, (float)m_template_vec_mat.size()); - outlet_anything(m_dataout, gensym("template_mat"), 1, &data); -} - - -void pix_opencv_matchshape :: contourMess(t_symbol*s, int argc, t_atom*argv) -{ - if ( m_template_vec_vec.empty() ){ - error("no template to match, please load a template before matching"); - return; - } - - if ( (argc%2)!=0 ) { - error("template message argument should be multiple of 2"); - return; - } - - for (int i=0;i tmp_contour; - for (int i=2;i >::iterator it=m_template_vec_vec.begin(); it!=m_template_vec_vec.end(); ++it){ - comp = cv::matchShapes(tmp_contour, *it, m_method, 0.); - if ( comp < min ){ - min=comp; - id=i; - } - i++; - } - - if ( min < m_threshold ) - { - t_atom data[2]; - SETFLOAT(data,id); - SETFLOAT(data+1, min); - outlet_anything(m_dataout, gensym("match_vec"), 2, data); - } -} - -void pix_opencv_matchshape :: templateMess(t_symbol*s, int argc, t_atom*argv) -{ - if ( (argc%2)!=0 ) { - error("template message argument should be multiple of 2"); - return; - } - for (int i=0;i tmp_contour; - tmp_contour.clear(); - for (int i=2;i0.?arg:0.); - t_atom data; - SETFLOAT(&data, m_threshold); - outlet_anything(m_dataout, gensym("threshold"), 1, &data); -} - -void pix_opencv_matchshape :: methodMess(int arg) -{ - switch (arg) { - case 1: - m_method=CV_CONTOURS_MATCH_I1; - break; - case 2: - m_method=CV_CONTOURS_MATCH_I2; - break; - case 3: - m_method=CV_CONTOURS_MATCH_I3; - break; - default: - error("method should be 1, 2 or 3"); - m_method=CV_CONTOURS_MATCH_I1; - } - t_atom data; - switch (m_method) { - case CV_CONTOURS_MATCH_I1: - SETFLOAT(&data, 1); - break; - case CV_CONTOURS_MATCH_I2: - SETFLOAT(&data, 2); - break; - case CV_CONTOURS_MATCH_I3: - SETFLOAT(&data, 3); - break; - } - outlet_anything(m_dataout, gensym("method"), 1, &data); -} diff --git a/pix_opencv_matchshape.h b/pix_opencv_matchshape.h deleted file mode 100644 index 1bd5674..0000000 --- a/pix_opencv_matchshape.h +++ /dev/null @@ -1,73 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Threshold filter - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_MATCHSHAPE_H_ -#define INCLUDE_PIX_OPENCV_MATCHSHAPE_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_matchshape - - square pattern detector - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_matchshape : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_matchshape, GemPixObj) - - public: - - // Constructor - pix_opencv_matchshape(); - - protected: - // process messages - void clearMess(void); - void templateMess(t_symbol*s, int argc, t_atom*argv); - void contourMess(t_symbol*s, int argc, t_atom*argv); - void thresholdMess(float arg); - void methodMess(int arg); - - // Destructor - virtual ~pix_opencv_matchshape(); - - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - private: - - t_outlet *m_dataout; // info outlet - double m_threshold; - int m_method; - std::vector > m_template_vec_vec; - std::vector m_template_vec_mat; - -}; -#endif // for header file diff --git a/pix_opencv_morphology-help.pd b/pix_opencv_morphology-help.pd deleted file mode 100644 index e6276d6..0000000 --- a/pix_opencv_morphology-help.pd +++ /dev/null @@ -1,163 +0,0 @@ -#N canvas 539 121 1064 885 10; -#X obj 369 412 cnv 15 450 150 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X floatatom 488 504 5 0 0 0 - - -; -#X obj 514 418 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 -1; -#X msg 472 462 shape 2; -#X msg 462 442 shape 1; -#X msg 482 481 shape 3; -#X msg 456 418 mode \$1; -#X text 519 443 use rectangle structuring element; -#X text 537 478 use cross-shaped structuring element; -#X text 531 460 use elliptic structuring element; -#X text 537 418 switch open/close and erode/dilate modes; -#X text 541 502 number of iterations -10/+10 (be carefull); -#X obj 374 532 pix_opencv_morphology; -#X text -98 98 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -); -#X text -98 59 pdp_opencv_morphology : morphology filter ( erosion -/ dilatation ); -#X text -98 84 used as a filter to focus on bright or dark zones; -#X obj -96 -31 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 160 260 gemwin; -#X msg 159 207 create \, 1; -#X msg 235 208 destroy; -#X msg 281 180 frame 25; -#X obj 162 170 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore -91 13 pd gemwin; -#X msg -91 -8 create; -#X text -90 -26 Create window and render; -#X obj 493 -11 gemhead; -#X obj 374 642 pix_texture; -#X obj 374 661 square 2; -#X obj 222 638 pix_texture; -#X obj 222 666 square 2; -#X obj 374 316 separator; -#X obj 505 16 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 562 191 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 544 156 5 0 10000 1 frame# - -; -#X obj 505 45 openpanel; -#X msg 505 65 open \$1; -#X obj 493 174 pix_film; -#X msg 511 108 auto \$1; -#X obj 511 90 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 606 91 colorspace RGBA; -#X msg 711 91 colorspace RGB; -#X msg 815 91 colorspace Grey; -#X obj 606 63 loadbang; -#X obj 373 287 pix_separator; -#X obj 222 319 separator; -#X obj 222 290 pix_separator; -#X obj 222 354 translateXYZ -2 0 0; -#X obj 374 351 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 315 244 pd vswitch; -#X obj 383 244 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 256 172 pix_video; -#X obj 256 -16 gemhead; -#X msg 295 97 device 0; -#X msg 304 128 driver 1; -#X msg 281 43 dialog; -#X msg 286 73 device /dev/dv1394-0; -#X obj 316 267 pix_rgba; -#X connect 1 0 12 1; -#X connect 2 0 6 0; -#X connect 3 0 12 0; -#X connect 4 0 12 0; -#X connect 5 0 12 0; -#X connect 6 0 12 0; -#X connect 12 0 21 0; -#X connect 17 0 18 0; -#X connect 18 0 17 0; -#X connect 20 0 31 0; -#X connect 21 0 22 0; -#X connect 23 0 24 0; -#X connect 25 0 42 0; -#X connect 26 0 29 0; -#X connect 27 0 28 0; -#X connect 28 0 31 1; -#X connect 29 0 30 0; -#X connect 30 0 31 0; -#X connect 31 0 43 1; -#X connect 31 2 27 0; -#X connect 32 0 31 0; -#X connect 33 0 32 0; -#X connect 34 0 31 0; -#X connect 34 0 45 0; -#X connect 35 0 31 0; -#X connect 36 0 31 0; -#X connect 37 0 34 0; -#X connect 37 0 33 0; -#X connect 38 0 25 0; -#X connect 39 0 41 0; -#X connect 40 0 39 0; -#X connect 41 0 23 0; -#X connect 42 0 12 0; -#X connect 43 0 51 0; -#X connect 44 0 43 2; -#X connect 45 0 43 0; -#X connect 46 0 45 0; -#X connect 47 0 45 0; -#X connect 48 0 45 0; -#X connect 49 0 45 0; -#X connect 50 0 45 0; -#X connect 51 0 40 0; -#X connect 51 0 38 0; diff --git a/pix_opencv_morphology.cc b/pix_opencv_morphology.cc deleted file mode 100644 index a241ac5..0000000 --- a/pix_opencv_morphology.cc +++ /dev/null @@ -1,291 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_morphology.h" - -CPPEXTERN_NEW(pix_opencv_morphology) - -///////////////////////////////////////////////////////// -// -// pix_opencv_morphology -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_morphology :: pix_opencv_morphology() -{ - int i; - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); - - pos = 0; - comp_xsize = 0; - comp_ysize = 0; - - rgba = NULL; - grey = NULL; - rgb = NULL; - dst = NULL; - - element_shape = CV_SHAPE_RECT; - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_morphology :: ~pix_opencv_morphology() -{ - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &dst ); - cvReleaseImage( &rgba ); - cvReleaseImage( &grey ); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_morphology :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &dst ); - cvReleaseImage( &rgba ); - cvReleaseImage( &grey ); - - //Create cv_images - rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 3 ); - dst = cvCloneImage(rgb); - rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - cvCvtColor(rgba, rgb, CV_RGBA2RGB); - - if (this->mode == 1) { //open/close - int n = pos; - int an = n > 0 ? n : -n; - element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); - if( n < 0 ) - { - cvErode(rgb,dst,element,1); - cvDilate(dst,dst,element,1); - } - else - { - cvDilate(rgb,dst,element,1); - cvErode(dst,dst,element,1); - } - cvReleaseStructuringElement(&element); - - } else { - int n = pos; - int an = n > 0 ? n : -n; - element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); - if( n < 0 ) - { - cvErode(rgb,dst,element,1); - } - else - { - cvDilate(rgb,dst,element,1); - } - cvReleaseStructuringElement(&element); - - } - - cvCvtColor(dst, rgba, CV_RGB2RGBA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_morphology :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &dst ); - - //Create cv_images - rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - dst = cvCloneImage(rgb); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - if (this->mode == 1) { //open/close - int n = pos; - int an = n > 0 ? n : -n; - element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); - if( n < 0 ) - { - cvErode(rgb,dst,element,1); - cvDilate(dst,dst,element,1); - } - else - { - cvDilate(rgb,dst,element,1); - cvErode(dst,dst,element,1); - } - cvReleaseStructuringElement(&element); - - } else { - int n = pos; - int an = n > 0 ? n : -n; - element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); - if( n < 0 ) - { - cvErode(rgb,dst,element,1); - } - else - { - cvDilate(rgb,dst,element,1); - } - cvReleaseStructuringElement(&element); - - } - - //cvShowImage(wndname, cedge); - memcpy( image.data, dst->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_morphology :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_morphology : yuv format not supported" ); -} - -void pix_opencv_morphology :: processGrayImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - int i; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!grey)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &dst ); - cvReleaseImage( &grey ); - - //Create cv_images - rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 3 ); - dst = cvCloneImage(rgb); - grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - - cvCvtColor(grey, rgb, CV_GRAY2RGB); - - if (this->mode == 1) { //open/close - int n = pos; - int an = n > 0 ? n : -n; - element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); - if( n < 0 ) - { - cvErode(rgb,dst,element,1); - cvDilate(dst,dst,element,1); - } - else - { - cvDilate(rgb,dst,element,1); - cvErode(dst,dst,element,1); - } - cvReleaseStructuringElement(&element); - - } else { - int n = pos; - int an = n > 0 ? n : -n; - element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); - if( n < 0 ) - { - cvErode(rgb,dst,element,1); - } - else - { - cvDilate(rgb,dst,element,1); - } - cvReleaseStructuringElement(&element); - - } - - cvCvtColor(dst, grey, CV_RGB2GRAY); - //cvShowImage(wndname, cedge); - memcpy( image.data, grey->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// floatPosMess -// -///////////////////////////////////////////////////////// -void pix_opencv_morphology :: floatPosMess (float pos) -{ - this->pos = (int)pos; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_morphology :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_morphology::floatPosMessCallback, - gensym("ft1"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_morphology::modeMessCallback, - gensym("mode"), A_DEFFLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_morphology::shapeMessCallback, - gensym("shape"), A_DEFFLOAT, A_NULL); -} -void pix_opencv_morphology :: floatPosMessCallback(void *data, t_floatarg pos) -{ - GetMyClass(data)->floatPosMess((float)pos); -} -void pix_opencv_morphology :: modeMessCallback(void *data, t_floatarg mode) -{ - GetMyClass(data)->mode=!(!(int)mode); -} -void pix_opencv_morphology :: shapeMessCallback(void *data, t_floatarg f) -{ - if( (int)f == 1 ) - GetMyClass(data)->element_shape = CV_SHAPE_RECT; - else if( (int)f == 2 ) - GetMyClass(data)->element_shape = CV_SHAPE_ELLIPSE; - else if( (int)f == 3 ) - GetMyClass(data)->element_shape = CV_SHAPE_CROSS; -} diff --git a/pix_opencv_morphology.h b/pix_opencv_morphology.h deleted file mode 100644 index a8e78c4..0000000 --- a/pix_opencv_morphology.h +++ /dev/null @@ -1,87 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Morphology filter - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_MORPHOLOGY_H_ -#define INCLUDE_PIX_OPENCV_MORPHOLOGY_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_morphology - - Morphology filter - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_morphology : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_morphology, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_morphology(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_morphology(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new pos - void floatPosMess(float pos); - // Some varibales to control mophology mode - int pos; - int element_shape; - int mode; //to switch between openclose or dilateerode modes - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - ////////// - // Static member functions - static void floatPosMessCallback(void *data, t_floatarg pos); - static void modeMessCallback(void *data, t_floatarg mode); - static void shapeMessCallback(void *data, t_floatarg f); - - // The output and temporary images - IplImage *rgba, *grey, *rgb, *dst; - - IplConvKernel *element; - -}; - -#endif // for header file diff --git a/pix_opencv_motempl-help.pd b/pix_opencv_motempl-help.pd deleted file mode 100644 index 4d5d485..0000000 --- a/pix_opencv_motempl-help.pd +++ /dev/null @@ -1,231 +0,0 @@ -#N canvas 431 23 1249 684 10; -#X obj 535 783 pix_texture; -#X obj 535 811 square 2; -#X obj 504 497 cnv 15 550 251 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X floatatom 669 841 5 0 0 0 - - -; -#X floatatom 704 841 5 0 0 0 - - -; -#X floatatom 741 841 5 0 0 0 - - -; -#X floatatom 775 841 5 0 0 0 - - -; -#X floatatom 698 890 5 0 0 0 - - -; -#X floatatom 733 890 5 0 0 0 - - -; -#X floatatom 770 890 5 0 0 0 - - -; -#X floatatom 804 890 5 0 0 0 - - -; -#X floatatom 742 946 5 0 0 0 - - -; -#X floatatom 777 946 5 0 0 0 - - -; -#X floatatom 814 946 5 0 0 0 - - -; -#X floatatom 848 946 5 0 0 0 - - -; -#X obj 666 812 unpack 0 0 0 0 0; -#X obj 695 861 unpack 0 0 0 0 0; -#X obj 739 917 unpack 0 0 0 0 0; -#X floatatom 812 840 5 0 0 0 - - -; -#X floatatom 842 890 5 0 0 0 - - -; -#X floatatom 886 946 5 0 0 0 - - -; -#X text 726 779 For each motion component component; -#X text 788 812 (-1) means the whole image; -#X text 863 838 Xcenter Ycenter Width Height Angle; -#X text 884 889 Xcenter Ycenter Width Height Angle; -#X text 931 945 Xcenter Ycenter Width Height Angle; -#X floatatom 649 621 5 0 0 0 - - -; -#X floatatom 682 595 5 0 0 0 - - -; -#X text 689 623 Threshold value. (default 30); -#X msg 577 594 mhi_duration \$1; -#X floatatom 670 524 5 0 0 0 - - -; -#X msg 555 523 max_time_delta \$1; -#X floatatom 679 548 5 0 0 0 - - -; -#X msg 562 545 min_time_delta \$1; -#X floatatom 703 572 5 0 0 0 - - -; -#X msg 572 569 frame_buffer_num \$1; -#X floatatom 676 639 5 0 0 0 - - -; -#X floatatom 687 658 5 0 0 0 - - -; -#X text 727 660 Max size of the motion component (default 500); -#X text 717 639 Min size of the motion component (default 50); -#X text 740 570 Number of frames in the buffer. (default 4); -#X text 709 522 Max time delta in seconds. (default 0.5); -#X text 720 547 Min time delta in seconds. (default 0.05); -#X obj 533 694 pix_opencv_motempl; -#X msg 536 502 aperture \$1; -#X text 712 503 aperture ( 3 \, 5 or 7 \, default 3 ); -#X msg 616 502 3; -#X msg 649 502 5; -#X msg 680 502 7; -#X text 719 596 Maximal duration of motion track in seconds; -#X text 59 153 pix_opencv_motempl : opencv motion detection based on -movement history; -#X obj 666 761 route -1 1 2 3 4; -#X obj 61 49 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 160 260 gemwin; -#X msg 159 207 create \, 1; -#X msg 235 208 destroy; -#X msg 281 180 frame 25; -#X obj 162 170 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 66 93 pd gemwin; -#X msg 66 72 destroy; -#X text 67 54 Create window and render; -#X obj 650 69 gemhead; -#X obj 379 718 pix_texture; -#X obj 379 746 square 2; -#X obj 531 396 separator; -#X obj 662 96 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 719 271 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 701 236 5 0 10000 1 frame# - -; -#X obj 662 125 openpanel; -#X msg 662 145 open \$1; -#X obj 650 254 pix_film; -#X msg 668 188 auto \$1; -#X obj 668 170 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 -1; -#X msg 763 171 colorspace RGBA; -#X msg 868 171 colorspace RGB; -#X msg 972 171 colorspace Grey; -#X obj 763 143 loadbang; -#X obj 530 367 pix_separator; -#X obj 379 399 separator; -#X obj 379 370 pix_separator; -#X obj 379 434 translateXYZ -2 0 0; -#X obj 531 431 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 472 324 pd vswitch; -#X obj 540 324 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 413 252 pix_video; -#X obj 413 64 gemhead; -#X msg 452 177 device 0; -#X msg 461 208 driver 1; -#X msg 438 123 dialog; -#X msg 443 153 device /dev/dv1394-0; -#X obj 471 350 pix_rgba; -#X obj 528 462 pix_resize 320 240; -#X text 59 273 bugs and comments write Lluis Gomez i Bigorda ( lluisgomez@hangar.org -); -#X text 59 193 pix_opencv_motempl works better with small connected -components moving inside the image .... a good setup is for example -a zenital camera with wider lens or shooting a stage from a viewpoint -from far (5 o more meters of distance).; -#X connect 0 0 1 0; -#X connect 15 0 3 0; -#X connect 15 1 4 0; -#X connect 15 2 5 0; -#X connect 15 3 6 0; -#X connect 15 4 18 0; -#X connect 16 0 7 0; -#X connect 16 1 8 0; -#X connect 16 2 9 0; -#X connect 16 3 10 0; -#X connect 16 4 19 0; -#X connect 17 0 11 0; -#X connect 17 1 12 0; -#X connect 17 2 13 0; -#X connect 17 3 14 0; -#X connect 17 4 20 0; -#X connect 26 0 43 1; -#X connect 27 0 29 0; -#X connect 29 0 43 0; -#X connect 30 0 31 0; -#X connect 31 0 43 0; -#X connect 32 0 33 0; -#X connect 33 0 43 0; -#X connect 34 0 35 0; -#X connect 35 0 43 0; -#X connect 36 0 43 2; -#X connect 37 0 43 3; -#X connect 43 0 0 0; -#X connect 43 1 51 0; -#X connect 44 0 43 0; -#X connect 46 0 44 0; -#X connect 47 0 44 0; -#X connect 48 0 44 0; -#X connect 51 0 15 0; -#X connect 51 1 16 0; -#X connect 51 2 17 0; -#X connect 53 0 54 0; -#X connect 54 0 53 0; -#X connect 56 0 65 0; -#X connect 57 0 58 0; -#X connect 59 0 76 0; -#X connect 60 0 63 0; -#X connect 61 0 62 0; -#X connect 62 0 65 1; -#X connect 63 0 64 0; -#X connect 64 0 65 0; -#X connect 65 0 77 1; -#X connect 65 2 61 0; -#X connect 66 0 65 0; -#X connect 67 0 66 0; -#X connect 68 0 65 0; -#X connect 68 0 79 0; -#X connect 69 0 65 0; -#X connect 70 0 65 0; -#X connect 71 0 68 0; -#X connect 71 0 67 0; -#X connect 72 0 59 0; -#X connect 73 0 75 0; -#X connect 74 0 73 0; -#X connect 75 0 57 0; -#X connect 76 0 86 0; -#X connect 77 0 85 0; -#X connect 78 0 77 2; -#X connect 79 0 77 0; -#X connect 80 0 79 0; -#X connect 81 0 79 0; -#X connect 82 0 79 0; -#X connect 83 0 79 0; -#X connect 84 0 79 0; -#X connect 85 0 74 0; -#X connect 85 0 72 0; -#X connect 86 0 43 0; diff --git a/pix_opencv_motempl.cc b/pix_opencv_motempl.cc deleted file mode 100644 index ec33a01..0000000 --- a/pix_opencv_motempl.cc +++ /dev/null @@ -1,708 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_motempl.h" - -CPPEXTERN_NEW(pix_opencv_motempl) - -///////////////////////////////////////////////////////// -// -// pix_opencv_motempl -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_motempl :: pix_opencv_motempl() -{ - int i; - - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("min_size")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("max_size")); - m_dataout = outlet_new(this->x_obj, 0); - - mhi_duration = 1.0; - aperture = 3; - diff_threshold = 30; - last = 0; - comp_xsize = 320; - comp_ysize = 240; - - // various tracking parameters (in seconds) - max_time_delta = 0.5; - min_time_delta = 0.05; - // number of cyclic frame buffer used for motion detection - // (should, probably, depend on FPS) - frame_buffer_num = 4; - - min_size=50; - max_size=500; - - rgb = NULL; - motion = NULL; - rgba = NULL; - grey = NULL; - mhi = NULL; - orient = NULL; - mask = NULL; - segmask = NULL; - storage = NULL; - - mask_size = CV_DIST_MASK_PRECISE; - - cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); - - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - motion = cvCreateImage( cvSize(comp_xsize,comp_ysize), 8, 3 ); - cvZero( motion ); - motion->origin = rgb->origin; - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_motempl :: ~pix_opencv_motempl() -{ - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &motion ); - cvReleaseImage( &rgba ); - cvReleaseImage( &grey ); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_motempl :: processRGBAImage(imageStruct &image) -{ - double timestamp = (double)clock()/CLOCKS_PER_SEC; // get current time in seconds - CvSize size = cvSize(image.xsize,image.ysize); // get current frame size - int i, j, idx1 = last, idx2; - IplImage* silh; - CvSeq* seq; - CvRect comp_rect; - double count; - double angle; - CvPoint center; - double magnitude; - CvScalar color; - char tindex[10]; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &motion ); - cvReleaseImage( &rgba ); - cvReleaseImage( &grey ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); - motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); - cvZero( motion ); - motion->origin = rgb->origin; - rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - } - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - cvCvtColor( rgba, rgb, CV_RGBA2RGB); - - // allocate images at the beginning or - // reallocate them if the frame size is changed - if( (!mhi) || (mhi->width != size.width) || (mhi->height != size.height) || (!buf)) { - if( buf == 0 ) { - buf = (IplImage**)malloc(frame_buffer_num*sizeof(buf[0])); - //memset( buf, 0, N*sizeof(buf[0])); - } - - for( i = 0; i < frame_buffer_num; i++ ) { - // TODO if ( buf[i] != NULL ) cvReleaseImage( &buf[i] ); - buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 ); - cvZero( buf[i] ); - } - if ( mhi != NULL ) cvReleaseImage( &mhi ); - if ( orient != NULL ) cvReleaseImage( &orient ); - if ( segmask != NULL ) cvReleaseImage( &segmask ); - if ( mask != NULL ) cvReleaseImage( &mask ); - - mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - cvZero( mhi ); // clear MHI at the beginning - orient = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - segmask = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); - } - - cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale - - idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame - last = idx2; - - silh = buf[idx2]; - cvAbsDiff( buf[idx1], buf[idx2], silh ); // get difference between frames - - cvThreshold( silh, silh, diff_threshold, 1, CV_THRESH_BINARY ); // and threshold it - cvUpdateMotionHistory( silh, mhi, timestamp, mhi_duration ); // update MHI - - // convert MHI to red 8u image - cvCvtScale( mhi, mask, 255./mhi_duration, - (mhi_duration - timestamp)*255./mhi_duration ); - cvZero( motion ); - cvCvtPlaneToPix( mask, 0, 0, 0, motion ); - - // calculate motion gradient orientation and valid orientation mask - cvCalcMotionGradient( mhi, mask, orient, max_time_delta, min_time_delta, aperture ); - - if( !storage ) - storage = cvCreateMemStorage(0); - else - cvClearMemStorage(storage); - - // segment motion: get sequence of motion components - // segmask is marked motion components map. It is not used further - seq = cvSegmentMotion( mhi, segmask, storage, timestamp, max_time_delta ); - - // iterate through the motion components, - // One more iteration (i == -1) corresponds to the whole image (global motion) - j=0; - if (seq->total) for( i = -1; i < seq->total; i++ ) { - - if( i < 0 ) { // case of the whole image - comp_rect = cvRect( 0, 0, size.width, size.height ); - color = CV_RGB(255,255,255); - magnitude = 100; - } - else { // i-th motion component - comp_rect = ((CvConnectedComp*)cvGetSeqElem( seq, i ))->rect; - if(( comp_rect.width + comp_rect.height < min_size )||( comp_rect.width + comp_rect.height > max_size )) // reject very small/big components - continue; -#ifdef _DARWIN_ - color = CV_RGB(0,255,0); -#else - color = CV_RGB(255,0,0); -#endif - magnitude = (comp_rect.width + comp_rect.height) /4; - } - - // select component ROI - cvSetImageROI( silh, comp_rect ); - cvSetImageROI( mhi, comp_rect ); - cvSetImageROI( orient, comp_rect ); - cvSetImageROI( mask, comp_rect ); - - // calculate orientation - angle = cvCalcGlobalOrientation( orient, mask, mhi, timestamp, mhi_duration); - angle = 360.0 - angle; // adjust for images with top-left origin - - count = cvNorm( silh, 0, CV_L1, 0 ); // calculate number of points within silhouette ROI - - cvResetImageROI( mhi ); - cvResetImageROI( orient ); - cvResetImageROI( mask ); - cvResetImageROI( silh ); - - - // draw a clock with arrow indicating the direction - center = cvPoint( (comp_rect.x + comp_rect.width/2), - (comp_rect.y + comp_rect.height/2) ); - - cvCircle( motion, center, cvRound(magnitude*1.2), color, 3, CV_AA, 0 ); - cvLine( motion, center, cvPoint( cvRound( center.x + magnitude*cos(angle*CV_PI/180)), - cvRound( center.y - magnitude*sin(angle*CV_PI/180))), color, 3, CV_AA, 0 ); - - if( i < 0 ) // case of the whole image - { - sprintf( tindex, "%d", i ); - cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); - SETFLOAT(&rlist[0], i); - SETFLOAT(&rlist[1], center.x); - SETFLOAT(&rlist[2], center.y); - SETFLOAT(&rlist[3], comp_rect.width); - SETFLOAT(&rlist[4], comp_rect.height); - SETFLOAT(&rlist[5], angle); - outlet_list( m_dataout, 0, 6, rlist ); - } - else - { - sprintf( tindex, "%d", ++j ); - cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); - SETFLOAT(&rlist[0], j); - SETFLOAT(&rlist[1], center.x); - SETFLOAT(&rlist[2], center.y); - SETFLOAT(&rlist[3], comp_rect.width); - SETFLOAT(&rlist[4], comp_rect.height); - SETFLOAT(&rlist[5], angle); - outlet_list( m_dataout, 0, 6, rlist ); - } - } - - -#ifdef _DARWIN_ - cvCvtColor( motion, rgba, CV_RGB2BGRA); -#else - cvCvtColor( motion, rgba, CV_RGB2RGBA); -#endif - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_motempl :: processRGBImage(imageStruct &image) -{ - double timestamp = (double)clock()/CLOCKS_PER_SEC; // get current time in seconds - CvSize size = cvSize(image.xsize,image.ysize); // get current frame size - int i, j, idx1 = last, idx2; - IplImage* silh; - CvSeq* seq; - CvRect comp_rect; - double count; - double angle; - CvPoint center; - double magnitude; - CvScalar color; - char tindex[10]; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &motion ); - cvReleaseImage( &rgba ); - cvReleaseImage( &grey ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); - motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); - cvZero( motion ); - motion->origin = rgb->origin; - rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // allocate images at the beginning or - // reallocate them if the frame size is changed - if( (!mhi) || (mhi->width != size.width) || (mhi->height != size.height) || (!buf)) { - if( buf == 0 ) { - buf = (IplImage**)malloc(frame_buffer_num*sizeof(buf[0])); - //memset( buf, 0, N*sizeof(buf[0])); - } - - for( i = 0; i < frame_buffer_num; i++ ) { - // TODO if ( buf[i] != NULL ) cvReleaseImage( &(buf[i]) ); - buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 ); - cvZero( buf[i] ); - } - if ( mhi != NULL ) cvReleaseImage( &mhi ); - if ( orient != NULL ) cvReleaseImage( &orient ); - if ( segmask != NULL ) cvReleaseImage( &segmask ); - if ( mask != NULL ) cvReleaseImage( &mask ); - - mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - cvZero( mhi ); // clear MHI at the beginning - orient = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - segmask = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); - } - - cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale - - idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame - last = idx2; - - silh = buf[idx2]; - cvAbsDiff( buf[idx1], buf[idx2], silh ); // get difference between frames - - cvThreshold( silh, silh, diff_threshold, 1, CV_THRESH_BINARY ); // and threshold it - cvUpdateMotionHistory( silh, mhi, timestamp, mhi_duration ); // update MHI - - // convert MHI to blue 8u image - cvCvtScale( mhi, mask, 255./mhi_duration, - (mhi_duration - timestamp)*255./mhi_duration ); - cvZero( motion ); - cvCvtPlaneToPix( mask, 0, 0, 0, motion ); - - // calculate motion gradient orientation and valid orientation mask - cvCalcMotionGradient( mhi, mask, orient, max_time_delta, min_time_delta, aperture ); - - if( !storage ) - storage = cvCreateMemStorage(0); - else - cvClearMemStorage(storage); - - // segment motion: get sequence of motion components - // segmask is marked motion components map. It is not used further - seq = cvSegmentMotion( mhi, segmask, storage, timestamp, max_time_delta ); - - // iterate through the motion components, - // One more iteration (i == -1) corresponds to the whole image (global motion) - j=0; - if (seq->total) for( i = -1; i < seq->total; i++ ) { - - if( i < 0 ) { // case of the whole image - comp_rect = cvRect( 0, 0, size.width, size.height ); - color = CV_RGB(255,255,255); - magnitude = 100; - } - else { // i-th motion component - comp_rect = ((CvConnectedComp*)cvGetSeqElem( seq, i ))->rect; - if(( comp_rect.width + comp_rect.height < min_size )||( comp_rect.width + comp_rect.height > max_size )) // reject very small/big components - continue; -#ifdef _DARWIN_ - color = CV_RGB(0,255,0); -#else - color = CV_RGB(255,0,0); -#endif - magnitude = (comp_rect.width + comp_rect.height) / 4; - } - - // select component ROI - cvSetImageROI( silh, comp_rect ); - cvSetImageROI( mhi, comp_rect ); - cvSetImageROI( orient, comp_rect ); - cvSetImageROI( mask, comp_rect ); - - // calculate orientation - angle = cvCalcGlobalOrientation( orient, mask, mhi, timestamp, mhi_duration); - angle = 360.0 - angle; // adjust for images with top-left origin - - count = cvNorm( silh, 0, CV_L1, 0 ); // calculate number of points within silhouette ROI - - cvResetImageROI( mhi ); - cvResetImageROI( orient ); - cvResetImageROI( mask ); - cvResetImageROI( silh ); - - - // draw a clock with arrow indicating the direction - center = cvPoint( (comp_rect.x + comp_rect.width/2), - (comp_rect.y + comp_rect.height/2) ); - - cvCircle( motion, center, cvRound(magnitude*1.2), color, 3, CV_AA, 0 ); - cvLine( motion, center, cvPoint( cvRound( center.x + magnitude*cos(angle*CV_PI/180)), - cvRound( center.y - magnitude*sin(angle*CV_PI/180))), color, 3, CV_AA, 0 ); - - if( i < 0 ) // case of the whole image - { - sprintf( tindex, "%d", i ); - cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); - SETFLOAT(&rlist[0], i); - SETFLOAT(&rlist[1], center.x); - SETFLOAT(&rlist[2], center.y); - SETFLOAT(&rlist[3], comp_rect.width); - SETFLOAT(&rlist[4], comp_rect.height); - SETFLOAT(&rlist[5], angle); - outlet_list( m_dataout, 0, 6, rlist ); - } - else - { - sprintf( tindex, "%d", ++j ); - cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); - SETFLOAT(&rlist[0], j); - SETFLOAT(&rlist[1], center.x); - SETFLOAT(&rlist[2], center.y); - SETFLOAT(&rlist[3], comp_rect.width); - SETFLOAT(&rlist[4], comp_rect.height); - SETFLOAT(&rlist[5], angle); - outlet_list( m_dataout, 0, 6, rlist ); - } - } - - - //cvShowImage(wndname, cedge); - memcpy( image.data, motion->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_motempl :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_motempl : yuv format not supported" ); -} - -void pix_opencv_motempl :: processGrayImage(imageStruct &image) -{ - double timestamp = (double)clock()/CLOCKS_PER_SEC; // get current time in seconds - CvSize size = cvSize(image.xsize,image.ysize); // get current frame size - int i, j, idx1 = last, idx2; - IplImage* silh; - CvSeq* seq; - CvRect comp_rect; - double count; - double angle; - CvPoint center; - double magnitude; - CvScalar color; - char tindex[10]; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - cvReleaseImage( &rgb ); - cvReleaseImage( &motion ); - cvReleaseImage( &rgba ); - cvReleaseImage( &grey ); - - //Create cv_images - rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); - motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); - cvZero( motion ); - motion->origin = rgb->origin; - rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - - // Convert to RGB - cvCvtColor( grey, rgb, CV_GRAY2RGB); - - // allocate images at the beginning or - // reallocate them if the frame size is changed - if( (!mhi) || (mhi->width != size.width) || (mhi->height != size.height) || (!buf)) { - if( buf == 0 ) { - buf = (IplImage**)malloc(frame_buffer_num*sizeof(buf[0])); - //memset( buf, 0, N*sizeof(buf[0])); - } - - for( i = 0; i < frame_buffer_num; i++ ) { - // TODO cvReleaseImage( &(buf[i]) ); - buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 ); - cvZero( buf[i] ); - } - if ( mhi != NULL ) cvReleaseImage( &mhi ); - if ( orient != NULL ) cvReleaseImage( &orient ); - if ( segmask != NULL ) cvReleaseImage( &segmask ); - if ( mask != NULL ) cvReleaseImage( &mask ); - - mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - cvZero( mhi ); // clear MHI at the beginning - orient = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - segmask = cvCreateImage( size, IPL_DEPTH_32F, 1 ); - mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); - } - - cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale - - idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame - last = idx2; - - silh = buf[idx2]; - cvAbsDiff( buf[idx1], buf[idx2], silh ); // get difference between frames - - cvThreshold( silh, silh, diff_threshold, 1, CV_THRESH_BINARY ); // and threshold it - cvUpdateMotionHistory( silh, mhi, timestamp, mhi_duration ); // update MHI - - // convert MHI to blue 8u image - cvCvtScale( mhi, mask, 255./mhi_duration, - (mhi_duration - timestamp)*255./mhi_duration ); - cvZero( motion ); - cvCvtPlaneToPix( mask, 0, 0, 0, motion ); - - // calculate motion gradient orientation and valid orientation mask - cvCalcMotionGradient( mhi, mask, orient, max_time_delta, min_time_delta, aperture ); - - if( !storage ) - storage = cvCreateMemStorage(0); - else - cvClearMemStorage(storage); - - // segment motion: get sequence of motion components - // segmask is marked motion components map. It is not used further - seq = cvSegmentMotion( mhi, segmask, storage, timestamp, max_time_delta ); - - // iterate through the motion components, - // One more iteration (i == -1) corresponds to the whole image (global motion) - j=0; - if (seq->total) for( i = -1; i < seq->total; i++ ) { - - if( i < 0 ) { // case of the whole image - comp_rect = cvRect( 0, 0, size.width, size.height ); - color = CV_RGB(255,255,255); - magnitude = 100; - } - else { // i-th motion component - comp_rect = ((CvConnectedComp*)cvGetSeqElem( seq, i ))->rect; - if(( comp_rect.width + comp_rect.height < min_size )||( comp_rect.width + comp_rect.height > max_size )) // reject very small components - continue; -#ifdef _DARWIN_ - color = CV_RGB(0,255,0); -#else - color = CV_RGB(255,0,0); -#endif - magnitude = (comp_rect.width + comp_rect.height) / 4; - } - - // select component ROI - cvSetImageROI( silh, comp_rect ); - cvSetImageROI( mhi, comp_rect ); - cvSetImageROI( orient, comp_rect ); - cvSetImageROI( mask, comp_rect ); - - // calculate orientation - angle = cvCalcGlobalOrientation( orient, mask, mhi, timestamp, mhi_duration); - angle = 360.0 - angle; // adjust for images with top-left origin - - count = cvNorm( silh, 0, CV_L1, 0 ); // calculate number of points within silhouette ROI - - cvResetImageROI( mhi ); - cvResetImageROI( orient ); - cvResetImageROI( mask ); - cvResetImageROI( silh ); - - - // draw a clock with arrow indicating the direction - center = cvPoint( (comp_rect.x + comp_rect.width/2), - (comp_rect.y + comp_rect.height/2) ); - - cvCircle( motion, center, cvRound(magnitude*1.2), color, 3, CV_AA, 0 ); - cvLine( motion, center, cvPoint( cvRound( center.x + magnitude*cos(angle*CV_PI/180)), - cvRound( center.y - magnitude*sin(angle*CV_PI/180))), color, 3, CV_AA, 0 ); - - if( i < 0 ) // case of the whole image - { - sprintf( tindex, "%d", i ); - cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); - SETFLOAT(&rlist[0], i); - SETFLOAT(&rlist[1], center.x); - SETFLOAT(&rlist[2], center.y); - SETFLOAT(&rlist[3], comp_rect.width); - SETFLOAT(&rlist[4], comp_rect.height); - SETFLOAT(&rlist[5], angle); - outlet_list( m_dataout, 0, 6, rlist ); - } - else - { - sprintf( tindex, "%d", ++j ); - cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); - SETFLOAT(&rlist[0], j); - SETFLOAT(&rlist[1], center.x); - SETFLOAT(&rlist[2], center.y); - SETFLOAT(&rlist[3], comp_rect.width); - SETFLOAT(&rlist[4], comp_rect.height); - SETFLOAT(&rlist[5], angle); - outlet_list( m_dataout, 0, 6, rlist ); - } - } - - - // Convert to grayscale - cvCvtColor( motion, grey, CV_RGB2GRAY); - //cvShowImage(wndname, cedge); - memcpy( image.data, grey->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_motempl :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_motempl::thresholdMessCallback, - gensym("ft1"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_motempl::mhi_durationMessCallback, - gensym("mhi_duration"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_motempl::max_time_deltaMessCallback, gensym("max_time_delta"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_motempl::min_time_deltaMessCallback, gensym("min_time_delta"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_motempl::frame_buffer_numMessCallback, gensym("frame_buffer_num"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_motempl::min_sizeMessCallback, gensym("min_size"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_motempl::max_sizeMessCallback, gensym("max_size"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_motempl::apertureMessCallback, gensym("aperture"), A_FLOAT, A_NULL); -} -void pix_opencv_motempl :: thresholdMessCallback(void *data, t_floatarg pos) -{ - GetMyClass(data)->floatThreshMess((float)pos); -} -void pix_opencv_motempl :: mhi_durationMessCallback(void *data, t_floatarg mhi_duration) -{ - GetMyClass(data)->floatMhiDuration((float)mhi_duration); -} -void pix_opencv_motempl :: min_sizeMessCallback(void *data, t_floatarg min_size) -{ - GetMyClass(data)->floatmin_size((float)min_size); -} -void pix_opencv_motempl :: max_sizeMessCallback(void *data, t_floatarg max_size) -{ - GetMyClass(data)->floatmax_size((float)max_size); -} -void pix_opencv_motempl :: max_time_deltaMessCallback(void *data, t_floatarg max_time_delta) -{ - GetMyClass(data)->floatmax_time_delta((float)max_time_delta); -} -void pix_opencv_motempl :: min_time_deltaMessCallback(void *data, t_floatarg min_time_delta) -{ - GetMyClass(data)->floatmin_time_delta((float)min_time_delta); -} -void pix_opencv_motempl :: frame_buffer_numMessCallback(void *data, t_floatarg frame_buffer_num) -{ - GetMyClass(data)->floatframe_buffer_num((float)frame_buffer_num); -} -void pix_opencv_motempl :: apertureMessCallback(void *data, t_floatarg aperture) -{ - GetMyClass(data)->apertureMess((float)aperture); -} -void pix_opencv_motempl :: floatThreshMess(float thresh) -{ - if (thresh>=0) diff_threshold = (int)thresh; -} -void pix_opencv_motempl :: floatMhiDuration(float duration) -{ - if ( duration < 1.0 ) mhi_duration = duration; -} -void pix_opencv_motempl :: apertureMess(float aperture) -{ - if ( ( aperture == 3.0 ) || ( aperture == 5.0 ) || ( aperture == 7.0 ) ) - { - aperture = (int)aperture; - } -} -void pix_opencv_motempl :: floatmax_size(float max_size) -{ - if (max_size>=0) this->max_size = (int)max_size; -} -void pix_opencv_motempl :: floatmin_size(float min_size) -{ - if (min_size>=0) this->min_size = (int)min_size; -} -void pix_opencv_motempl :: floatframe_buffer_num(float frame_buffer_num) -{ - if (frame_buffer_num>=3) - { - this->frame_buffer_num = (int)frame_buffer_num; - this->buf = NULL; - } -} -void pix_opencv_motempl :: floatmax_time_delta(float max_time_delta) -{ - if (max_time_delta>=0) this->max_time_delta = max_time_delta; -} -void pix_opencv_motempl :: floatmin_time_delta(float min_time_delta) -{ - if (min_time_delta>=0) this->min_time_delta = min_time_delta; -} diff --git a/pix_opencv_motempl.h b/pix_opencv_motempl.h deleted file mode 100644 index 187cd22..0000000 --- a/pix_opencv_motempl.h +++ /dev/null @@ -1,132 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Motion detection based on motion history - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_MOTEMPL_H_ -#define INCLUDE_PIX_OPENCV_MOTEMPL_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/compat.hpp" -#include "opencv2/video/tracking.hpp" - -#include -#include -#include -#endif -#include - -#include "Base/GemPixObj.h" - - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_motempl - - Motion detection based on motion history - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_motempl : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_motempl, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_motempl(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_motempl(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatThreshMess(float thresh); - void floatMhiDuration(float duration); - void floatmin_time_delta(float min_time_delta); - void floatmax_time_delta(float max_time_delta); - void floatframe_buffer_num(float frame_buffer_num); - void floatmax_size(float max_size); - void floatmin_size(float min_size); - void apertureMess(float aperture); - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - // Some varibales to control mophology mhi_duration - double mhi_duration; - int diff_threshold; - int mask_size; - int last; - int aperture; - - // various tracking parameters (in seconds) - double max_time_delta; - double min_time_delta; - // number of cyclic frame buffer used for motion detection - // (should, probably, depend on FPS) - int frame_buffer_num; - - int max_size; - int min_size; - - private: - - ////////// - // Static member functions - static void thresholdMessCallback(void *data, t_floatarg pos); - static void mhi_durationMessCallback(void *data, t_floatarg mhi_duration); - static void max_time_deltaMessCallback(void *data, t_floatarg max_time_delta); - static void min_time_deltaMessCallback(void *data, t_floatarg min_time_delta); - static void frame_buffer_numMessCallback(void *data, t_floatarg frame_buffer_num); - static void min_sizeMessCallback(void *data, t_floatarg min_size); - static void max_sizeMessCallback(void *data, t_floatarg max_size); - static void apertureMessCallback(void *data, t_floatarg aperture); - - // The output and temporary images - IplImage *rgb, *motion, *rgba, *grey; - - // ring image buffer - IplImage **buf; - - // temporary images - IplImage *mhi; // MHI - IplImage *orient; // orientation - IplImage *mask; // valid orientation mask - IplImage *segmask; // motion segmentation map - CvMemStorage* storage; // temporary storage - t_outlet *m_dataout; - CvFont font; - t_atom rlist[6]; - -}; - -#endif // for header file diff --git a/pix_opencv_of_bm-help.pd b/pix_opencv_of_bm-help.pd deleted file mode 100644 index 869cf7b..0000000 --- a/pix_opencv_of_bm-help.pd +++ /dev/null @@ -1,214 +0,0 @@ -#N canvas 66 25 1339 660 10; -#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 189 149 454 304 gemwin 0; -#X obj 130 218 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#X msg 129 165 create \, 1; -#X msg 205 166 destroy; -#N canvas 87 154 363 340 Gem.init 0; -#X obj 112 15 loadbang; -#X msg 62 93 reset; -#X obj 49 135 outlet; -#X msg 107 89 dimen 320 240; -#X obj 107 51 t b b b; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 3 0 2 0; -#X connect 4 0 3 0; -#X connect 4 2 1 0; -#X restore 289 80 pd Gem.init; -#X obj 128 109 t b b b; -#X msg 247 137 frame 25; -#X msg 156 138 dimen 640 480; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 9 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 9 0 6 0; -#X connect 9 1 11 0; -#X connect 9 2 10 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X restore 984 101 pd gemwin; -#X msg 984 80 create; -#X text 987 62 Create window and render; -#X text 979 189 with a great help from Mateu Batle & Alberto de Rodrigo -from the iBit foundation.; -#X text 978 153 the main purpose of this object is to calculate the -average direction and the intensity of the movement in a video stream. -; -#X text 979 213 comments to ydegoyon@gmail.com; -#X text 979 137 pix_opencv_of_bm : Block Matching optical flow algorithm. -; -#X obj 426 308 cnv 15 600 350 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 455 540 pix_opencv_of_bm; -#X obj 560 572 unpack f f; -#X floatatom 646 572 5 0 0 0 - - -; -#X floatatom 648 592 5 0 0 0 - - -; -#X text 688 571 largest amplitude of movement; -#X text 688 592 angle of the block with the maximum movement; -#X text 686 604 ( in degrees [-180 \, 180]); -#X floatatom 507 621 5 0 0 0 - - -; -#X text 549 642 marked with a white arrow on the stream; -#X text 549 618 average angle of the blocks movement; -#X text 548 630 ( in degrees [-180 \, 180]); -#X obj 600 463 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 515 461 nightmode \$1; -#X floatatom 573 332 5 0 0 0 - - -; -#X msg 463 331 blocksize \$1 \$1; -#X floatatom 585 355 5 0 0 0 - - -; -#X floatatom 599 381 5 0 0 0 - - -; -#X msg 475 354 shiftsize \$1 \$1; -#X msg 489 380 maxrange \$1 \$1; -#X floatatom 589 408 5 0 0 0 - - -; -#X msg 502 406 threshold \$1; -#X obj 621 492 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 521 491 useprevious \$1; -#X text 614 332 set blocksize (width height) ( default 20x20 ); -#X text 625 354 set shiftsize (width height) ( default 20x20 ); -#X text 639 381 set maxrange (width height) ( default 20x10 ); -#X text 643 490 use previous results ( default : 0 \, surprising results -when on ); -#X msg 505 435 minblocks \$1; -#X floatatom 592 436 5 0 0 0 - - -; -#X text 619 464 set nightmode; -#X text 636 430 minimum nuber of blocks to detect the movement; -#X text 631 405 threshold value for the detection of movement ( default -10 ); -#X text 633 443 ( default 10 ); -#X obj 507 -62 gemhead; -#X obj 454 228 separator; -#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 600 78 5 0 10000 1 frame# - -; -#X obj 561 -33 openpanel; -#X msg 561 -13 open \$1; -#X obj 549 96 pix_film; -#X msg 567 30 auto \$1; -#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 662 13 colorspace RGBA; -#X msg 767 13 colorspace RGB; -#X msg 871 13 colorspace Grey; -#X obj 662 -15 loadbang; -#X obj 296 224 separator; -#X obj 296 250 translateXYZ -2 0 0; -#X obj 454 253 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 385 125 pd vswitch; -#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 312 94 pix_video; -#X obj 315 -64 gemhead; -#X msg 351 19 device 0; -#X msg 360 50 driver 1; -#X msg 337 -35 dialog; -#X msg 342 -5 device /dev/dv1394-0; -#X obj 294 659 pix_texture; -#X obj 294 687 square 2; -#X obj 455 664 pix_texture; -#X text 504 146 this object can work on small frames unless you have -a very powerful machine; -#X obj 456 688 square 2; -#X obj 295 201 pix_separator; -#X obj 454 205 pix_separator; -#X obj 384 154 pix_resize 320 240; -#X obj 386 180 pix_rgba; -#X connect 1 0 2 0; -#X connect 2 0 1 0; -#X connect 9 0 69 0; -#X connect 9 1 16 0; -#X connect 9 2 10 0; -#X connect 10 0 11 0; -#X connect 10 1 12 0; -#X connect 20 0 21 0; -#X connect 21 0 9 0; -#X connect 22 0 23 0; -#X connect 23 0 9 0; -#X connect 24 0 26 0; -#X connect 25 0 27 0; -#X connect 26 0 9 0; -#X connect 27 0 9 0; -#X connect 28 0 29 0; -#X connect 29 0 9 0; -#X connect 30 0 31 0; -#X connect 31 0 9 0; -#X connect 36 0 9 0; -#X connect 37 0 36 0; -#X connect 42 0 49 0; -#X connect 43 0 58 0; -#X connect 44 0 47 0; -#X connect 45 0 46 0; -#X connect 46 0 49 1; -#X connect 47 0 48 0; -#X connect 48 0 49 0; -#X connect 49 0 59 1; -#X connect 49 2 45 0; -#X connect 50 0 49 0; -#X connect 51 0 50 0; -#X connect 52 0 49 0; -#X connect 52 0 61 0; -#X connect 53 0 49 0; -#X connect 54 0 49 0; -#X connect 55 0 52 0; -#X connect 55 0 51 0; -#X connect 56 0 57 0; -#X connect 57 0 67 0; -#X connect 58 0 9 0; -#X connect 59 0 74 0; -#X connect 60 0 59 2; -#X connect 61 0 59 0; -#X connect 62 0 61 0; -#X connect 63 0 61 0; -#X connect 64 0 61 0; -#X connect 65 0 61 0; -#X connect 66 0 61 0; -#X connect 67 0 68 0; -#X connect 69 0 71 0; -#X connect 72 0 56 0; -#X connect 73 0 43 0; -#X connect 74 0 75 0; -#X connect 75 0 72 0; -#X connect 75 0 73 0; diff --git a/pix_opencv_of_bm.cc b/pix_opencv_of_bm.cc deleted file mode 100644 index c3d280a..0000000 --- a/pix_opencv_of_bm.cc +++ /dev/null @@ -1,576 +0,0 @@ - -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_of_bm.h" -#include - -CPPEXTERN_NEW(pix_opencv_of_bm) - -///////////////////////////////////////////////////////// -// -// pix_opencv_of_bm -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_of_bm :: pix_opencv_of_bm() -{ - comp_xsize=320; - comp_ysize=240; - - m_meanout = outlet_new(this->x_obj, &s_anything); - m_maxout = outlet_new(this->x_obj, &s_anything); - - x_nightmode=0; - x_threshold=10; - x_blocksize.width = 20; - x_blocksize.height = 20; - x_shiftsize.width = 20; - x_shiftsize.height = 20; - x_maxrange.width = 10; - x_maxrange.height = 10; - x_useprevious = 0; - x_minblocks = 10; - x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; - x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; - - // initialize font - cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_of_bm :: ~pix_opencv_of_bm() -{ - // Destroy cv_images - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_of_bm :: processRGBAImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; - x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to hsv - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - cvCvtColor(rgb, grey, CV_BGR2GRAY); - - if( x_nightmode ) - cvZero( rgb ); - - cvCalcOpticalFlowBM( prev_grey, grey, - x_blocksize, x_shiftsize, - x_maxrange, x_useprevious, - x_velx, x_vely ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( rgb, orig, dest, CV_RGB(0,255,0), (int)hypotenuse/10, CV_AA, 0 ); - - orig.x = (int) (dest.x - (x_shiftsize.width/4) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/4) * sin(angle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), (int)hypotenuse/10, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/4) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/4) * sin(angle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), (int)hypotenuse/10, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globy+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - if ( nbblocks >= x_minblocks ) - { - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/2) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/2) * sin(globangle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/2) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/2) * sin(globangle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - cvCvtColor(rgb, rgba, CV_BGR2BGRA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_of_bm :: processRGBImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; - x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to hsv - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - cvCvtColor(rgb, grey, CV_BGR2GRAY); - - if( x_nightmode ) - cvZero( rgb ); - - cvCalcOpticalFlowBM( prev_grey, grey, - x_blocksize, x_shiftsize, - x_maxrange, x_useprevious, - x_velx, x_vely ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( rgb, orig, dest, CV_RGB(0,255,0), (int)hypotenuse/10, CV_AA, 0 ); - - orig.x = (int) (dest.x - (x_shiftsize.width/4) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/4) * sin(angle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), (int)hypotenuse/10, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/4) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/4) * sin(angle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), (int)hypotenuse/10, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globy+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - if ( nbblocks >= x_minblocks ) - { - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/2) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/2) * sin(globangle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/2) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/2) * sin(globangle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_of_bm :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_of_bm : yuv format not supported" ); -} - -void pix_opencv_of_bm :: processGrayImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; - x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - - if( x_nightmode ) - cvZero( grey ); - - cvCalcOpticalFlowBM( prev_grey, grey, - x_blocksize, x_shiftsize, - x_maxrange, x_useprevious, - x_velx, x_vely ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( grey, orig, dest, CV_RGB(0,255,0), (int)hypotenuse/10, CV_AA, 0 ); - - orig.x = (int) (dest.x - (x_shiftsize.width/4) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/4) * sin(angle + M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(0,0,255), (int)hypotenuse/10, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/4) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/4) * sin(angle - M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(0,0,255), (int)hypotenuse/10, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globy+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - if ( nbblocks >= x_minblocks ) - { - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/2) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/2) * sin(globangle + M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (x_shiftsize.width/2) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (x_shiftsize.height/2) * sin(globangle - M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - memcpy( image.data, grey->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_of_bm :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::nightModeMessCallback, - gensym("nightmode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::tresholdMessCallback, - gensym("threshold"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::blocksizeMessCallback, - gensym("blocksize"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::shiftsizeMessCallback, - gensym("shiftsize"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::maxrangeMessCallback, - gensym("maxrange"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::usePreviousMessCallback, - gensym("useprevious"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::minBlocksMessCallback, - gensym("minblocks"), A_FLOAT, A_NULL); -} - -void pix_opencv_of_bm :: nightModeMessCallback(void *data, t_floatarg nightmode) -{ - GetMyClass(data)->nightModeMess((float)nightmode); -} - -void pix_opencv_of_bm :: tresholdMessCallback(void *data, t_floatarg threshold) -{ - GetMyClass(data)->tresholdMess((float)threshold); -} - -void pix_opencv_of_bm :: blocksizeMessCallback(void *data, t_floatarg fwidth, t_floatarg fheight) -{ - GetMyClass(data)->blocksizeMess((float)fwidth, (float)fheight); -} - -void pix_opencv_of_bm :: shiftsizeMessCallback(void *data, t_floatarg fwidth, t_floatarg fheight) -{ - GetMyClass(data)->shiftsizeMess((float)fwidth, (float)fheight); -} - -void pix_opencv_of_bm :: maxrangeMessCallback(void *data, t_floatarg fwidth, t_floatarg fheight) -{ - GetMyClass(data)->maxrangeMess((float)fwidth, (float)fheight); -} - -void pix_opencv_of_bm :: usePreviousMessCallback(void *data, t_floatarg previous) -{ - GetMyClass(data)->usePreviousMess((float)previous); -} - -void pix_opencv_of_bm :: minBlocksMessCallback(void *data, t_floatarg minblocks) -{ - GetMyClass(data)->minBlocksMess((float)minblocks); -} - -void pix_opencv_of_bm :: nightModeMess(float nightmode) -{ - if ( ( (int)nightmode==0 ) || ( (int)nightmode==1 ) ) x_nightmode = (int)nightmode; -} - -void pix_opencv_of_bm :: tresholdMess(float threshold) -{ - if ( (int)threshold>0 ) x_threshold = (int)threshold; -} - -void pix_opencv_of_bm :: blocksizeMess(float fwidth, float fheight) -{ - if ((fwidth>=5.0)&&(fwidth<=100.0)) x_blocksize.width = (int)fwidth; - if ((fheight>=5.0)&&(fheight<=100.0)) x_blocksize.height = (int)fheight; - - x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; - x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - -} - -void pix_opencv_of_bm :: shiftsizeMess(float fwidth, float fheight) -{ - if ((fwidth>=5.0)&&(fwidth<=100.0)) x_shiftsize.width = (int)fwidth; - if ((fheight>=5.0)&&(fheight<=100.0)) x_shiftsize.height = (int)fheight; - - x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; - x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - -} - -void pix_opencv_of_bm :: maxrangeMess(float fwidth, float fheight) -{ - if ((fwidth>=5.0)&&(fwidth<=100.0)) x_maxrange.width = (int)fwidth; - if ((fheight>=5.0)&&(fheight<=100.0)) x_maxrange.height = (int)fheight; -} - -void pix_opencv_of_bm :: usePreviousMess(float previous) -{ - if ((previous==0.0)||(previous==1.0)) x_useprevious = (int)previous; -} - -void pix_opencv_of_bm :: minBlocksMess(float minblocks) -{ - if (minblocks>=1.0) x_minblocks = (int)minblocks; -} - diff --git a/pix_opencv_of_bm.h b/pix_opencv_of_bm.h deleted file mode 100644 index ab62004..0000000 --- a/pix_opencv_of_bm.h +++ /dev/null @@ -1,103 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Optical Flow block Matching algorithm - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_OF_BM_H_ -#define INCLUDE_PIX_OPENCV_OF_BM_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/video/tracking.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_of_bm - - Optical Flow block Matching algorithm - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_of_bm : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_of_bm, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_of_bm(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_of_bm(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - void nightModeMess(float nightmode); - void tresholdMess(float threshold); - void blocksizeMess(float width, float height); - void shiftsizeMess(float width, float height); - void maxrangeMess(float width, float height); - void usePreviousMess(float previous); - void minBlocksMess(float mblocks); - - int comp_xsize; - int comp_ysize; - - t_outlet *m_meanout; - t_outlet *m_maxout; - - CvSize x_blocksize, x_shiftsize, x_maxrange, x_velsize; - - int x_nightmode; - int x_threshold; - int x_useprevious; - int x_minblocks; - - private: - - ////////// - // Static member functions - static void nightModeMessCallback(void *data, float nightmode); - static void tresholdMessCallback(void *data, float threshold); - static void blocksizeMessCallback(void *data, float width, float height); - static void shiftsizeMessCallback(void *data, float width, float height); - static void maxrangeMessCallback(void *data, float width, float height); - static void usePreviousMessCallback(void *data, float previous); - static void minBlocksMessCallback(void *data, float mblocks); - - // Internal Open CV data - IplImage *rgba, *rgb, *grey, *prev_grey, *swap_temp; - IplImage *x_velx, *x_vely; - CvFont font; - - t_atom x_list[3]; -}; - -#endif // for header file diff --git a/pix_opencv_of_hs-help.pd b/pix_opencv_of_hs-help.pd deleted file mode 100644 index c0baf2c..0000000 --- a/pix_opencv_of_hs-help.pd +++ /dev/null @@ -1,207 +0,0 @@ -#N canvas 1644 152 1339 660 10; -#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 189 149 454 304 gemwin 0; -#X obj 130 218 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#X msg 129 165 create \, 1; -#X msg 205 166 destroy; -#N canvas 87 154 363 340 Gem.init 0; -#X obj 112 15 loadbang; -#X msg 62 93 reset; -#X obj 49 135 outlet; -#X msg 107 89 dimen 320 240; -#X obj 107 51 t b b b; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 3 0 2 0; -#X connect 4 0 3 0; -#X connect 4 2 1 0; -#X restore 289 80 pd Gem.init; -#X obj 128 109 t b b b; -#X msg 247 137 frame 25; -#X msg 156 138 dimen 640 480; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 9 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 9 0 6 0; -#X connect 9 1 11 0; -#X connect 9 2 10 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X restore 983 98 pd gemwin; -#X msg 983 77 create; -#X text 986 59 Create window and render; -#X obj 427 308 cnv 15 600 300 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 559 504 unpack f f; -#X floatatom 645 504 5 0 0 0 - - -; -#X floatatom 647 524 5 0 0 0 - - -; -#X text 687 503 largest amplitude of movement; -#X text 687 524 angle of the block with the maximum movement; -#X text 685 536 ( in degrees [-180 \, 180]); -#X floatatom 506 553 5 0 0 0 - - -; -#X text 548 574 marked with a white arrow on the stream; -#X text 548 550 average angle of the blocks movement; -#X text 547 562 ( in degrees [-180 \, 180]); -#X obj 507 -62 gemhead; -#X obj 454 228 separator; -#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 600 78 5 0 10000 1 frame# - -; -#X obj 561 -33 openpanel; -#X msg 561 -13 open \$1; -#X obj 549 96 pix_film; -#X msg 567 30 auto \$1; -#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 662 13 colorspace RGBA; -#X msg 767 13 colorspace RGB; -#X msg 871 13 colorspace Grey; -#X obj 662 -15 loadbang; -#X obj 296 224 separator; -#X obj 296 250 translateXYZ -2 0 0; -#X obj 454 253 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 385 125 pd vswitch; -#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 312 94 pix_video; -#X obj 315 -64 gemhead; -#X msg 351 19 device 0; -#X msg 360 50 driver 1; -#X msg 337 -35 dialog; -#X msg 342 -5 device /dev/dv1394-0; -#X obj 293 613 pix_texture; -#X obj 293 641 square 2; -#X obj 454 618 pix_texture; -#X text 504 146 this object can work on small frames unless you have -a very powerful machine; -#X obj 455 642 square 2; -#X obj 295 201 pix_separator; -#X obj 454 205 pix_separator; -#X obj 454 472 pix_opencv_of_hs; -#X obj 596 402 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 511 400 nightmode \$1; -#X floatatom 557 323 5 0 0 0 - - -; -#X floatatom 585 347 5 0 0 0 - - -; -#X msg 498 345 threshold \$1; -#X obj 620 433 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 520 432 useprevious \$1; -#X text 642 431 use previous results ( default : 0 \, surprising results -when on ); -#X msg 501 374 minblocks \$1; -#X floatatom 588 375 5 0 0 0 - - -; -#X text 615 403 set nightmode; -#X text 632 369 minimum nuber of blocks to detect the movement; -#X msg 487 320 lambda \$1; -#X text 600 320 set Lagragian multiplier ( default 1 ); -#X text 629 382 ( default 10 ); -#X text 627 344 threshold value for the detection of movement ( default -100 ); -#X text 971 253 with a great help from Mateu Batle & Alberto de Rodrigo -from the iBit foundation.; -#X text 970 217 the main purpose of this object is to calculate the -average direction and the intensity of the movement in a video stream. -; -#X text 971 277 comments to ydegoyon@gmail.com; -#X text 972 132 pix_opencv_of_hs : Haron and Schunck optical flow algorithm. -; -#X obj 385 160 pix_resize 320 240; -#X obj 385 182 pix_rgba; -#X text 971 153 IMPORTANT: this object is quite experimental. For OpticalFlow -analisys we recommend [pix_opencv_of_bm]; -#X obj 975 184 pix_opencv_of_bm; -#X connect 1 0 2 0; -#X connect 2 0 1 0; -#X connect 5 0 6 0; -#X connect 5 1 7 0; -#X connect 15 0 22 0; -#X connect 16 0 31 0; -#X connect 17 0 20 0; -#X connect 18 0 19 0; -#X connect 19 0 22 1; -#X connect 20 0 21 0; -#X connect 21 0 22 0; -#X connect 22 0 32 1; -#X connect 22 2 18 0; -#X connect 23 0 22 0; -#X connect 24 0 23 0; -#X connect 25 0 22 0; -#X connect 25 0 34 0; -#X connect 26 0 22 0; -#X connect 27 0 22 0; -#X connect 28 0 25 0; -#X connect 28 0 24 0; -#X connect 29 0 30 0; -#X connect 30 0 40 0; -#X connect 31 0 47 0; -#X connect 32 0 68 0; -#X connect 33 0 32 2; -#X connect 34 0 32 0; -#X connect 35 0 34 0; -#X connect 36 0 34 0; -#X connect 37 0 34 0; -#X connect 38 0 34 0; -#X connect 39 0 34 0; -#X connect 40 0 41 0; -#X connect 42 0 44 0; -#X connect 45 0 29 0; -#X connect 46 0 16 0; -#X connect 47 0 42 0; -#X connect 47 1 11 0; -#X connect 47 2 5 0; -#X connect 48 0 49 0; -#X connect 49 0 47 0; -#X connect 50 0 60 0; -#X connect 51 0 52 0; -#X connect 52 0 47 0; -#X connect 53 0 54 0; -#X connect 54 0 47 0; -#X connect 56 0 47 0; -#X connect 57 0 56 0; -#X connect 60 0 47 0; -#X connect 68 0 69 0; -#X connect 69 0 45 0; -#X connect 69 0 46 0; diff --git a/pix_opencv_of_hs.cc b/pix_opencv_of_hs.cc deleted file mode 100644 index c18bb14..0000000 --- a/pix_opencv_of_hs.cc +++ /dev/null @@ -1,531 +0,0 @@ - -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_of_hs.h" -#include - -CPPEXTERN_NEW(pix_opencv_of_hs) - -///////////////////////////////////////////////////////// -// -// pix_opencv_of_hs -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_of_hs :: pix_opencv_of_hs() -{ - comp_xsize=320; - comp_ysize=240; - - m_meanout = outlet_new(this->x_obj, &s_anything); - m_maxout = outlet_new(this->x_obj, &s_anything); - - x_nightmode=0; - x_threshold=100; - x_lambda=1.0; - x_useprevious = 0; - x_minblocks = 10; - x_velsize.width = comp_xsize; - x_velsize.height = comp_ysize; - - // initialize font - cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_of_hs :: ~pix_opencv_of_hs() -{ - // Destroy cv_images - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_of_hs :: processRGBAImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = comp_xsize; - x_velsize.height = comp_ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to hsv - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - cvCvtColor(rgb, grey, CV_BGR2GRAY); - - if( x_nightmode ) - cvZero( rgb ); - - cvCalcOpticalFlowHS( prev_grey, grey, - x_useprevious, - x_velx, x_vely, - x_lambda, - cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03) ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( rgb, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); - - orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globy+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - if ( nbblocks >= x_minblocks ) - { - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - cvCvtColor(rgb, rgba, CV_BGR2BGRA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_of_hs :: processRGBImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = comp_xsize; - x_velsize.height = comp_ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to hsv - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - cvCvtColor(rgb, grey, CV_BGR2GRAY); - - if( x_nightmode ) - cvZero( rgb ); - - cvCalcOpticalFlowHS( prev_grey, grey, - x_useprevious, - x_velx, x_vely, - x_lambda, - cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03) ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( rgb, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); - - orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globy+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - if ( nbblocks >= x_minblocks ) - { - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_of_hs :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_of_hs : yuv format not supported" ); -} - -void pix_opencv_of_hs :: processGrayImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = comp_xsize; - x_velsize.height = comp_ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - - if( x_nightmode ) - cvZero( grey ); - - cvCalcOpticalFlowHS( prev_grey, grey, - x_useprevious, - x_velx, x_vely, - x_lambda, - cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03) ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( grey, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); - - orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globx+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - if ( nbblocks >= x_minblocks ) - { - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - memcpy( image.data, grey->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_of_hs :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::nightModeMessCallback, - gensym("nightmode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::tresholdMessCallback, - gensym("threshold"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::lambdaMessCallback, - gensym("lambda"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::usePreviousMessCallback, - gensym("useprevious"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::minBlocksMessCallback, - gensym("minblocks"), A_FLOAT, A_NULL); -} - -void pix_opencv_of_hs :: nightModeMessCallback(void *data, t_floatarg nightmode) -{ - GetMyClass(data)->nightModeMess((float)nightmode); -} - -void pix_opencv_of_hs :: tresholdMessCallback(void *data, t_floatarg threshold) -{ - GetMyClass(data)->tresholdMess((float)threshold); -} - -void pix_opencv_of_hs :: lambdaMessCallback(void *data, t_floatarg lambda) -{ - GetMyClass(data)->lambdaMess((float)lambda); -} - -void pix_opencv_of_hs :: usePreviousMessCallback(void *data, t_floatarg previous) -{ - GetMyClass(data)->usePreviousMess((float)previous); -} - -void pix_opencv_of_hs :: minBlocksMessCallback(void *data, t_floatarg minblocks) -{ - GetMyClass(data)->minBlocksMess((float)minblocks); -} - -void pix_opencv_of_hs :: nightModeMess(float nightmode) -{ - if ( ( (int)nightmode==0 ) || ( (int)nightmode==1 ) ) x_nightmode = (int)nightmode; -} - -void pix_opencv_of_hs :: tresholdMess(float threshold) -{ - if ( (int)threshold>0 ) x_threshold = (int)threshold; -} - -void pix_opencv_of_hs :: lambdaMess(float lambda) -{ - if (lambda>0.0) x_lambda = (double)lambda; -} - -void pix_opencv_of_hs :: usePreviousMess(float previous) -{ - if ((previous==0.0)||(previous==1.0)) x_useprevious = (int)previous; -} - -void pix_opencv_of_hs :: minBlocksMess(float minblocks) -{ - if (minblocks>=1.0) x_minblocks = (int)minblocks; -} - diff --git a/pix_opencv_of_hs.h b/pix_opencv_of_hs.h deleted file mode 100644 index 56bb747..0000000 --- a/pix_opencv_of_hs.h +++ /dev/null @@ -1,100 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Horn and Schunck Optical Flow algorithm - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_OF_HS_H_ -#define INCLUDE_PIX_OPENCV_OF_HS_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/video/tracking.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_of_hs - - Horn and Schunck Optical Flow algorithm - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_of_hs : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_of_hs, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_of_hs(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_of_hs(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - void nightModeMess(float nightmode); - void tresholdMess(float threshold); - void lambdaMess(float lambda); - void usePreviousMess(float previous); - void minBlocksMess(float mblocks); - - int comp_xsize; - int comp_ysize; - - t_outlet *m_meanout; - t_outlet *m_maxout; - - CvSize x_velsize; - double x_lambda; - - int x_nightmode; - int x_threshold; - int x_useprevious; - int x_minblocks; - - private: - - ////////// - // Static member functions - static void nightModeMessCallback(void *data, float nightmode); - static void tresholdMessCallback(void *data, float threshold); - static void lambdaMessCallback(void *data, float lambda); - static void usePreviousMessCallback(void *data, float previous); - static void minBlocksMessCallback(void *data, float mblocks); - - // Internal Open CV data - IplImage *rgba, *rgb, *grey, *prev_grey, *swap_temp; - IplImage *x_velx, *x_vely; - CvFont font; - - t_atom x_list[3]; -}; - -#endif // for header file diff --git a/pix_opencv_of_lk-help.pd b/pix_opencv_of_lk-help.pd deleted file mode 100644 index bdbf2c9..0000000 --- a/pix_opencv_of_lk-help.pd +++ /dev/null @@ -1,205 +0,0 @@ -#N canvas 1556 165 1339 660 10; -#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 189 149 454 304 gemwin 0; -#X obj 130 218 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#X msg 129 165 create \, 1; -#X msg 205 166 destroy; -#N canvas 87 154 363 340 Gem.init 0; -#X obj 112 15 loadbang; -#X msg 62 93 reset; -#X obj 49 135 outlet; -#X msg 107 89 dimen 320 240; -#X obj 107 51 t b b b; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 3 0 2 0; -#X connect 4 0 3 0; -#X connect 4 2 1 0; -#X restore 289 80 pd Gem.init; -#X obj 128 109 t b b b; -#X msg 247 137 frame 25; -#X msg 156 138 dimen 640 480; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 9 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 9 0 6 0; -#X connect 9 1 11 0; -#X connect 9 2 10 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X restore 984 101 pd gemwin; -#X msg 984 80 create; -#X text 987 62 Create window and render; -#X obj 426 308 cnv 15 600 300 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 559 476 unpack f f; -#X floatatom 645 476 5 0 0 0 - - -; -#X floatatom 647 496 5 0 0 0 - - -; -#X text 687 475 largest amplitude of movement; -#X text 687 496 angle of the block with the maximum movement; -#X text 685 508 ( in degrees [-180 \, 180]); -#X floatatom 506 525 5 0 0 0 - - -; -#X text 548 546 marked with a white arrow on the stream; -#X text 548 522 average angle of the blocks movement; -#X text 547 534 ( in degrees [-180 \, 180]); -#X obj 507 -62 gemhead; -#X obj 454 228 separator; -#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 600 78 5 0 10000 1 frame# - -; -#X obj 561 -33 openpanel; -#X msg 561 -13 open \$1; -#X obj 549 96 pix_film; -#X msg 567 30 auto \$1; -#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 662 13 colorspace RGBA; -#X msg 767 13 colorspace RGB; -#X msg 871 13 colorspace Grey; -#X obj 662 -15 loadbang; -#X obj 296 224 separator; -#X obj 296 250 translateXYZ -2 0 0; -#X obj 454 253 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 385 125 pd vswitch; -#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 312 94 pix_video; -#X obj 315 -64 gemhead; -#X msg 351 19 device 0; -#X msg 360 50 driver 1; -#X msg 337 -35 dialog; -#X msg 342 -5 device /dev/dv1394-0; -#X obj 293 612 pix_texture; -#X obj 293 640 square 2; -#X obj 454 617 pix_texture; -#X text 504 146 this object can work on small frames unless you have -a very powerful machine; -#X obj 455 641 square 2; -#X obj 295 201 pix_separator; -#X obj 454 205 pix_separator; -#X text 974 244 with a great help from Mateu Batle & Alberto de Rodrigo -from the iBit foundation.; -#X text 973 208 the main purpose of this object is to calculate the -average direction and the intensity of the movement in a video stream. -; -#X text 974 268 comments to ydegoyon@gmail.com; -#X text 976 129 pix_opencv_of_lk : Lucas Kanade optical flow algorithm. -; -#X obj 599 419 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 514 417 nightmode \$1; -#X floatatom 585 311 5 0 0 0 - - -; -#X floatatom 588 364 5 0 0 0 - - -; -#X msg 501 362 threshold \$1; -#X msg 504 391 minblocks \$1; -#X floatatom 591 392 5 0 0 0 - - -; -#X text 621 418 set nightmode; -#X text 629 386 minimum nuber of blocks to detect the movement; -#X text 626 399 ( default 10 ); -#X msg 491 309 winsize \$1 \$2; -#X obj 454 444 pix_opencv_of_lk; -#X text 628 312 set window size ( width height ) [ default : 9x9 ] -; -#X text 630 328 window width and height must be oneof (1 \, 3 \, 5 -\, 7 \, 9 \, 11 \, 13 \, 15); -#X text 627 363 threshold value for the detection of movement (default -100); -#X obj 383 164 pix_resize 320 240; -#X obj 389 187 pix_rgba; -#X text 974 147 IMPORTANT: this object is quite experimental. For OpticalFlow -analisys we recommend [pix_opencv_of_bm]; -#X obj 978 178 pix_opencv_of_bm; -#X connect 1 0 2 0; -#X connect 2 0 1 0; -#X connect 5 0 6 0; -#X connect 5 1 7 0; -#X connect 15 0 22 0; -#X connect 16 0 31 0; -#X connect 17 0 20 0; -#X connect 18 0 19 0; -#X connect 19 0 22 1; -#X connect 20 0 21 0; -#X connect 21 0 22 0; -#X connect 22 0 32 1; -#X connect 22 2 18 0; -#X connect 23 0 22 0; -#X connect 24 0 23 0; -#X connect 25 0 22 0; -#X connect 25 0 34 0; -#X connect 26 0 22 0; -#X connect 26 0 34 0; -#X connect 27 0 22 0; -#X connect 27 0 34 0; -#X connect 28 0 25 0; -#X connect 28 0 24 0; -#X connect 29 0 30 0; -#X connect 30 0 40 0; -#X connect 31 0 62 0; -#X connect 32 0 66 0; -#X connect 33 0 32 2; -#X connect 34 0 32 0; -#X connect 35 0 34 0; -#X connect 36 0 34 0; -#X connect 37 0 34 0; -#X connect 38 0 34 0; -#X connect 39 0 34 0; -#X connect 40 0 41 0; -#X connect 42 0 44 0; -#X connect 45 0 29 0; -#X connect 46 0 16 0; -#X connect 51 0 52 0; -#X connect 52 0 62 0; -#X connect 53 0 61 0; -#X connect 54 0 55 0; -#X connect 55 0 62 0; -#X connect 56 0 62 0; -#X connect 57 0 56 0; -#X connect 61 0 62 0; -#X connect 62 0 42 0; -#X connect 62 1 11 0; -#X connect 62 2 5 0; -#X connect 66 0 67 0; -#X connect 67 0 45 0; -#X connect 67 0 46 0; diff --git a/pix_opencv_of_lk.cc b/pix_opencv_of_lk.cc deleted file mode 100644 index fb64a4e..0000000 --- a/pix_opencv_of_lk.cc +++ /dev/null @@ -1,516 +0,0 @@ - -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_of_lk.h" -#include - -CPPEXTERN_NEW(pix_opencv_of_lk) - -///////////////////////////////////////////////////////// -// -// pix_opencv_of_lk -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_of_lk :: pix_opencv_of_lk() -{ - comp_xsize=320; - comp_ysize=240; - - m_meanout = outlet_new(this->x_obj, &s_anything); - m_maxout = outlet_new(this->x_obj, &s_anything); - - x_nightmode=0; - x_threshold=100; - x_winsize.width = 9; - x_winsize.height = 9; - x_minblocks = 10; - x_velsize.width = comp_xsize; - x_velsize.height = comp_ysize; - - // initialize font - cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_of_lk :: ~pix_opencv_of_lk() -{ - // Destroy cv_images - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_of_lk :: processRGBAImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = comp_xsize; - x_velsize.height = comp_ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to hsv - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - cvCvtColor(rgb, grey, CV_BGR2GRAY); - - if( x_nightmode ) - cvZero( rgb ); - - cvCalcOpticalFlowLK( prev_grey, grey, - x_winsize, x_velx, x_vely ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( rgb, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); - - orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globy+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - if ( nbblocks >= x_minblocks ) - { - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - cvCvtColor(rgb, rgba, CV_BGR2BGRA); - memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_of_lk :: processRGBImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = comp_xsize; - x_velsize.height = comp_ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to hsv - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - cvCvtColor(rgb, grey, CV_BGR2GRAY); - - if( x_nightmode ) - cvZero( rgb ); - - cvCalcOpticalFlowLK( prev_grey, grey, - x_winsize, x_velx, x_vely ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( rgb, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); - - orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globy+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - if ( nbblocks >= x_minblocks ) - { - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); - cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_of_lk :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_of_lk : yuv format not supported" ); -} - -void pix_opencv_of_lk :: processGrayImage(imageStruct &image) -{ - int px,py; - double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; - int nbblocks=0; - CvPoint orig, dest; - double angle=0.0; - double hypotenuse=0.0; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - x_velsize.width = comp_xsize; - x_velsize.height = comp_ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &rgb ); - cvReleaseImage( &grey ); - cvReleaseImage( &prev_grey ); - cvReleaseImage( &x_velx ); - cvReleaseImage( &x_vely ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); - } - - memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - - if( x_nightmode ) - cvZero( grey ); - - cvCalcOpticalFlowLK( prev_grey, grey, - x_winsize, x_velx, x_vely ); - - nbblocks = 0; - globangle = 0; - globx = 0; - globy = 0; - for( py=0; py= x_threshold) - { - cvLine( grey, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); - - orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); - - globx = globx+cvGet2D(x_velx, py, px).val[0]; - globy = globy+cvGet2D(x_vely, py, px).val[0]; - if ( hypotenuse > maxamp ) - { - maxamp = hypotenuse; - maxangle = angle; - } - // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); - nbblocks++; - } - - } - } - - globangle=-atan2( globy, globx ); - // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); - - if ( nbblocks >= x_minblocks ) - { - orig.x = (int) (comp_xsize/2); - orig.y = (int) (comp_ysize/2); - dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); - dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); - - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); - orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); - cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); - - // outputs the average angle of movement - globangle = (globangle*180)/M_PI; - SETFLOAT(&x_list[0], globangle); - outlet_list( m_meanout, 0, 1, x_list ); - - // outputs the amplitude and angle of the maximum movement - maxangle = (maxangle*180)/M_PI; - SETFLOAT(&x_list[0], maxamp); - SETFLOAT(&x_list[1], maxangle); - outlet_list( m_maxout, 0, 2, x_list ); - } - - memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); - - memcpy( image.data, grey->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_of_lk :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_of_lk::nightModeMessCallback, - gensym("nightmode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_lk::tresholdMessCallback, - gensym("threshold"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_lk::winsizeMessCallback, - gensym("winsize"), A_FLOAT, A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_of_lk::minBlocksMessCallback, - gensym("minblocks"), A_FLOAT, A_NULL); -} - -void pix_opencv_of_lk :: nightModeMessCallback(void *data, t_floatarg nightmode) -{ - GetMyClass(data)->nightModeMess((float)nightmode); -} - -void pix_opencv_of_lk :: tresholdMessCallback(void *data, t_floatarg threshold) -{ - GetMyClass(data)->tresholdMess((float)threshold); -} - -void pix_opencv_of_lk :: winsizeMessCallback(void *data, t_floatarg fwidth, t_floatarg fheight) -{ - GetMyClass(data)->winsizeMess((float)fwidth, (float)fheight); -} - -void pix_opencv_of_lk :: minBlocksMessCallback(void *data, t_floatarg minblocks) -{ - GetMyClass(data)->minBlocksMess((float)minblocks); -} - -void pix_opencv_of_lk :: nightModeMess(float nightmode) -{ - if ( ( (int)nightmode==0 ) || ( (int)nightmode==1 ) ) x_nightmode = (int)nightmode; -} - -void pix_opencv_of_lk :: tresholdMess(float threshold) -{ - if ( (int)threshold>0 ) x_threshold = (int)threshold; -} - -void pix_opencv_of_lk :: winsizeMess(float fwidth, float fheight) -{ - if (fwidth==1.0 || fwidth==3.0 || fwidth==5.0 || fwidth==7.0 || fwidth==9.0 || fwidth==11.0 || fwidth==13.0 || fwidth==15.0 ) x_winsize.width = (int)fwidth; - else post( "pdp_opencv_of_lk : wrong winsize width : must be one of (1,3,5,7,9,11,13,15)" ); - if (fheight==1.0 || fheight==3.0 || fheight==5.0 || fheight==7.0 || fheight==9.0 || fheight==11.0 || fheight==13.0 || fheight==15.0 ) x_winsize.height = (int)fheight; - else post( "pdp_opencv_of_lk : wrong winsize height : must be one of (1,3,5,7,9,11,13,15)" ); -} - -void pix_opencv_of_lk :: minBlocksMess(float minblocks) -{ - if (minblocks>=1.0) x_minblocks = (int)minblocks; -} - diff --git a/pix_opencv_of_lk.h b/pix_opencv_of_lk.h deleted file mode 100644 index a8ef39d..0000000 --- a/pix_opencv_of_lk.h +++ /dev/null @@ -1,96 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Lucas / Kanade Optical Flow algorithm - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_OF_LK_H_ -#define INCLUDE_PIX_OPENCV_OF_LK_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/video/tracking.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_of_lk - - Lucas / Kanade Optical Flow algorithm - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_of_lk : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_of_lk, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_of_lk(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_of_lk(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - void nightModeMess(float nightmode); - void tresholdMess(float threshold); - void winsizeMess(float width, float height); - void minBlocksMess(float mblocks); - - int comp_xsize; - int comp_ysize; - - t_outlet *m_meanout; - t_outlet *m_maxout; - - CvSize x_velsize, x_winsize; - - int x_nightmode; - int x_threshold; - int x_minblocks; - - private: - - ////////// - // Static member functions - static void nightModeMessCallback(void *data, float nightmode); - static void tresholdMessCallback(void *data, float threshold); - static void winsizeMessCallback(void *data, float width, float height); - static void minBlocksMessCallback(void *data, float mblocks); - - // Internal Open CV data - IplImage *rgba, *rgb, *grey, *prev_grey; - IplImage *x_velx, *x_vely; - CvFont font; - - t_atom x_list[3]; -}; - -#endif // for header file diff --git a/pix_opencv_opticalflow-help.pd b/pix_opencv_opticalflow-help.pd deleted file mode 100644 index 6823079..0000000 --- a/pix_opencv_opticalflow-help.pd +++ /dev/null @@ -1,95 +0,0 @@ -#N canvas 924 196 794 766 10; -#X obj 472 35 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577 -0; -#X obj 11 56 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X obj 11 307 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577 -0; -#X text 13 315 Inlets:; -#X obj 11 267 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577 -0; -#X text 20 266 Arguments:; -#X text 12 356 Outlets:; -#X text 478 20 Example:; -#X text 58 21 Class: pix_opencv; -#X text 66 276 none; -#X obj 353 315 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 1 122 450 300 gemwin 0; -#X obj 132 156 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 142 68 set create; -#X msg 198 112 destroy; -#X msg 132 132 reset \, dimen 640 480 \, create \, 1; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 7 0; -#X connect 3 1 5 0; -#X connect 3 1 6 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X restore 358 354 pd gemwin; -#X msg 358 335 destroy; -#X text 354 314 Create window:; -#X text 354 314 Create window:; -#X text 25 367 Outlet 1: gemlist output; -#X text 16 719 bug \, feedback \, comment... on the pd-list; -#X obj 476 233 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577 -0; -#X obj 487 57 gemhead 1; -#X floatatom 542 237 5 0 0 0 - - -, f 5; -#X obj 625 121 loadbang; -#X text 487 387 color legend :; -#X text 520 404 yellow = bounding box; -#X text 526 414 green = contour; -#X text 532 425 blue = convexhull; -#X text 532 437 pink = convexhull edge with defects; -#X text 538 449 red = farthest point from convexhull; -#X obj 554 32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 542 254 gain \$1; -#X text 37 5 Synopsis: [pix_opencv_opticalflow]; -#X text 11 60 Description: compute optical flow; -#X text 30 329 Inlet 1: RGBA image; -#X text 30 339 Inlet 1: message: gain [float]; -#X text 25 377 Outlet 2: info output; -#X text 26 699 by antoine villeret - 2013; -#X obj 487 171 pix_rgba; -#X obj 487 280 pix_opencv_opticalflow; -#X obj 287 230 loadbang; -#X msg 287 252 create; -#X obj 487 347 pix_texture; -#X obj 487 367 rectangle 5.333 4; -#X msg 545 319 quality 0; -#X obj 545 300 loadbang; -#X obj 487 193 pix_resize 320 240; -#X msg 617 253 normalize \$1; -#X obj 617 233 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 625 141 1; -#X text 37 74 [pix_opencv_opticalflow] computes optical flow; -#X obj 487 135 pix_video; -#X connect 11 0 12 0; -#X connect 12 0 11 0; -#X connect 18 0 48 0; -#X connect 19 0 28 0; -#X connect 20 0 46 0; -#X connect 27 0 18 0; -#X connect 28 0 36 0; -#X connect 35 0 43 0; -#X connect 36 0 39 0; -#X connect 37 0 38 0; -#X connect 38 0 11 0; -#X connect 39 0 40 0; -#X connect 41 0 39 0; -#X connect 42 0 41 0; -#X connect 43 0 36 0; -#X connect 44 0 36 0; -#X connect 45 0 44 0; -#X connect 46 0 19 0; -#X connect 48 0 35 0; diff --git a/pix_opencv_opticalflow.cc b/pix_opencv_opticalflow.cc deleted file mode 100644 index cfce8f6..0000000 --- a/pix_opencv_opticalflow.cc +++ /dev/null @@ -1,229 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) -// pix_opencv_opticalflow compute optical flow, several algorithms are available in one object -// by Antoine Villeret - 2012 - -#include "pix_opencv_opticalflow.h" - -CPPEXTERN_NEW(pix_opencv_opticalflow) - -///////////////////////////////////////////////////////// -// -// pix_opencv_opticalflow -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_opticalflow :: pix_opencv_opticalflow() : m_gain(1.) -{ - m_dataout_middle = outlet_new(this->x_obj, 0); - m_dataout_right = outlet_new(this->x_obj, 0); - - //~ post("build on %s at %s", __DATE__, __TIME__); -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_opticalflow :: ~pix_opencv_opticalflow() -{ -} - -///////////////////////////////////////////////////////// -// render -// -///////////////////////////////////////////////////////// -void pix_opencv_opticalflow :: processRGBAImage(imageStruct &image) -{ - if ( image.xsize <= 0 || image.ysize <= 0 ) return; - - cv::Mat rgbaImage( image.ysize, image.xsize, CV_8UC4, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data - //~cvtColor(rgbaImage, m_curr, cv::COLOR_RGBA2RGB); //convert RGBA to RGB - cvtColor(rgbaImage, m_curr, cv::COLOR_RGBA2GRAY); //convert RGBA to RGB - - if (m_prev.size() != m_curr.size()){ - m_prev = m_curr.clone(); - } - //~cv::calcOpticalFlowSF(m_curr, m_prev, m_flow, 3, 2, 4, 4.1, 25.5, 18, 55.0, 25.5, 0.35, 18, 55.0, 25.5, 10); - - cv::calcOpticalFlowFarneback(m_curr, m_prev, flow, 0.5, 3, 15, 3, 5, 1.2, 0); - m_prev = m_curr.clone(); // copy data - - cv::Size size = m_curr.size(); - // here is the idiom: check the arrays for continuity and, - // if this is the case, - // treat the arrays as 1D vectors - if( m_curr.isContinuous() && m_prev.isContinuous() && m_flow.isContinuous() ) - { - size.width *= size.height; - size.height = 1; - } - - float gain=m_gain; - if ( m_normalize ){ - float maxrad=1; - - for (int y = 0; y < flow.rows; ++y) - { - for (int x = 0; x < flow.cols; ++x) - { - cv::Point2f u = flow.at(x,y); - - if (!isFlowCorrect(u)) - continue; - float rad = sqrt(u.x * u.x + u.y * u.y); - maxrad = maxrad>rad?maxrad:rad; - } - } - gain=1/maxrad; - } - - for( int i = 0; i < size.height; i++ ) - { - // when the arrays are continuous, - // the outer loop is executed only once - const float* ptrFlow = flow.ptr(i); - unsigned char* data=image.data+i*image.csize*image.xsize; - - - for( int j = 0; j < 2*size.width; j+=2 ) - { - float fx = ptrFlow[j]; - float fy = ptrFlow[j+1]; - - cv::Vec3b pix; - - pix = computeColor(fx*gain, fy*gain); - - for ( int k = 0; k < 3; k++ ){ - data[k]=pix[k]; - } - //~printf("pix %d : %d\t%d\t%d\n",j+i*size.width, pix[0],pix[1], pix[2]); - //~m_colorcode.computeColor(fx, fy, data); - data+=4; - } - } -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_opticalflow :: obj_setupCallback(t_class *classPtr) -{ - CPPEXTERN_MSG1(classPtr, "gain", gainMess, double); - CPPEXTERN_MSG1(classPtr, "normalize", normalizeMess, double); -} - -///////////////////////////////////////////////////////// -// messages handling -// -///////////////////////////////////////////////////////// -void pix_opencv_opticalflow :: gainMess(double arg) -{ - m_gain = arg > 0 ? arg : 3.; -} - -void pix_opencv_opticalflow :: normalizeMess(double arg) -{ - m_normalize = arg > 0; -} - - - -/////////////////////////// -// static function for color coding -/////////////////////////// -using namespace cv; - -static cv::Vec3b computeColor(float fx, float fy) -{ -static bool first = true; - - // relative lengths of color transitions: - // these are chosen based on perceptual similarity - // (e.g. one can distinguish more shades between red and yellow - // than between yellow and green) - const int RY = 15; - const int YG = 6; - const int GC = 4; - const int CB = 11; - const int BM = 13; - const int MR = 6; - const int NCOLS = RY + YG + GC + CB + BM + MR; - static Vec3i colorWheel[NCOLS]; - - if (first) - { - int k = 0; - - for (int i = 0; i < RY; ++i, ++k) - colorWheel[k] = Vec3i(255, 255 * i / RY, 0); - - for (int i = 0; i < YG; ++i, ++k) - colorWheel[k] = Vec3i(255 - 255 * i / YG, 255, 0); - - for (int i = 0; i < GC; ++i, ++k) - colorWheel[k] = Vec3i(0, 255, 255 * i / GC); - - for (int i = 0; i < CB; ++i, ++k) - colorWheel[k] = Vec3i(0, 255 - 255 * i / CB, 255); - - for (int i = 0; i < BM; ++i, ++k) - colorWheel[k] = Vec3i(255 * i / BM, 0, 255); - - for (int i = 0; i < MR; ++i, ++k) - colorWheel[k] = Vec3i(255, 0, 255 - 255 * i / MR); - - first = false; - } - - const float rad = sqrt(fx * fx + fy * fy); - const float a = atan2(-fy, -fx) / (float) CV_PI; - - const float fk = (a + 1.0f) / 2.0f * (NCOLS - 1); - const int k0 = static_cast(fk); - const int k1 = (k0 + 1) % NCOLS; - const float f = fk - k0; - - Vec3b pix; - - for (int b = 0; b < 3; b++) - { - const float col0 = colorWheel[k0][b] / 255.0f; - const float col1 = colorWheel[k1][b] / 255.0f; - - float col = (1 - f) * col0 + f * col1; - - if (rad <= 1) - col = 1 - rad * (1 - col); // increase saturation with radius - else - col *= .75; // out of range - - pix[2 - b] = static_cast(255.0 * col); - } - - return pix; -} - -inline bool isFlowCorrect(cv::Point2f u) -{ - return !cvIsNaN(u.x) && !cvIsNaN(u.y) && fabs(u.x) < 1e9 && fabs(u.y) < 1e9; -} diff --git a/pix_opencv_opticalflow.h b/pix_opencv_opticalflow.h deleted file mode 100644 index 641f9c5..0000000 --- a/pix_opencv_opticalflow.h +++ /dev/null @@ -1,96 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_OPTICALFLOW_H_ -#define INCLUDE_PIX_OPENCV_OPTICALFLOW_H_ - -#include "opencv2/opencv.hpp" -#include "Base/GemBase.h" -#include "Gem/Exception.h" -#include "Gem/State.h" -#include "Base/GemPixObj.h" -#include "RTE/MessageCallbacks.h" -#include - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_opticalflow - apply a simple flow method to compute optical flow - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ - -//~class Colorcode -//~{ -//~// from colorcode.cpp by Daniel Scharstein, 4/2007 -//~// http://vision.middlebury.edu/flow/data/ -//~#define MAXCOLS 60 -//~ -//~public: - //~Colorcode(); - //~static cv::Vec3b computeColor(float fx, float fy); - //~ -//~private: - //~int ncols; - //~int colorwheel[MAXCOLS][3]; -//~ -//~ - //~void setcols(int r, int g, int b, int k); -//~ - //~void makecolorwheel(); -//~}; - -static cv::Vec3b computeColor(float fx, float fy); -inline bool isFlowCorrect(cv::Point2f u); - -class GEM_EXTERN pix_opencv_opticalflow : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_opticalflow, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_opticalflow(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_opticalflow(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - - // Messages handling - void gainMess(double arg); - void normalizeMess(double arg); - - private: - - cv::Mat prev, flow; - t_float m_gain; - bool m_normalize; - - cv::Mat m_prev, m_curr, m_flow; - - t_outlet *m_dataout_middle; // contour outlet - t_outlet *m_dataout_right; // info outlet -}; -#endif // for header file diff --git a/pix_opencv_pgh_compare-help.pd b/pix_opencv_pgh_compare-help.pd deleted file mode 100644 index 22e21d0..0000000 --- a/pix_opencv_pgh_compare-help.pd +++ /dev/null @@ -1,225 +0,0 @@ -#N canvas 343 247 1154 642 10; -#X obj 897 4 gemhead; -#X obj 372 500 pix_texture; -#X obj 372 528 square 2; -#X obj 18 26 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 160 260 gemwin; -#X msg 159 207 create \, 1; -#X msg 235 208 destroy; -#X msg 281 180 frame 25; -#X obj 162 170 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore 24 69 pd gemwin; -#X msg 24 48 create; -#X text 25 30 Create window and render; -#X obj 363 232 cnv 15 700 250 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 553 -63 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 610 112 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 592 77 5 0 10000 1 frame# - -; -#X obj 553 -34 openpanel; -#X msg 553 -14 open \$1; -#X obj 552 94 pix_film; -#X msg 559 29 auto \$1; -#X obj 559 11 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X floatatom 506 439 30 0 0 0 - - -; -#X text 511 422 distance; -#X obj 730 457 route 1; -#X obj 782 457 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X obj 783 437 hsl 128 15 0 0.2 0 0 cdist empty empty -2 -8 0 10 -262144 --1 -1 0 1; -#X text 805 455 criteria value; -#X floatatom 701 439 10 0 0 0 - - -; -#X msg 478 319 criteria \$1; -#X obj 562 320 r cdist; -#X text 615 314 criteria value under which the contour is recongnized -; -#X msg 463 255 minsize \$1; -#X floatatom 537 256 5 0 0 0 - - -; -#X text 578 256 minimum size of selected contours ( default : 10x10 -); -#X msg 480 290 clear; -#X text 588 290 recalculates the pattern contour; -#X obj 529 291 r reset; -#X text 600 -61 playing a video file; -#X text 618 -48 ( try estrella.mov ); -#X msg 831 -72 bang; -#X text 877 -79 loading a pattern image; -#X text 876 -66 ( try estrella.jpg ); -#X text 830 -97 Compare to a pattern; -#X obj 831 4 pix_image; -#X obj 833 -45 openpanel; -#X obj 831 154 separator; -#X msg 832 -18 open \$1; -#X floatatom 984 121 5 0 0 0 - - -; -#X obj 1052 94 loadbang; -#X msg 1021 94 160; -#X obj 953 93 r tresh; -#X floatatom 507 187 5 0 0 0 - - -; -#X obj 575 185 loadbang; -#X msg 547 185 160; -#X obj 508 205 s tresh; -#X obj 962 153 pix_texture; -#X obj 830 120 pix_opencv_threshold; -#X obj 374 206 pix_opencv_threshold; -#X obj 962 181 square 2; -#X obj 830 66 translateXYZ -2 0 0; -#X obj 831 34 pix_resize 320 240; -#X obj 831 181 translateXYZ 4 0 0; -#X obj 373 158 pix_resize 320 240; -#X obj 374 356 pix_opencv_pgh_compare; -#X text 17 -80 pix_opencv_pgh_compare :: compare contours calculating -their PGH histograms.; -#X text 17 -53 Written by Yves Degoyon ( ydegoyon@gmail.com ) using -example code from OpenCV book; -#X obj 683 458 < 0.05; -#X text 612 326 ( adjust to your situation : default : 0.05 ); -#X obj 616 0 loadbang; -#X msg 616 25 colorspace RGBA; -#X msg 720 25 colorspace RGB; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 374 136 pd vswitch; -#X obj 443 135 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 373 83 pix_video; -#X obj 373 -54 gemhead; -#X msg 411 25 device 0; -#X msg 420 56 driver 1; -#X msg 397 -29 dialog; -#X msg 402 1 device /dev/dv1394-0; -#X obj 544 379 unpack f f f f f; -#X text 658 379 position of detected contours; -#X floatatom 567 401 5 0 0 0 - - -; -#X floatatom 605 402 5 0 0 0 - - -; -#X floatatom 645 401 5 0 0 0 - - -; -#X floatatom 688 402 5 0 0 0 - - -; -#X text 574 414 X; -#X text 613 413 Y; -#X text 645 413 width; -#X text 686 414 height; -#X obj 374 182 pix_rgba; -#X obj 831 90 pix_rgba; -#X obj 372 109 translateXYZ 2 0 0; -#X connect 0 0 38 0; -#X connect 1 0 2 0; -#X connect 4 0 5 0; -#X connect 5 0 4 0; -#X connect 8 0 11 0; -#X connect 9 0 10 0; -#X connect 10 0 13 1; -#X connect 11 0 12 0; -#X connect 12 0 13 0; -#X connect 13 0 66 1; -#X connect 13 2 9 0; -#X connect 14 0 13 0; -#X connect 15 0 14 0; -#X connect 16 0 61 0; -#X connect 18 0 19 0; -#X connect 20 0 22 0; -#X connect 20 0 61 1; -#X connect 23 0 58 0; -#X connect 24 0 23 0; -#X connect 26 0 58 0; -#X connect 27 0 26 0; -#X connect 29 0 58 0; -#X connect 31 0 29 0; -#X connect 34 0 39 0; -#X connect 38 0 55 0; -#X connect 39 0 41 0; -#X connect 40 0 56 0; -#X connect 41 0 38 0; -#X connect 42 0 51 2; -#X connect 43 0 44 0; -#X connect 44 0 42 0; -#X connect 45 0 42 0; -#X connect 46 0 49 0; -#X connect 46 0 52 2; -#X connect 47 0 48 0; -#X connect 48 0 46 0; -#X connect 50 0 53 0; -#X connect 51 0 40 0; -#X connect 51 0 50 0; -#X connect 51 0 58 1; -#X connect 52 0 58 0; -#X connect 54 0 85 0; -#X connect 55 0 54 0; -#X connect 56 0 13 0; -#X connect 57 0 84 0; -#X connect 58 0 1 0; -#X connect 58 1 16 0; -#X connect 58 2 74 0; -#X connect 61 0 18 0; -#X connect 63 0 64 0; -#X connect 64 0 13 0; -#X connect 65 0 13 0; -#X connect 66 0 57 0; -#X connect 67 0 66 2; -#X connect 68 0 86 0; -#X connect 69 0 68 0; -#X connect 70 0 68 0; -#X connect 71 0 68 0; -#X connect 72 0 68 0; -#X connect 73 0 68 0; -#X connect 74 1 76 0; -#X connect 74 2 77 0; -#X connect 74 3 78 0; -#X connect 74 4 79 0; -#X connect 84 0 52 0; -#X connect 85 0 51 0; -#X connect 86 0 66 0; diff --git a/pix_opencv_pgh_compare.cc b/pix_opencv_pgh_compare.cc deleted file mode 100644 index 4af6d8e..0000000 --- a/pix_opencv_pgh_compare.cc +++ /dev/null @@ -1,481 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-1998 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_pgh_compare.h" - -CPPEXTERN_NEW_WITH_GIMME(pix_opencv_pgh_compare) - -///////////////////////////////////////////////////////// -// -// pix_opencv_pgh_compare -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_pgh_compare :: pix_opencv_pgh_compare(int argc, t_atom*argv) -{ - m_dataout = outlet_new(this->x_obj, &s_anything); - m_posout = outlet_new(this->x_obj, &s_anything); - - comp_xsize=320; - comp_ysize=240; - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - - x_storage = cvCreateMemStorage(0); - - x_bcontourr = NULL; - x_minsize = 10*10; - x_cdistance = 0.05; -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_pgh_compare :: ~pix_opencv_pgh_compare() -{ - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&rgbar); - cvReleaseImage(&rgbr); - cvReleaseImage(&grayr); -} - -///////////////////////////////////////////////////////// -// processDualImage -// -///////////////////////////////////////////////////////// -void pix_opencv_pgh_compare :: processRGBA_RGBA(imageStruct &left, imageStruct &right) -{ - double dist = 100.0, ndist; - int i = 0; // Indicator of cycles. - CvSeq *contourl=NULL, *contourlp; - CvRect rect; - CvMemStorage *mstorage; - CvSeq *contourr = NULL; - int size; - int dims[] = {8, 8}; - float range[] = {-180, 180, -100, 100}; - float *ranges[] = {&range[0], &range[2]}; - CvHistogram *histl, *histr ; - - if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) - { - post( "pix_opencv_pgh_compare : left and right image are not of the same size" ); - return; - } - - if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) - { - this->comp_xsize=left.xsize; - this->comp_ysize=left.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&rgbar); - cvReleaseImage(&rgbr); - cvReleaseImage(&grayr); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - } - - memcpy( rgbar->imageData, right.data, right.xsize*right.ysize*4 ); - cvCvtColor(rgbar, grayr, CV_BGRA2GRAY); - - // calculate the biggest contour - try { - cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - } - catch(...) { - post( "pix_opencv_pgh_compare : error calculating contours" ); - return; - } - - if ( contourr ) - { - size=0; - for( ; contourr != 0; contourr = contourr->h_next ) - { - rect = cvContourBoundingRect( contourr, 1); - if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - x_bcontourr = contourr; - size = rect.width*rect.height; - } - } - } - - memcpy( rgba->imageData, left.data, left.xsize*left.ysize*4 ); - cvCvtColor(rgba, gray, CV_BGRA2GRAY); - - mstorage = cvCreateMemStorage(0); - - cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - - i=0; - if ( contourl && x_bcontourr ) - { - contourlp=contourl; - for( ; contourlp != 0; contourlp = contourlp->h_next ) - { - rect = cvContourBoundingRect( contourlp, 1); - if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - histr = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); - histl = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); - cvCalcPGH(x_bcontourr, histr); - cvCalcPGH(contourlp, histl); - cvNormalizeHist(histr, 100.0f); - cvNormalizeHist(histl, 100.0f); - ndist = cvCompareHist(histr, histl, CV_COMP_BHATTACHARYYA); - cvReleaseHist(&histr); - cvReleaseHist(&histl); - - if ( ndist < dist ) dist = ndist; - if ( ndist < x_cdistance ) - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - SETFLOAT(&rlist[0], i++); - SETFLOAT(&rlist[1], rect.x); - SETFLOAT(&rlist[2], rect.y); - SETFLOAT(&rlist[3], rect.width); - SETFLOAT(&rlist[4], rect.height); - outlet_list( m_posout, 0, 5, rlist ); - } - else - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); - } - } - } - } - - if ( dist < 100.00 ) outlet_float( m_dataout, dist ); - - cvReleaseMemStorage(&mstorage); - - cvCvtColor(gray, rgba, CV_GRAY2BGR); - memcpy( left.data, rgba->imageData, left.xsize*left.ysize*4 ); - -} - -///////////////////////////////////////////////////////// -// processDualImage -// -///////////////////////////////////////////////////////// -void pix_opencv_pgh_compare :: processRGB_RGB(imageStruct &left, imageStruct &right) -{ - double dist = 100.0, ndist; - int i = 0; // Indicator of cycles. - CvSeq *contourl=NULL, *contourlp; - CvRect rect; - CvMemStorage *mstorage; - CvSeq *contourr = NULL; - int size; - int dims[] = {8, 8}; - float range[] = {-180, 180, -100, 100}; - float *ranges[] = {&range[0], &range[2]}; - CvHistogram *histl, *histr ; - - if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) - { - post( "pix_opencv_pgh_compare : left and right image are not of the same size" ); - return; - } - - if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) - { - this->comp_xsize=left.xsize; - this->comp_ysize=left.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&rgbar); - cvReleaseImage(&rgbr); - cvReleaseImage(&grayr); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - } - - memcpy( rgbr->imageData, right.data, right.xsize*right.ysize*3 ); - cvCvtColor(rgbr, grayr, CV_BGRA2GRAY); - - // calculate the biggest contour - try { - cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - } - catch(...) { - post( "pix_opencv_pgh_compare : error calculating contours" ); - return; - } - - if ( contourr ) - { - size=0; - for( ; contourr != 0; contourr = contourr->h_next ) - { - rect = cvContourBoundingRect( contourr, 1); - if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - x_bcontourr = contourr; - size = rect.width*rect.height; - } - } - } - - memcpy( rgb->imageData, left.data, left.xsize*left.ysize*3 ); - cvCvtColor(rgb, gray, CV_BGRA2GRAY); - - mstorage = cvCreateMemStorage(0); - - cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - - if ( contourl && x_bcontourr ) - { - contourlp=contourl; - for( ; contourlp != 0; contourlp = contourlp->h_next ) - { - rect = cvContourBoundingRect( contourlp, 1); - if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - histr = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); - histl = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); - cvCalcPGH(x_bcontourr, histr); - cvCalcPGH(contourlp, histl); - cvNormalizeHist(histr, 100.0f); - cvNormalizeHist(histl, 100.0f); - ndist = cvCompareHist(histr, histl, CV_COMP_BHATTACHARYYA); - cvReleaseHist(&histr); - cvReleaseHist(&histl); - - if ( ndist < dist ) dist = ndist; - if ( ndist < x_cdistance ) - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - } - else - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); - } - } - } - } - - if ( dist < 100.00 ) outlet_float( m_dataout, dist ); - - cvReleaseMemStorage(&mstorage); - - cvCvtColor(gray, rgb, CV_GRAY2BGR); - memcpy( left.data, rgb->imageData, left.xsize*left.ysize*3 ); - -} - -///////////////////////////////////////////////////////// -// processDualImage -// -///////////////////////////////////////////////////////// -void pix_opencv_pgh_compare :: processGray_Gray(imageStruct &left, imageStruct &right) -{ - double dist = 100.0, ndist; - int i = 0; // Indicator of cycles. - CvSeq *contourl=NULL, *contourlp; - CvRect rect; - CvMemStorage *mstorage; - CvSeq *contourr = NULL; - int size; - int dims[] = {8, 8}; - float range[] = {-180, 180, -100, 100}; - float *ranges[] = {&range[0], &range[2]}; - CvHistogram *histl, *histr ; - - - if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) - { - post( "pix_opencv_pgh_compare : left and right image are not of the same size" ); - return; - } - - if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) - { - this->comp_xsize=left.xsize; - this->comp_ysize=left.ysize; - - cvReleaseImage(&rgba); - cvReleaseImage(&rgb); - cvReleaseImage(&gray); - cvReleaseImage(&rgbar); - cvReleaseImage(&rgbr); - cvReleaseImage(&grayr); - - rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); - rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); - grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); - } - - memcpy( grayr->imageData, right.data, right.xsize*right.ysize ); - - // calculate the biggest contour - try { - cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - } - catch(...) { - post( "pix_opencv_pgh_compare : error calculating contours" ); - return; - } - - if ( contourr ) - { - size=0; - for( ; contourr != 0; contourr = contourr->h_next ) - { - rect = cvContourBoundingRect( contourr, 1); - if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - x_bcontourr = contourr; - size = rect.width*rect.height; - } - } - } - - memcpy( gray->imageData, left.data, left.xsize*left.ysize ); - - mstorage = cvCreateMemStorage(0); - - cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); - - if ( contourl && x_bcontourr ) - { - contourlp=contourl; - for( ; contourlp != 0; contourlp = contourlp->h_next ) - { - rect = cvContourBoundingRect( contourlp, 1); - if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) - { - histr = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); - histl = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); - cvCalcPGH(x_bcontourr, histr); - cvCalcPGH(contourlp, histl); - cvNormalizeHist(histr, 100.0f); - cvNormalizeHist(histl, 100.0f); - ndist = cvCompareHist(histr, histl, CV_COMP_BHATTACHARYYA); - cvReleaseHist(&histr); - cvReleaseHist(&histl); - - if ( ndist < dist ) dist = ndist; - if ( ndist < x_cdistance ) - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); - } - else - { - cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); - cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); - } - } - } - } - - if ( dist < 100.00 ) outlet_float( m_dataout, dist ); - - cvReleaseMemStorage(&mstorage); - - memcpy( left.data, gray->imageData, left.xsize*left.ysize ); - -} - -void pix_opencv_pgh_compare :: processYUV_YUV(imageStruct &left, imageStruct &right) -{ - post( "pix_opencv_pgh_compare : YUV colorspace not supported" ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_pgh_compare :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_pgh_compare::floatMinSizeMessCallback, - gensym("minsize"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_pgh_compare::clearMessCallback, - gensym("clear"), A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_pgh_compare::floatCriteriaMessCallback, - gensym("criteria"), A_FLOAT, A_NULL); -} - -void pix_opencv_pgh_compare :: floatMinSizeMessCallback(void *data, t_floatarg minsize) -{ - GetMyClass(data)->floatMinSizeMess((float)minsize); -} - -void pix_opencv_pgh_compare :: clearMessCallback(void *data) -{ - GetMyClass(data)->clearMess(); -} - -void pix_opencv_pgh_compare :: floatCriteriaMessCallback(void *data, t_floatarg criteria) -{ - GetMyClass(data)->floatCriteriaMess((float)criteria); -} - -void pix_opencv_pgh_compare :: floatMinSizeMess(float minsize) -{ - if ( (int)minsize > 0 ) - { - x_minsize = (int)minsize; - } -} - -void pix_opencv_pgh_compare :: clearMess(void) -{ - x_bcontourr = NULL; -} - -void pix_opencv_pgh_compare :: floatCriteriaMess(float criteria) -{ - if ( criteria > 0.0 ) - { - x_cdistance = criteria; - } -} diff --git a/pix_opencv_pgh_compare.h b/pix_opencv_pgh_compare.h deleted file mode 100644 index 435570e..0000000 --- a/pix_opencv_pgh_compare.h +++ /dev/null @@ -1,90 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - PGH histogram comparison used to compare contours - - Copyright (c) 1997-1998 Mark Danks. mark@danks.org - Copyright (c) G¸nther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::f¸r::uml‰ute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_PGH_COMPARE_H_ -#define INCLUDE_PIX_OPENCV_PGH_COMPARE_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#include "opencv2/legacy/compat.hpp" -#endif - -#include "Base/GemPixDualObj.h" - -/*----------------------------------------------------------------- -CLASS - pix_opencv_pgh_compare - - PGH histogram comparison used to compare contours - ------------------------------------------------------------------*/ - -class GEM_EXTERN pix_opencv_pgh_compare : public GemPixDualObj -{ - CPPEXTERN_HEADER(pix_opencv_pgh_compare, GemPixDualObj) - - public: - - ////////// - // Constructor - pix_opencv_pgh_compare(int,t_atom*); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_pgh_compare(); - - ////////// - // Do the processing - virtual void processRGBA_RGBA(imageStruct &left, imageStruct &right); - virtual void processRGB_RGB(imageStruct &left, imageStruct &right); - virtual void processYUV_YUV(imageStruct &left, imageStruct &right); - virtual void processGray_Gray(imageStruct &left, imageStruct &right); - - ////////// - // change method used - void floatMinSizeMess(float minsize); - void clearMess(void); - void floatCriteriaMess(float criteria); - - int comp_xsize; - int comp_ysize; - - t_outlet *m_dataout; - t_outlet *m_posout; - - int x_minsize; - float x_cdistance; - - private: - - ////////// - // Static member functions - static void floatMinSizeMessCallback(void *data, float minsize); - static void clearMessCallback(void *data); - static void floatCriteriaMessCallback(void *data, float criteria); - - IplImage *rgba, *rgb, *gray; - IplImage *rgbar, *rgbr, *grayr; - - CvMemStorage *x_storage; - CvSeq *x_bcontourr; - - t_atom rlist[5]; - -}; - -#endif // for header file diff --git a/pix_opencv_surf-help.pd b/pix_opencv_surf-help.pd deleted file mode 100644 index 8bf97c4..0000000 --- a/pix_opencv_surf-help.pd +++ /dev/null @@ -1,220 +0,0 @@ -#N canvas 126 104 1266 876 10; -#X obj 361 637 pix_texture; -#X obj 32 -122 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 -0; -#N canvas 194 173 454 304 gemwin 0; -#X obj 130 218 gemwin; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 67 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#X msg 129 165 create \, 1; -#X msg 205 166 destroy; -#N canvas 87 154 363 340 Gem.init 0; -#X obj 112 15 loadbang; -#X msg 62 93 reset; -#X obj 49 135 outlet; -#X msg 107 89 dimen 320 240; -#X obj 107 51 t b b b; -#X connect 0 0 4 0; -#X connect 1 0 2 0; -#X connect 3 0 2 0; -#X connect 4 0 3 0; -#X connect 4 2 1 0; -#X restore 289 80 pd Gem.init; -#X obj 128 109 t b b b; -#X msg 156 138 dimen 320 240; -#X msg 252 139 frame 25; -#X connect 2 0 3 0; -#X connect 3 0 4 0; -#X connect 3 0 9 0; -#X connect 3 1 5 0; -#X connect 3 1 7 0; -#X connect 4 0 1 0; -#X connect 5 0 1 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 9 0 6 0; -#X connect 9 1 10 0; -#X connect 9 2 11 0; -#X connect 10 0 0 0; -#X connect 11 0 0 0; -#X restore 39 -76 pd gemwin; -#X msg 39 -97 create; -#X text 40 -118 Create window and render; -#X obj 340 180 cnv 15 600 450 empty empty empty 20 12 0 14 -24198 -66577 -0; -#X obj 485 575 unpack f f; -#X floatatom 486 600 5 0 0 0 - - -; -#X floatatom 544 601 5 0 0 0 - - -; -#X text 487 616 X; -#X text 542 617 Y; -#X obj 484 549 route 1 2 3 4 5 6 7 8 9 10; -#X obj 952 123 gemmouse; -#X obj 1008 230 f; -#X obj 978 229 f; -#X obj 1022 201 t b b; -#X obj 975 274 pack f f; -#X obj 998 151 route 1; -#X msg 1019 176 bang; -#X floatatom 969 251 5 0 0 0 - - -; -#X floatatom 1022 254 5 0 0 0 - - -; -#X obj 360 524 pix_opencv_surf; -#X obj 467 252 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X msg 382 253 nightmode \$1; -#X text 486 256 set nightmode; -#X msg 429 316 mark \$1 \$2; -#X msg 435 339 delete \$1; -#X text 628 340 delete a marker; -#X msg 446 362 clear; -#X text 494 363 delete all markers; -#X msg 461 392 maxmove \$1; -#X floatatom 537 394 5 0 0 0 - - -; -#X text 502 316 mark %x %y : mark a point to track ( max points : 10 -); -#X text 546 441 make a delaunay with all points; -#X msg 465 439 delaunay on; -#X msg 467 460 delaunay off; -#X text 577 471 make a delaunay with point 1 and a tolerance of 50 -( all points which color is in that range will be included in the delaunay) -; -#X obj 500 339 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144 --1 -1 0; -#X msg 473 483 pdelaunay 1 50; -#X msg 363 224 hessian \$1; -#X floatatom 438 225 5 0 0 0 - - -; -#X floatatom 546 416 5 0 0 0 - - -; -#X msg 464 415 ftolerance \$1; -#X text 589 416 frame tolerance for point recognition ( default : 5 -); -#X msg 406 272 mark all; -#X text 476 273 mark all points; -#X msg 416 293 mark none; -#X text 486 294 suppress all marks; -#X text 635 -81 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -) and Yves Degoyon ( ydegoyon@gmail.com ); -#X text 633 -104 pix_opencv_surf : SURF ( Speed Up Robust Features -) points detection and tracking; -#X text 478 224 hessian threshold ( default 1000 ); -#X obj 360 669 rectangle 5.3 4; -#X obj 515 -102 gemhead; -#X obj 527 -75 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 584 100 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 566 65 5 0 10000 1 frame# - -; -#X obj 527 -46 openpanel; -#X msg 527 -26 open \$1; -#X obj 515 83 pix_film; -#X msg 533 17 auto \$1; -#X obj 533 -1 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X msg 628 0 colorspace RGBA; -#X msg 733 0 colorspace RGB; -#X msg 630 24 colorspace Grey; -#X obj 628 -28 loadbang; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 357 114 pd vswitch; -#X obj 429 110 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 340 63 pix_video; -#X obj 342 -91 gemhead; -#X msg 379 -12 device 0; -#X msg 388 19 driver 1; -#X msg 365 -66 dialog; -#X msg 370 -36 device /dev/dv1394-0; -#X obj 356 140 pix_resize 320 240; -#X text 575 392 max movement of a marker ( default 20 pixels ); -#X obj 357 161 pix_rgba; -#X connect 0 0 51 0; -#X connect 2 0 3 0; -#X connect 3 0 2 0; -#X connect 6 0 7 0; -#X connect 6 1 8 0; -#X connect 11 0 6 0; -#X connect 12 0 14 1; -#X connect 12 1 13 1; -#X connect 12 2 17 0; -#X connect 13 0 16 1; -#X connect 13 0 20 0; -#X connect 14 0 16 0; -#X connect 14 0 19 0; -#X connect 15 0 14 0; -#X connect 15 1 13 0; -#X connect 16 0 25 0; -#X connect 17 0 18 0; -#X connect 18 0 15 0; -#X connect 21 0 0 0; -#X connect 21 1 11 0; -#X connect 22 0 23 0; -#X connect 23 0 21 0; -#X connect 25 0 21 0; -#X connect 26 0 21 0; -#X connect 28 0 21 0; -#X connect 30 0 21 0; -#X connect 31 0 30 0; -#X connect 34 0 21 0; -#X connect 35 0 21 0; -#X connect 37 0 26 0; -#X connect 38 0 21 0; -#X connect 39 0 21 0; -#X connect 40 0 39 0; -#X connect 41 0 42 0; -#X connect 42 0 21 0; -#X connect 44 0 21 0; -#X connect 46 0 21 0; -#X connect 52 0 58 0; -#X connect 53 0 56 0; -#X connect 54 0 55 0; -#X connect 55 0 58 1; -#X connect 56 0 57 0; -#X connect 57 0 58 0; -#X connect 58 0 65 1; -#X connect 58 2 54 0; -#X connect 59 0 58 0; -#X connect 60 0 59 0; -#X connect 61 0 58 0; -#X connect 61 0 67 0; -#X connect 62 0 58 0; -#X connect 63 0 58 0; -#X connect 64 0 61 0; -#X connect 64 0 60 0; -#X connect 65 0 73 0; -#X connect 66 0 65 2; -#X connect 67 0 65 0; -#X connect 68 0 67 0; -#X connect 69 0 67 0; -#X connect 70 0 67 0; -#X connect 71 0 67 0; -#X connect 72 0 67 0; -#X connect 73 0 75 0; -#X connect 75 0 21 0; diff --git a/pix_opencv_surf.cc b/pix_opencv_surf.cc deleted file mode 100644 index 6fc1e59..0000000 --- a/pix_opencv_surf.cc +++ /dev/null @@ -1,1049 +0,0 @@ - -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_surf.h" -#include - - -CPPEXTERN_NEW(pix_opencv_surf) - -///////////////////////////////////////////////////////// -// -// pix_opencv_surf -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_surf :: pix_opencv_surf() -{ - int i; - - comp_xsize=320; - comp_ysize=240; - - m_dataout = outlet_new(this->x_obj, &s_anything); - - night_mode = 0; - x_maxmove = 20; - x_delaunay = -1; - x_threshold = -1; - - objectKeypoints = NULL; - objectDescriptors = NULL; - x_hessian = 1000; - x_ftolerance = 5; - - x_markall = 0; - for ( i=0; icomp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &orgb ); - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &ogray ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - } - - memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - cvCvtColor(rgba, orgb, CV_BGRA2BGR); - cvCvtColor(rgba, rgb, CV_BGRA2BGR); - cvCvtColor(rgba, gray, CV_BGRA2GRAY); - - x_storage = cvCreateMemStorage(0); - - if( night_mode ) - cvZero( rgb ); - - for ( im=0; im= 0 ) - { - // init data structures for the delaunay - x_fullrect.x = -comp_xsize/2; - x_fullrect.y = -comp_ysize/2; - x_fullrect.width = 2*comp_xsize; - x_fullrect.height = 2*comp_ysize; - - x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), - sizeof(CvSubdiv2DPoint), - sizeof(CvQuadEdge2D), - x_storage ); - cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); - } - - cvExtractSURF( gray, 0, &objectKeypoints, &objectDescriptors, x_storage, cvSURFParams(x_hessian, 1) ); - descsize = (int)(objectDescriptors->elem_size/sizeof(float)); - - for( i = 0; i < objectKeypoints->total; i++ ) - { - CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); - const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); - - if ( x_delaunay == 0 ) // add all the points - { - cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - - // only add points included in (color-threshold) 0 ) && ( x_xmark[x_delaunay-1] != -1 ) ) - { - int px = cvPointFrom32f(r1->pt).x; - int py = cvPointFrom32f(r1->pt).y; - int ppx, ppy; - - // eight connected pixels - for ( ppx=px-1; ppx<=px+1; ppx++ ) - { - for ( ppy=py-1; ppy<=py+1; ppy++ ) - { - if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; - if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; - - uchar red = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3]; - uchar green = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+1]; - uchar blue = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+2]; - - uchar pred = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3]; - uchar pgreen = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3+1]; - uchar pblue = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3+2]; - - int diff = abs(red-pred) + abs(green-pgreen) + abs(blue-pblue); - - // post( "pdp_opencv_surf : point (%d,%d,%d) : diff : %d", blue, green, red, diff ); - - if ( diff < x_threshold ) - { - cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - } - } - } - - cvCircle( rgb, cvPointFrom32f(r1->pt), 3, CV_RGB(0,255,0), -1, 8,0); - - // mark the point if it is not already - if ( x_markall ) - { - int marked = 0; - - for ( im=0; impt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); - - if ( odist <= x_maxmove ) - { - marked = 1; - // post( "pdp_opencv_surf : point already marked" ); - break; - } - } - if ( !marked ) - { - for ( i=0; ipt.x; - x_ymark[i] = r1->pt.y; - x_found[i] = x_ftolerance; - memset( (float * )x_rdesc[i], 0x0, DSCSIZE*sizeof(float)); - break; - } - } - } - } - } - - for ( im=0; imcomp_ysize)?comp_xsize:comp_ysize; - - for( i = 0; i < objectKeypoints->total; i++ ) - { - CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); - const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); - int descsize = (int)(objectDescriptors->elem_size/sizeof(float)); - - // manually marked points - // recognized on position - odist=sqrt( pow( r1->pt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); - - if ( odist <= x_maxmove ) - { - if ( odist < dist ) - { - oi=im; - x_xmark[oi]=r1->pt.x; - x_ymark[oi]=r1->pt.y; - memcpy( (float * )x_rdesc[oi], rdesc, descsize*sizeof(float)); - dist = odist; - } - } - } - - if ( oi !=-1 ) - { - sprintf( tindex, "%d", oi ); - cvPutText( rgb, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,255,255)); - x_found[oi] = x_ftolerance; - SETFLOAT(&x_list[0], oi); - SETFLOAT(&x_list[1], x_xmark[oi]); - SETFLOAT(&x_list[2], x_ymark[oi]); - outlet_list( m_dataout, 0, 3, x_list ); - } - } - - // draw the delaunay - if ( x_delaunay >= 0 ) - { - CvSeqReader reader; - int i, total = x_subdiv->edges->total; - int elem_size = x_subdiv->edges->elem_size; - - cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); - - for( i = 0; i < total; i++ ) - { - CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); - CvSubdiv2DPoint* org_pt; - CvSubdiv2DPoint* dst_pt; - CvPoint2D32f org; - CvPoint2D32f dst; - CvPoint iorg, idst; - - if( CV_IS_SET_ELEM( edge )) - { - org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); - dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); - - if( org_pt && dst_pt ) - { - org = org_pt->pt; - dst = dst_pt->pt; - - iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); - idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); - - if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && - ( dst.x > 0 ) && ( dst.x < comp_xsize ) && - ( org.y > 0 ) && ( org.y < comp_ysize ) && - ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) - cvLine( rgb, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); - } - } - - CV_NEXT_SEQ_ELEM( elem_size, reader ); - } - } - - // suppress lost points - for ( im=0; imimageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_surf :: processRGBImage(imageStruct &image) -{ - int i, k; - int im, oi; - int marked; - int descsize; - char tindex[4]; - float dist, odist; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &orgb ); - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &ogray ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - } - - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - memcpy( orgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor(rgb, gray, CV_BGRA2GRAY); - - x_storage = cvCreateMemStorage(0); - - if( night_mode ) - cvZero( rgb ); - - for ( im=0; im= 0 ) - { - // init data structures for the delaunay - x_fullrect.x = -comp_xsize/2; - x_fullrect.y = -comp_ysize/2; - x_fullrect.width = 2*comp_xsize; - x_fullrect.height = 2*comp_ysize; - - x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), - sizeof(CvSubdiv2DPoint), - sizeof(CvQuadEdge2D), - x_storage ); - cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); - } - - cvExtractSURF( gray, 0, &objectKeypoints, &objectDescriptors, x_storage, cvSURFParams(x_hessian, 1) ); - descsize = (int)(objectDescriptors->elem_size/sizeof(float)); - - for( i = 0; i < objectKeypoints->total; i++ ) - { - CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); - const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); - - if ( x_delaunay == 0 ) // add all the points - { - cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - - // only add points included in (color-threshold) 0 ) && ( x_xmark[x_delaunay-1] != -1 ) ) - { - int px = cvPointFrom32f(r1->pt).x; - int py = cvPointFrom32f(r1->pt).y; - int ppx, ppy; - - // eight connected pixels - for ( ppx=px-1; ppx<=px+1; ppx++ ) - { - for ( ppy=py-1; ppy<=py+1; ppy++ ) - { - if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; - if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; - - uchar red = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3]; - uchar green = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+1]; - uchar blue = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+2]; - - uchar pred = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3]; - uchar pgreen = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3+1]; - uchar pblue = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3+2]; - - int diff = abs(red-pred) + abs(green-pgreen) + abs(blue-pblue); - - // post( "pdp_opencv_surf : point (%d,%d,%d) : diff : %d", blue, green, red, diff ); - - if ( diff < x_threshold ) - { - cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - } - } - } - - cvCircle( rgb, cvPointFrom32f(r1->pt), 3, CV_RGB(0,255,0), -1, 8,0); - - // mark the point if it is not already - if ( x_markall ) - { - int marked = 0; - - for ( im=0; impt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); - - if ( odist <= x_maxmove ) - { - marked = 1; - // post( "pdp_opencv_surf : point already marked" ); - break; - } - } - if ( !marked ) - { - for ( i=0; ipt.x; - x_ymark[i] = r1->pt.y; - x_found[i] = x_ftolerance; - memset( (float * )x_rdesc[i], 0x0, DSCSIZE*sizeof(float)); - break; - } - } - } - } - } - - for ( im=0; imcomp_ysize)?comp_xsize:comp_ysize; - - for( i = 0; i < objectKeypoints->total; i++ ) - { - CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); - const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); - int descsize = (int)(objectDescriptors->elem_size/sizeof(float)); - - // manually marked points - // recognized on position - odist=sqrt( pow( r1->pt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); - - if ( odist <= x_maxmove ) - { - if ( odist < dist ) - { - oi=im; - x_xmark[oi]=r1->pt.x; - x_ymark[oi]=r1->pt.y; - memcpy( (float * )x_rdesc[oi], rdesc, descsize*sizeof(float)); - dist = odist; - } - } - } - - if ( oi !=-1 ) - { - sprintf( tindex, "%d", oi ); - cvPutText( rgb, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,255,255)); - x_found[oi] = x_ftolerance; - SETFLOAT(&x_list[0], oi); - SETFLOAT(&x_list[1], x_xmark[oi]); - SETFLOAT(&x_list[2], x_ymark[oi]); - outlet_list( m_dataout, 0, 3, x_list ); - } - } - - // draw the delaunay - if ( x_delaunay >= 0 ) - { - CvSeqReader reader; - int i, total = x_subdiv->edges->total; - int elem_size = x_subdiv->edges->elem_size; - - cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); - - for( i = 0; i < total; i++ ) - { - CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); - CvSubdiv2DPoint* org_pt; - CvSubdiv2DPoint* dst_pt; - CvPoint2D32f org; - CvPoint2D32f dst; - CvPoint iorg, idst; - - if( CV_IS_SET_ELEM( edge )) - { - org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); - dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); - - if( org_pt && dst_pt ) - { - org = org_pt->pt; - dst = dst_pt->pt; - - iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); - idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); - - if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && - ( dst.x > 0 ) && ( dst.x < comp_xsize ) && - ( org.y > 0 ) && ( org.y < comp_ysize ) && - ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) - cvLine( rgb, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); - } - } - - CV_NEXT_SEQ_ELEM( elem_size, reader ); - } - } - - // suppress lost points - for ( im=0; imimageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_surf :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_surf : yuv format not supported" ); -} - -void pix_opencv_surf :: processGrayImage(imageStruct &image) -{ - int i, k; - int im, oi; - int marked; - int descsize; - char tindex[4]; - float dist, odist; - - if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) - { - - this->comp_xsize=image.xsize; - this->comp_ysize=image.ysize; - - cvReleaseImage( &rgba ); - cvReleaseImage( &orgb ); - cvReleaseImage( &rgb ); - cvReleaseImage( &gray ); - cvReleaseImage( &ogray ); - - rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); - gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); - - } - - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - memcpy( ogray->imageData, image.data, image.xsize*image.ysize ); - x_storage = cvCreateMemStorage(0); - - if( night_mode ) - cvZero( gray ); - - for ( im=0; im= 0 ) - { - // init data structures for the delaunay - x_fullrect.x = -comp_xsize/2; - x_fullrect.y = -comp_ysize/2; - x_fullrect.width = 2*comp_xsize; - x_fullrect.height = 2*comp_ysize; - - x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), - sizeof(CvSubdiv2DPoint), - sizeof(CvQuadEdge2D), - x_storage ); - cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); - } - - cvExtractSURF( ogray, 0, &objectKeypoints, &objectDescriptors, x_storage, cvSURFParams(x_hessian, 1) ); - descsize = (int)(objectDescriptors->elem_size/sizeof(float)); - - for( i = 0; i < objectKeypoints->total; i++ ) - { - CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); - const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); - - if ( x_delaunay == 0 ) // add all the points - { - cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - - // only add points included in (color-threshold) 0 ) && ( x_xmark[x_delaunay-1] != -1 ) ) - { - int px = cvPointFrom32f(r1->pt).x; - int py = cvPointFrom32f(r1->pt).y; - int ppx, ppy; - - // eight connected pixels - for ( ppx=px-1; ppx<=px+1; ppx++ ) - { - for ( ppy=py-1; ppy<=py+1; ppy++ ) - { - if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; - if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; - - uchar lum = ((uchar*)(ogray->imageData + ogray->widthStep*ppx))[ppy]; - - uchar plum = ((uchar*)(ogray->imageData + ogray->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]]; - - int diff = abs(lum-plum); - - if ( diff < x_threshold ) - { - cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); - cvCalcSubdivVoronoi2D( x_subdiv ); - } - } - } - } - - cvCircle( gray, cvPointFrom32f(r1->pt), 3, CV_RGB(255,255,255), -1, 8,0); - - // mark the point if it is not already - if ( x_markall ) - { - int marked = 0; - - for ( im=0; impt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); - - if ( odist <= x_maxmove ) - { - marked = 1; - // post( "pdp_opencv_surf : point already marked" ); - break; - } - } - - if ( !marked ) - { - for ( i=0; ipt.x; - x_ymark[i] = r1->pt.y; - x_found[i] = x_ftolerance; - memset( (float * )x_rdesc[i], 0x0, DSCSIZE*sizeof(float)); - break; - } - } - } - } - } - - for ( im=0; imcomp_ysize)?comp_xsize:comp_ysize; - - for( i = 0; i < objectKeypoints->total; i++ ) - { - CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); - const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); - int descsize = (int)(objectDescriptors->elem_size/sizeof(float)); - - // manually marked points - // recognized on position - odist=sqrt( pow( r1->pt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); - - if ( odist <= x_maxmove ) - { - if ( odist < dist ) - { - oi=im; - x_xmark[oi]=r1->pt.x; - x_ymark[oi]=r1->pt.y; - memcpy( (float * )x_rdesc[oi], rdesc, descsize*sizeof(float)); - dist = odist; - } - } - } - - if ( oi !=-1 ) - { - sprintf( tindex, "%d", oi ); - cvPutText( gray, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,255,255)); - x_found[oi] = x_ftolerance; - SETFLOAT(&x_list[0], oi); - SETFLOAT(&x_list[1], x_xmark[oi]); - SETFLOAT(&x_list[2], x_ymark[oi]); - outlet_list( m_dataout, 0, 3, x_list ); - } - } - - // draw the delaunay - if ( x_delaunay >= 0 ) - { - CvSeqReader reader; - int i, total = x_subdiv->edges->total; - int elem_size = x_subdiv->edges->elem_size; - - cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); - - for( i = 0; i < total; i++ ) - { - CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); - CvSubdiv2DPoint* org_pt; - CvSubdiv2DPoint* dst_pt; - CvPoint2D32f org; - CvPoint2D32f dst; - CvPoint iorg, idst; - - if( CV_IS_SET_ELEM( edge )) - { - org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); - dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); - - if( org_pt && dst_pt ) - { - org = org_pt->pt; - dst = dst_pt->pt; - - iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); - idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); - - if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && - ( dst.x > 0 ) && ( dst.x < comp_xsize ) && - ( org.y > 0 ) && ( org.y < comp_ysize ) && - ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) - cvLine( gray, iorg, idst, CV_RGB(255,255,255), 1, CV_AA, 0 ); - } - } - - CV_NEXT_SEQ_ELEM( elem_size, reader ); - } - } - - // suppress lost points - for ( im=0; imimageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// - -void pix_opencv_surf :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_surf::nightModeMessCallback, - gensym("nightmode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_surf::hessianMessCallback, - gensym("hessian"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_surf::markMessCallback, - gensym("mark"), A_GIMME, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_surf::deleteMessCallback, - gensym("delete"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_surf::clearMessCallback, - gensym("clear"), A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_surf::maxMoveMessCallback, - gensym("maxmove"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_surf::ftoleranceMessCallback, - gensym("ftolerance"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_surf::delaunayMessCallback, - gensym("delaunay"), A_SYMBOL, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_surf::pdelaunayMessCallback, - gensym("pdelaunay"), A_FLOAT, A_FLOAT, A_NULL); -} - -void pix_opencv_surf :: nightModeMessCallback(void *data, t_floatarg nightmode) -{ - GetMyClass(data)->nightModeMess((float)nightmode); -} - -void pix_opencv_surf :: hessianMessCallback(void *data, t_floatarg hessian) -{ - GetMyClass(data)->hessianMess((float)hessian); -} - -void pix_opencv_surf :: markMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) -{ - GetMyClass(data)->markMess(argc, argv); -} - -void pix_opencv_surf :: deleteMessCallback(void *data, t_floatarg index) -{ - GetMyClass(data)->deleteMess((float)index); -} - -void pix_opencv_surf :: clearMessCallback(void *data) -{ - GetMyClass(data)->clearMess(); -} - -void pix_opencv_surf :: maxMoveMessCallback(void *data, t_floatarg maxmove) -{ - GetMyClass(data)->maxMoveMess((float)maxmove); -} - -void pix_opencv_surf :: ftoleranceMessCallback(void *data, t_floatarg ftolerance) -{ - GetMyClass(data)->ftoleranceMess((float)ftolerance); -} - -void pix_opencv_surf :: delaunayMessCallback(void *data, t_symbol *s) -{ - GetMyClass(data)->delaunayMess(s); -} - -void pix_opencv_surf :: pdelaunayMessCallback(void *data, t_floatarg fpoint, t_floatarg fthreshold) -{ - GetMyClass(data)->pdelaunayMess((float)fpoint, (float)fthreshold); -} - -void pix_opencv_surf :: nightModeMess(float nightmode) -{ - if ((nightmode==0.0)||(nightmode==1.0)) night_mode = (int)nightmode; -} - -void pix_opencv_surf :: hessianMess(float hessian) -{ - if (hessian>0.0) x_hessian = (int)hessian; -} - -void pix_opencv_surf :: markMess(int argc, t_atom *argv) -{ - int i; - int inserted; - - if ( argc == 1 ) // mark all or none - { - if ( argv[0].a_type != A_SYMBOL ) - { - error( "pix_opencv_surf : wrong argument (should be 'all')" ); - return; - } - if ( !strcmp( argv[0].a_w.w_symbol->s_name, "all" ) ) - { - x_markall = 1; - return; - } - if ( !strcmp( argv[0].a_w.w_symbol->s_name, "none" ) ) - { - x_markall = 0; - clearMess(); - return; - } - } - else - { - if ( ( argv[0].a_type != A_FLOAT ) || ( argv[1].a_type != A_FLOAT ) ) - { - error( "pix_opencv_surf : wrong argument (should be mark px py)" ); - return; - } - else - { - float fpx = argv[0].a_w.w_float; - float fpy = argv[1].a_w.w_float; - int px, py; - - if ( ( fpx < 0.0 ) || ( fpx > comp_xsize ) || ( fpy < 0.0 ) || ( fpy > comp_ysize ) ) - { - return; - } - - px = (int)fpx; - py = (int)fpy; - inserted = 0; - for ( i=0; i MAX_MARKERS ) ) - { - return; - } - - x_xmark[(int)index-1] = -1; - x_ymark[(int)index-1] = -1; - -} - -void pix_opencv_surf :: clearMess(void) -{ - int i; - - for ( i=0; i=3.0) maxmove = (int)maxmove; -} - -void pix_opencv_surf :: ftoleranceMess(float ftolerance) -{ - if (ftolerance>=0.0) ftolerance = (int)ftolerance; -} - -void pix_opencv_surf :: delaunayMess(t_symbol *s) -{ - if (s == gensym("on")) - x_delaunay = 0; - if (s == gensym("off")) - x_delaunay = -1; -} - -void pix_opencv_surf :: pdelaunayMess(float point, float threshold) -{ - if (((int)point>0) && ((int)point= threshold; -#X text 552 436 pixel >= threshold set to threshold; -#X text 530 413 pixel <= threshold; -#X text 579 457 pixel <= threshold set to 0; -#X text 603 479 pixel >= threshold set to 0; -#X obj 191 449 pix_opencv_threshold; -#X text 333 425 ( default 50 ); -#X obj 310 -76 gemhead; -#X obj 191 565 pix_texture; -#X obj 191 584 square 2; -#X obj -290 -42 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 --66577 0; -#N canvas 0 22 454 304 gemwin 0; -#X obj 67 89 outlet; -#X obj 67 10 inlet; -#X obj 65 41 route create; -#X msg 67 70 set destroy; -#X msg 182 68 set create; -#N canvas 87 154 247 179 Gem.init 0; -#X obj 118 46 loadbang; -#X msg 118 81 reset; -#X obj 118 113 outlet; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X restore 289 80 pd Gem.init; -#X obj 162 241 gemwin; -#X msg 161 188 create \, 1; -#X msg 237 189 destroy; -#X msg 283 161 frame 25; -#X obj 164 126 t b b b; -#X connect 1 0 2 0; -#X connect 2 0 3 0; -#X connect 2 0 10 0; -#X connect 2 1 4 0; -#X connect 2 1 8 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 7 0 6 0; -#X connect 8 0 6 0; -#X connect 9 0 6 0; -#X connect 10 0 7 0; -#X connect 10 2 9 0; -#X restore -280 2 pd gemwin; -#X msg -280 -16 create; -#X obj 39 561 pix_texture; -#X obj 39 589 square 2; -#X obj 191 251 separator; -#X obj 322 -49 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 379 126 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 --1 -1; -#X floatatom 361 91 5 0 10000 1 frame# - -; -#X obj 322 -20 openpanel; -#X msg 322 0 open \$1; -#X obj 310 109 pix_film; -#X msg 328 43 auto \$1; -#X obj 328 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 -; -#X text -282 -36 Create window and render; -#X msg 423 26 colorspace RGBA; -#X msg 528 26 colorspace RGB; -#X msg 632 26 colorspace Grey; -#X obj 423 -2 loadbang; -#X obj 190 222 pix_separator; -#X obj 39 254 separator; -#X obj 39 225 pix_separator; -#X obj 39 289 translateXYZ -2 0 0; -#X obj 191 286 translateXYZ 2 0 0; -#N canvas 0 22 450 300 vswitch 0; -#X obj 144 263 outlet; -#X obj 36 26 inlet; -#X obj 260 29 inlet; -#X obj 36 133 spigot; -#X obj 260 141 spigot; -#X obj 119 64 loadbang; -#X msg 83 93 0; -#X msg 113 93 1; -#X msg 296 104 0; -#X msg 326 104 1; -#X obj 399 34 inlet; -#X obj 399 67 select 0; -#X connect 1 0 3 0; -#X connect 2 0 4 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 7 0; -#X connect 5 0 8 0; -#X connect 6 0 3 1; -#X connect 7 0 3 1; -#X connect 8 0 4 1; -#X connect 9 0 4 1; -#X connect 10 0 11 0; -#X connect 11 0 7 0; -#X connect 11 0 8 0; -#X connect 11 1 9 0; -#X connect 11 1 6 0; -#X restore 130 164 pd vswitch; -#X obj 198 164 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 73 107 pix_video; -#X obj 73 -81 gemhead; -#X msg 112 32 device 0; -#X msg 121 63 driver 1; -#X msg 98 -22 dialog; -#X msg 103 8 device /dev/dv1394-0; -#X text -293 65 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org -); -#X text -294 53 used as a filter to detect bright or dark piksels; -#X text -293 40 pix_opencv_threshold : pixel thresholding; -#X obj 132 194 pix_rgba; -#X connect 1 0 17 2; -#X connect 2 0 17 0; -#X connect 3 0 17 1; -#X connect 5 0 2 0; -#X connect 6 0 2 0; -#X connect 7 0 2 0; -#X connect 8 0 2 0; -#X connect 9 0 2 0; -#X connect 17 0 20 0; -#X connect 19 0 33 0; -#X connect 20 0 21 0; -#X connect 23 0 24 0; -#X connect 24 0 23 0; -#X connect 25 0 26 0; -#X connect 27 0 45 0; -#X connect 28 0 31 0; -#X connect 29 0 30 0; -#X connect 30 0 33 1; -#X connect 31 0 32 0; -#X connect 32 0 33 0; -#X connect 33 0 46 1; -#X connect 33 2 29 0; -#X connect 34 0 33 0; -#X connect 35 0 34 0; -#X connect 37 0 33 0; -#X connect 37 0 48 0; -#X connect 38 0 33 0; -#X connect 39 0 33 0; -#X connect 40 0 37 0; -#X connect 40 0 35 0; -#X connect 41 0 27 0; -#X connect 42 0 44 0; -#X connect 43 0 42 0; -#X connect 44 0 25 0; -#X connect 45 0 17 0; -#X connect 46 0 57 0; -#X connect 47 0 46 2; -#X connect 48 0 46 0; -#X connect 49 0 48 0; -#X connect 50 0 48 0; -#X connect 51 0 48 0; -#X connect 52 0 48 0; -#X connect 53 0 48 0; -#X connect 57 0 43 0; -#X connect 57 0 41 0; diff --git a/pix_opencv_threshold.cc b/pix_opencv_threshold.cc deleted file mode 100644 index 28f1477..0000000 --- a/pix_opencv_threshold.cc +++ /dev/null @@ -1,262 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// - -#include "pix_opencv_threshold.h" - -CPPEXTERN_NEW(pix_opencv_threshold) - -///////////////////////////////////////////////////////// -// -// pix_opencv_threshold -// -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -pix_opencv_threshold :: pix_opencv_threshold() -{ - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("max")); - inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("threshold")); - threshold_value = 50; - max_value = 255; - threshold_mode = 0; - comp_xsize = 0; - comp_ysize = 0; - orig = NULL; - rgb = NULL; - gray = NULL; -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_threshold :: ~pix_opencv_threshold() -{ - //Destroy cv_images to clean memory - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_threshold :: processRGBAImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( orig ) - { - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - } - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); - } - // Here we make a copy of the pixel data from image to orig->imageData - // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here - // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html - memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); - - // Convert to grayscale - cvCvtColor(orig, gray, CV_BGRA2GRAY); - - // Applies fixed-level thresholding to single-channel array. - switch(this->threshold_mode) { - case 0: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY); - break; - case 1: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY_INV); - break; - case 2: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TRUNC); - break; - case 3: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO); - break; - case 4: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO_INV); - break; - } - - cvCvtColor(gray, orig, CV_GRAY2BGRA); - - //copy back the processed frame to image - memcpy( image.data, orig->imageData, image.xsize*image.ysize*4 ); -} - -void pix_opencv_threshold :: processRGBImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgb ) - { - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - } - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - - // Convert to grayscale - cvCvtColor(rgb, gray, CV_RGB2GRAY); - - // Applies fixed-level thresholding to single-channel array. - switch(this->threshold_mode) { - case 0: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY); - break; - case 1: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY_INV); - break; - case 2: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TRUNC); - break; - case 3: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO); - break; - case 4: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO_INV); - break; - } - - cvCvtColor(gray, rgb, CV_GRAY2BGR); - - memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); -} - -void pix_opencv_threshold :: processYUVImage(imageStruct &image) -{ - post( "pix_opencv_threshold : yuv format not supported" ); -} - -void pix_opencv_threshold :: processGrayImage(imageStruct &image) -{ - unsigned char *pixels = image.data; - - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { - - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if ( rgb ) - { - cvReleaseImage(&orig); - cvReleaseImage(&gray); - cvReleaseImage(&rgb); - } - - //create the orig image with new size - orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); - - } - // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage - memcpy( gray->imageData, image.data, image.xsize*image.ysize ); - - // Applies fixed-level thresholding to single-channel array. - switch(this->threshold_mode) { - case 0: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY); - break; - case 1: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY_INV); - break; - case 2: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TRUNC); - break; - case 3: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO); - break; - case 4: - cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO_INV); - break; - } - - memcpy( image.data, gray->imageData, image.xsize*image.ysize ); -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_threshold :: floatMaxMess (float maxvalue) -{ - if ( (int)maxvalue>0 ) this->max_value = maxvalue; -} -void pix_opencv_threshold :: floatThreshMess (float edge_thresh) -{ - this->threshold_value = edge_thresh; -} -void pix_opencv_threshold :: floatModeMess (float mode) -{ - if ((mode>=0)&&(mode<5)) this->threshold_mode = (int)mode; -} - -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_threshold :: obj_setupCallback(t_class *classPtr) -{ - class_addmethod(classPtr, (t_method)&pix_opencv_threshold::floatModeMessCallback, - gensym("mode"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_threshold::floatMaxMessCallback, - gensym("max"), A_FLOAT, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_threshold::floatThreshMessCallback, - gensym("threshold"), A_FLOAT, A_NULL); -} -void pix_opencv_threshold :: floatMaxMessCallback(void *data, t_floatarg maxvalue) -{ - GetMyClass(data)->floatMaxMess((float)maxvalue); -} -void pix_opencv_threshold :: floatThreshMessCallback(void *data, t_floatarg edge_thresh) -{ - GetMyClass(data)->floatThreshMess((float)edge_thresh); -} -void pix_opencv_threshold :: floatModeMessCallback(void *data, t_floatarg mode) -{ - GetMyClass(data)->floatModeMess((float)mode); -} diff --git a/pix_opencv_threshold.h b/pix_opencv_threshold.h deleted file mode 100644 index 33b4594..0000000 --- a/pix_opencv_threshold.h +++ /dev/null @@ -1,89 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Threshold filter - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ - -#ifndef INCLUDE_PIX_OPENCV_THRESHOLD_H_ -#define INCLUDE_PIX_OPENCV_THRESHOLD_H_ - -#ifndef _EiC -#include "opencv2/legacy/legacy.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_threshold - - Threshold filter - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_threshold : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_threshold, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_threshold(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_threshold(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ////////// - // Set the new edge threshold - void floatMaxMess(float maxvalue); - void floatThreshMess(float edge_thresh); - void floatModeMess(float mode); - - // The new edge threshold - float threshold_value; - float max_value; - int threshold_mode; - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - private: - - ////////// - // Static member functions - static void floatMaxMessCallback(void *data, t_floatarg maxvalue); - static void floatThreshMessCallback(void *data, t_floatarg thresh_value); - static void floatModeMessCallback(void *data, t_floatarg thresh_mode_value); - - ///////// - // IplImage needed - IplImage *orig, *rgb, *gray; -}; - -#endif // for header file diff --git a/pix_opencv_warpperspective-help.pd b/pix_opencv_warpperspective-help.pd deleted file mode 100644 index 4c8749b..0000000 --- a/pix_opencv_warpperspective-help.pd +++ /dev/null @@ -1,119 +0,0 @@ -#N canvas 616 396 980 660 10; -#X obj 24 25 gemhead; -#X obj 411 543 gemwin; -#X msg 411 509 create \, 1; -#X msg 492 509 destroy; -#X obj 24 565 pix_texture; -#X obj 203 571 print; -#X obj 24 591 rectangle 4 3; -#X obj 24 4 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 -; -#X obj 24 539 pix_opencv_warpperspective; -#X msg 76 367 mapMatrix 1 0 0 0 1 0 0 0 1; -#X text 75 348 you can also set the map matrix directly; -#X msg 76 387 mapMatrix 0.5 0 0 0 0.5 0 0 0 1; -#X text 281 366 identity; -#X text 302 388 scale by 0.5; -#X msg 76 407 mapMatrix 0 1 0 1 0 0 0 0 2; -#X text 275 409 rotation by 90deg and scale by 0.5; -#X obj 24 93 pix_video; -#X obj 24 133 pix_flip; -#N canvas 1 105 936 545 wrap_perspective_GPU 0; -#X obj 251 443 mesh_square 10 10; -#X obj 301 277 /; -#X obj 351 278 /; -#X obj 301 233 loadbang; -#X obj 251 356 GEMglMultTransposeMatrixf; -#X obj 251 414 translateXYZ 1 1 0; -#X obj 251 299 scaleXYZ 0.003 0.003 0; -#X obj 251 376 scaleXYZ 639 479 0; -#X obj 251 212 translateXYZ -5.33333 -4 0; -#X obj 251 395 scaleXYZ 0.5 0.5 0; -#X msg 301 255 5.3333 320; -#X msg 377 255 4 240; -#X msg 423 330 \$1 \$4 0 \$7 \$2 \$5 0 \$8 0 0 1 0 \$3 \$6 0 \$9; -#X text 46 22 wrap_persective can be easilly computed by the GPU in -order to boost performace; -#X obj 251 188 spigot; -#X obj 290 138 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X obj 39 105 t a a; -#X obj 39 190 spigot 1; -#X obj 92 164 == 0; -#X obj 39 253 rectangle 4 3; -#X obj 39 233 pix_texture; -#X obj 39 211 pix_opencv_warpperspective; -#X text 306 137 switch CPU / GPU; -#X text 454 256 Since the matrice is computed for somthing that range -from 0 to 639 in X \, and from 0 to 479 in Y \, one have to convert -(scale / translate) the primitive coordinate to fit the transformation -matrix.; -#X obj 41 62 inlet; -#X connect 1 0 6 1; -#X connect 2 0 6 2; -#X connect 3 0 10 0; -#X connect 3 0 11 0; -#X connect 4 0 7 0; -#X connect 5 0 0 0; -#X connect 6 0 4 0; -#X connect 7 0 9 0; -#X connect 8 0 6 0; -#X connect 9 0 5 0; -#X connect 10 0 1 0; -#X connect 11 0 2 0; -#X connect 12 0 4 1; -#X connect 14 0 8 0; -#X connect 15 0 14 1; -#X connect 15 0 18 0; -#X connect 16 0 17 0; -#X connect 16 1 14 0; -#X connect 17 0 21 0; -#X connect 18 0 17 1; -#X connect 20 0 19 0; -#X connect 21 0 20 0; -#X connect 21 1 12 0; -#X connect 24 0 16 0; -#X restore 161 604 pd wrap_perspective_GPU; -#X msg 43 233 dstMatrix 0 0 0 1 1 1 1 0; -#X msg 59 281 srcMatrix 0 0 0 1 1 1 1 0; -#X text 203 234 destination matrix; -#X text 103 261 source matrix; -#X text 229 279 the same as dst lead to identity map matrix; -#X msg 71 306 srcMatrix 1 0 1 1 2 1 2 0; -#X text 234 299 translation also lead to identity map matrix while -translation is not a perspective transformation; -#X text 126 327 TODO more src examples...; -#X text 112 88 pix_opencv_warpperspective computes the perspective -transformation between dstMatrix and srcMatrix and corrects the image -image according to this perspective transformation; -#X text 111 129 the trasnsformation matrix is also sent through the -right outlet to be applied in OpenGL for example; -#X text 114 159 the transformation matrix could also be set by mapMatrix -message to apply the transformation; -#X text 112 25 see examples/05-perspective_correction for an example -of the use of pix_opencv_warpperspective with pix_opencv_findchessboardcorners -to correct perspective; -#X obj 24 112 pix_grey; -#X msg 123 480 invert \$1; -#X obj 123 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 -1; -#X text 140 450 invert transformation matrix (same as swaping src and -dst matrix); -#X connect 0 0 16 0; -#X connect 2 0 1 0; -#X connect 3 0 1 0; -#X connect 4 0 6 0; -#X connect 7 0 0 0; -#X connect 8 0 4 0; -#X connect 8 1 5 0; -#X connect 9 0 8 0; -#X connect 11 0 8 0; -#X connect 14 0 8 0; -#X connect 16 0 31 0; -#X connect 17 0 8 0; -#X connect 19 0 8 0; -#X connect 20 0 8 0; -#X connect 24 0 8 0; -#X connect 31 0 17 0; -#X connect 32 0 8 0; -#X connect 33 0 32 0; diff --git a/pix_opencv_warpperspective.cc b/pix_opencv_warpperspective.cc deleted file mode 100644 index e53a1dc..0000000 --- a/pix_opencv_warpperspective.cc +++ /dev/null @@ -1,330 +0,0 @@ -//////////////////////////////////////////////////////// -// -// GEM - Graphics Environment for Multimedia -// -// zmoelnig@iem.kug.ac.at -// -// Implementation file -// -// Copyright (c) 1997-2000 Mark Danks. -// Copyright (c) Günther Geiger. -// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM -// Copyright (c) 2002 James Tittle & Chris Clepper -// For information on usage and redistribution, and for a DISCLAIMER OF ALL -// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. -// -///////////////////////////////////////////////////////// -// -// pix_opencv_warpperspective by Antoine Villeret - 2011/13 - - - -#include "pix_opencv_warpperspective.h" -#include - -CPPEXTERN_NEW(pix_opencv_warpperspective) - -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// - -pix_opencv_warpperspective :: pix_opencv_warpperspective() -{ - //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); - //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); - m_dataout = outlet_new(this->x_obj, 0); - //m_countout = outlet_new(this->x_obj, 0); - comp_xsize = 320; - comp_ysize = 240; - gray = NULL; - tmp = NULL; - rgb = NULL; - mapMatrix = cvCreateMat(3,3,CV_32FC1); - srcMatrix = cvCreateMat(4,2,CV_32FC1); - dstMatrix = cvCreateMat(4,2,CV_32FC1); - - cvSet(mapMatrix, cvScalar(0)); // set all to 0. - CV_MAT_ELEM( *mapMatrix, float, 0, 0 ) = 1.; // then make identity - CV_MAT_ELEM( *mapMatrix, float, 1, 1 ) = 1.; - - // initialize srcMatrix & dstMatrix to the same... - CV_MAT_ELEM( *srcMatrix, float, 0, 0 ) = 0.; - CV_MAT_ELEM( *srcMatrix, float, 0, 1 ) = 0.; - CV_MAT_ELEM( *srcMatrix, float, 1, 0 ) = 1.; - CV_MAT_ELEM( *srcMatrix, float, 1, 1 ) = 0.; - CV_MAT_ELEM( *srcMatrix, float, 2, 0 ) = 1.; - CV_MAT_ELEM( *srcMatrix, float, 2, 1 ) = 1.; - CV_MAT_ELEM( *srcMatrix, float, 3, 0 ) = 0.; - CV_MAT_ELEM( *srcMatrix, float, 3, 1 ) = 1.; - - CV_MAT_ELEM( *dstMatrix, float, 0, 0 ) = 0.; - CV_MAT_ELEM( *dstMatrix, float, 0, 1 ) = 0.; - CV_MAT_ELEM( *dstMatrix, float, 1, 0 ) = 1.; - CV_MAT_ELEM( *dstMatrix, float, 1, 1 ) = 0.; - CV_MAT_ELEM( *dstMatrix, float, 2, 0 ) = 1.; - CV_MAT_ELEM( *dstMatrix, float, 2, 1 ) = 1.; - CV_MAT_ELEM( *dstMatrix, float, 3, 0 ) = 0.; - CV_MAT_ELEM( *dstMatrix, float, 3, 1 ) = 1.; - - mapMatrixList=new t_atom[9]; - - flags = CV_WARP_FILL_OUTLIERS; // TODO add a set method - findmethod = 0; // TODO add a set method - - post("pix_opencv_warpperspective by Antoine Villeret"); - post("build on %s at %s", __DATE__, __TIME__); - -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -pix_opencv_warpperspective :: ~pix_opencv_warpperspective() -{ - //Destroy cv_images to clean memory - //if (gray) cvReleaseImage(&gray); // TODO free image header but not data because it points to Gem image... - if (rgb) cvReleaseImage(&rgb); - //if (tmp) cvReleaseImage(&tmp); // the same - if (mapMatrix) cvReleaseMat(&mapMatrix); - if (srcMatrix) cvReleaseMat(&srcMatrix); - if (dstMatrix) cvReleaseMat(&dstMatrix); -} - -///////////////////////////////////////////////////////// -// processImage -// -///////////////////////////////////////////////////////// -void pix_opencv_warpperspective :: processRGBAImage(imageStruct &image) -{ - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) - { - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if(gray) cvReleaseImage(&gray); - if(rgb) cvReleaseImage(&rgb); - if(tmp) cvReleaseImage(&tmp); - - // Create images with new sizes - rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - tmp = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); - } - - // no need to copy a lot of memory, just point to it... - rgb->imageData = (char*) image.data; - cvWarpPerspective(rgb, tmp, mapMatrix, flags, cvScalar(0)); - memcpy(image.data, tmp->imageData, image.xsize*image.ysize*image.csize); -} - -void pix_opencv_warpperspective :: processRGBImage(imageStruct &image) -{ - // TODO - error("cant't support RGB image for now"); -} - -void pix_opencv_warpperspective :: processYUVImage(imageStruct &image) -{ - // TODO - error( "pix_opencv_warpperspective : yuv format not supported" ); -} - -void pix_opencv_warpperspective :: processGrayImage(imageStruct &image) -{ - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!gray)) - { - this->comp_xsize = image.xsize; - this->comp_ysize = image.ysize; - - //Destroy cv_images to clean memory - if(gray) cvReleaseImage(&gray); - if(rgb) cvReleaseImage(&rgb); - if(tmp) cvReleaseImage(&tmp); - - // Create images with new sizes - gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - tmp = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); - } - - // no need to copy a lot of memory, just point to it... - gray->imageData = (char*) image.data; - - cvWarpPerspective(gray, tmp, mapMatrix, flags, cvScalar(0)); - memcpy(image.data, tmp->imageData, image.xsize*image.ysize); - -} - -///////////////////////////////////////////////////////// -// floatThreshMess -// -///////////////////////////////////////////////////////// -void pix_opencv_warpperspective :: mapMatrixMess (int argc, t_atom *argv) -{ - post("set mapMatrix"); - int i; - if (argc != 9) { - error("map matrix should be 3x3"); - return; - } - for ( i = 0; i < 9 ; i++) { - if (argv[i].a_type != A_FLOAT) { - error("map matrix should be float"); - return; - } - } - - // fillin the mapMatrix - CV_MAT_ELEM( *mapMatrix, float, 0, 0 ) = argv[0].a_w.w_float; - CV_MAT_ELEM( *mapMatrix, float, 1, 0 ) = argv[1].a_w.w_float; - CV_MAT_ELEM( *mapMatrix, float, 2, 0 ) = argv[2].a_w.w_float; - CV_MAT_ELEM( *mapMatrix, float, 0, 1 ) = argv[3].a_w.w_float; - CV_MAT_ELEM( *mapMatrix, float, 1, 1 ) = argv[4].a_w.w_float; - CV_MAT_ELEM( *mapMatrix, float, 2, 1 ) = argv[5].a_w.w_float; - CV_MAT_ELEM( *mapMatrix, float, 0, 2 ) = argv[6].a_w.w_float; - CV_MAT_ELEM( *mapMatrix, float, 1, 2 ) = argv[7].a_w.w_float; - CV_MAT_ELEM( *mapMatrix, float, 2, 2 ) = argv[8].a_w.w_float; - - /* - int j; - printf("---mapMatrix---\n"); - for ( j = 0 ; j < 3 ; j++ ){ - for( i=0 ; i<3 ; i++){ - printf("%.2f,\t", CV_MAT_ELEM( *mapMatrix, float, i, j)); - } - printf("\n"); - } - */ -} - -void pix_opencv_warpperspective :: srcMatrixMess (int argc, t_atom *argv) -{ - int i; - if ( argc % 2 ) { - error("src is should be a list of couple x/y values"); - return; - } - if ( argc != dstMatrix->rows * dstMatrix->cols ) - { - error("src matrix should have the same size as dst matrix (which is %d x %d)", dstMatrix->cols, dstMatrix->rows); - return; - } - for ( i = 0; i < argc ; i++) { - if (argv[i].a_type != A_FLOAT) { - error("src matrix should be float"); - return; - } - } - - // fillin the srcMatrix - for ( i = 0 ; i < dstMatrix->rows ; i++ ) - { - CV_MAT_ELEM( *srcMatrix, float, i, 0 ) = argv[i*2].a_w.w_float; - CV_MAT_ELEM( *srcMatrix, float, i, 1 ) = argv[i*2+1].a_w.w_float; // does it work ? - } - findhomography(); -} - -void pix_opencv_warpperspective :: dstMatrixMess (int argc, t_atom *argv) -{ - int i; - if ( argc % 2 ){ - error("dstMatrix is should be a list of x/y pairs"); - return; - } - for ( i = 0; i < argc ; i++) { - if (argv[i].a_type != A_FLOAT) { - error("dstMatrix should be float"); - return; - } - } - if ( dstMatrix->rows != argc/2 ) { - // delete and recreate matrix if needed - cvReleaseMat(&dstMatrix); - cvReleaseMat(&srcMatrix); - dstMatrix = cvCreateMat(argc/2,2,CV_32FC1); - srcMatrix = cvCreateMat(argc/2,2,CV_32FC1); - cvSet(srcMatrix, cvScalar(0)); // set all to 0. - } - // fillin the dstMatrix - for ( i = 0 ; i < dstMatrix->rows ; i++ ) - { - CV_MAT_ELEM( *dstMatrix, float, i, 0 ) = argv[i*2].a_w.w_float; - CV_MAT_ELEM( *dstMatrix, float, i, 1 ) = argv[i*2+1].a_w.w_float; // does it work ? - } - findhomography(); -} - -void pix_opencv_warpperspective :: invertMess( int argc, t_atom *argv ){ - if ( argc == 0 ){ - error("invert need one argument (0|1)"); - } else if ( argv[0].a_type != A_FLOAT ){ - error("invert need one float argument (0|1)"); - } else { - int invert = argv[0].a_w.w_float; - if (invert > 0){ - flags |= cv::WARP_INVERSE_MAP; - } else { - flags ^= cv::WARP_INVERSE_MAP; - } - } -} - -void pix_opencv_warpperspective :: findhomography( ) -{ - int i,j; - if ( srcMatrix->cols != dstMatrix->cols || srcMatrix->rows != dstMatrix->rows ) { - error("srcMatrix and dstMatrix should have the same size to compute homography !"); - return; - } - - cvFindHomography(srcMatrix, dstMatrix, mapMatrix, findmethod, 0, NULL); - - for ( j = 0 ; j < 3 ; j++ ){ - for( i=0 ; i<3 ; i++){ - SETFLOAT(&mapMatrixList[i+j*3], CV_MAT_ELEM( *mapMatrix, float, i, j)); - } - } - - // send out mapMatrix - outlet_list( m_dataout, 0, 9, mapMatrixList); -} -///////////////////////////////////////////////////////// -// static member function -// -///////////////////////////////////////////////////////// -void pix_opencv_warpperspective :: obj_setupCallback(t_class *classPtr) -{ - // TODO add method for message "flags" - // TODO treat list messages in a PD way ? - class_addmethod(classPtr, (t_method)&pix_opencv_warpperspective::mapMatrixMessCallback, - gensym("mapMatrix"), A_GIMME, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_warpperspective::srcMatrixMessCallback, - gensym("srcMatrix"), A_GIMME, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_warpperspective::dstMatrixMessCallback, - gensym("dstMatrix"), A_GIMME, A_NULL); - class_addmethod(classPtr, (t_method)&pix_opencv_warpperspective::invertMessCallback, - gensym("invert"), A_GIMME, A_NULL); -} - -void pix_opencv_warpperspective :: mapMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) -{ - GetMyClass(data)->mapMatrixMess(argc, argv); -} - -void pix_opencv_warpperspective :: srcMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) -{ - GetMyClass(data)->srcMatrixMess(argc, argv); -} - -void pix_opencv_warpperspective :: dstMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) -{ - GetMyClass(data)->dstMatrixMess(argc, argv); -} - -void pix_opencv_warpperspective :: invertMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) -{ - GetMyClass(data)->invertMess(argc, argv); -} - diff --git a/pix_opencv_warpperspective.h b/pix_opencv_warpperspective.h deleted file mode 100644 index 549695d..0000000 --- a/pix_opencv_warpperspective.h +++ /dev/null @@ -1,95 +0,0 @@ -/*----------------------------------------------------------------- -LOG - GEM - Graphics Environment for Multimedia - - Compute homography between 2 sets on points and apply transformation to input image - - Copyright (c) 1997-1999 Mark Danks. mark@danks.org - Copyright (c) Günther Geiger. geiger@epy.co.at - Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at - Copyright (c) 2002 James Tittle & Chris Clepper - For information on usage and redistribution, and for a DISCLAIMER OF ALL - WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. - ------------------------------------------------------------------*/ -// pix_opencv_warpperspective by Antoine Villeret - 2011/13 - -#ifndef INCLUDE_PIX_OPENCV_WARPPERSPECTIVE_H_ -#define INCLUDE_PIX_OPENCV_WARPPERSPECTIVE_H_ - -#ifndef _EiC -#include "opencv2/opencv.hpp" -#endif - -#include "Base/GemPixObj.h" - -/*----------------------------------------------------------------- -------------------------------------------------------------------- -CLASS - pix_opencv_warpperspective - -KEYWORDS - pix - -DESCRIPTION - ------------------------------------------------------------------*/ -class GEM_EXTERN pix_opencv_warpperspective : public GemPixObj -{ - CPPEXTERN_HEADER(pix_opencv_warpperspective, GemPixObj) - - public: - - ////////// - // Constructor - pix_opencv_warpperspective(); - - protected: - - ////////// - // Destructor - virtual ~pix_opencv_warpperspective(); - - ////////// - // Do the processing - virtual void processRGBAImage(imageStruct &image); - virtual void processRGBImage(imageStruct &image); - virtual void processYUVImage(imageStruct &image); - virtual void processGrayImage(imageStruct &image); - - ///////// - // Setup - void mapMatrixMess (int argc, t_atom *argv); - void srcMatrixMess (int argc, t_atom *argv); - void dstMatrixMess (int argc, t_atom *argv); - void invertMess (int argc, t_atom *argv); - void findhomography(); - - // to detect changes in the image size - int comp_xsize; - int comp_ysize; - - CvMat *mapMatrix; // 3x3 transformation matrix - CvMat *srcMatrix, *dstMatrix; // nX2 points coordinates matrices, n>4 - t_atom *mapMatrixList; // array to send out transformation Matrix - int flags; - int findmethod; - - - private: - - t_outlet *m_dataout; - ////////// - // Static member functions - static void mapMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv); - static void srcMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv); - static void dstMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv); - static void invertMessCallback(void *data, t_symbol *s, int argc, t_atom *argv); - - ///////// - // IplImage needed - IplImage *rgb, *tmp, *gray; - -}; - -#endif // for header file diff --git a/plus/000.png b/plus/000.png new file mode 100644 index 0000000..87a27dc Binary files /dev/null and b/plus/000.png differ diff --git a/plus/001.png b/plus/001.png new file mode 100644 index 0000000..c79a7dc Binary files /dev/null and b/plus/001.png differ diff --git a/plus/002.png b/plus/002.png new file mode 100644 index 0000000..90e59f9 Binary files /dev/null and b/plus/002.png differ diff --git a/plus/003.png b/plus/003.png new file mode 100644 index 0000000..45385cb Binary files /dev/null and b/plus/003.png differ diff --git a/plus/004.png b/plus/004.png new file mode 100644 index 0000000..6f1c6d4 Binary files /dev/null and b/plus/004.png differ diff --git a/plus/005.png b/plus/005.png new file mode 100644 index 0000000..e58cb30 Binary files /dev/null and b/plus/005.png differ diff --git a/plus/006.png b/plus/006.png new file mode 100644 index 0000000..8ae55a5 Binary files /dev/null and b/plus/006.png differ diff --git a/plus/007.png b/plus/007.png new file mode 100644 index 0000000..e344d92 Binary files /dev/null and b/plus/007.png differ diff --git a/plus/008.png b/plus/008.png new file mode 100644 index 0000000..009f83e Binary files /dev/null and b/plus/008.png differ diff --git a/plus/009.png b/plus/009.png new file mode 100644 index 0000000..84c0867 Binary files /dev/null and b/plus/009.png differ diff --git a/plus/010.png b/plus/010.png new file mode 100644 index 0000000..1652678 Binary files /dev/null and b/plus/010.png differ diff --git a/plus/011.png b/plus/011.png new file mode 100644 index 0000000..e79637f Binary files /dev/null and b/plus/011.png differ diff --git a/plus/012.png b/plus/012.png new file mode 100644 index 0000000..4a24b39 Binary files /dev/null and b/plus/012.png differ diff --git a/plus/013.png b/plus/013.png new file mode 100644 index 0000000..ba9715a Binary files /dev/null and b/plus/013.png differ diff --git a/plus/014.png b/plus/014.png new file mode 100644 index 0000000..833d68d Binary files /dev/null and b/plus/014.png differ diff --git a/plus/015.png b/plus/015.png new file mode 100644 index 0000000..3cf9aa7 Binary files /dev/null and b/plus/015.png differ diff --git a/plus/016.png b/plus/016.png new file mode 100644 index 0000000..0b9e7d0 Binary files /dev/null and b/plus/016.png differ diff --git a/plus/017.png b/plus/017.png new file mode 100644 index 0000000..dfce6fc Binary files /dev/null and b/plus/017.png differ diff --git a/plus/018.png b/plus/018.png new file mode 100644 index 0000000..b88c6a3 Binary files /dev/null and b/plus/018.png differ diff --git a/plus/019.png b/plus/019.png new file mode 100644 index 0000000..c6aadf4 Binary files /dev/null and b/plus/019.png differ diff --git a/plus/020.png b/plus/020.png new file mode 100644 index 0000000..d93c43c Binary files /dev/null and b/plus/020.png differ diff --git a/plus/021.png b/plus/021.png new file mode 100644 index 0000000..1123c49 Binary files /dev/null and b/plus/021.png differ diff --git a/plus/022.png b/plus/022.png new file mode 100644 index 0000000..a211747 Binary files /dev/null and b/plus/022.png differ diff --git a/plus/023.png b/plus/023.png new file mode 100644 index 0000000..611e234 Binary files /dev/null and b/plus/023.png differ diff --git a/plus/024.png b/plus/024.png new file mode 100644 index 0000000..8f2507e Binary files /dev/null and b/plus/024.png differ diff --git a/plus/025.png b/plus/025.png new file mode 100644 index 0000000..0db7dc7 Binary files /dev/null and b/plus/025.png differ diff --git a/plus/026.png b/plus/026.png new file mode 100644 index 0000000..6f2e564 Binary files /dev/null and b/plus/026.png differ diff --git a/plus/027.png b/plus/027.png new file mode 100644 index 0000000..3726a5a Binary files /dev/null and b/plus/027.png differ diff --git a/plus/028.png b/plus/028.png new file mode 100644 index 0000000..caa3dc1 Binary files /dev/null and b/plus/028.png differ diff --git a/plus/029.png b/plus/029.png new file mode 100644 index 0000000..087a71c Binary files /dev/null and b/plus/029.png differ diff --git a/plus/030.png b/plus/030.png new file mode 100644 index 0000000..ab5e6f4 Binary files /dev/null and b/plus/030.png differ diff --git a/plus/031.png b/plus/031.png new file mode 100644 index 0000000..a8d3771 Binary files /dev/null and b/plus/031.png differ diff --git a/plus/032.png b/plus/032.png new file mode 100644 index 0000000..a94110b Binary files /dev/null and b/plus/032.png differ diff --git a/plus/033.png b/plus/033.png new file mode 100644 index 0000000..63e2200 Binary files /dev/null and b/plus/033.png differ diff --git a/plus/034.png b/plus/034.png new file mode 100644 index 0000000..889d5f5 Binary files /dev/null and b/plus/034.png differ diff --git a/plus/035.png b/plus/035.png new file mode 100644 index 0000000..b552f67 Binary files /dev/null and b/plus/035.png differ diff --git a/plus/036.png b/plus/036.png new file mode 100644 index 0000000..73190dd Binary files /dev/null and b/plus/036.png differ diff --git a/plus/037.png b/plus/037.png new file mode 100644 index 0000000..9e885b5 Binary files /dev/null and b/plus/037.png differ diff --git a/plus/038.png b/plus/038.png new file mode 100644 index 0000000..16eaf56 Binary files /dev/null and b/plus/038.png differ diff --git a/plus/039.png b/plus/039.png new file mode 100644 index 0000000..32e8def Binary files /dev/null and b/plus/039.png differ diff --git a/plus/040.png b/plus/040.png new file mode 100644 index 0000000..1b7bbfa Binary files /dev/null and b/plus/040.png differ diff --git a/plus/041.png b/plus/041.png new file mode 100644 index 0000000..d8b970e Binary files /dev/null and b/plus/041.png differ diff --git a/plus/042.png b/plus/042.png new file mode 100644 index 0000000..540920f Binary files /dev/null and b/plus/042.png differ diff --git a/plus/043.png b/plus/043.png new file mode 100644 index 0000000..4691fce Binary files /dev/null and b/plus/043.png differ diff --git a/plus/044.png b/plus/044.png new file mode 100644 index 0000000..110a46f Binary files /dev/null and b/plus/044.png differ diff --git a/plus/045.png b/plus/045.png new file mode 100644 index 0000000..ef2e42e Binary files /dev/null and b/plus/045.png differ diff --git a/plus/046.png b/plus/046.png new file mode 100644 index 0000000..d173fa7 Binary files /dev/null and b/plus/046.png differ diff --git a/plus/047.png b/plus/047.png new file mode 100644 index 0000000..7fec41a Binary files /dev/null and b/plus/047.png differ diff --git a/plus/048.png b/plus/048.png new file mode 100644 index 0000000..62c00f9 Binary files /dev/null and b/plus/048.png differ diff --git a/plus/049.png b/plus/049.png new file mode 100644 index 0000000..a9f41a4 Binary files /dev/null and b/plus/049.png differ diff --git a/src/Blob.hpp b/src/Blob.hpp new file mode 100644 index 0000000..fe7f836 --- /dev/null +++ b/src/Blob.hpp @@ -0,0 +1,56 @@ +/* +* Blob.hpp +* +* +* A blob is a homogenous patch represented by a polygonal contour. +* Typically a blob tracker uses the contour to figure out the blob's +* persistence and "upgrades" it with ids and other temporal +* information. +* +*/ + +#ifndef BLOB_H +#define BLOB_H + +#include + +class Blob { + +public: + + std::vector pts; // the contour of the blob + int nPts; // number of pts; + int id; + float area; + float length; + float angle; + float maccel; //distance traveled since last frame + float age; //how long the blob has been at war + float sitting; //how long hes been sitting in the same place + float downTime; + float lastTimeTimeWasChecked; + cv::Rect boundingRect; + cv::RotatedRect angleBoundingRect; + cv::Point2f centroid, lastCentroid, D; + bool simulated; + bool hole; + cv::Scalar color; + + //---------------------------------------- + Blob() { + area = 0.0f; + length = 0.0f; + hole = false; + nPts = 0; + simulated = false; + age = 0.0f; + sitting = 0.0f; + color = 0xFFFFFF; + + //freakishly long variable name (ala Apple) + //~lastTimeTimeWasChecked = ofGetElapsedTimeMillis(); //get current time as of creation + } +}; +#endif + + diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..2457e78 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,129 @@ +#~bin_PROGRAMS = pix_opencv +AUTOMAKE_OPTIONS = foreign +pkglib_LTLIBRARIES = pix_opencv.la + +pix_opencv_la_CXXFLAGS = @GEM_CPPFLAGS@ @PD_CPPFLAGS@ @FACETRACKER_CPPFLAGS@ +pix_opencv_la_LDFLAGS = -module -avoid-version -shared -shrext .@EXTENSION@ @GEM_LDFLAGS@ @PD_LDFLAGS@ @FACETRACKER_LDFLAGS@ +pix_opencv_la_includedir=$(includedir)/src +pix_opencv_la_include_HEADERS = Blob.hpp \ + blobtrack.h \ + pix_opencv_athreshold.h \ + pix_opencv_backgroundsubtractor.h \ + pix_opencv_bgstats.h \ + pix_opencv_bgsubstract.h \ + pix_opencv_blobtrack.h \ + pix_opencv_calibration.h \ + pix_opencv_camshift.h \ + pix_opencv_clahe.h \ + pix_opencv_colorfilt.h \ + pix_opencv_contours_boundingrect.h \ + pix_opencv_contours_convexhull.h \ + pix_opencv_contours_convexity.h \ + pix_opencv_contours.h \ + pix_opencv_dft.h \ + pix_opencv_distrans.h \ + pix_opencv_edge.h \ + pix_opencv_facetracker.h \ + pix_opencv_findchessboardcorners.h \ + pix_opencv_floodfill.h \ + pix_opencv_haarcascade.h \ + pix_opencv_hist_compare.h \ + pix_opencv_hough_circles.h \ + pix_opencv_hough_lines.h \ + pix_opencv_hu_compare.h \ + pix_opencv_hu_moments.h \ + pix_opencv_knear.h \ + pix_opencv_laplace.h \ + pix_opencv_lk.h \ + pix_opencv_matchshape.h \ + pix_opencv_morphology.h \ + pix_opencv_motempl.h \ + pix_opencv_of_bm.h \ + pix_opencv_of_hs.h \ + pix_opencv_of_lk.h \ + pix_opencv_opticalflow.h \ + pix_opencv_patreco.h \ + pix_opencv_pgh_compare.h \ + pix_opencv_surf.h \ + pix_opencv_template.h \ + pix_opencv_threshold.h \ + pix_opencv_trackKnn.h \ + pix_opencv_warpperspective.h + +OVERVIEW=../pix_opencv-help.pd + +pix_opencv_la_SOURCES = pix_opencv_edge.cc \ + pix_opencv_laplace.cc \ + pix_opencv_morphology.cc \ + pix_opencv_distrans.cc \ + pix_opencv_motempl.cc \ + pix_opencv_haarcascade.cc \ + pix_opencv_contours_boundingrect.cc \ + pix_opencv_bgsubstract.cc \ + pix_opencv_contours_convexity.cc \ + pix_opencv_dft.cc \ + pix_opencv_lk.cc \ + pix_opencv_hist_compare.cc \ + pix_opencv_knear.cc \ + pix_opencv_threshold.cc \ + pix_opencv_floodfill.cc \ + pix_opencv_athreshold.cc \ + pix_opencv_bgstats.cc \ + pix_opencv_camshift.cc \ + pix_opencv_hu_compare.cc \ + pix_opencv_pgh_compare.cc \ + pix_opencv_hough_circles.cc \ + pix_opencv_hough_lines.cc \ + pix_opencv_hu_moments.cc \ + pix_opencv_contours_convexhull.cc \ + pix_opencv_colorfilt.cc \ + pix_opencv_of_bm.cc \ + pix_opencv_of_hs.cc \ + pix_opencv_of_lk.cc \ + pix_opencv_calibration.cc \ + pix_opencv_warpperspective.cc \ + pix_opencv_findchessboardcorners.cc \ + pix_opencv_blobtrack.cc \ + pix_opencv_contours.cc \ + pix_opencv_matchshape.cc \ + pix_opencv_opticalflow.cc \ + pix_opencv_trackKnn.cc \ + pix_opencv_backgroundsubtractor.cc \ + pix_opencv_clahe.cc \ + pix_opencv.cc \ + pix_opencv_surf.cc \ + pix_opencv_facetracker.cc + +#~ Override pix_opencv.la target to add ".WAIT" but it doesn't seems to work... +#~pix_opencv.la: .WAIT $(pix_opencv_la_OBJECTS) $(pix_opencv_la_DEPENDENCIES) $(EXTRA_pix_opencv_la_DEPENDENCIES) +#~$(AM_V_CXXLD)$(pix_opencv_la_LINK) -rpath $(pkglibdir) $(pix_opencv_la_OBJECTS) $(pix_opencv_la_LIBADD) $(LIBS) +#~ +#~.WAIT: + +## uha, this is ugly +$(abs_builddir)/.libs/pix_opencv.@GEXTENSION@: pix_opencv.la + +$(top_builddir)/pix_opencv.@EXTENSION@: $(abs_builddir)/.libs/pix_opencv.@EXTENSION@ + rm -f $@ && cd $(top_builddir) && test -e $< && $(LN_S) $< pix_opencv.@EXTENSION@ || true + +.PHONY: clean-conveniencelink help + +clean-conveniencelink: + test -L $(top_builddir)/pix_opencv.@EXTENSION@ && rm -f $(top_builddir)/pix_opencv.@EXTENSION@ || true + + +all-local:: $(top_builddir)/pix_opencv.@EXTENSION@ help + +clean-local:: clean-conveniencelink + +.o: .cc + $(CXX) $(ALL_CFLAGS) -o "$*.o" -c "$*.cc" + +help: + echo "#N canvas 147 197 1566 537 10;" > $(OVERVIEW) + echo "#X text 126 15 overview of all available pix_opencv objects;" >> $(OVERVIEW) + echo "#X obj 30 20 pix_opencv;" >> $(OVERVIEW) + ID=0 ; \ + for extern in $(pix_opencv_la_SOURCES:.cc=""); do \ + echo "#X obj `expr $$ID % 5 \* 300 + 50` `expr $$ID / 5 \* 30 + 40` $$extern;" >> $(OVERVIEW) && ID=`expr $$ID + 1` ; \ + done ; diff --git a/src/blobtrack.h b/src/blobtrack.h new file mode 100644 index 0000000..e95feed --- /dev/null +++ b/src/blobtrack.h @@ -0,0 +1,121 @@ +#include "opencv2/video/background_segm.hpp" +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/blobtrack.hpp" +#include +#include + +/* Select appropriate case insensitive string comparison function: */ +#if defined WIN32 || defined _MSC_VER + #define MY_STRNICMP strnicmp + #define MY_STRICMP stricmp +#else + #define MY_STRNICMP strncasecmp + #define MY_STRICMP strcasecmp +#endif + +/* List of foreground (FG) DETECTION modules: */ +static CvFGDetector* cvCreateFGDetector0 () { return cvCreateFGDetectorBase(CV_BG_MODEL_FGD, NULL); } +static CvFGDetector* cvCreateFGDetector0Simple() { return cvCreateFGDetectorBase(CV_BG_MODEL_FGD_SIMPLE, NULL); } +static CvFGDetector* cvCreateFGDetector1 () { return cvCreateFGDetectorBase(CV_BG_MODEL_MOG, NULL); } + +typedef struct DefModule_FGDetector +{ + CvFGDetector* (*create)(); + const char* nickname; + const char* description; +} DefModule_FGDetector; + +DefModule_FGDetector FGDetector_Modules[] = +{ + {cvCreateFGDetector0,"FG_0","Foreground Object Detection from Videos Containing Complex Background. ACM MM2003."}, + {cvCreateFGDetector0Simple,"FG_0S","Simplified version of FG_0"}, + {cvCreateFGDetector1,"FG_1","Adaptive background mixture models for real-time tracking. CVPR1999"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB DETECTION modules: */ +typedef struct DefModule_BlobDetector +{ + CvBlobDetector* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobDetector; + +DefModule_BlobDetector BlobDetector_Modules[] = +{ + {cvCreateBlobDetectorCC,"BD_CC","Detect new blob by tracking CC of FG mask"}, + {cvCreateBlobDetectorSimple,"BD_Simple","Detect new blob by uniform moving of connected components of FG mask"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB TRACKING modules: */ +typedef struct DefModule_BlobTracker +{ + CvBlobTracker* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobTracker; + +DefModule_BlobTracker BlobTracker_Modules[] = +{ + {cvCreateBlobTrackerCCMSPF,"CCMSPF","connected component tracking and MSPF resolver for collision"}, + {cvCreateBlobTrackerCC,"CC","Simple connected component tracking"}, + {cvCreateBlobTrackerMS,"MS","Mean shift algorithm "}, + {cvCreateBlobTrackerMSFG,"MSFG","Mean shift algorithm with FG mask using"}, + {cvCreateBlobTrackerMSPF,"MSPF","Particle filtering based on MS weight"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB TRAJECTORY GENERATION modules: */ +typedef struct DefModule_BlobTrackGen +{ + CvBlobTrackGen* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobTrackGen; + +DefModule_BlobTrackGen BlobTrackGen_Modules[] = +{ + {cvCreateModuleBlobTrackGenYML,"YML","Generate track record in YML format as synthetic video data"}, + {cvCreateModuleBlobTrackGen1,"RawTracks","Generate raw track record (x,y,sx,sy),()... in each line"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB TRAJECTORY POST PROCESSING modules: */ +typedef struct DefModule_BlobTrackPostProc +{ + CvBlobTrackPostProc* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobTrackPostProc; + +DefModule_BlobTrackPostProc BlobTrackPostProc_Modules[] = +{ + {cvCreateModuleBlobTrackPostProcKalman,"Kalman","Kalman filtering of blob position and size"}, + {NULL,"None","No post processing filter"}, +// {cvCreateModuleBlobTrackPostProcTimeAverRect,"TimeAverRect","Average by time using rectangle window"}, +// {cvCreateModuleBlobTrackPostProcTimeAverExp,"TimeAverExp","Average by time using exponential window"}, + {NULL,NULL,NULL} +}; + +/* List of BLOB TRAJECTORY ANALYSIS modules: */ +CvBlobTrackAnalysis* cvCreateModuleBlobTrackAnalysisDetector(); + +typedef struct DefModule_BlobTrackAnalysis +{ + CvBlobTrackAnalysis* (*create)(); + const char* nickname; + const char* description; +} DefModule_BlobTrackAnalysis; + +DefModule_BlobTrackAnalysis BlobTrackAnalysis_Modules[] = +{ + {cvCreateModuleBlobTrackAnalysisHistPVS,"HistPVS","Histogram of 5D feature vector analysis (x,y,vx,vy,state)"}, + {NULL,"None","No trajectory analiser"}, + {cvCreateModuleBlobTrackAnalysisHistP,"HistP","Histogram of 2D feature vector analysis (x,y)"}, + {cvCreateModuleBlobTrackAnalysisHistPV,"HistPV","Histogram of 4D feature vector analysis (x,y,vx,vy)"}, + {cvCreateModuleBlobTrackAnalysisHistSS,"HistSS","Histogram of 4D feature vector analysis (startpos,endpos)"}, + {cvCreateModuleBlobTrackAnalysisTrackDist,"TrackDist","Compare tracks directly"}, + {cvCreateModuleBlobTrackAnalysisIOR,"IOR","Integrator (by OR operation) of several analysers "}, + {NULL,NULL,NULL} +}; diff --git a/src/pix_opencv.cc b/src/pix_opencv.cc new file mode 100644 index 0000000..4d3eff8 --- /dev/null +++ b/src/pix_opencv.cc @@ -0,0 +1,38 @@ +#include "m_pd.h" + +extern "C" { + +typedef struct pix_opencv +{ + t_object x_ob; +} t_pix_opencv; + +t_class *pix_opencv_class; + + /* this is called when a new "pix_opencv" object is created. */ +void *pix_opencv_new(void) +{ + t_pix_opencv *x = (t_pix_opencv *)pd_new(pix_opencv_class); + return (void *)x; +} + +void pix_opencv_setup(void) +{ + verbose(-1,"pix_opencv %s library by Antoine Villeret 2012-2014",VERSION); + verbose(-1,"\tbased on work by Yves Degoyon and Lluis Gomez i Bigorda"); + verbose(-1,"\tbuilt on %s",__DATE__); +#if HAVE_LIBOPENCV_NONFREE + verbose(-1,"\twith non-free features"); +#else + verbose(-1,"\twithout non-free features"); +#endif +#ifdef HAVE_FACETRACKER + verbose(-1,"\twith FaceTracker."); +#else + verbose(-1,"\tand without FaceTracker."); +#endif + pix_opencv_class = class_new(gensym("pix_opencv"), (t_newmethod)pix_opencv_new, 0, + sizeof(t_pix_opencv), 0, (t_atomtype) 0); +} + +} // extern "C" diff --git a/src/pix_opencv_athreshold.cc b/src/pix_opencv_athreshold.cc new file mode 100644 index 0000000..a4f6e15 --- /dev/null +++ b/src/pix_opencv_athreshold.cc @@ -0,0 +1,261 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#if HAVE_LIBOPENCV_LEGACY + +#include "pix_opencv_athreshold.h" + +CPPEXTERN_NEW(pix_opencv_athreshold) + +///////////////////////////////////////////////////////// +// +// pix_opencv_athreshold +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_athreshold :: pix_opencv_athreshold() +{ + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("max_value")); + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("blocksize")); + + max_value = 255; + x_threshold_mode = 0; + x_threshold_method = CV_ADAPTIVE_THRESH_MEAN_C; + x_blocksize = 3; + x_dim = 0; + + comp_xsize=320; + comp_ysize=240; + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_athreshold :: ~pix_opencv_athreshold() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_athreshold :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgba ) + { + cvReleaseImage(&rgba); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + } + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + } + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor(rgba, gray, CV_BGRA2GRAY); + + // Applies fixed-level thresholding to single-channel array. + switch(x_threshold_mode) { + case 0: + cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY, x_blocksize, x_dim); + break; + case 1: + cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY_INV, x_blocksize, x_dim); + break; + } + + cvCvtColor(gray, rgba, CV_GRAY2BGRA); + //copy back the processed frame to image + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_athreshold :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgb ) + { + cvReleaseImage(&rgba); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + } + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + // Applies fixed-level thresholding to single-channel array. + switch(x_threshold_mode) { + case 0: + cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY, x_blocksize, x_dim); + break; + case 1: + cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY_INV, x_blocksize, x_dim); + break; + } + + cvCvtColor(gray, rgb, CV_GRAY2BGR); + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_athreshold :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_athreshold : yuv format not supported" ); +} + +void pix_opencv_athreshold :: processGrayImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgb ) + { + cvReleaseImage(&rgba); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + } + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + // Applies fixed-level thresholding to single-channel array. + switch(x_threshold_mode) { + case 0: + cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY, x_blocksize, x_dim); + break; + case 1: + cvAdaptiveThreshold(gray, gray, (float)max_value, x_threshold_method, CV_THRESH_BINARY_INV, x_blocksize, x_dim); + break; + } + + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); +} + +void pix_opencv_athreshold :: floatMaxValueMess (float maxvalue) +{ + if ( (int)maxvalue>0 ) max_value = (int)maxvalue; +} + +void pix_opencv_athreshold :: floatModeMess (float mode) +{ + if ( ( (int)mode==0 ) || ( (int)mode==1 ) ) x_threshold_mode = (int)mode; +} + +void pix_opencv_athreshold :: floatMethodMess (float method) +{ + if ( (int)method==CV_ADAPTIVE_THRESH_MEAN_C ) x_threshold_method = CV_ADAPTIVE_THRESH_MEAN_C; + if ( (int)method==CV_ADAPTIVE_THRESH_GAUSSIAN_C ) x_threshold_method = CV_ADAPTIVE_THRESH_GAUSSIAN_C; +} + +void pix_opencv_athreshold :: floatBlockSizeMess (float blocksize) +{ + if ( ( (int)blocksize>=3 ) && ( (int)(blocksize+1)%2 == 0 ) ) + { + x_blocksize = (int)blocksize; + } +} + +void pix_opencv_athreshold :: floatDimMess (float dim) +{ + if ( (int)dim>0 ) x_dim = (int)dim; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_athreshold :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatModeMessCallback, + gensym("mode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatMethodMessCallback, + gensym("method"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatMaxValueMessCallback, + gensym("max_value"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatBlockSizeMessCallback, + gensym("blocksize"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_athreshold::floatDimMessCallback, + gensym("dim"), A_FLOAT, A_NULL); +} + +void pix_opencv_athreshold :: floatModeMessCallback(void *data, t_floatarg mode) +{ + GetMyClass(data)->floatModeMess((float)mode); +} + +void pix_opencv_athreshold :: floatMethodMessCallback(void *data, t_floatarg method) +{ + GetMyClass(data)->floatMethodMess((float)method); +} + +void pix_opencv_athreshold :: floatMaxValueMessCallback(void *data, t_floatarg maxvalue) +{ + GetMyClass(data)->floatMaxValueMess((float)maxvalue); +} + +void pix_opencv_athreshold :: floatBlockSizeMessCallback(void *data, t_floatarg blocksize) +{ + GetMyClass(data)->floatBlockSizeMess((float)blocksize); +} + +void pix_opencv_athreshold :: floatDimMessCallback(void *data, t_floatarg dim) +{ + GetMyClass(data)->floatDimMess((float)dim); +} +#endif /*HAVE_LIBOPENCV_LEGACY*/ diff --git a/src/pix_opencv_athreshold.h b/src/pix_opencv_athreshold.h new file mode 100644 index 0000000..99b9a40 --- /dev/null +++ b/src/pix_opencv_athreshold.h @@ -0,0 +1,95 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Adaptive threshold object + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_ATHRESHOLD_H_ +#define INCLUDE_PIX_OPENCV_ATHRESHOLD_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_athreshold + + Adaptive threshold object + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_athreshold : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_athreshold, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_athreshold(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_athreshold(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatMaxValueMess(float maxvalue); + void floatModeMess(float mode); + void floatMethodMess(float method); + void floatBlockSizeMess(float blocksize); + void floatDimMess(float dim); + + // The new edge threshold + int max_value; + int x_threshold_mode; + int x_threshold_method; + int x_blocksize; + int x_dim; + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + ////////// + // Static member functions + static void floatMaxValueMessCallback(void *data, float maxvalue); + static void floatModeMessCallback(void *data, float mode); + static void floatMethodMessCallback(void *data, float method); + static void floatBlockSizeMessCallback(void *data, float blocksize); + static void floatDimMessCallback(void *data, float dim); + + ///////// + // IplImage needed + IplImage *rgba, *rgb, *gray; +}; + +#endif // for header file diff --git a/src/pix_opencv_backgroundsubtractor.cc b/src/pix_opencv_backgroundsubtractor.cc new file mode 100644 index 0000000..bf079b4 --- /dev/null +++ b/src/pix_opencv_backgroundsubtractor.cc @@ -0,0 +1,374 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) +// Template for pix_opencv class + +#if HAVE_BGSUB +#include "pix_opencv_backgroundsubtractor.h" + +using namespace cv; +using namespace std; + +CPPEXTERN_NEW(pix_opencv_backgroundsubtractor); + +///////////////////////////////////////////////////////// +// +// pix_opencv_backgroundsubtractor +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_backgroundsubtractor :: pix_opencv_backgroundsubtractor() : m_forceCPU(false) { + initModule_video(); + setUseOptimized(true); + setNumThreads(8); + + vector algorithms; + Algorithm::getList(algorithms); + string model = "BackgroundSubtractor."; + + for (size_t i=0; i < algorithms.size(); i++){ + if ( model.compare(0,model.length(),algorithms[i],0,model.length()) == 0 ){ // && npos >= model.length() ){ + m_bgsub_algos.push_back(algorithms[i]); + } + } + + if ( m_bgsub_algos.size() == 0){ + throw(GemException("Can't find any background subtractor algorithm.")); + } + + if ( m_bgsub_algos[0] == "BackgroundSubtractor.GMG"){ + m_fgbgGMG = Algorithm::create(m_bgsub_algos[0]); + } else { + m_fgbgMOG = Algorithm::create(m_bgsub_algos[0]); + } + if (m_fgbgMOG.empty() && m_fgbgGMG.empty()) + { + throw(GemException("Failed to create BackgroundSubtractor Algorithm.")); + } + + m_dataout = outlet_new(this->x_obj, 0); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_backgroundsubtractor :: ~pix_opencv_backgroundsubtractor() +{ +} + +///////////////////////////////////////////////////////// +// StartRendering +// +///////////////////////////////////////////////////////// + +void pix_opencv_backgroundsubtractor :: startRendering(){ + +#if HAVE_LIBOPENCV_CL + ocl::DevicesInfo devicesInfo; + ocl::getOpenCLDevices(devicesInfo); + post("Found %d OpenCL device(s).", devicesInfo.size()); + for ( size_t i = 0; i < devicesInfo.size(); i++){ + post("%s %s", devicesInfo[i]->deviceVendor.c_str(), devicesInfo[i]->deviceName.c_str()); + } + + if ( devicesInfo.size() == 0 || m_forceCPU ){ + post("can't find OpenCL device, switch to CPU mode"); + m_gpuMode = false; + } else { + m_gpuMode = true; + } +#else + verbose(2,"no OpenCL support, it could be very slow !"); +#endif + + m_rendering = true; +} + +void pix_opencv_backgroundsubtractor :: stopRendering(){ + m_rendering = false; + + //~ this crashes when no OCL device is used + //~m_oclMOG.release(); + //~m_oclMOG2.release(); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_backgroundsubtractor :: processImage(imageStruct &image) +{ + Mat imgMat, input; + if ( image.csize == 1 ){ + imgMat = Mat( image.ysize, image.xsize, CV_8UC1, image.data, image.csize*image.xsize); // just transform imageStruct to cv::Mat without copying data + input = imgMat; + } else if ( image.csize == 4 ){ + imgMat = Mat( image.ysize, image.xsize, CV_8UC4, image.data, image.csize*image.xsize); // just transform imageStruct to cv::Mat without copying data + cvtColor(imgMat, input, CV_RGBA2RGB); + } else { + verbose(1,"suport only RGBA or GRAY image"); + return; + } + +#if HAVE_LIBOPENCV_CL + if ( m_gpuMode ) { + try { + d_input = input; + if ( m_algoName == "MOG" ){ + m_oclMOG( d_input, d_fgmask ); + } else if ( m_algoName == "MOG2" ){ + m_oclMOG2( d_input, d_fgmask, 0.01f ); + } else { + error("there is no GPU version of algo %s", m_algoName.c_str()); + m_gpuMode = false; + return; + } + d_fgmask.download(m_fgmask); + } catch (cv::Exception& e) { + error("can't use OpenCL, do you have OpenCL driver installed ?"); + error("error %d : %s", e.code, e.err.c_str()); + m_gpuMode = false; + return; + } +#else + if ( 0 ) { +#endif /* HAVE_LIBOPENCV_CL */ + } else if (!m_fgbgMOG.empty()){ + (*m_fgbgMOG)(input, m_fgmask); + } else if (!m_fgbgGMG.empty()) { + (*m_fgbgGMG)(input, m_fgmask); + } else { + error("Please load a valid algorithm before processing."); + return; + } + + if ( image.csize == 1 ){ // if grayscale, send out fgmask + image.data = m_fgmask.data; + } else { // else, set only alpha channel + std::vector split; + cv::split(imgMat, split); + split.pop_back(); + split.push_back(m_fgmask); // add fgmask as alpha channel + cv::merge(split, imgMat); + } +} + +void pix_opencv_backgroundsubtractor :: paramHelpMess(){ + vector paramList; + if (!m_fgbgMOG.empty()){ + m_fgbgMOG->getParams(paramList); + post("%s parameters help :",m_fgbgMOG->name().c_str()); + for (size_t i=0; i < paramList.size(); i++){ + post("%s : %s", paramList[i].c_str(), m_fgbgMOG->paramHelp(paramList[i]).c_str()); + } + } else if (!m_fgbgGMG.empty()) { + m_fgbgGMG->getParams(paramList); + post("%s parameters help :",m_fgbgGMG->name().c_str()); + for (size_t i=0; i < paramList.size(); i++){ + post("%s : %s", paramList[i].c_str(), m_fgbgGMG->paramHelp(paramList[i]).c_str()); + } + } else { + error("Please load a valid algorithm before requesting paramHelp."); + return; + } +} + +void pix_opencv_backgroundsubtractor :: enumParamsMess(){ + vector paramList; + if (!m_fgbgMOG.empty()){ + m_fgbgMOG->getParams(paramList); + } else if ( !m_fgbgGMG.empty() ){ + m_fgbgGMG->getParams(paramList); + } else { + error("please choose an algo before enumerating parameters."); + return; + } + + t_atom a_prop[2]; + SETFLOAT(a_prop, paramList.size()); + outlet_anything( m_dataout, gensym("params"), 1, a_prop); + + for (size_t i=0; i < paramList.size(); i++){ + SETSYMBOL(a_prop, gensym(paramList[i].c_str())); + SETFLOAT(a_prop+1,0.); + outlet_anything(m_dataout, gensym("paramList"), 2, a_prop); + } +} + +void pix_opencv_backgroundsubtractor :: setParamMess(t_symbol *s, int argc, t_atom* argv){ + if ( argc < 2 ){ + error("setParam needs 2 args: paramName, value"); + return; + } + + if ( argv[0].a_type != A_SYMBOL ){ + error("1st argument should be paramName (symbol)"); + return; + } + t_symbol* paramName = atom_getsymbol(argv); + + if ( argv[1].a_type != A_FLOAT ){ + error("currently support only float parameter values"); // I don't know the signification of output of paramType(), so only support float + } + + vector paramList; + if (!m_fgbgMOG.empty()){ + m_fgbgMOG->getParams(paramList); + } else if ( !m_fgbgGMG.empty() ){ + m_fgbgGMG->getParams(paramList); + } else { + error("please choose an algo before enumerating parameters."); + return; + } + size_t i; + for (i=0; i < paramList.size(); i++){ + if ( paramList[i] == paramName->s_name ) break; + } + if ( i == paramList.size()){ + error("can't find parameter %s", paramName->s_name); + return; + } + + float val = atom_getfloat(argv+1); + try { + if (!m_fgbgMOG.empty()){ + m_fgbgMOG->set(paramList[i], val); + } else if ( !m_fgbgGMG.empty() ) { + m_fgbgGMG->set(paramList[i], val); + } + } catch (cv::Exception& e) { + error("can't set parameter %s value",paramList[i].c_str()); + error("error %d : %s", e.code, e.err.c_str()); + return; + } +} + +void pix_opencv_backgroundsubtractor :: getParamMess(t_symbol *paramName){ + vector paramList; + if (!m_fgbgMOG.empty()){ + m_fgbgMOG->getParams(paramList); + } else if ( !m_fgbgGMG.empty() ){ + m_fgbgGMG->getParams(paramList); + } else { + error("please choose an algo before enumerating parameters."); + return; + } + size_t i; + for (i=0; i < paramList.size(); i++){ + if ( paramList[i] == paramName->s_name ) break; + } + if ( i == paramList.size()){ + error("can't find parameter %s", paramName->s_name); + return; + } + double val=0; + try { + if (!m_fgbgMOG.empty()){ + val = m_fgbgMOG->get(paramList[i]); + } else if ( !m_fgbgGMG.empty() ){ + val = m_fgbgGMG->get(paramList[i]); + } + } catch (cv::Exception& e) { + error("can't get parameter %s value",paramList[i].c_str()); + error("error %d : %s", e.code, e.err.c_str()); + return; + } + + t_atom a_val[2]; + SETSYMBOL(a_val, paramName); + SETFLOAT(a_val+1, val); + outlet_anything(m_dataout, gensym("param"), 2, a_val); + + +} + +void pix_opencv_backgroundsubtractor :: algoMess(t_symbol *s, int argc, t_atom* argv){ + if ( argc == 0 ) { + t_atom a_prop[2]; + SETFLOAT(a_prop, m_bgsub_algos.size()); + outlet_anything( m_dataout, gensym("algos"), 1, a_prop); + + for (size_t i=0; i < m_bgsub_algos.size(); i++){ + SETFLOAT(a_prop,i); + SETSYMBOL(a_prop+1, gensym(m_bgsub_algos[i].c_str())); + outlet_anything(m_dataout, gensym("algoList"), 2, a_prop); + } + return; + } + + if ( !m_fgbgMOG.empty() ) m_fgbgMOG.release(); + if ( !m_fgbgGMG.empty() ) m_fgbgGMG.release(); + + m_algoName = "NONE"; + + if ( argv[0].a_type == A_FLOAT ){ + int id_max = m_bgsub_algos.size()-1; + int id = atom_getfloat(argv); + if ( id > id_max ) id = id_max; + if ( m_bgsub_algos[id] == "BackgroundSubtractor.GMG"){ + m_fgbgGMG = Algorithm::create(m_bgsub_algos[id]); + } else { + m_fgbgMOG = Algorithm::create(m_bgsub_algos[id]); + } + if (m_fgbgMOG.empty() && m_fgbgGMG.empty()) + { + error("Failed to create %s Algorithm.", m_bgsub_algos[id].c_str()); + } else { + verbose(2,"bgsub %d : \"%s\" created.",id, m_bgsub_algos[id].c_str()); + m_algoName = m_bgsub_algos[id].substr(21); + } + } else if ( argv[0].a_type == A_SYMBOL ) { + t_symbol* algoSym = atom_getsymbol(argv); + string algo = algoSym->s_name; + if ( algo == "BackgroundSubtractor.GMG"){ + m_fgbgGMG = Algorithm::create(algo); + } else { + m_fgbgMOG = Algorithm::create(algo); + } + if (m_fgbgMOG.empty() && m_fgbgGMG.empty()) + { + error("Failed to create %s Algorithm.", algo.c_str()); + } else { + verbose(2,"bgsub : \"%s\" created.",algo.c_str()); + m_algoName = algo.substr(21); + } + } + if ( !m_forceCPU) m_gpuMode=true; +} + +void pix_opencv_backgroundsubtractor :: cpuModeMess( int val ){ + m_forceCPU = val > 0; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_backgroundsubtractor :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG(classPtr, "algo", algoMess); + CPPEXTERN_MSG0(classPtr, "enumParams", enumParamsMess); + CPPEXTERN_MSG(classPtr, "setParam", setParamMess); + CPPEXTERN_MSG1(classPtr, "getParam", getParamMess, t_symbol*); + CPPEXTERN_MSG0(classPtr, "paramHelp", paramHelpMess); + CPPEXTERN_MSG1(classPtr, "cpuMode", cpuModeMess, int); +} +#endif /* HAVE_BGSUB */ + diff --git a/src/pix_opencv_backgroundsubtractor.h b/src/pix_opencv_backgroundsubtractor.h new file mode 100644 index 0000000..cffa9b2 --- /dev/null +++ b/src/pix_opencv_backgroundsubtractor.h @@ -0,0 +1,96 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Threshold filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_BACKGROUNDSUBTRACTOR_H_ +#define INCLUDE_PIX_OPENCV_BACKGROUNDSUBTRACTOR_H_ + +#include "opencv2/opencv.hpp" +#if HAVE_LIBOPENCV_CL +#include "opencv2/ocl/ocl.hpp" +#endif /* HAVE_LIBOPENCV_CL */ + +#include "Base/GemPixObj.h" +#include +#include "Gem/Exception.h" + +#include + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_backgroundsubtractor + + generic dynamic background subtractor, should implement severals algo +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_backgroundsubtractor: public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_backgroundsubtractor, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_backgroundsubtractor(); + + protected: + + // Message handling + void enumParamsMess(); + void setParamMess(t_symbol *s, int argc, t_atom* argv); + void getParamMess(t_symbol *paramName); + void paramHelpMess(); + void algoMess(t_symbol *s, int argc, t_atom* argv); + void cpuModeMess(int val); + + + ////////// + // Destructor + virtual ~pix_opencv_backgroundsubtractor(); + + ////////// + // Do the processing + virtual void processImage(imageStruct &image); + virtual void startRendering(); + virtual void stopRendering(); + + private: + cv::Ptr m_fgbgMOG; + cv::Ptr m_fgbgGMG; + +#if HAVE_LIBOPENCV_CL + cv::ocl::MOG m_oclMOG; + cv::ocl::MOG2 m_oclMOG2; + //~ cv::ocl::GMG m_oclGMG; + cv::ocl::oclMat d_input, d_fgmask; +#endif /* HAVE_LIBOPENCV_CL */ + + cv::Mat m_fgmask, m_segm; + + std::string m_algoName; + + t_outlet *m_dataout; + + t_float m_threshold, m_initFrames; + bool m_rendering, m_gpuMode, m_forceCPU; + + std::vector m_bgsub_algos; + +}; +#endif // for header file diff --git a/src/pix_opencv_bgstats.cc b/src/pix_opencv_bgstats.cc new file mode 100644 index 0000000..c1fe298 --- /dev/null +++ b/src/pix_opencv_bgstats.cc @@ -0,0 +1,251 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_bgstats.h" + +CPPEXTERN_NEW(pix_opencv_bgstats) + +///////////////////////////////////////////////////////// +// +// pix_opencv_bgstats +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_bgstats :: pix_opencv_bgstats() +{ + comp_xsize=320; + comp_ysize=240; + + x_erode = 1; + x_minarea = CV_BGFG_FGD_MINAREA; + x_alpha = CV_BGFG_FGD_ALPHA_1; + x_frames = 0; + + foreground = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + incoming = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + x_model = NULL; + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_bgstats :: ~pix_opencv_bgstats() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&foreground); + cvReleaseImage(&incoming); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_bgstats :: processRGBAImage(imageStruct &image) +{ + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + x_frames = 0; + + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&foreground); + cvReleaseImage(&incoming); + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + + incoming = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + foreground = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + cvReleaseBGStatModel( &x_model ); + x_model = NULL; + + } + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor(rgba, incoming, CV_BGRA2BGR); + + if ( x_model == NULL ) + { + x_model = cvCreateFGDStatModel( incoming ); + } + else if ( x_frames == 5 ) + { + // strange model stabilize after a few frames + //cvReleaseBGStatModel( &x_model ); + //x_model = cvCreateFGDStatModel( incoming, &x_modelparams ); + } + else + { + cvUpdateBGStatModel( incoming, x_model ); + } + + x_frames++; + cvCvtColor(x_model->foreground, rgba, CV_GRAY2BGRA); + + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_bgstats :: processRGBImage(imageStruct &image) +{ + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + x_frames = 0; + + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&foreground); + cvReleaseImage(&incoming); + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + + incoming = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + foreground = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + cvReleaseBGStatModel( &x_model ); + x_model = NULL; + } + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + memcpy( incoming->imageData, image.data, image.xsize*image.ysize*3 ); + + if ( x_model == NULL ) + { + x_model = cvCreateFGDStatModel( incoming ); + } + else if ( x_frames == 5 ) + { + // strange model stabilize after a few frames + //cvReleaseBGStatModel( &x_model ); + //x_model = cvCreateFGDStatModel( incoming, &x_modelparams ); + } + else + { + cvUpdateBGStatModel( incoming, x_model ); + } + + x_frames++; + cvCvtColor(x_model->foreground, rgb, CV_GRAY2BGR); + + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); + +} + +void pix_opencv_bgstats :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_bgstats : yuv format not supported" ); +} + +void pix_opencv_bgstats :: processGrayImage(imageStruct &image) +{ + post( "pix_opencv_bgstats : gray format not supported" ); +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_bgstats :: floatMinAreaMess (float minarea) +{ + if ( ( (int)minarea>0 ) && ( x_model != NULL ) ) + { + x_minarea = minarea; + } +} + +void pix_opencv_bgstats :: floatErodeMess(float erode) +{ + if ( ( (int)erode>0 ) && ( x_model != NULL ) ) + { + x_erode = (int)erode; + } +} + +void pix_opencv_bgstats :: floatAlphaMess(float alpha) +{ + if ( ( alpha>0.0 ) && ( x_model != NULL ) ) + { + x_alpha = alpha; + } +} + +void pix_opencv_bgstats :: resetMess () +{ + if ( x_model != NULL ) + { + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_bgstats :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_bgstats::floatMinAreaMessCallback, + gensym("minarea"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_bgstats::floatErodeMessCallback, + gensym("erode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_bgstats::floatAlphaMessCallback, + gensym("alpha"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_bgstats::resetMessCallback, + gensym("reset"), A_NULL); + +} + +void pix_opencv_bgstats :: floatMinAreaMessCallback(void *data, t_floatarg minarea) +{ + GetMyClass(data)->floatMinAreaMess((float)minarea); +} + +void pix_opencv_bgstats :: floatErodeMessCallback(void *data, t_floatarg erode) +{ + GetMyClass(data)->floatErodeMess((float)erode); +} + +void pix_opencv_bgstats :: floatAlphaMessCallback(void *data, t_floatarg alpha) +{ + GetMyClass(data)->floatAlphaMess((float)alpha); +} + +void pix_opencv_bgstats :: resetMessCallback(void *data) +{ + GetMyClass(data)->resetMess(); +} diff --git a/src/pix_opencv_bgstats.h b/src/pix_opencv_bgstats.h new file mode 100644 index 0000000..199fe0d --- /dev/null +++ b/src/pix_opencv_bgstats.h @@ -0,0 +1,100 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Statistical background substraction + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_BGSTATS_H +#define INCLUDE_PIX_OPENCV_BGSTATS_H + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/video/background_segm.hpp" + +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_bgstats + + Statistical background substraction + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_bgstats : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_bgstats, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_bgstats(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_bgstats(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatMinAreaMess(float minarea); + void floatErodeMess(float erode); + void floatAlphaMess(float alpha); + void resetMess(void); + + // The new threshold + int x_erode; + float x_minarea; + float x_alpha; + int x_frames; + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + ////////// + // Static member functions + static void floatMinAreaMessCallback(void *data, float minarea); + static void floatErodeMessCallback(void *data, float erode); + static void floatAlphaMessCallback(void *data, float alpha); + static void resetMessCallback(void *data); + + ///////// + // IplImage needed + IplImage *rgba, *rgb, *gray; + IplImage *foreground, *incoming; + + // Stat background model data + CvBGStatModel *x_model; + CvFGDStatModelParams x_modelparams; + +}; + +#endif // for header file diff --git a/src/pix_opencv_bgsubstract.cc b/src/pix_opencv_bgsubstract.cc new file mode 100644 index 0000000..ca3bb03 --- /dev/null +++ b/src/pix_opencv_bgsubstract.cc @@ -0,0 +1,258 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_bgsubstract.h" + +CPPEXTERN_NEW(pix_opencv_bgsubstract) + +///////////////////////////////////////////////////////// +// +// pix_opencv_bgsubstract +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_bgsubstract :: pix_opencv_bgsubstract() +{ + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); + x_threshold = 13; + x_set = 1; + comp_xsize = 0; + comp_ysize = 0; + orig = NULL; + gray = NULL; + rgb = NULL; + grayLow = NULL; + grayUp = NULL; + prev_gray = NULL; + diff_8U = NULL; +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_bgsubstract :: ~pix_opencv_bgsubstract() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + cvReleaseImage(&prev_gray); + cvReleaseImage(&grayLow); + cvReleaseImage(&grayUp); + cvReleaseImage(&diff_8U); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_bgsubstract :: processRGBAImage(imageStruct &image) +{ + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + cvReleaseImage(&prev_gray); + cvReleaseImage(&grayLow); + cvReleaseImage(&grayUp); + cvReleaseImage(&diff_8U); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + // Create the output images with new sizes + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + grayLow = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + grayUp = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + prev_gray = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); + diff_8U = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to grayscale + cvCvtColor(orig, gray, CV_BGRA2GRAY); + + if (x_set) { + memcpy( prev_gray->imageData, gray->imageData, image.xsize*image.ysize ); + x_set=0; + } + + cvSubS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayLow,NULL); + cvAddS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayUp,NULL); + cvInRange (gray, grayLow, grayUp, diff_8U); + + cvNot (diff_8U,diff_8U); + + cvCvtColor(diff_8U, orig, CV_GRAY2BGRA); + + //copy back the processed frame to image + memcpy( image.data, orig->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_bgsubstract :: processRGBImage(imageStruct &image) +{ + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + cvReleaseImage(&prev_gray); + cvReleaseImage(&grayLow); + cvReleaseImage(&grayUp); + cvReleaseImage(&diff_8U); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + // Create the output images with new sizes + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + grayLow = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + grayUp = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + prev_gray = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); + diff_8U = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to grayscale + cvCvtColor(rgb, gray, CV_BGRA2GRAY); + + if (x_set) { + memcpy( prev_gray->imageData, gray->imageData, image.xsize*image.ysize ); + x_set=0; + } + + cvSubS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayLow,NULL); + cvAddS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayUp,NULL); + cvInRange (gray, grayLow, grayUp, diff_8U); + + cvNot (diff_8U,diff_8U); + + cvCvtColor(diff_8U, rgb, CV_GRAY2BGR); + + //copy back the processed frame to image + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); + +} + +void pix_opencv_bgsubstract :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_bgsubstract : yuv format not supported" ); +} + +void pix_opencv_bgsubstract :: processGrayImage(imageStruct &image) +{ + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + cvReleaseImage(&prev_gray); + cvReleaseImage(&grayLow); + cvReleaseImage(&grayUp); + cvReleaseImage(&diff_8U); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + // Create the output images with new sizes + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + grayLow = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + grayUp = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + prev_gray = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); + diff_8U = cvCreateImage(cvSize(orig->width,orig->height), 8, 1); + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + + if (x_set) { + memcpy( prev_gray->imageData, gray->imageData, image.xsize*image.ysize ); + x_set=0; + } + + cvSubS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayLow,NULL); + cvAddS (prev_gray,cvScalar(x_threshold,x_threshold,x_threshold,x_threshold),grayUp,NULL); + cvInRange (gray, grayLow, grayUp, diff_8U); + + cvNot (diff_8U,diff_8U); + + //copy back the processed frame to image + memcpy( image.data, diff_8U->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_bgsubstract :: floatThreshMess (float x_threshold) +{ + this->x_threshold = (int)x_threshold; +} +void pix_opencv_bgsubstract :: SetMess () +{ + this->x_set = 1; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_bgsubstract :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_bgsubstract::floatTreshMessCallback, + gensym("ft1"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_bgsubstract::SetMessCallback, + gensym("set"), A_NULL); +} +void pix_opencv_bgsubstract :: floatTreshMessCallback(void *data, t_floatarg x_threshold) +{ + GetMyClass(data)->floatThreshMess((float)x_threshold); +} +void pix_opencv_bgsubstract :: SetMessCallback(void *data) +{ + GetMyClass(data)->SetMess(); +} diff --git a/src/pix_opencv_bgsubstract.h b/src/pix_opencv_bgsubstract.h new file mode 100644 index 0000000..5aa43cd --- /dev/null +++ b/src/pix_opencv_bgsubstract.h @@ -0,0 +1,86 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Change pix to greyscale + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_BGSUBSTRACT_H_ +#define INCLUDE_PIX_OPENCV_BGSUBSTRACT_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_bgsubstract + + Change pix to greyscale + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_bgsubstract : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_bgsubstract, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_bgsubstract(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_bgsubstract(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatThreshMess(float x_threshold); + void SetMess(); + // The new threshold + int x_threshold; + int x_set; + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + ////////// + // Static member functions + static void floatTreshMessCallback(void *data, t_floatarg thresh_value); + static void SetMessCallback(void *data); + + ///////// + // IplImage needed + IplImage *orig, *rgb, *gray, *prev_gray, *grayLow, *grayUp, *diff_8U; + +}; + +#endif // for header file diff --git a/src/pix_opencv_blobtrack.cc b/src/pix_opencv_blobtrack.cc new file mode 100644 index 0000000..909dd76 --- /dev/null +++ b/src/pix_opencv_blobtrack.cc @@ -0,0 +1,693 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) +// mainly copy and paste from blobtrack_sample.cpp provided by OpenCV 2.3 SVN rev7875 + +#include "pix_opencv_blobtrack.h" + + + +CPPEXTERN_NEW(pix_opencv_blobtrack) + +///////////////////////////////////////////////////////// +// +// pix_opencv_blobtrack +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_blobtrack :: pix_opencv_blobtrack() : m_fg_name(FGDetector_Modules[0].nickname), \ + m_bd_name(BlobDetector_Modules[0].nickname), \ + m_bt_name(BlobTracker_Modules[0].nickname), \ + m_btpp_name(BlobTrackPostProc_Modules[0].nickname), \ + m_bta_name(BlobTrackAnalysis_Modules[0].nickname), \ + m_bt_corr("none"), \ + m_FGTrainFrames(6), \ + m_monitoring_stage(0), \ + m_areaThreshold(0.), \ + m_tracker(NULL) +{ + m_param.pBT=NULL; + m_param.pBD=NULL; + m_param.pBTGen=NULL; + m_param.pBTA=NULL; + m_param.pFG=NULL; + m_dataout = outlet_new(this->x_obj, 0); + setupModules(); + createModules(); + //~printParamsMess(); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_blobtrack :: ~pix_opencv_blobtrack() +{ + releaseModules(); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_blobtrack :: processRGBAImage(imageStruct &image) +{ + cv::Mat imgMat( image.ysize, image.xsize, CV_8UC4, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data + IplImage img = imgMat; // convert cv::Mat to IplImage + RunBlobTrackingAuto( &img ); +} + +void pix_opencv_blobtrack :: processRGBImage(imageStruct &image) { + cv::Mat imgMat( image.ysize, image.xsize, CV_8UC3, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data + IplImage img = imgMat; + RunBlobTrackingAuto( &img ); +} + +void pix_opencv_blobtrack :: processYUVImage(imageStruct &image) { + + error("YVU format not supported"); +} + +void pix_opencv_blobtrack :: processGrayImage(imageStruct &image) +{ + cv::Mat imgMat( image.ysize, image.xsize, CV_8UC1, image.data, image.csize*image.xsize); // convert imageStruct to cv::Mat without copying data + IplImage img = imgMat; // convert cv::Mat to IplImage + RunBlobTrackingAuto( &img ); +} + +void pix_opencv_blobtrack :: RunBlobTrackingAuto( IplImage* img ) +{ + IplImage* pMask = NULL; + IplImage* imgRGB = NULL; + + if ( x_size != img->width || y_size != img->height ){ + releaseModules(); + createModules(); + x_size = img->width; + y_size = img->height; + } + + imgRGB = cvCreateImage(cvSize(img->width,img->height),img->depth,3); + switch (img->nChannels){ + case 1: + cvCvtColor(img, imgRGB, CV_GRAY2RGB); + break; + case 4: + cvCvtColor(img, imgRGB, CV_RGBA2RGB); + break; + } + + /* Process: */ + m_tracker->Process(imgRGB, pMask); + + //~ t_atom blob_num; + //~ SETFLOAT(&blob_num, m_tracker->GetBlobNum()); + //~ outlet_anything(m_dataout, gensym("blobnum"), 1, &blob_num); + + int blob_num=m_tracker->GetBlobNum(); + int blobMatrixWidth=6; + int blob_atom_size = 2+blob_num*blobMatrixWidth; + + t_atom* blob_atom = new t_atom[blob_atom_size]; + SETFLOAT(&blob_atom[0], blob_num); + SETFLOAT(&blob_atom[1], blobMatrixWidth); + + for(int i=0; iGetBlob(i); + if ( blob->w*blob->h/(img->width*img->height) > m_areaThreshold ){ + SETFLOAT(&blob_atom[2+i*blobMatrixWidth], blob->ID); + SETFLOAT(&blob_atom[3+i*blobMatrixWidth], blob->x/img->width); + SETFLOAT(&blob_atom[4+i*blobMatrixWidth], blob->y/img->height); + SETFLOAT(&blob_atom[5+i*blobMatrixWidth], blob->w/img->width); + SETFLOAT(&blob_atom[6+i*blobMatrixWidth], blob->h/img->height); + SETFLOAT(&blob_atom[7+i*blobMatrixWidth], m_tracker->GetState(blob->ID)); + } + } + + outlet_anything(m_dataout, gensym("cvblob"), blob_atom_size, blob_atom); + + if(blob_atom) delete blob_atom; + blob_atom = NULL; + + if ( m_monitoring_stage == 1 ) { // show foreground + IplImage* fg = m_tracker->GetFGMask(); + switch (img->nChannels){ + case 1: + cvCopy(fg, img); + break; + case 4: + cvCvtColor(fg, img, CV_GRAY2RGBA); + break; + } + } + + if ( m_monitoring_stage == 2 ) { + /* Draw all information about test sequence: */ + char str[1024]; + int line_type = CV_AA; // Change it to 8 to see non-antialiased graphics. + CvFont font; + int i; + + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 0.7, 0.7, 0, 1, line_type ); + + for(i=m_tracker->GetBlobNum(); i>0; i--) + { + CvSize TextSize; + CvBlob* pB = m_tracker->GetBlob(i-1); + CvPoint p = cvPoint(cvRound(pB->x*256),cvRound(pB->y*256)); + CvSize s = cvSize(MAX(1,cvRound(CV_BLOB_RX(pB)*256)), MAX(1,cvRound(CV_BLOB_RY(pB)*256))); + int c = cvRound(255*m_tracker->GetState(CV_BLOB_ID(pB))); + + cvEllipse( imgRGB, + p, + s, + 0, 0, 360, + CV_RGB(c,255-c,0), cvRound(1+(3*0)/255), CV_AA, 8 ); + + p.x >>= 8; + p.y >>= 8; + s.width >>= 8; + s.height >>= 8; + sprintf(str,"%03d",CV_BLOB_ID(pB)); + cvGetTextSize( str, &font, &TextSize, NULL ); + p.y -= s.height; + cvPutText( imgRGB, str, p, &font, CV_RGB(0,255,255)); + { + const char* pS = m_tracker->GetStateDesc(CV_BLOB_ID(pB)); + + if(pS) + { + char* pStr = strdup(pS); + char* pStrFree = pStr; + + while (pStr && strlen(pStr) > 0) + { + char* str_next = strchr(pStr,'\n'); + + if(str_next) + { + str_next[0] = 0; + str_next++; + } + + p.y += TextSize.height+1; + cvPutText( imgRGB, pStr, p, &font, CV_RGB(0,255,255)); + pStr = str_next; + } + free(pStrFree); + } + } + + } /* Next blob. */; + switch (img->nChannels){ + case 1: + cvCvtColor(imgRGB, img, CV_RGB2GRAY); + break; + case 4: + cvCvtColor(imgRGB, img, CV_RGB2RGBA); + break; + } + + }/* Draw all information about test sequence. */ + cvReleaseImage(&imgRGB); + imgRGB = NULL; + +} /* RunBlobTrackingAuto */ + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_blobtrack :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG1(classPtr, "monitorStage", monitorStageMess, int); + CPPEXTERN_MSG1(classPtr, "fgTrainFrames", fgTrainFramesMess, int); + CPPEXTERN_MSG (classPtr, "getParam", getParamMess); + CPPEXTERN_MSG (classPtr, "setParam", setParamMess); + CPPEXTERN_MSG (classPtr, "getModule", getModuleMess); + CPPEXTERN_MSG (classPtr, "setModule", setModuleMess); + CPPEXTERN_MSG1 (classPtr, "areaThreshold", areaThresholdMess, t_float); +} + +///////////////////////////////////////////////////////// +// private function +// +///////////////////////////////////////////////////////// +void pix_opencv_blobtrack :: setupModules() +{ + const char* fg_name = m_fg_name.c_str(); + const char* bd_name = m_bd_name.c_str(); + const char* bt_name = m_bt_name.c_str(); + const char* btpp_name = m_btpp_name.c_str(); + const char* bta_name = m_bta_name.c_str(); + + for(m_FGModule=FGDetector_Modules; m_FGModule->nickname; ++m_FGModule) + if( fg_name && MY_STRICMP(fg_name,m_FGModule->nickname)==0 ) break; + if ( m_FGModule->nickname == NULL ){ + error("FG Module %s doesn't exist, swith to default one", fg_name); + m_FGModule=FGDetector_Modules; + } + + for(m_BDModule=BlobDetector_Modules; m_BDModule->nickname; ++m_BDModule) + if( bd_name && MY_STRICMP(bd_name,m_BDModule->nickname)==0 ) break; + if ( m_BDModule->nickname == NULL ){ + error("BD Module %s doesn't exist, swith to default one", bd_name); + m_BDModule=BlobDetector_Modules; + } + + for(m_BTModule=BlobTracker_Modules; m_BTModule->nickname; ++m_BTModule) + if( bt_name && MY_STRICMP(bt_name,m_BTModule->nickname)==0 ) break; + if ( m_BTModule->nickname == NULL ){ + error("BT Module %s doesn't exist, swith to default one", bt_name); + m_BTModule=BlobTracker_Modules; + } + + for(m_BTPostProcModule=BlobTrackPostProc_Modules; m_BTPostProcModule->nickname; ++m_BTPostProcModule) + if( btpp_name && MY_STRICMP(btpp_name,m_BTPostProcModule->nickname)==0 ) break; + if ( m_BTPostProcModule->nickname == NULL ){ + error("BTPP Module %s doesn't exist, swith to default one", btpp_name); + m_BTPostProcModule=BlobTrackPostProc_Modules; + } + + for(m_BTAnalysisModule=BlobTrackAnalysis_Modules; m_BTAnalysisModule->nickname; ++m_BTAnalysisModule) + if( bta_name && MY_STRICMP(bta_name,m_BTAnalysisModule->nickname)==0 ) break; + if ( m_BTAnalysisModule->nickname == NULL ){ + error("BTA Module %s doesn't exist, swith to default one", bta_name); + m_BTAnalysisModule=BlobTrackAnalysis_Modules; + } +} /* setupModules */ + +void pix_opencv_blobtrack :: createModules() +{ /* Create autotracker module and its components: */ + + m_param.FGTrainFrames = m_FGTrainFrames; + /* Create FG Detection module: */ + m_param.pFG = m_FGModule->create(); + if(!m_param.pFG){ + error("Can not create FGDetector module"); + return; + } + m_param.pFG->SetNickName(m_FGModule->nickname); + //~ set_params(argc, argv, m_param.pFG, "fg", m_FGModule->nickname); + /* Create Blob Entrance Detection module: */ + m_param.pBD = m_BDModule->create(); + if(!m_param.pBD){ + error("Can not create BlobDetector module"); + return; + } + m_param.pBD->SetNickName(m_BDModule->nickname); + //~ set_params(argc, argv, m_param.pBD, "bd", m_BDModule->nickname); + + /* Create blob tracker module: */ + m_param.pBT = m_BTModule->create(); + if(!m_param.pBT){ + error("Can not create BlobTracker module"); + } + m_param.pBT->SetNickName(m_BTModule->nickname); + //~ set_params(argc, argv, m_param.pBT, "bt", m_BTModule->nickname); + + /* Create blob trajectory generation module: */ + /* + m_param.pBTGen = NULL; + if(m_BTGenModule && track_name && m_BTGenModule->create) + { + m_param.pBTGen = m_BTGenModule->create(); + m_param.pBTGen->SetFileName(track_name); + } + if(m_param.pBTGen) + { + m_param.pBTGen->SetNickName(m_BTGenModule->nickname); + //~ set_params(argc, argv, m_param.pBTGen, "btgen", m_BTGenModule->nickname); + } + */ + + /* Create blob trajectory post processing module: */ + m_param.pBTPP = NULL; + if(m_BTPostProcModule && m_BTPostProcModule->create) + { + m_param.pBTPP = m_BTPostProcModule->create(); + } + if(m_param.pBTPP) + { + m_param.pBTPP->SetNickName(m_BTPostProcModule->nickname); + //~ set_params(argc, argv, m_param.pBTPP, "btpp", pBTPostProcModule->nickname); + } + + const char * bt_corr = m_bt_corr.c_str(); + + m_param.UsePPData = (bt_corr && MY_STRICMP(bt_corr,"PostProcRes")==0); + + /* Create blob trajectory analysis module: */ + m_param.pBTA = NULL; + if(m_BTAnalysisModule && m_BTAnalysisModule->create) + { + m_param.pBTA = m_BTAnalysisModule->create(); + //~ m_param.pBTA->SetFileName(bta_data_name); + } + if(m_param.pBTA) + { + m_param.pBTA->SetNickName(m_BTAnalysisModule->nickname); + //~ set_params(argc, argv, m_param.pBTA, "bta", m_BTAnalysisModule->nickname); + } + + /* Create whole pipline: */ + m_tracker = cvCreateBlobTrackerAuto1(&m_param); + if(!m_tracker) + error("Can not create BlobTrackerAuto"); +} /* createModules */ + +void pix_opencv_blobtrack :: releaseModules(void) +{ + if(m_param.pBT)cvReleaseBlobTracker(&m_param.pBT); + if(m_param.pBD)cvReleaseBlobDetector(&m_param.pBD); + if(m_param.pBTGen)cvReleaseBlobTrackGen(&m_param.pBTGen); + if(m_param.pBTA)cvReleaseBlobTrackAnalysis(&m_param.pBTA); + if(m_param.pFG)cvReleaseFGDetector(&m_param.pFG); + if(m_tracker)cvReleaseBlobTrackerAuto(&m_tracker); +} /* releaseModules */ + +void pix_opencv_blobtrack :: print_params(CvVSModule* pM, const char* module) +{ + int i; + if(pM->GetParamName(0) == NULL ) return; + + + post("%s(%s) module parameters:",module,pM->GetNickName()); + + for (i=0; ; ++i) + { + const char* param = pM->GetParamName(i); + const char* str = param?pM->GetParamStr(param):NULL; + if(param == NULL)break; + if(str) + { + post(" %s: %s",param,str); + } + else + { + post(" %s: %g",param,pM->GetParam(param)); + } + } +} /* print_params */ + +///////////////////////////////////////////////////////// +// messages handling +// +///////////////////////////////////////////////////////// +void pix_opencv_blobtrack :: monitorStageMess(int arg) +{ + m_monitoring_stage = int(arg); + t_atom data_out; + SETFLOAT(&data_out, m_monitoring_stage); + outlet_anything( m_dataout, gensym("monitorStage"), 1, &data_out); +} + +void pix_opencv_blobtrack :: areaThresholdMess(t_float arg) +{ + m_areaThreshold = arg; + t_atom data_out; + SETFLOAT(&data_out, m_areaThreshold); + outlet_anything( m_dataout, gensym("areaThreshold"), 1, &data_out); +} + +void pix_opencv_blobtrack :: fgTrainFramesMess(int arg) +{ + //~ m_FGTrainFrames = int(arg); + t_atom data_out; + SETFLOAT(&data_out, m_FGTrainFrames); + outlet_anything( m_dataout, gensym("FGTrainFrames"), 1, &data_out); +} + +void pix_opencv_blobtrack :: printParamsMess(void) +{ /* Print module parameters: */ + struct DefMMM + { + CvVSModule* pM; + const char* name; + } Modules[] = { + {(CvVSModule*)m_param.pFG,"FGdetector"}, + {(CvVSModule*)m_param.pBD,"BlobDetector"}, + {(CvVSModule*)m_param.pBT,"BlobTracker"}, + {(CvVSModule*)m_param.pBTGen,"TrackGen"}, + {(CvVSModule*)m_param.pBTPP,"PostProcessing"}, + {(CvVSModule*)m_param.pBTA,"TrackAnalysis"}, + {NULL,NULL} + }; + int i; + for(i=0; Modules[i].name; ++i) + { + if(Modules[i].pM) + print_params(Modules[i].pM,Modules[i].name); + } +} /* Print module parameters. */ + +void pix_opencv_blobtrack :: getParamMess(t_symbol*s, int argc, t_atom*argv) +{ + int i; + CvVSModule* pM; + pM=NULL; + if ( argc < 1 ){ + error("getParam need a module name as symbol arg"); + return; + } + + if ( argv[0].a_type == A_SYMBOL ) { + if (std::string(argv[0].a_w.w_symbol->s_name) == "fg") { + pM=m_param.pFG; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bd") { + pM=m_param.pBD; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bt") { + pM=m_param.pBT; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "btpp") { + pM=m_param.pBTPP; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bta") { + pM=m_param.pBTA; + } + else { + error("unknown module : %s",argv[0].a_w.w_symbol->s_name); + return; + } + } else { + error("getParam need a module name as symbol arg"); + } + + t_atom a_param[4]; + t_atom a_params; + + a_param[0] = argv[0]; + + if(pM->GetParamName(0) == NULL ) return; + + for (i=0; ; ++i) + { + const char* param = pM->GetParamName(i); + if(param == NULL)break; + } + SETFLOAT(&a_params, i); + outlet_anything(m_dataout, gensym("params"), 1, &a_params); + + for (i=0; ; ++i) + { + const char* param = pM->GetParamName(i); + const char* str = param?pM->GetParamStr(param):NULL; + + if(param == NULL)break; + SETSYMBOL(a_param+1,gensym(param)); + if(str) + { + SETSYMBOL(a_param+2,gensym(str)); + } + else + { + SETFLOAT(a_param+2,pM->GetParam(param)); + } + const char* comment = pM->GetParamComment(param); + if ( !comment ) comment = "N/A"; + SETSYMBOL(a_param+3,gensym(comment)); + + outlet_anything(m_dataout, gensym("param"), 4, a_param); + } +} /* getParamMess */ + +void pix_opencv_blobtrack :: setParamMess(t_symbol*s, int argc, t_atom*argv) +{ + if ( argc != 3 ){ + error("setParam need 3 args : "); + return; + } + + int i; + CvVSModule* pM; + pM=NULL; + + if ( argv[0].a_type == A_SYMBOL ) { + if (std::string(argv[0].a_w.w_symbol->s_name) == "fg") { + pM=m_param.pFG; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bd") { + pM=m_param.pBD; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bt") { + pM=m_param.pBT; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "btpp") { + pM=m_param.pBTPP; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bta") { + pM=m_param.pBTA; + } + else { + error("unknown module : %s",argv[0].a_w.w_symbol->s_name); + return; + } + } else { + error("getParam need a module name as symbol arg"); + } + + const char* param; + const char* str; + for ( i = 0 ; ; i++ ){ + param = pM->GetParamName(i); + str = param?pM->GetParamStr(param):NULL; + + if(param == NULL){ + error("module %s doesn't have a %s parameter", argv[0].a_w.w_symbol->s_name, argv[1].a_w.w_symbol->s_name); + return; + } + + if( std::string(argv[1].a_w.w_symbol->s_name) == param ) + break; + } + + if ( str ){ /* parameter is a string */ + if ( argv[2].a_type != A_SYMBOL ){ + error("module (%s) parameter (%s) is a symbol"); + return; + } else { + pM->SetParamStr(param, argv[2].a_w.w_symbol->s_name); + } + } else { + if ( argv[2].a_type != A_FLOAT ){ + error("module (%s) parameter (%s) is a float"); + return; + } else { + pM->SetParam(param, argv[2].a_w.w_float); + } + } + + pM->ParamUpdate(); +} + +void pix_opencv_blobtrack :: getModuleMess(t_symbol*s, int argc, t_atom*argv) +{ + if ( argc == 0 ){ // no args : print all modules in pipeline + post("avaible modules in pipeline :\n \ + fg : ForeGround detector\n \ + bd : Blob Detector\n \ + bt : Blob Tracker\n \ + btpp : Blob Tracker Post Processing\n \ + bta : Blob Tracker Analysis"); + + t_atom module_list[5]; + SETSYMBOL(&module_list[0], gensym("fg")); + SETSYMBOL(&module_list[1], gensym("bd")); + SETSYMBOL(&module_list[2], gensym("bt")); + SETSYMBOL(&module_list[3], gensym("btpp")); + SETSYMBOL(&module_list[4], gensym("bta")); + outlet_anything(m_dataout, gensym("modulelist"), 5, module_list); + + } else if ( argc == 1 ) { // one arg : print available algo for specified module + if ( argv[0].a_type == A_SYMBOL ) { + t_atom algo_list[512]; + int i; + if ( std::string(argv[0].a_w.w_symbol->s_name) == "fg" ){ + post("available foreground detector algo :"); + for (i = 0 ; FGDetector_Modules[i].nickname!=NULL ; i++){ + post("\t%s : %s", FGDetector_Modules[i].nickname, FGDetector_Modules[i].description); + SETSYMBOL(&algo_list[i],gensym(FGDetector_Modules[i].nickname)); + } + outlet_anything(m_dataout, gensym("fg_algo"), i, algo_list); + } else if ( std::string(argv[0].a_w.w_symbol->s_name) == "bd" ){ + post("available blob detector algo :"); + for (i = 0 ; BlobDetector_Modules[i].nickname!=NULL ; i++){ + post("\t%s : %s", BlobDetector_Modules[i].nickname, BlobDetector_Modules[i].description); + SETSYMBOL(&algo_list[i],gensym(BlobDetector_Modules[i].nickname)); + } + outlet_anything(m_dataout, gensym("bd_algo"), i, algo_list); + } else if ( std::string(argv[0].a_w.w_symbol->s_name) == "bt" ){ + post("available blob tracker algo :"); + for (i = 0 ; BlobTracker_Modules[i].nickname!=NULL ; i++){ + post("\t%s : %s", BlobTracker_Modules[i].nickname, BlobTracker_Modules[i].description); + SETSYMBOL(&algo_list[i],gensym(BlobTracker_Modules[i].nickname)); + } + outlet_anything(m_dataout, gensym("bt_algo"), i, algo_list); + } else if ( std::string(argv[0].a_w.w_symbol->s_name) == "btpp" ){ + post("available blob tracker post processing algo :"); + for (i = 0 ; BlobTrackPostProc_Modules[i].nickname!=NULL ; i++){ + post("\t%s : %s", BlobTrackPostProc_Modules[i].nickname, BlobTrackPostProc_Modules[i].description); + SETSYMBOL(&algo_list[i],gensym(BlobTrackPostProc_Modules[i].nickname)); + } + outlet_anything(m_dataout, gensym("btpp_algo"), i, algo_list); + } else if ( std::string(argv[0].a_w.w_symbol->s_name) == "bta" ){ + post("available blob tracker analysis algo :"); + for (i = 0 ; BlobTrackAnalysis_Modules[i].nickname!=NULL ; i++){ + post("\t%s : %s", BlobTrackAnalysis_Modules[i].nickname, BlobTrackAnalysis_Modules[i].description); + SETSYMBOL(&algo_list[i],gensym(BlobTrackAnalysis_Modules[i].nickname)); + } + outlet_anything(m_dataout, gensym("bd_algo"), i, algo_list); + } + } else error("getModules []"); + } else error("getModules [] : need 1 or 2 args"); +} + +void pix_opencv_blobtrack :: setModuleMess(t_symbol*s, int argc, t_atom*argv) +{ + if ( argc != 2 ){ + error("use : setModule "); + error("try getModule to get available module list"); + return; + } + + if ( argv[0].a_type == A_SYMBOL ) { + if (std::string(argv[0].a_w.w_symbol->s_name) == "fg") { + m_fg_name = argv[1].a_w.w_symbol->s_name; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bd") { + m_bd_name = argv[1].a_w.w_symbol->s_name; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bt") { + m_bt_name = argv[1].a_w.w_symbol->s_name; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "btpp") { + m_btpp_name = argv[1].a_w.w_symbol->s_name; + } + else if (std::string(argv[0].a_w.w_symbol->s_name) == "bta") { + m_bta_name = argv[1].a_w.w_symbol->s_name; + } + releaseModules(); + setupModules(); + createModules(); + printParamsMess(); + } +} diff --git a/src/pix_opencv_blobtrack.h b/src/pix_opencv_blobtrack.h new file mode 100644 index 0000000..2e00513 --- /dev/null +++ b/src/pix_opencv_blobtrack.h @@ -0,0 +1,106 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_BLOBTRACK_H_ +#define INCLUDE_PIX_OPENCV_BLOBTRACK_H_ + +#ifndef _EiC +#include "opencv2/video/background_segm.hpp" +#include "opencv2/legacy/blobtrack.hpp" +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/highgui/highgui.hpp" +#include +#endif + +#include "blobtrack.h" + +#include "Base/GemPixObj.h" +#include +#include +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_blobtrack + + advanced blob tracker + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_blobtrack : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_blobtrack, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_blobtrack(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_blobtrack(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + void RunBlobTrackingAuto( IplImage* img ); + + ////////// + // Messages handling + void monitorStageMess(int arg); + void areaThresholdMess(t_float arg); + void fgTrainFramesMess(int arg); + void printParamsMess(void); + void getParamMess(t_symbol*s, int argc, t_atom*argv); // get available params or param value + void setParamMess(t_symbol*s, int argc, t_atom*argv); // set param + void getModuleMess(t_symbol*s, int argc, t_atom*argv); // list available and currently used modules + void setModuleMess(t_symbol*s, int argc, t_atom*argv); // set selected modules + + // Members + std::string m_fg_name, m_bd_name, m_bt_name, m_btgen_name, m_btpp_name, m_bta_name, m_bt_corr; + int m_FGTrainFrames; + int m_monitoring_stage; // 0 : input image, 1 : FG 3 : input with trackng info + t_float m_areaThreshold; + int x_size, y_size; + + + CvBlobTrackerAuto* m_tracker; + CvBlobTrackerAutoParam1 m_param; + + DefModule_FGDetector* m_FGModule; + DefModule_BlobDetector* m_BDModule; + DefModule_BlobTracker* m_BTModule; + DefModule_BlobTrackPostProc* m_BTPostProcModule; + DefModule_BlobTrackGen* m_BTGenModule; + DefModule_BlobTrackAnalysis* m_BTAnalysisModule; + + + private: + + void setupModules(); + void createModules(); + void releaseModules(void); + void print_params(CvVSModule* pM, const char* module); + t_outlet *m_dataout; // info outlet + +}; +#endif // for header file diff --git a/src/pix_opencv_calibration.cc b/src/pix_opencv_calibration.cc new file mode 100644 index 0000000..053a6a5 --- /dev/null +++ b/src/pix_opencv_calibration.cc @@ -0,0 +1,547 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) +// camera calibration function by Antoine Villeret helped by Cyrille Henry + +#include "pix_opencv_calibration.h" +#include + +CPPEXTERN_NEW(pix_opencv_calibration) + +///////////////////////////////////////////////////////// +// +// pix_opencv_calibration +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_calibration :: pix_opencv_calibration() +{ + m_dataout = outlet_new(this->x_obj, 0); + + find_rgb = NULL; + find_gray = NULL; + rgb = NULL; + gray = NULL; + tmp = NULL; + mapx = NULL; + mapy = NULL; + + success_count = 0; + board_view_nb = 10; + calibration = 0; + patternSize[0] = 6; + patternSize[1] = 7; + frame = 0; + wait_n_frame = 10; + findChessFlag = CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS; + + // allocate storage matrix + image_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 2, CV_32FC1); + object_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 3, CV_32FC1); + point_counts = cvCreateMat(board_view_nb, 1, CV_32SC1); + intrinsic_matrix = cvCreateMat(3, 3, CV_32FC1); + distortion_coeffs = cvCreateMat(5, 1, CV_32FC1); + + pix_opencv_calibration :: resetCorrectionMatrix(); + //~ post("pix_opencv_calibration build on %s at %s", __DATE__, __TIME__); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_calibration :: ~pix_opencv_calibration() +{ + //Destroy cv_images to clean memory + if ( find_rgb ) cvReleaseImage(&find_rgb); + if ( find_gray ) cvReleaseImage(&find_gray); + if ( gray ) cvReleaseImage(&gray); + if ( rgb ) cvReleaseImage(&rgb); + if ( tmp ) cvReleaseImage(&tmp); + if ( mapx ) cvReleaseImage(&mapx); + if ( mapy ) cvReleaseImage(&mapy); + cvReleaseMat(&intrinsic_matrix); + cvReleaseMat(&distortion_coeffs); + cvReleaseMat(&image_points); + cvReleaseMat(&object_points); + cvReleaseMat(&point_counts); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_calibration :: processRGBAImage(imageStruct &image) +{ + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + if ( calibration ) error ( "image size changed, calibration was cancelled"); + calibration = 0; + + if ( find_rgb ) cvReleaseImage(&find_rgb); + if ( find_gray ) cvReleaseImage(&find_gray); + if ( gray ) cvReleaseImage(&gray); // TODO : cette ligne crash qd on passe du gray a couleur apres ou pendant calibration + if ( rgb ) cvReleaseImage(&rgb); + if ( tmp ) cvReleaseImage(&tmp); + if ( mapx ) cvReleaseImage(&mapx); + if ( mapy ) cvReleaseImage(&mapy); + + // used in findCorners + find_rgb = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 4); + find_gray = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 1); + + //create the images with new size + rgb = cvCreateImageHeader(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 4); + tmp = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 4); + mapx = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_32F, 1); + mapy = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_32F, 1); + + // create new map + cvInitUndistortMap(this->intrinsic_matrix, this->distortion_coeffs, this->mapx, this->mapy); + } + + // no need to copy a lot of memory, just point to it... + rgb->imageData = (char*) image.data; + + // this will loop until we got enought views (x->board_view_nb) with all corners visible + if ( success_count < board_view_nb && calibration != 0 ) { + findCorners( rgb ); + image.data = (unsigned char*) rgb->imageData; + } + else if ( success_count >= board_view_nb && calibration != 0 ) { + computeCalibration( rgb ); + image.data = (unsigned char*) rgb->imageData; + } + else if ( this->calibration == 0 ) { + cvRemap(rgb,tmp,mapx,mapy); + image.data = (unsigned char*) tmp->imageData; + } +} + +void pix_opencv_calibration :: processRGBImage(imageStruct &image) { + error( "pix_opencv_calibration : rgb format not supported"); +} + +void pix_opencv_calibration :: processYUVImage(imageStruct &image) { + error( "pix_opencv_calibration : yuv format not supported" ); +} + +void pix_opencv_calibration :: processGrayImage(imageStruct &image) +{ + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!gray)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + if ( calibration ) { + error ( "image size changed, calibration was cancelled"); + calibration = 0; + + t_atom data_out; + SETFLOAT(&data_out, calibration); + outlet_anything( this->m_dataout, gensym("calibration"), 1, &data_out); + } + + if ( find_rgb ) cvReleaseImage(&find_rgb); + if ( find_gray ) cvReleaseImage(&find_gray); + if ( gray ) cvReleaseImage(&gray); + if ( rgb ) cvReleaseImage(&rgb); + if ( tmp ) cvReleaseImage(&tmp); + if ( mapx ) cvReleaseImage(&mapx); + if ( mapy ) cvReleaseImage(&mapy); + + // used in findCorners + find_rgb = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 4); + find_gray = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 1); + + //create the images with new size + gray = cvCreateImageHeader(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 1); + tmp = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_8U, 1); + mapx = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_32F, 1); + mapy = cvCreateImage(cvSize(this->comp_xsize,this->comp_ysize), IPL_DEPTH_32F, 1); + + // create new map + cvInitUndistortMap(this->intrinsic_matrix, this->distortion_coeffs, this->mapx, this->mapy); + } + + // no need to copy a lot of memory, just point to it... + gray->imageData = (char*) image.data; + + // this will loop until we got enought views (x->board_view_nb) with all corners visible + if ( success_count < board_view_nb && calibration != 0 ) { + findCorners( gray ); + image.data = (unsigned char*) gray->imageData; + } + else if ( success_count >= board_view_nb && calibration != 0 ) { + computeCalibration( gray ); + image.data = (unsigned char*) gray->imageData; + } + else if ( this->calibration == 0 ) { + cvRemap(gray,tmp,mapx,mapy); + image.data = (unsigned char*) tmp->imageData; + } +} + +///////////////////////////////////////////////////////// +// findCorners +// +///////////////////////////////////////////////////////// +void pix_opencv_calibration :: findCorners ( IplImage *image ) +{ + int board_point_nb = this->patternSize[0]*this->patternSize[1]; + CvPoint2D32f *corners = new CvPoint2D32f[board_point_nb]; + int corner_count; + int step; + CvSize patternSize, image_size; + + patternSize = cvSize( this->patternSize[0], this->patternSize[1] ); + image_size = cvSize( image->width, image->height ); + + // find chessboard corners (gray or RGBA image...) + int found = cvFindChessboardCorners(image, + patternSize, + corners, + &corner_count, + findChessFlag); + if (image->nChannels == 4) { + cvCopy(image, find_rgb) ; + cvCvtColor( image , find_gray , CV_RGBA2GRAY); // convert color to gray + } else { + cvCopy(image, find_gray) ; + } + + // get subpixel accuracy on those corners (grayscale image only) + cvFindCornerSubPix(find_gray, + corners, + corner_count, + cvSize(11,11), + cvSize(-1,-1), + cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.1)); + + + // draw chessboard corner (color image only) + if (image->nChannels == 4) cvDrawChessboardCorners(find_rgb, patternSize, corners, corner_count, found); + else + { + cvCvtColor( find_gray , find_rgb , CV_GRAY2RGBA); // convert gray to color + cvDrawChessboardCorners(find_rgb, patternSize, corners, corner_count, found); + } + + this->frame++; + if ( this->frame % this->wait_n_frame == 0 ) { + // update arrays + + if( corner_count == board_point_nb ) { + step = this->success_count*board_point_nb; + for( int i=step, j=0; jimage_points, float,i,0) = corners[j].x; + CV_MAT_ELEM(*this->image_points, float,i,1) = corners[j].y; + CV_MAT_ELEM(*this->object_points,float,i,0) = j/this->patternSize[0]; + CV_MAT_ELEM(*this->object_points,float,i,1) = j%this->patternSize[0]; + CV_MAT_ELEM(*this->object_points,float,i,2) = 0.0f; + } + CV_MAT_ELEM(*this->point_counts, int,this->success_count,0) = board_point_nb; + this->success_count++; + + cvNot( find_rgb , find_rgb ); + } + + t_atom data_out; + SETFLOAT(&data_out, success_count); + outlet_anything( this->m_dataout, gensym("take"), 1, &data_out); + + } + + // convert color to gray + if (image->nChannels == 1) { + cvCvtColor( find_rgb , image, CV_RGBA2GRAY); // convert color to gray + } else { + cvCopy(find_rgb, image); + } + +} +///////////////////////////////////////////////////////// +// computeCalibration +// +///////////////////////////////////////////////////////// +void pix_opencv_calibration :: computeCalibration ( IplImage *image ) +{ + //CALIBRATE THE CAMERA! + cvCalibrateCamera2(this->object_points, + this->image_points, + this->point_counts, + cvSize( image->width , image->height ), + this->intrinsic_matrix, + this->distortion_coeffs, + NULL, + NULL, + 0); + cvReleaseImage(&mapx); + cvReleaseImage(&mapy); + this->mapx = cvCreateImage( cvSize( image->width, image->height ), IPL_DEPTH_32F, 1 ); + this->mapy = cvCreateImage( cvSize( image->width, image->height ), IPL_DEPTH_32F, 1 ); + + cvInitUndistortMap(this->intrinsic_matrix, this->distortion_coeffs, this->mapx, this->mapy); + + t_atom intra_out[9]; + for ( int i = 0 ; i < 9 ; i++ ){ + SETFLOAT(&intra_out[i], CV_MAT_ELEM( *intrinsic_matrix, float, i%3, i/3)); + } + outlet_anything( this->m_dataout, gensym("intrinsic_matrix"), 9, intra_out); + + t_atom dist_out[5]; + for ( int i = 0 ; i < 5 ; i++ ){ + SETFLOAT(&dist_out[i], CV_MAT_ELEM( *distortion_coeffs, float, i, 0)); + } + outlet_anything( this->m_dataout, gensym("distortion_coeffs"), 5, dist_out); + + calibration = 0; + + t_atom data_out; + SETFLOAT(&data_out, calibration); + outlet_anything( this->m_dataout, gensym("calibration"), 1, &data_out); +} +///////////////////////////////////////////////////////// +// LoadMess +// +///////////////////////////////////////////////////////// + +void pix_opencv_calibration :: loadIntraMess (t_symbol *filename) +{ + if ( filename->s_name[0] == 0 ) { + error("no filename passed to loadIntra message"); + return; + } + if ( filename == NULL ) { error("%s is not a valid matrix", filename->s_name); return;} + this->intrinsic_matrix = (CvMat*)cvLoad(filename->s_name, 0, 0, 0);// TODO crash when passing non-XML file + + if (intrinsic_matrix == NULL) { + intrinsic_matrix = cvCreateMat(3, 3, CV_32FC1); + error("can't open file %s", filename->s_name); + resetCorrectionMatrix(); + } + else if ( intrinsic_matrix->rows != 3 || intrinsic_matrix->cols != 3 || CV_MAT_TYPE(intrinsic_matrix->type) != CV_32FC1 ) { + error("%s is not a valid intrinsic matrix", filename->s_name); + cvReleaseMat(&intrinsic_matrix); + intrinsic_matrix = cvCreateMat(3, 3, CV_32FC1); + resetCorrectionMatrix(); + } + else post("load transformation matrix from %s",filename->s_name); + + t_atom intra_out[9]; + for ( int i = 0 ; i < 9 ; i++ ){ + SETFLOAT(&intra_out[i], CV_MAT_ELEM( *intrinsic_matrix, float, i%3, i/3)); + } + outlet_anything( this->m_dataout, gensym("intrinsic_matrix"), 9, intra_out); + + // reinitialise size to force reinitialisation of mapx and mapy on next frame + this->comp_xsize = 0; +} + +void pix_opencv_calibration :: loadDistMess (t_symbol *filename) +{ + if ( filename->s_name[0] == 0 ) { + error("no filename passed to loadDist message"); + return; + } + if ( filename == NULL ) { error("NULL pointer passed to function loadDist"); return;} + distortion_coeffs = (CvMat*)cvLoad(filename->s_name); // TODO crash when passing non-XML file + + if (distortion_coeffs == NULL) { + distortion_coeffs = cvCreateMat(5, 1, CV_32FC1); + error("can't open file %s", filename->s_name); + resetCorrectionMatrix(); + } + else if( distortion_coeffs->rows != 5 || distortion_coeffs->cols != 1 || CV_MAT_TYPE(distortion_coeffs->type) != CV_32FC1 ) { + error("%s is not a valid distortions coeffs file", filename->s_name); + cvReleaseMat(&distortion_coeffs); + distortion_coeffs = cvCreateMat(3, 3, CV_32FC1); + resetCorrectionMatrix(); + } + else post("load distortion coefficients from %s",filename->s_name); + + t_atom dist_out[5]; + for ( int i = 0 ; i < 5 ; i++ ){ + SETFLOAT(&dist_out[i], CV_MAT_ELEM( *distortion_coeffs, float, i, 0)); + } + outlet_anything( this->m_dataout, gensym("distortion_coeffs"), 5, dist_out); + + // reinitialise size to force reinitialisation of mapx and mapy on next frame + this->comp_xsize = 0; +} + +void pix_opencv_calibration :: writeIntraMess (t_symbol *filename) +{ + cvSave(filename->s_name,intrinsic_matrix); +} + +void pix_opencv_calibration :: writeDistMess (t_symbol *filename) +{ + cvSave(filename->s_name,distortion_coeffs); +} + +void pix_opencv_calibration :: floatCalibrationhMess (float calib_flag) +{ + this->calibration=calib_flag; + if ( this->calibration == 1 ) { + this->success_count = 0; + this->frame = 0; + } + t_atom data_out; + SETFLOAT(&data_out, calibration); + outlet_anything( this->m_dataout, gensym("calibration"), 1, &data_out); +} + +void pix_opencv_calibration :: patternSizeMess (float xsize, float ysize) +{ + if (calibration) {error("you can't change pattern size during calibration"); return;} + if ( xsize < 3 || ysize < 3 ) {error("patternSize should be at least 3x3"); return;} + this->patternSize[0]=xsize; + this->patternSize[1]=ysize; + + // reallocate matrix + cvReleaseMat(&image_points); + cvReleaseMat(&object_points); + cvReleaseMat(&point_counts); + image_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 2, CV_32FC1); + object_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 3, CV_32FC1); + point_counts = cvCreateMat(board_view_nb, 1, CV_32SC1); +} + +void pix_opencv_calibration :: viewMess (int view) +{ + if ( calibration == 1 ) {error("you can't change view number during calibration !"); return;} + board_view_nb=view<2?2:view; + if (view < 2) error("view should be greater or equal to 2"); + + // reallocate matrix + cvReleaseMat(&image_points); + cvReleaseMat(&object_points); + cvReleaseMat(&point_counts); + image_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 2, CV_32FC1); + object_points = cvCreateMat(patternSize[0]*patternSize[1]*board_view_nb, 3, CV_32FC1); + point_counts = cvCreateMat(board_view_nb, 1, CV_32SC1); + +} + +void pix_opencv_calibration :: waitMess (int wait) +{ + wait_n_frame=wait<1?1:wait; + if (wait < 1) error("wait should be greater or equal to 1, you can't calibrate more often than each frame !"); +} + +void pix_opencv_calibration :: findChessFlagMess(int adaptThres, int normalize, int filter) +{ + adaptThres=adaptThres<=0?0:adaptThres>=1?1:adaptThres; + normalize=normalize<=0?0:normalize>=1?1:normalize; + filter=filter<=0?0:filter>=1?1:filter; + findChessFlag = CV_CALIB_CB_ADAPTIVE_THRESH * adaptThres + CV_CALIB_CB_NORMALIZE_IMAGE * normalize + CV_CALIB_CB_FILTER_QUADS * filter; +} +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_calibration :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::loadIntraMessCallback, + gensym("loadIntra"), A_SYMBOL, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::loadDistMessCallback, + gensym("loadDist"), A_SYMBOL, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::writeIntraMessCallback, + gensym("writeIntra"), A_SYMBOL, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::writeDistMessCallback, + gensym("writeDist"), A_SYMBOL, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::floatCalibrationMessCallback, + gensym("calibration"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::patternSizeMessCallback, + gensym("patternSize"), A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::viewMessCallback, + gensym("view"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::waitMessCallback, + gensym("wait"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::findChessFlagMessCallback, + gensym("findChessFlag"), A_FLOAT, A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_calibration::resetMessCallback, + gensym("reset"), A_NULL); + +} +void pix_opencv_calibration :: loadIntraMessCallback(void *data, t_symbol* filename) +{ + GetMyClass(data)->loadIntraMess(filename); +} +void pix_opencv_calibration :: loadDistMessCallback(void *data, t_symbol* filename) +{ + GetMyClass(data)->loadDistMess(filename); +} +void pix_opencv_calibration :: writeIntraMessCallback(void *data, t_symbol* filename) +{ + GetMyClass(data)->writeIntraMess(filename); +} +void pix_opencv_calibration :: writeDistMessCallback(void *data, t_symbol* filename) +{ + GetMyClass(data)->writeDistMess(filename); +} +void pix_opencv_calibration :: floatCalibrationMessCallback(void *data, t_floatarg calib_flag) +{ + GetMyClass(data)->floatCalibrationhMess((float)calib_flag); +} +void pix_opencv_calibration :: patternSizeMessCallback(void *data, t_floatarg xsize, t_floatarg ysize) +{ + GetMyClass(data)->patternSizeMess((float)xsize, (float)ysize); +} +void pix_opencv_calibration :: viewMessCallback(void *data, t_floatarg view) +{ + GetMyClass(data)->viewMess((int)view); +} +void pix_opencv_calibration :: waitMessCallback(void *data, t_floatarg wait) +{ + GetMyClass(data)->waitMess((int)wait); +} +void pix_opencv_calibration :: findChessFlagMessCallback(void *data, t_floatarg adaptThres, t_floatarg normalize, t_floatarg filter) +{ + GetMyClass(data)->findChessFlagMess((int) adaptThres, (int) normalize, (int) filter); +} + +void pix_opencv_calibration :: resetMessCallback(void *data) +{ + GetMyClass(data)->resetCorrectionMatrix(); +} + +void pix_opencv_calibration :: resetCorrectionMatrix() +{ + // make an "empty" intrinsinc matrix + CV_MAT_ELEM( *intrinsic_matrix, float, 0, 0 ) = 8; + CV_MAT_ELEM( *intrinsic_matrix, float, 1, 0 ) = 0; + CV_MAT_ELEM( *intrinsic_matrix, float, 2, 0 ) = 0; + CV_MAT_ELEM( *intrinsic_matrix, float, 0, 1 ) = 0; + CV_MAT_ELEM( *intrinsic_matrix, float, 1, 1 ) = 8; + CV_MAT_ELEM( *intrinsic_matrix, float, 2, 1 ) = 0; + CV_MAT_ELEM( *intrinsic_matrix, float, 0, 2 ) = 3; + CV_MAT_ELEM( *intrinsic_matrix, float, 1, 2 ) = 3; + CV_MAT_ELEM( *intrinsic_matrix, float, 2, 2 ) = 1; + + // zeros distortion coeffs + for ( int i = 0 ; i < 5 ; i++ ) { + CV_MAT_ELEM( *distortion_coeffs, float, i, 0) = 0.0; + } + + // reinitialise size to force reinitialisation of mapx and mapy on next frame + this->comp_xsize = 0; +} diff --git a/src/pix_opencv_calibration.h b/src/pix_opencv_calibration.h new file mode 100644 index 0000000..c6bbaaa --- /dev/null +++ b/src/pix_opencv_calibration.h @@ -0,0 +1,120 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Threshold filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_pix_opencv_calibration_H_ +#define INCLUDE_pix_opencv_calibration_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_calibration + + Threshold filter + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_calibration : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_calibration, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_calibration(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_calibration(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + void findCorners ( IplImage *image ); + void computeCalibration ( IplImage *image ); + + ////////// + // Set the new edge threshold + void loadIntraMess(t_symbol *filename); + void loadDistMess(t_symbol *filename); + void writeIntraMess(t_symbol *filename); + void writeDistMess(t_symbol *filename); + void floatCalibrationhMess (float calib_flag); + void patternSizeMess (float xsize, float ysize); + void viewMess (int view); + void waitMess (int wait); + void findChessFlagMess(int adaptThres, int normalize, int filter); + void resetCorrectionMatrix(); + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + int success_count, /* number of images on wich we correctly found corners */ + board_view_nb, /* number of views to take */ + calibration, /* calibration flag */ + patternSize[2], /* size of the calibration chessboard */ + frame, /* number of frames analysed for chessboard corner */ + wait_n_frame, /* number of frames to wait between two take */ + findChessFlag; // flag for cvFindChessboardCorners + + + private: + + t_outlet *m_dataout; + + ////////// + // Static member functions + static void loadIntraMessCallback(void *data, t_symbol* filename); + static void loadDistMessCallback(void *data, t_symbol* filename); + static void writeIntraMessCallback(void *data, t_symbol* filename); + static void writeDistMessCallback(void *data, t_symbol* filename); + static void floatCalibrationMessCallback(void *data, t_floatarg calib_flag); + static void patternSizeMessCallback(void *data, t_floatarg xsize, t_floatarg ysize); + static void viewMessCallback(void *data, t_floatarg view); + static void waitMessCallback(void *data, t_floatarg wait); + static void findChessFlagMessCallback(void *data, t_floatarg adaptThres, t_floatarg normalize, t_floatarg filter); + static void resetMessCallback(void *data); + ///////// + + // CvMat needed + CvMat *image_points, + *object_points, + *point_counts, + *intrinsic_matrix, + *distortion_coeffs; + + ///////// + // IplImage needed + IplImage *find_rgb, *find_gray, *rgb, *gray, *tmp, *mapx, *mapy; +}; + +#endif // for header file diff --git a/src/pix_opencv_camshift.cc b/src/pix_opencv_camshift.cc new file mode 100644 index 0000000..879a9f2 --- /dev/null +++ b/src/pix_opencv_camshift.cc @@ -0,0 +1,450 @@ + +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_camshift.h" +#include + +CPPEXTERN_NEW(pix_opencv_camshift) + +///////////////////////////////////////////////////////// +// +// pix_opencv_camshift +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_camshift :: pix_opencv_camshift() +{ + int i; + int hdims = 16; + float hranges_arr[] = {0,180}; + float* hranges = hranges_arr; + + comp_xsize=320; + comp_ysize=240; + + m_dataout = outlet_new(this->x_obj, &s_anything); + + x_track = 0; + x_init = 0; + x_rwidth = 20; + x_rheight = 20; + x_backproject = 0; + x_vmin = 50; + x_vmax = 256; + x_smin = 30; + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + hue = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + mask = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + backproject = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_camshift :: ~pix_opencv_camshift() +{ + // Destroy cv_images + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&hsv); + cvReleaseImage(&hue); + cvReleaseImage(&mask); + cvReleaseImage(&backproject); + cvReleaseHist(&hist); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_camshift :: processRGBAImage(imageStruct &image) +{ + int i, k; + int im; + int marked; + int hdims = 16; + float hranges_arr[] = {0,180}; + float* hranges = hranges_arr; + + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&hsv); + cvReleaseImage(&hue); + cvReleaseImage(&mask); + cvReleaseImage(&backproject); + cvReleaseHist(&hist); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + hue = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + mask = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + backproject = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); + + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to hsv + cvCvtColor(rgba, rgb, CV_BGRA2BGR); + cvCvtColor(rgb, hsv, CV_BGR2HSV); + + if ( x_track ) + { + cvInRangeS( hsv, cvScalar(0,x_smin,MIN(x_vmin,x_vmax),0), cvScalar(180,256,MAX(x_vmin,x_vmax),0), mask ); + cvSplit( hsv, hue, 0, 0, 0 ); + + if ( x_init ) + { + float max_val = 0.f; + x_init = 0; + cvSetImageROI( hue, selection ); + cvSetImageROI( mask, selection ); + cvCalcHist( &hue, hist, 0, mask ); + cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 ); + cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0., 0 ); + cvResetImageROI( hue ); + cvResetImageROI( mask ); + trackwindow = selection; + } + + cvCalcBackProject( (IplImage**)&(hue), (CvArr*)backproject, (const CvHistogram*)hist ); + cvAnd( backproject, mask, backproject, 0 ); + cvCamShift( backproject, trackwindow, + cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ), + &trackcomp, &trackbox ); + trackwindow = trackcomp.rect; + + if( x_backproject ) + cvCvtColor( backproject, rgb, CV_GRAY2BGR ); + if( !rgb->origin ) + trackbox.angle = -trackbox.angle; + cvEllipseBox( rgb, trackbox, CV_RGB(255,0,0), 3, CV_AA, 0 ); + SETFLOAT(&x_list[0], trackbox.center.x); + SETFLOAT(&x_list[1], trackbox.center.y); + SETFLOAT(&x_list[2], trackbox.size.width); + SETFLOAT(&x_list[3], trackbox.size.height); + SETFLOAT(&x_list[4], trackbox.angle); + outlet_list( m_dataout, 0, 5, x_list ); + } + + cvCvtColor(rgb, rgba, CV_BGR2BGRA); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_camshift :: processRGBImage(imageStruct &image) +{ + int i, k; + int im; + int marked; + int hdims = 16; + float hranges_arr[] = {0,180}; + float* hranges = hranges_arr; + + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&hsv); + cvReleaseImage(&hue); + cvReleaseImage(&mask); + cvReleaseImage(&backproject); + cvReleaseHist(&hist); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + hue = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + mask = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + backproject = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); + + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to hsv + cvCvtColor(rgb, hsv, CV_BGR2HSV); + + if ( x_track ) + { + cvInRangeS( hsv, cvScalar(0,x_smin,MIN(x_vmin,x_vmax),0), cvScalar(180,256,MAX(x_vmin,x_vmax),0), mask ); + cvSplit( hsv, hue, 0, 0, 0 ); + + if ( x_init ) + { + float max_val = 0.f; + x_init = 0; + cvSetImageROI( hue, selection ); + cvSetImageROI( mask, selection ); + cvCalcHist( &hue, hist, 0, mask ); + cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 ); + cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0., 0 ); + cvResetImageROI( hue ); + cvResetImageROI( mask ); + trackwindow = selection; + } + + cvCalcBackProject( (IplImage**)&(hue), (CvArr*)backproject, (const CvHistogram*)hist ); + cvAnd( backproject, mask, backproject, 0 ); + cvCamShift( backproject, trackwindow, + cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ), + &trackcomp, &trackbox ); + trackwindow = trackcomp.rect; + + if( x_backproject ) + cvCvtColor( backproject, rgb, CV_GRAY2BGR ); + if( !rgb->origin ) + trackbox.angle = -trackbox.angle; + cvEllipseBox( rgb, trackbox, CV_RGB(255,0,0), 3, CV_AA, 0 ); + SETFLOAT(&x_list[0], trackbox.center.x); + SETFLOAT(&x_list[1], trackbox.center.y); + SETFLOAT(&x_list[2], trackbox.size.width); + SETFLOAT(&x_list[3], trackbox.size.height); + SETFLOAT(&x_list[4], trackbox.angle); + outlet_list( m_dataout, 0, 5, x_list ); + } + + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_camshift :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_camshift : yuv format not supported" ); +} + +void pix_opencv_camshift :: processGrayImage(imageStruct &image) +{ + int i, k; + int im; + int marked; + int hdims = 16; + float hranges_arr[] = {0,180}; + float* hranges = hranges_arr; + + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&hsv); + cvReleaseImage(&hue); + cvReleaseImage(&mask); + cvReleaseImage(&backproject); + cvReleaseHist(&hist); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + hue = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + mask = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + backproject = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hist = cvCreateHist( 1, &hdims, CV_HIST_ARRAY, &hranges, 1 ); + + } + + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + // Convert to hsv + cvCvtColor(gray, rgb, CV_GRAY2BGR); + cvCvtColor(rgb, hsv, CV_BGR2HSV); + + if ( x_track ) + { + cvInRangeS( hsv, cvScalar(0,x_smin,MIN(x_vmin,x_vmax),0), cvScalar(180,256,MAX(x_vmin,x_vmax),0), mask ); + cvSplit( hsv, hue, 0, 0, 0 ); + + if ( x_init ) + { + float max_val = 0.f; + x_init = 0; + cvSetImageROI( hue, selection ); + cvSetImageROI( mask, selection ); + cvCalcHist( &hue, hist, 0, mask ); + cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 ); + cvConvertScale( hist->bins, hist->bins, max_val ? 255. / max_val : 0., 0 ); + cvResetImageROI( hue ); + cvResetImageROI( mask ); + trackwindow = selection; + } + + cvCalcBackProject( (IplImage**)&(hue), (CvArr*)backproject, (const CvHistogram*)hist ); + cvAnd( backproject, mask, backproject, 0 ); + cvCamShift( backproject, trackwindow, + cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ), + &trackcomp, &trackbox ); + trackwindow = trackcomp.rect; + + if( x_backproject ) + memcpy( gray->imageData, backproject->imageData, image.xsize*image.ysize ); + if( !rgb->origin ) + trackbox.angle = -trackbox.angle; + cvEllipseBox( gray, trackbox, CV_RGB(255,0,0), 3, CV_AA, 0 ); + SETFLOAT(&x_list[0], trackbox.center.x); + SETFLOAT(&x_list[1], trackbox.center.y); + SETFLOAT(&x_list[2], trackbox.size.width); + SETFLOAT(&x_list[3], trackbox.size.height); + SETFLOAT(&x_list[4], trackbox.angle); + outlet_list( m_dataout, 0, 5, x_list ); + } + + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_camshift :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_camshift::backProjectMessCallback, + gensym("backproject"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_camshift::vMinMessCallback, + gensym("vmin"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_camshift::vMaxMessCallback, + gensym("vmax"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_camshift::sMinMessCallback, + gensym("smin"), A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_camshift::trackMessCallback, + gensym("track"), A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_camshift::rWidthMessCallback, + gensym("rwidth"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_camshift::rHeightMessCallback, + gensym("rheight"), A_NULL); +} + +void pix_opencv_camshift :: backProjectMessCallback(void *data, t_floatarg backproject) +{ + GetMyClass(data)->backProjectMess((float)backproject); +} + +void pix_opencv_camshift :: vMinMessCallback(void *data, t_floatarg vmin) +{ + GetMyClass(data)->vMinMess((float)vmin); +} + +void pix_opencv_camshift :: vMaxMessCallback(void *data, t_floatarg vmax) +{ + GetMyClass(data)->vMaxMess((float)vmax); +} + +void pix_opencv_camshift :: sMinMessCallback(void *data, t_floatarg smin) +{ + GetMyClass(data)->sMinMess((float)smin); +} + +void pix_opencv_camshift :: trackMessCallback(void *data, t_floatarg px, t_floatarg py) +{ + GetMyClass(data)->trackMess((float)px, (float)py); +} + +void pix_opencv_camshift :: rWidthMessCallback(void *data, t_floatarg rwidth) +{ + GetMyClass(data)->rWidthMess((float)rwidth); +} + +void pix_opencv_camshift :: rHeightMessCallback(void *data, t_floatarg rheight) +{ + GetMyClass(data)->rHeightMess((float)rheight); +} + +void pix_opencv_camshift :: backProjectMess(float backproject) +{ + if ( ( (int)backproject==0 ) || ( (int)backproject==1 ) ) x_backproject = (int)backproject; +} + +void pix_opencv_camshift :: vMinMess(float vmin) +{ + if ( ( (int)vmin>=0 ) || ( (int)vmin<256 ) ) x_vmin = (int)vmin; +} + +void pix_opencv_camshift :: vMaxMess(float vmax) +{ + if ( ( (int)vmax>=0 ) || ( (int)vmax<256 ) ) x_vmax = (int)vmax; +} + +void pix_opencv_camshift :: sMinMess(float smin) +{ + if ( ( (int)smin>=0 ) || ( (int)smin<256 ) ) x_smin = (int)smin; +} + +void pix_opencv_camshift :: trackMess(float px, float py) +{ + int rx, ry, w, h; + + if ( ( px<0.0 ) || ( px>comp_xsize ) || ( py<0.0 ) || ( py>comp_ysize ) ) return; + + //py = comp_ysize - py; + origin = cvPoint((int)px,(int)py); + rx = ( (int)px-(x_rwidth/2) < 0 )? 0:(int)px-(x_rwidth/2); + ry = ( (int)py-(x_rheight/2) < 0 )? 0:(int)py-(x_rheight/2); + w = (rx+x_rwidth>comp_xsize ) ? ( comp_xsize - rx ):x_rwidth; + h = (ry+x_rheight>comp_ysize ) ? ( comp_ysize - ry ):x_rheight; + selection = cvRect(rx,ry,w,h); + post( "pix_opencv_camshift : track point (%f,%f) region (%d %d %d %d)", px, py, rx, ry, w, h ); + x_track = 1; + x_init = 1; +} + +void pix_opencv_camshift :: rWidthMess(float rwidth) +{ + if ( (int)rwidth>=0 ) x_rwidth = (int)rwidth; + // refresh selection zone + trackMess( (float)origin.x, (float)origin.y ); +} + +void pix_opencv_camshift :: rHeightMess(float rheight) +{ + if ( (int)rheight>=0 ) x_rheight = (int)rheight; + // refresh selection zone + trackMess( (float)origin.x, (float)origin.y ); +} + diff --git a/src/pix_opencv_camshift.h b/src/pix_opencv_camshift.h new file mode 100644 index 0000000..c649b2e --- /dev/null +++ b/src/pix_opencv_camshift.h @@ -0,0 +1,110 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Continously adaptive mean-shift tracker + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_CAMSHIFT_H_ +#define INCLUDE_PIX_OPENCV_CAMSHIFT_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/video/tracking.hpp" +#endif + +#include "Base/GemPixObj.h" + +#define MAX_MARKERS 500 +const int MAX_COUNT = 500; + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_camshift + + Continously adaptive mean-shift tracker + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_camshift : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_camshift, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_camshift(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_camshift(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + void backProjectMess(float backproject); + void vMinMess(float vmin); + void vMaxMess(float vmax); + void sMinMess(float smin); + void trackMess(float px, float py); + void rWidthMess(float rwidth); + void rHeightMess(float rheight); + + int comp_xsize; + int comp_ysize; + + t_outlet *m_dataout; + int x_track; + int x_init; + int x_rwidth; + int x_rheight; + int x_backproject; + int x_vmin; + int x_vmax; + int x_smin; + + private: + + ////////// + // Static member functions + static void backProjectMessCallback(void *data, float backproject); + static void vMinMessCallback(void *data, float vmin); + static void vMaxMessCallback(void *data, float vmax); + static void sMinMessCallback(void *data, float smin); + static void trackMessCallback(void *data, float px, float py); + static void rWidthMessCallback(void *data, float rwidth); + static void rHeightMessCallback(void *data, float rheight); + + // Internal Open CV data + IplImage *rgba, *rgb, *gray, *hsv, *hue, *mask, *backproject; + CvHistogram *hist; + CvPoint origin; + CvRect selection; + CvRect trackwindow; + CvBox2D trackbox; + CvConnectedComp trackcomp; + + t_atom x_list[5]; +}; + +#endif // for header file diff --git a/src/pix_opencv_clahe.cc b/src/pix_opencv_clahe.cc new file mode 100644 index 0000000..4de7cfc --- /dev/null +++ b/src/pix_opencv_clahe.cc @@ -0,0 +1,171 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) +// Template for pix_opencv class + +#if HAVE_CLAHE +#include "pix_opencv_clahe.h" + +using namespace cv; + +CPPEXTERN_NEW_WITH_THREE_ARGS(pix_opencv_clahe, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT, t_floatarg, A_DEFFLOAT); + +///////////////////////////////////////////////////////// +// +// pix_opencv_clahe +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_clahe :: pix_opencv_clahe(t_float clipLimit, int width, int height) + : m_clipLimit(40), m_tileGridSize(Size(8,8)), m_rendering(false) +{ + if ( clipLimit > 0. ){ + m_clipLimit = clipLimit; + } + if ( width > 0 && height > 0 ){ + m_tileGridSize=cv::Size(width, height); + } else if (width > 0 || height > 0) { + int max = width > height ? width : height; + m_tileGridSize=Size ( max, max ); + } +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_clahe :: ~pix_opencv_clahe() +{ +} + +// StartRendering +void pix_opencv_clahe :: startRendering(){ +#if HAVE_LIBOPENCV_CL + ocl::DevicesInfo devicesInfo; + ocl::getOpenCLDevices(devicesInfo); + post("Found %d OpenCL device(s).", devicesInfo.size()); + for ( size_t i = 0; i < devicesInfo.size(); i++){ + post("%s %s", devicesInfo[i]->deviceVendor.c_str(), devicesInfo[i]->deviceName.c_str()); + } + + m_cpuFilter = createCLAHE(); + + if ( devicesInfo.size() == 0 ){ + post("can't find OpenCL device, switch to CPU mode"); + m_gpuMode = false; + } else { + m_oclFilter = ocl::createCLAHE(); + m_gpuMode = true; + } + clipLimitMess(m_clipLimit); + tileGridSizeMess(m_tileGridSize.width,m_tileGridSize.height); +#else + verbose(2,"no OpenCL support, it could be very slow !!"); +#endif /* HAVE_LIBOPENCV_CL */ + + m_rendering = true; +} + +void pix_opencv_clahe :: stopRendering(){ + m_rendering = false; +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_clahe :: processImage(imageStruct &image) +{ + if ( image.csize == 1 ){ + m_gray = Mat( image.ysize, image.xsize, CV_8UC1, image.data, image.csize*image.xsize); // just transform imageStruct to cv::Mat without copying data + } else if (image.csize == 4) { + m_imgMat = Mat( image.ysize, image.xsize, CV_8UC4, image.data, image.csize*image.xsize); // just transform imageStruct to cv::Mat without copying data + cvtColor(m_imgMat,m_gray,CV_RGBA2GRAY); + } else { + error("only support grayscale and RGBA image"); + } + +#if HAVE_LIBOPENCV_CL + if ( m_gpuMode ) { + try { + d_outframe = m_gray; + m_oclFilter->apply(d_outframe, d_outframe); + d_outframe.download(m_gray); + } catch (cv::Exception& e) { + error("can't use OpenCL, do you have OpenCL driver installed ?"); + error("error %d : %s", e.code, e.err.c_str()); + m_gpuMode = false; + return; + } +#else + if ( 0 ) { +#endif /* HAVE_LIBOPENCV_CL */ + } else { + m_cpuFilter->apply(m_gray, m_gray); + } + + if ( image.csize == 4 ){ + std::vector split; + cv::split(m_imgMat,split); + split.pop_back(); + split.push_back(m_gray); + cv::merge(split,m_imgMat); + } +} + +void pix_opencv_clahe :: clipLimitMess(t_float limit){ + m_clipLimit=limit; + if ( m_rendering ){ +#if HAVE_LIBOPENCV_CL + if ( m_gpuMode ){ + m_oclFilter->setClipLimit(m_clipLimit); +#else + if ( 0 ) { +#endif /* HAVE_LIBOPENCV_CL */ + } else { + m_cpuFilter->setClipLimit(m_clipLimit); + } + } +} + +void pix_opencv_clahe :: tileGridSizeMess(int width, int height){ + m_tileGridSize=cv::Size(MAX(width,1),MAX(height,1)); + if ( m_rendering ){ +#if HAVE_LIBOPENCV_CL + if ( m_gpuMode ){ + m_oclFilter->setTilesGridSize(m_tileGridSize); +#else + if ( 0 ) { +#endif /* HAVE_LIBOPENCV_CL */ + } else { + m_cpuFilter->setTilesGridSize(m_tileGridSize); + } + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_clahe :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG1(classPtr, "clipLimit", clipLimitMess, t_float); + CPPEXTERN_MSG2(classPtr, "tileGridSize", tileGridSizeMess, int, int); +} +#endif /* HAVE_CLAHE */ diff --git a/src/pix_opencv_clahe.h b/src/pix_opencv_clahe.h new file mode 100644 index 0000000..6d03a53 --- /dev/null +++ b/src/pix_opencv_clahe.h @@ -0,0 +1,84 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Threshold filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_CLAHE_H_ +#define INCLUDE_PIX_OPENCV_CLAHE_H_ + +#include "opencv2/opencv.hpp" +#if HAVE_LIBOPENCV_CL +#include "opencv2/ocl/ocl.hpp" +#endif /* HAVE_LIBOPENCV_CL */ + + +#include "Base/GemPixObj.h" +#include "RTE/MessageCallbacks.h" +#include "Gem/Exception.h" + + +using namespace cv; + + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_clahe + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_clahe : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_clahe, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_clahe(t_float clipLimit, int width, int height); + + ///////// + // Message handler + void clipLimitMess(float); + void tileGridSizeMess(int,int); + protected: + + ////////// + // Destructor + virtual ~pix_opencv_clahe(); + + ////////// + // Do the processing + virtual void processImage(imageStruct &image); + virtual void startRendering(); + virtual void stopRendering(); + + private: + + Mat m_imgMat, m_gray; +#if HAVE_LIBOPENCV_CL + ocl::oclMat d_outframe, d_frame; +#endif /* HAVE_LIBOPENCV_CL */ + + Ptr m_oclFilter, m_cpuFilter; + + bool m_gpuMode; + float m_clipLimit; + Size m_tileGridSize; + bool m_rendering; +}; +#endif // for header file diff --git a/src/pix_opencv_colorfilt.cc b/src/pix_opencv_colorfilt.cc new file mode 100644 index 0000000..d977e0a --- /dev/null +++ b/src/pix_opencv_colorfilt.cc @@ -0,0 +1,299 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_colorfilt.h" +#include "g_canvas.h" + +CPPEXTERN_NEW(pix_opencv_colorfilt) + +///////////////////////////////////////////////////////// +// +// pix_opencv_colorfilt +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_colorfilt :: pix_opencv_colorfilt() +{ + inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("R")); + inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("G")); + inlet_new(this->x_obj, &this->x_obj->ob_pd, &s_float, gensym("B")); + + x_R = outlet_new(this->x_obj, &s_float); + x_G = outlet_new(this->x_obj, &s_float); + x_B = outlet_new(this->x_obj, &s_float); + + x_colorR = 128; + x_colorG = 128; + x_colorB = 128; + + outlet_float( x_R, x_colorR ); + outlet_float( x_G, x_colorG ); + outlet_float( x_B, x_colorB ); + + comp_xsize=320; + comp_ysize=240; + + x_tolerance = 50; + + x_canvas = canvas_getcurrent(); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + brgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_colorfilt :: ~pix_opencv_colorfilt() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&brgb); +} + +void pix_opencv_colorfilt :: drawColor() +{ + int width, height; + char color[32]; + + sprintf( color, "#%.2X%.2X%.2X", x_colorR, x_colorG, x_colorB ); + width = rtext_width( glist_findrtext( (t_glist*)x_canvas, (t_text *)this->x_obj ) ); + height = rtext_height( glist_findrtext( (t_glist*)x_canvas, (t_text *)this->x_obj ) ); + sys_vgui((char*)".x%x.c delete rectangle %xCOLOR\n", x_canvas, this->x_obj ); + sys_vgui((char*)".x%x.c create rectangle %d %d %d %d -fill %s -tags %xCOLOR\n", + x_canvas, this->x_obj->te_xpix+width+5, this->x_obj->te_ypix, + this->x_obj->te_xpix+width+height+5, + this->x_obj->te_ypix+height, color, this->x_obj ); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_colorfilt :: processRGBAImage(imageStruct &image) +{ + int px,py; + unsigned char r,g,b; + int diff; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { + + comp_xsize = image.xsize; + comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgba ) + { + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&brgb); + } + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + brgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + } + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCopy(rgba, brgb); + + for( py=0; pyheight; py++ ) { + for( px=0; pxwidth; px++ ) { +#ifdef __APPLE__ + g = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4]; + r = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4+1]; + b = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4+3]; +#else + r = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4]; + g = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4+1]; + b = ((uchar*)(rgba->imageData + rgba->widthStep*(int)py))[(int)px*4+2]; +#endif + + diff = 0; + diff = abs(r-x_colorR ); + diff += abs(g-x_colorG ); + diff += abs(b-x_colorB ); + diff = diff/3; + + if ( diff > x_tolerance ) + { + (rgba->imageData + rgba->widthStep*(int)py)[(int)px*4] = 0x0; + (rgba->imageData + rgba->widthStep*(int)py)[(int)px*4+1] = 0x0; + (rgba->imageData + rgba->widthStep*(int)py)[(int)px*4+2] = 0x0; + (rgba->imageData + rgba->widthStep*(int)py)[(int)px*4+3] = 0x0; + } + } + } + + //copy back the processed frame to image + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_colorfilt :: processRGBImage(imageStruct &image) +{ + unsigned char r,g,b; + int diff; + int px, py; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgb ) + { + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&brgb); + } + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + brgb = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 4); + + } + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCopy(rgb, brgb); + + for( py=0; pyheight; py++ ) { + for( px=0; pxwidth; px++ ) { + b = ((uchar*)(rgb->imageData + rgb->widthStep*(int)py))[(int)px*3]; + g = ((uchar*)(rgb->imageData + rgb->widthStep*(int)py))[(int)px*3+1]; + r = ((uchar*)(rgb->imageData + rgb->widthStep*(int)py))[(int)px*3+2]; + + diff = 0; + diff = abs(r-x_colorR ); + diff += abs(g-x_colorG ); + diff += abs(b-x_colorB ); + + if ( diff > x_tolerance ) + { + (rgb->imageData + rgb->widthStep*(int)py)[(int)px*3] = 0x0; + (rgb->imageData + rgb->widthStep*(int)py)[(int)px*3+1] = 0x0; + (rgb->imageData + rgb->widthStep*(int)py)[(int)px*3+2] = 0x0; + } + } + } + + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_colorfilt :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_colorfilt : yuv format not supported" ); +} + +void pix_opencv_colorfilt :: processGrayImage(imageStruct &image) +{ + post( "pix_opencv_colorfilt : gray format not supported" ); +} + +void pix_opencv_colorfilt :: floatToleranceMess (float tolerance) +{ + if ( (int)tolerance>0 ) x_tolerance = (int)tolerance; +} + +void pix_opencv_colorfilt :: floatRMess (float r) +{ + if ( ( (int)r>=0 ) && ( (int)r<=255 ) ) x_colorR = (int)r; + if (glist_isvisible(x_canvas)) drawColor(); +} + +void pix_opencv_colorfilt :: floatGMess (float g) +{ + if ( ( (int)g>=0 ) && ( (int)g<=255 ) ) x_colorG = (int)g; + if (glist_isvisible(x_canvas)) drawColor(); +} + +void pix_opencv_colorfilt :: floatBMess (float b) +{ + if ( ( (int)b>=0 ) && ( (int)b<=255 ) ) x_colorB = (int)b; + if (glist_isvisible(x_canvas)) drawColor(); +} + +void pix_opencv_colorfilt :: pickMess (float xcur, float ycur) +{ + if ( ( xcur >= 0. ) && ( xcur <= comp_xsize ) + && ( ycur > 0. ) && ( ycur < comp_ysize ) ) + { +#ifdef __APPLE__ + x_colorR = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+1]; + x_colorG = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+2]; + x_colorB = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+3]; +#else + //ycur = brgb->height - ycur; + x_colorR = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4]; + x_colorG = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+1]; + x_colorB = ((uchar*)(brgb->imageData + brgb->widthStep*(int)ycur))[(int)xcur*4+2]; +#endif + outlet_float( x_R, x_colorR ); + outlet_float( x_G, x_colorG ); + outlet_float( x_B, x_colorB ); + + if (glist_isvisible(x_canvas)) drawColor(); + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_colorfilt :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::floatToleranceMessCallback, + gensym("tolerance"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::floatRMessCallback, + gensym("R"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::floatGMessCallback, + gensym("G"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::floatBMessCallback, + gensym("B"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_colorfilt::pickMessCallback, + gensym("pick"), A_FLOAT, A_FLOAT, A_NULL); +} + +void pix_opencv_colorfilt :: floatToleranceMessCallback(void *data, t_floatarg tolerance) +{ + GetMyClass(data)->floatToleranceMess((float)tolerance); +} + +void pix_opencv_colorfilt :: floatRMessCallback(void *data, t_floatarg r) +{ + GetMyClass(data)->floatRMess((float)r); +} + +void pix_opencv_colorfilt :: floatGMessCallback(void *data, t_floatarg g) +{ + GetMyClass(data)->floatGMess((float)g); +} + +void pix_opencv_colorfilt :: floatBMessCallback(void *data, t_floatarg b) +{ + GetMyClass(data)->floatBMess((float)b); +} + +void pix_opencv_colorfilt :: pickMessCallback(void *data, t_floatarg xcur, t_floatarg ycur) +{ + GetMyClass(data)->pickMess((float)xcur,(float)ycur); +} diff --git a/src/pix_opencv_colorfilt.h b/src/pix_opencv_colorfilt.h new file mode 100644 index 0000000..edbc6af --- /dev/null +++ b/src/pix_opencv_colorfilt.h @@ -0,0 +1,103 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Color filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_COLORFILT_H_ +#define INCLUDE_PIX_OPENCV_COLORFILT_H_ + +#include + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_colorfilt + + Color filter object + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_colorfilt : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_colorfilt, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_colorfilt(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_colorfilt(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatToleranceMess(float tolerance); + void floatRMess(float r); + void floatGMess(float g); + void floatBMess(float b); + void pickMess(float xcur, float ycur); + void drawColor(void); + + // The color tolerance + int x_tolerance; + unsigned char x_colorR; // RGB components of binary mask + unsigned char x_colorG; + unsigned char x_colorB; + + t_outlet *x_R; // output R component of selected color + t_outlet *x_G; // output G component of selected color + t_outlet *x_B; // output B component of selected color + + t_canvas *x_canvas; + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + ////////// + // Static member functions + static void floatToleranceMessCallback(void *data, float tolerance); + static void floatRMessCallback(void *data, float r); + static void floatGMessCallback(void *data, float g); + static void floatBMessCallback(void *data, float b); + static void pickMessCallback(void *data, float xcur, float ycur); + + ///////// + // IplImage needed + IplImage *rgba, *rgb, *brgb; +}; + +#endif // for header file diff --git a/src/pix_opencv_contours.cc b/src/pix_opencv_contours.cc new file mode 100644 index 0000000..bf4410d --- /dev/null +++ b/src/pix_opencv_contours.cc @@ -0,0 +1,591 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) +// pix_opencv_contours extract and simplify contours of incomming image +// by Antoine Villeret - 2012 + +#include "pix_opencv_contours.h" +#include +#include + +using namespace cv; + +CPPEXTERN_NEW(pix_opencv_contours) + +///////////////////////////////////////////////////////// +// +// pix_opencv_contours +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_contours :: pix_opencv_contours() : \ + m_repeat_point(1), \ + m_epsilon(2), \ + m_enable_contours(1), \ + m_enable_hulls(1), \ + m_enable_defects(1), \ + m_hierarchy_level(-1), \ + m_taboutput(0), \ + m_enable_cvblob(0), \ + m_areaThreshold(30), \ + m_totalPointsCount(0), \ + m_autoresize(0), \ + m_x_arrayname(NULL), \ + m_y_arrayname(NULL), \ + m_z_arrayname(NULL) +{ + m_dataout_middle = outlet_new(this->x_obj, 0); + m_dataout_right = outlet_new(this->x_obj, 0); + + //~ post("build on %s at %s", __DATE__, __TIME__); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_contours :: ~pix_opencv_contours() +{ +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_contours :: processImage(imageStruct &image) +{ + if ( image.xsize < 0 || image.ysize < 0 ) return; + + Mat imgMat2, input; + std::vector split_array; + + if ( image.csize == 1 ){ + imgMat2 = Mat( image.ysize, image.xsize, CV_8UC1, image.data, image.csize*image.xsize); // just transform imageStruct to cv::Mat without copying data + input = imgMat2; + } else if ( image.csize == 4 ){ + imgMat2 = Mat( image.ysize, image.xsize, CV_8UC4, image.data, image.csize*image.xsize); // just transform imageStruct to cv::Mat without copying data + split(imgMat2,split_array); + input = split_array[3]; // select alpha channel to find contours + } else { + error("suport only RGBA or GRAY image"); + return; + } + cv::Mat imgMat = input.clone(); // copy data because findContours will destroy it... + + m_contours.clear(); + m_convexhulls.clear(); + m_area.clear(); + + /*****************/ + /* Find Contours */ + /*****************/ + + std::vector > contours; + std::vector hierarchy; + cv::findContours(imgMat, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE); + + /* + std::cout << "hierarchy : \n" << std::endl; + std::cout << "id\tnext\tprev\tchild\tparent" << std::endl; + for ( size_t i = 0; i < contours.size(); i++ ) + { + std::cout << i << "\t" << hierarchy[i][0] << "\t" << hierarchy[i][1] << "\t" << hierarchy[i][2] << "\t" << hierarchy[i][3] << std::endl; + } + */ + + if ( m_hierarchy_level == -1 ) { + for ( size_t i = 0; i < contours.size(); i++ ) + { + int area = cv::contourArea(contours[i], false); + if ( area > m_areaThreshold ){ + std::vector one_contour; + if (m_epsilon > 0) { + cv::approxPolyDP(contours[i], one_contour, m_epsilon, true); + } else { + one_contour = contours[i]; + } + m_contours.push_back(one_contour); + m_area.push_back(area); + } + } + } else if ( m_hierarchy_level==-2 ) { + for ( size_t i = 0; i < contours.size(); i++ ) + { + int area = cv::contourArea(contours[i], false); + if ( area > m_areaThreshold && hierarchy[i][2] == -1 ){ // if contour area > threshold and if contour has no child (a hole) + std::vector one_contour; + if (m_epsilon > 0) { + cv::approxPolyDP(contours[i], one_contour, m_epsilon, true); + } else { + one_contour = contours[i]; + } + m_contours.push_back(one_contour); + m_area.push_back(area); + } + } + } else { + int i=0; + int hierarchy_level=0; + + while ( i < (int) contours.size() && i!=-1 && hierarchy_level != -1 ) + { + int area = cv::contourArea(contours[i], false); + if ( area > m_areaThreshold && hierarchy_level == m_hierarchy_level ) + { + std::vector one_contour; + if (m_epsilon > 0) { + cv::approxPolyDP(contours[i], one_contour, m_epsilon, true); + } else { + one_contour = contours[i]; + } + m_contours.push_back(one_contour); // push contour if it's big enough + m_area.push_back(area); + } + if ( hierarchy_level < m_hierarchy_level && hierarchy[i][2] != -1 ){ // si on n'a pas atteint le niveau choisi et qu'il y a un enfant on le prend + hierarchy_level++; + int j = i; + i=hierarchy[j][2]; // get the first child + } else if ( hierarchy[i][0] != -1 ) { + i=hierarchy[i][0]; // get the next contour at this hierarchy level if it exists + } else { + while ( hierarchy_level != -1 ) + { + hierarchy_level--; + i=hierarchy[i][3]; + if ( i < 0 ) break; // pas de parent... + if ( hierarchy[i][0] != -1 ) { + i=hierarchy[i][0]; // next du parent + break; + } + } + + } + } + } + + outputCount(); + outputBlobs(image); + outputContours(image); + + //~ cv::drawContours(imgMat2, m_contours, -1, cv::Scalar(128,255,255), 3); + + /**********************/ + /* Compute Convexhull */ + /**********************/ + if ( m_enable_defects || m_enable_hulls ) + { + for ( size_t i = 0; i < m_contours.size(); i++ ) + { + std::vector convexhull; + cv::convexHull(m_contours[i], convexhull); + m_convexhulls.push_back(convexhull); + } + } + + if ( m_enable_hulls ) + { + for ( size_t i = 0 ; i < m_convexhulls.size() ; i++ ) + { + int list_size=(int) m_convexhulls[i].size()*2+2; + + t_atom* data = new t_atom[list_size]; + + SETFLOAT(data,m_convexhulls[i].size()); // nb of points for current convexhull + SETFLOAT(data+1, 2); // each point is represented by 2 values + + t_atom* apt=data+2; + + for ( size_t j = 0 ; j < m_convexhulls[i].size() ; j++){ + int k = m_convexhulls[i][j]; + cv::Point pt = m_contours[i][k]; + SETFLOAT(apt, (float) pt.x/image.xsize); + SETFLOAT(apt+1, (float) pt.y/image.ysize); + apt+=2; + } + outlet_anything(m_dataout_middle, gensym("convexhull"), list_size, data); + + if (data) delete data; + data = NULL; + } + } + + /*****************************/ + /* Compute convexity defects */ + /*****************************/ + if ( m_enable_defects ) + { + for ( size_t i = 0 ; i < m_contours.size() ; i++ ) + { + std::vector defects(m_convexhulls[i].size()); + + cv::Ptr storage = cvCreateMemStorage(); + cv::InputArray _points = m_contours[i]; + cv::InputArray _hull = m_convexhulls[i]; + + cv::Mat points = _points.getMat(); + cv::Mat hull = _hull.getMat(); + + CvMat c_points = points, c_hull = hull; + + CvSeq* seq = cvConvexityDefects(&c_points, &c_hull, storage); + + double norm = sqrtf( image.xsize*image.ysize ); + + if ( !seq ) { + error("seq undefined..."); + continue; + } + + int list_size=(int) seq->total*7+2; + + if (seq->total > 0) + { + t_atom* data = new t_atom[list_size]; + + SETFLOAT(data, seq->total); // number of defect for current contour + SETFLOAT(data+1, 7); // a defect is represented by 7 values : start point (x,y), end point (x,y), farthest point (x,y) and defect depth + + cv::SeqIterator it = cv::Seq(seq).begin(); // TODO : crash sometimes but don't know why yet... + t_atom* apt = data+2; + + for ( int j = 0 ; j < seq->total ; j++, ++it ) + { + CvConvexityDefect& defect = *it; + SETFLOAT(apt, (float) defect.start->x/image.xsize); + SETFLOAT(apt+1, (float) defect.start->y/image.ysize); + SETFLOAT(apt+2, (float) defect.end->x/image.xsize); + SETFLOAT(apt+3, (float) defect.end->y/image.ysize); + SETFLOAT(apt+4, (float) defect.depth_point->x/image.xsize); + SETFLOAT(apt+5, (float) defect.depth_point->y/image.ysize); + SETFLOAT(apt+6, (float) defect.depth/norm); + apt+=7; + } + + outlet_anything(m_dataout_middle, gensym("convexitydefects"), list_size, data); + + if (data) delete data; + data = NULL; + } + } + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_contours :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG1(classPtr, "epsilon", epsilonMess, double); + CPPEXTERN_MSG1(classPtr, "area", areaMess, double); + CPPEXTERN_MSG1(classPtr, "contours", contoursMess, double); + CPPEXTERN_MSG1(classPtr, "cvblobOutput", cvblobMess, double); + CPPEXTERN_MSG1(classPtr, "convexhulls", convexhullsMess, double); + CPPEXTERN_MSG1(classPtr, "convexitydefects", convexitydefectsMess, double); + CPPEXTERN_MSG1(classPtr, "hierarchy_level", hierarchyMess, double); + CPPEXTERN_MSG1(classPtr, "taboutput", taboutputMess, float); + CPPEXTERN_MSG3(classPtr, "settab", tableMess, t_symbol*, t_symbol*, t_symbol*); + CPPEXTERN_MSG1(classPtr, "repeat_point", repeat_pointMess, float); +} + +void pix_opencv_contours :: outputCount(){ + m_totalPointsCount=0; + for( size_t i = 0 ; i < m_contours.size(); i++ ){ + m_totalPointsCount+=m_contours[i].size(); + } + m_totalPointsCount+=m_contours.size()*m_repeat_point*2; // add 2 points for each contour (on start and end) + + t_atom count_atom[2]; + SETFLOAT(count_atom, m_contours.size()); + SETFLOAT(count_atom+1, m_totalPointsCount); + outlet_anything(m_dataout_right, gensym("count"), 2, count_atom); +} + +void pix_opencv_contours :: outputBlobs(imageStruct &image){ + + if ( m_enable_cvblob ) + { + int blob_num=m_contours.size(); + int blobMatrixWidth=17; + int blob_atom_size = 2+blob_num*blobMatrixWidth; + + t_atom* blob_atom = new t_atom[blob_atom_size]; + for ( int i = 0; i < blob_atom_size; i++){ + SETFLOAT(blob_atom+i,0); + } + + SETFLOAT(blob_atom+1, blobMatrixWidth); + + int count(0); + int imageArea = image.xsize * image.ysize; + for( size_t i = 0 ; i < m_contours.size(); i++ ) + { + if (!m_contours[i].empty() && m_contours[i].size() > 2) { + + /* compute centroid */ + Moments mu = moments(m_contours[i]); + Point2f centroid; + centroid.x=mu.m10/mu.m00; + centroid.y=mu.m01/mu.m00; + cv::RotatedRect rot_rect = cv::minAreaRect(m_contours[i]); + cv::Point2f corners[4]; + rot_rect.points(corners); + double length = cv::arcLength(m_contours[i],true); + float area = m_area[i]; + + t_atom* apt = blob_atom+2+i*blobMatrixWidth; + + SETFLOAT(apt, count); // set Id + count++; + SETFLOAT(apt+1, rot_rect.center.x/image.xsize); // rotrect center + SETFLOAT(apt+2, rot_rect.center.y/image.ysize); + SETFLOAT(apt+3, rot_rect.size.width/image.xsize); // blob size + SETFLOAT(apt+4, rot_rect.size.height/image.ysize); + SETFLOAT(apt+5, rot_rect.angle); // rotrect angle + SETFLOAT(apt+6, area/imageArea); // blob area in % of image sizes + + t_atom* apt2 = apt+7; + + // blob rot rect 4 corners + for (int j=0;j<4;j++) { + SETFLOAT(apt2, corners[j].x/image.xsize); + SETFLOAT(apt2+1, corners[j].y/image.ysize); + apt2+=2; + } + + SETFLOAT(apt+15, m_contours[i].size()+m_repeat_point*2); // number of points in segment + SETFLOAT(apt+16, (float) length); + } + } + + SETFLOAT(blob_atom, (float) count); + if (count) outlet_anything(m_dataout_right, gensym("cvblob"), count*blobMatrixWidth+2, blob_atom); + else outlet_float(m_dataout_right, 0); + + if (blob_atom) delete blob_atom; + blob_atom = NULL; + } +} + +void pix_opencv_contours :: outputContours(imageStruct &image){ + if ( m_enable_contours ){ + if ( !m_taboutput ){ + for( size_t i = 0 ; i < m_contours.size() ; i++ ) + { + + if (!m_contours[i].empty() && m_contours[i].size() > 2) { + int size = 2+(m_repeat_point*2+m_contours[i].size())*2; + t_atom*acontours = new t_atom[size]; + t_atom* apt=acontours; + SETFLOAT(apt, static_cast(m_repeat_point*2+m_contours[i].size())); + SETFLOAT(apt+1, 2.0); + + apt+=2; + + for ( size_t j = 0 ; j < m_repeat_point ; j++){ + cv::Point pt = m_contours[i][0]; + SETFLOAT(apt, (float) pt.x/image.xsize); + SETFLOAT(apt+1,(float) pt.y/image.ysize); + apt+=2; + } + + for ( size_t j = 1 ; j < m_contours[i].size() ; j++){ + cv::Point pt = m_contours[i][j]; + SETFLOAT(apt,(float) pt.x/image.xsize); + SETFLOAT(apt+1,(float) pt.y/image.ysize); + apt+=2; + } + + for ( size_t j = 0 ; j < m_repeat_point ; j++){ + cv::Point pt = m_contours[i][0]; // repeat the first point to close the contour + SETFLOAT(apt, (float) pt.x/image.xsize); + SETFLOAT(apt+1,(float) pt.y/image.ysize); + apt+=2; + } + + outlet_anything(m_dataout_middle, gensym("contour"), size, acontours); + if(acontours) { + delete acontours; + acontours=NULL; + } + } + } + } else { + + //~ put contours in 3 tables. + //~ contours are separated by 0 values + + if ( m_x_arrayname == NULL || m_y_arrayname == NULL || m_z_arrayname == NULL){ + error("please settab before trying to write into..."); + return; + } + + int vecxsize(0), vecysize(0), veczsize(0); + t_garray *ax, *ay, *az; + t_word *vecx, *vecy, *vecz; + + //~ check if array exist + if (!(ax = (t_garray *)pd_findbyclass(m_x_arrayname, garray_class))){ + error("%s: no such array", m_x_arrayname->s_name); + return; + } + if (!(ay = (t_garray *)pd_findbyclass(m_y_arrayname, garray_class))){ + error("%s: no such array", m_y_arrayname->s_name); + return; + } + if (!(az = (t_garray *)pd_findbyclass(m_z_arrayname, garray_class))){ + error("%s: no such array", m_z_arrayname->s_name); + return; + } + + if (!garray_getfloatwords(ax, &vecxsize, &vecx)){ + error("%s: bad template for tabwrite", m_x_arrayname->s_name); + return; + } else if ( vecxsize != m_totalPointsCount && m_autoresize ){ + garray_resize_long(ax,m_totalPointsCount); + if (!garray_getfloatwords(ax, &vecxsize, &vecx)){ + error("%s: can't resize correctly", m_x_arrayname->s_name); + return; + } + } + + if (!garray_getfloatwords(ay, &vecysize, &vecy)){ + error("%s: bad template for tabwrite", m_y_arrayname->s_name); + return; + } else if ( vecysize != m_totalPointsCount && m_autoresize ){ + garray_resize_long(ay,m_totalPointsCount); + if (!garray_getfloatwords(ay, &vecysize, &vecy)){ + error("%s: can't resize correctly", m_y_arrayname->s_name); + return; + } + } + + if (!garray_getfloatwords(az, &veczsize, &vecz)){ + error("%s: bad template for tabwrite", m_z_arrayname->s_name); + return; + } else if ( veczsize != m_totalPointsCount && m_autoresize){ + garray_resize_long(az,m_totalPointsCount); + if (!garray_getfloatwords(az, &veczsize, &vecz)){ + error("%s: can't resize correctly", m_z_arrayname->s_name); + return; + } + } + + int n=0; + + for( size_t i = 0 ; i < m_contours.size(); i++ ) + { + if (n >= vecxsize || n>=vecysize || n>=veczsize) + { + error("array are not wide enough"); + break; + } + + unsigned int j; + cv::Point pt; + pt = m_contours[i][0]; + //~ start with blank point + for (j=0; j 0 ? arg : 0.; +} +void pix_opencv_contours :: areaMess(double arg) +{ + m_areaThreshold = arg > 0 ? arg : 30.; +} +void pix_opencv_contours :: contoursMess(double arg) +{ + m_enable_contours = arg > 0; +} +void pix_opencv_contours :: cvblobMess(double arg) +{ + m_enable_cvblob = arg > 0; +} +void pix_opencv_contours :: convexhullsMess(double arg) +{ + m_enable_hulls = arg > 0; +} +void pix_opencv_contours :: convexitydefectsMess(double arg) +{ + m_enable_defects = arg > 0; +} +void pix_opencv_contours :: hierarchyMess(int arg) +{ + m_hierarchy_level = arg < -2 ? -1 : arg; + m_mode = m_hierarchy_level == -1 ? CV_RETR_LIST : CV_RETR_TREE; +} + +void pix_opencv_contours :: taboutputMess(float arg) +{ + m_taboutput = arg > 0; +} + +void pix_opencv_contours :: repeat_pointMess(float arg) +{ + m_repeat_point = arg > 1 ? arg : 1; +} + +void pix_opencv_contours :: tableMess(t_symbol*xarray, t_symbol*yarray, t_symbol*zarray) +{ + // check if arrays exist + m_x_arrayname = xarray; + m_y_arrayname = yarray; + m_z_arrayname = zarray; + + m_taboutput = 1; +} diff --git a/src/pix_opencv_contours.h b/src/pix_opencv_contours.h new file mode 100644 index 0000000..01810e3 --- /dev/null +++ b/src/pix_opencv_contours.h @@ -0,0 +1,89 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_CONTOURS_H_ +#define INCLUDE_PIX_OPENCV_CONTOURS_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_contours + + detects contours and send them out + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_contours : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_contours, GemPixObj) + +public: + + ////////// + // Constructor + pix_opencv_contours(); + +protected: + + ////////// + // Destructor + virtual ~pix_opencv_contours(); + + ////////// + // Do the processing + virtual void processImage(imageStruct &image); + + // Messages handling + void epsilonMess(double arg); + void areaMess(double arg); + void contoursMess(double arg); + void cvblobMess(double arg); + void convexhullsMess(double arg); + void convexitydefectsMess(double arg); + void hierarchyMess(int arg); + void taboutputMess(float arg); + void tableMess(t_symbol*x, t_symbol*y, t_symbol*z); + void repeat_pointMess(float arg); + +private: + + void outputCount(); + void outputBlobs(imageStruct &image); + void outputContours(imageStruct &image); + t_outlet *m_dataout_middle; // contour outlet + t_outlet *m_dataout_right; // info outlet + std::vector > m_contours; + std::vector > m_convexhulls; + std::vector m_area; + + unsigned int m_repeat_point; + double m_epsilon; + + + int m_enable_contours, m_enable_hulls, m_enable_defects, m_hierarchy_level, m_mode, m_taboutput, m_enable_cvblob, m_areaThreshold; + int m_totalPointsCount, m_autoresize; + + t_symbol *m_x_arrayname, *m_y_arrayname, *m_z_arrayname; + +}; +#endif // for header file diff --git a/src/pix_opencv_contours_boundingrect.cc b/src/pix_opencv_contours_boundingrect.cc new file mode 100644 index 0000000..2d425d6 --- /dev/null +++ b/src/pix_opencv_contours_boundingrect.cc @@ -0,0 +1,772 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_contours_boundingrect.h" +#include + +CPPEXTERN_NEW(pix_opencv_contours_boundingrect) + +///////////////////////////////////////////////////////// +// +// pix_opencv_contours_boundingrect +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_contours_boundingrect :: pix_opencv_contours_boundingrect() +{ + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); + m_dataout = outlet_new(this->x_obj, 0); + m_countout = outlet_new(this->x_obj, 0); + minarea = 10*10; + maxarea = 320*240; + comp_xsize = 320; + comp_ysize = 240; + orig = NULL; + gray = NULL; + cnt_img = NULL; + rgb = NULL; + x_ftolerance = 5; + x_mmove = 20; + x_nightmode = 0; + x_show = 0; + x_draw = 1; + x_cmode = CV_RETR_LIST; + x_cmethod = CV_CHAIN_APPROX_SIMPLE; + + // initialize font + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 1.0, 1, 8 ); + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_contours_boundingrect :: ~pix_opencv_contours_boundingrect() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&cnt_img); + cvReleaseImage(&rgb); +} + +///////////////////////////////////////////////////////// +// Mark a contour +// +///////////////////////////////////////////////////////// +int pix_opencv_contours_boundingrect :: mark(float fx, float fy, float fw, float fh ) +{ + int i; + + if ( ( fx < 0.0 ) || ( fx > this->comp_xsize ) || ( fy < 0 ) || ( fy > this->comp_ysize ) ) + { + return -1; + } + + for ( i=0; icomp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&cnt_img); + cvReleaseImage(&rgb); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + + // Create the output images with new sizes + rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + cnt_img = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to grayscale + cvCvtColor(orig, gray, CV_RGBA2GRAY); + if ( x_nightmode ) + { + cvZero( orig ); + } + + CvSeq* contours; + CvMemStorage* stor02; + stor02 = cvCreateMemStorage(0); + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), x_cmode, x_cmethod, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + for ( im=0; imh_next ) + { + int count = contours->total; // This is number point in contour + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + + if ( ( (rect.width*rect.height) > minarea ) && ( (rect.width*rect.height) < maxarea ) ) + { + + oi = -1; + dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; + + for ( im=0; immark(rect.x, rect.y, rect.width, rect.height ); + } + else + { + x_xmark[oi] = (float)(rect.x+rect.width/2); + x_ymark[oi] = (float)(rect.y+rect.height/2); + x_wmark[oi] = (int)rect.width; + x_hmark[oi] = (int)rect.height; + x_found[oi] = x_ftolerance; + } + + if ( x_draw ) + { + cvRectangle( orig, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,0,0), 2, 8 , 0 ); + sprintf( tindex, "%d", oi ); + cvPutText( orig, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,0,255)); + } + + if ( x_show ) + { + cvDrawContours( orig, contours, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + } + + SETFLOAT(&rlist[0], oi); + SETFLOAT(&rlist[1], rect.x); + SETFLOAT(&rlist[2], rect.y); + SETFLOAT(&rlist[3], rect.width); + SETFLOAT(&rlist[4], rect.height); + + outlet_list( m_dataout, 0, 5, rlist ); + i++; + ic++; + } + } + + outlet_float( m_countout, ic ); + + // delete lost objects + for ( im=0; imimageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_contours_boundingrect :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + char tindex[4]; + t_atom rlist[5]; + int im = 0; // Indicator of markers. + int oi; + float dist, odist; // Distances + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&cnt_img); + cvReleaseImage(&rgb); + + //create the orig image with new size + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + cnt_img = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to grayscale + cvCvtColor(rgb, gray, CV_RGB2GRAY); + if ( x_nightmode ) + { + cvZero( rgb ); + } + + CvSeq* contours; + CvMemStorage* stor02; + stor02 = cvCreateMemStorage(0); + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), x_cmode, x_cmethod, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + for ( im=0; imh_next ) + { + int count = contours->total; // This is number point in contour + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + if ( ( (rect.width*rect.height) > minarea ) && ( (rect.width*rect.height) < maxarea ) ) + { + + oi = -1; + dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; + + for ( im=0; immark(rect.x, rect.y, rect.width, rect.height ); + } + else + { + x_xmark[oi] = (float)(rect.x+rect.width/2); + x_ymark[oi] = (float)(rect.y+rect.height/2); + x_wmark[oi] = (int)rect.width; + x_hmark[oi] = (int)rect.height; + x_found[oi] = x_ftolerance; + } + + if ( x_draw ) + { + cvRectangle( rgb, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,0,0), 2, 8 , 0 ); + sprintf( tindex, "%d", oi ); + cvPutText( rgb, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,0,255)); + } + + if ( x_show ) + { + cvDrawContours( rgb, contours, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + } + + SETFLOAT(&rlist[0], oi); + SETFLOAT(&rlist[1], rect.x); + SETFLOAT(&rlist[2], rect.y); + SETFLOAT(&rlist[3], rect.width); + SETFLOAT(&rlist[4], rect.height); + + outlet_list( m_dataout, 0, 5, rlist ); + i++; + ic++; + } + } + outlet_float( m_countout, ic ); + + // delete lost objects + for ( im=0; imimageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_contours_boundingrect :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_contours_boundingrect : yuv format not supported" ); +} + +void pix_opencv_contours_boundingrect :: processGrayImage(imageStruct &image) +{ + char tindex[4]; + t_atom rlist[5]; + int im = 0; // Indicator of markers. + int oi; + float dist, odist; // Distances + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&cnt_img); + cvReleaseImage(&rgb); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + + // Create the output images with new sizes + rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + cnt_img = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + memcpy( cnt_img->imageData, image.data, image.xsize*image.ysize ); + if ( x_nightmode ) + { + cvZero( cnt_img ); + } + + CvSeq* contours; + CvMemStorage* stor02; + stor02 = cvCreateMemStorage(0); + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), x_cmode, x_cmethod, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + for ( im=0; imh_next ) + { + int count = contours->total; // This is number point in contour + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + if ( ( (rect.width*rect.height) > minarea ) && ( (rect.width*rect.height) < maxarea ) ) + { + + oi = -1; + dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; + + for ( im=0; immark(rect.x, rect.y, rect.width, rect.height ); + } + else + { + x_xmark[oi] = (float)(rect.x+rect.width/2); + x_ymark[oi] = (float)(rect.y+rect.height/2); + x_wmark[oi] = (int)rect.width; + x_hmark[oi] = (int)rect.height; + x_found[oi] = x_ftolerance; + } + + if ( x_draw ) + { + cvRectangle( cnt_img, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), cvScalarAll(255), 2, 8 , 0 ); + sprintf( tindex, "%d", oi ); + cvPutText( cnt_img, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, cvScalarAll(255)); + } + + if ( x_show ) + { + cvDrawContours( cnt_img, contours, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + } + + SETFLOAT(&rlist[0], oi); + SETFLOAT(&rlist[1], rect.x); + SETFLOAT(&rlist[2], rect.y); + SETFLOAT(&rlist[3], rect.width); + SETFLOAT(&rlist[4], rect.height); + + outlet_list( m_dataout, 0, 5, rlist ); + i++; + ic++; + } + } + + outlet_float( m_countout, ic ); + + // delete lost objects + for ( im=0; imimageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_contours_boundingrect :: floatMinAreaMess (float minarea) +{ + if (minarea>0) this->minarea = (int)minarea; +} + +void pix_opencv_contours_boundingrect :: floatMaxAreaMess (float maxarea) +{ + if (maxarea>0) this->maxarea = (int)maxarea; +} + +void pix_opencv_contours_boundingrect :: floatFToleranceMess (float ftolerance) +{ + if ((int)ftolerance>=1) x_ftolerance = (int)ftolerance; +} + +void pix_opencv_contours_boundingrect :: floatMMoveMess (float mmove) +{ + if ((int)mmove>=1) x_mmove = (int)mmove; +} + +void pix_opencv_contours_boundingrect :: floatCModeMess (float cmode) +{ + // CV_RETR_EXTERNAL || CV_RETR_LIST || CV_RETR_CCOMP || CV_RETR_TREE + int mode = (int)cmode; + + if ( mode == CV_RETR_EXTERNAL ) + { + x_cmode = CV_RETR_EXTERNAL; + post( "pix_opencv_contours_boundingrect : mode set to CV_RETR_EXTERNAL" ); + } + if ( mode == CV_RETR_LIST ) + { + x_cmode = CV_RETR_LIST; + post( "pix_opencv_contours_boundingrect : mode set to CV_RETR_LIST" ); + } + if ( mode == CV_RETR_CCOMP ) + { + x_cmode = CV_RETR_CCOMP; + post( "pix_opencv_contours_boundingrect : mode set to CV_RETR_CCOMP" ); + } + if ( mode == CV_RETR_TREE ) + { + x_cmode = CV_RETR_TREE; + post( "pix_opencv_contours_boundingrect : mode set to CV_RETR_TREE" ); + } +} + +void pix_opencv_contours_boundingrect :: floatCMethodMess (float cmethod) +{ + int method = (int)cmethod; + + // CV_CHAIN_CODE || CV_CHAIN_APPROX_NONE || CV_CHAIN_APPROX_SIMPLE || CV_CHAIN_APPROX_TC89_L1 || CV_CHAIN_APPROX_TC89_KCOS || CV_LINK_RUNS + if ( method == CV_CHAIN_CODE ) + { + post( "pix_opencv_contours_boundingrect : not supported method : CV_CHAIN_CODE" ); + } + if ( method == CV_CHAIN_APPROX_NONE ) + { + x_cmethod = CV_CHAIN_APPROX_NONE; + post( "pix_opencv_contours_boundingrect : method set to CV_CHAIN_APPROX_NONE" ); + } + if ( method == CV_CHAIN_APPROX_SIMPLE ) + { + x_cmethod = CV_CHAIN_APPROX_SIMPLE; + post( "pix_opencv_contours_boundingrect : method set to CV_CHAIN_APPROX_SIMPLE" ); + } + if ( method == CV_CHAIN_APPROX_TC89_L1 ) + { + x_cmethod = CV_CHAIN_APPROX_TC89_L1; + post( "pix_opencv_contours_boundingrect : method set to CV_CHAIN_APPROX_TC89_L1" ); + } + if ( method == CV_CHAIN_APPROX_TC89_KCOS ) + { + x_cmethod = CV_CHAIN_APPROX_TC89_KCOS; + post( "pix_opencv_contours_boundingrect : method set to CV_CHAIN_APPROX_TC89_KCOS" ); + } + if ( ( method == CV_LINK_RUNS ) && ( x_cmode == CV_RETR_LIST ) ) + { + x_cmethod = CV_LINK_RUNS; + post( "pix_opencv_contours_boundingrect : method set to CV_LINK_RUNS" ); + } + +} + +void pix_opencv_contours_boundingrect :: deleteMark(t_floatarg findex ) +{ + int i; + + if ( ( findex < 0.0 ) || ( findex >= MAX_MARKERS ) ) + { + return; + } + + x_xmark[(int)findex] = -1; + x_ymark[(int)findex] = -1; + x_wmark[(int)findex] = -1; + x_hmark[(int)findex] = -1; +} + + +void pix_opencv_contours_boundingrect :: floatClearMess (void) +{ + int i; + + for ( i=0; ifloatMaxAreaMess((float)maxarea); +} + +void pix_opencv_contours_boundingrect :: floatMinAreaMessCallback(void *data, t_floatarg minarea) +{ + GetMyClass(data)->floatMinAreaMess((float)minarea); +} + +void pix_opencv_contours_boundingrect :: floatFToleranceMessCallback(void *data, t_floatarg ftolerance) +{ + GetMyClass(data)->floatFToleranceMess((float)ftolerance); +} + +void pix_opencv_contours_boundingrect :: floatMMoveMessCallback(void *data, t_floatarg mmove) +{ + GetMyClass(data)->floatMMoveMess((float)mmove); +} + +void pix_opencv_contours_boundingrect :: floatCModeMessCallback(void *data, t_floatarg cmode) +{ + GetMyClass(data)->floatCModeMess((float)cmode); +} + +void pix_opencv_contours_boundingrect :: floatCMethodMessCallback(void *data, t_floatarg cmethod) +{ + GetMyClass(data)->floatCMethodMess((float)cmethod); +} + +void pix_opencv_contours_boundingrect :: floatClearMessCallback(void *data) +{ + GetMyClass(data)->floatClearMess(); +} + +void pix_opencv_contours_boundingrect :: floatNightmodeMessCallback(void *data, t_floatarg nightmode) +{ + GetMyClass(data)->floatNightmodeMess(nightmode); +} + +void pix_opencv_contours_boundingrect :: floatShowMessCallback(void *data, t_floatarg show) +{ + GetMyClass(data)->floatShowMess(show); +} + +void pix_opencv_contours_boundingrect :: floatDrawMessCallback(void *data, t_floatarg draw) +{ + GetMyClass(data)->floatDrawMess(draw); +} diff --git a/src/pix_opencv_contours_boundingrect.h b/src/pix_opencv_contours_boundingrect.h new file mode 100644 index 0000000..8b47cbb --- /dev/null +++ b/src/pix_opencv_contours_boundingrect.h @@ -0,0 +1,124 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Contours Bounding Rectangle detection + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_CONTOURS_BOUNDINGRECT_H_ +#define INCLUDE_PIX_OPENCV_CONTOURS_BOUNDINGRECT_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/compat.hpp" +#endif + +#include "Base/GemPixObj.h" + +#define MAX_MARKERS 500 + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_contours_boundingrect + + Contours Bounding Rectangle detection + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_contours_boundingrect : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_contours_boundingrect, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_contours_boundingrect(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_contours_boundingrect(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatMinAreaMess(float minarea); + void floatMaxAreaMess(float maxarea); + void floatFToleranceMess(float maxarea); + void floatMMoveMess(float maxarea); + void floatCModeMess(float maxarea); + void floatCMethodMess(float maxarea); + void floatClearMess(void); + void floatNightmodeMess(float nightmode); + void floatShowMess(float show); + void floatDrawMess(float draw); + int mark(float fx, float fy, float fw, float fh ); + void deleteMark(float findex); + // The new minimal/maximal area + int minarea; + int maxarea; + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + float x_xmark[MAX_MARKERS]; + float x_ymark[MAX_MARKERS]; + int x_wmark[MAX_MARKERS]; + int x_hmark[MAX_MARKERS]; + int x_found[MAX_MARKERS]; + int x_ftolerance; + int x_mmove; + int x_nightmode; + int x_draw; + int x_show; + + // contours retrieval mode + int x_cmode; + // contours retrieval method + int x_cmethod; + + private: + + t_outlet *m_dataout; + t_outlet *m_countout; + ////////// + // Static member functions + static void floatMinAreaMessCallback(void *data, t_floatarg minarea); + static void floatMaxAreaMessCallback(void *data, t_floatarg maxarea); + static void floatFToleranceMessCallback(void *data, t_floatarg ftolerance); + static void floatMMoveMessCallback(void *data, t_floatarg mmove); + static void floatCModeMessCallback(void *data, t_floatarg cmode); + static void floatCMethodMessCallback(void *data, t_floatarg cmethod); + static void floatClearMessCallback(void *data); + static void floatNightmodeMessCallback(void *data, t_floatarg nightmode); + static void floatShowMessCallback(void *data, t_floatarg show); + static void floatDrawMessCallback(void *data, t_floatarg draw); + + ///////// + // IplImage needed + IplImage *rgb, *orig, *cnt_img, *gray; + CvFont font; + +}; + +#endif // for header file diff --git a/src/pix_opencv_contours_convexhull.cc b/src/pix_opencv_contours_convexhull.cc new file mode 100644 index 0000000..b84ea4d --- /dev/null +++ b/src/pix_opencv_contours_convexhull.cc @@ -0,0 +1,582 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_contours_convexhull.h" + +CPPEXTERN_NEW(pix_opencv_contours_convexhull) + +///////////////////////////////////////////////////////// +// +// pix_opencv_contours_convexhull +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_contours_convexhull :: pix_opencv_contours_convexhull() +{ + //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); + //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); + m_nomdef = outlet_new(this->x_obj, 0); + m_dataout = outlet_new(this->x_obj, 0); + minarea = 1; + maxarea = 320*240; + comp_xsize = 0; + comp_ysize = 0; + orig = NULL; + gray = NULL; + rgb = NULL; + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_contours_convexhull :: ~pix_opencv_contours_convexhull() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_contours_convexhull :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + + // Create the output images with new sizes + rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to grayscale + cvCvtColor(orig, gray, CV_RGBA2GRAY); + cvCvtColor(orig, rgb, CV_RGBA2RGB); + + //CvSeq* seqhull; + CvSeq* defects; + CvSeq* contours; + int* hull; + int hullsize; + CvPoint* PointArray; + CvConvexityDefect* defectArray; + CvMemStorage* stor02; + CvMemStorage* stor03; + stor02 = cvCreateMemStorage(0); + stor03 = cvCreateMemStorage(0); + + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + int i = 0; + int area = 0; + int selected = -1; + + //busquem el contorn mes gran + CvSeq* first_contour; + first_contour = contours; + for( ; contours != 0; contours = contours->h_next ) + { + CvRect rect; + int count = contours->total; + rect = cvContourBoundingRect(contours, 1); + if ( (rect.width*rect.height) > area ) + { + selected = i; + area = rect.width*rect.height; + } + i++; + } + + contours = first_contour; + + int k = 0; + for( ; contours != 0; contours = contours->h_next ) + { + int i; // Indicator of cycles. + int count = contours->total; // This is number point in contour + CvPoint center; + CvSize size; + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + if ( (k==selected) ) { + + + //fprintf(stderr,"malloc\n"); + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + + // Alloc memory for indices of convex hull vertices. + hull = (int*)malloc(sizeof(int)*count); + + // Get contour point set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); + + + // Find convex hull for curent contour. + //fprintf(stderr,"cvConvexHull\n"); + cvConvexHull( PointArray, + count, + NULL, + CV_COUNTER_CLOCKWISE, + hull, + &hullsize); + + // Find convex hull for current contour. + // This required for cvConvexityDefects(). + //fprintf(stderr,"cvConvexHull2\n"); + //seqhull = cvConvexHull2( contours,0, + // CV_COUNTER_CLOCKWISE, + // 0); + + + // Draw current contour. + //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); + //cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); + outlet_float( m_nomdef, hullsize ); + + t_atom* rlist = new t_atom[hullsize*2]; + + int j=0; + // Draw convex hull for current contour. + for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); + //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); + } + k++; + } + + cvReleaseMemStorage( &stor03 ); + cvReleaseMemStorage( &stor02 ); + //if (defects) cvClearSeq(defects); + //if (seqhull) cvClearSeq(seqhull); + + cvCvtColor(rgb, orig, CV_RGB2RGBA); + //copy back the processed frame to image + memcpy( image.data, orig->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_contours_convexhull :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + + //create the orig image with new size + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + // Create the output images with new sizes + + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to grayscale + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + + //CvSeq* seqhull; + CvSeq* defects; + CvSeq* contours; + int* hull; + int hullsize; + CvPoint* PointArray; + CvConvexityDefect* defectArray; + CvMemStorage* stor02; + CvMemStorage* stor03; + stor02 = cvCreateMemStorage(0); + stor03 = cvCreateMemStorage(0); + + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + int i = 0; + int area = 0; + int selected = -1; + + //busquem el contorn mes gran + CvSeq* first_contour; + first_contour = contours; + for( ; contours != 0; contours = contours->h_next ) + { + CvRect rect; + int count = contours->total; + rect = cvContourBoundingRect(contours, 1); + if ( (rect.width*rect.height) > area ) + { + selected = i; + area = rect.width*rect.height; + } + i++; + } + + contours = first_contour; + + int k = 0; + for( ; contours != 0; contours = contours->h_next ) + { + int i; // Indicator of cycles. + int count = contours->total; // This is number point in contour + CvPoint center; + CvSize size; + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + if ( (k==selected) ) { + + + //fprintf(stderr,"malloc\n"); + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + + // Alloc memory for indices of convex hull vertices. + hull = (int*)malloc(sizeof(int)*count); + + // Get contour point set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); + + + // Find convex hull for curent contour. + //fprintf(stderr,"cvConvexHull\n"); + cvConvexHull( PointArray, + count, + NULL, + CV_COUNTER_CLOCKWISE, + hull, + &hullsize); + + // Find convex hull for current contour. + // This required for cvConvexityDefects(). + //fprintf(stderr,"cvConvexHull2\n"); + //seqhull = cvConvexHull2( contours,0, + // CV_COUNTER_CLOCKWISE, + // 0); + + + // Draw current contour. + //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); + //cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); + outlet_float( m_nomdef, hullsize ); + + t_atom* rlist = new t_atom[hullsize*2]; + + int j=0; + // Draw convex hull for current contour. + for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); + //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); + } + k++; + } + + cvReleaseMemStorage( &stor03 ); + cvReleaseMemStorage( &stor02 ); + //if (defects) cvClearSeq(defects); + //if (seqhull) cvClearSeq(seqhull); + + //cvShowImage(wndname, cedge); + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); + + +} + +void pix_opencv_contours_convexhull :: processYUVImage(imageStruct &image) +{ +} + +void pix_opencv_contours_convexhull :: processGrayImage(imageStruct &image) +{ + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + + // Create the output images with new sizes + rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + cvCvtColor(gray, rgb, CV_GRAY2RGB); + + //CvSeq* seqhull; + CvSeq* defects; + CvSeq* contours; + int* hull; + int hullsize; + CvPoint* PointArray; + CvConvexityDefect* defectArray; + CvMemStorage* stor02; + CvMemStorage* stor03; + stor02 = cvCreateMemStorage(0); + stor03 = cvCreateMemStorage(0); + + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + int i = 0; + int area = 0; + int selected = -1; + + //busquem el contorn mes gran + CvSeq* first_contour; + first_contour = contours; + for( ; contours != 0; contours = contours->h_next ) + { + CvRect rect; + int count = contours->total; + rect = cvContourBoundingRect(contours, 1); + if ( (rect.width*rect.height) > area ) + { + selected = i; + area = rect.width*rect.height; + } + i++; + } + + contours = first_contour; + + int k = 0; + for( ; contours != 0; contours = contours->h_next ) + { + int i; // Indicator of cycles. + int count = contours->total; // This is number point in contour + CvPoint center; + CvSize size; + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + if ( (k==selected) ) { + + + //fprintf(stderr,"malloc\n"); + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + + // Alloc memory for indices of convex hull vertices. + hull = (int*)malloc(sizeof(int)*count); + + // Get contour point set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); + + + // Find convex hull for curent contour. + //fprintf(stderr,"cvConvexHull\n"); + cvConvexHull( PointArray, + count, + NULL, + CV_COUNTER_CLOCKWISE, + hull, + &hullsize); + + // Find convex hull for current contour. + // This required for cvConvexityDefects(). + //fprintf(stderr,"cvConvexHull2\n"); + //seqhull = cvConvexHull2( contours,0, + // CV_COUNTER_CLOCKWISE, + // 0); + + + // Draw current contour. + //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); + //cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); + + outlet_float( m_nomdef, hullsize ); + + t_atom* rlist = new t_atom[hullsize*2]; + + int j=0; + // Draw convex hull for current contour. + for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); + //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); + } + k++; + } + + cvReleaseMemStorage( &stor03 ); + cvReleaseMemStorage( &stor02 ); + //if (defects) cvClearSeq(defects); + //if (seqhull) cvClearSeq(seqhull); + + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + //copy back the processed frame to image + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_contours_convexhull :: floatMinAreaMess (float minarea) +{ + if (minarea>0) this->minarea = (int)minarea; +} +void pix_opencv_contours_convexhull :: floatMaxAreaMess (float maxarea) +{ + if (maxarea>0) this->maxarea = (int)maxarea; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_contours_convexhull :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_contours_convexhull::floatMinAreaMessCallback, + gensym("minarea"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_contours_convexhull::floatMaxAreaMessCallback, + gensym("maxarea"), A_FLOAT, A_NULL); +} +void pix_opencv_contours_convexhull :: floatMaxAreaMessCallback(void *data, t_floatarg maxarea) +{ + GetMyClass(data)->floatMaxAreaMess((float)maxarea); +} +void pix_opencv_contours_convexhull :: floatMinAreaMessCallback(void *data, t_floatarg minarea) +{ + GetMyClass(data)->floatMinAreaMess((float)minarea); +} diff --git a/src/pix_opencv_contours_convexhull.h b/src/pix_opencv_contours_convexhull.h new file mode 100644 index 0000000..0da4fe6 --- /dev/null +++ b/src/pix_opencv_contours_convexhull.h @@ -0,0 +1,88 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Change pix to greyscale + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_CONTOURS_CONVEXITY_H_ +#define INCLUDE_PIX_OPENCV_CONTOURS_CONVEXITY_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/compat.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_contours_convexhull + + Change pix to greyscale + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_contours_convexhull : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_contours_convexhull, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_contours_convexhull(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_contours_convexhull(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatMinAreaMess(float minarea); + void floatMaxAreaMess(float maxarea); + // The new minimal/maximal area + int minarea; + int maxarea; + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + t_outlet *m_nomdef; + t_outlet *m_dataout; + ////////// + // Static member functions + static void floatMinAreaMessCallback(void *data, t_floatarg minarea); + static void floatMaxAreaMessCallback(void *data, t_floatarg maxarea); + + ///////// + // IplImage needed + IplImage *rgb, *orig, *gray; + +}; + +#endif // for header file diff --git a/src/pix_opencv_contours_convexity.cc b/src/pix_opencv_contours_convexity.cc new file mode 100644 index 0000000..4c7260a --- /dev/null +++ b/src/pix_opencv_contours_convexity.cc @@ -0,0 +1,685 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_contours_convexity.h" + +CPPEXTERN_NEW(pix_opencv_contours_convexity) + +///////////////////////////////////////////////////////// +// +// pix_opencv_contours_convexity +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_contours_convexity :: pix_opencv_contours_convexity() +{ + //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); + //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); + m_nomdef = outlet_new(this->x_obj, 0); + m_dataout = outlet_new(this->x_obj, 0); + minarea = 1; + maxarea = 320*240; + comp_xsize = 0; + comp_ysize = 0; + orig = NULL; + gray = NULL; + rgb = NULL; + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_contours_convexity :: ~pix_opencv_contours_convexity() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_contours_convexity :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + + // Create the output images with new sizes + rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to grayscale + cvCvtColor(orig, gray, CV_RGBA2GRAY); + cvCvtColor(orig, rgb, CV_RGBA2RGB); + + CvSeq* seqhull; + CvSeq* defects; + CvSeq* contours; + int* hull; + int hullsize; + CvPoint* PointArray; + CvConvexityDefect* defectArray; + CvMemStorage* stor02; + CvMemStorage* stor03; + stor02 = cvCreateMemStorage(0); + stor03 = cvCreateMemStorage(0); + + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + int i = 0; + int area = 0; + int selected = -1; + + //busquem el contorn mes gran + CvSeq* first_contour; + first_contour = contours; + for( ; contours != 0; contours = contours->h_next ) + { + CvRect rect; + int count = contours->total; + rect = cvContourBoundingRect(contours, 1); + if ( (rect.width*rect.height) > area ) + { + selected = i; + area = rect.width*rect.height; + } + i++; + } + + contours = first_contour; + + int k = 0; + for( ; contours != 0; contours = contours->h_next ) + { + int i; // Indicator of cycles. + int count = contours->total; // This is number point in contour + CvPoint center; + CvSize size; + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + if ( (k==selected) ) { + + + //fprintf(stderr,"malloc\n"); + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + + // Alloc memory for indices of convex hull vertices. + hull = (int*)malloc(sizeof(int)*count); + + // Get contour point set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); + + + // Find convex hull for curent contour. + //fprintf(stderr,"cvConvexHull\n"); + cvConvexHull( PointArray, + count, + NULL, + CV_COUNTER_CLOCKWISE, + hull, + &hullsize); + + // Find convex hull for current contour. + // This required for cvConvexityDefects(). + //fprintf(stderr,"cvConvexHull2\n"); + seqhull = cvConvexHull2( contours,0, + CV_COUNTER_CLOCKWISE, + 0); + + // This required for cvConvexityDefects(). + // Otherwise cvConvexityDefects() falled. + if( hullsize < 4 ) + continue; + + // Find defects of convexity of current contours. + //fprintf(stderr,"cvConvexityDefects\n"); + defects = cvConvexityDefects( contours, + seqhull, + stor03); + int j=0; + // This cycle marks all defects of convexity of current contours. + for(;defects;defects = defects->h_next) + { + int nomdef = defects->total; // defect amount + outlet_float( m_nomdef, nomdef ); + + if(nomdef == 0) + continue; + + // Alloc memory for defect set. + //fprintf(stderr,"malloc\n"); + defectArray = (CvConvexityDefect*)malloc(sizeof(CvConvexityDefect)*nomdef); + + // Get defect set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(defects,defectArray, CV_WHOLE_SEQ); + + + // Draw marks for all defects. + for(i=0; ix); + SETFLOAT(&rlist[2], defectArray[i].start->y); + SETFLOAT(&rlist[3], defectArray[i].depth_point->x); + SETFLOAT(&rlist[4], defectArray[i].depth_point->y); + SETFLOAT(&rlist[5], defectArray[i].end->x); + SETFLOAT(&rlist[6], defectArray[i].end->y); + outlet_list( m_dataout, 0, 7, rlist ); + } + + j++; + + // Free memory. + free(defectArray); + } + + // Draw current contour. + //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); + cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); + + // Draw convex hull for current contour. + for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); + //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); + } + k++; + } + + cvReleaseMemStorage( &stor03 ); + cvReleaseMemStorage( &stor02 ); + //if (defects) cvClearSeq(defects); + //if (seqhull) cvClearSeq(seqhull); + + cvCvtColor(rgb, orig, CV_RGB2RGBA); + //copy back the processed frame to image + memcpy( image.data, orig->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_contours_convexity :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + + //create the orig image with new size + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + // Create the output images with new sizes + + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to grayscale + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + + CvSeq* seqhull; + CvSeq* defects; + CvSeq* contours; + int* hull; + int hullsize; + CvPoint* PointArray; + CvConvexityDefect* defectArray; + CvMemStorage* stor02; + CvMemStorage* stor03; + stor02 = cvCreateMemStorage(0); + stor03 = cvCreateMemStorage(0); + + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + int i = 0; + int area = 0; + int selected = -1; + + //busquem el contorn mes gran + CvSeq* first_contour; + first_contour = contours; + for( ; contours != 0; contours = contours->h_next ) + { + CvRect rect; + int count = contours->total; + rect = cvContourBoundingRect(contours, 1); + if ( (rect.width*rect.height) > area ) + { + selected = i; + area = rect.width*rect.height; + } + i++; + } + + contours = first_contour; + + int k = 0; + for( ; contours != 0; contours = contours->h_next ) + { + int i; // Indicator of cycles. + int count = contours->total; // This is number point in contour + CvPoint center; + CvSize size; + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + if ( (k==selected) ) { + + + //fprintf(stderr,"malloc\n"); + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + + // Alloc memory for indices of convex hull vertices. + hull = (int*)malloc(sizeof(int)*count); + + // Get contour point set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); + + + // Find convex hull for curent contour. + //fprintf(stderr,"cvConvexHull\n"); + cvConvexHull( PointArray, + count, + NULL, + CV_COUNTER_CLOCKWISE, + hull, + &hullsize); + + // Find convex hull for current contour. + // This required for cvConvexityDefects(). + //fprintf(stderr,"cvConvexHull2\n"); + seqhull = cvConvexHull2( contours,0, + CV_COUNTER_CLOCKWISE, + 0); + + // This required for cvConvexityDefects(). + // Otherwise cvConvexityDefects() falled. + if( hullsize < 4 ) + continue; + + // Find defects of convexity of current contours. + //fprintf(stderr,"cvConvexityDefects\n"); + defects = cvConvexityDefects( contours, + seqhull, + stor03); + int j=0; + // This cycle marks all defects of convexity of current contours. + for(;defects;defects = defects->h_next) + { + int nomdef = defects->total; // defect amount + outlet_float( m_nomdef, nomdef ); + + if(nomdef == 0) + continue; + + // Alloc memory for defect set. + //fprintf(stderr,"malloc\n"); + defectArray = (CvConvexityDefect*)malloc(sizeof(CvConvexityDefect)*nomdef); + + // Get defect set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(defects,defectArray, CV_WHOLE_SEQ); + + + // Draw marks for all defects. + for(i=0; ix); + SETFLOAT(&rlist[2], defectArray[i].start->y); + SETFLOAT(&rlist[3], defectArray[i].depth_point->x); + SETFLOAT(&rlist[4], defectArray[i].depth_point->y); + SETFLOAT(&rlist[5], defectArray[i].end->x); + SETFLOAT(&rlist[6], defectArray[i].end->y); + outlet_list( m_dataout, 0, 7, rlist ); + } + + j++; + + // Free memory. + free(defectArray); + } + + // Draw current contour. + //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); + cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); + + // Draw convex hull for current contour. + for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); + //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); + } + k++; + } + + cvReleaseMemStorage( &stor03 ); + cvReleaseMemStorage( &stor02 ); + //if (defects) cvClearSeq(defects); + //if (seqhull) cvClearSeq(seqhull); + + //cvShowImage(wndname, cedge); + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_contours_convexity :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_contours_convexity : yuv format not supported" ); +} + +void pix_opencv_contours_convexity :: processGrayImage(imageStruct &image) +{ + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + + // Create the output images with new sizes + rgb = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + cvCvtColor(gray, rgb, CV_GRAY2RGB); + + CvSeq* seqhull; + CvSeq* defects; + CvSeq* contours; + int* hull; + int hullsize; + CvPoint* PointArray; + CvConvexityDefect* defectArray; + CvMemStorage* stor02; + CvMemStorage* stor03; + stor02 = cvCreateMemStorage(0); + stor03 = cvCreateMemStorage(0); + + + cvFindContours( gray, stor02, &contours, sizeof(CvContour), CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + if (contours) contours = cvApproxPoly( contours, sizeof(CvContour), stor02, CV_POLY_APPROX_DP, 3, 1 ); + + int i = 0; + int area = 0; + int selected = -1; + + //busquem el contorn mes gran + CvSeq* first_contour; + first_contour = contours; + for( ; contours != 0; contours = contours->h_next ) + { + CvRect rect; + int count = contours->total; + rect = cvContourBoundingRect(contours, 1); + if ( (rect.width*rect.height) > area ) + { + selected = i; + area = rect.width*rect.height; + } + i++; + } + + contours = first_contour; + + int k = 0; + for( ; contours != 0; contours = contours->h_next ) + { + int i; // Indicator of cycles. + int count = contours->total; // This is number point in contour + CvPoint center; + CvSize size; + CvRect rect; + + rect = cvContourBoundingRect( contours, 1); + if ( (k==selected) ) { + + + //fprintf(stderr,"malloc\n"); + // Alloc memory for contour point set. + PointArray = (CvPoint*)malloc( count*sizeof(CvPoint) ); + + // Alloc memory for indices of convex hull vertices. + hull = (int*)malloc(sizeof(int)*count); + + // Get contour point set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(contours, PointArray, CV_WHOLE_SEQ); + + + // Find convex hull for curent contour. + //fprintf(stderr,"cvConvexHull\n"); + cvConvexHull( PointArray, + count, + NULL, + CV_COUNTER_CLOCKWISE, + hull, + &hullsize); + + // Find convex hull for current contour. + // This required for cvConvexityDefects(). + //fprintf(stderr,"cvConvexHull2\n"); + seqhull = cvConvexHull2( contours,0, + CV_COUNTER_CLOCKWISE, + 0); + + // This required for cvConvexityDefects(). + // Otherwise cvConvexityDefects() falled. + if( hullsize < 4 ) + continue; + + // Find defects of convexity of current contours. + //fprintf(stderr,"cvConvexityDefects\n"); + defects = cvConvexityDefects( contours, + seqhull, + stor03); + int j=0; + // This cycle marks all defects of convexity of current contours. + for(;defects;defects = defects->h_next) + { + int nomdef = defects->total; // defect amount + outlet_float( m_nomdef, nomdef ); + + if(nomdef == 0) + continue; + + // Alloc memory for defect set. + //fprintf(stderr,"malloc\n"); + defectArray = (CvConvexityDefect*)malloc(sizeof(CvConvexityDefect)*nomdef); + + // Get defect set. + //fprintf(stderr,"cvCvtSeqToArray\n"); + cvCvtSeqToArray(defects,defectArray, CV_WHOLE_SEQ); + + + // Draw marks for all defects. + for(i=0; ix); + SETFLOAT(&rlist[2], defectArray[i].start->y); + SETFLOAT(&rlist[3], defectArray[i].depth_point->x); + SETFLOAT(&rlist[4], defectArray[i].depth_point->y); + SETFLOAT(&rlist[5], defectArray[i].end->x); + SETFLOAT(&rlist[6], defectArray[i].end->y); + outlet_list( m_dataout, 0, 7, rlist ); + } + + j++; + + // Free memory. + free(defectArray); + } + + // Draw current contour. + //cvDrawContours(x->cnt_img,contours,CV_RGB(255,255,255),CV_RGB(255,255,255),0,1, 8); + cvDrawContours( rgb, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), 2, 2, CV_AA, cvPoint(0,0) ); + + // Draw convex hull for current contour. + for(i=0; icnt_img, contours, CV_RGB(255,0,0), CV_RGB(0,255,0), x->levels, 3, CV_AA, cvPoint(0,0) ); + //cvConvexityDefects( contours, cvConvexHull2( contours, 0, CV_CLOCKWISE, 0 ), stor022 ); + } + k++; + } + + cvReleaseMemStorage( &stor03 ); + cvReleaseMemStorage( &stor02 ); + //if (defects) cvClearSeq(defects); + //if (seqhull) cvClearSeq(seqhull); + + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + //copy back the processed frame to image + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_contours_convexity :: floatMinAreaMess (float minarea) +{ + if (minarea>0) this->minarea = (int)minarea; +} +void pix_opencv_contours_convexity :: floatMaxAreaMess (float maxarea) +{ + if (maxarea>0) this->maxarea = (int)maxarea; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_contours_convexity :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_contours_convexity::floatMinAreaMessCallback, + gensym("minarea"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_contours_convexity::floatMaxAreaMessCallback, + gensym("maxarea"), A_FLOAT, A_NULL); +} +void pix_opencv_contours_convexity :: floatMaxAreaMessCallback(void *data, t_floatarg maxarea) +{ + GetMyClass(data)->floatMaxAreaMess((float)maxarea); +} +void pix_opencv_contours_convexity :: floatMinAreaMessCallback(void *data, t_floatarg minarea) +{ + GetMyClass(data)->floatMinAreaMess((float)minarea); +} diff --git a/src/pix_opencv_contours_convexity.h b/src/pix_opencv_contours_convexity.h new file mode 100644 index 0000000..f7429c2 --- /dev/null +++ b/src/pix_opencv_contours_convexity.h @@ -0,0 +1,88 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Contours convexity detection + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_CONTOURS_CONVEXITY_H_ +#define INCLUDE_PIX_OPENCV_CONTOURS_CONVEXITY_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/compat.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_contours_convexity + + Contours convexity detection + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_contours_convexity : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_contours_convexity, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_contours_convexity(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_contours_convexity(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatMinAreaMess(float minarea); + void floatMaxAreaMess(float maxarea); + // The new minimal/maximal area + int minarea; + int maxarea; + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + t_outlet *m_nomdef; + t_outlet *m_dataout; + ////////// + // Static member functions + static void floatMinAreaMessCallback(void *data, t_floatarg minarea); + static void floatMaxAreaMessCallback(void *data, t_floatarg maxarea); + + ///////// + // IplImage needed + IplImage *rgb, *orig, *gray; + +}; + +#endif // for header file diff --git a/src/pix_opencv_dft.cc b/src/pix_opencv_dft.cc new file mode 100644 index 0000000..b7a3ce5 --- /dev/null +++ b/src/pix_opencv_dft.cc @@ -0,0 +1,462 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_dft.h" + +CPPEXTERN_NEW(pix_opencv_dft) + +///////////////////////////////////////////////////////// +// +// pix_opencv_dft +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_dft :: pix_opencv_dft() +{ + int i; + + x_calculate = 1; + comp_xsize=0; + comp_ysize=0; + + rgb = NULL; + rgba = NULL; + gray = NULL; + input_re = NULL; + input_im = NULL; + input_co = NULL; + dft_A = NULL; + image_re = NULL; + image_im = NULL; + image_mout = NULL; +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_dft :: ~pix_opencv_dft() +{ + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &rgba ); + //cvReleaseImage( &gray ); + cvReleaseImage( &input_re ); + cvReleaseImage( &input_im ); + cvReleaseImage( &input_co ); + cvReleaseMat( &dft_A ); + //cvReleaseImage( &mage_re ); + //cvReleaseImage( &image_im ); + //cvReleaseImage( &image_mout ); + +} + +///////////////////////////////////////////////////////// +// shiftDFT +// +///////////////////////////////////////////////////////// +void pix_opencv_dft :: shiftDFT(CvArr * src_arr, CvArr * dst_arr ) +{ + CvMat *tmp=NULL; + CvMat q1stub, q2stub; + CvMat q3stub, q4stub; + CvMat d1stub, d2stub; + CvMat d3stub, d4stub; + CvMat * q1, * q2, * q3, * q4; + CvMat * d1, * d2, * d3, * d4; + + CvSize size = cvGetSize(src_arr); + CvSize dst_size = cvGetSize(dst_arr); + int cx, cy; + + if(dst_size.width != size.width || + dst_size.height != size.height){ + return; + } + + if(src_arr==dst_arr){ + tmp = cvCreateMat(size.height/2, size.width/2, cvGetElemType(src_arr)); + } + + cx = size.width/2; + cy = size.height/2; // image center + + q1 = cvGetSubRect( src_arr, &q1stub, cvRect(0,0,cx, cy) ); + q2 = cvGetSubRect( src_arr, &q2stub, cvRect(cx,0,cx,cy) ); + q3 = cvGetSubRect( src_arr, &q3stub, cvRect(cx,cy,cx,cy) ); + q4 = cvGetSubRect( src_arr, &q4stub, cvRect(0,cy,cx,cy) ); + d1 = cvGetSubRect( src_arr, &d1stub, cvRect(0,0,cx,cy) ); + d2 = cvGetSubRect( src_arr, &d2stub, cvRect(cx,0,cx,cy) ); + d3 = cvGetSubRect( src_arr, &d3stub, cvRect(cx,cy,cx,cy) ); + d4 = cvGetSubRect( src_arr, &d4stub, cvRect(0,cy,cx,cy) ); + + if(src_arr!=dst_arr) + { + if( !CV_ARE_TYPES_EQ( q1, d1 )){ + return; + } + cvCopy(q3, d1, 0); + cvCopy(q4, d2, 0); + cvCopy(q1, d3, 0); + cvCopy(q2, d4, 0); + } + else + { + cvCopy(q3, tmp, 0); + cvCopy(q1, q3, 0); + cvCopy(tmp, q1, 0); + cvCopy(q4, tmp, 0); + cvCopy(q2, q4, 0); + cvCopy(tmp, q2, 0); + } + if(src_arr==dst_arr){ + cvReleaseMat( &tmp ); + } + +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_dft :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + CvMat tmp; + double m,M; + int px,py; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &rgba ); + //cvReleaseImage( &gray ); + cvReleaseImage( &input_re ); + cvReleaseImage( &input_im ); + cvReleaseImage( &input_co ); + cvReleaseMat( &dft_A ); + //cvReleaseImage( &image_re ); + //cvReleaseImage( &image_im ); + //cvReleaseImage( &image_mout ); + //cvReleaseImage( &image_pout ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + input_re = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); + input_im = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); + input_co = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 2); + dft_M = cvGetOptimalDFTSize( image.ysize - 1 ); + dft_N = cvGetOptimalDFTSize( image.xsize - 1 ); + dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); + image_re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); + image_im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); + image_mout = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_8U, 1); + + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor(rgba, gray, CV_BGRA2GRAY); + + if ( x_calculate ) + { + // discrete fourier transform + cvScale(gray, input_re, 1.0, 0.0); + cvZero(input_im); + cvMerge(input_re, input_im, NULL, NULL, input_co); + + // copy A to dft_A and pad dft_A with zeros + cvGetSubRect( dft_A, &tmp, cvRect(0,0, gray->width, gray->height)); + cvCopy( input_co, &tmp, NULL ); + if( dft_A->cols > gray->width ) + { + cvGetSubRect( dft_A, &tmp, cvRect(gray->width,0, dft_A->cols - gray->width, gray->height)); + cvZero( &tmp ); + } + + // no need to pad bottom part of dft_A with zeros because of + // use nonzero_rows parameter in cvDFT() call below + cvDFT( dft_A, dft_A, CV_DXT_FORWARD, input_co->height ); + + // Split Fourier in real and imaginary parts + cvSplit( dft_A, image_re, image_im, 0, 0 ); + + // Compute the magnitude of the spectrum Mag = sqrt(Re^2 + Im^2) + cvPow( image_re, image_re, 2.0); + cvPow( image_im, image_im, 2.0); + cvAdd( image_re, image_im, image_re, NULL); + cvPow( image_re, image_re, 0.5 ); + + // Compute log(1 + Mag) + cvAddS( image_re, cvScalarAll(1.0), image_re, NULL ); // 1 + Mag + cvLog( image_re, image_re ); // log(1 + Mag) + + // Rearrange the quadrants of Fourier image so that the origin is at + // the image center + this->shiftDFT( image_re, image_re ); + + // normalize image + cvMinMaxLoc(image_re, &m, &M, NULL, NULL, NULL); + cvScale(image_re, image_re, 255.0/(M-m), 255.0*(-m)/(M-m)); + + for( py=0; pyheight; py++ ) { + double* ptri = (double*) ( image_re->imageData + py * image_re->widthStep); + unsigned char* ptrp = (unsigned char*) ( image_mout->imageData + py * image_mout->widthStep); + for( px=0; pxwidth; px++ ) { + if ( *(ptrp+px) > 255.0 ) post( "pix_opencv_dft : error value over 255" ); + (*(ptrp+px)) = (unsigned char)( (*(ptri+px)) ); + } + } + + x_calculate=0; + } + + cvCvtColor(image_mout, rgba, CV_GRAY2RGBA); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_dft :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + CvMat tmp; + double m,M; + int px,py; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &rgba ); + //cvReleaseImage( &gray ); + cvReleaseImage( &input_re ); + cvReleaseImage( &input_im ); + cvReleaseImage( &input_co ); + cvReleaseMat( &dft_A ); + //cvReleaseImage( &image_re ); + //cvReleaseImage( &image_im ); + //cvReleaseImage( &image_mout ); + //cvReleaseImage( &image_pout ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + input_re = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); + input_im = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); + input_co = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 2); + dft_M = cvGetOptimalDFTSize( image.ysize - 1 ); + dft_N = cvGetOptimalDFTSize( image.xsize - 1 ); + dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); + image_re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); + image_im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); + image_mout = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_8U, 1); + + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtColor(rgb, gray, CV_BGR2GRAY); + + if ( x_calculate ) + { + // discrete fourier transform + cvScale(gray, input_re, 1.0, 0.0); + cvZero(input_im); + cvMerge(input_re, input_im, NULL, NULL, input_co); + + // copy A to dft_A and pad dft_A with zeros + cvGetSubRect( dft_A, &tmp, cvRect(0,0, gray->width, gray->height)); + cvCopy( input_co, &tmp, NULL ); + if( dft_A->cols > gray->width ) + { + cvGetSubRect( dft_A, &tmp, cvRect(gray->width,0, dft_A->cols - gray->width, gray->height)); + cvZero( &tmp ); + } + + // no need to pad bottom part of dft_A with zeros because of + // use nonzero_rows parameter in cvDFT() call below + cvDFT( dft_A, dft_A, CV_DXT_FORWARD, input_co->height ); + + // Split Fourier in real and imaginary parts + cvSplit( dft_A, image_re, image_im, 0, 0 ); + + // Compute the magnitude of the spectrum Mag = sqrt(Re^2 + Im^2) + cvPow( image_re, image_re, 2.0); + cvPow( image_im, image_im, 2.0); + cvAdd( image_re, image_im, image_re, NULL); + cvPow( image_re, image_re, 0.5 ); + + // Compute log(1 + Mag) + cvAddS( image_re, cvScalarAll(1.0), image_re, NULL ); // 1 + Mag + cvLog( image_re, image_re ); // log(1 + Mag) + + // Rearrange the quadrants of Fourier image so that the origin is at + // the image center + this->shiftDFT( image_re, image_re ); + + // normalize image + cvMinMaxLoc(image_re, &m, &M, NULL, NULL, NULL); + cvScale(image_re, image_re, 255.0/(M-m), 255.0*(-m)/(M-m)); + + for( py=0; pyheight; py++ ) { + double* ptri = (double*) ( image_re->imageData + py * image_re->widthStep); + unsigned char* ptrp = (unsigned char*) ( image_mout->imageData + py * image_mout->widthStep); + for( px=0; pxwidth; px++ ) { + if ( *(ptrp+px) > 255.0 ) post( "pix_opencv_dft : error value over 255" ); + (*(ptrp+px)) = (unsigned char)( (*(ptri+px)) ); + } + } + + x_calculate=0; + } + + cvCvtColor(image_mout, rgb, CV_GRAY2RGB); + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_dft :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_contours_convexity : yuv format not supported" ); +} + +void pix_opencv_dft :: processGrayImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + CvMat tmp; + double m,M; + int px,py; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &rgba ); + //cvReleaseImage( &gray ); + cvReleaseImage( &input_re ); + cvReleaseImage( &input_im ); + cvReleaseImage( &input_co ); + cvReleaseMat( &dft_A ); + //cvReleaseImage( &image_re ); + //cvReleaseImage( &image_im ); + //cvReleaseImage( &image_mout ); + //cvReleaseImage( &image_pout ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + input_re = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); + input_im = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 1); + input_co = cvCreateImage( cvGetSize(rgb), IPL_DEPTH_64F, 2); + dft_M = cvGetOptimalDFTSize( image.ysize - 1 ); + dft_N = cvGetOptimalDFTSize( image.xsize - 1 ); + dft_A = cvCreateMat( dft_M, dft_N, CV_64FC2 ); + image_re = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); + image_im = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_64F, 1); + image_mout = cvCreateImage( cvSize(dft_N, dft_M), IPL_DEPTH_8U, 1); + + } + + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + if ( x_calculate ) + { + // discrete fourier transform + cvScale(gray, input_re, 1.0, 0.0); + cvZero(input_im); + cvMerge(input_re, input_im, NULL, NULL, input_co); + + // copy A to dft_A and pad dft_A with zeros + cvGetSubRect( dft_A, &tmp, cvRect(0,0, gray->width, gray->height)); + cvCopy( input_co, &tmp, NULL ); + if( dft_A->cols > gray->width ) + { + cvGetSubRect( dft_A, &tmp, cvRect(gray->width,0, dft_A->cols - gray->width, gray->height)); + cvZero( &tmp ); + } + + // no need to pad bottom part of dft_A with zeros because of + // use nonzero_rows parameter in cvDFT() call below + cvDFT( dft_A, dft_A, CV_DXT_FORWARD, input_co->height ); + + // Split Fourier in real and imaginary parts + cvSplit( dft_A, image_re, image_im, 0, 0 ); + + // Compute the magnitude of the spectrum Mag = sqrt(Re^2 + Im^2) + cvPow( image_re, image_re, 2.0); + cvPow( image_im, image_im, 2.0); + cvAdd( image_re, image_im, image_re, NULL); + cvPow( image_re, image_re, 0.5 ); + + // Compute log(1 + Mag) + cvAddS( image_re, cvScalarAll(1.0), image_re, NULL ); // 1 + Mag + cvLog( image_re, image_re ); // log(1 + Mag) + + // Rearrange the quadrants of Fourier image so that the origin is at + // the image center + this->shiftDFT( image_re, image_re ); + + // normalize image + cvMinMaxLoc(image_re, &m, &M, NULL, NULL, NULL); + cvScale(image_re, image_re, 255.0/(M-m), 255.0*(-m)/(M-m)); + + for( py=0; pyheight; py++ ) { + double* ptri = (double*) ( image_re->imageData + py * image_re->widthStep); + unsigned char* ptrp = (unsigned char*) ( image_mout->imageData + py * image_mout->widthStep); + for( px=0; pxwidth; px++ ) { + if ( *(ptrp+px) > 255.0 ) post( "pix_opencv_dft : error value over 255" ); + (*(ptrp+px)) = (unsigned char)( (*(ptri+px)) ); + } + } + + x_calculate=0; + } + + memcpy( image.data, image_mout->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_dft :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_dft::calculateCallback, + gensym("bang"), A_NULL); +} + +void pix_opencv_dft :: calculateCallback(void *data) +{ + GetMyClass(data)->x_calculate = 1.0; +} diff --git a/src/pix_opencv_dft.h b/src/pix_opencv_dft.h new file mode 100644 index 0000000..7c96f6d --- /dev/null +++ b/src/pix_opencv_dft.h @@ -0,0 +1,88 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Discrete Fourier Transform + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_DFT_H_ +#define INCLUDE_PIX_OPENCV_DFT_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_dft + + Discrete Fourier Transform + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_dft : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_dft, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_dft(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_dft(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + int comp_xsize; + int comp_ysize; + int x_calculate; + int dft_M; + int dft_N; + + private: + + ////////// + // Static member functions + static void calculateCallback(void *data); + static void shiftDFT(CvArr*, CvArr*); + + // The output and temporary images + IplImage *rgb; + IplImage *rgba; + IplImage *gray; + IplImage *input_re; + IplImage *input_im; + IplImage *input_co; + CvMat *dft_A; + IplImage *image_re; + IplImage *image_im; + IplImage *image_mout; + +}; + +#endif // for header file diff --git a/src/pix_opencv_distrans.cc b/src/pix_opencv_distrans.cc new file mode 100644 index 0000000..a87485d --- /dev/null +++ b/src/pix_opencv_distrans.cc @@ -0,0 +1,420 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_distrans.h" + +CPPEXTERN_NEW(pix_opencv_distrans) + +///////////////////////////////////////////////////////// +// +// pix_opencv_distrans +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_distrans :: pix_opencv_distrans() +{ + int i; + + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); + + edge_thresh = 25; + build_voronoi = 0; + comp_xsize = 0; + comp_ysize = 0; + + dist = NULL; + dist8u1 = NULL; + dist8u2 = NULL; + dist8u = NULL; + dist32s = NULL; + rgb = NULL; + gray = NULL; + edge = NULL; + labels = NULL; + rgba = NULL; + alpha = NULL; + + mask_size = CV_DIST_MASK_PRECISE; + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_distrans :: ~pix_opencv_distrans() +{ + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &edge ); + cvReleaseImage( &dist ); + cvReleaseImage( &dist8u ); + cvReleaseImage( &dist8u1 ); + cvReleaseImage( &dist8u2 ); + cvReleaseImage( &dist32s ); + cvReleaseImage( &labels ); + cvReleaseImage( &rgba ); + cvReleaseImage( &alpha ); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_distrans :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + static const uchar colors[][3] = + { + {0,0,0}, + {255,0,0}, + {255,128,0}, + {255,255,0}, + {0,255,0}, + {0,128,255}, + {0,255,255}, + {0,0,255}, + {255,0,255} + }; + int msize = mask_size; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &edge ); + cvReleaseImage( &dist ); + cvReleaseImage( &dist8u ); + cvReleaseImage( &dist8u1 ); + cvReleaseImage( &dist8u2 ); + cvReleaseImage( &dist32s ); + cvReleaseImage( &labels ); + cvReleaseImage( &rgba ); + cvReleaseImage( &alpha ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); + dist8u1 = cvCloneImage( gray ); + dist8u2 = cvCloneImage( gray ); + dist8u = cvCreateImage( cvGetSize(gray), IPL_DEPTH_8U, 3 ); + dist32s = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); + edge = cvCloneImage( gray ); + labels = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); + rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + } + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + + cvCvtColor(rgba, rgb, CV_RGBA2RGB); + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + cvThreshold( gray, edge, (float)edge_thresh, (float)edge_thresh, CV_THRESH_BINARY ); + + if( build_voronoi ) + msize = CV_DIST_MASK_5; + + cvDistTransform( edge, dist, CV_DIST_L2, msize, NULL, build_voronoi ? labels : NULL ); + + if( !build_voronoi ) + { + // begin "painting" the distance transform result + cvConvertScale( dist, dist, 5000.0, 0 ); + cvPow( dist, dist, 0.5 ); + + cvConvertScale( dist, dist32s, 1.0, 0.5 ); + cvAndS( dist32s, cvScalarAll(255), dist32s, 0 ); + cvConvertScale( dist32s, dist8u1, 1, 0 ); + cvConvertScale( dist32s, dist32s, -1, 0 ); + cvAddS( dist32s, cvScalarAll(255), dist32s, 0 ); + cvConvertScale( dist32s, dist8u2, 1, 0 ); + cvMerge( dist8u1, dist8u2, dist8u2, 0, dist8u ); + // end "painting" the distance transform result + } + else + { + int i, j; + for( i = 0; i < labels->height; i++ ) + { + int* ll = (int*)(labels->imageData + i*labels->widthStep); + float* dd = (float*)(dist->imageData + i*dist->widthStep); + uchar* d = (uchar*)(dist8u->imageData + i*dist8u->widthStep); + for( j = 0; j < labels->width; j++ ) + { + int idx = ll[j] == 0 || dd[j] == 0 ? 0 : (ll[j]-1)%8 + 1; + int b = cvRound(colors[idx][0]); + int g = cvRound(colors[idx][1]); + int r = cvRound(colors[idx][2]); + d[j*3] = (uchar)b; + d[j*3+1] = (uchar)g; + d[j*3+2] = (uchar)r; + } + } + } + + + cvCvtColor(dist8u, rgba, CV_RGB2RGBA); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_distrans :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + static const uchar colors[][3] = + { + {0,0,0}, + {255,0,0}, + {255,128,0}, + {255,255,0}, + {0,255,0}, + {0,128,255}, + {0,255,255}, + {0,0,255}, + {255,0,255} + }; + int msize = mask_size; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &edge ); + cvReleaseImage( &dist ); + cvReleaseImage( &dist8u ); + cvReleaseImage( &dist8u1 ); + cvReleaseImage( &dist8u2 ); + cvReleaseImage( &dist32s ); + cvReleaseImage( &labels ); + cvReleaseImage( &rgba ); + cvReleaseImage( &alpha ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); + dist8u1 = cvCloneImage( gray ); + dist8u2 = cvCloneImage( gray ); + dist8u = cvCreateImage( cvGetSize(gray), IPL_DEPTH_8U, 3 ); + dist32s = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); + edge = cvCloneImage( gray ); + labels = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); + rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + cvCvtColor(rgb, gray, CV_BGR2GRAY); + + cvThreshold( gray, edge, (float)edge_thresh, (float)edge_thresh, CV_THRESH_BINARY ); + + if( build_voronoi ) + msize = CV_DIST_MASK_5; + + cvDistTransform( edge, dist, CV_DIST_L2, msize, NULL, build_voronoi ? labels : NULL ); + + if( !build_voronoi ) + { + // begin "painting" the distance transform result + cvConvertScale( dist, dist, 5000.0, 0 ); + cvPow( dist, dist, 0.5 ); + + cvConvertScale( dist, dist32s, 1.0, 0.5 ); + cvAndS( dist32s, cvScalarAll(255), dist32s, 0 ); + cvConvertScale( dist32s, dist8u1, 1, 0 ); + cvConvertScale( dist32s, dist32s, -1, 0 ); + cvAddS( dist32s, cvScalarAll(255), dist32s, 0 ); + cvConvertScale( dist32s, dist8u2, 1, 0 ); + cvMerge( dist8u1, dist8u2, dist8u2, 0, dist8u ); + // end "painting" the distance transform result + } + else + { + int i, j; + for( i = 0; i < labels->height; i++ ) + { + int* ll = (int*)(labels->imageData + i*labels->widthStep); + float* dd = (float*)(dist->imageData + i*dist->widthStep); + uchar* d = (uchar*)(dist8u->imageData + i*dist8u->widthStep); + for( j = 0; j < labels->width; j++ ) + { + int idx = ll[j] == 0 || dd[j] == 0 ? 0 : (ll[j]-1)%8 + 1; + int b = cvRound(colors[idx][0]); + int g = cvRound(colors[idx][1]); + int r = cvRound(colors[idx][2]); + d[j*3] = (uchar)b; + d[j*3+1] = (uchar)g; + d[j*3+2] = (uchar)r; + } + } + } + + //cvShowImage(wndname, cedge); + memcpy( image.data, dist8u->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_distrans :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_distrans : yuv format not supported" ); +} + +void pix_opencv_distrans :: processGrayImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + static const uchar colors[][3] = + { + {0,0,0}, + {255,0,0}, + {255,128,0}, + {255,255,0}, + {0,255,0}, + {0,128,255}, + {0,255,255}, + {0,0,255}, + {255,0,255} + }; + int msize = mask_size; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &edge ); + cvReleaseImage( &dist ); + cvReleaseImage( &dist8u ); + cvReleaseImage( &dist8u1 ); + cvReleaseImage( &dist8u2 ); + cvReleaseImage( &dist32s ); + cvReleaseImage( &labels ); + cvReleaseImage( &rgba ); + cvReleaseImage( &alpha ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); + dist8u1 = cvCloneImage( gray ); + dist8u2 = cvCloneImage( gray ); + dist8u = cvCreateImage( cvGetSize(gray), IPL_DEPTH_8U, 3 ); + dist32s = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); + edge = cvCloneImage( gray ); + labels = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32S, 1 ); + rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + + cvThreshold( gray, edge, (float)edge_thresh, (float)edge_thresh, CV_THRESH_BINARY ); + + if( build_voronoi ) + msize = CV_DIST_MASK_5; + + cvDistTransform( edge, dist, CV_DIST_L2, msize, NULL, build_voronoi ? labels : NULL ); + + if( !build_voronoi ) + { + // begin "painting" the distance transform result + cvConvertScale( dist, dist, 5000.0, 0 ); + cvPow( dist, dist, 0.5 ); + + cvConvertScale( dist, dist32s, 1.0, 0.5 ); + cvAndS( dist32s, cvScalarAll(255), dist32s, 0 ); + cvConvertScale( dist32s, dist8u1, 1, 0 ); + cvConvertScale( dist32s, dist32s, -1, 0 ); + cvAddS( dist32s, cvScalarAll(255), dist32s, 0 ); + cvConvertScale( dist32s, dist8u2, 1, 0 ); + cvMerge( dist8u1, dist8u2, dist8u2, 0, dist8u ); + // end "painting" the distance transform result + } + else + { + int i, j; + for( i = 0; i < labels->height; i++ ) + { + int* ll = (int*)(labels->imageData + i*labels->widthStep); + float* dd = (float*)(dist->imageData + i*dist->widthStep); + uchar* d = (uchar*)(dist8u->imageData + i*dist8u->widthStep); + for( j = 0; j < labels->width; j++ ) + { + int idx = ll[j] == 0 || dd[j] == 0 ? 0 : (ll[j]-1)%8 + 1; + int b = cvRound(colors[idx][0]); + int g = cvRound(colors[idx][1]); + int r = cvRound(colors[idx][2]); + d[j*3] = (uchar)b; + d[j*3+1] = (uchar)g; + d[j*3+2] = (uchar)r; + } + } + } + + + cvCvtColor(dist8u, gray, CV_RGB2GRAY); + //cvShowImage(wndname, cedge); + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_distrans :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_distrans::thresholdMessCallback, + gensym("ft1"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_distrans::voronoiMessCallback, + gensym("voronoi"), A_DEFFLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_distrans::maskMessCallback, + gensym("mask"), A_DEFFLOAT, A_NULL); +} +void pix_opencv_distrans :: thresholdMessCallback(void *data, t_floatarg pos) +{ + if (pos>=0) GetMyClass(data)->edge_thresh = (int)pos; +} +void pix_opencv_distrans :: voronoiMessCallback(void *data, t_floatarg voronoi) +{ + GetMyClass(data)->build_voronoi=!(!(int)voronoi); +} +void pix_opencv_distrans :: maskMessCallback(void *data, t_floatarg f) +{ + if( (int)f == 3 ) + GetMyClass(data)->mask_size = CV_DIST_MASK_3; + else if( (int)f == 5 ) + GetMyClass(data)->mask_size = CV_DIST_MASK_5; + else if( (int)f == 0 ) + GetMyClass(data)->mask_size = CV_DIST_MASK_PRECISE; +} diff --git a/src/pix_opencv_distrans.h b/src/pix_opencv_distrans.h new file mode 100644 index 0000000..3f77466 --- /dev/null +++ b/src/pix_opencv_distrans.h @@ -0,0 +1,86 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Distrans algorithm + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_DISTRANS_H_ +#define INCLUDE_PIX_OPENCV_DISTRANS_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_distrans + + Distrans algorithm + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_distrans : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_distrans, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_distrans(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_distrans(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + // Some varibales to control mophology voronoi + int edge_thresh; + int build_voronoi; + int mask_size; + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + + private: + + ////////// + // Static member functions + static void thresholdMessCallback(void *data, t_floatarg pos); + static void voronoiMessCallback(void *data, t_floatarg voronoi); + static void maskMessCallback(void *data, t_floatarg f); + + // The output and temporary images + IplImage *dist, *dist8u1, *dist8u2, *dist8u, *dist32s; + IplImage *rgb, *gray, *edge, *labels; + IplImage *rgba, *alpha; + +}; + +#endif // for header file diff --git a/src/pix_opencv_edge.cc b/src/pix_opencv_edge.cc new file mode 100644 index 0000000..270f233 --- /dev/null +++ b/src/pix_opencv_edge.cc @@ -0,0 +1,234 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_edge.h" + +CPPEXTERN_NEW(pix_opencv_edge) + +///////////////////////////////////////////////////////// +// +// pix_opencv_edge +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_edge :: pix_opencv_edge() +{ + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); + edge_thresh = 50; + comp_xsize = 0; + comp_ysize = 0; + orig = NULL; + gray = NULL; + edge = NULL; + cedge = NULL; + cedgergb = NULL; + rgb = NULL; + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_edge :: ~pix_opencv_edge() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&edge); + cvReleaseImage(&cedge); + cvReleaseImage(&cedgergb); + cvReleaseImage(&rgb); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_edge :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&edge); + cvReleaseImage(&cedge); + cvReleaseImage(&cedgergb); + cvReleaseImage(&rgb); + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + + // Create the output images with new sizes + cedge = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 4); + + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + edge = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to grayscale + cvCvtColor(orig, gray, CV_BGRA2GRAY); + + cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 ); + cvNot( gray, edge ); + + // Run the edge detector on grayscale + cvCanny(gray, edge, (float)this->edge_thresh, (float)this->edge_thresh*3, 3); + + cvZero( cedge ); + // copy edge points + cvCopy( orig, cedge, edge ); + + //copy back the processed frame to image + memcpy( image.data, cedge->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_edge :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&edge); + cvReleaseImage(&cedge); + cvReleaseImage(&cedgergb); + cvReleaseImage(&rgb); + + //create the orig image with new size + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + // Create the output images with new sizes + cedgergb = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + edge = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to grayscale + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 ); + cvNot( gray, edge ); + + // Run the edge detector on grayscale + cvCanny(gray, edge, (float)this->edge_thresh, (float)this->edge_thresh*3, 3); + + cvZero( cedgergb ); + // copy edge points + cvCopy( rgb, cedgergb, edge ); + + //cvShowImage(wndname, cedge); + memcpy( image.data, cedgergb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_edge :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_edge : yuv format not supported" ); +} + +void pix_opencv_edge :: processGrayImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&edge); + cvReleaseImage(&cedge); + cvReleaseImage(&cedgergb); + cvReleaseImage(&rgb); + + //create the orig image with new size + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + + // Create the output images with new sizes + cedgergb = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 3); + + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + edge = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + // Convert to RGB + cvCvtColor( gray, rgb, CV_GRAY2RGB); + + cvSmooth( gray, edge, CV_BLUR, 3, 3, 0, 0 ); + cvNot( gray, edge ); + + // Run the edge detector on grayscale + cvCanny(gray, edge, (float)this->edge_thresh, (float)this->edge_thresh*3, 3); + + cvZero( cedgergb ); + // copy edge points + cvCopy( rgb, cedgergb, edge ); + + cvCvtColor( cedgergb, gray, CV_RGB2GRAY); + //cvShowImage(wndname, cedge); + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_edge :: floatThreshMess (float edge_thresh) +{ + this->edge_thresh = (int)edge_thresh; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_edge :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_edge::floatTreshMessCallback, + gensym("ft1"), A_FLOAT, A_NULL); +} +void pix_opencv_edge :: floatTreshMessCallback(void *data, t_floatarg edge_thresh) +{ + GetMyClass(data)->floatThreshMess((float)edge_thresh); +} diff --git a/src/pix_opencv_edge.h b/src/pix_opencv_edge.h new file mode 100644 index 0000000..283811d --- /dev/null +++ b/src/pix_opencv_edge.h @@ -0,0 +1,82 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Edge detection + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_EDGE_H_ +#define INCLUDE_PIX_OPENCV_EDGE_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_edge + + Edge detection + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_edge : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_edge, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_edge(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_edge(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatThreshMess(float edge_thresh); + // The new edge threshold + int edge_thresh; + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + ////////// + // Static member functions + static void floatTreshMessCallback(void *data, t_floatarg edge_thresh); + + ///////// + // IplImage needed + IplImage *rgb, *orig, *cedge, *cedgergb, *gray, *edge; + +}; + +#endif // for header file diff --git a/src/pix_opencv_facetracker.cc b/src/pix_opencv_facetracker.cc new file mode 100644 index 0000000..e5021d0 --- /dev/null +++ b/src/pix_opencv_facetracker.cc @@ -0,0 +1,302 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) +// FaceTracker for pix_opencv + +#ifdef HAVE_FACETRACKER +#include "pix_opencv_facetracker.h" + +using namespace FACETRACKER; + +CPPEXTERN_NEW(pix_opencv_facetracker) + +static std::vector consecutive(int start, int end) { + int n = end - start; + std::vector result(n); + for(int i = 0; i < n; i++) { + result[i] = start + i; + } + return result; +} + +std::vector pix_opencv_facetracker::getFeatureIndices(int feature) { + switch(feature) { + case LEFT_JAW: return consecutive(0, 9); + case RIGHT_JAW: return consecutive(8, 17); + case JAW: return consecutive(0, 17); + case LEFT_EYEBROW: return consecutive(17, 22); + case RIGHT_EYEBROW: return consecutive(22, 27); + case LEFT_EYE: return consecutive(36, 42); + case RIGHT_EYE: return consecutive(42, 48); + case OUTER_MOUTH: return consecutive(48, 60); + case INNER_MOUTH: { + static int innerMouth[] = {48,60,61,62,54,63,64,65}; + return std::vector(innerMouth, innerMouth + 8); + } + case NOSE_BRIDGE: return consecutive(27, 31); + case NOSE_BASE: return consecutive(31, 36); + case FACE_OUTLINE: { + static int faceOutline[] = {17,18,19,20,21,22,23,24,25,26, 16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}; + return std::vector(faceOutline, faceOutline + 27); + } + case ALL_FEATURES: return consecutive(0, 66); + } +} + +///////////////////////////////////////////////////////// +// +// pix_opencv_facetracker +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_facetracker :: pix_opencv_facetracker() : m_fcheck(false), \ + m_scale(1), \ + m_fpd(-1), \ + m_show(true), \ + m_nIter(5), \ + m_clamp(3), \ + m_fTol(0.01), \ + m_failed(true), \ + m_fps(-1), \ + m_t1(0), \ + m_t0(0), \ + m_taboutput(0), \ + m_autoresize(0) +{ + m_dataout = outlet_new(this->x_obj, 0); + + //set other tracking parameters + m_wSize1.push_back(7); + m_wSize2.push_back(11); m_wSize2.push_back(9); m_wSize2.push_back(7); + + for ( int i = 0; i<13 ; i++) m_arraysname[i]=NULL; + + t_canvas* canvas=canvas_getcurrent(); + char *basename=canvas_getdir(canvas)->s_name; + + m_tracker.Load((std::string(basename) + "/model/face2.tracker").c_str()); + m_tri = IO::LoadTri((std::string(basename) + "/model/face.tri").c_str()); + m_con = IO::LoadCon((std::string(basename) + "/model/face.con").c_str()); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_facetracker :: ~pix_opencv_facetracker() +{ + +} + +void pix_opencv_facetracker :: OutputMesh(cv::Mat &image,cv::Mat &shape,cv::Mat &con,cv::Mat &tri,cv::Mat &visi) +{ + int n = shape.rows/2; + int vecsize(0); + t_garray *array; + t_word *vec; + + for ( int i = 0; i<13 ; i++ ){ + + std::vector indices = getFeatureIndices(i); + cv::Point pt; + + if ( m_arraysname[i] == NULL ){ + continue; + } + if (!(array = (t_garray *)pd_findbyclass(m_arraysname[i], garray_class))){ + error("%s: no such array", m_arraysname[i]->s_name); + continue; + } + + if (!garray_getfloatwords(array, &vecsize, &vec)){ + error("%s: bad template for tabwrite", m_arraysname[i]->s_name); + continue; + } + //~if ( indices.size()*3 != vecsize ){ + //~garray_resize_long(array,indices.size()*3); + //~if (!garray_getfloatwords(array, &vecsize, &vec)){ + //~error("%s: can't resize correctly", m_arraysname[i]->s_name); + //~continue; + //~} + //~} + + int idx(0); + + for( size_t j = 0 ; j < indices.size(); j++ ) + { + idx=3*j; + vec[idx].w_float = (float) shape.at(indices[j],0)/image.cols; + vec[idx+1].w_float = (float) shape.at(indices[j]+n,0)/image.rows; + vec[idx+2].w_float = 0.; + //~printf("update %s, indice %d : %.2f,%.2f,%.2f\n",m_arraysname[i]->s_name, idx, vec[idx].w_float, vec[idx+1].w_float, vec[idx+2].w_float); + } + + garray_redraw(array); + } +} + +void pix_opencv_facetracker :: Draw(cv::Mat &image,cv::Mat &shape,cv::Mat &con,cv::Mat &tri,cv::Mat &visi) +{ + int i,n = shape.rows/2; cv::Point p1,p2; cv::Scalar c; + + //draw triangulation + c = CV_RGB(0,0,0); + for(i = 0; i < tri.rows; i++){ + if(visi.at(tri.at(i,0),0) == 0 || + visi.at(tri.at(i,1),0) == 0 || + visi.at(tri.at(i,2),0) == 0)continue; + p1 = cv::Point(shape.at(tri.at(i,0),0), + shape.at(tri.at(i,0)+n,0)); + p2 = cv::Point(shape.at(tri.at(i,1),0), + shape.at(tri.at(i,1)+n,0)); + cv::line(image,p1,p2,c); + p1 = cv::Point(shape.at(tri.at(i,0),0), + shape.at(tri.at(i,0)+n,0)); + p2 = cv::Point(shape.at(tri.at(i,2),0), + shape.at(tri.at(i,2)+n,0)); + cv::line(image,p1,p2,c); + p1 = cv::Point(shape.at(tri.at(i,2),0), + shape.at(tri.at(i,2)+n,0)); + p2 = cv::Point(shape.at(tri.at(i,1),0), + shape.at(tri.at(i,1)+n,0)); + cv::line(image,p1,p2,c); + } + //draw connections + c = CV_RGB(0,0,255); + for(i = 0; i < con.cols; i++){ + if(visi.at(con.at(0,i),0) == 0 || + visi.at(con.at(1,i),0) == 0)continue; + p1 = cv::Point(shape.at(con.at(0,i),0), + shape.at(con.at(0,i)+n,0)); + p2 = cv::Point(shape.at(con.at(1,i),0), + shape.at(con.at(1,i)+n,0)); + cv::line(image,p1,p2,c,1); + } + //draw points + for(i = 0; i < n; i++){ + if(visi.at(i,0) == 0)continue; + p1 = cv::Point(shape.at(i,0),shape.at(i+n,0)); + c = CV_RGB(255,0,0); cv::circle(image,p1,2,c); + }return; +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// + +void pix_opencv_facetracker :: processImage(imageStruct &image) +{ + cv::Mat gray, im; + if ( image.ysize < 1 || image.xsize < 1 ) return; + if ( image.csize == 1 ){ + gray = cv::Mat( image.ysize, image.xsize, CV_8UC1, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data + im = gray; + } else if ( image.csize == 3 ) { + im = cv::Mat( image.ysize, image.xsize, CV_8UC3, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data + cv::cvtColor(im,gray,CV_RGB2GRAY); + } else if ( image.csize == 4 ) { + im = cv::Mat( image.ysize, image.xsize, CV_8UC4, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data + cv::cvtColor(im,gray,CV_RGBA2GRAY); + } else { + error("pix_opencv_facetracker : unsupported video format %d",image.csize); + return; + } + + //track this image + std::vector wSize; + if(m_failed)wSize = m_wSize2; + else wSize = m_wSize1; + + if(m_tracker.Track(gray,wSize,m_fpd,m_nIter,m_clamp,m_fTol,m_fcheck) == 0){ + int idx = m_tracker._clm.GetViewIdx(); m_failed = false; + OutputMesh(im,m_tracker._shape,m_con,m_tri,m_tracker._clm._visi[idx]); + if (m_show) Draw(im,m_tracker._shape,m_con,m_tri,m_tracker._clm._visi[idx]); + }else{ + m_tracker.FrameReset(); m_failed = true; + } + //draw framerate on display image + if(m_fnum >= 9){ + m_t1 = cvGetTickCount(); + m_fps = 10.0/((double(m_t1-m_t0)/cvGetTickFrequency())/1e+6); + m_t0 = m_t1; m_fnum = 0; + }else m_fnum += 1; + if(m_show){ + char text[256]; + sprintf(text,"%.2f frames/sec",(float)m_fps); + cv::putText(im,text,cv::Point(10,20), CV_FONT_HERSHEY_SIMPLEX,0.5,CV_RGB(255,255,255)); + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_facetracker :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG0(classPtr, "reset", resetMess); + CPPEXTERN_MSG1(classPtr, "show", showMess, int); + CPPEXTERN_MSG2(classPtr, "settab", tableMess, t_symbol*, t_symbol*); + CPPEXTERN_MSG1(classPtr, "tolerance", toleranceMess, float); + CPPEXTERN_MSG1(classPtr, "clamp", clampMess, float); + CPPEXTERN_MSG1(classPtr, "filter", filterMess, float); +} + +void pix_opencv_facetracker :: resetMess(void){ + m_tracker.FrameReset(); +} + +void pix_opencv_facetracker :: showMess(int flag){ + m_show = flag>0; +} + +void pix_opencv_facetracker :: tableMess(t_symbol*featurename, t_symbol*arrayname) +{ + std::string name(featurename->s_name); + + int i=-1; + if ( name == "LEFT_EYEBROW" ) i = 0; + else if ( name == "RIGHT_EYEBROW" ) i = 1; + else if ( name == "LEFT_EYE" ) i = 2; + else if ( name == "RIGHT_EYE" ) i = 3; + else if ( name == "LEFT_JAW" ) i = 4; + else if ( name == "RIGHT_JAW" ) i = 5; + else if ( name == "JAW" ) i = 6; + else if ( name == "OUTER_MOUTH" ) i = 7; + else if ( name == "INNER_MOUTH" ) i = 8; + else if ( name == "NOSE_BRIDGE" ) i = 9; + else if ( name == "NOSE_BASE" ) i = 10; + else if ( name == "FACE_OUTLINE" ) i = 11; + else if ( name == "ALL_FEATURES" ) i = 12; + if ( i < 0 ) error("can't find feature %s",name.c_str()); + else { m_arraysname[i] = arrayname; m_taboutput = 1; } +} + +void pix_opencv_facetracker :: toleranceMess(float arg){ + m_fTol=arg; +} + +void pix_opencv_facetracker :: clampMess(float arg){ + m_clamp=arg; +} + +void pix_opencv_facetracker :: filterMess(float arg){ + m_nIter=int(arg); +} +#endif /* HAVE_FACETRACKER */ diff --git a/src/pix_opencv_facetracker.h b/src/pix_opencv_facetracker.h new file mode 100644 index 0000000..407e468 --- /dev/null +++ b/src/pix_opencv_facetracker.h @@ -0,0 +1,107 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Threshold filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_FACETRACKER_H_ +#define INCLUDE_PIX_OPENCV_FACETRACKER_H_ + +#ifndef _EiC +#include "opencv2/opencv.hpp" +#endif + +#include "FaceTracker/Tracker.h" + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_facetracker + + FaceTracker implementation + * see https://github.com/kylemcdonald/FaceTracker + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_facetracker : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_facetracker, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_facetracker(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_facetracker(); + + ////////// + // Do the processing + virtual void processImage(imageStruct &image); + + void resetMess(void); + void showMess(int); + void tableMess(t_symbol*xarray, t_symbol*yarray); + void clampMess(float arg); + void toleranceMess(float arg); + void filterMess(float arg); + + private: + + enum Feature { + LEFT_EYEBROW, RIGHT_EYEBROW, + LEFT_EYE, RIGHT_EYE, + LEFT_JAW, RIGHT_JAW, JAW, + OUTER_MOUTH, INNER_MOUTH, + NOSE_BRIDGE, NOSE_BASE, + FACE_OUTLINE, ALL_FEATURES + }; + + void Draw(cv::Mat &image,cv::Mat &shape,cv::Mat &con,cv::Mat &tri,cv::Mat &visi); + void OutputMesh(cv::Mat &image,cv::Mat &shape,cv::Mat &con,cv::Mat &tri,cv::Mat &visi); + std::vector getFeatureIndices(int feature); + + bool m_fcheck; + double m_scale; + int m_fpd; + bool m_show; + int m_nIter; + double m_clamp, m_fTol; + bool m_failed; + int m_fps; + int64 m_t1,m_t0; + int m_fnum; + bool m_taboutput; // enable table output + bool m_autoresize; // flag to resize table according to mesh size + + //set other tracking parameters + std::vector m_wSize1; + std::vector m_wSize2; + + t_outlet *m_dataout; // info outlet + FACETRACKER::Tracker m_tracker; + cv::Mat m_tri, m_con; + + t_symbol* m_arraysname[13]; + +}; +#endif // for header file diff --git a/src/pix_opencv_findchessboardcorners.cc b/src/pix_opencv_findchessboardcorners.cc new file mode 100644 index 0000000..42fcd61 --- /dev/null +++ b/src/pix_opencv_findchessboardcorners.cc @@ -0,0 +1,220 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_findchessboardcorners.h" +#include + +CPPEXTERN_NEW(pix_opencv_findchessboardcorners) + +///////////////////////////////////////////////////////// +// +// pix_opencv_findchessboardcorners +// by Antoine Villeret +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_findchessboardcorners :: pix_opencv_findchessboardcorners() +{ + //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); + //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); + m_dataout = outlet_new(this->x_obj, 0); + //m_countout = outlet_new(this->x_obj, 0); + comp_xsize = 320; + comp_ysize = 240; + gray = NULL; + tmp_color = NULL; + tmp_gray = NULL; + rgb = NULL; + + pattern_size = cvSize(6,7); + corners = new CvPoint2D32f[pattern_size.width * pattern_size.height]; + cornerCount = 0; + win = cvSize(11, 11); + zero_zone = cvSize(-1,-1); + flags = CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS; + criteria = cvTermCriteria(CV_TERMCRIT_EPS+CV_TERMCRIT_ITER, 30, 0.1); + coord_list = new t_atom[pattern_size.width * pattern_size.height * 2]; // all coordinates are packed in one list [x0 y0 x1 y1 .. xn yn( + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_findchessboardcorners :: ~pix_opencv_findchessboardcorners() +{ + //Destroy cv_images to clean memory + if (gray) cvReleaseImage(&gray); + if (rgb) cvReleaseImage(&rgb); + if (tmp_color) cvReleaseImage(&tmp_color); + if (tmp_gray) cvReleaseImage(&tmp_gray); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_findchessboardcorners :: processRGBAImage(imageStruct &image) +{ + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if(gray) cvReleaseImage(&gray); + if(rgb) cvReleaseImage(&rgb); + if(tmp_color) cvReleaseImage(&tmp_color); + + // Create images with new sizes + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + tmp_gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + } + + // no need to copy a lot of memory, just point to it... + rgb->imageData = (char*) image.data; + cvCvtColor( rgb, tmp_gray, CV_RGBA2GRAY); + + //~ printf("find corner...*/\n"); + int found = cvFindChessboardCorners( tmp_gray, pattern_size, corners, &cornerCount, flags); + //~ printf(" found : %d\n",found); + + + if ( found ) { + //~ printf("find corner sub pix...\n"); + cvFindCornerSubPix( tmp_gray, corners, cornerCount, win, zero_zone, criteria); + } + + // Draw corners on the image + //cvCvtColor( gray, tmp_color, CV_GRAY2RGBA); + cvDrawChessboardCorners( rgb, pattern_size, corners, cornerCount, found); + //cvCvtColor( tmp_color, gray, CV_RGBA2GRAY); + + // send out corners screen coordinates if all corners have been found + if (found) { + int i; + CvPoint2D32f *pt; + pt = (CvPoint2D32f *) corners; + for ( i=0; ix); + SETFLOAT(&coord_list[i*2+1], pt->y); + pt++; + } + outlet_list( m_dataout, 0, pattern_size.width * pattern_size.height*2, coord_list ); + } +} + +void pix_opencv_findchessboardcorners :: processRGBImage(imageStruct &image) +{ + // TODO + error("cant't support RGB image for now"); +} + +void pix_opencv_findchessboardcorners :: processYUVImage(imageStruct &image) +{ + // TODO + error( "pix_opencv_findchessboardcorners : yuv format not supported" ); +} + +void pix_opencv_findchessboardcorners :: processGrayImage(imageStruct &image) +{ + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!gray)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if(gray) cvReleaseImage(&gray); + if(rgb) cvReleaseImage(&rgb); + if(tmp_color) cvReleaseImage(&tmp_color); + if(tmp_gray) cvReleaseImage(&tmp_gray); + + // Create images with new sizes + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + tmp_color = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + } + + // no need to copy a lot of memory, just point to it... + gray->imageData = (char*) image.data; + //~ printf("find corner...*/\n"); + int found = cvFindChessboardCorners( gray, pattern_size, corners, &cornerCount, flags); + //~ printf(" found : %d\n",found); + + + if ( found ) { + //~ printf("find corner sub pix...\n"); + cvFindCornerSubPix( gray, corners, cornerCount, win, zero_zone, criteria); + } + + // Draw corners on the image + cvCvtColor( gray, tmp_color, CV_GRAY2RGBA); + cvDrawChessboardCorners( tmp_color, pattern_size, corners, cornerCount, found); + cvCvtColor( tmp_color, gray, CV_RGBA2GRAY); + + // send out corners screen coordinates if all corners have been found + if (found) { + int i; + CvPoint2D32f *pt; + pt = (CvPoint2D32f *) corners; + for ( i=0; ix); + SETFLOAT(&coord_list[i*2+1], pt->y); + pt++; + } + outlet_list( m_dataout, 0, pattern_size.width * pattern_size.height*2, coord_list ); + } +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_findchessboardcorners :: patternSizeMess (int xsize, int ysize) +{ + if ( xsize < 3 || ysize < 3 ) { + error("patternSize should be at least 3x3"); + return; + } + pattern_size=cvSize(xsize,ysize); + // update corners array & output list size + delete coord_list; + coord_list = new t_atom[pattern_size.width * pattern_size.height * 2]; + delete corners; + corners = new CvPoint2D32f[pattern_size.width * pattern_size.height]; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_findchessboardcorners :: obj_setupCallback(t_class *classPtr) +{ + // TODO add support for message : win, zero_zone, flags and criteria + class_addmethod(classPtr, (t_method)&pix_opencv_findchessboardcorners::patternSizeMessCallback, + gensym("patternSize"), A_FLOAT, A_FLOAT, A_NULL); +} + +void pix_opencv_findchessboardcorners :: patternSizeMessCallback(void *data, t_floatarg xsize, t_floatarg ysize) +{ + GetMyClass(data)->patternSizeMess((int)xsize, (int)ysize); +} diff --git a/src/pix_opencv_findchessboardcorners.h b/src/pix_opencv_findchessboardcorners.h new file mode 100644 index 0000000..a8bfcea --- /dev/null +++ b/src/pix_opencv_findchessboardcorners.h @@ -0,0 +1,98 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Contours Bounding Rectangle detection + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ +// findchessboardcorners integration by Antoine Villeret - 2011 + +#ifndef INCLUDE_PIX_OPENCV_FINDCHESSBOARDCORNERS_H_ +#define INCLUDE_PIX_OPENCV_FINDCHESSBOARDCORNERS_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +#define MAX_MARKERS 500 + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_findchessboardcorners + + Chessboard corners detection + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_findchessboardcorners : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_findchessboardcorners, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_findchessboardcorners(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_findchessboardcorners(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ///////// + // Setup + void patternSizeMess (int xsize, int ysize); + + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + + CvSize pattern_size; // pattern size (inner corners count in 2D) + CvPoint2D32f *corners; // array to store corners coordinates + int cornerCount; // number of corners found + int flags; // flags for cvFindChessboardCorners + CvSize win; // half of the search window size for cvFindCornerSubPix + CvSize zero_zone; // for cvFindCornerSubPix + CvTermCriteria criteria; // for cvFindCornerSubPix + t_atom *coord_list; + + + private: + + t_outlet *m_dataout; + ////////// + // Static member functions + static void patternSizeMessCallback(void *data, t_floatarg xsize, t_floatarg ysize); + + + ///////// + // IplImage needed + IplImage *rgb, *tmp_color, *gray, *tmp_gray; + +}; + +#endif // for header file diff --git a/src/pix_opencv_floodfill.cc b/src/pix_opencv_floodfill.cc new file mode 100644 index 0000000..f41d3c0 --- /dev/null +++ b/src/pix_opencv_floodfill.cc @@ -0,0 +1,442 @@ + +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_floodfill.h" +#include + +CPPEXTERN_NEW(pix_opencv_floodfill) + +///////////////////////////////////////////////////////// +// +// pix_opencv_floodfill +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_floodfill :: pix_opencv_floodfill() +{ + int i; + + comp_xsize=320; + comp_ysize=240; + + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("lo_diff")); + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("up_diff")); + m_dataout = outlet_new(this->x_obj, &s_anything); + + x_lo = 20; + x_up = 20; + x_connectivity = 4; + x_color = 1; + + for ( i=0; icomp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor(rgba, grey, CV_BGRA2GRAY); + cvCvtColor(rgba, rgb, CV_BGRA2BGR); + + // mark recognized components + for ( i=0; iimageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_floodfill :: processRGBImage(imageStruct &image) +{ + int i, k; + int im; + int marked; + CvConnectedComp comp; + int flags = x_connectivity + ( 255 << 8 ) + CV_FLOODFILL_FIXED_RANGE; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + if ( !x_color ) + { + cvCvtColor(rgb, grey, CV_BGR2GRAY); + } + + // mark recognized components + for ( i=0; iimageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_floodfill :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_floodfill : yuv format not supported" ); +} + +void pix_opencv_floodfill :: processGrayImage(imageStruct &image) +{ + int i, k; + int im; + int marked; + CvConnectedComp comp; + int flags = x_connectivity + ( 255 << 8 ) + CV_FLOODFILL_FIXED_RANGE; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + } + + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); + + // mark recognized components + for ( i=0; iimageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_floodfill :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::colorMessCallback, + gensym("color"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::fillcolorMessCallback, + gensym("fillcolor"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::connectivityMessCallback, + gensym("connectivity"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::markMessCallback, + gensym("mark"), A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::deleteMessCallback, + gensym("delete"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::clearMessCallback, + gensym("clear"), A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::updiffMessCallback, + gensym("up_diff"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_floodfill::lodiffMessCallback, + gensym("lo_diff"), A_FLOAT, A_NULL); +} + +void pix_opencv_floodfill :: colorMessCallback(void *data, t_floatarg color) +{ + GetMyClass(data)->colorMess((float)color); +} + +void pix_opencv_floodfill :: fillcolorMessCallback(void *data, t_floatarg index, t_floatarg r, t_floatarg g, t_floatarg b) +{ + GetMyClass(data)->fillcolorMess(index, r, g, b); +} + +void pix_opencv_floodfill :: connectivityMessCallback(void *data, t_floatarg connectivity) +{ + GetMyClass(data)->connectivityMess(connectivity); +} + +void pix_opencv_floodfill :: markMessCallback(void *data, t_floatarg px, t_floatarg py) +{ + GetMyClass(data)->markMess(px, py); +} + +void pix_opencv_floodfill :: deleteMessCallback(void *data, t_floatarg index) +{ + GetMyClass(data)->deleteMess((float)index); +} + +void pix_opencv_floodfill :: clearMessCallback(void *data) +{ + GetMyClass(data)->clearMess(); +} + +void pix_opencv_floodfill :: updiffMessCallback(void *data, t_floatarg updiff) +{ + GetMyClass(data)->updiffMess((float)updiff); +} + +void pix_opencv_floodfill :: lodiffMessCallback(void *data, t_floatarg lodiff) +{ + GetMyClass(data)->lodiffMess((float)lodiff); +} + +void pix_opencv_floodfill :: colorMess(float color) +{ + if ( ( (int)color == 0 ) || ( (int)color == 1 ) ) + { + x_color = (int)color; + } +} + +void pix_opencv_floodfill :: fillcolorMess(float index, float r, float g, float b) +{ + if ( ( (int)index <= 0 ) || ( (int)index > MAX_COMPONENTS ) ) + { + post( "pix_opencv_floodfill : wrong color index : %d", (int)index ); + return; + } + + if ( ( (int)r >= 0 ) || ( (int)r <= 255 ) ) + { + x_r[(int)index-1] = (int)r; + } + + if ( ( (int)g >= 0 ) || ( (int)g <= 255 ) ) + { + x_g[(int)index-1] = (int)g; + } + + if ( ( (int)b >= 0 ) || ( (int)b <= 255 ) ) + { + x_b[(int)index-1] = (int)b; + } +} + +void pix_opencv_floodfill :: connectivityMess(float connectivity) +{ + if ( ( connectivity != 4.0 ) && ( connectivity != 8.0 ) ) + { + return; + } + + x_connectivity = (int)connectivity; +} + +void pix_opencv_floodfill :: markMess(float fpx, float fpy) +{ + int i; + int inserted; + int px, py; + + if ( ( fpx < 0.0 ) || ( fpx > comp_xsize ) || ( fpy < 0.0 ) || ( fpy > comp_ysize ) ) + { + return; + } + + px = (int)fpx; + //py = comp_ysize-(int)fpy; + py = (int)fpy; + inserted = 0; + for ( i=0; i MAX_COMPONENTS ) ) + { + return; + } + + x_xcomp[(int)index-1] = -1; + x_ycomp[(int)index-1] = -1; + +} + +void pix_opencv_floodfill :: clearMess(void) +{ + int i; + + for ( i=0; i= 0 ) && ( (int)updiff <= 255 ) ) + { + x_up = (int)updiff; + } +} + +void pix_opencv_floodfill :: lodiffMess(float lodiff) +{ + if ( ( (int)lodiff >= 0 ) && ( (int)lodiff <= 255 ) ) + { + x_lo = (int)lodiff; + } +} diff --git a/src/pix_opencv_floodfill.h b/src/pix_opencv_floodfill.h new file mode 100644 index 0000000..8c2d296 --- /dev/null +++ b/src/pix_opencv_floodfill.h @@ -0,0 +1,111 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Color blob tracker + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_FLOODFILL_H_ +#define INCLUDE_PIX_OPENCV_FLOODFILL_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +#define MAX_COMPONENTS 10 + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_floodfill + + Color blob tracker + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_floodfill : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_floodfill, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_floodfill(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_floodfill(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + void colorMess(float color); + void fillcolorMess(float index, float r, float g, float b); + void connectivityMess(float connectivity); + void markMess(float px, float py); + void deleteMess(float index); + void clearMess(void); + void updiffMess(float updiff); + void lodiffMess(float lodiff); + + int comp_xsize; + int comp_ysize; + + t_outlet *m_dataout; + t_atom x_list[5]; + + int x_up; + int x_lo; + int x_connectivity; + int x_color; + + + private: + + ////////// + // Static member functions + static void colorMessCallback(void *data, float color); + static void fillcolorMessCallback(void *data, float index, float r, float g, float b); + static void connectivityMessCallback(void *data, float connectivity); + static void markMessCallback(void *data, float px, float py); + static void deleteMessCallback(void *data, float index); + static void clearMessCallback(void *data); + static void updiffMessCallback(void *data, float updiff); + static void lodiffMessCallback(void *data, float lodiff); + + // Internal Open CV data + // tracked components + int x_xcomp[MAX_COMPONENTS]; + int x_ycomp[MAX_COMPONENTS]; + + // fill color + int x_r[MAX_COMPONENTS]; + int x_g[MAX_COMPONENTS]; + int x_b[MAX_COMPONENTS]; + + IplImage *rgba, *rgb, *grey; + +}; + +#endif // for header file diff --git a/src/pix_opencv_haarcascade.cc b/src/pix_opencv_haarcascade.cc new file mode 100644 index 0000000..59dce35 --- /dev/null +++ b/src/pix_opencv_haarcascade.cc @@ -0,0 +1,526 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_haarcascade.h" +#include +#include + +CPPEXTERN_NEW(pix_opencv_haarcascade) + +///////////////////////////////////////////////////////// +// +// pix_opencv_haarcascade +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_haarcascade :: pix_opencv_haarcascade() +{ + int i; + + m_numout = outlet_new(this->x_obj, 0); + m_dataout = outlet_new(this->x_obj, 0); + + scale_factor = 1.1; + min_neighbors = 2; + mode = 0; + min_size = 30; + + comp_xsize = 0; + comp_ysize = 0; + rgba = NULL; + grey = NULL; + frame = NULL; + x_ftolerance = 5; + + for ( i=0; icomp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&grey); + cvReleaseImage(&frame); + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + frame = cvCreateImage(cvSize(rgba->width,rgba->height), IPL_DEPTH_8U, 3); + grey = cvCreateImage( cvSize(rgba->width,rgba->height), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + CvMemStorage* storage = cvCreateMemStorage(0); + + static CvScalar colors[] = + { + {{0,0,255}}, + {{0,128,255}}, + {{0,255,255}}, + {{0,255,0}}, + {{255,128,0}}, + {{255,255,0}}, + {{255,0,0}}, + {{255,0,255}} + }; + + int i, im; + + if( cascade ) + { + CvSeq* faces = cvHaarDetectObjects( rgba, cascade, storage, + scale_factor, min_neighbors, mode, cvSize(min_size, min_size) ); + + if ( faces && (faces->total > 0 ) ) + outlet_float(this->m_numout, (float)faces->total); + else + outlet_float(this->m_numout, 0.0); + + for ( im=0; imx_xmark[im] != -1.0 ) + { + this->x_found[im]--; + } + } + + for( i = 0; i < (faces ? faces->total : 0); i++ ) + { + int oi, found; + + CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); + CvPoint center; + int radius; + center.x = cvRound((r->x + r->width*0.5)*scale); + center.y = cvRound((r->y + r->height*0.5)*scale); + radius = cvRound((r->width + r->height)*0.25*scale); + + found = 0; + oi = -1; + for ( im=0; imx_xmark[im], 2 ) + pow((double)center.y - this->x_ymark[im], 2 ) ) <= radius ) + { + oi=im; + found=1; + this->x_found[im] = this->x_ftolerance; + this->x_xmark[im] = center.x; + this->x_ymark[im] = center.y; + break; + } + } + // new object detected + if ( !found ) + { + oi = this->mark(center.x, center.y ); + } + + char tindex[4]; + sprintf( tindex, "%d", oi ); + cvCircle( rgba, center, radius, colors[oi%8], 3, 8, 0 ); + cvPutText( rgba, tindex, center, &this->font, CV_RGB(255,255,255)); + + SETFLOAT(&this->rlist[0], oi); + SETFLOAT(&this->rlist[1], center.x); + SETFLOAT(&this->rlist[2], center.y); + SETFLOAT(&this->rlist[3], radius); + outlet_list( m_dataout, 0, 4, this->rlist ); + } + // delete lost objects + for ( im=0; imx_found[im] < 0 ) + { + this->x_xmark[im] = -1.0; + this->x_ymark[im] = -1,0; + this->x_found[im] = this->x_ftolerance; + } + } + + } + + cvReleaseMemStorage( &storage ); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_haarcascade :: processRGBImage(imageStruct &image) +{ + double scale = 1; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!frame)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&grey); + cvReleaseImage(&frame); + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + frame = cvCreateImage(cvSize(rgba->width,rgba->height), IPL_DEPTH_8U, 3); + grey = cvCreateImage( cvSize(rgba->width,rgba->height), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( frame->imageData, image.data, image.xsize*image.ysize*3 ); + CvMemStorage* storage = cvCreateMemStorage(0); + + static CvScalar colors[] = + { + {{0,0,255}}, + {{0,128,255}}, + {{0,255,255}}, + {{0,255,0}}, + {{255,128,0}}, + {{255,255,0}}, + {{255,0,0}}, + {{255,0,255}} + }; + + int i, im; + + if( cascade ) + { + CvSeq* faces = cvHaarDetectObjects( frame, cascade, storage, + 1.1, 2, 0, cvSize(30, 30) ); + + if ( faces && (faces->total > 0 ) ) + outlet_float(this->m_numout, (float)faces->total); + else + outlet_float(this->m_numout, 0.0); + + for ( im=0; imx_xmark[im] != -1.0 ) + { + this->x_found[im]--; + } + } + + for( i = 0; i < (faces ? faces->total : 0); i++ ) + { + int oi, found; + + CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); + CvPoint center; + int radius; + center.x = cvRound((r->x + r->width*0.5)*scale); + center.y = cvRound((r->y + r->height*0.5)*scale); + radius = cvRound((r->width + r->height)*0.25*scale); + + found = 0; + oi = -1; + for ( im=0; imx_xmark[im], 2 ) + pow((double)center.y - this->x_ymark[im], 2 ) ) <= radius ) + { + oi=im; + found=1; + this->x_found[im] = this->x_ftolerance; + this->x_xmark[im] = center.x; + this->x_ymark[im] = center.y; + break; + } + } + // new object detected + if ( !found ) + { + oi = this->mark(center.x, center.y ); + } + + char tindex[4]; + sprintf( tindex, "%d", oi ); + cvCircle( frame, center, radius, colors[oi%8], 3, 8, 0 ); + cvPutText( frame, tindex, center, &this->font, CV_RGB(255,255,255)); + + SETFLOAT(&this->rlist[0], oi); + SETFLOAT(&this->rlist[1], center.x); + SETFLOAT(&this->rlist[2], center.y); + SETFLOAT(&this->rlist[3], radius); + outlet_list( m_dataout, 0, 4, this->rlist ); + } + // delete lost objects + for ( im=0; imx_found[im] < 0 ) + { + this->x_xmark[im] = -1.0; + this->x_ymark[im] = -1,0; + this->x_found[im] = this->x_ftolerance; + } + } + } + + cvReleaseMemStorage( &storage ); + memcpy( image.data, frame->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_haarcascade :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_haarcascade : yuv format not supported" ); +} + +void pix_opencv_haarcascade :: processGrayImage(imageStruct &image) +{ + double scale = 1; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!grey)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&grey); + cvReleaseImage(&frame); + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + frame = cvCreateImage(cvSize(rgba->width,rgba->height), IPL_DEPTH_8U, 3); + grey = cvCreateImage( cvSize(rgba->width,rgba->height), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); + CvMemStorage* storage = cvCreateMemStorage(0); + + static CvScalar colors[] = + { + {{0,0,255}}, + {{0,128,255}}, + {{0,255,255}}, + {{0,255,0}}, + {{255,128,0}}, + {{255,255,0}}, + {{255,0,0}}, + {{255,0,255}} + }; + + int i; + + if( cascade ) + { + CvSeq* faces = cvHaarDetectObjects( grey, cascade, storage, + 1.1, 2, 0, cvSize(30, 30) ); + for( i = 0; i < (faces ? faces->total : 0); i++ ) + { + CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); + CvPoint center; + int radius; + center.x = cvRound((r->x + r->width*0.5)*scale); + center.y = cvRound((r->y + r->height*0.5)*scale); + radius = cvRound((r->width + r->height)*0.25*scale); + cvCircle( grey, center, radius, colors[i%8], 3, 8, 0 ); + + t_atom rlist[4]; + SETFLOAT(&rlist[0], i); + SETFLOAT(&rlist[1], center.x); + SETFLOAT(&rlist[2], center.y); + SETFLOAT(&rlist[3], radius); + outlet_list( m_dataout, 0, 4, rlist ); + } + } + + + cvReleaseMemStorage( &storage ); + //cvShowImage(wndname, cedge); + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// scaleFactorMess +// +///////////////////////////////////////////////////////// +void pix_opencv_haarcascade :: scaleFactorMess (float scale_factor) +{ + this->scale_factor = scale_factor; +} + +///////////////////////////////////////////////////////// +// minNeighborsMess +// +///////////////////////////////////////////////////////// +void pix_opencv_haarcascade :: minNeighborsMess (float min_neighbors) +{ + this->min_neighbors = (int)min_neighbors; +} + +///////////////////////////////////////////////////////// +// modeMess +// +///////////////////////////////////////////////////////// +void pix_opencv_haarcascade :: modeMess (float mode) +{ + this->mode = !(!(int)mode); +} + +///////////////////////////////////////////////////////// +// minSizeMess +// +///////////////////////////////////////////////////////// +void pix_opencv_haarcascade :: minSizeMess (float min_size) +{ + this->min_size = (int)min_size; +} + +///////////////////////////////////////////////////////// +// fToleranceMess +// +///////////////////////////////////////////////////////// +void pix_opencv_haarcascade :: fToleranceMess (float ftolerance) +{ + this->x_ftolerance = (int)ftolerance; +} + +///////////////////////////////////////////////////////// +// clearMess +// +///////////////////////////////////////////////////////// +void pix_opencv_haarcascade :: clearMess (void) +{ + int i; + + for ( i=0; ix_xmark[i] = -1; + this->x_ymark[i] = -1; + this->x_found[i] = this->x_ftolerance; + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_haarcascade :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::scaleFactorMessCallback, + gensym("scale_factor"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::minNeighborsMessCallback, + gensym("min_neighbors"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::modeMessCallback, + gensym("mode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::minSizeMessCallback, + gensym("min_size"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::loadCascadeMessCallback, + gensym("load"), A_SYMBOL, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::fToleranceMessCallback, + gensym("ftolerance"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_haarcascade::clearMessCallback, + gensym("clear"), A_NULL); +} +void pix_opencv_haarcascade :: scaleFactorMessCallback(void *data, t_floatarg scale_factor) +{ + if (scale_factor>1) GetMyClass(data)->scaleFactorMess((float)scale_factor); +} +void pix_opencv_haarcascade :: minNeighborsMessCallback(void *data, t_floatarg min_neighbors) +{ + if (min_neighbors>=1) GetMyClass(data)->minNeighborsMess((float)min_neighbors); +} +void pix_opencv_haarcascade :: modeMessCallback(void *data, t_floatarg mode) +{ + if ((mode==0)||(mode==1)) GetMyClass(data)->modeMess((float)mode); +} +void pix_opencv_haarcascade :: minSizeMessCallback(void *data, t_floatarg min_size) +{ + if (min_size>1) GetMyClass(data)->minSizeMess((float)min_size); +} +void pix_opencv_haarcascade :: fToleranceMessCallback(void *data, t_floatarg ftolerance) +{ + if (ftolerance>1) GetMyClass(data)->fToleranceMess((float)ftolerance); +} +void pix_opencv_haarcascade :: clearMessCallback(void *data) +{ + GetMyClass(data)->clearMess(); +} +void pix_opencv_haarcascade :: loadCascadeMessCallback(void *data, t_symbol* filename) +{ + GetMyClass(data)->loadCascadeMess(filename); +} +void pix_opencv_haarcascade :: loadCascadeMess(t_symbol *filename) +{ + cascade = (CvHaarClassifierCascade*)cvLoad( filename->s_name, 0, 0, 0 ); + if( !cascade ) + { + post( "ERROR: Could not load classifier cascade" ); + } + else post( "Loaded classifier cascade from %s", filename->s_name ); +} +int pix_opencv_haarcascade :: mark(float fx, float fy ) +{ + int i; + + if ( ( fx < 0.0 ) || ( fx > this->rgba->width ) || ( fy < 0 ) || ( fy > this->rgba->height ) ) + { + return -1; + } + + for ( i=0; ix_xmark[i] == -1 ) + { + this->x_xmark[i] = (int)fx; + this->x_ymark[i] = (int)fy; + this->x_found[i] = this->x_ftolerance; + return i; + } + } + + post( "pix_opencv_haarcascade : max markers reached" ); + return -1; +} diff --git a/src/pix_opencv_haarcascade.h b/src/pix_opencv_haarcascade.h new file mode 100644 index 0000000..8c8fbb4 --- /dev/null +++ b/src/pix_opencv_haarcascade.h @@ -0,0 +1,113 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Trained classifier using Haar's cascade + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_HAARSCASCADE_H_ +#define INCLUDE_PIX_OPENCV_HAARSCASCADE_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/objdetect/objdetect.hpp" +#endif + +#include "Base/GemPixObj.h" + +#define MAX_MARKERS 50 + +const char* cascade_name ="./haarcascade_frontalface_alt.xml"; + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_haarcascade + + Trained classifier using Haar's cascade + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_haarcascade : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_haarcascade, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_haarcascade(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_haarcascade(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void scaleFactorMess(float scale_factor); + void minNeighborsMess(float min_neighbors); + void modeMess(float mode); + void minSizeMess(float min_size); + void loadCascadeMess(t_symbol *filename); + void fToleranceMess(float ftolerance); + void clearMess(void); + int mark(float fx, float fy ); + // The parameters for cvHaarDetectObjects function + float scale_factor; + int min_neighbors; + int mode; + int min_size; + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + t_atom rlist[4]; + // marked objects history + int x_xmark[MAX_MARKERS]; + int x_ymark[MAX_MARKERS]; + int x_found[MAX_MARKERS]; + int x_ftolerance; + + private: + + ////////// + // Static member functions + static void scaleFactorMessCallback(void *data, t_floatarg scale_factor); + static void minNeighborsMessCallback(void *data, float min_neighbors); + static void modeMessCallback(void *data, float mode); + static void minSizeMessCallback(void *data, float min_size); + static void loadCascadeMessCallback(void *data, t_symbol* filename); + static void fToleranceMessCallback(void *data, float ftolerance); + static void clearMessCallback(void *data); + + CvHaarClassifierCascade* cascade; + CvFont font; + ///////// + // IplImage needed + IplImage *rgba, *frame, *grey; + + t_outlet *m_numout; + t_outlet *m_dataout; +}; + +#endif // for header file diff --git a/src/pix_opencv_hist_compare.cc b/src/pix_opencv_hist_compare.cc new file mode 100644 index 0000000..b81d396 --- /dev/null +++ b/src/pix_opencv_hist_compare.cc @@ -0,0 +1,279 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_hist_compare.h" + +CPPEXTERN_NEW(pix_opencv_hist_compare) + +///////////////////////////////////////////////////////// +// +// pix_opencv_hist_compare +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_hist_compare :: pix_opencv_hist_compare() +{ + comp_xsize=320; + comp_ysize=240; + + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("save")); + m_dataout = outlet_new(this->x_obj, &s_anything); + m_measureout = outlet_new(this->x_obj, &s_anything); + + save_now = 0; + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grey = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3 ); + + h_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + s_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + v_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + planes[0] = h_plane; + planes[1] = s_plane; + h_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + s_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + v_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + saved_planes[0] = h_saved_plane; + saved_planes[1] = s_saved_plane; + + int h_bins = (int)(comp_xsize/10), s_bins = (int)(comp_ysize/10); + { + int hist_size[] = { h_bins, s_bins }; + float h_ranges[] = { 0, 180 }; // hue is [0,180] + float s_ranges[] = { 0, 255 }; + float* ranges[] = { h_ranges, s_ranges }; + hist = cvCreateHist( + 2, + hist_size, + CV_HIST_ARRAY, + ranges, + 1 + ); + int n; + for (n=0; ncomp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&grey); + cvReleaseImage(&h_plane); + cvReleaseImage(&s_plane); + cvReleaseImage(&v_plane); + cvReleaseImage(&h_saved_plane); + cvReleaseImage(&s_saved_plane); + cvReleaseImage(&v_saved_plane); + + //Create cv_images + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grey = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + hsv = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3 ); + + + h_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + s_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + v_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + planes[0] = h_plane; + planes[1] = s_plane; + cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); + h_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + s_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + v_saved_plane = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + saved_planes[0] = h_saved_plane; + saved_planes[1] = s_saved_plane; + + h_bins = (int)(comp_xsize/10); + s_bins = (int)(comp_ysize/10); + { + int hist_size[] = { h_bins, s_bins }; + float h_ranges[] = { 0, 180 }; // hue is [0,180] + float s_ranges[] = { 0, 255 }; + float* ranges[] = { h_ranges, s_ranges }; + if ( hist ) { + cvReleaseHist( &hist ); + hist = NULL; + } + + hist = cvCreateHist( + 2, + hist_size, + CV_HIST_ARRAY, + ranges, + 1 + ); + int n; + for (n=0; nimageData = (char*) image.data; + + if ( image.csize == 1 ){ // gray + cvCvtColor(imgMat, rgb, CV_GRAY2BGR); + } else if ( image.csize == 4 ) { //RGBA + cvCvtColor(imgMat, rgb, CV_BGRA2BGR); + } else { + error("support only RGBA or GRAY image"); + return; + } + + // Convert to hsv + cvCvtColor( rgb, hsv, CV_BGR2HSV ); + cvCvtPixToPlane( hsv, h_plane, s_plane, v_plane, 0 ); + + // Build the histogram and compute its contents. + if (save_now>=0) { + post("saving histogram %d\n",save_now); + cvCvtPixToPlane( hsv, h_saved_plane, s_saved_plane, v_saved_plane, 0 ); + cvCalcHist( saved_planes, saved_hist[save_now], 0, 0 ); //Compute histogram + cvNormalizeHist( saved_hist[save_now], 1.0 ); //Normalize it + save_now=-1; + nbsaved++; + } + cvCalcHist( planes, hist, 0, 0 ); //Compute histogram + cvNormalizeHist( hist, 1.0 ); //Normalize it + + if ( nbsaved > 0 ) { + double* tato = new double[nbsaved]; + t_atom* datalist = new t_atom[nbsaved]; + int nearest = -1; + double max = 0; + + for ( int n=0; nmax) { + max = tato[n]; + nearest = n; + } + } + outlet_float(m_dataout, (float)nearest); + outlet_list( m_measureout, 0, nbsaved , datalist ); + + if ( tato ) delete[] tato; tato=NULL; + if ( datalist ) delete[] datalist; datalist=NULL; + } else { + outlet_float(m_dataout, -1.0); + } + + // Create an image to use to visualize our histogram. + int scale = 10; + // populate our visualization with little gray squares. + float max_value = 0; + cvGetMinMaxHistValue( hist, 0, &max_value, 0, 0 ); + + int h = 0; + int s = 0; + + for( h = 0; h < h_bins; h++ ) { + for( s = 0; s < s_bins; s++ ) { + float bin_val = cvQueryHistValue_2D( hist, h, s ); + int intensity = cvRound( bin_val * 255 / max_value ); + cvRectangle( + imgMat, + cvPoint( h*scale, s*scale ), + cvPoint( (h+1)*scale - 1, (s+1)*scale - 1), + CV_RGB(intensity,intensity,intensity), CV_FILLED, 8 , 0 ); + } + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_hist_compare :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_hist_compare::saveMessCallback, + gensym("save"), A_FLOAT, A_NULL); +} + +void pix_opencv_hist_compare :: saveMess(float index) +{ + if (((int)index>=0)&&((int)indexsaveMess(index); +} diff --git a/src/pix_opencv_hist_compare.h b/src/pix_opencv_hist_compare.h new file mode 100644 index 0000000..bdfedfd --- /dev/null +++ b/src/pix_opencv_hist_compare.h @@ -0,0 +1,88 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Histogram reognition object using Open CV + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_HIST_COMPARE_H_ +#define INCLUDE_PIX_OPENCV_HIST_COMPARE_H_ + +#ifndef _EiC +#include "opencv2/opencv.hpp" +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/compat.hpp" +#endif + +#include "Base/GemPixObj.h" + +#define MAX_HISTOGRAMS_TO_COMPARE 80 + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_hist_compare + + Histogram reognition object using Open CV + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ + +class GEM_EXPORT pix_opencv_hist_compare : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_hist_compare, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_hist_compare(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_hist_compare(); + + ////////// + // Do the processing + virtual void processImage(imageStruct &image); + + void saveMess(float index); + + int comp_xsize; + int comp_ysize; + + t_outlet *m_dataout; + t_outlet *m_measureout; + + private: + + ////////// + // Static member functions + static void saveMessCallback(void *data, t_floatarg index); + + // The output and temporary images + int save_now; + int nbsaved; + + CvHistogram *hist; + CvHistogram *saved_hist[MAX_HISTOGRAMS_TO_COMPARE]; + IplImage *rgba, *rgb, *grey, *hsv, *h_plane, *s_plane, *v_plane, *h_saved_plane, *s_saved_plane, *v_saved_plane, *planes[2],*saved_planes[2]; + + +}; + +#endif // for header file diff --git a/src/pix_opencv_hough_circles.cc b/src/pix_opencv_hough_circles.cc new file mode 100644 index 0000000..2ebbdcf --- /dev/null +++ b/src/pix_opencv_hough_circles.cc @@ -0,0 +1,315 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_hough_circles.h" +#include + +CPPEXTERN_NEW(pix_opencv_hough_circles) + +///////////////////////////////////////////////////////// +// +// pix_opencv_hough_circles +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_hough_circles :: pix_opencv_hough_circles() +{ + int i; + + comp_xsize=320; + comp_ysize=240; + + m_dataout = outlet_new(this->x_obj, &s_anything); + + x_threshold = 100; + x_threshold2 = 10; + x_maxcircles = 10; + x_mindist = 30.0; + x_resolution = 1.0; + night_mode = 0; + + // initialize font + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_hough_circles :: ~pix_opencv_hough_circles() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_hough_circles :: processRGBAImage(imageStruct &image) +{ + int i, ucircles; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor( rgba, gray, CV_BGRA2GRAY ); + + if( night_mode ) + cvZero( rgba ); + + x_storage = cvCreateMemStorage(0); + + cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); + CvSeq* circles = cvHoughCircles( gray, x_storage, CV_HOUGH_GRADIENT, x_resolution, x_mindist, x_threshold, x_threshold2 ); + ucircles = (circles->total>x_maxcircles)?x_maxcircles:circles->total; + for( i = 0; i < ucircles; i++ ) + { + float* p = (float*)cvGetSeqElem( circles, i ); + char tindex[10]; + + cvCircle( rgba, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 ); + cvCircle( rgba, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 ); + SETFLOAT(&x_list[0], i); + SETFLOAT(&x_list[1], cvRound(p[0])); + SETFLOAT(&x_list[2], cvRound(p[1])); + SETFLOAT(&x_list[3], cvRound(p[2])); + outlet_list( m_dataout, 0, 4, x_list ); + sprintf( tindex, "%d", i ); + cvPutText( rgba, tindex, cvPoint(cvRound(p[0]),cvRound(p[1])), &font, CV_RGB(255,255,255)); + } + + cvReleaseMemStorage( &x_storage ); + + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); + +} + +void pix_opencv_hough_circles :: processRGBImage(imageStruct &image) +{ + int i, ucircles; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtColor( rgb, gray, CV_BGR2GRAY ); + + if( night_mode ) + cvZero( rgb ); + + x_storage = cvCreateMemStorage(0); + + cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); + CvSeq* circles = cvHoughCircles( gray, x_storage, CV_HOUGH_GRADIENT, x_resolution, x_mindist, x_threshold, x_threshold2 ); + ucircles = (circles->total>x_maxcircles)?x_maxcircles:circles->total; + for( i = 0; i < ucircles; i++ ) + { + float* p = (float*)cvGetSeqElem( circles, i ); + char tindex[10]; + + cvCircle( rgb, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(0,255,0), -1, 8, 0 ); + cvCircle( rgb, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,0,0), 3, 8, 0 ); + SETFLOAT(&x_list[0], i); + SETFLOAT(&x_list[1], cvRound(p[0])); + SETFLOAT(&x_list[2], cvRound(p[1])); + SETFLOAT(&x_list[3], cvRound(p[2])); + outlet_list( m_dataout, 0, 4, x_list ); + sprintf( tindex, "%d", i ); + cvPutText( rgb, tindex, cvPoint(cvRound(p[0]),cvRound(p[1])), &font, CV_RGB(255,255,255)); + } + + cvReleaseMemStorage( &x_storage ); + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); + +} + +void pix_opencv_hough_circles :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_hough_circles : yuv format not supported" ); +} + +void pix_opencv_hough_circles :: processGrayImage(imageStruct &image) +{ + int i, ucircles; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + + } + + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + x_storage = cvCreateMemStorage(0); + + cvSmooth( gray, gray, CV_GAUSSIAN, 9, 9 ); + CvSeq* circles = cvHoughCircles( gray, x_storage, CV_HOUGH_GRADIENT, x_resolution, x_mindist, x_threshold, x_threshold2 ); + + if( night_mode ) + cvZero( gray ); + + ucircles = (circles->total>x_maxcircles)?x_maxcircles:circles->total; + for( i = 0; i < ucircles; i++ ) + { + float* p = (float*)cvGetSeqElem( circles, i ); + char tindex[10]; + + cvCircle( gray, cvPoint(cvRound(p[0]),cvRound(p[1])), 3, CV_RGB(255,255,255), -1, 8, 0 ); + cvCircle( gray, cvPoint(cvRound(p[0]),cvRound(p[1])), cvRound(p[2]), CV_RGB(255,255,255), 3, 8, 0 ); + SETFLOAT(&x_list[0], i); + SETFLOAT(&x_list[1], cvRound(p[0])); + SETFLOAT(&x_list[2], cvRound(p[1])); + SETFLOAT(&x_list[3], cvRound(p[2])); + outlet_list( m_dataout, 0, 4, x_list ); + sprintf( tindex, "%d", i ); + cvPutText( gray, tindex, cvPoint(cvRound(p[0]),cvRound(p[1])), &font, CV_RGB(255,255,255)); + } + + cvReleaseMemStorage( &x_storage ); + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); + +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_hough_circles :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatNightModeMessCallback, + gensym("nightmode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatThresholdMessCallback, + gensym("threshold"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatThreshold2MessCallback, + gensym("threshold2"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatMinDistMessCallback, + gensym("mindist"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatResolutionMessCallback, + gensym("resolution"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_circles::floatMaxCirclesMessCallback, + gensym("maxcircles"), A_FLOAT, A_NULL); +} + +void pix_opencv_hough_circles :: floatNightModeMessCallback(void *data, t_floatarg nightmode) +{ + GetMyClass(data)->floatNightModeMess((float)nightmode); +} + +void pix_opencv_hough_circles :: floatThresholdMessCallback(void *data, t_floatarg threshold) +{ + GetMyClass(data)->floatThresholdMess((float)threshold); +} + +void pix_opencv_hough_circles :: floatThreshold2MessCallback(void *data, t_floatarg threshold) +{ + GetMyClass(data)->floatThreshold2Mess((float)threshold); +} + +void pix_opencv_hough_circles :: floatMinDistMessCallback(void *data, t_floatarg mindist) +{ + GetMyClass(data)->floatMinDistMess((float)mindist); +} + +void pix_opencv_hough_circles :: floatResolutionMessCallback(void *data, t_floatarg resolution) +{ + GetMyClass(data)->floatResolutionMess((float)resolution); +} + +void pix_opencv_hough_circles :: floatMaxCirclesMessCallback(void *data, t_floatarg maxcircles) +{ + GetMyClass(data)->floatMaxCirclesMess((float)maxcircles); +} + +void pix_opencv_hough_circles :: floatNightModeMess(float nightmode) +{ + if ((nightmode==0.0)||(nightmode==1.0)) night_mode = (int)nightmode; +} + +void pix_opencv_hough_circles :: floatThresholdMess(float threshold) +{ + if (threshold>0.0) x_threshold = (int)threshold; +} + +void pix_opencv_hough_circles :: floatThreshold2Mess(float threshold) +{ + if (threshold>0.0) x_threshold2 = (int)threshold; +} + +void pix_opencv_hough_circles :: floatMinDistMess(float mindist) +{ + if (mindist>0.0) x_mindist = (int)mindist; +} + +void pix_opencv_hough_circles :: floatResolutionMess(float resolution) +{ + if (resolution>0.0) x_resolution = (int)resolution; +} + +void pix_opencv_hough_circles :: floatMaxCirclesMess(float maxcircles) +{ + if (maxcircles>0.0) x_maxcircles = (int)maxcircles; +} + diff --git a/src/pix_opencv_hough_circles.h b/src/pix_opencv_hough_circles.h new file mode 100644 index 0000000..aaef0f5 --- /dev/null +++ b/src/pix_opencv_hough_circles.h @@ -0,0 +1,102 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Hough circles detection algorithm + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_HOUGH_CIRCLES_H_ +#define INCLUDE_PIX_OPENCV_HOUGH_CIRCLES_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +#define MAX_HISTOGRAMS_TO_COMPARE 80 + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_hough_circles + + Hough circles detection algorithm + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ + +class GEM_EXPORT pix_opencv_hough_circles : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_hough_circles, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_hough_circles(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_hough_circles(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + int comp_xsize; + int comp_ysize; + + void floatNightModeMess(t_float nightmode); + void floatThresholdMess(t_floatarg threshold); + void floatThreshold2Mess(t_floatarg threshold); + void floatMinDistMess(t_floatarg mindist); + void floatResolutionMess(t_floatarg resolution); + void floatMaxCirclesMess(t_floatarg maxcircles); + + t_outlet *m_dataout; + + int x_threshold; + int x_threshold2; + int x_maxcircles; + double x_mindist; + double x_resolution; + int night_mode; + + private: + + ////////// + // Static member functions + static void floatNightModeMessCallback(void *data, t_floatarg nightmode); + static void floatThresholdMessCallback(void *data, t_floatarg threshold); + static void floatThreshold2MessCallback(void *data, t_floatarg threshold); + static void floatMinDistMessCallback(void *data, t_floatarg mindist); + static void floatResolutionMessCallback(void *data, t_floatarg resolution); + static void floatMaxCirclesMessCallback(void *data, t_floatarg maxcircles); + + // The output and temporary images + IplImage *rgba, *rgb, *gray; + CvFont font; + CvMemStorage* x_storage; + CvSeq* x_circles; + t_atom x_list[4]; +}; + +#endif // for header file diff --git a/src/pix_opencv_hough_lines.cc b/src/pix_opencv_hough_lines.cc new file mode 100644 index 0000000..cf84305 --- /dev/null +++ b/src/pix_opencv_hough_lines.cc @@ -0,0 +1,600 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_hough_lines.h" +#include + +CPPEXTERN_NEW(pix_opencv_hough_lines) + +///////////////////////////////////////////////////////// +// +// pix_opencv_hough_lines +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_hough_lines :: pix_opencv_hough_lines() +{ + int i; + + comp_xsize=320; + comp_ysize=240; + + m_dataout = outlet_new(this->x_obj, &s_anything); + + x_mode = CV_HOUGH_PROBABILISTIC; + x_threshold = 50; + x_maxlines = 10; + x_minlength = 30.0; + x_gap = 10.0; + x_aresolution = 10.0; + x_dresolution = 30.0; + night_mode = 0; + + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_hough_lines :: ~pix_opencv_hough_lines() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_hough_lines :: processRGBAImage(imageStruct &image) +{ + int i, ulines; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor( rgba, gray, CV_BGRA2GRAY ); + + cvCanny( gray, gray, 50, 200, 3 ); + + if( night_mode ) + cvZero( rgba ); + + x_storage = cvCreateMemStorage(0); + + switch( x_mode ) + { + case CV_HOUGH_STANDARD: + + x_lines = cvHoughLines2( gray, x_storage, x_mode, 1, CV_PI/180, x_threshold, 0, 0 ); + + if ( x_lines ) + { + ulines = ( x_lines->total >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i = 0; i < ulines; i++ ) + { + float* line = (float*)cvGetSeqElem(x_lines,i); + float rho = line[0]; + float theta = line[1]; + char tindex[10]; + CvPoint pt1, pt2; + double a = cos(theta), b = sin(theta); + double x0 = a*rho, y0 = b*rho; + pt1.x = cvRound(x0 + 1000*(-b)); + pt1.y = cvRound(y0 + 1000*(a)); + pt2.x = cvRound(x0 - 1000*(-b)); + pt2.y = cvRound(y0 - 1000*(a)); + cvLine( rgba, pt1, pt2, CV_RGB(255,0,0), 3, 8 ); + SETFLOAT(&x_list[0], i); + SETFLOAT(&x_list[1], pt1.x); + SETFLOAT(&x_list[2], pt1.y); + SETFLOAT(&x_list[3], pt2.x); + SETFLOAT(&x_list[4], pt2.y); + outlet_list( m_dataout, 0, 5, x_list ); + pt1.x = (pt1.x+pt2.x)/2; + pt1.y = (pt1.y+pt2.y)/2; + sprintf( tindex, "%d", i ); + cvPutText( rgba, tindex, pt1, &font, CV_RGB(255,255,255)); + } + } + break; + } + + cvReleaseMemStorage( &x_storage ); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); + +} + +void pix_opencv_hough_lines :: processRGBImage(imageStruct &image) +{ + int i, ulines; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtColor( rgb, gray, CV_BGR2GRAY ); + + cvCanny( gray, gray, 50, 200, 3 ); + + if( night_mode ) + cvZero( rgb ); + + x_storage = cvCreateMemStorage(0); + + switch( x_mode ) + { + case CV_HOUGH_STANDARD: + + x_lines = cvHoughLines2( gray, x_storage, x_mode, 1, CV_PI/180, x_threshold, 0, 0 ); + + if ( x_lines ) + { + ulines = ( x_lines->total >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i = 0; i < ulines; i++ ) + { + float* line = (float*)cvGetSeqElem(x_lines,i); + float rho = line[0]; + float theta = line[1]; + char tindex[10]; + CvPoint pt1, pt2; + double a = cos(theta), b = sin(theta); + double x0 = a*rho, y0 = b*rho; + pt1.x = cvRound(x0 + 1000*(-b)); + pt1.y = cvRound(y0 + 1000*(a)); + pt2.x = cvRound(x0 - 1000*(-b)); + pt2.y = cvRound(y0 - 1000*(a)); + cvLine( rgb, pt1, pt2, CV_RGB(255,0,0), 3, 8 ); + SETFLOAT(&x_list[0], i); + SETFLOAT(&x_list[1], pt1.x); + SETFLOAT(&x_list[2], pt1.y); + SETFLOAT(&x_list[3], pt2.x); + SETFLOAT(&x_list[4], pt2.y); + outlet_list( m_dataout, 0, 5, x_list ); + pt1.x = (pt1.x+pt2.x)/2; + pt1.y = (pt1.y+pt2.y)/2; + sprintf( tindex, "%d", i ); + cvPutText( rgb, tindex, pt1, &font, CV_RGB(255,255,255)); + } + } + break; + } + + cvReleaseMemStorage( &x_storage ); + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); + +} + +void pix_opencv_hough_lines :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_hough_lines : yuv format not supported" ); +} + +void pix_opencv_hough_lines :: processGrayImage(imageStruct &image) +{ + int i, ulines; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + + } + + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + cvCanny( gray, gray, 50, 200, 3 ); + + x_storage = cvCreateMemStorage(0); + + switch( x_mode ) + { + case CV_HOUGH_STANDARD: + + x_lines = cvHoughLines2( gray, x_storage, x_mode, 1, CV_PI/180, x_threshold, 0, 0 ); + + if( night_mode ) + cvZero( gray ); + + if ( x_lines ) + { + ulines = ( x_lines->total >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i=0; itotal >= x_maxlines ) ? x_maxlines:x_lines->total; + for( i = 0; i < ulines; i++ ) + { + float* line = (float*)cvGetSeqElem(x_lines,i); + float rho = line[0]; + float theta = line[1]; + char tindex[10]; + CvPoint pt1, pt2; + double a = cos(theta), b = sin(theta); + double x0 = a*rho, y0 = b*rho; + pt1.x = cvRound(x0 + 1000*(-b)); + pt1.y = cvRound(y0 + 1000*(a)); + pt2.x = cvRound(x0 - 1000*(-b)); + pt2.y = cvRound(y0 - 1000*(a)); + cvLine( gray, pt1, pt2, CV_RGB(255,255,255), 3, 8 ); + SETFLOAT(&x_list[0], i); + SETFLOAT(&x_list[1], pt1.x); + SETFLOAT(&x_list[2], pt1.y); + SETFLOAT(&x_list[3], pt2.x); + SETFLOAT(&x_list[4], pt2.y); + outlet_list( m_dataout, 0, 5, x_list ); + pt1.x = (pt1.x+pt2.x)/2; + pt1.y = (pt1.y+pt2.y)/2; + sprintf( tindex, "%d", i ); + cvPutText( gray, tindex, pt1, &font, CV_RGB(255,255,255)); + } + } + break; + } + + cvReleaseMemStorage( &x_storage ); + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); + +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_hough_lines :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatNightModeMessCallback, + gensym("nightmode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatModeMessCallback, + gensym("mode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatThresholdMessCallback, + gensym("threshold"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatMinLengthMessCallback, + gensym("minlength"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatGapMessCallback, + gensym("gap"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatAResolutionMessCallback, + gensym("aresolution"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatDResolutionMessCallback, + gensym("dresolution"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hough_lines::floatMaxLinesMessCallback, + gensym("maxlines"), A_FLOAT, A_NULL); +} + +void pix_opencv_hough_lines :: floatNightModeMessCallback(void *data, t_floatarg nightmode) +{ + GetMyClass(data)->floatNightModeMess((float)nightmode); +} + +void pix_opencv_hough_lines :: floatModeMessCallback(void *data, t_floatarg mode) +{ + GetMyClass(data)->floatModeMess((float)mode); +} + +void pix_opencv_hough_lines :: floatThresholdMessCallback(void *data, t_floatarg threshold) +{ + GetMyClass(data)->floatThresholdMess((float)threshold); +} + +void pix_opencv_hough_lines :: floatMinLengthMessCallback(void *data, t_floatarg minlength) +{ + GetMyClass(data)->floatMinLengthMess((float)minlength); +} + +void pix_opencv_hough_lines :: floatGapMessCallback(void *data, t_floatarg gap) +{ + GetMyClass(data)->floatGapMess((float)gap); +} + +void pix_opencv_hough_lines :: floatAResolutionMessCallback(void *data, t_floatarg aresolution) +{ + GetMyClass(data)->floatAResolutionMess((float)aresolution); +} + +void pix_opencv_hough_lines :: floatDResolutionMessCallback(void *data, t_floatarg dresolution) +{ + GetMyClass(data)->floatDResolutionMess((float)dresolution); +} + +void pix_opencv_hough_lines :: floatMaxLinesMessCallback(void *data, t_floatarg maxlines) +{ + GetMyClass(data)->floatMaxLinesMess((float)maxlines); +} + +void pix_opencv_hough_lines :: floatNightModeMess(float nightmode) +{ + if ((nightmode==0.0)||(nightmode==1.0)) night_mode = (int)nightmode; +} + +void pix_opencv_hough_lines :: floatModeMess(float mode) +{ + if ( mode == CV_HOUGH_STANDARD ) + { + x_mode = CV_HOUGH_STANDARD; + } + if ( mode == CV_HOUGH_PROBABILISTIC ) + { + x_mode = CV_HOUGH_PROBABILISTIC; + } + if ( mode == CV_HOUGH_MULTI_SCALE ) + { + x_mode = CV_HOUGH_MULTI_SCALE; + } +} + +void pix_opencv_hough_lines :: floatThresholdMess(float threshold) +{ + if (threshold>0.0) x_threshold = (int)threshold; +} + +void pix_opencv_hough_lines :: floatMinLengthMess(float minlength) +{ + if (minlength>0.0) x_minlength = (double)minlength; +} + +void pix_opencv_hough_lines :: floatGapMess(float gap) +{ + if (gap>0.0) x_gap = (double)gap; +} + +void pix_opencv_hough_lines :: floatAResolutionMess(float aresolution) +{ + if (aresolution>0.0) x_aresolution = (double)aresolution; +} + +void pix_opencv_hough_lines :: floatDResolutionMess(float dresolution) +{ + if (dresolution>0.0) x_dresolution = (double)dresolution; +} + +void pix_opencv_hough_lines :: floatMaxLinesMess(float maxlines) +{ + if (maxlines>0.0) x_maxlines = (int)maxlines; +} + diff --git a/src/pix_opencv_hough_lines.h b/src/pix_opencv_hough_lines.h new file mode 100644 index 0000000..5b0d7bf --- /dev/null +++ b/src/pix_opencv_hough_lines.h @@ -0,0 +1,110 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Hough lines detection algorithm + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_HOUGH_LINES_H_ +#define INCLUDE_PIX_OPENCV_HOUGH_LINES_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +#define MAX_HISTOGRAMS_TO_COMPARE 80 + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_hough_lines + + Hough lines detection algorithm + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ + +class GEM_EXPORT pix_opencv_hough_lines : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_hough_lines, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_hough_lines(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_hough_lines(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + int comp_xsize; + int comp_ysize; + + void floatNightModeMess(t_float nightmode); + void floatModeMess(t_floatarg mode); + void floatThresholdMess(t_floatarg threshold); + void floatMinLengthMess(t_floatarg minlength); + void floatGapMess(t_floatarg gap); + void floatAResolutionMess(t_floatarg aresolution); + void floatDResolutionMess(t_floatarg dresolution); + void floatMaxLinesMess(t_floatarg maxlines); + + t_outlet *m_dataout; + + int x_mode; + int x_threshold; + int x_maxlines; + double x_minlength; + double x_gap; + double x_aresolution; + double x_dresolution; + int night_mode; + + private: + + ////////// + // Static member functions + static void floatNightModeMessCallback(void *data, t_float nightmode); + static void floatModeMessCallback(void *data, t_floatarg mode); + static void floatThresholdMessCallback(void *data, t_floatarg threshold); + static void floatMinLengthMessCallback(void *data, t_floatarg minlength); + static void floatGapMessCallback(void *data, t_floatarg gap); + static void floatAResolutionMessCallback(void *data, t_floatarg aresolution); + static void floatDResolutionMessCallback(void *data, t_floatarg dresolution); + static void floatMaxLinesMessCallback(void *data, t_floatarg maxlines); + + // The output and temporary images + IplImage *rgba, *rgb, *gray; + t_atom x_list[5]; + + CvFont font; + CvMemStorage* x_storage; + CvSeq* x_lines; + +}; + +#endif // for header file diff --git a/src/pix_opencv_hu_compare.cc b/src/pix_opencv_hu_compare.cc new file mode 100644 index 0000000..101c448 --- /dev/null +++ b/src/pix_opencv_hu_compare.cc @@ -0,0 +1,468 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-1998 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_hu_compare.h" + +CPPEXTERN_NEW_WITH_GIMME(pix_opencv_hu_compare) + +///////////////////////////////////////////////////////// +// +// pix_opencv_hu_compare +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_hu_compare :: pix_opencv_hu_compare(int argc, t_atom*argv) +{ + m_dataout = outlet_new(this->x_obj, &s_anything); + m_posout = outlet_new(this->x_obj, &s_anything); + + comp_xsize=320; + comp_ysize=240; + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + + x_method = CV_CONTOURS_MATCH_I1; + x_storage = cvCreateMemStorage(0); + + x_bcontourr = NULL; + x_minsize = 10*10; + x_cdistance = 0.1; +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_hu_compare :: ~pix_opencv_hu_compare() +{ + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&rgbar); + cvReleaseImage(&rgbr); + cvReleaseImage(&grayr); +} + +///////////////////////////////////////////////////////// +// processDualImage +// +///////////////////////////////////////////////////////// +void pix_opencv_hu_compare :: processRGBA_RGBA(imageStruct &left, imageStruct &right) +{ + double dist = 100.0, ndist; + int i = 0; // Indicator of cycles. + CvSeq *contourl=NULL, *contourlp; + CvRect rect; + CvMemStorage *mstorage; + CvSeq *contourr = NULL; + int size; + + if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) + { + post( "pix_opencv_hu_compare : left and right image are not of the same size" ); + return; + } + + if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) + { + this->comp_xsize=left.xsize; + this->comp_ysize=left.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&rgbar); + cvReleaseImage(&rgbr); + cvReleaseImage(&grayr); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + } + + memcpy( rgbar->imageData, right.data, right.xsize*right.ysize*4 ); + cvCvtColor(rgbar, grayr, CV_BGRA2GRAY); + + // calculate the biggest contour + try { + cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + } + catch(...) { + post( "pix_opencv_hu_compare : error calculating contours" ); + return; + } + + if ( contourr ) + { + size=0; + for( ; contourr != 0; contourr = contourr->h_next ) + { + rect = cvContourBoundingRect( contourr, 1); + if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + x_bcontourr = contourr; + size = rect.width*rect.height; + } + } + } + + memcpy( rgba->imageData, left.data, left.xsize*left.ysize*4 ); + cvCvtColor(rgba, gray, CV_BGRA2GRAY); + + mstorage = cvCreateMemStorage(0); + + cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + + i=0; + if ( contourl && x_bcontourr ) + { + contourlp=contourl; + for( ; contourlp != 0; contourlp = contourlp->h_next ) + { + rect = cvContourBoundingRect( contourlp, 1); + if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + ndist = cvMatchShapes( x_bcontourr, contourlp, x_method, 0 ); + if ( ndist < dist ) dist = ndist; + if ( ndist < x_cdistance ) + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + SETFLOAT(&rlist[0], i++); + SETFLOAT(&rlist[1], rect.x); + SETFLOAT(&rlist[2], rect.y); + SETFLOAT(&rlist[3], rect.width); + SETFLOAT(&rlist[4], rect.height); + outlet_list( m_posout, 0, 5, rlist ); + } + else + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); + } + } + } + } + + if ( dist < 100.00 ) outlet_float( m_dataout, dist ); + + cvReleaseMemStorage(&mstorage); + + cvCvtColor(gray, rgba, CV_GRAY2BGR); + memcpy( left.data, rgba->imageData, left.xsize*left.ysize*4 ); + +} + +///////////////////////////////////////////////////////// +// processDualImage +// +///////////////////////////////////////////////////////// +void pix_opencv_hu_compare :: processRGB_RGB(imageStruct &left, imageStruct &right) +{ + double dist = 100.0, ndist; + int i = 0; // Indicator of cycles. + CvSeq *contourl=NULL, *contourlp; + CvRect rect; + CvMemStorage *mstorage; + CvSeq *contourr = NULL; + int size; + + if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) + { + post( "pix_opencv_hu_compare : left and right image are not of the same size" ); + return; + } + + if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) + { + this->comp_xsize=left.xsize; + this->comp_ysize=left.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&rgbar); + cvReleaseImage(&rgbr); + cvReleaseImage(&grayr); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + } + + memcpy( rgbr->imageData, right.data, right.xsize*right.ysize*3 ); + cvCvtColor(rgbr, grayr, CV_BGRA2GRAY); + + // calculate the biggest contour + try { + cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + } + catch(...) { + post( "pix_opencv_hu_compare : error calculating contours" ); + return; + } + + if ( contourr ) + { + size=0; + for( ; contourr != 0; contourr = contourr->h_next ) + { + rect = cvContourBoundingRect( contourr, 1); + if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + x_bcontourr = contourr; + size = rect.width*rect.height; + } + } + } + + memcpy( rgb->imageData, left.data, left.xsize*left.ysize*3 ); + cvCvtColor(rgb, gray, CV_BGRA2GRAY); + + mstorage = cvCreateMemStorage(0); + + cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + + if ( contourl && x_bcontourr ) + { + contourlp=contourl; + for( ; contourlp != 0; contourlp = contourlp->h_next ) + { + rect = cvContourBoundingRect( contourlp, 1); + if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + ndist = cvMatchShapes( x_bcontourr, contourlp, x_method, 0 ); + if ( ndist < dist ) dist = ndist; + if ( ndist < x_cdistance ) + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + } + else + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); + } + } + } + } + + if ( dist < 100.00 ) outlet_float( m_dataout, dist ); + + cvReleaseMemStorage(&mstorage); + + cvCvtColor(gray, rgb, CV_GRAY2BGR); + memcpy( left.data, rgb->imageData, left.xsize*left.ysize*3 ); + +} + +///////////////////////////////////////////////////////// +// processDualImage +// +///////////////////////////////////////////////////////// +void pix_opencv_hu_compare :: processGray_Gray(imageStruct &left, imageStruct &right) +{ + double dist = 100.0, ndist; + int i = 0; // Indicator of cycles. + CvSeq *contourl=NULL, *contourlp; + CvRect rect; + CvMemStorage *mstorage; + CvSeq *contourr = NULL; + int size; + + if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) + { + post( "pix_opencv_hu_compare : left and right image are not of the same size" ); + return; + } + + if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) + { + this->comp_xsize=left.xsize; + this->comp_ysize=left.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&rgbar); + cvReleaseImage(&rgbr); + cvReleaseImage(&grayr); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + } + + memcpy( grayr->imageData, right.data, right.xsize*right.ysize ); + + // calculate the biggest contour + try { + cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + } + catch(...) { + post( "pix_opencv_hu_compare : error calculating contours" ); + return; + } + + if ( contourr ) + { + size=0; + for( ; contourr != 0; contourr = contourr->h_next ) + { + rect = cvContourBoundingRect( contourr, 1); + if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + x_bcontourr = contourr; + size = rect.width*rect.height; + } + } + } + + memcpy( gray->imageData, left.data, left.xsize*left.ysize ); + + mstorage = cvCreateMemStorage(0); + + cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + + if ( contourl && x_bcontourr ) + { + contourlp=contourl; + for( ; contourlp != 0; contourlp = contourlp->h_next ) + { + rect = cvContourBoundingRect( contourlp, 1); + if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + ndist = cvMatchShapes( x_bcontourr, contourlp, x_method, 0 ); + if ( ndist < dist ) dist = ndist; + if ( ndist < x_cdistance ) + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + } + else + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); + } + } + } + } + + if ( dist < 100.00 ) outlet_float( m_dataout, dist ); + + cvReleaseMemStorage(&mstorage); + + memcpy( left.data, gray->imageData, left.xsize*left.ysize ); + +} + +void pix_opencv_hu_compare :: processYUV_YUV(imageStruct &left, imageStruct &right) +{ + post( "pix_opencv_hu_compare : YUV colorspace not supported" ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_hu_compare :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_hu_compare::floatMethodMessCallback, + gensym("method"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hu_compare::floatMinSizeMessCallback, + gensym("minsize"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hu_compare::clearMessCallback, + gensym("clear"), A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_hu_compare::floatCriteriaMessCallback, + gensym("criteria"), A_FLOAT, A_NULL); +} + +void pix_opencv_hu_compare :: floatMethodMessCallback(void *data, t_floatarg method) +{ + GetMyClass(data)->floatMethodMess((float)method); +} + +void pix_opencv_hu_compare :: floatMinSizeMessCallback(void *data, t_floatarg minsize) +{ + GetMyClass(data)->floatMinSizeMess((float)minsize); +} + +void pix_opencv_hu_compare :: clearMessCallback(void *data) +{ + GetMyClass(data)->clearMess(); +} + +void pix_opencv_hu_compare :: floatCriteriaMessCallback(void *data, t_floatarg criteria) +{ + GetMyClass(data)->floatCriteriaMess((float)criteria); +} + +void pix_opencv_hu_compare :: floatMethodMess(float method) +{ + if ((int)method==CV_CONTOURS_MATCH_I1) + { + post( "pix_opencv_hu_compare : method set to CV_CONTOURS_MATCH_I1" ); + x_method = (int)method; + } + if ((int)method==CV_CONTOURS_MATCH_I2) + { + post( "pix_opencv_hu_compare : method set to CV_CONTOURS_MATCH_I2" ); + x_method = (int)method; + } + if ((int)method==CV_CONTOURS_MATCH_I3) + { + post( "pix_opencv_hu_compare : method set to CV_CONTOURS_MATCH_I3" ); + x_method = (int)method; + } +} + +void pix_opencv_hu_compare :: floatMinSizeMess(float minsize) +{ + if ( (int)minsize > 0 ) + { + x_minsize = (int)minsize; + } +} + +void pix_opencv_hu_compare :: clearMess(void) +{ + x_bcontourr = NULL; +} + +void pix_opencv_hu_compare :: floatCriteriaMess(float criteria) +{ + if ( criteria > 0.0 ) + { + x_cdistance = criteria; + } +} diff --git a/src/pix_opencv_hu_compare.h b/src/pix_opencv_hu_compare.h new file mode 100644 index 0000000..bc70d58 --- /dev/null +++ b/src/pix_opencv_hu_compare.h @@ -0,0 +1,93 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Hu moments comparison used to compare contours + + Copyright (c) 1997-1998 Mark Danks. mark@danks.org + Copyright (c) G¸nther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::f¸r::uml‰ute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_HU_COMPARE_H_ +#define INCLUDE_PIX_OPENCV_HU_COMPARE_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/compat.hpp" +#endif + +#include "Base/GemPixDualObj.h" + +/*----------------------------------------------------------------- +CLASS + pix_opencv_hu_compare + + Hu moments comparison used to compare contours + +-----------------------------------------------------------------*/ + +class GEM_EXPORT pix_opencv_hu_compare : public GemPixDualObj +{ + CPPEXTERN_HEADER(pix_opencv_hu_compare, GemPixDualObj) + + public: + + ////////// + // Constructor + pix_opencv_hu_compare(int,t_atom*); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_hu_compare(); + + ////////// + // Do the processing + virtual void processRGBA_RGBA(imageStruct &left, imageStruct &right); + virtual void processRGB_RGB(imageStruct &left, imageStruct &right); + virtual void processYUV_YUV(imageStruct &left, imageStruct &right); + virtual void processGray_Gray(imageStruct &left, imageStruct &right); + + ////////// + // change method used + void floatMethodMess(float method); + void floatMinSizeMess(float minsize); + void clearMess(void); + void floatCriteriaMess(float criteria); + + int comp_xsize; + int comp_ysize; + + t_outlet *m_dataout; + t_outlet *m_posout; + + int x_method; + int x_minsize; + float x_cdistance; + + private: + + ////////// + // Static member functions + static void floatMethodMessCallback(void *data, float method); + static void floatMinSizeMessCallback(void *data, float minsize); + static void clearMessCallback(void *data); + static void floatCriteriaMessCallback(void *data, float criteria); + + IplImage *rgba, *rgb, *gray; + IplImage *rgbar, *rgbr, *grayr; + + CvMemStorage *x_storage; + CvSeq *x_bcontourr; + + t_atom rlist[5]; + +}; + +#endif // for header file diff --git a/src/pix_opencv_hu_moments.cc b/src/pix_opencv_hu_moments.cc new file mode 100644 index 0000000..6665107 --- /dev/null +++ b/src/pix_opencv_hu_moments.cc @@ -0,0 +1,207 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_hu_moments.h" + +CPPEXTERN_NEW(pix_opencv_hu_moments) + +///////////////////////////////////////////////////////// +// +// pix_opencv_hu_moments +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_hu_moments :: pix_opencv_hu_moments() +{ + m_dataout = outlet_new(this->x_obj, &s_anything); + + comp_xsize = 320; + comp_ysize = 240; + + x_binary = 0; + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_hu_moments :: ~pix_opencv_hu_moments() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_hu_moments :: processRGBAImage(imageStruct &image) +{ + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgba ) + { + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + } + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor(rgba, gray, CV_BGRA2GRAY); + + cvMoments( gray, &x_moments, x_binary ); + cvGetHuMoments( &x_moments, &x_humoments ); + + SETFLOAT(&rlist[0], x_humoments.hu1); + SETFLOAT(&rlist[1], x_humoments.hu2); + SETFLOAT(&rlist[2], x_humoments.hu3); + SETFLOAT(&rlist[3], x_humoments.hu4); + SETFLOAT(&rlist[4], x_humoments.hu5); + SETFLOAT(&rlist[5], x_humoments.hu6); + SETFLOAT(&rlist[6], x_humoments.hu7); + + outlet_list( m_dataout, 0, 7, rlist ); +} + +void pix_opencv_hu_moments :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgb ) + { + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + } + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + cvMoments( gray, &x_moments, x_binary ); + cvGetHuMoments( &x_moments, &x_humoments ); + + SETFLOAT(&rlist[0], x_humoments.hu1); + SETFLOAT(&rlist[1], x_humoments.hu2); + SETFLOAT(&rlist[2], x_humoments.hu3); + SETFLOAT(&rlist[3], x_humoments.hu4); + SETFLOAT(&rlist[4], x_humoments.hu5); + SETFLOAT(&rlist[5], x_humoments.hu6); + SETFLOAT(&rlist[6], x_humoments.hu7); + + outlet_list( m_dataout, 0, 7, rlist ); +} + +void pix_opencv_hu_moments :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_hu_moments : yuv format not supported" ); +} + +void pix_opencv_hu_moments :: processGrayImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgb ) + { + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + } + + //create the orig image with new size + rgba = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + cvMoments( gray, &x_moments, x_binary ); + cvGetHuMoments( &x_moments, &x_humoments ); + + SETFLOAT(&rlist[0], x_humoments.hu1); + SETFLOAT(&rlist[1], x_humoments.hu2); + SETFLOAT(&rlist[2], x_humoments.hu3); + SETFLOAT(&rlist[3], x_humoments.hu4); + SETFLOAT(&rlist[4], x_humoments.hu5); + SETFLOAT(&rlist[5], x_humoments.hu6); + SETFLOAT(&rlist[6], x_humoments.hu7); + + outlet_list( m_dataout, 0, 7, rlist ); +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_hu_moments :: floatBinaryMess (float binary) +{ + if ( ((int)binary==1) || ((int)binary==0) ) x_binary = (int)binary; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_hu_moments :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_hu_moments::floatBinaryMessCallback, + gensym("binary"), A_FLOAT, A_NULL); +} + +void pix_opencv_hu_moments :: floatBinaryMessCallback(void *data, t_floatarg binary) +{ + GetMyClass(data)->floatBinaryMess((float)binary); +} + diff --git a/src/pix_opencv_hu_moments.h b/src/pix_opencv_hu_moments.h new file mode 100644 index 0000000..01cd0f9 --- /dev/null +++ b/src/pix_opencv_hu_moments.h @@ -0,0 +1,86 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Hu moments calculator object + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_HU_MOMENTS_H_ +#define INCLUDE_PIX_OPENCV_HU_MOMENTS_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_hu_moments + + Hu moments calculator object + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_hu_moments : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_hu_moments, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_hu_moments(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_hu_moments(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatBinaryMess(float binary); + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + int x_binary; + t_outlet *m_dataout; + t_atom rlist[7]; + + private: + + ////////// + // Static member functions + static void floatBinaryMessCallback(void *data, t_floatarg binary); + + ///////// + // IplImage needed + IplImage *rgba, *rgb, *gray; + CvMoments x_moments; + CvHuMoments x_humoments; +}; + +#endif // for header file diff --git a/src/pix_opencv_knear.cc b/src/pix_opencv_knear.cc new file mode 100644 index 0000000..0d8a98c --- /dev/null +++ b/src/pix_opencv_knear.cc @@ -0,0 +1,502 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_knear.h" + + +CPPEXTERN_NEW_WITH_TWO_ARGS(pix_opencv_knear, t_symbol *, A_DEFSYM, t_floatarg, A_DEFFLOAT ) + +///////////////////////////////////////////////////////// +// +// pix_opencv_knear +// +///////////////////////////////////////////////////////// + +///////////////////////////////////////////////////////// +// +// Find the min box. The min box respect original aspect ratio image +// The image is a binary data and background is white. +// +///////////////////////////////////////////////////////// + + +void pix_opencv_knear :: findX(IplImage* imgSrc,int* min, int* max) +{ + int i; + int minFound=0; + CvMat data; + CvScalar maxVal=cvRealScalar(imgSrc->width * 255); + CvScalar val=cvRealScalar(0); + + // for each col sum, if sum < width*255 then we find the min + // then continue to end to search the max, if sum< width*255 then is new max + for (i=0; i< imgSrc->width; i++) + { + cvGetCol(imgSrc, &data, i); + val= cvSum(&data); + if(val.val[0] < maxVal.val[0]) + { + *max= i; + if(!minFound) + { + *min= i; + minFound= 1; + } + } + + } +} + +void pix_opencv_knear :: findY(IplImage* imgSrc,int* min, int* max) +{ + int i; + int minFound=0; + CvMat data; + CvScalar maxVal=cvRealScalar(imgSrc->width * 255); + CvScalar val=cvRealScalar(0); + + // for each col sum, if sum < width*255 then we find the min + // then continue to end to search the max, if sum< width*255 then is new max + for (i=0; i< imgSrc->height; i++) + { + cvGetRow(imgSrc, &data, i); + val= cvSum(&data); + if(val.val[0] < maxVal.val[0]) + { + *max=i; + if(!minFound) + { + *min= i; + minFound= 1; + } + } + } +} + +///////////////////////////////////////////////////////// +// +// Find the bounding box. +// +// +///////////////////////////////////////////////////////// + +CvRect pix_opencv_knear :: findBB(IplImage* imgSrc) +{ + CvRect aux; + int xmin, xmax, ymin, ymax; + xmin=xmax=ymin=ymax=0; + + this->findX(imgSrc, &xmin, &xmax); + this->findY(imgSrc, &ymin, &ymax); + + aux=cvRect(xmin, ymin, xmax-xmin, ymax-ymin); + + return aux; +} + +IplImage pix_opencv_knear :: preprocessing(IplImage* imgSrc,int new_width, int new_height) +{ + IplImage* result; + IplImage* scaledResult; + + CvMat data; + CvMat dataA; + CvRect bb;//bounding box + + // find bounding box + bb=this->findBB(imgSrc); + + if ( ( bb.width == 0 ) || ( bb.height == 0 ) ) + { + bb.x = 0; + bb.y = 0; + bb.width = imgSrc->width; + bb.height = imgSrc->height; + } + + // get bounding box data and no with aspect ratio, the x and y can be corrupted + cvGetSubRect(imgSrc, &data, cvRect(bb.x, bb.y, bb.width, bb.height)); + // create image with this data with width and height with aspect ratio 1 + // then we get highest size betwen width and height of our bounding box + int size=(bb.width>bb.height)?bb.width:bb.height; + result=cvCreateImage( cvSize( size, size ), 8, 1 ); + cvSet(result,CV_RGB(255,255,255),NULL); + // copy de data in center of image + int x=(int)floor((float)(size-bb.width)/2.0f); + int y=(int)floor((float)(size-bb.height)/2.0f); + cvGetSubRect(result, &dataA, cvRect(x,y,bb.width, bb.height)); + cvCopy(&data, &dataA, NULL); + // scale result + scaledResult=cvCreateImage( cvSize( new_width, new_height ), 8, 1 ); + cvResize(result, scaledResult, CV_INTER_NN); + + // return processed data + return *scaledResult; + +} + +void pix_opencv_knear :: load_patterns(void) +{ + IplImage* src_image; + IplImage prs_image; + CvMat row,data; + char file[255]; + int i=0,j; + CvMat row_header, *row1; + + this->x_rsamples = 0; + + for( j = 0; j< this->x_nsamples; j++) + { + + // load fileath + + if ( x_filepath[0] == '/' ){ // absolute path + sprintf(file,"%s/%03d.png",this->x_filepath, j); + } else { // relative path + std::string absolutePath = localPath + x_filepath; + sprintf(file,"%s/%03d.png",absolutePath.c_str(), j); + } + src_image = cvLoadImage(file,0); + if(!src_image) + { + post("pix_opencv_knear : error: couldn't load image %s\n", file); + continue; + } + if ( ( this->x_pwidth == -1 ) || ( this->x_pheight == -1 ) ) + { + this->x_pwidth = src_image->width; + this->x_pheight = src_image->height; + // post( "pix_opencv_knear : loaded : %s (%dx%d)", file, src_image->width, src_image->height); + this->x_rsamples++; + } + else if ( ( src_image->width != this->x_pwidth ) || ( src_image->height != this->x_pheight ) ) + { + post( "pix_opencv_knear : error : %s (%dx%d) : wrong size ( should be %dx%d )", file, src_image->width, src_image->height, this->x_pwidth, this->x_pheight); + continue; + } + else + { + // post( "pix_opencv_knear : loaded : %s (%dx%d)", file, src_image->width, src_image->height); + this->x_rsamples++; + } + + // process file + prs_image = this->preprocessing(src_image, this->x_pwidth, this->x_pheight); + // post( "pix_opencv_knear : preprocessed : %s (%dx%d)", file, this->x_pwidth, this->x_pheight); + + if ( ( this->trainData == NULL ) || ( this->trainClasses == NULL )) + { + this->trainData = cvCreateMat(this->x_nsamples, this->x_pwidth*this->x_pheight, CV_32FC1); + this->trainClasses = cvCreateMat(this->x_nsamples, 1, CV_32FC1); + } + + // set class label + cvGetRow(this->trainClasses, &row, j); + cvSet(&row, cvRealScalar(i), NULL); + // set data + cvGetRow(this->trainData, &row, j); + + IplImage* img = cvCreateImage( cvSize( this->x_pwidth, this->x_pheight ), IPL_DEPTH_32F, 1 ); + // convert 8 bits image to 32 float image + cvConvertScale(&prs_image, img, 0.0039215, 0); + + cvGetSubRect(img, &data, cvRect( 0, 0, this->x_pwidth, this->x_pheight) ); + + // convert data matrix sizexsize to vecor + row1 = cvReshape( &data, &row_header, 0, 1 ); + cvCopy(row1, &row, NULL); + cvReleaseImage( &img ); + } + + // create the classifier + post( "pix_opencv_knear : loaded : %d samples from %s", this->x_rsamples, this->x_filepath); + if ( this->x_rsamples == this->x_nsamples ) + { + this->knn=new CvKNearest( this->trainData, this->trainClasses, 0, false, this->x_nsamples ); + this->x_nearest=cvCreateMat(1,this->x_nsamples,CV_32FC1); + this->x_dist=cvCreateMat(1,this->x_nsamples,CV_32FC1); + } +} + + +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_knear :: pix_opencv_knear(t_symbol *path, t_floatarg nsamples) +{ + m_dataout = outlet_new(this->x_obj, &s_anything); + + comp_xsize = 320; + comp_ysize = 240; + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_filepath = ( char * ) getbytes( 1024 ); + sprintf( x_filepath, "%s", path->s_name ); + x_nsamples = (int)nsamples; + + x_classify = 0; + x_pwidth = -1; + x_pheight = -1; + + trainData = NULL; + trainClasses = NULL; + + t_canvas* canvas = canvas_getcurrent(); + localPath = std::string(canvas_getdir(canvas)->s_name) + "/"; + + try { + this->load_patterns(); + } catch(...) { + error( "can't load patterns" ); + return; + } +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_knear :: ~pix_opencv_knear() +{ + // destroy cv structures + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseMat( &trainData ); + cvReleaseMat( &trainClasses ); + +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_knear :: processRGBAImage(imageStruct &image) +{ + int i; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + // destroy cv_images to clean memory + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + + // create cv_images + this->rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + this->rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + this->grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor(rgba, grey, CV_BGRA2GRAY); + + if ( this->x_classify ) + { + IplImage prs_image; + CvMat row_header, *row1, odata; + + // post( "pix_opencv_knear : size : (%dx%d)", this->x_pwidth, this->x_pheight); + + // process file + prs_image = this->preprocessing(this->grey, this->x_pwidth, this->x_pheight); + + //Set data + IplImage* img32 = cvCreateImage( cvSize( this->x_pwidth, this->x_pheight ), IPL_DEPTH_32F, 1 ); + cvConvertScale(&prs_image, img32, 0.0039215, 0); + cvGetSubRect(img32, &odata, cvRect(0,0, this->x_pwidth, this->x_pheight)); + row1 = cvReshape( &odata, &row_header, 0, 1 ); + + this->knn->find_nearest(row1,this->x_nsamples,0,0,this->x_nearest,this->x_dist); + for ( i=0; ix_nsamples; i++ ) + { + // post( "pix_opencv_knear : distance : %f", this->x_dist->data.fl[i] ); + } + outlet_float(this->m_dataout, this->x_dist->data.fl[0]); + + cvReleaseImage( &img32 ); + this->x_classify = 0; + } + + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_knear :: processRGBImage(imageStruct &image) +{ + int i; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + // destroy cv_images to clean memory + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + + // create cv_images + this->rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + this->rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + this->grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtColor(rgb, grey, CV_BGR2GRAY); + + if ( this->x_classify ) + { + IplImage prs_image; + CvMat row_header, *row1, odata; + + // post( "pix_opencv_knear : size : (%dx%d)", this->x_pwidth, this->x_pheight); + + // process file + prs_image = this->preprocessing(this->grey, this->x_pwidth, this->x_pheight); + + //Set data + IplImage* img32 = cvCreateImage( cvSize( this->x_pwidth, this->x_pheight ), IPL_DEPTH_32F, 1 ); + cvConvertScale(&prs_image, img32, 0.0039215, 0); + cvGetSubRect(img32, &odata, cvRect(0,0, this->x_pwidth, this->x_pheight)); + row1 = cvReshape( &odata, &row_header, 0, 1 ); + + this->knn->find_nearest(row1,this->x_nsamples,0,0,this->x_nearest,this->x_dist); + for ( i=0; ix_nsamples; i++ ) + { + // post( "pix_opencv_knear : distance : %f", this->x_dist->data.fl[i] ); + } + outlet_float(this->m_dataout, this->x_dist->data.fl[0]); + + cvReleaseImage( &img32 ); + this->x_classify = 0; + } + + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_knear :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_knear : yuv format not supported" ); +} + +void pix_opencv_knear :: processGrayImage(imageStruct &image) +{ + int i; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + // destroy cv_images to clean memory + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + + // create cv_images + this->rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + this->rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + this->grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + } + + memcpy( grey->imageData, image.data, image.xsize*image.ysize*1 ); + + if ( this->x_classify ) + { + IplImage prs_image; + CvMat row_header, *row1, odata; + + // post( "pix_opencv_knear : size : (%dx%d)", this->x_pwidth, this->x_pheight); + + // process file + prs_image = this->preprocessing(this->grey, this->x_pwidth, this->x_pheight); + + //Set data + IplImage* img32 = cvCreateImage( cvSize( this->x_pwidth, this->x_pheight ), IPL_DEPTH_32F, 1 ); + cvConvertScale(&prs_image, img32, 0.0039215, 0); + cvGetSubRect(img32, &odata, cvRect(0,0, this->x_pwidth, this->x_pheight)); + row1 = cvReshape( &odata, &row_header, 0, 1 ); + + this->knn->find_nearest(row1,this->x_nsamples,0,0,this->x_nearest,this->x_dist); + for ( i=0; ix_nsamples; i++ ) + { + // post( "pix_opencv_knear : distance : %f", this->x_dist->data.fl[i] ); + } + outlet_float(this->m_dataout, this->x_dist->data.fl[0]); + + cvReleaseImage( &img32 ); + this->x_classify = 0; + } + + memcpy( image.data, grey->imageData, image.xsize*image.ysize*1 ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_knear :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_knear::bangMessCallback, + gensym("bang"), A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_knear::loadMessCallback, + gensym("load"), A_SYMBOL, A_DEFFLOAT, A_NULL); +} + +void pix_opencv_knear :: bangMessCallback(void *data) +{ + if ( GetMyClass(data)->trainData == NULL ) + { + ::post( "pix_opencv_knear : no patterns loaded : cannot process" ); + return; + } + GetMyClass(data)->x_classify=1; +} + +void pix_opencv_knear :: loadMessCallback(void *data, t_symbol *path, t_floatarg nsamples) +{ + if ( (int) nsamples <= 0 ) + { + ::post( "pix_opencv_knear : wrong number of samples : %d", nsamples ); + return; + } + else + { + GetMyClass(data)->x_nsamples = (int)nsamples; + GetMyClass(data)->x_rsamples = 0; + cvReleaseMat( &GetMyClass(data)->trainData ); + cvReleaseMat( &GetMyClass(data)->trainClasses ); + GetMyClass(data)->trainData = NULL; + GetMyClass(data)->trainClasses = NULL; + } + strcpy( GetMyClass(data)->x_filepath, path->s_name ); + GetMyClass(data)->load_patterns(); +} diff --git a/src/pix_opencv_knear.h b/src/pix_opencv_knear.h new file mode 100644 index 0000000..63ddcaa --- /dev/null +++ b/src/pix_opencv_knear.h @@ -0,0 +1,108 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Simple distance classifier + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_KNEAR_H_ +#define INCLUDE_PIX_OPENCV_KNEAR_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/highgui/highgui_c.h" +#include "opencv2/ml/ml.hpp" +#endif + +#include "Base/GemPixObj.h" + +#include +#include + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + + pix_opencv_knear : OCR like pattern recognition + based on basic OCR with Open CV tutorial + by damiles : http://blog.damiles.com/?p=93 + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_knear : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_knear, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_knear(t_symbol *path, t_floatarg nsamples); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_knear(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + void findX(IplImage* imgSrc,int* min, int* max); + void findY(IplImage* imgSrc,int* min, int* max); + CvRect findBB(IplImage* imgSrc); + IplImage preprocessing(IplImage* imgSrc,int new_width, int new_height); + void load_patterns(void); + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + + private: + + ////////// + // Static member functions + static void bangMessCallback(void *data); + static void loadMessCallback(void *data, t_symbol *path, t_floatarg nsamples); + + // internal data + t_outlet *m_dataout; + int x_classify; + + // open cv classifier data + char *x_filepath; + int x_nsamples; + int x_rsamples; + CvMat *trainData; + CvMat *trainClasses; + CvMat *x_nearest; + CvMat *x_dist; + int x_pwidth; + int x_pheight; + CvKNearest *knn; + + std::string localPath; + + // The output and temporary images + IplImage *rgba, *rgb, *grey; + +}; + +#endif // for header file diff --git a/src/pix_opencv_laplace.cc b/src/pix_opencv_laplace.cc new file mode 100644 index 0000000..163cd63 --- /dev/null +++ b/src/pix_opencv_laplace.cc @@ -0,0 +1,228 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_laplace.h" + +CPPEXTERN_NEW(pix_opencv_laplace) + +///////////////////////////////////////////////////////// +// +// pix_opencv_laplace +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_laplace :: pix_opencv_laplace() +{ + int i; + + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); + + aperture_size = 3; + comp_xsize = 0; + comp_ysize = 0; + + rgb = NULL; + rgba = NULL; + grey = NULL; + laplace = NULL; + colorlaplace = NULL; + for (i=0; i<3; i++) planes[i] = NULL; + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_laplace :: ~pix_opencv_laplace() +{ + int i; + //Destroy cv_images to clean memory + for( i = 0; i < 3; i++ ) + cvReleaseImage( &planes[i] ); + cvReleaseImage( &rgb ); + cvReleaseImage( &rgba ); + cvReleaseImage( &grey ); + cvReleaseImage( &laplace ); + cvReleaseImage( &colorlaplace ); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_laplace :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + for( i = 0; i < 3; i++ ) + cvReleaseImage( &planes[i] ); + cvReleaseImage( &rgb ); + cvReleaseImage( &rgba ); + cvReleaseImage( &grey ); + cvReleaseImage( &laplace ); + cvReleaseImage( &colorlaplace ); + + //Create cv_images + for( i = 0; i < 3; i++ ) + planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); + colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + rgba = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 4 ); + grey = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + + cvCvtColor( rgba, rgb, CV_RGBA2RGB); + + cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); + for( i = 0; i < 3; i++ ) + { + cvLaplace( planes[i], laplace, aperture_size ); + cvConvertScaleAbs( laplace, planes[i], 1, 0 ); + } + cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); + colorlaplace->origin = rgb->origin; + + cvCvtColor( colorlaplace, rgba, CV_RGB2RGBA); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_laplace :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + for( i = 0; i < 3; i++ ) + cvReleaseImage( &planes[i] ); + cvReleaseImage( &rgb ); + cvReleaseImage( &laplace ); + cvReleaseImage( &colorlaplace ); + + //Create cv_images + for( i = 0; i < 3; i++ ) + planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); + colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); + for( i = 0; i < 3; i++ ) + { + cvLaplace( planes[i], laplace, 3 ); + cvConvertScaleAbs( laplace, planes[i], 1, 0 ); + } + cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); + colorlaplace->origin = rgb->origin; + + //cvShowImage(wndname, cedge); + memcpy( image.data, colorlaplace->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_laplace :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_laplace : yuv format not supported" ); +} + +void pix_opencv_laplace :: processGrayImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!grey)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + for( i = 0; i < 3; i++ ) + cvReleaseImage( &planes[i] ); + cvReleaseImage( &rgb ); + cvReleaseImage( &laplace ); + cvReleaseImage( &colorlaplace ); + cvReleaseImage( &grey ); + + //Create cv_images + for( i = 0; i < 3; i++ ) + planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); + colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + grey = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 1 ); + } + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); + + cvCvtColor( grey, rgb, CV_GRAY2RGB); + + cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); + for( i = 0; i < 3; i++ ) + { + cvLaplace( planes[i], laplace, 3 ); + cvConvertScaleAbs( laplace, planes[i], 1, 0 ); + } + cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); + colorlaplace->origin = rgb->origin; + + + cvCvtColor( colorlaplace, grey, CV_RGB2GRAY); + //cvShowImage(wndname, cedge); + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// floatApertureMess +// +///////////////////////////////////////////////////////// +void pix_opencv_laplace :: floatApertureMess (float aperture_size) +{ + if ((aperture_size==1)||(aperture_size==3)||(aperture_size==5)||(aperture_size==7)) this->aperture_size = (int)aperture_size; + else post("aperture size out of range ... must be 1,3,5 or 7"); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_laplace :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_laplace::floatApertureMessCallback, + gensym("ft1"), A_FLOAT, A_NULL); +} +void pix_opencv_laplace :: floatApertureMessCallback(void *data, t_floatarg aperture_size) +{ + GetMyClass(data)->floatApertureMess((float)aperture_size); +} diff --git a/src/pix_opencv_laplace.h b/src/pix_opencv_laplace.h new file mode 100644 index 0000000..5d60275 --- /dev/null +++ b/src/pix_opencv_laplace.h @@ -0,0 +1,83 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Laplace transform / edge detection + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_LAPLACE_H_ +#define INCLUDE_PIX_OPENCV_LAPLACE_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/compat.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_laplace + + Laplace transform / edge detection + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_laplace : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_laplace, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_laplace(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_laplace(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new aperture_size + void floatApertureMess(float aperture_size); + // The new aperture size + int aperture_size; + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + ////////// + // Static member functions + static void floatApertureMessCallback(void *data, t_floatarg aperture_size); + + ///////// + // IplImage needed + IplImage *rgb, *rgba, *grey, *laplace, *colorlaplace, *planes[3]; + +}; + +#endif // for header file diff --git a/src/pix_opencv_lk.cc b/src/pix_opencv_lk.cc new file mode 100644 index 0000000..8a9fe2e --- /dev/null +++ b/src/pix_opencv_lk.cc @@ -0,0 +1,1170 @@ + +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_lk.h" +#include + +CPPEXTERN_NEW(pix_opencv_lk) + +///////////////////////////////////////////////////////// +// +// pix_opencv_lk +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_lk :: pix_opencv_lk() +{ + int i; + + comp_xsize=320; + comp_ysize=240; + + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("winsize")); + + m_dataout = outlet_new(this->x_obj, &s_anything); + win_size = 10; + + points[0] = 0; + points[1] = 0; + status = 0; + count = 0; + need_to_init = 1; + night_mode = 0; + flags = 0; + add_remove_pt = 0; + quality = 0.1; + min_distance = 10; + maxmove = 20; + markall = 0; + ftolerance = 5; + delaunay = -1; + threshold = -1; + + for ( i=0; icomp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &orgb ); + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &ogray ); + cvReleaseImage( &prev_gray ); + cvReleaseImage( &pyramid ); + cvReleaseImage( &prev_pyramid ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + points[0] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); + points[1] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); + status = (char*)cvAlloc(MAX_COUNT); + + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor(rgba, rgb, CV_BGRA2RGB); + cvCvtColor(rgba, orgb, CV_BGRA2RGB); + cvCvtColor(rgba, gray, CV_BGRA2GRAY); + + if( night_mode ) + cvZero( rgb ); + + for ( im=0; im= 0 ) + { + // init data structures for the delaunay + x_fullrect.x = -comp_xsize/2; + x_fullrect.y = -comp_ysize/2; + x_fullrect.width = 2*comp_xsize; + x_fullrect.height = 2*comp_ysize; + + x_storage = cvCreateMemStorage(0); + x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), + sizeof(CvSubdiv2DPoint), + sizeof(CvQuadEdge2D), + x_storage ); + cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); + } + + if( need_to_init ) + { + /* automatic initialization */ + IplImage* eig = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); + IplImage* temp = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); + + count = MAX_COUNT; + cvGoodFeaturesToTrack( gray, eig, temp, points[1], &count, + quality, min_distance, 0, 3, 0, 0.04 ); + // cvFindCornerSubPix( gray, points[1], count, + // cvSize(win_size,win_size), cvSize(-1,-1), + // cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03)); + cvReleaseImage( &eig ); + cvReleaseImage( &temp ); + + add_remove_pt = 0; + } + else if( count > 0 ) + { + cvCalcOpticalFlowPyrLK( prev_gray, gray, prev_pyramid, pyramid, + points[0], points[1], count, cvSize(win_size,win_size), 3, status, 0, + cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), flags ); + flags |= CV_LKFLOW_PYR_A_READY; + for( i = k = 0; i < count; i++ ) + { + if( add_remove_pt ) + { + double dx = pt.x - points[1][i].x; + double dy = pt.y - points[1][i].y; + + if( dx*dx + dy*dy <= 25 ) + { + add_remove_pt = 0; + continue; + } + } + + if( !status[i] ) + continue; + + points[1][k++] = points[1][i]; + if ( delaunay == 0 ) // add all the points + { + cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + // only add points included in (color-threshold) 0 ) && ( x_xmark[delaunay-1] != -1 ) ) + { + int px = cvPointFrom32f(points[1][i]).x; + int py = cvPointFrom32f(points[1][i]).y; + int ppx, ppy; + + // eight connected pixels + for ( ppx=px-1; ppx<=px+1; ppx++ ) + { + for ( ppy=py-1; ppy<=py+1; ppy++ ) + { + if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; + if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; + + uchar red = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3]; + uchar green = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+1]; + uchar blue = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+2]; + + uchar pred = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3]; + uchar pgreen = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3+1]; + uchar pblue = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3+2]; + + int diff = abs(red-pred) + abs(green-pgreen) + abs(blue-pblue); + + // post( "pix_opencv_lk : point (%d,%d,%d) : diff : %d threshold : %d", blue, green, red, diff, threshold ); + + if ( diff < threshold ) + { + cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + } + } + } + + cvCircle( rgb, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0); + + marked=0; + oi=-1; + dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; + + for ( im=0; im= 0 ) + { + CvSeqReader reader; + int i, total = x_subdiv->edges->total; + int elem_size = x_subdiv->edges->elem_size; + + cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); + + for( i = 0; i < total; i++ ) + { + CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); + CvSubdiv2DPoint* org_pt; + CvSubdiv2DPoint* dst_pt; + CvPoint2D32f org; + CvPoint2D32f dst; + CvPoint iorg, idst; + + if( CV_IS_SET_ELEM( edge )) + { + org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); + dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); + + if( org_pt && dst_pt ) + { + org = org_pt->pt; + dst = dst_pt->pt; + + iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); + idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); + + if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && + ( dst.x > 0 ) && ( dst.x < comp_xsize ) && + ( org.y > 0 ) && ( org.y < comp_ysize ) && + ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) + cvLine( rgb, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); + } + } + + CV_NEXT_SEQ_ELEM( elem_size, reader ); + } + } + + CV_SWAP( prev_gray, gray, swap_temp ); + CV_SWAP( prev_pyramid, pyramid, swap_temp ); + CV_SWAP( points[0], points[1], swap_points ); + need_to_init = 0; + + cvCvtColor(rgb, rgba, CV_BGR2BGRA); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_lk :: processRGBImage(imageStruct &image) +{ + int i, k; + int im, oi; + int marked; + float dist, odist; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &orgb ); + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &ogray ); + cvReleaseImage( &prev_gray ); + cvReleaseImage( &pyramid ); + cvReleaseImage( &prev_pyramid ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + points[0] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); + points[1] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); + status = (char*)cvAlloc(MAX_COUNT); + + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + memcpy( orgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtColor(rgb, gray, CV_BGRA2GRAY); + + if( night_mode ) + cvZero( rgb ); + + for ( im=0; im= 0 ) + { + // init data structures for the delaunay + x_fullrect.x = -comp_xsize/2; + x_fullrect.y = -comp_ysize/2; + x_fullrect.width = 2*comp_xsize; + x_fullrect.height = 2*comp_ysize; + + x_storage = cvCreateMemStorage(0); + x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), + sizeof(CvSubdiv2DPoint), + sizeof(CvQuadEdge2D), + x_storage ); + cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); + } + + if( need_to_init ) + { + /* automatic initialization */ + IplImage* eig = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); + IplImage* temp = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); + + count = MAX_COUNT; + cvGoodFeaturesToTrack( gray, eig, temp, points[1], &count, + quality, min_distance, 0, 3, 0, 0.04 ); + // cvFindCornerSubPix( gray, points[1], count, + // cvSize(win_size,win_size), cvSize(-1,-1), + // cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03)); + cvReleaseImage( &eig ); + cvReleaseImage( &temp ); + + add_remove_pt = 0; + } + else if( count > 0 ) + { + cvCalcOpticalFlowPyrLK( prev_gray, gray, prev_pyramid, pyramid, + points[0], points[1], count, cvSize(win_size,win_size), 3, status, 0, + cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), flags ); + flags |= CV_LKFLOW_PYR_A_READY; + for( i = k = 0; i < count; i++ ) + { + if( add_remove_pt ) + { + double dx = pt.x - points[1][i].x; + double dy = pt.y - points[1][i].y; + + if( dx*dx + dy*dy <= 25 ) + { + add_remove_pt = 0; + continue; + } + } + + if( !status[i] ) + continue; + + points[1][k++] = points[1][i]; + if ( delaunay == 0 ) // add all the points + { + cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + // only add points included in (color-threshold) 0 ) && ( x_xmark[delaunay-1] != -1 ) ) + { + int px = cvPointFrom32f(points[1][i]).x; + int py = cvPointFrom32f(points[1][i]).y; + int ppx, ppy; + + // eight connected pixels + for ( ppx=px-1; ppx<=px+1; ppx++ ) + { + for ( ppy=py-1; ppy<=py+1; ppy++ ) + { + if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; + if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; + + uchar red = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3]; + uchar green = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+1]; + uchar blue = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+2]; + + uchar pred = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3]; + uchar pgreen = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3+1]; + uchar pblue = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]*3+2]; + + int diff = abs(red-pred) + abs(green-pgreen) + abs(blue-pblue); + + // post( "pix_opencv_lk : point (%d,%d,%d) : diff : %d", blue, green, red, diff ); + + if ( diff < threshold ) + { + cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + } + } + } + + cvCircle( rgb, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0); + + marked=0; + oi=-1; + dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; + + for ( im=0; im= 0 ) + { + CvSeqReader reader; + int i, total = x_subdiv->edges->total; + int elem_size = x_subdiv->edges->elem_size; + + cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); + + for( i = 0; i < total; i++ ) + { + CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); + CvSubdiv2DPoint* org_pt; + CvSubdiv2DPoint* dst_pt; + CvPoint2D32f org; + CvPoint2D32f dst; + CvPoint iorg, idst; + + if( CV_IS_SET_ELEM( edge )) + { + org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); + dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); + + if( org_pt && dst_pt ) + { + org = org_pt->pt; + dst = dst_pt->pt; + + iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); + idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); + + if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && + ( dst.x > 0 ) && ( dst.x < comp_xsize ) && + ( org.y > 0 ) && ( org.y < comp_ysize ) && + ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) + cvLine( rgb, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); + } + } + + CV_NEXT_SEQ_ELEM( elem_size, reader ); + } + } + + CV_SWAP( prev_gray, gray, swap_temp ); + CV_SWAP( prev_pyramid, pyramid, swap_temp ); + CV_SWAP( points[0], points[1], swap_points ); + need_to_init = 0; + + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_lk :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_lk : yuv format not supported" ); +} + +void pix_opencv_lk :: processGrayImage(imageStruct &image) +{ + int i, k; + int im, oi; + int marked; + float dist, odist; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &orgb ); + cvReleaseImage( &rgb ); + cvReleaseImage( &ogray ); + cvReleaseImage( &gray ); + cvReleaseImage( &prev_gray ); + cvReleaseImage( &pyramid ); + cvReleaseImage( &prev_pyramid ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_pyramid = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + points[0] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); + points[1] = (CvPoint2D32f*)cvAlloc(MAX_COUNT*sizeof(points[0][0])); + status = (char*)cvAlloc(MAX_COUNT); + + } + + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + memcpy( ogray->imageData, image.data, image.xsize*image.ysize ); + + if( night_mode ) + cvZero( gray ); + + for ( im=0; im= 0 ) + { + // init data structures for the delaunay + x_fullrect.x = -comp_xsize/2; + x_fullrect.y = -comp_ysize/2; + x_fullrect.width = 2*comp_xsize; + x_fullrect.height = 2*comp_ysize; + + x_storage = cvCreateMemStorage(0); + x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), + sizeof(CvSubdiv2DPoint), + sizeof(CvQuadEdge2D), + x_storage ); + cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); + } + + if( need_to_init ) + { + /* automatic initialization */ + IplImage* eig = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); + IplImage* temp = cvCreateImage( cvSize(gray->width,gray->height), 32, 1 ); + + count = MAX_COUNT; + cvGoodFeaturesToTrack( gray, eig, temp, points[1], &count, + quality, min_distance, 0, 3, 0, 0.04 ); + // cvFindCornerSubPix( gray, points[1], count, + // cvSize(win_size,win_size), cvSize(-1,-1), + // cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03)); + cvReleaseImage( &eig ); + cvReleaseImage( &temp ); + + add_remove_pt = 0; + } + else if( count > 0 ) + { + cvCalcOpticalFlowPyrLK( prev_gray, gray, prev_pyramid, pyramid, + points[0], points[1], count, cvSize(win_size,win_size), 3, status, 0, + cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03), flags ); + flags |= CV_LKFLOW_PYR_A_READY; + for( i = k = 0; i < count; i++ ) + { + if( add_remove_pt ) + { + double dx = pt.x - points[1][i].x; + double dy = pt.y - points[1][i].y; + + if( dx*dx + dy*dy <= 25 ) + { + add_remove_pt = 0; + continue; + } + } + + if( !status[i] ) + continue; + + points[1][k++] = points[1][i]; + if ( delaunay == 0 ) // add all the points + { + cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + // only add points included in (color-threshold) 0 ) && ( x_xmark[delaunay-1] != -1 ) ) + { + int px = cvPointFrom32f(points[1][i]).x; + int py = cvPointFrom32f(points[1][i]).y; + int ppx, ppy; + + // eight connected pixels + for ( ppx=px-1; ppx<=px+1; ppx++ ) + { + for ( ppy=py-1; ppy<=py+1; ppy++ ) + { + if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; + if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; + + uchar lum = ((uchar*)(ogray->imageData + ogray->widthStep*ppx))[ppy]; + uchar plum = ((uchar*)(ogray->imageData + ogray->widthStep*x_xmark[delaunay-1]))[x_ymark[delaunay-1]]; + + int diff = abs(plum-lum); + + // post( "pix_opencv_lk : point (%d,%d,%d) : diff : %d", blue, green, red, diff ); + + if ( diff < threshold ) + { + cvSubdivDelaunay2DInsert( x_subdiv, points[1][i] ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + } + } + } + + cvCircle( gray, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0); + + marked=0; + oi=-1; + dist=(comp_xsize>comp_ysize)?comp_xsize:comp_ysize; + + for ( im=0; im= 0 ) + { + CvSeqReader reader; + int i, total = x_subdiv->edges->total; + int elem_size = x_subdiv->edges->elem_size; + + cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); + + for( i = 0; i < total; i++ ) + { + CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); + CvSubdiv2DPoint* org_pt; + CvSubdiv2DPoint* dst_pt; + CvPoint2D32f org; + CvPoint2D32f dst; + CvPoint iorg, idst; + + if( CV_IS_SET_ELEM( edge )) + { + org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); + dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); + + if( org_pt && dst_pt ) + { + org = org_pt->pt; + dst = dst_pt->pt; + + iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); + idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); + + if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && + ( dst.x > 0 ) && ( dst.x < comp_xsize ) && + ( org.y > 0 ) && ( org.y < comp_ysize ) && + ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) + cvLine( gray, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); + } + } + + CV_NEXT_SEQ_ELEM( elem_size, reader ); + } + } + + CV_SWAP( prev_gray, gray, swap_temp ); + CV_SWAP( prev_pyramid, pyramid, swap_temp ); + CV_SWAP( points[0], points[1], swap_points ); + need_to_init = 0; + + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_lk :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_lk::winSizeMessCallback, + gensym("winsize"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::nightModeMessCallback, + gensym("nightmode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::qualityMessCallback, + gensym("quality"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::initMessCallback, + gensym("init"), A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::markMessCallback, + gensym("mark"), A_GIMME, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::deleteMessCallback, + gensym("delete"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::clearMessCallback, + gensym("clear"), A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::minDistanceMessCallback, + gensym("mindistance"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::maxMoveMessCallback, + gensym("maxmove"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::ftoleranceMessCallback, + gensym("ftolerance"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::delaunayMessCallback, + gensym("delaunay"), A_SYMBOL, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_lk::pdelaunayMessCallback, + gensym("pdelaunay"), A_FLOAT, A_FLOAT, A_NULL); +} + +void pix_opencv_lk :: winSizeMessCallback(void *data, t_floatarg winsize) +{ + GetMyClass(data)->winSizeMess((float)winsize); +} + +void pix_opencv_lk :: nightModeMessCallback(void *data, t_floatarg nightmode) +{ + GetMyClass(data)->nightModeMess((float)nightmode); +} + +void pix_opencv_lk :: qualityMessCallback(void *data, t_floatarg quality) +{ + GetMyClass(data)->qualityMess((float)quality); +} + +void pix_opencv_lk :: initMessCallback(void *data) +{ + GetMyClass(data)->initMess(); +} + +void pix_opencv_lk :: markMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) +{ + GetMyClass(data)->markMess(argc, argv); +} + +void pix_opencv_lk :: deleteMessCallback(void *data, t_floatarg index) +{ + GetMyClass(data)->deleteMess((float)index); +} + +void pix_opencv_lk :: clearMessCallback(void *data) +{ + GetMyClass(data)->clearMess(); +} + +void pix_opencv_lk :: minDistanceMessCallback(void *data, t_floatarg mindistance) +{ + GetMyClass(data)->minDistanceMess((float)mindistance); +} + +void pix_opencv_lk :: maxMoveMessCallback(void *data, t_floatarg maxmove) +{ + GetMyClass(data)->maxMoveMess((float)maxmove); +} + +void pix_opencv_lk :: ftoleranceMessCallback(void *data, t_floatarg ftolerance) +{ + GetMyClass(data)->ftoleranceMess((float)ftolerance); +} + +void pix_opencv_lk :: delaunayMessCallback(void *data, t_symbol *s) +{ + GetMyClass(data)->delaunayMess(s); +} + +void pix_opencv_lk :: pdelaunayMessCallback(void *data, t_floatarg fpoint, t_floatarg fthreshold) +{ + GetMyClass(data)->pdelaunayMess((float)fpoint, (float)fthreshold); +} + +void pix_opencv_lk :: winSizeMess(float fwinsize) +{ + if (fwinsize>1.0) win_size = (int)fwinsize; +} + +void pix_opencv_lk :: nightModeMess(float fnightmode) +{ + if ((fnightmode==0.0)||(fnightmode==1.0)) night_mode = (int)fnightmode; +} + +void pix_opencv_lk :: qualityMess(float fquality) +{ + if (fquality>0.0) quality = fquality; +} + +void pix_opencv_lk :: initMess(void) +{ + need_to_init = 1; +} + +void pix_opencv_lk :: markMess(int argc, t_atom *argv) +{ + int i; + int inserted; + + if ( argc == 1 ) // mark all or none + { + if ( argv[0].a_type != A_SYMBOL ) + { + error( "pix_opencv_lk : wrong argument (should be 'all')" ); + return; + } + if ( !strcmp( argv[0].a_w.w_symbol->s_name, "all" ) ) + { + markall = 1; + return; + } + if ( !strcmp( argv[0].a_w.w_symbol->s_name, "none" ) ) + { + markall = 0; + clearMess(); + return; + } + } + else + { + if ( ( argv[0].a_type != A_FLOAT ) || ( argv[1].a_type != A_FLOAT ) ) + { + error( "pix_opencv_lk : wrong argument (should be mark px py)" ); + return; + } + else + { + float fpx = argv[0].a_w.w_float; + float fpy = argv[1].a_w.w_float; + int px, py; + + if ( ( fpx < 0.0 ) || ( fpx > comp_xsize ) || ( fpy < 0.0 ) || ( fpy > comp_ysize ) ) + { + return; + } + + px = (int)fpx; + py = (int)fpy; + inserted = 0; + for ( i=0; i= MAX_MARKERS ) ) + { + return; + } + + x_xmark[(int)index] = -1; + x_ymark[(int)index] = -1; + +} + +void pix_opencv_lk :: clearMess(void) +{ + int i; + + for ( i=0; i1.0) min_distance = (int)fmindistance; +} + +void pix_opencv_lk :: maxMoveMess(float fmaxmove) +{ + // has to be more than the size of a point + if (fmaxmove>=3.0) maxmove = (int)fmaxmove; +} + +void pix_opencv_lk :: ftoleranceMess(float ftolerance) +{ + if (ftolerance>=0.0) ftolerance = (int)ftolerance; +} + +void pix_opencv_lk :: delaunayMess(t_symbol *s) +{ + if (s == gensym("on")) + delaunay = 0; + if (s == gensym("off")) + delaunay = -1; +} + +void pix_opencv_lk :: pdelaunayMess(float fpoint, float fthreshold) +{ + if (((int)fpoint>0) && ((int)fpoint +#include + +#ifdef _MSC_VER +#include +#define INFINITY std::numeric_limits::infinity() +#endif + +using namespace std; + + +CPPEXTERN_NEW(pix_opencv_matchshape) + +///////////////////////////////////////////////////////// +// +// pix_opencv_matchshape +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_matchshape :: pix_opencv_matchshape() : m_threshold(2), m_method(CV_CONTOURS_MATCH_I1) +{ + m_dataout = outlet_new(this->x_obj, 0); + m_template_vec_vec.clear(); + m_template_vec_mat.clear(); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_matchshape :: ~pix_opencv_matchshape() +{ +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_matchshape :: processRGBAImage(imageStruct &image) +{ + error( "pix_opencv_matchshape : rgba format not supported" ); +} + +void pix_opencv_matchshape :: processRGBImage(imageStruct &image) { + error( "pix_opencv_matchshape : rgb format not supported"); +} + +void pix_opencv_matchshape :: processYUVImage(imageStruct &image) +{ + error( "pix_opencv_matchshape : yuv format not supported" ); +} + +void pix_opencv_matchshape :: processGrayImage(imageStruct &image) +{ + error( "pix_opencv_matchshape : gray format not supported" ); + error( "pix_opencv_matchshape only works on pd lists" ); + + // TODO add support to compare grayscale images +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_matchshape :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG0(classPtr, "clear", clearMess); + CPPEXTERN_MSG(classPtr, "template", templateMess); + CPPEXTERN_MSG(classPtr, "contour", contourMess); + CPPEXTERN_MSG1(classPtr, "threshold", thresholdMess, float); + CPPEXTERN_MSG1(classPtr, "method", methodMess, int); +} + +void pix_opencv_matchshape :: clearMess(void) +{ + for ( vector >::iterator it=m_template_vec_vec.end(); it!=m_template_vec_vec.begin(); it--) + { + (*it).clear(); + } + m_template_vec_vec.clear(); + m_template_vec_mat.clear(); + + t_atom data; + SETFLOAT(&data, (float)m_template_vec_vec.size()); + outlet_anything(m_dataout, gensym("template_vec"), 1, &data); + + SETFLOAT(&data, (float)m_template_vec_mat.size()); + outlet_anything(m_dataout, gensym("template_mat"), 1, &data); +} + + +void pix_opencv_matchshape :: contourMess(t_symbol*s, int argc, t_atom*argv) +{ + if ( m_template_vec_vec.empty() ){ + error("no template to match, please load a template before matching"); + return; + } + + if ( (argc%2)!=0 ) { + error("template message argument should be multiple of 2"); + return; + } + + for (int i=0;i tmp_contour; + for (int i=2;i >::iterator it=m_template_vec_vec.begin(); it!=m_template_vec_vec.end(); ++it){ + comp = cv::matchShapes(tmp_contour, *it, m_method, 0.); + if ( comp < min ){ + min=comp; + id=i; + } + i++; + } + + if ( min < m_threshold ) + { + t_atom data[2]; + SETFLOAT(data,id); + SETFLOAT(data+1, min); + outlet_anything(m_dataout, gensym("match_vec"), 2, data); + } +} + +void pix_opencv_matchshape :: templateMess(t_symbol*s, int argc, t_atom*argv) +{ + if ( (argc%2)!=0 ) { + error("template message argument should be multiple of 2"); + return; + } + for (int i=0;i tmp_contour; + tmp_contour.clear(); + for (int i=2;i0.?arg:0.); + t_atom data; + SETFLOAT(&data, m_threshold); + outlet_anything(m_dataout, gensym("threshold"), 1, &data); +} + +void pix_opencv_matchshape :: methodMess(int arg) +{ + switch (arg) { + case 1: + m_method=CV_CONTOURS_MATCH_I1; + break; + case 2: + m_method=CV_CONTOURS_MATCH_I2; + break; + case 3: + m_method=CV_CONTOURS_MATCH_I3; + break; + default: + error("method should be 1, 2 or 3"); + m_method=CV_CONTOURS_MATCH_I1; + } + t_atom data; + switch (m_method) { + case CV_CONTOURS_MATCH_I1: + SETFLOAT(&data, 1); + break; + case CV_CONTOURS_MATCH_I2: + SETFLOAT(&data, 2); + break; + case CV_CONTOURS_MATCH_I3: + SETFLOAT(&data, 3); + break; + } + outlet_anything(m_dataout, gensym("method"), 1, &data); +} diff --git a/src/pix_opencv_matchshape.h b/src/pix_opencv_matchshape.h new file mode 100644 index 0000000..c8063c3 --- /dev/null +++ b/src/pix_opencv_matchshape.h @@ -0,0 +1,74 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Threshold filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_MATCHSHAPE_H_ +#define INCLUDE_PIX_OPENCV_MATCHSHAPE_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" + +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_matchshape + + square pattern detector + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_matchshape : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_matchshape, GemPixObj) + + public: + + // Constructor + pix_opencv_matchshape(); + + protected: + // process messages + void clearMess(void); + void templateMess(t_symbol*s, int argc, t_atom*argv); + void contourMess(t_symbol*s, int argc, t_atom*argv); + void thresholdMess(float arg); + void methodMess(int arg); + + // Destructor + virtual ~pix_opencv_matchshape(); + + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + private: + + t_outlet *m_dataout; // info outlet + double m_threshold; + int m_method; + std::vector > m_template_vec_vec; + std::vector m_template_vec_mat; + +}; +#endif // for header file diff --git a/src/pix_opencv_morphology.cc b/src/pix_opencv_morphology.cc new file mode 100644 index 0000000..a241ac5 --- /dev/null +++ b/src/pix_opencv_morphology.cc @@ -0,0 +1,291 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_morphology.h" + +CPPEXTERN_NEW(pix_opencv_morphology) + +///////////////////////////////////////////////////////// +// +// pix_opencv_morphology +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_morphology :: pix_opencv_morphology() +{ + int i; + + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); + + pos = 0; + comp_xsize = 0; + comp_ysize = 0; + + rgba = NULL; + grey = NULL; + rgb = NULL; + dst = NULL; + + element_shape = CV_SHAPE_RECT; + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_morphology :: ~pix_opencv_morphology() +{ + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &dst ); + cvReleaseImage( &rgba ); + cvReleaseImage( &grey ); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_morphology :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgba)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &dst ); + cvReleaseImage( &rgba ); + cvReleaseImage( &grey ); + + //Create cv_images + rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 3 ); + dst = cvCloneImage(rgb); + rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + + cvCvtColor(rgba, rgb, CV_RGBA2RGB); + + if (this->mode == 1) { //open/close + int n = pos; + int an = n > 0 ? n : -n; + element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); + if( n < 0 ) + { + cvErode(rgb,dst,element,1); + cvDilate(dst,dst,element,1); + } + else + { + cvDilate(rgb,dst,element,1); + cvErode(dst,dst,element,1); + } + cvReleaseStructuringElement(&element); + + } else { + int n = pos; + int an = n > 0 ? n : -n; + element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); + if( n < 0 ) + { + cvErode(rgb,dst,element,1); + } + else + { + cvDilate(rgb,dst,element,1); + } + cvReleaseStructuringElement(&element); + + } + + cvCvtColor(dst, rgba, CV_RGB2RGBA); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_morphology :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &dst ); + + //Create cv_images + rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + dst = cvCloneImage(rgb); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + if (this->mode == 1) { //open/close + int n = pos; + int an = n > 0 ? n : -n; + element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); + if( n < 0 ) + { + cvErode(rgb,dst,element,1); + cvDilate(dst,dst,element,1); + } + else + { + cvDilate(rgb,dst,element,1); + cvErode(dst,dst,element,1); + } + cvReleaseStructuringElement(&element); + + } else { + int n = pos; + int an = n > 0 ? n : -n; + element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); + if( n < 0 ) + { + cvErode(rgb,dst,element,1); + } + else + { + cvDilate(rgb,dst,element,1); + } + cvReleaseStructuringElement(&element); + + } + + //cvShowImage(wndname, cedge); + memcpy( image.data, dst->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_morphology :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_morphology : yuv format not supported" ); +} + +void pix_opencv_morphology :: processGrayImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + int i; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!grey)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &dst ); + cvReleaseImage( &grey ); + + //Create cv_images + rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 3 ); + dst = cvCloneImage(rgb); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); + + cvCvtColor(grey, rgb, CV_GRAY2RGB); + + if (this->mode == 1) { //open/close + int n = pos; + int an = n > 0 ? n : -n; + element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); + if( n < 0 ) + { + cvErode(rgb,dst,element,1); + cvDilate(dst,dst,element,1); + } + else + { + cvDilate(rgb,dst,element,1); + cvErode(dst,dst,element,1); + } + cvReleaseStructuringElement(&element); + + } else { + int n = pos; + int an = n > 0 ? n : -n; + element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); + if( n < 0 ) + { + cvErode(rgb,dst,element,1); + } + else + { + cvDilate(rgb,dst,element,1); + } + cvReleaseStructuringElement(&element); + + } + + cvCvtColor(dst, grey, CV_RGB2GRAY); + //cvShowImage(wndname, cedge); + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// floatPosMess +// +///////////////////////////////////////////////////////// +void pix_opencv_morphology :: floatPosMess (float pos) +{ + this->pos = (int)pos; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_morphology :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_morphology::floatPosMessCallback, + gensym("ft1"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_morphology::modeMessCallback, + gensym("mode"), A_DEFFLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_morphology::shapeMessCallback, + gensym("shape"), A_DEFFLOAT, A_NULL); +} +void pix_opencv_morphology :: floatPosMessCallback(void *data, t_floatarg pos) +{ + GetMyClass(data)->floatPosMess((float)pos); +} +void pix_opencv_morphology :: modeMessCallback(void *data, t_floatarg mode) +{ + GetMyClass(data)->mode=!(!(int)mode); +} +void pix_opencv_morphology :: shapeMessCallback(void *data, t_floatarg f) +{ + if( (int)f == 1 ) + GetMyClass(data)->element_shape = CV_SHAPE_RECT; + else if( (int)f == 2 ) + GetMyClass(data)->element_shape = CV_SHAPE_ELLIPSE; + else if( (int)f == 3 ) + GetMyClass(data)->element_shape = CV_SHAPE_CROSS; +} diff --git a/src/pix_opencv_morphology.h b/src/pix_opencv_morphology.h new file mode 100644 index 0000000..3471a04 --- /dev/null +++ b/src/pix_opencv_morphology.h @@ -0,0 +1,87 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Morphology filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_MORPHOLOGY_H_ +#define INCLUDE_PIX_OPENCV_MORPHOLOGY_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_morphology + + Morphology filter + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_morphology : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_morphology, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_morphology(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_morphology(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new pos + void floatPosMess(float pos); + // Some varibales to control mophology mode + int pos; + int element_shape; + int mode; //to switch between openclose or dilateerode modes + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + ////////// + // Static member functions + static void floatPosMessCallback(void *data, t_floatarg pos); + static void modeMessCallback(void *data, t_floatarg mode); + static void shapeMessCallback(void *data, t_floatarg f); + + // The output and temporary images + IplImage *rgba, *grey, *rgb, *dst; + + IplConvKernel *element; + +}; + +#endif // for header file diff --git a/src/pix_opencv_motempl.cc b/src/pix_opencv_motempl.cc new file mode 100644 index 0000000..ec33a01 --- /dev/null +++ b/src/pix_opencv_motempl.cc @@ -0,0 +1,708 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_motempl.h" + +CPPEXTERN_NEW(pix_opencv_motempl) + +///////////////////////////////////////////////////////// +// +// pix_opencv_motempl +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_motempl :: pix_opencv_motempl() +{ + int i; + + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("ft1")); + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("min_size")); + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("max_size")); + m_dataout = outlet_new(this->x_obj, 0); + + mhi_duration = 1.0; + aperture = 3; + diff_threshold = 30; + last = 0; + comp_xsize = 320; + comp_ysize = 240; + + // various tracking parameters (in seconds) + max_time_delta = 0.5; + min_time_delta = 0.05; + // number of cyclic frame buffer used for motion detection + // (should, probably, depend on FPS) + frame_buffer_num = 4; + + min_size=50; + max_size=500; + + rgb = NULL; + motion = NULL; + rgba = NULL; + grey = NULL; + mhi = NULL; + orient = NULL; + mask = NULL; + segmask = NULL; + storage = NULL; + + mask_size = CV_DIST_MASK_PRECISE; + + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); + + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + motion = cvCreateImage( cvSize(comp_xsize,comp_ysize), 8, 3 ); + cvZero( motion ); + motion->origin = rgb->origin; + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_motempl :: ~pix_opencv_motempl() +{ + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &motion ); + cvReleaseImage( &rgba ); + cvReleaseImage( &grey ); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_motempl :: processRGBAImage(imageStruct &image) +{ + double timestamp = (double)clock()/CLOCKS_PER_SEC; // get current time in seconds + CvSize size = cvSize(image.xsize,image.ysize); // get current frame size + int i, j, idx1 = last, idx2; + IplImage* silh; + CvSeq* seq; + CvRect comp_rect; + double count; + double angle; + CvPoint center; + double magnitude; + CvScalar color; + char tindex[10]; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &motion ); + cvReleaseImage( &rgba ); + cvReleaseImage( &grey ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); + motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); + cvZero( motion ); + motion->origin = rgb->origin; + rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + } + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + + cvCvtColor( rgba, rgb, CV_RGBA2RGB); + + // allocate images at the beginning or + // reallocate them if the frame size is changed + if( (!mhi) || (mhi->width != size.width) || (mhi->height != size.height) || (!buf)) { + if( buf == 0 ) { + buf = (IplImage**)malloc(frame_buffer_num*sizeof(buf[0])); + //memset( buf, 0, N*sizeof(buf[0])); + } + + for( i = 0; i < frame_buffer_num; i++ ) { + // TODO if ( buf[i] != NULL ) cvReleaseImage( &buf[i] ); + buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 ); + cvZero( buf[i] ); + } + if ( mhi != NULL ) cvReleaseImage( &mhi ); + if ( orient != NULL ) cvReleaseImage( &orient ); + if ( segmask != NULL ) cvReleaseImage( &segmask ); + if ( mask != NULL ) cvReleaseImage( &mask ); + + mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + cvZero( mhi ); // clear MHI at the beginning + orient = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + segmask = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); + } + + cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale + + idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame + last = idx2; + + silh = buf[idx2]; + cvAbsDiff( buf[idx1], buf[idx2], silh ); // get difference between frames + + cvThreshold( silh, silh, diff_threshold, 1, CV_THRESH_BINARY ); // and threshold it + cvUpdateMotionHistory( silh, mhi, timestamp, mhi_duration ); // update MHI + + // convert MHI to red 8u image + cvCvtScale( mhi, mask, 255./mhi_duration, + (mhi_duration - timestamp)*255./mhi_duration ); + cvZero( motion ); + cvCvtPlaneToPix( mask, 0, 0, 0, motion ); + + // calculate motion gradient orientation and valid orientation mask + cvCalcMotionGradient( mhi, mask, orient, max_time_delta, min_time_delta, aperture ); + + if( !storage ) + storage = cvCreateMemStorage(0); + else + cvClearMemStorage(storage); + + // segment motion: get sequence of motion components + // segmask is marked motion components map. It is not used further + seq = cvSegmentMotion( mhi, segmask, storage, timestamp, max_time_delta ); + + // iterate through the motion components, + // One more iteration (i == -1) corresponds to the whole image (global motion) + j=0; + if (seq->total) for( i = -1; i < seq->total; i++ ) { + + if( i < 0 ) { // case of the whole image + comp_rect = cvRect( 0, 0, size.width, size.height ); + color = CV_RGB(255,255,255); + magnitude = 100; + } + else { // i-th motion component + comp_rect = ((CvConnectedComp*)cvGetSeqElem( seq, i ))->rect; + if(( comp_rect.width + comp_rect.height < min_size )||( comp_rect.width + comp_rect.height > max_size )) // reject very small/big components + continue; +#ifdef _DARWIN_ + color = CV_RGB(0,255,0); +#else + color = CV_RGB(255,0,0); +#endif + magnitude = (comp_rect.width + comp_rect.height) /4; + } + + // select component ROI + cvSetImageROI( silh, comp_rect ); + cvSetImageROI( mhi, comp_rect ); + cvSetImageROI( orient, comp_rect ); + cvSetImageROI( mask, comp_rect ); + + // calculate orientation + angle = cvCalcGlobalOrientation( orient, mask, mhi, timestamp, mhi_duration); + angle = 360.0 - angle; // adjust for images with top-left origin + + count = cvNorm( silh, 0, CV_L1, 0 ); // calculate number of points within silhouette ROI + + cvResetImageROI( mhi ); + cvResetImageROI( orient ); + cvResetImageROI( mask ); + cvResetImageROI( silh ); + + + // draw a clock with arrow indicating the direction + center = cvPoint( (comp_rect.x + comp_rect.width/2), + (comp_rect.y + comp_rect.height/2) ); + + cvCircle( motion, center, cvRound(magnitude*1.2), color, 3, CV_AA, 0 ); + cvLine( motion, center, cvPoint( cvRound( center.x + magnitude*cos(angle*CV_PI/180)), + cvRound( center.y - magnitude*sin(angle*CV_PI/180))), color, 3, CV_AA, 0 ); + + if( i < 0 ) // case of the whole image + { + sprintf( tindex, "%d", i ); + cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); + SETFLOAT(&rlist[0], i); + SETFLOAT(&rlist[1], center.x); + SETFLOAT(&rlist[2], center.y); + SETFLOAT(&rlist[3], comp_rect.width); + SETFLOAT(&rlist[4], comp_rect.height); + SETFLOAT(&rlist[5], angle); + outlet_list( m_dataout, 0, 6, rlist ); + } + else + { + sprintf( tindex, "%d", ++j ); + cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); + SETFLOAT(&rlist[0], j); + SETFLOAT(&rlist[1], center.x); + SETFLOAT(&rlist[2], center.y); + SETFLOAT(&rlist[3], comp_rect.width); + SETFLOAT(&rlist[4], comp_rect.height); + SETFLOAT(&rlist[5], angle); + outlet_list( m_dataout, 0, 6, rlist ); + } + } + + +#ifdef _DARWIN_ + cvCvtColor( motion, rgba, CV_RGB2BGRA); +#else + cvCvtColor( motion, rgba, CV_RGB2RGBA); +#endif + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_motempl :: processRGBImage(imageStruct &image) +{ + double timestamp = (double)clock()/CLOCKS_PER_SEC; // get current time in seconds + CvSize size = cvSize(image.xsize,image.ysize); // get current frame size + int i, j, idx1 = last, idx2; + IplImage* silh; + CvSeq* seq; + CvRect comp_rect; + double count; + double angle; + CvPoint center; + double magnitude; + CvScalar color; + char tindex[10]; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &motion ); + cvReleaseImage( &rgba ); + cvReleaseImage( &grey ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); + motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); + cvZero( motion ); + motion->origin = rgb->origin; + rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // allocate images at the beginning or + // reallocate them if the frame size is changed + if( (!mhi) || (mhi->width != size.width) || (mhi->height != size.height) || (!buf)) { + if( buf == 0 ) { + buf = (IplImage**)malloc(frame_buffer_num*sizeof(buf[0])); + //memset( buf, 0, N*sizeof(buf[0])); + } + + for( i = 0; i < frame_buffer_num; i++ ) { + // TODO if ( buf[i] != NULL ) cvReleaseImage( &(buf[i]) ); + buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 ); + cvZero( buf[i] ); + } + if ( mhi != NULL ) cvReleaseImage( &mhi ); + if ( orient != NULL ) cvReleaseImage( &orient ); + if ( segmask != NULL ) cvReleaseImage( &segmask ); + if ( mask != NULL ) cvReleaseImage( &mask ); + + mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + cvZero( mhi ); // clear MHI at the beginning + orient = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + segmask = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); + } + + cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale + + idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame + last = idx2; + + silh = buf[idx2]; + cvAbsDiff( buf[idx1], buf[idx2], silh ); // get difference between frames + + cvThreshold( silh, silh, diff_threshold, 1, CV_THRESH_BINARY ); // and threshold it + cvUpdateMotionHistory( silh, mhi, timestamp, mhi_duration ); // update MHI + + // convert MHI to blue 8u image + cvCvtScale( mhi, mask, 255./mhi_duration, + (mhi_duration - timestamp)*255./mhi_duration ); + cvZero( motion ); + cvCvtPlaneToPix( mask, 0, 0, 0, motion ); + + // calculate motion gradient orientation and valid orientation mask + cvCalcMotionGradient( mhi, mask, orient, max_time_delta, min_time_delta, aperture ); + + if( !storage ) + storage = cvCreateMemStorage(0); + else + cvClearMemStorage(storage); + + // segment motion: get sequence of motion components + // segmask is marked motion components map. It is not used further + seq = cvSegmentMotion( mhi, segmask, storage, timestamp, max_time_delta ); + + // iterate through the motion components, + // One more iteration (i == -1) corresponds to the whole image (global motion) + j=0; + if (seq->total) for( i = -1; i < seq->total; i++ ) { + + if( i < 0 ) { // case of the whole image + comp_rect = cvRect( 0, 0, size.width, size.height ); + color = CV_RGB(255,255,255); + magnitude = 100; + } + else { // i-th motion component + comp_rect = ((CvConnectedComp*)cvGetSeqElem( seq, i ))->rect; + if(( comp_rect.width + comp_rect.height < min_size )||( comp_rect.width + comp_rect.height > max_size )) // reject very small/big components + continue; +#ifdef _DARWIN_ + color = CV_RGB(0,255,0); +#else + color = CV_RGB(255,0,0); +#endif + magnitude = (comp_rect.width + comp_rect.height) / 4; + } + + // select component ROI + cvSetImageROI( silh, comp_rect ); + cvSetImageROI( mhi, comp_rect ); + cvSetImageROI( orient, comp_rect ); + cvSetImageROI( mask, comp_rect ); + + // calculate orientation + angle = cvCalcGlobalOrientation( orient, mask, mhi, timestamp, mhi_duration); + angle = 360.0 - angle; // adjust for images with top-left origin + + count = cvNorm( silh, 0, CV_L1, 0 ); // calculate number of points within silhouette ROI + + cvResetImageROI( mhi ); + cvResetImageROI( orient ); + cvResetImageROI( mask ); + cvResetImageROI( silh ); + + + // draw a clock with arrow indicating the direction + center = cvPoint( (comp_rect.x + comp_rect.width/2), + (comp_rect.y + comp_rect.height/2) ); + + cvCircle( motion, center, cvRound(magnitude*1.2), color, 3, CV_AA, 0 ); + cvLine( motion, center, cvPoint( cvRound( center.x + magnitude*cos(angle*CV_PI/180)), + cvRound( center.y - magnitude*sin(angle*CV_PI/180))), color, 3, CV_AA, 0 ); + + if( i < 0 ) // case of the whole image + { + sprintf( tindex, "%d", i ); + cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); + SETFLOAT(&rlist[0], i); + SETFLOAT(&rlist[1], center.x); + SETFLOAT(&rlist[2], center.y); + SETFLOAT(&rlist[3], comp_rect.width); + SETFLOAT(&rlist[4], comp_rect.height); + SETFLOAT(&rlist[5], angle); + outlet_list( m_dataout, 0, 6, rlist ); + } + else + { + sprintf( tindex, "%d", ++j ); + cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); + SETFLOAT(&rlist[0], j); + SETFLOAT(&rlist[1], center.x); + SETFLOAT(&rlist[2], center.y); + SETFLOAT(&rlist[3], comp_rect.width); + SETFLOAT(&rlist[4], comp_rect.height); + SETFLOAT(&rlist[5], angle); + outlet_list( m_dataout, 0, 6, rlist ); + } + } + + + //cvShowImage(wndname, cedge); + memcpy( image.data, motion->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_motempl :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_motempl : yuv format not supported" ); +} + +void pix_opencv_motempl :: processGrayImage(imageStruct &image) +{ + double timestamp = (double)clock()/CLOCKS_PER_SEC; // get current time in seconds + CvSize size = cvSize(image.xsize,image.ysize); // get current frame size + int i, j, idx1 = last, idx2; + IplImage* silh; + CvSeq* seq; + CvRect comp_rect; + double count; + double angle; + CvPoint center; + double magnitude; + CvScalar color; + char tindex[10]; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + cvReleaseImage( &rgb ); + cvReleaseImage( &motion ); + cvReleaseImage( &rgba ); + cvReleaseImage( &grey ); + + //Create cv_images + rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); + motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); + cvZero( motion ); + motion->origin = rgb->origin; + rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); + + // Convert to RGB + cvCvtColor( grey, rgb, CV_GRAY2RGB); + + // allocate images at the beginning or + // reallocate them if the frame size is changed + if( (!mhi) || (mhi->width != size.width) || (mhi->height != size.height) || (!buf)) { + if( buf == 0 ) { + buf = (IplImage**)malloc(frame_buffer_num*sizeof(buf[0])); + //memset( buf, 0, N*sizeof(buf[0])); + } + + for( i = 0; i < frame_buffer_num; i++ ) { + // TODO cvReleaseImage( &(buf[i]) ); + buf[i] = cvCreateImage( size, IPL_DEPTH_8U, 1 ); + cvZero( buf[i] ); + } + if ( mhi != NULL ) cvReleaseImage( &mhi ); + if ( orient != NULL ) cvReleaseImage( &orient ); + if ( segmask != NULL ) cvReleaseImage( &segmask ); + if ( mask != NULL ) cvReleaseImage( &mask ); + + mhi = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + cvZero( mhi ); // clear MHI at the beginning + orient = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + segmask = cvCreateImage( size, IPL_DEPTH_32F, 1 ); + mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); + } + + cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale + + idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame + last = idx2; + + silh = buf[idx2]; + cvAbsDiff( buf[idx1], buf[idx2], silh ); // get difference between frames + + cvThreshold( silh, silh, diff_threshold, 1, CV_THRESH_BINARY ); // and threshold it + cvUpdateMotionHistory( silh, mhi, timestamp, mhi_duration ); // update MHI + + // convert MHI to blue 8u image + cvCvtScale( mhi, mask, 255./mhi_duration, + (mhi_duration - timestamp)*255./mhi_duration ); + cvZero( motion ); + cvCvtPlaneToPix( mask, 0, 0, 0, motion ); + + // calculate motion gradient orientation and valid orientation mask + cvCalcMotionGradient( mhi, mask, orient, max_time_delta, min_time_delta, aperture ); + + if( !storage ) + storage = cvCreateMemStorage(0); + else + cvClearMemStorage(storage); + + // segment motion: get sequence of motion components + // segmask is marked motion components map. It is not used further + seq = cvSegmentMotion( mhi, segmask, storage, timestamp, max_time_delta ); + + // iterate through the motion components, + // One more iteration (i == -1) corresponds to the whole image (global motion) + j=0; + if (seq->total) for( i = -1; i < seq->total; i++ ) { + + if( i < 0 ) { // case of the whole image + comp_rect = cvRect( 0, 0, size.width, size.height ); + color = CV_RGB(255,255,255); + magnitude = 100; + } + else { // i-th motion component + comp_rect = ((CvConnectedComp*)cvGetSeqElem( seq, i ))->rect; + if(( comp_rect.width + comp_rect.height < min_size )||( comp_rect.width + comp_rect.height > max_size )) // reject very small components + continue; +#ifdef _DARWIN_ + color = CV_RGB(0,255,0); +#else + color = CV_RGB(255,0,0); +#endif + magnitude = (comp_rect.width + comp_rect.height) / 4; + } + + // select component ROI + cvSetImageROI( silh, comp_rect ); + cvSetImageROI( mhi, comp_rect ); + cvSetImageROI( orient, comp_rect ); + cvSetImageROI( mask, comp_rect ); + + // calculate orientation + angle = cvCalcGlobalOrientation( orient, mask, mhi, timestamp, mhi_duration); + angle = 360.0 - angle; // adjust for images with top-left origin + + count = cvNorm( silh, 0, CV_L1, 0 ); // calculate number of points within silhouette ROI + + cvResetImageROI( mhi ); + cvResetImageROI( orient ); + cvResetImageROI( mask ); + cvResetImageROI( silh ); + + + // draw a clock with arrow indicating the direction + center = cvPoint( (comp_rect.x + comp_rect.width/2), + (comp_rect.y + comp_rect.height/2) ); + + cvCircle( motion, center, cvRound(magnitude*1.2), color, 3, CV_AA, 0 ); + cvLine( motion, center, cvPoint( cvRound( center.x + magnitude*cos(angle*CV_PI/180)), + cvRound( center.y - magnitude*sin(angle*CV_PI/180))), color, 3, CV_AA, 0 ); + + if( i < 0 ) // case of the whole image + { + sprintf( tindex, "%d", i ); + cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); + SETFLOAT(&rlist[0], i); + SETFLOAT(&rlist[1], center.x); + SETFLOAT(&rlist[2], center.y); + SETFLOAT(&rlist[3], comp_rect.width); + SETFLOAT(&rlist[4], comp_rect.height); + SETFLOAT(&rlist[5], angle); + outlet_list( m_dataout, 0, 6, rlist ); + } + else + { + sprintf( tindex, "%d", ++j ); + cvPutText( motion, tindex, center, &font, CV_RGB(255,255,255)); + SETFLOAT(&rlist[0], j); + SETFLOAT(&rlist[1], center.x); + SETFLOAT(&rlist[2], center.y); + SETFLOAT(&rlist[3], comp_rect.width); + SETFLOAT(&rlist[4], comp_rect.height); + SETFLOAT(&rlist[5], angle); + outlet_list( m_dataout, 0, 6, rlist ); + } + } + + + // Convert to grayscale + cvCvtColor( motion, grey, CV_RGB2GRAY); + //cvShowImage(wndname, cedge); + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_motempl :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_motempl::thresholdMessCallback, + gensym("ft1"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_motempl::mhi_durationMessCallback, + gensym("mhi_duration"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_motempl::max_time_deltaMessCallback, gensym("max_time_delta"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_motempl::min_time_deltaMessCallback, gensym("min_time_delta"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_motempl::frame_buffer_numMessCallback, gensym("frame_buffer_num"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_motempl::min_sizeMessCallback, gensym("min_size"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_motempl::max_sizeMessCallback, gensym("max_size"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_motempl::apertureMessCallback, gensym("aperture"), A_FLOAT, A_NULL); +} +void pix_opencv_motempl :: thresholdMessCallback(void *data, t_floatarg pos) +{ + GetMyClass(data)->floatThreshMess((float)pos); +} +void pix_opencv_motempl :: mhi_durationMessCallback(void *data, t_floatarg mhi_duration) +{ + GetMyClass(data)->floatMhiDuration((float)mhi_duration); +} +void pix_opencv_motempl :: min_sizeMessCallback(void *data, t_floatarg min_size) +{ + GetMyClass(data)->floatmin_size((float)min_size); +} +void pix_opencv_motempl :: max_sizeMessCallback(void *data, t_floatarg max_size) +{ + GetMyClass(data)->floatmax_size((float)max_size); +} +void pix_opencv_motempl :: max_time_deltaMessCallback(void *data, t_floatarg max_time_delta) +{ + GetMyClass(data)->floatmax_time_delta((float)max_time_delta); +} +void pix_opencv_motempl :: min_time_deltaMessCallback(void *data, t_floatarg min_time_delta) +{ + GetMyClass(data)->floatmin_time_delta((float)min_time_delta); +} +void pix_opencv_motempl :: frame_buffer_numMessCallback(void *data, t_floatarg frame_buffer_num) +{ + GetMyClass(data)->floatframe_buffer_num((float)frame_buffer_num); +} +void pix_opencv_motempl :: apertureMessCallback(void *data, t_floatarg aperture) +{ + GetMyClass(data)->apertureMess((float)aperture); +} +void pix_opencv_motempl :: floatThreshMess(float thresh) +{ + if (thresh>=0) diff_threshold = (int)thresh; +} +void pix_opencv_motempl :: floatMhiDuration(float duration) +{ + if ( duration < 1.0 ) mhi_duration = duration; +} +void pix_opencv_motempl :: apertureMess(float aperture) +{ + if ( ( aperture == 3.0 ) || ( aperture == 5.0 ) || ( aperture == 7.0 ) ) + { + aperture = (int)aperture; + } +} +void pix_opencv_motempl :: floatmax_size(float max_size) +{ + if (max_size>=0) this->max_size = (int)max_size; +} +void pix_opencv_motempl :: floatmin_size(float min_size) +{ + if (min_size>=0) this->min_size = (int)min_size; +} +void pix_opencv_motempl :: floatframe_buffer_num(float frame_buffer_num) +{ + if (frame_buffer_num>=3) + { + this->frame_buffer_num = (int)frame_buffer_num; + this->buf = NULL; + } +} +void pix_opencv_motempl :: floatmax_time_delta(float max_time_delta) +{ + if (max_time_delta>=0) this->max_time_delta = max_time_delta; +} +void pix_opencv_motempl :: floatmin_time_delta(float min_time_delta) +{ + if (min_time_delta>=0) this->min_time_delta = min_time_delta; +} diff --git a/src/pix_opencv_motempl.h b/src/pix_opencv_motempl.h new file mode 100644 index 0000000..cd14223 --- /dev/null +++ b/src/pix_opencv_motempl.h @@ -0,0 +1,132 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Motion detection based on motion history + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_MOTEMPL_H_ +#define INCLUDE_PIX_OPENCV_MOTEMPL_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/compat.hpp" +#include "opencv2/video/tracking.hpp" + +#include +#include +#include +#endif +#include + +#include "Base/GemPixObj.h" + + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_motempl + + Motion detection based on motion history + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_motempl : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_motempl, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_motempl(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_motempl(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatThreshMess(float thresh); + void floatMhiDuration(float duration); + void floatmin_time_delta(float min_time_delta); + void floatmax_time_delta(float max_time_delta); + void floatframe_buffer_num(float frame_buffer_num); + void floatmax_size(float max_size); + void floatmin_size(float min_size); + void apertureMess(float aperture); + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + // Some varibales to control mophology mhi_duration + double mhi_duration; + int diff_threshold; + int mask_size; + int last; + int aperture; + + // various tracking parameters (in seconds) + double max_time_delta; + double min_time_delta; + // number of cyclic frame buffer used for motion detection + // (should, probably, depend on FPS) + int frame_buffer_num; + + int max_size; + int min_size; + + private: + + ////////// + // Static member functions + static void thresholdMessCallback(void *data, t_floatarg pos); + static void mhi_durationMessCallback(void *data, t_floatarg mhi_duration); + static void max_time_deltaMessCallback(void *data, t_floatarg max_time_delta); + static void min_time_deltaMessCallback(void *data, t_floatarg min_time_delta); + static void frame_buffer_numMessCallback(void *data, t_floatarg frame_buffer_num); + static void min_sizeMessCallback(void *data, t_floatarg min_size); + static void max_sizeMessCallback(void *data, t_floatarg max_size); + static void apertureMessCallback(void *data, t_floatarg aperture); + + // The output and temporary images + IplImage *rgb, *motion, *rgba, *grey; + + // ring image buffer + IplImage **buf; + + // temporary images + IplImage *mhi; // MHI + IplImage *orient; // orientation + IplImage *mask; // valid orientation mask + IplImage *segmask; // motion segmentation map + CvMemStorage* storage; // temporary storage + t_outlet *m_dataout; + CvFont font; + t_atom rlist[6]; + +}; + +#endif // for header file diff --git a/src/pix_opencv_of_bm.cc b/src/pix_opencv_of_bm.cc new file mode 100644 index 0000000..90e0a08 --- /dev/null +++ b/src/pix_opencv_of_bm.cc @@ -0,0 +1,326 @@ + +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_of_bm.h" +#include + +CPPEXTERN_NEW(pix_opencv_of_bm) + +///////////////////////////////////////////////////////// +// +// pix_opencv_of_bm +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_of_bm :: pix_opencv_of_bm() +{ + comp_xsize=320; + comp_ysize=240; + + m_meanout = outlet_new(this->x_obj, &s_anything); + m_maxout = outlet_new(this->x_obj, &s_anything); + + x_nightmode=0; + x_threshold=10; + x_blocksize.width = 20; + x_blocksize.height = 20; + x_shiftsize.width = 20; + x_shiftsize.height = 20; + x_maxrange.width = 10; + x_maxrange.height = 10; + x_useprevious = 0; + x_minblocks = 10; + x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; + x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; + + // initialize font + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); + + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), IPL_DEPTH_8U, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), IPL_DEPTH_8U, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_of_bm :: ~pix_opencv_of_bm() +{ + // Destroy cv_images + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_of_bm :: processImage(imageStruct &image) +{ + int px,py; + double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; + int nbblocks=0; + CvPoint orig, dest; + double angle=0.0; + double hypotenuse=0.0; + + + if ((comp_xsize!=image.xsize) || (comp_ysize!=image.ysize)) + { + printf("resize buffer\n"); + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; + x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; + + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), IPL_DEPTH_8U, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), IPL_DEPTH_8U, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + } + + // no need to copy the image, just create valid header and point to image.data... + IplImage* imgMat = cvCreateImageHeader( cv::Size(image.xsize, image.ysize), IPL_DEPTH_8U, image.csize); + imgMat->imageData = (char*) image.data; + + if ( image.csize == 1 ){ // gray + grey = imgMat; + } else if ( image.csize == 4 ) { //RGBA + cvCvtColor(imgMat, grey, CV_BGRA2GRAY); + } else { + error("support only RGBA or GRAY image"); + return; + } + + if( x_nightmode ) + cvZero( imgMat ); + + printf("grey size : %dx%d %d, prev_grey size %dx%d %d\n",grey->width,grey->height,grey->nChannels,prev_grey->width,prev_grey->height,prev_grey->nChannels); + + try { + cvCalcOpticalFlowBM( prev_grey, grey, + x_blocksize, x_shiftsize, + x_maxrange, x_useprevious, + x_velx, x_vely ); + } catch (...) { + error("can't comupute OpticalFlow"); + return; + } + + nbblocks = 0; + globangle = 0; + globx = 0; + globy = 0; + for( py=0; py= x_threshold) + { + cvLine( imgMat, orig, dest, CV_RGB(0,255,0), (int)hypotenuse/10, CV_AA, 0 ); + + orig.x = (int) (dest.x - (x_shiftsize.width/4) * cos(angle + M_PI / 4)); + orig.y = (int) (dest.y + (x_shiftsize.height/4) * sin(angle + M_PI / 4)); + cvLine( imgMat, orig, dest, CV_RGB(0,0,255), (int)hypotenuse/10, CV_AA, 0 ); + orig.x = (int) (dest.x - (x_shiftsize.width/4) * cos(angle - M_PI / 4)); + orig.y = (int) (dest.y + (x_shiftsize.height/4) * sin(angle - M_PI / 4)); + cvLine( imgMat, orig, dest, CV_RGB(0,0,255), (int)hypotenuse/10, CV_AA, 0 ); + + globx = globx+cvGet2D(x_velx, py, px).val[0]; + globy = globy+cvGet2D(x_vely, py, px).val[0]; + if ( hypotenuse > maxamp ) + { + maxamp = hypotenuse; + maxangle = angle; + } + // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); + nbblocks++; + } + + } + } + + if ( nbblocks >= x_minblocks ) + { + globangle=-atan2( globy, globx ); + // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); + + orig.x = (int) (comp_xsize/2); + orig.y = (int) (comp_ysize/2); + dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); + dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); + cvLine( imgMat, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (x_shiftsize.width/2) * cos(globangle + M_PI / 4)); + orig.y = (int) (dest.y + (x_shiftsize.height/2) * sin(globangle + M_PI / 4)); + cvLine( imgMat, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (x_shiftsize.width/2) * cos(globangle - M_PI / 4)); + orig.y = (int) (dest.y + (x_shiftsize.height/2) * sin(globangle - M_PI / 4)); + cvLine( imgMat, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + + // outputs the average angle of movement + globangle = (globangle*180)/M_PI; + SETFLOAT(&x_list[0], globangle); + outlet_list( m_meanout, 0, 1, x_list ); + + // outputs the amplitude and angle of the maximum movement + maxangle = (maxangle*180)/M_PI; + SETFLOAT(&x_list[0], maxamp); + SETFLOAT(&x_list[1], maxangle); + outlet_list( m_maxout, 0, 2, x_list ); + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_of_bm :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::nightModeMessCallback, + gensym("nightmode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::tresholdMessCallback, + gensym("threshold"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::blocksizeMessCallback, + gensym("blocksize"), A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::shiftsizeMessCallback, + gensym("shiftsize"), A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::maxrangeMessCallback, + gensym("maxrange"), A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::usePreviousMessCallback, + gensym("useprevious"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_bm::minBlocksMessCallback, + gensym("minblocks"), A_FLOAT, A_NULL); +} + +void pix_opencv_of_bm :: nightModeMessCallback(void *data, t_floatarg nightmode) +{ + GetMyClass(data)->nightModeMess((float)nightmode); +} + +void pix_opencv_of_bm :: tresholdMessCallback(void *data, t_floatarg threshold) +{ + GetMyClass(data)->tresholdMess((float)threshold); +} + +void pix_opencv_of_bm :: blocksizeMessCallback(void *data, t_floatarg fwidth, t_floatarg fheight) +{ + GetMyClass(data)->blocksizeMess((float)fwidth, (float)fheight); +} + +void pix_opencv_of_bm :: shiftsizeMessCallback(void *data, t_floatarg fwidth, t_floatarg fheight) +{ + GetMyClass(data)->shiftsizeMess((float)fwidth, (float)fheight); +} + +void pix_opencv_of_bm :: maxrangeMessCallback(void *data, t_floatarg fwidth, t_floatarg fheight) +{ + GetMyClass(data)->maxrangeMess((float)fwidth, (float)fheight); +} + +void pix_opencv_of_bm :: usePreviousMessCallback(void *data, t_floatarg previous) +{ + GetMyClass(data)->usePreviousMess((float)previous); +} + +void pix_opencv_of_bm :: minBlocksMessCallback(void *data, t_floatarg minblocks) +{ + GetMyClass(data)->minBlocksMess((float)minblocks); +} + +void pix_opencv_of_bm :: nightModeMess(float nightmode) +{ + if ( ( (int)nightmode==0 ) || ( (int)nightmode==1 ) ) x_nightmode = (int)nightmode; +} + +void pix_opencv_of_bm :: tresholdMess(float threshold) +{ + if ( (int)threshold>0 ) x_threshold = (int)threshold; +} + +void pix_opencv_of_bm :: blocksizeMess(float fwidth, float fheight) +{ + if ((fwidth>=5.0)&&(fwidth<=100.0)) x_blocksize.width = (int)fwidth; + if ((fheight>=5.0)&&(fheight<=100.0)) x_blocksize.height = (int)fheight; + + x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; + x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + +} + +void pix_opencv_of_bm :: shiftsizeMess(float fwidth, float fheight) +{ + if ((fwidth>=5.0)&&(fwidth<=100.0)) x_shiftsize.width = (int)fwidth; + if ((fheight>=5.0)&&(fheight<=100.0)) x_shiftsize.height = (int)fheight; + + x_velsize.width = (comp_xsize-x_blocksize.width)/x_shiftsize.width; + x_velsize.height = (comp_ysize-x_blocksize.height)/x_shiftsize.height; + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + +} + +void pix_opencv_of_bm :: maxrangeMess(float fwidth, float fheight) +{ + if ((fwidth>=5.0)&&(fwidth<=100.0)) x_maxrange.width = (int)fwidth; + if ((fheight>=5.0)&&(fheight<=100.0)) x_maxrange.height = (int)fheight; +} + +void pix_opencv_of_bm :: usePreviousMess(float previous) +{ + if ((previous==0.0)||(previous==1.0)) x_useprevious = (int)previous; +} + +void pix_opencv_of_bm :: minBlocksMess(float minblocks) +{ + if (minblocks>=1.0) x_minblocks = (int)minblocks; +} + diff --git a/src/pix_opencv_of_bm.h b/src/pix_opencv_of_bm.h new file mode 100644 index 0000000..a21950c --- /dev/null +++ b/src/pix_opencv_of_bm.h @@ -0,0 +1,101 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Optical Flow block Matching algorithm + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_OF_BM_H_ +#define INCLUDE_PIX_OPENCV_OF_BM_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/video/tracking.hpp" + +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_of_bm + + Optical Flow block Matching algorithm + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_of_bm : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_of_bm, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_of_bm(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_of_bm(); + + ////////// + // Do the processing + virtual void processImage(imageStruct &image); + + void nightModeMess(float nightmode); + void tresholdMess(float threshold); + void blocksizeMess(float width, float height); + void shiftsizeMess(float width, float height); + void maxrangeMess(float width, float height); + void usePreviousMess(float previous); + void minBlocksMess(float mblocks); + + int comp_xsize; + int comp_ysize; + + t_outlet *m_meanout; + t_outlet *m_maxout; + + CvSize x_blocksize, x_shiftsize, x_maxrange, x_velsize; + + int x_nightmode; + int x_threshold; + int x_useprevious; + int x_minblocks; + + private: + + ////////// + // Static member functions + static void nightModeMessCallback(void *data, float nightmode); + static void tresholdMessCallback(void *data, float threshold); + static void blocksizeMessCallback(void *data, float width, float height); + static void shiftsizeMessCallback(void *data, float width, float height); + static void maxrangeMessCallback(void *data, float width, float height); + static void usePreviousMessCallback(void *data, float previous); + static void minBlocksMessCallback(void *data, float mblocks); + + // Internal Open CV data + IplImage *grey, *prev_grey; + IplImage *x_velx, *x_vely; + CvFont font; + + t_atom x_list[3]; +}; + +#endif // for header file diff --git a/src/pix_opencv_of_hs.cc b/src/pix_opencv_of_hs.cc new file mode 100644 index 0000000..b7e248e --- /dev/null +++ b/src/pix_opencv_of_hs.cc @@ -0,0 +1,531 @@ + +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_of_hs.h" +#include + +CPPEXTERN_NEW(pix_opencv_of_hs) + +///////////////////////////////////////////////////////// +// +// pix_opencv_of_hs +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_of_hs :: pix_opencv_of_hs() +{ + comp_xsize=320; + comp_ysize=240; + + m_meanout = outlet_new(this->x_obj, &s_anything); + m_maxout = outlet_new(this->x_obj, &s_anything); + + x_nightmode=0; + x_threshold=100; + x_lambda=1.0; + x_useprevious = 0; + x_minblocks = 10; + x_velsize.width = comp_xsize; + x_velsize.height = comp_ysize; + + // initialize font + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_of_hs :: ~pix_opencv_of_hs() +{ + // Destroy cv_images + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_of_hs :: processRGBAImage(imageStruct &image) +{ + int px,py; + double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; + int nbblocks=0; + CvPoint orig, dest; + double angle=0.0; + double hypotenuse=0.0; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + x_velsize.width = comp_xsize; + x_velsize.height = comp_ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to hsv + cvCvtColor(rgba, rgb, CV_BGRA2BGR); + cvCvtColor(rgb, grey, CV_BGR2GRAY); + + if( x_nightmode ) + cvZero( rgb ); + + cvCalcOpticalFlowHS( prev_grey, grey, + x_useprevious, + x_velx, x_vely, + x_lambda, + cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03) ); + + nbblocks = 0; + globangle = 0; + globx = 0; + globy = 0; + for( py=0; py= x_threshold) + { + cvLine( rgb, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); + + orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + + globx = globx+cvGet2D(x_velx, py, px).val[0]; + globy = globy+cvGet2D(x_vely, py, px).val[0]; + if ( hypotenuse > maxamp ) + { + maxamp = hypotenuse; + maxangle = angle; + } + // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); + nbblocks++; + } + + } + } + + if ( nbblocks >= x_minblocks ) + { + globangle=-atan2( globy, globx ); + // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); + + orig.x = (int) (comp_xsize/2); + orig.y = (int) (comp_ysize/2); + dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); + dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + + // outputs the average angle of movement + globangle = (globangle*180)/M_PI; + SETFLOAT(&x_list[0], globangle); + outlet_list( m_meanout, 0, 1, x_list ); + + // outputs the amplitude and angle of the maximum movement + maxangle = (maxangle*180)/M_PI; + SETFLOAT(&x_list[0], maxamp); + SETFLOAT(&x_list[1], maxangle); + outlet_list( m_maxout, 0, 2, x_list ); + } + + memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); + + cvCvtColor(rgb, rgba, CV_BGR2BGRA); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_of_hs :: processRGBImage(imageStruct &image) +{ + int px,py; + double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; + int nbblocks=0; + CvPoint orig, dest; + double angle=0.0; + double hypotenuse=0.0; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + x_velsize.width = comp_xsize; + x_velsize.height = comp_ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to hsv + cvCvtColor(rgba, rgb, CV_BGRA2BGR); + cvCvtColor(rgb, grey, CV_BGR2GRAY); + + if( x_nightmode ) + cvZero( rgb ); + + cvCalcOpticalFlowHS( prev_grey, grey, + x_useprevious, + x_velx, x_vely, + x_lambda, + cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03) ); + + nbblocks = 0; + globangle = 0; + globx = 0; + globy = 0; + for( py=0; py= x_threshold) + { + cvLine( rgb, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); + + orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + + globx = globx+cvGet2D(x_velx, py, px).val[0]; + globy = globy+cvGet2D(x_vely, py, px).val[0]; + if ( hypotenuse > maxamp ) + { + maxamp = hypotenuse; + maxangle = angle; + } + // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); + nbblocks++; + } + + } + } + + if ( nbblocks >= x_minblocks ) + { + globangle=-atan2( globy, globx ); + // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); + + orig.x = (int) (comp_xsize/2); + orig.y = (int) (comp_ysize/2); + dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); + dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + + // outputs the average angle of movement + globangle = (globangle*180)/M_PI; + SETFLOAT(&x_list[0], globangle); + outlet_list( m_meanout, 0, 1, x_list ); + + // outputs the amplitude and angle of the maximum movement + maxangle = (maxangle*180)/M_PI; + SETFLOAT(&x_list[0], maxamp); + SETFLOAT(&x_list[1], maxangle); + outlet_list( m_maxout, 0, 2, x_list ); + } + + memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); + + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_of_hs :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_of_hs : yuv format not supported" ); +} + +void pix_opencv_of_hs :: processGrayImage(imageStruct &image) +{ + int px,py; + double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; + int nbblocks=0; + CvPoint orig, dest; + double angle=0.0; + double hypotenuse=0.0; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + x_velsize.width = comp_xsize; + x_velsize.height = comp_ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + } + + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); + + if( x_nightmode ) + cvZero( grey ); + + cvCalcOpticalFlowHS( prev_grey, grey, + x_useprevious, + x_velx, x_vely, + x_lambda, + cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03) ); + + nbblocks = 0; + globangle = 0; + globx = 0; + globy = 0; + for( py=0; py= x_threshold) + { + cvLine( grey, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); + + orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); + cvLine( grey, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); + cvLine( grey, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + + globx = globx+cvGet2D(x_velx, py, px).val[0]; + globy = globx+cvGet2D(x_vely, py, px).val[0]; + if ( hypotenuse > maxamp ) + { + maxamp = hypotenuse; + maxangle = angle; + } + // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); + nbblocks++; + } + + } + } + + if ( nbblocks >= x_minblocks ) + { + globangle=-atan2( globy, globx ); + // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); + + orig.x = (int) (comp_xsize/2); + orig.y = (int) (comp_ysize/2); + dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); + dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); + cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); + cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); + cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + + // outputs the average angle of movement + globangle = (globangle*180)/M_PI; + SETFLOAT(&x_list[0], globangle); + outlet_list( m_meanout, 0, 1, x_list ); + + // outputs the amplitude and angle of the maximum movement + maxangle = (maxangle*180)/M_PI; + SETFLOAT(&x_list[0], maxamp); + SETFLOAT(&x_list[1], maxangle); + outlet_list( m_maxout, 0, 2, x_list ); + } + + memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); + + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_of_hs :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::nightModeMessCallback, + gensym("nightmode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::tresholdMessCallback, + gensym("threshold"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::lambdaMessCallback, + gensym("lambda"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::usePreviousMessCallback, + gensym("useprevious"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_hs::minBlocksMessCallback, + gensym("minblocks"), A_FLOAT, A_NULL); +} + +void pix_opencv_of_hs :: nightModeMessCallback(void *data, t_floatarg nightmode) +{ + GetMyClass(data)->nightModeMess((float)nightmode); +} + +void pix_opencv_of_hs :: tresholdMessCallback(void *data, t_floatarg threshold) +{ + GetMyClass(data)->tresholdMess((float)threshold); +} + +void pix_opencv_of_hs :: lambdaMessCallback(void *data, t_floatarg lambda) +{ + GetMyClass(data)->lambdaMess((float)lambda); +} + +void pix_opencv_of_hs :: usePreviousMessCallback(void *data, t_floatarg previous) +{ + GetMyClass(data)->usePreviousMess((float)previous); +} + +void pix_opencv_of_hs :: minBlocksMessCallback(void *data, t_floatarg minblocks) +{ + GetMyClass(data)->minBlocksMess((float)minblocks); +} + +void pix_opencv_of_hs :: nightModeMess(float nightmode) +{ + if ( ( (int)nightmode==0 ) || ( (int)nightmode==1 ) ) x_nightmode = (int)nightmode; +} + +void pix_opencv_of_hs :: tresholdMess(float threshold) +{ + if ( (int)threshold>0 ) x_threshold = (int)threshold; +} + +void pix_opencv_of_hs :: lambdaMess(float lambda) +{ + if (lambda>0.0) x_lambda = (double)lambda; +} + +void pix_opencv_of_hs :: usePreviousMess(float previous) +{ + if ((previous==0.0)||(previous==1.0)) x_useprevious = (int)previous; +} + +void pix_opencv_of_hs :: minBlocksMess(float minblocks) +{ + if (minblocks>=1.0) x_minblocks = (int)minblocks; +} + diff --git a/src/pix_opencv_of_hs.h b/src/pix_opencv_of_hs.h new file mode 100644 index 0000000..8069fbe --- /dev/null +++ b/src/pix_opencv_of_hs.h @@ -0,0 +1,100 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Horn and Schunck Optical Flow algorithm + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_OF_HS_H_ +#define INCLUDE_PIX_OPENCV_OF_HS_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/video/tracking.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_of_hs + + Horn and Schunck Optical Flow algorithm + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_of_hs : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_of_hs, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_of_hs(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_of_hs(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + void nightModeMess(float nightmode); + void tresholdMess(float threshold); + void lambdaMess(float lambda); + void usePreviousMess(float previous); + void minBlocksMess(float mblocks); + + int comp_xsize; + int comp_ysize; + + t_outlet *m_meanout; + t_outlet *m_maxout; + + CvSize x_velsize; + double x_lambda; + + int x_nightmode; + int x_threshold; + int x_useprevious; + int x_minblocks; + + private: + + ////////// + // Static member functions + static void nightModeMessCallback(void *data, float nightmode); + static void tresholdMessCallback(void *data, float threshold); + static void lambdaMessCallback(void *data, float lambda); + static void usePreviousMessCallback(void *data, float previous); + static void minBlocksMessCallback(void *data, float mblocks); + + // Internal Open CV data + IplImage *rgba, *rgb, *grey, *prev_grey, *swap_temp; + IplImage *x_velx, *x_vely; + CvFont font; + + t_atom x_list[3]; +}; + +#endif // for header file diff --git a/src/pix_opencv_of_lk.cc b/src/pix_opencv_of_lk.cc new file mode 100644 index 0000000..59d5115 --- /dev/null +++ b/src/pix_opencv_of_lk.cc @@ -0,0 +1,516 @@ + +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_of_lk.h" +#include + +CPPEXTERN_NEW(pix_opencv_of_lk) + +///////////////////////////////////////////////////////// +// +// pix_opencv_of_lk +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_of_lk :: pix_opencv_of_lk() +{ + comp_xsize=320; + comp_ysize=240; + + m_meanout = outlet_new(this->x_obj, &s_anything); + m_maxout = outlet_new(this->x_obj, &s_anything); + + x_nightmode=0; + x_threshold=100; + x_winsize.width = 9; + x_winsize.height = 9; + x_minblocks = 10; + x_velsize.width = comp_xsize; + x_velsize.height = comp_ysize; + + // initialize font + cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_of_lk :: ~pix_opencv_of_lk() +{ + // Destroy cv_images + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_of_lk :: processRGBAImage(imageStruct &image) +{ + int px,py; + double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; + int nbblocks=0; + CvPoint orig, dest; + double angle=0.0; + double hypotenuse=0.0; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + x_velsize.width = comp_xsize; + x_velsize.height = comp_ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to hsv + cvCvtColor(rgba, rgb, CV_BGRA2BGR); + cvCvtColor(rgb, grey, CV_BGR2GRAY); + + if( x_nightmode ) + cvZero( rgb ); + + cvCalcOpticalFlowLK( prev_grey, grey, + x_winsize, x_velx, x_vely ); + + nbblocks = 0; + globangle = 0; + globx = 0; + globy = 0; + for( py=0; py= x_threshold) + { + cvLine( rgb, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); + + orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + + globx = globx+cvGet2D(x_velx, py, px).val[0]; + globy = globy+cvGet2D(x_vely, py, px).val[0]; + if ( hypotenuse > maxamp ) + { + maxamp = hypotenuse; + maxangle = angle; + } + // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); + nbblocks++; + } + + } + } + + if ( nbblocks >= x_minblocks ) + { + globangle=-atan2( globy, globx ); + // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); + + orig.x = (int) (comp_xsize/2); + orig.y = (int) (comp_ysize/2); + dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); + dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); + + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + + // outputs the average angle of movement + globangle = (globangle*180)/M_PI; + SETFLOAT(&x_list[0], globangle); + outlet_list( m_meanout, 0, 1, x_list ); + + // outputs the amplitude and angle of the maximum movement + maxangle = (maxangle*180)/M_PI; + SETFLOAT(&x_list[0], maxamp); + SETFLOAT(&x_list[1], maxangle); + outlet_list( m_maxout, 0, 2, x_list ); + } + + memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); + + cvCvtColor(rgb, rgba, CV_BGR2BGRA); + memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_of_lk :: processRGBImage(imageStruct &image) +{ + int px,py; + double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; + int nbblocks=0; + CvPoint orig, dest; + double angle=0.0; + double hypotenuse=0.0; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + x_velsize.width = comp_xsize; + x_velsize.height = comp_ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to hsv + cvCvtColor(rgba, rgb, CV_BGRA2BGR); + cvCvtColor(rgb, grey, CV_BGR2GRAY); + + if( x_nightmode ) + cvZero( rgb ); + + cvCalcOpticalFlowLK( prev_grey, grey, + x_winsize, x_velx, x_vely ); + + nbblocks = 0; + globangle = 0; + globx = 0; + globy = 0; + for( py=0; py= x_threshold) + { + cvLine( rgb, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); + + orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + + globx = globx+cvGet2D(x_velx, py, px).val[0]; + globy = globy+cvGet2D(x_vely, py, px).val[0]; + if ( hypotenuse > maxamp ) + { + maxamp = hypotenuse; + maxangle = angle; + } + // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); + nbblocks++; + } + + } + } + + if ( nbblocks >= x_minblocks ) + { + globangle=-atan2( globy, globx ); + // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); + + orig.x = (int) (comp_xsize/2); + orig.y = (int) (comp_ysize/2); + dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); + dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); + + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); + cvLine( rgb, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + + // outputs the average angle of movement + globangle = (globangle*180)/M_PI; + SETFLOAT(&x_list[0], globangle); + outlet_list( m_meanout, 0, 1, x_list ); + + // outputs the amplitude and angle of the maximum movement + maxangle = (maxangle*180)/M_PI; + SETFLOAT(&x_list[0], maxamp); + SETFLOAT(&x_list[1], maxangle); + outlet_list( m_maxout, 0, 2, x_list ); + } + + memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); + + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_of_lk :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_of_lk : yuv format not supported" ); +} + +void pix_opencv_of_lk :: processGrayImage(imageStruct &image) +{ + int px,py; + double globangle=0.0, globx=0.0, globy=0.0, maxamp=0.0, maxangle=0.0; + int nbblocks=0; + CvPoint orig, dest; + double angle=0.0; + double hypotenuse=0.0; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + x_velsize.width = comp_xsize; + x_velsize.height = comp_ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + cvReleaseImage( &prev_grey ); + cvReleaseImage( &x_velx ); + cvReleaseImage( &x_vely ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + prev_grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + x_velx = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + x_vely = cvCreateImage( x_velsize, IPL_DEPTH_32F, 1 ); + } + + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); + + if( x_nightmode ) + cvZero( grey ); + + cvCalcOpticalFlowLK( prev_grey, grey, + x_winsize, x_velx, x_vely ); + + nbblocks = 0; + globangle = 0; + globx = 0; + globy = 0; + for( py=0; py= x_threshold) + { + cvLine( grey, orig, dest, CV_RGB(0,255,0), 1, CV_AA, 0 ); + + orig.x = (int) (dest.x - (6) * cos(angle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle + M_PI / 4)); + cvLine( grey, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(angle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(angle - M_PI / 4)); + cvLine( grey, orig, dest, CV_RGB(0,0,255), 1, CV_AA, 0 ); + + globx = globx+cvGet2D(x_velx, py, px).val[0]; + globy = globy+cvGet2D(x_vely, py, px).val[0]; + if ( hypotenuse > maxamp ) + { + maxamp = hypotenuse; + maxangle = angle; + } + // post( "pdp_opencv_of_bm : block %d : amp : %f : angle : %f", nbblocks, hypotenuse, (angle*180)/M_PI ); + nbblocks++; + } + + } + } + + globangle=-atan2( globy, globx ); + // post( "pdp_opencv_of_bm : globangle : %f", (globangle*180)/M_PI ); + + if ( nbblocks >= x_minblocks ) + { + orig.x = (int) (comp_xsize/2); + orig.y = (int) (comp_ysize/2); + dest.x = (int) (orig.x+((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*cos(globangle)); + dest.y = (int) (orig.y-((comp_xsize>comp_ysize)?comp_ysize/2:comp_xsize/2)*sin(globangle)); + + cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle + M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle + M_PI / 4)); + cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + orig.x = (int) (dest.x - (6) * cos(globangle - M_PI / 4)); + orig.y = (int) (dest.y + (6) * sin(globangle - M_PI / 4)); + cvLine( grey, orig, dest, CV_RGB(255,255,255), 3, CV_AA, 0 ); + + // outputs the average angle of movement + globangle = (globangle*180)/M_PI; + SETFLOAT(&x_list[0], globangle); + outlet_list( m_meanout, 0, 1, x_list ); + + // outputs the amplitude and angle of the maximum movement + maxangle = (maxangle*180)/M_PI; + SETFLOAT(&x_list[0], maxamp); + SETFLOAT(&x_list[1], maxangle); + outlet_list( m_maxout, 0, 2, x_list ); + } + + memcpy( prev_grey->imageData, grey->imageData, image.xsize*image.ysize ); + + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_of_lk :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_of_lk::nightModeMessCallback, + gensym("nightmode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_lk::tresholdMessCallback, + gensym("threshold"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_lk::winsizeMessCallback, + gensym("winsize"), A_FLOAT, A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_of_lk::minBlocksMessCallback, + gensym("minblocks"), A_FLOAT, A_NULL); +} + +void pix_opencv_of_lk :: nightModeMessCallback(void *data, t_floatarg nightmode) +{ + GetMyClass(data)->nightModeMess((float)nightmode); +} + +void pix_opencv_of_lk :: tresholdMessCallback(void *data, t_floatarg threshold) +{ + GetMyClass(data)->tresholdMess((float)threshold); +} + +void pix_opencv_of_lk :: winsizeMessCallback(void *data, t_floatarg fwidth, t_floatarg fheight) +{ + GetMyClass(data)->winsizeMess((float)fwidth, (float)fheight); +} + +void pix_opencv_of_lk :: minBlocksMessCallback(void *data, t_floatarg minblocks) +{ + GetMyClass(data)->minBlocksMess((float)minblocks); +} + +void pix_opencv_of_lk :: nightModeMess(float nightmode) +{ + if ( ( (int)nightmode==0 ) || ( (int)nightmode==1 ) ) x_nightmode = (int)nightmode; +} + +void pix_opencv_of_lk :: tresholdMess(float threshold) +{ + if ( (int)threshold>0 ) x_threshold = (int)threshold; +} + +void pix_opencv_of_lk :: winsizeMess(float fwidth, float fheight) +{ + if (fwidth==1.0 || fwidth==3.0 || fwidth==5.0 || fwidth==7.0 || fwidth==9.0 || fwidth==11.0 || fwidth==13.0 || fwidth==15.0 ) x_winsize.width = (int)fwidth; + else post( "pdp_opencv_of_lk : wrong winsize width : must be one of (1,3,5,7,9,11,13,15)" ); + if (fheight==1.0 || fheight==3.0 || fheight==5.0 || fheight==7.0 || fheight==9.0 || fheight==11.0 || fheight==13.0 || fheight==15.0 ) x_winsize.height = (int)fheight; + else post( "pdp_opencv_of_lk : wrong winsize height : must be one of (1,3,5,7,9,11,13,15)" ); +} + +void pix_opencv_of_lk :: minBlocksMess(float minblocks) +{ + if (minblocks>=1.0) x_minblocks = (int)minblocks; +} + diff --git a/src/pix_opencv_of_lk.h b/src/pix_opencv_of_lk.h new file mode 100644 index 0000000..bad8297 --- /dev/null +++ b/src/pix_opencv_of_lk.h @@ -0,0 +1,96 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Lucas / Kanade Optical Flow algorithm + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_OF_LK_H_ +#define INCLUDE_PIX_OPENCV_OF_LK_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/video/tracking.hpp" +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_of_lk + + Lucas / Kanade Optical Flow algorithm + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_of_lk : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_of_lk, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_of_lk(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_of_lk(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + void nightModeMess(float nightmode); + void tresholdMess(float threshold); + void winsizeMess(float width, float height); + void minBlocksMess(float mblocks); + + int comp_xsize; + int comp_ysize; + + t_outlet *m_meanout; + t_outlet *m_maxout; + + CvSize x_velsize, x_winsize; + + int x_nightmode; + int x_threshold; + int x_minblocks; + + private: + + ////////// + // Static member functions + static void nightModeMessCallback(void *data, float nightmode); + static void tresholdMessCallback(void *data, float threshold); + static void winsizeMessCallback(void *data, float width, float height); + static void minBlocksMessCallback(void *data, float mblocks); + + // Internal Open CV data + IplImage *rgba, *rgb, *grey, *prev_grey; + IplImage *x_velx, *x_vely; + CvFont font; + + t_atom x_list[3]; +}; + +#endif // for header file diff --git a/src/pix_opencv_opticalflow.cc b/src/pix_opencv_opticalflow.cc new file mode 100644 index 0000000..cfce8f6 --- /dev/null +++ b/src/pix_opencv_opticalflow.cc @@ -0,0 +1,229 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) +// pix_opencv_opticalflow compute optical flow, several algorithms are available in one object +// by Antoine Villeret - 2012 + +#include "pix_opencv_opticalflow.h" + +CPPEXTERN_NEW(pix_opencv_opticalflow) + +///////////////////////////////////////////////////////// +// +// pix_opencv_opticalflow +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_opticalflow :: pix_opencv_opticalflow() : m_gain(1.) +{ + m_dataout_middle = outlet_new(this->x_obj, 0); + m_dataout_right = outlet_new(this->x_obj, 0); + + //~ post("build on %s at %s", __DATE__, __TIME__); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_opticalflow :: ~pix_opencv_opticalflow() +{ +} + +///////////////////////////////////////////////////////// +// render +// +///////////////////////////////////////////////////////// +void pix_opencv_opticalflow :: processRGBAImage(imageStruct &image) +{ + if ( image.xsize <= 0 || image.ysize <= 0 ) return; + + cv::Mat rgbaImage( image.ysize, image.xsize, CV_8UC4, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data + //~cvtColor(rgbaImage, m_curr, cv::COLOR_RGBA2RGB); //convert RGBA to RGB + cvtColor(rgbaImage, m_curr, cv::COLOR_RGBA2GRAY); //convert RGBA to RGB + + if (m_prev.size() != m_curr.size()){ + m_prev = m_curr.clone(); + } + //~cv::calcOpticalFlowSF(m_curr, m_prev, m_flow, 3, 2, 4, 4.1, 25.5, 18, 55.0, 25.5, 0.35, 18, 55.0, 25.5, 10); + + cv::calcOpticalFlowFarneback(m_curr, m_prev, flow, 0.5, 3, 15, 3, 5, 1.2, 0); + m_prev = m_curr.clone(); // copy data + + cv::Size size = m_curr.size(); + // here is the idiom: check the arrays for continuity and, + // if this is the case, + // treat the arrays as 1D vectors + if( m_curr.isContinuous() && m_prev.isContinuous() && m_flow.isContinuous() ) + { + size.width *= size.height; + size.height = 1; + } + + float gain=m_gain; + if ( m_normalize ){ + float maxrad=1; + + for (int y = 0; y < flow.rows; ++y) + { + for (int x = 0; x < flow.cols; ++x) + { + cv::Point2f u = flow.at(x,y); + + if (!isFlowCorrect(u)) + continue; + float rad = sqrt(u.x * u.x + u.y * u.y); + maxrad = maxrad>rad?maxrad:rad; + } + } + gain=1/maxrad; + } + + for( int i = 0; i < size.height; i++ ) + { + // when the arrays are continuous, + // the outer loop is executed only once + const float* ptrFlow = flow.ptr(i); + unsigned char* data=image.data+i*image.csize*image.xsize; + + + for( int j = 0; j < 2*size.width; j+=2 ) + { + float fx = ptrFlow[j]; + float fy = ptrFlow[j+1]; + + cv::Vec3b pix; + + pix = computeColor(fx*gain, fy*gain); + + for ( int k = 0; k < 3; k++ ){ + data[k]=pix[k]; + } + //~printf("pix %d : %d\t%d\t%d\n",j+i*size.width, pix[0],pix[1], pix[2]); + //~m_colorcode.computeColor(fx, fy, data); + data+=4; + } + } +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_opticalflow :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG1(classPtr, "gain", gainMess, double); + CPPEXTERN_MSG1(classPtr, "normalize", normalizeMess, double); +} + +///////////////////////////////////////////////////////// +// messages handling +// +///////////////////////////////////////////////////////// +void pix_opencv_opticalflow :: gainMess(double arg) +{ + m_gain = arg > 0 ? arg : 3.; +} + +void pix_opencv_opticalflow :: normalizeMess(double arg) +{ + m_normalize = arg > 0; +} + + + +/////////////////////////// +// static function for color coding +/////////////////////////// +using namespace cv; + +static cv::Vec3b computeColor(float fx, float fy) +{ +static bool first = true; + + // relative lengths of color transitions: + // these are chosen based on perceptual similarity + // (e.g. one can distinguish more shades between red and yellow + // than between yellow and green) + const int RY = 15; + const int YG = 6; + const int GC = 4; + const int CB = 11; + const int BM = 13; + const int MR = 6; + const int NCOLS = RY + YG + GC + CB + BM + MR; + static Vec3i colorWheel[NCOLS]; + + if (first) + { + int k = 0; + + for (int i = 0; i < RY; ++i, ++k) + colorWheel[k] = Vec3i(255, 255 * i / RY, 0); + + for (int i = 0; i < YG; ++i, ++k) + colorWheel[k] = Vec3i(255 - 255 * i / YG, 255, 0); + + for (int i = 0; i < GC; ++i, ++k) + colorWheel[k] = Vec3i(0, 255, 255 * i / GC); + + for (int i = 0; i < CB; ++i, ++k) + colorWheel[k] = Vec3i(0, 255 - 255 * i / CB, 255); + + for (int i = 0; i < BM; ++i, ++k) + colorWheel[k] = Vec3i(255 * i / BM, 0, 255); + + for (int i = 0; i < MR; ++i, ++k) + colorWheel[k] = Vec3i(255, 0, 255 - 255 * i / MR); + + first = false; + } + + const float rad = sqrt(fx * fx + fy * fy); + const float a = atan2(-fy, -fx) / (float) CV_PI; + + const float fk = (a + 1.0f) / 2.0f * (NCOLS - 1); + const int k0 = static_cast(fk); + const int k1 = (k0 + 1) % NCOLS; + const float f = fk - k0; + + Vec3b pix; + + for (int b = 0; b < 3; b++) + { + const float col0 = colorWheel[k0][b] / 255.0f; + const float col1 = colorWheel[k1][b] / 255.0f; + + float col = (1 - f) * col0 + f * col1; + + if (rad <= 1) + col = 1 - rad * (1 - col); // increase saturation with radius + else + col *= .75; // out of range + + pix[2 - b] = static_cast(255.0 * col); + } + + return pix; +} + +inline bool isFlowCorrect(cv::Point2f u) +{ + return !cvIsNaN(u.x) && !cvIsNaN(u.y) && fabs(u.x) < 1e9 && fabs(u.y) < 1e9; +} diff --git a/src/pix_opencv_opticalflow.h b/src/pix_opencv_opticalflow.h new file mode 100644 index 0000000..57a1583 --- /dev/null +++ b/src/pix_opencv_opticalflow.h @@ -0,0 +1,96 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_OPTICALFLOW_H_ +#define INCLUDE_PIX_OPENCV_OPTICALFLOW_H_ + +#include "opencv2/opencv.hpp" +#include "Base/GemBase.h" +#include "Gem/Exception.h" +#include "Gem/State.h" +#include "Base/GemPixObj.h" +#include "RTE/MessageCallbacks.h" +#include + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_opticalflow + apply a simple flow method to compute optical flow + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ + +//~class Colorcode +//~{ +//~// from colorcode.cpp by Daniel Scharstein, 4/2007 +//~// http://vision.middlebury.edu/flow/data/ +//~#define MAXCOLS 60 +//~ +//~public: + //~Colorcode(); + //~static cv::Vec3b computeColor(float fx, float fy); + //~ +//~private: + //~int ncols; + //~int colorwheel[MAXCOLS][3]; +//~ +//~ + //~void setcols(int r, int g, int b, int k); +//~ + //~void makecolorwheel(); +//~}; + +static cv::Vec3b computeColor(float fx, float fy); +inline bool isFlowCorrect(cv::Point2f u); + +class GEM_EXPORT pix_opencv_opticalflow : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_opticalflow, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_opticalflow(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_opticalflow(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + + // Messages handling + void gainMess(double arg); + void normalizeMess(double arg); + + private: + + cv::Mat prev, flow; + t_float m_gain; + bool m_normalize; + + cv::Mat m_prev, m_curr, m_flow; + + t_outlet *m_dataout_middle; // contour outlet + t_outlet *m_dataout_right; // info outlet +}; +#endif // for header file diff --git a/src/pix_opencv_patreco.h b/src/pix_opencv_patreco.h new file mode 100644 index 0000000..0c4b62d --- /dev/null +++ b/src/pix_opencv_patreco.h @@ -0,0 +1,95 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Threshold filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_pix_opencv_patreco_H_ +#define INCLUDE_pix_opencv_patreco_H_ + +#ifndef _EiC +#include "cv.h" +#endif + +// ARma lib +#include "pattern.hpp" +#include "patterndetector.hpp" + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_patreco + + square pattern detector + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ + +class GEM_EXPORT pix_opencv_patreco : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_patreco, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_patreco(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_patreco(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set parameters + void loadIntraMess(t_symbol *filename); + void loadDistMess(t_symbol *filename); + void loadMess(t_symbol *s, int argc, t_atom* argv); + void fixedThreshMess(float arg); + void adaptThreshMess(float arg); + void adaptBlockSizeMess(float arg); + void threshModeMess(float arg); + void patternSizeMess(float arg); + void monitorStageMess(t_float arg); + void ARTpatternMess(t_float arg); + void dilateMess(t_float arg); + void erodeMess(t_float arg); + void clearLibMess(void); + + private: + + t_outlet *m_dataout; + + cv::Mat m_cameraMatrix, m_distortions; + + ARma::PatternDetector *m_detector; + //~ std::vector m_patternLibrary; // pattern library + std::map m_patternLibrary; + std::vector m_detectedPattern; // detected pattern + int m_pattern_size; + +}; +#endif // for header file diff --git a/src/pix_opencv_pgh_compare.cc b/src/pix_opencv_pgh_compare.cc new file mode 100644 index 0000000..4af6d8e --- /dev/null +++ b/src/pix_opencv_pgh_compare.cc @@ -0,0 +1,481 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-1998 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_pgh_compare.h" + +CPPEXTERN_NEW_WITH_GIMME(pix_opencv_pgh_compare) + +///////////////////////////////////////////////////////// +// +// pix_opencv_pgh_compare +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_pgh_compare :: pix_opencv_pgh_compare(int argc, t_atom*argv) +{ + m_dataout = outlet_new(this->x_obj, &s_anything); + m_posout = outlet_new(this->x_obj, &s_anything); + + comp_xsize=320; + comp_ysize=240; + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + + x_storage = cvCreateMemStorage(0); + + x_bcontourr = NULL; + x_minsize = 10*10; + x_cdistance = 0.05; +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_pgh_compare :: ~pix_opencv_pgh_compare() +{ + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&rgbar); + cvReleaseImage(&rgbr); + cvReleaseImage(&grayr); +} + +///////////////////////////////////////////////////////// +// processDualImage +// +///////////////////////////////////////////////////////// +void pix_opencv_pgh_compare :: processRGBA_RGBA(imageStruct &left, imageStruct &right) +{ + double dist = 100.0, ndist; + int i = 0; // Indicator of cycles. + CvSeq *contourl=NULL, *contourlp; + CvRect rect; + CvMemStorage *mstorage; + CvSeq *contourr = NULL; + int size; + int dims[] = {8, 8}; + float range[] = {-180, 180, -100, 100}; + float *ranges[] = {&range[0], &range[2]}; + CvHistogram *histl, *histr ; + + if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) + { + post( "pix_opencv_pgh_compare : left and right image are not of the same size" ); + return; + } + + if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) + { + this->comp_xsize=left.xsize; + this->comp_ysize=left.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&rgbar); + cvReleaseImage(&rgbr); + cvReleaseImage(&grayr); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + } + + memcpy( rgbar->imageData, right.data, right.xsize*right.ysize*4 ); + cvCvtColor(rgbar, grayr, CV_BGRA2GRAY); + + // calculate the biggest contour + try { + cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + } + catch(...) { + post( "pix_opencv_pgh_compare : error calculating contours" ); + return; + } + + if ( contourr ) + { + size=0; + for( ; contourr != 0; contourr = contourr->h_next ) + { + rect = cvContourBoundingRect( contourr, 1); + if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + x_bcontourr = contourr; + size = rect.width*rect.height; + } + } + } + + memcpy( rgba->imageData, left.data, left.xsize*left.ysize*4 ); + cvCvtColor(rgba, gray, CV_BGRA2GRAY); + + mstorage = cvCreateMemStorage(0); + + cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + + i=0; + if ( contourl && x_bcontourr ) + { + contourlp=contourl; + for( ; contourlp != 0; contourlp = contourlp->h_next ) + { + rect = cvContourBoundingRect( contourlp, 1); + if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + histr = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); + histl = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); + cvCalcPGH(x_bcontourr, histr); + cvCalcPGH(contourlp, histl); + cvNormalizeHist(histr, 100.0f); + cvNormalizeHist(histl, 100.0f); + ndist = cvCompareHist(histr, histl, CV_COMP_BHATTACHARYYA); + cvReleaseHist(&histr); + cvReleaseHist(&histl); + + if ( ndist < dist ) dist = ndist; + if ( ndist < x_cdistance ) + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + SETFLOAT(&rlist[0], i++); + SETFLOAT(&rlist[1], rect.x); + SETFLOAT(&rlist[2], rect.y); + SETFLOAT(&rlist[3], rect.width); + SETFLOAT(&rlist[4], rect.height); + outlet_list( m_posout, 0, 5, rlist ); + } + else + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); + } + } + } + } + + if ( dist < 100.00 ) outlet_float( m_dataout, dist ); + + cvReleaseMemStorage(&mstorage); + + cvCvtColor(gray, rgba, CV_GRAY2BGR); + memcpy( left.data, rgba->imageData, left.xsize*left.ysize*4 ); + +} + +///////////////////////////////////////////////////////// +// processDualImage +// +///////////////////////////////////////////////////////// +void pix_opencv_pgh_compare :: processRGB_RGB(imageStruct &left, imageStruct &right) +{ + double dist = 100.0, ndist; + int i = 0; // Indicator of cycles. + CvSeq *contourl=NULL, *contourlp; + CvRect rect; + CvMemStorage *mstorage; + CvSeq *contourr = NULL; + int size; + int dims[] = {8, 8}; + float range[] = {-180, 180, -100, 100}; + float *ranges[] = {&range[0], &range[2]}; + CvHistogram *histl, *histr ; + + if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) + { + post( "pix_opencv_pgh_compare : left and right image are not of the same size" ); + return; + } + + if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) + { + this->comp_xsize=left.xsize; + this->comp_ysize=left.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&rgbar); + cvReleaseImage(&rgbr); + cvReleaseImage(&grayr); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + } + + memcpy( rgbr->imageData, right.data, right.xsize*right.ysize*3 ); + cvCvtColor(rgbr, grayr, CV_BGRA2GRAY); + + // calculate the biggest contour + try { + cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + } + catch(...) { + post( "pix_opencv_pgh_compare : error calculating contours" ); + return; + } + + if ( contourr ) + { + size=0; + for( ; contourr != 0; contourr = contourr->h_next ) + { + rect = cvContourBoundingRect( contourr, 1); + if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + x_bcontourr = contourr; + size = rect.width*rect.height; + } + } + } + + memcpy( rgb->imageData, left.data, left.xsize*left.ysize*3 ); + cvCvtColor(rgb, gray, CV_BGRA2GRAY); + + mstorage = cvCreateMemStorage(0); + + cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + + if ( contourl && x_bcontourr ) + { + contourlp=contourl; + for( ; contourlp != 0; contourlp = contourlp->h_next ) + { + rect = cvContourBoundingRect( contourlp, 1); + if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + histr = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); + histl = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); + cvCalcPGH(x_bcontourr, histr); + cvCalcPGH(contourlp, histl); + cvNormalizeHist(histr, 100.0f); + cvNormalizeHist(histl, 100.0f); + ndist = cvCompareHist(histr, histl, CV_COMP_BHATTACHARYYA); + cvReleaseHist(&histr); + cvReleaseHist(&histl); + + if ( ndist < dist ) dist = ndist; + if ( ndist < x_cdistance ) + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + } + else + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); + } + } + } + } + + if ( dist < 100.00 ) outlet_float( m_dataout, dist ); + + cvReleaseMemStorage(&mstorage); + + cvCvtColor(gray, rgb, CV_GRAY2BGR); + memcpy( left.data, rgb->imageData, left.xsize*left.ysize*3 ); + +} + +///////////////////////////////////////////////////////// +// processDualImage +// +///////////////////////////////////////////////////////// +void pix_opencv_pgh_compare :: processGray_Gray(imageStruct &left, imageStruct &right) +{ + double dist = 100.0, ndist; + int i = 0; // Indicator of cycles. + CvSeq *contourl=NULL, *contourlp; + CvRect rect; + CvMemStorage *mstorage; + CvSeq *contourr = NULL; + int size; + int dims[] = {8, 8}; + float range[] = {-180, 180, -100, 100}; + float *ranges[] = {&range[0], &range[2]}; + CvHistogram *histl, *histr ; + + + if ((left.xsize!=right.xsize) || (left.ysize!=right.ysize) ) + { + post( "pix_opencv_pgh_compare : left and right image are not of the same size" ); + return; + } + + if ((this->comp_xsize!=left.xsize)&&(this->comp_ysize!=left.ysize)) + { + this->comp_xsize=left.xsize; + this->comp_ysize=left.ysize; + + cvReleaseImage(&rgba); + cvReleaseImage(&rgb); + cvReleaseImage(&gray); + cvReleaseImage(&rgbar); + cvReleaseImage(&rgbr); + cvReleaseImage(&grayr); + + rgba = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + rgbar = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 4); + rgbr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + grayr = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 1); + } + + memcpy( grayr->imageData, right.data, right.xsize*right.ysize ); + + // calculate the biggest contour + try { + cvFindContours( grayr, x_storage, &contourr, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + } + catch(...) { + post( "pix_opencv_pgh_compare : error calculating contours" ); + return; + } + + if ( contourr ) + { + size=0; + for( ; contourr != 0; contourr = contourr->h_next ) + { + rect = cvContourBoundingRect( contourr, 1); + if ( rect.width*rect.height > size && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + x_bcontourr = contourr; + size = rect.width*rect.height; + } + } + } + + memcpy( gray->imageData, left.data, left.xsize*left.ysize ); + + mstorage = cvCreateMemStorage(0); + + cvFindContours( gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + + if ( contourl && x_bcontourr ) + { + contourlp=contourl; + for( ; contourlp != 0; contourlp = contourlp->h_next ) + { + rect = cvContourBoundingRect( contourlp, 1); + if ( rect.width*rect.height > x_minsize && rect.width*rect.height < (comp_xsize-2)*(comp_ysize-2)) + { + histr = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); + histl = cvCreateHist(2, dims, CV_HIST_ARRAY, ranges, 1); + cvCalcPGH(x_bcontourr, histr); + cvCalcPGH(contourlp, histl); + cvNormalizeHist(histr, 100.0f); + cvNormalizeHist(histl, 100.0f); + ndist = cvCompareHist(histr, histl, CV_COMP_BHATTACHARYYA); + cvReleaseHist(&histr); + cvReleaseHist(&histl); + + if ( ndist < dist ) dist = ndist; + if ( ndist < x_cdistance ) + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + } + else + { + cvRectangle( gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); + cvDrawContours( gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); + } + } + } + } + + if ( dist < 100.00 ) outlet_float( m_dataout, dist ); + + cvReleaseMemStorage(&mstorage); + + memcpy( left.data, gray->imageData, left.xsize*left.ysize ); + +} + +void pix_opencv_pgh_compare :: processYUV_YUV(imageStruct &left, imageStruct &right) +{ + post( "pix_opencv_pgh_compare : YUV colorspace not supported" ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_pgh_compare :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_pgh_compare::floatMinSizeMessCallback, + gensym("minsize"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_pgh_compare::clearMessCallback, + gensym("clear"), A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_pgh_compare::floatCriteriaMessCallback, + gensym("criteria"), A_FLOAT, A_NULL); +} + +void pix_opencv_pgh_compare :: floatMinSizeMessCallback(void *data, t_floatarg minsize) +{ + GetMyClass(data)->floatMinSizeMess((float)minsize); +} + +void pix_opencv_pgh_compare :: clearMessCallback(void *data) +{ + GetMyClass(data)->clearMess(); +} + +void pix_opencv_pgh_compare :: floatCriteriaMessCallback(void *data, t_floatarg criteria) +{ + GetMyClass(data)->floatCriteriaMess((float)criteria); +} + +void pix_opencv_pgh_compare :: floatMinSizeMess(float minsize) +{ + if ( (int)minsize > 0 ) + { + x_minsize = (int)minsize; + } +} + +void pix_opencv_pgh_compare :: clearMess(void) +{ + x_bcontourr = NULL; +} + +void pix_opencv_pgh_compare :: floatCriteriaMess(float criteria) +{ + if ( criteria > 0.0 ) + { + x_cdistance = criteria; + } +} diff --git a/src/pix_opencv_pgh_compare.h b/src/pix_opencv_pgh_compare.h new file mode 100644 index 0000000..774ea0f --- /dev/null +++ b/src/pix_opencv_pgh_compare.h @@ -0,0 +1,91 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + PGH histogram comparison used to compare contours + + Copyright (c) 1997-1998 Mark Danks. mark@danks.org + Copyright (c) G¸nther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::f¸r::uml‰ute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_PGH_COMPARE_H_ +#define INCLUDE_PIX_OPENCV_PGH_COMPARE_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#include "opencv2/legacy/compat.hpp" + +#endif + +#include "Base/GemPixDualObj.h" + +/*----------------------------------------------------------------- +CLASS + pix_opencv_pgh_compare + + PGH histogram comparison used to compare contours + +-----------------------------------------------------------------*/ + +class GEM_EXPORT pix_opencv_pgh_compare : public GemPixDualObj +{ + CPPEXTERN_HEADER(pix_opencv_pgh_compare, GemPixDualObj) + + public: + + ////////// + // Constructor + pix_opencv_pgh_compare(int,t_atom*); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_pgh_compare(); + + ////////// + // Do the processing + virtual void processRGBA_RGBA(imageStruct &left, imageStruct &right); + virtual void processRGB_RGB(imageStruct &left, imageStruct &right); + virtual void processYUV_YUV(imageStruct &left, imageStruct &right); + virtual void processGray_Gray(imageStruct &left, imageStruct &right); + + ////////// + // change method used + void floatMinSizeMess(float minsize); + void clearMess(void); + void floatCriteriaMess(float criteria); + + int comp_xsize; + int comp_ysize; + + t_outlet *m_dataout; + t_outlet *m_posout; + + int x_minsize; + float x_cdistance; + + private: + + ////////// + // Static member functions + static void floatMinSizeMessCallback(void *data, float minsize); + static void clearMessCallback(void *data); + static void floatCriteriaMessCallback(void *data, float criteria); + + IplImage *rgba, *rgb, *gray; + IplImage *rgbar, *rgbr, *grayr; + + CvMemStorage *x_storage; + CvSeq *x_bcontourr; + + t_atom rlist[5]; + +}; + +#endif // for header file diff --git a/src/pix_opencv_surf.cc b/src/pix_opencv_surf.cc new file mode 100644 index 0000000..5a5b46d --- /dev/null +++ b/src/pix_opencv_surf.cc @@ -0,0 +1,1054 @@ + +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#if HAVE_LIBOPENCV_NONFREE +#include "pix_opencv_surf.h" + +#include + + +CPPEXTERN_NEW(pix_opencv_surf) + +///////////////////////////////////////////////////////// +// +// pix_opencv_surf +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_surf :: pix_opencv_surf() +{ + int i; + + comp_xsize=320; + comp_ysize=240; + + m_dataout = outlet_new(this->x_obj, &s_anything); + + night_mode = 0; + x_maxmove = 20; + x_delaunay = -1; + x_threshold = -1; + + objectKeypoints = NULL; + objectDescriptors = NULL; + x_hessian = 1000; + x_ftolerance = 5; + + x_markall = 0; + for ( i=0; icomp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &orgb ); + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &ogray ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + } + + memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); + cvCvtColor(rgba, orgb, CV_BGRA2BGR); + cvCvtColor(rgba, rgb, CV_BGRA2BGR); + cvCvtColor(rgba, gray, CV_BGRA2GRAY); + + x_storage = cvCreateMemStorage(0); + + if( night_mode ) + cvZero( rgb ); + + for ( im=0; im= 0 ) + { + // init data structures for the delaunay + x_fullrect.x = -comp_xsize/2; + x_fullrect.y = -comp_ysize/2; + x_fullrect.width = 2*comp_xsize; + x_fullrect.height = 2*comp_ysize; + + x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), + sizeof(CvSubdiv2DPoint), + sizeof(CvQuadEdge2D), + x_storage ); + cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); + } + + cvExtractSURF( gray, 0, &objectKeypoints, &objectDescriptors, x_storage, cvSURFParams(x_hessian, 1) ); + descsize = (int)(objectDescriptors->elem_size/sizeof(float)); + + for( i = 0; i < objectKeypoints->total; i++ ) + { + CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); + const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); + + if ( x_delaunay == 0 ) // add all the points + { + cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + + // only add points included in (color-threshold) 0 ) && ( x_xmark[x_delaunay-1] != -1 ) ) + { + int px = cvPointFrom32f(r1->pt).x; + int py = cvPointFrom32f(r1->pt).y; + int ppx, ppy; + + // eight connected pixels + for ( ppx=px-1; ppx<=px+1; ppx++ ) + { + for ( ppy=py-1; ppy<=py+1; ppy++ ) + { + if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; + if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; + + uchar red = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3]; + uchar green = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+1]; + uchar blue = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+2]; + + uchar pred = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3]; + uchar pgreen = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3+1]; + uchar pblue = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3+2]; + + int diff = abs(red-pred) + abs(green-pgreen) + abs(blue-pblue); + + // post( "pdp_opencv_surf : point (%d,%d,%d) : diff : %d", blue, green, red, diff ); + + if ( diff < x_threshold ) + { + cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + } + } + } + + cvCircle( rgb, cvPointFrom32f(r1->pt), 3, CV_RGB(0,255,0), -1, 8,0); + + // mark the point if it is not already + if ( x_markall ) + { + int marked = 0; + + for ( im=0; impt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); + + if ( odist <= x_maxmove ) + { + marked = 1; + // post( "pdp_opencv_surf : point already marked" ); + break; + } + } + if ( !marked ) + { + for ( i=0; ipt.x; + x_ymark[i] = r1->pt.y; + x_found[i] = x_ftolerance; + memset( (float * )x_rdesc[i], 0x0, DSCSIZE*sizeof(float)); + break; + } + } + } + } + } + + for ( im=0; imcomp_ysize)?comp_xsize:comp_ysize; + + for( i = 0; i < objectKeypoints->total; i++ ) + { + CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); + const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); + int descsize = (int)(objectDescriptors->elem_size/sizeof(float)); + + // manually marked points + // recognized on position + odist=sqrt( pow( r1->pt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); + + if ( odist <= x_maxmove ) + { + if ( odist < dist ) + { + oi=im; + x_xmark[oi]=r1->pt.x; + x_ymark[oi]=r1->pt.y; + memcpy( (float * )x_rdesc[oi], rdesc, descsize*sizeof(float)); + dist = odist; + } + } + } + + if ( oi !=-1 ) + { + sprintf( tindex, "%d", oi ); + cvPutText( rgb, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,255,255)); + x_found[oi] = x_ftolerance; + SETFLOAT(&x_list[0], oi); + SETFLOAT(&x_list[1], x_xmark[oi]); + SETFLOAT(&x_list[2], x_ymark[oi]); + outlet_list( m_dataout, 0, 3, x_list ); + } + } + + // draw the delaunay + if ( x_delaunay >= 0 ) + { + CvSeqReader reader; + int i, total = x_subdiv->edges->total; + int elem_size = x_subdiv->edges->elem_size; + + cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); + + for( i = 0; i < total; i++ ) + { + CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); + CvSubdiv2DPoint* org_pt; + CvSubdiv2DPoint* dst_pt; + CvPoint2D32f org; + CvPoint2D32f dst; + CvPoint iorg, idst; + + if( CV_IS_SET_ELEM( edge )) + { + org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); + dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); + + if( org_pt && dst_pt ) + { + org = org_pt->pt; + dst = dst_pt->pt; + + iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); + idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); + + if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && + ( dst.x > 0 ) && ( dst.x < comp_xsize ) && + ( org.y > 0 ) && ( org.y < comp_ysize ) && + ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) + cvLine( rgb, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); + } + } + + CV_NEXT_SEQ_ELEM( elem_size, reader ); + } + } + + // suppress lost points + for ( im=0; imimageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_surf :: processRGBImage(imageStruct &image) +{ + int i, k; + int im, oi; + int marked; + int descsize; + char tindex[4]; + float dist, odist; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &orgb ); + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &ogray ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + } + + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + memcpy( orgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtColor(rgb, gray, CV_BGRA2GRAY); + + x_storage = cvCreateMemStorage(0); + + if( night_mode ) + cvZero( rgb ); + + for ( im=0; im= 0 ) + { + // init data structures for the delaunay + x_fullrect.x = -comp_xsize/2; + x_fullrect.y = -comp_ysize/2; + x_fullrect.width = 2*comp_xsize; + x_fullrect.height = 2*comp_ysize; + + x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), + sizeof(CvSubdiv2DPoint), + sizeof(CvQuadEdge2D), + x_storage ); + cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); + } + + cvExtractSURF( gray, 0, &objectKeypoints, &objectDescriptors, x_storage, cvSURFParams(x_hessian, 1) ); + descsize = (int)(objectDescriptors->elem_size/sizeof(float)); + + for( i = 0; i < objectKeypoints->total; i++ ) + { + CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); + const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); + + if ( x_delaunay == 0 ) // add all the points + { + cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + + // only add points included in (color-threshold) 0 ) && ( x_xmark[x_delaunay-1] != -1 ) ) + { + int px = cvPointFrom32f(r1->pt).x; + int py = cvPointFrom32f(r1->pt).y; + int ppx, ppy; + + // eight connected pixels + for ( ppx=px-1; ppx<=px+1; ppx++ ) + { + for ( ppy=py-1; ppy<=py+1; ppy++ ) + { + if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; + if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; + + uchar red = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3]; + uchar green = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+1]; + uchar blue = ((uchar*)(orgb->imageData + orgb->widthStep*ppx))[ppy*3+2]; + + uchar pred = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3]; + uchar pgreen = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3+1]; + uchar pblue = ((uchar*)(orgb->imageData + orgb->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]*3+2]; + + int diff = abs(red-pred) + abs(green-pgreen) + abs(blue-pblue); + + // post( "pdp_opencv_surf : point (%d,%d,%d) : diff : %d", blue, green, red, diff ); + + if ( diff < x_threshold ) + { + cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + } + } + } + + cvCircle( rgb, cvPointFrom32f(r1->pt), 3, CV_RGB(0,255,0), -1, 8,0); + + // mark the point if it is not already + if ( x_markall ) + { + int marked = 0; + + for ( im=0; impt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); + + if ( odist <= x_maxmove ) + { + marked = 1; + // post( "pdp_opencv_surf : point already marked" ); + break; + } + } + if ( !marked ) + { + for ( i=0; ipt.x; + x_ymark[i] = r1->pt.y; + x_found[i] = x_ftolerance; + memset( (float * )x_rdesc[i], 0x0, DSCSIZE*sizeof(float)); + break; + } + } + } + } + } + + for ( im=0; imcomp_ysize)?comp_xsize:comp_ysize; + + for( i = 0; i < objectKeypoints->total; i++ ) + { + CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); + const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); + int descsize = (int)(objectDescriptors->elem_size/sizeof(float)); + + // manually marked points + // recognized on position + odist=sqrt( pow( r1->pt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); + + if ( odist <= x_maxmove ) + { + if ( odist < dist ) + { + oi=im; + x_xmark[oi]=r1->pt.x; + x_ymark[oi]=r1->pt.y; + memcpy( (float * )x_rdesc[oi], rdesc, descsize*sizeof(float)); + dist = odist; + } + } + } + + if ( oi !=-1 ) + { + sprintf( tindex, "%d", oi ); + cvPutText( rgb, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,255,255)); + x_found[oi] = x_ftolerance; + SETFLOAT(&x_list[0], oi); + SETFLOAT(&x_list[1], x_xmark[oi]); + SETFLOAT(&x_list[2], x_ymark[oi]); + outlet_list( m_dataout, 0, 3, x_list ); + } + } + + // draw the delaunay + if ( x_delaunay >= 0 ) + { + CvSeqReader reader; + int i, total = x_subdiv->edges->total; + int elem_size = x_subdiv->edges->elem_size; + + cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); + + for( i = 0; i < total; i++ ) + { + CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); + CvSubdiv2DPoint* org_pt; + CvSubdiv2DPoint* dst_pt; + CvPoint2D32f org; + CvPoint2D32f dst; + CvPoint iorg, idst; + + if( CV_IS_SET_ELEM( edge )) + { + org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); + dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); + + if( org_pt && dst_pt ) + { + org = org_pt->pt; + dst = dst_pt->pt; + + iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); + idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); + + if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && + ( dst.x > 0 ) && ( dst.x < comp_xsize ) && + ( org.y > 0 ) && ( org.y < comp_ysize ) && + ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) + cvLine( rgb, iorg, idst, CV_RGB(255,0,0), 1, CV_AA, 0 ); + } + } + + CV_NEXT_SEQ_ELEM( elem_size, reader ); + } + } + + // suppress lost points + for ( im=0; imimageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_surf :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_surf : yuv format not supported" ); +} + +void pix_opencv_surf :: processGrayImage(imageStruct &image) +{ + int i, k; + int im, oi; + int marked; + int descsize; + char tindex[4]; + float dist, odist; + + if ((this->comp_xsize!=image.xsize)&&(this->comp_ysize!=image.ysize)) + { + + this->comp_xsize=image.xsize; + this->comp_ysize=image.ysize; + + cvReleaseImage( &rgba ); + cvReleaseImage( &orgb ); + cvReleaseImage( &rgb ); + cvReleaseImage( &gray ); + cvReleaseImage( &ogray ); + + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); + orgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); + gray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + ogray = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + + } + + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + memcpy( ogray->imageData, image.data, image.xsize*image.ysize ); + x_storage = cvCreateMemStorage(0); + + if( night_mode ) + cvZero( gray ); + + for ( im=0; im= 0 ) + { + // init data structures for the delaunay + x_fullrect.x = -comp_xsize/2; + x_fullrect.y = -comp_ysize/2; + x_fullrect.width = 2*comp_xsize; + x_fullrect.height = 2*comp_ysize; + + x_subdiv = cvCreateSubdiv2D( CV_SEQ_KIND_SUBDIV2D, sizeof(*x_subdiv), + sizeof(CvSubdiv2DPoint), + sizeof(CvQuadEdge2D), + x_storage ); + cvInitSubdivDelaunay2D( x_subdiv, x_fullrect ); + } + + cvExtractSURF( ogray, 0, &objectKeypoints, &objectDescriptors, x_storage, cvSURFParams(x_hessian, 1) ); + descsize = (int)(objectDescriptors->elem_size/sizeof(float)); + + for( i = 0; i < objectKeypoints->total; i++ ) + { + CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); + const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); + + if ( x_delaunay == 0 ) // add all the points + { + cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + + // only add points included in (color-threshold) 0 ) && ( x_xmark[x_delaunay-1] != -1 ) ) + { + int px = cvPointFrom32f(r1->pt).x; + int py = cvPointFrom32f(r1->pt).y; + int ppx, ppy; + + // eight connected pixels + for ( ppx=px-1; ppx<=px+1; ppx++ ) + { + for ( ppy=py-1; ppy<=py+1; ppy++ ) + { + if ( ( ppx < 0 ) || ( ppx >= comp_xsize ) ) continue; + if ( ( ppy < 0 ) || ( ppy >= comp_ysize ) ) continue; + + uchar lum = ((uchar*)(ogray->imageData + ogray->widthStep*ppx))[ppy]; + + uchar plum = ((uchar*)(ogray->imageData + ogray->widthStep*x_xmark[x_delaunay-1]))[x_ymark[x_delaunay-1]]; + + int diff = abs(lum-plum); + + if ( diff < x_threshold ) + { + cvSubdivDelaunay2DInsert( x_subdiv, r1->pt ); + cvCalcSubdivVoronoi2D( x_subdiv ); + } + } + } + } + + cvCircle( gray, cvPointFrom32f(r1->pt), 3, CV_RGB(255,255,255), -1, 8,0); + + // mark the point if it is not already + if ( x_markall ) + { + int marked = 0; + + for ( im=0; impt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); + + if ( odist <= x_maxmove ) + { + marked = 1; + // post( "pdp_opencv_surf : point already marked" ); + break; + } + } + + if ( !marked ) + { + for ( i=0; ipt.x; + x_ymark[i] = r1->pt.y; + x_found[i] = x_ftolerance; + memset( (float * )x_rdesc[i], 0x0, DSCSIZE*sizeof(float)); + break; + } + } + } + } + } + + for ( im=0; imcomp_ysize)?comp_xsize:comp_ysize; + + for( i = 0; i < objectKeypoints->total; i++ ) + { + CvSURFPoint* r1 = (CvSURFPoint*)cvGetSeqElem( objectKeypoints, i ); + const float* rdesc = (const float*)cvGetSeqElem( objectDescriptors, i ); + int descsize = (int)(objectDescriptors->elem_size/sizeof(float)); + + // manually marked points + // recognized on position + odist=sqrt( pow( r1->pt.x-x_xmark[im], 2 ) + pow( r1->pt.y-x_ymark[im], 2 ) ); + + if ( odist <= x_maxmove ) + { + if ( odist < dist ) + { + oi=im; + x_xmark[oi]=r1->pt.x; + x_ymark[oi]=r1->pt.y; + memcpy( (float * )x_rdesc[oi], rdesc, descsize*sizeof(float)); + dist = odist; + } + } + } + + if ( oi !=-1 ) + { + sprintf( tindex, "%d", oi ); + cvPutText( gray, tindex, cvPoint(x_xmark[oi],x_ymark[oi]), &font, CV_RGB(255,255,255)); + x_found[oi] = x_ftolerance; + SETFLOAT(&x_list[0], oi); + SETFLOAT(&x_list[1], x_xmark[oi]); + SETFLOAT(&x_list[2], x_ymark[oi]); + outlet_list( m_dataout, 0, 3, x_list ); + } + } + + // draw the delaunay + if ( x_delaunay >= 0 ) + { + CvSeqReader reader; + int i, total = x_subdiv->edges->total; + int elem_size = x_subdiv->edges->elem_size; + + cvStartReadSeq( (CvSeq*)(x_subdiv->edges), &reader, 0 ); + + for( i = 0; i < total; i++ ) + { + CvQuadEdge2D* edge = (CvQuadEdge2D*)(reader.ptr); + CvSubdiv2DPoint* org_pt; + CvSubdiv2DPoint* dst_pt; + CvPoint2D32f org; + CvPoint2D32f dst; + CvPoint iorg, idst; + + if( CV_IS_SET_ELEM( edge )) + { + org_pt = cvSubdiv2DEdgeOrg((CvSubdiv2DEdge)edge); + dst_pt = cvSubdiv2DEdgeDst((CvSubdiv2DEdge)edge); + + if( org_pt && dst_pt ) + { + org = org_pt->pt; + dst = dst_pt->pt; + + iorg = cvPoint( cvRound( org.x ), cvRound( org.y )); + idst = cvPoint( cvRound( dst.x ), cvRound( dst.y )); + + if ( ( org.x > 0 ) && ( org.x < comp_xsize ) && + ( dst.x > 0 ) && ( dst.x < comp_xsize ) && + ( org.y > 0 ) && ( org.y < comp_ysize ) && + ( dst.y > 0 ) && ( dst.y < comp_ysize ) ) + cvLine( gray, iorg, idst, CV_RGB(255,255,255), 1, CV_AA, 0 ); + } + } + + CV_NEXT_SEQ_ELEM( elem_size, reader ); + } + } + + // suppress lost points + for ( im=0; imimageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// + +void pix_opencv_surf :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_surf::nightModeMessCallback, + gensym("nightmode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_surf::hessianMessCallback, + gensym("hessian"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_surf::markMessCallback, + gensym("mark"), A_GIMME, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_surf::deleteMessCallback, + gensym("delete"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_surf::clearMessCallback, + gensym("clear"), A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_surf::maxMoveMessCallback, + gensym("maxmove"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_surf::ftoleranceMessCallback, + gensym("ftolerance"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_surf::delaunayMessCallback, + gensym("delaunay"), A_SYMBOL, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_surf::pdelaunayMessCallback, + gensym("pdelaunay"), A_FLOAT, A_FLOAT, A_NULL); +} + +void pix_opencv_surf :: nightModeMessCallback(void *data, t_floatarg nightmode) +{ + GetMyClass(data)->nightModeMess((float)nightmode); +} + +void pix_opencv_surf :: hessianMessCallback(void *data, t_floatarg hessian) +{ + GetMyClass(data)->hessianMess((float)hessian); +} + +void pix_opencv_surf :: markMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) +{ + GetMyClass(data)->markMess(argc, argv); +} + +void pix_opencv_surf :: deleteMessCallback(void *data, t_floatarg index) +{ + GetMyClass(data)->deleteMess((float)index); +} + +void pix_opencv_surf :: clearMessCallback(void *data) +{ + GetMyClass(data)->clearMess(); +} + +void pix_opencv_surf :: maxMoveMessCallback(void *data, t_floatarg maxmove) +{ + GetMyClass(data)->maxMoveMess((float)maxmove); +} + +void pix_opencv_surf :: ftoleranceMessCallback(void *data, t_floatarg ftolerance) +{ + GetMyClass(data)->ftoleranceMess((float)ftolerance); +} + +void pix_opencv_surf :: delaunayMessCallback(void *data, t_symbol *s) +{ + GetMyClass(data)->delaunayMess(s); +} + +void pix_opencv_surf :: pdelaunayMessCallback(void *data, t_floatarg fpoint, t_floatarg fthreshold) +{ + GetMyClass(data)->pdelaunayMess((float)fpoint, (float)fthreshold); +} + +void pix_opencv_surf :: nightModeMess(float nightmode) +{ + if ((nightmode==0.0)||(nightmode==1.0)) night_mode = (int)nightmode; +} + +void pix_opencv_surf :: hessianMess(float hessian) +{ + if (hessian>0.0) x_hessian = (int)hessian; +} + +void pix_opencv_surf :: markMess(int argc, t_atom *argv) +{ + int i; + int inserted; + + if ( argc == 1 ) // mark all or none + { + if ( argv[0].a_type != A_SYMBOL ) + { + error( "pix_opencv_surf : wrong argument (should be 'all')" ); + return; + } + if ( !strcmp( argv[0].a_w.w_symbol->s_name, "all" ) ) + { + x_markall = 1; + return; + } + if ( !strcmp( argv[0].a_w.w_symbol->s_name, "none" ) ) + { + x_markall = 0; + clearMess(); + return; + } + } + else + { + if ( ( argv[0].a_type != A_FLOAT ) || ( argv[1].a_type != A_FLOAT ) ) + { + error( "pix_opencv_surf : wrong argument (should be mark px py)" ); + return; + } + else + { + float fpx = argv[0].a_w.w_float; + float fpy = argv[1].a_w.w_float; + int px, py; + + if ( ( fpx < 0.0 ) || ( fpx > comp_xsize ) || ( fpy < 0.0 ) || ( fpy > comp_ysize ) ) + { + return; + } + + px = (int)fpx; + py = (int)fpy; + inserted = 0; + for ( i=0; i MAX_MARKERS ) ) + { + return; + } + + x_xmark[(int)index-1] = -1; + x_ymark[(int)index-1] = -1; + +} + +void pix_opencv_surf :: clearMess(void) +{ + int i; + + for ( i=0; i=3.0) maxmove = (int)maxmove; +} + +void pix_opencv_surf :: ftoleranceMess(float ftolerance) +{ + if (ftolerance>=0.0) ftolerance = (int)ftolerance; +} + +void pix_opencv_surf :: delaunayMess(t_symbol *s) +{ + if (s == gensym("on")) + x_delaunay = 0; + if (s == gensym("off")) + x_delaunay = -1; +} + +void pix_opencv_surf :: pdelaunayMess(float point, float threshold) +{ + if (((int)point>0) && ((int)point +#include +#include + + +CPPEXTERN_NEW(pix_opencv_template) + +///////////////////////////////////////////////////////// +// +// pix_opencv_template +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_template :: pix_opencv_template() +{ +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_template :: ~pix_opencv_template() +{ +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_template :: processImage(imageStruct &image) +{ + cv::Mat imgMat( image.ysize, image.xsize, CV_8UC1, image.data, image.csize*image.xsize); // just transform imageStruct to IplImage without copying data +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_template :: obj_setupCallback(t_class *classPtr) +{ +} diff --git a/src/pix_opencv_template.h b/src/pix_opencv_template.h new file mode 100644 index 0000000..bf6c818 --- /dev/null +++ b/src/pix_opencv_template.h @@ -0,0 +1,57 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Threshold filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_pix_opencv_template_H_ +#define INCLUDE_pix_opencv_template_H_ + +#include "opencv2/opencv.hpp" + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_template + + square pattern detector + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_template : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_template, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_template(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_template(); + + ////////// + // Do the processing + virtual void processImage(imageStruct &image); + +}; +#endif // for header file diff --git a/src/pix_opencv_threshold.cc b/src/pix_opencv_threshold.cc new file mode 100644 index 0000000..28f1477 --- /dev/null +++ b/src/pix_opencv_threshold.cc @@ -0,0 +1,262 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// + +#include "pix_opencv_threshold.h" + +CPPEXTERN_NEW(pix_opencv_threshold) + +///////////////////////////////////////////////////////// +// +// pix_opencv_threshold +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_threshold :: pix_opencv_threshold() +{ + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("max")); + inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("threshold")); + threshold_value = 50; + max_value = 255; + threshold_mode = 0; + comp_xsize = 0; + comp_ysize = 0; + orig = NULL; + rgb = NULL; + gray = NULL; +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_threshold :: ~pix_opencv_threshold() +{ + //Destroy cv_images to clean memory + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_threshold :: processRGBAImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!orig)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( orig ) + { + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + } + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(orig->width,orig->height), IPL_DEPTH_8U, 1); + } + // Here we make a copy of the pixel data from image to orig->imageData + // orig is a IplImage struct, the default image type in openCV, take a look on the IplImage data structure here + // http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html + memcpy( orig->imageData, image.data, image.xsize*image.ysize*4 ); + + // Convert to grayscale + cvCvtColor(orig, gray, CV_BGRA2GRAY); + + // Applies fixed-level thresholding to single-channel array. + switch(this->threshold_mode) { + case 0: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY); + break; + case 1: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY_INV); + break; + case 2: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TRUNC); + break; + case 3: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO); + break; + case 4: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO_INV); + break; + } + + cvCvtColor(gray, orig, CV_GRAY2BGRA); + + //copy back the processed frame to image + memcpy( image.data, orig->imageData, image.xsize*image.ysize*4 ); +} + +void pix_opencv_threshold :: processRGBImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgb ) + { + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + } + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + + // Convert to grayscale + cvCvtColor(rgb, gray, CV_RGB2GRAY); + + // Applies fixed-level thresholding to single-channel array. + switch(this->threshold_mode) { + case 0: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY); + break; + case 1: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY_INV); + break; + case 2: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TRUNC); + break; + case 3: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO); + break; + case 4: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO_INV); + break; + } + + cvCvtColor(gray, rgb, CV_GRAY2BGR); + + memcpy( image.data, rgb->imageData, image.xsize*image.ysize*3 ); +} + +void pix_opencv_threshold :: processYUVImage(imageStruct &image) +{ + post( "pix_opencv_threshold : yuv format not supported" ); +} + +void pix_opencv_threshold :: processGrayImage(imageStruct &image) +{ + unsigned char *pixels = image.data; + + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { + + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if ( rgb ) + { + cvReleaseImage(&orig); + cvReleaseImage(&gray); + cvReleaseImage(&rgb); + } + + //create the orig image with new size + orig = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); + + } + // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage + memcpy( gray->imageData, image.data, image.xsize*image.ysize ); + + // Applies fixed-level thresholding to single-channel array. + switch(this->threshold_mode) { + case 0: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY); + break; + case 1: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_BINARY_INV); + break; + case 2: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TRUNC); + break; + case 3: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO); + break; + case 4: + cvThreshold(gray, gray, (float)this->threshold_value, (float)this->max_value, CV_THRESH_TOZERO_INV); + break; + } + + memcpy( image.data, gray->imageData, image.xsize*image.ysize ); +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_threshold :: floatMaxMess (float maxvalue) +{ + if ( (int)maxvalue>0 ) this->max_value = maxvalue; +} +void pix_opencv_threshold :: floatThreshMess (float edge_thresh) +{ + this->threshold_value = edge_thresh; +} +void pix_opencv_threshold :: floatModeMess (float mode) +{ + if ((mode>=0)&&(mode<5)) this->threshold_mode = (int)mode; +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_threshold :: obj_setupCallback(t_class *classPtr) +{ + class_addmethod(classPtr, (t_method)&pix_opencv_threshold::floatModeMessCallback, + gensym("mode"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_threshold::floatMaxMessCallback, + gensym("max"), A_FLOAT, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_threshold::floatThreshMessCallback, + gensym("threshold"), A_FLOAT, A_NULL); +} +void pix_opencv_threshold :: floatMaxMessCallback(void *data, t_floatarg maxvalue) +{ + GetMyClass(data)->floatMaxMess((float)maxvalue); +} +void pix_opencv_threshold :: floatThreshMessCallback(void *data, t_floatarg edge_thresh) +{ + GetMyClass(data)->floatThreshMess((float)edge_thresh); +} +void pix_opencv_threshold :: floatModeMessCallback(void *data, t_floatarg mode) +{ + GetMyClass(data)->floatModeMess((float)mode); +} diff --git a/src/pix_opencv_threshold.h b/src/pix_opencv_threshold.h new file mode 100644 index 0000000..cd82f90 --- /dev/null +++ b/src/pix_opencv_threshold.h @@ -0,0 +1,88 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Threshold filter + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_THRESHOLD_H_ +#define INCLUDE_PIX_OPENCV_THRESHOLD_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_threshold + + Threshold filter + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_threshold : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_threshold, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_threshold(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_threshold(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ////////// + // Set the new edge threshold + void floatMaxMess(float maxvalue); + void floatThreshMess(float edge_thresh); + void floatModeMess(float mode); + + // The new edge threshold + float threshold_value; + float max_value; + int threshold_mode; + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + private: + + ////////// + // Static member functions + static void floatMaxMessCallback(void *data, t_floatarg maxvalue); + static void floatThreshMessCallback(void *data, t_floatarg thresh_value); + static void floatModeMessCallback(void *data, t_floatarg thresh_mode_value); + + ///////// + // IplImage needed + IplImage *orig, *rgb, *gray; +}; + +#endif // for header file diff --git a/src/pix_opencv_trackKnn.cc b/src/pix_opencv_trackKnn.cc new file mode 100644 index 0000000..6113b0c --- /dev/null +++ b/src/pix_opencv_trackKnn.cc @@ -0,0 +1,602 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// based on code written by Lluis Gomez i Bigorda ( lluisgomez _at_ hangar _dot_ org ) (pix_opencv) +// and on some code from CCV : http://ccv.nuigroup.com/ (the tracker it self) +// pix_opencv_trackKnn extract and simplify contours of incomming image +// by Antoine Villeret - 2012 + +#include "pix_opencv_trackKnn.h" + +using namespace cv; +using namespace std; + +CPPEXTERN_NEW(pix_opencv_trackKnn) + +///////////////////////////////////////////////////////// +// +// pix_opencv_trackKnn +// +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// +pix_opencv_trackKnn :: pix_opencv_trackKnn() : \ + m_taboutput(0), \ + IdCounter(0), \ + m_x_arrayname(NULL), \ + m_y_arrayname(NULL), \ + m_z_arrayname(NULL) +{ + m_dataout_right = outlet_new(this->x_obj, 0); + + //~ post("build on %s at %s", __DATE__, __TIME__); +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_trackKnn :: ~pix_opencv_trackKnn() +{ +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// + +void pix_opencv_trackKnn :: processImage(imageStruct &image) +{ + // nothing to do for now... +} + +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_trackKnn :: obj_setupCallback(t_class *classPtr) +{ + CPPEXTERN_MSG(classPtr, "cvblob", cvblobMess); + CPPEXTERN_MSG1(classPtr, "drawBlob", drawBlobMess, int); + CPPEXTERN_MSG1(classPtr, "taboutput", taboutputMess, float); + CPPEXTERN_MSG1(classPtr, "tabinput", tabinputMess, float); + CPPEXTERN_MSG(classPtr, "settab", tableMess); + CPPEXTERN_MSG0(classPtr, "reset", resetMess); +} + +///////////////////////////////////////////////////////// +// messages handling +// +///////////////////////////////////////////////////////// +void pix_opencv_trackKnn :: resetMess(){ + m_trackedBlobs.clear(); + IdCounter=0; + +} + +void pix_opencv_trackKnn :: drawBlobMess(double arg) +{ + m_drawBlob = arg > 0 ? arg : 3.; +} + +void pix_opencv_trackKnn :: cvblobMess(t_symbol *s, int argc, t_atom* argv){ + // supposed to receive a cvblob message formatted like an iem matrix : the 2 first elements are the matrix cols and rows + + // first check is matrix is valid... + if ( argc < 2 ){ + error("this doesn't seems to be a valid cvblob matrix (too few elements !)"); + return; + } + + for ( int i = 0 ; i < argc ; i++){ + if ( argv[i].a_type != A_FLOAT ){ + error("cvblob takes only float arg"); + return; + } + } + + int blob_number = (int) atom_getfloatarg(0,argc,argv); + int blob_atom_size = (int) atom_getfloatarg(1, argc, argv); + + if ( blob_number * blob_atom_size != argc - 2 ){ + error("cvblob matrix have a wrong size %d != %d x %d", argc -2, blob_number, blob_atom_size); + return; + } + + m_inputBlobs.clear(); + for ( int i = 0; i < blob_number ; i++){ + Blob blob; + blob.id=-1; + int j = i*blob_atom_size+2; + if ( blob_atom_size < 3 ) j--; // if there is more than 2 element per blob, assume, the first is Id + blob.centroid.x=atom_getfloatarg(j+1,argc,argv); + blob.centroid.y=atom_getfloatarg(j+2,argc,argv); + + if ( blob_atom_size > 2 ){ // if we pass more than just x and y coordinates, assume the same data order than pix_opencv_contours outputs + blob.angleBoundingRect.size.width=atom_getfloatarg(j+3,argc,argv); + blob.angleBoundingRect.size.height=atom_getfloatarg(j+4,argc,argv); + blob.angle=atom_getfloatarg(j+5,argc,argv); + blob.area=atom_getfloatarg(j+6,argc,argv); + + blob.nPts=atom_getfloatarg(j+15,argc,argv); + blob.length=atom_getfloatarg(j+16,argc,argv); + } + + m_inputBlobs.push_back(blob); + } + + doTracking(); +} + +void pix_opencv_trackKnn :: doTracking() +{ + // find an Id + for(unsigned int i=0; i 1 || abs((int)m_trackedBlobs[i].D.y) > 1) { + // printf("\nUNUSUAL BLOB @ %f\n-----------------------\nm_trackedBlobs[%i]\nD = (%f, %f)\nXY= (%f, %f)\nlastTimeTimeWasChecked = %f\nsitting = %f\n", + // ofGetElapsedTimeMillis(), + // i, + // m_trackedBlobs[i].D.x, m_trackedBlobs[i].D.y, + // m_trackedBlobs[i].centroid.x, m_trackedBlobs[i].centroid.y, + // m_trackedBlobs[i].lastTimeTimeWasChecked, + // m_trackedBlobs[i].downTime, + // m_trackedBlobs[i].sitting + // ); + // } + + + //calculate the accelleration + //~ofPoint tD = m_trackedBlobs[i].D; + //~m_trackedBlobs[i].maccel = sqrtf((tD.x* tD.x)+(tD.y*tD.y)/(ofGetElapsedTimeMillis() - m_trackedBlobs[i].lastTimeTimeWasChecked)); + + //~m_trackedBlobs[i].lastTimeTimeWasChecked = ofGetElapsedTimeMillis(); + + //calculate the age + //~m_trackedBlobs[i].age = ofGetElapsedTimef() - m_trackedBlobs[i].downTime; + + //if not moving more than min_movement_threshold then set to same position as last frame + // if(m_trackedBlobs[i].maccel < MIN_MOVEMENT_THRESHOLD) + // { //this helps avoid jittery blobs + // m_trackedBlobs[i].centroid.x = m_trackedBlobs[i].lastCentroid.x; + // m_trackedBlobs[i].centroid.y = m_trackedBlobs[i].lastCentroid.y; + // } + + //set sitting (held length) + //~if(m_trackedBlobs[i].maccel < 7) + { //1 more frame of sitting + //~if(m_trackedBlobs[i].sitting != -1) + //~m_trackedBlobs[i].sitting = ofGetElapsedTimef() - m_trackedBlobs[i].downTime; + //~} + //~else { + //~m_trackedBlobs[i].sitting = -1; + //~} + + //printf("time: %f\n", ofGetElapsedTimeMillis()); + //printf("%i age: %f, downTimed at: %f\n", i, m_trackedBlobs[i].age, m_trackedBlobs[i].downTime); + + //if blob has been 'holding/sitting' for 1 second send a held event + //~if(m_trackedBlobs[i].sitting > 1.0f){ + //held event only happens once so set to -1 + //~m_trackedBlobs[i].sitting = -1; + } + } + } + } + } + /*==================*/ + //--Add New Living Tracks + //now every new blob should be either labeled with a tracked ID or + //have ID of -1... if the ID is -1... we need to make a new track + for(unsigned int i=0; i(0); + Scalar scolor(ptr[0],ptr[1],ptr[2]); + + m_inputBlobs[i].color = scolor; + m_trackedBlobs.push_back(m_inputBlobs[i]); + + //~numEnter++; + //~if (numEnter > 20) + //~{ + //~printf("something wrong!\n"); + //~} + + } + } + + outputBlob(); +} + +void pix_opencv_trackKnn :: outputBlob(){ + if ( m_taboutput ) + { + //~ put contours in 3 tables. + //~ contours are separated by 0 values + + if ( m_x_arrayname == NULL || m_y_arrayname == NULL || m_id_arrayname == NULL){ + error("please settab before trying to write into..."); + return; + } + + int size(m_trackedBlobs.size()), vecxsize(0), vecysize(0), vecidsize(0); + t_garray *ax, *ay, *aid; + t_word *vecx, *vecy, *vecid; + + //~ check if array exist + if (!(ax = (t_garray *)pd_findbyclass(m_x_arrayname, garray_class))){ + error("%s: no such array", m_x_arrayname->s_name); + return; + } + if (!(ay = (t_garray *)pd_findbyclass(m_y_arrayname, garray_class))){ + error("%s: no such array", m_y_arrayname->s_name); + return; + } + if (!(aid = (t_garray *)pd_findbyclass(m_id_arrayname, garray_class))){ + error("%s: no such array", m_id_arrayname->s_name); + return; + } + + if (!garray_getfloatwords(ax, &vecxsize, &vecx)){ + error("%s: bad template for tabwrite", m_x_arrayname->s_name); + return; + } else if ( vecxsize != size ){ + garray_resize_long(ax,size); + if (!garray_getfloatwords(ax, &vecxsize, &vecx)){ + error("%s: can't resize correctly", m_x_arrayname->s_name); + return; + } + } + + if (!garray_getfloatwords(ay, &vecysize, &vecy)){ + error("%s: bad template for tabwrite", m_y_arrayname->s_name); + return; + } else if ( vecysize != size ){ + garray_resize_long(ay,size); + if (!garray_getfloatwords(ay, &vecysize, &vecy)){ + error("%s: can't resize correctly", m_y_arrayname->s_name); + return; + } + } + + if (!garray_getfloatwords(aid, &vecidsize, &vecid)){ + error("%s: bad template for tabwrite", m_id_arrayname->s_name); + return; + } else if ( vecidsize != size ){ + garray_resize_long(aid,size); + if (!garray_getfloatwords(aid, &vecidsize, &vecid)){ + error("%s: can't resize correctly", m_id_arrayname->s_name); + return; + } + } + + for( size_t i = 0 ; i < m_trackedBlobs.size(); i++ ) + { + vecx[i].w_float = m_trackedBlobs[i].centroid.x; + vecy[i].w_float = m_trackedBlobs[i].centroid.y; + vecid[i].w_float = m_trackedBlobs[i].id; + } + //~ comment the redraw fnt if not needed + garray_redraw(ax); + garray_redraw(ay); + garray_redraw(aid); + + } else { + unsigned int blob_num=m_trackedBlobs.size(); + unsigned int blobMatrixWidth=17; + unsigned int blob_atom_size = 2+blob_num*blobMatrixWidth; + + t_atom* blob_atom = new t_atom[blob_atom_size]; + SETFLOAT(&blob_atom[0], blob_num); + SETFLOAT(&blob_atom[1], blobMatrixWidth); + + for(unsigned int i=0; i newBlobs=m_inputBlobs; + Blob *track = &m_trackedBlobs[blob_index]; + + int winner = -1; //initially label track as '-1'=dead + if((k%2)==0) k++; //if k is not an odd number, add 1 to it + + //if it exists, square the threshold to use as square distance + if(thresh>0) + thresh *= thresh; + + //list of neighbor point index and respective distances + std::list > nbors; + std::list >::iterator iter; + + //find 'k' closest neighbors of testpoint + double x, y, xT, yT, dist; + for(unsigned int i=0; icentroid.x; + yT = track->centroid.y; + dist = (x-xT)*(x-xT)+(y-yT)*(y-yT); + + if(dist<=thresh)//it's good, apply label if no label yet and return + { + winner = i; + return winner; + } + + /**************************************************************** + * check if this blob is closer to the point than what we've seen + *so far and add it to the index/distance list if positive + ****************************************************************/ + + //search the list for the first point with a longer distance + for(iter=nbors.begin(); iter!=nbors.end() + && dist>=iter->second; iter++); + + if((iter!=nbors.end())||(nbors.size()(i, dist)); + //too many items in list, get rid of farthest neighbor + if(nbors.size()>k) + nbors.pop_back(); + } + } + + /******************************************************************** + * we now have k nearest neighbors who cast a vote, and the majority + * wins. we use each class average distance to the target to break any + * possible ties. + *********************************************************************/ + + // a mapping from labels (IDs) to count/distance + std::map > votes; + + //remember: + //iter->first = index of newBlob + //iter->second = distance of newBlob to current tracked blob + for(iter=nbors.begin(); iter!=nbors.end(); iter++) + { + //add up how many counts each neighbor got + int count = ++(votes[iter->first].first); + double dist = (votes[iter->first].second+=iter->second); + + /* check for a possible tie and break with distance */ + if(count>votes[winner].first || ( count==votes[winner].first && distfirst; + } + } + + return winner; +} + +void pix_opencv_trackKnn :: taboutputMess(float arg) +{ + m_taboutput = arg > 0; +} + +void pix_opencv_trackKnn :: tabinputMess(float arg) +{ + m_tabinput = arg > 0; +} + +void pix_opencv_trackKnn :: tableMess(t_symbol *s, int argc, t_atom* argv) +{ + if ( argc < 3 ){ + error("table message need at least 3 argumments"); + return; + } + + for ( int i = 0 ; i < argc ; i++ ){ + if ( argv[i].a_type != A_SYMBOL ){ + error("table message takes only symbol arguments, at most 4 at least 3"); + return; + } + } + + if ( argc == 3 && argv[0].a_type == A_SYMBOL && argv[1].a_type == A_SYMBOL && argv[2].a_type == A_SYMBOL ){ + + // check if arrays exist + m_x_arrayname = argv[0].a_w.w_symbol; + m_y_arrayname = argv[1].a_w.w_symbol; + m_z_arrayname = argv[2].a_w.w_symbol; + } + + if ( argc > 3 ){ + m_id_arrayname= argv[0].a_w.w_symbol; + m_x_arrayname = argv[1].a_w.w_symbol; + m_y_arrayname = argv[2].a_w.w_symbol; + m_z_arrayname = argv[3].a_w.w_symbol; + } + m_tabinput = 1; +} diff --git a/src/pix_opencv_trackKnn.h b/src/pix_opencv_trackKnn.h new file mode 100644 index 0000000..2b0a006 --- /dev/null +++ b/src/pix_opencv_trackKnn.h @@ -0,0 +1,93 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +#ifndef INCLUDE_PIX_OPENCV_TRACKKNN_H_ +#define INCLUDE_PIX_OPENCV_TRACKKNN_H_ + +#ifndef _EiC +#include "opencv2/legacy/legacy.hpp" +#endif + +#include "Base/GemPixObj.h" +#include + +#include +#include + +#include "Blob.hpp" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_trackKnn + +detects contours and send them out + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_trackKnn : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_trackKnn, GemPixObj) + +public: + + ////////// + // Constructor + pix_opencv_trackKnn(); + +protected: + + ////////// + // Destructor + virtual ~pix_opencv_trackKnn(); + + ////////// + // Do the processing + virtual void processImage(imageStruct &image); + + // Messages handling + void drawBlobMess(double arg); + void cvblobMess(t_symbol *s, int argc, t_atom* argv); + void tabinputMess(float arg); + void taboutputMess(float arg); + void tableMess(t_symbol *s, int argc, t_atom* argv); + +private: + + void doTracking(void); + int trackKnn(unsigned int blob_index, unsigned int k, double thresh); + void outputBlob(); + void resetMess(); + + t_outlet *m_dataout_right; // cvblob outlet + + unsigned int m_repeat_point; + double m_area_threshold; // min area for contour + double m_epsilon; + int m_drawBlob; + + std::vector m_trackedBlobs; + std::vector m_inputBlobs; + + int m_mode, m_taboutput, m_tabinput; + + int IdCounter; + + t_symbol *m_x_arrayname, *m_y_arrayname, *m_z_arrayname, *m_id_arrayname; + +}; +#endif // for header file diff --git a/src/pix_opencv_warpperspective.cc b/src/pix_opencv_warpperspective.cc new file mode 100644 index 0000000..b418ee4 --- /dev/null +++ b/src/pix_opencv_warpperspective.cc @@ -0,0 +1,313 @@ +//////////////////////////////////////////////////////// +// +// GEM - Graphics Environment for Multimedia +// +// zmoelnig@iem.kug.ac.at +// +// Implementation file +// +// Copyright (c) 1997-2000 Mark Danks. +// Copyright (c) Günther Geiger. +// Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM +// Copyright (c) 2002 James Tittle & Chris Clepper +// For information on usage and redistribution, and for a DISCLAIMER OF ALL +// WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. +// +///////////////////////////////////////////////////////// +// +// pix_opencv_warpperspective by Antoine Villeret - 2011/13 + + + + +#include "pix_opencv_warpperspective.h" +#include + +CPPEXTERN_NEW(pix_opencv_warpperspective) + +///////////////////////////////////////////////////////// +// Constructor +// +///////////////////////////////////////////////////////// + +pix_opencv_warpperspective :: pix_opencv_warpperspective() +{ + //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("minarea")); + //inlet_new(this->x_obj, &this->x_obj->ob_pd, gensym("float"), gensym("maxarea")); + m_dataout = outlet_new(this->x_obj, 0); + //m_countout = outlet_new(this->x_obj, 0); + comp_xsize = 320; + comp_ysize = 240; + gray = NULL; + tmp = NULL; + rgb = NULL; + mapMatrix = cvCreateMat(3,3,CV_32FC1); + srcMatrix = cvCreateMat(4,2,CV_32FC1); + dstMatrix = cvCreateMat(4,2,CV_32FC1); + + cvSet(mapMatrix, cvScalar(0)); // set all to 0. + CV_MAT_ELEM( *mapMatrix, float, 0, 0 ) = 1.; // then make identity + CV_MAT_ELEM( *mapMatrix, float, 1, 1 ) = 1.; + + // initialize srcMatrix & dstMatrix to the same... + CV_MAT_ELEM( *srcMatrix, float, 0, 0 ) = 0.; + CV_MAT_ELEM( *srcMatrix, float, 0, 1 ) = 0.; + CV_MAT_ELEM( *srcMatrix, float, 1, 0 ) = 1.; + CV_MAT_ELEM( *srcMatrix, float, 1, 1 ) = 0.; + CV_MAT_ELEM( *srcMatrix, float, 2, 0 ) = 1.; + CV_MAT_ELEM( *srcMatrix, float, 2, 1 ) = 1.; + CV_MAT_ELEM( *srcMatrix, float, 3, 0 ) = 0.; + CV_MAT_ELEM( *srcMatrix, float, 3, 1 ) = 1.; + + CV_MAT_ELEM( *dstMatrix, float, 0, 0 ) = 0.; + CV_MAT_ELEM( *dstMatrix, float, 0, 1 ) = 0.; + CV_MAT_ELEM( *dstMatrix, float, 1, 0 ) = 1.; + CV_MAT_ELEM( *dstMatrix, float, 1, 1 ) = 0.; + CV_MAT_ELEM( *dstMatrix, float, 2, 0 ) = 1.; + CV_MAT_ELEM( *dstMatrix, float, 2, 1 ) = 1.; + CV_MAT_ELEM( *dstMatrix, float, 3, 0 ) = 0.; + CV_MAT_ELEM( *dstMatrix, float, 3, 1 ) = 1.; + + mapMatrixList=new t_atom[9]; + + flags = CV_WARP_FILL_OUTLIERS; // TODO add a set method + findmethod = 0; // TODO add a set method + +} + +///////////////////////////////////////////////////////// +// Destructor +// +///////////////////////////////////////////////////////// +pix_opencv_warpperspective :: ~pix_opencv_warpperspective() +{ + //Destroy cv_images to clean memory + //if (gray) cvReleaseImage(&gray); // TODO free image header but not data because it points to Gem image... + if (rgb) cvReleaseImage(&rgb); + //if (tmp) cvReleaseImage(&tmp); // the same + if (mapMatrix) cvReleaseMat(&mapMatrix); + if (srcMatrix) cvReleaseMat(&srcMatrix); + if (dstMatrix) cvReleaseMat(&dstMatrix); +} + +///////////////////////////////////////////////////////// +// processImage +// +///////////////////////////////////////////////////////// +void pix_opencv_warpperspective :: processRGBAImage(imageStruct &image) +{ + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) + { + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if(gray) cvReleaseImage(&gray); + if(rgb) cvReleaseImage(&rgb); + if(tmp) cvReleaseImage(&tmp); + + // Create images with new sizes + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + tmp = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 4); + } + + // no need to copy a lot of memory, just point to it... + rgb->imageData = (char*) image.data; + cvWarpPerspective(rgb, tmp, mapMatrix, flags, cvScalar(0)); + memcpy(image.data, tmp->imageData, image.xsize*image.ysize*image.csize); +} + +void pix_opencv_warpperspective :: processRGBImage(imageStruct &image) +{ + // TODO + error("cant't support RGB image for now"); +} + +void pix_opencv_warpperspective :: processYUVImage(imageStruct &image) +{ + // TODO + error( "pix_opencv_warpperspective : yuv format not supported" ); +} + +void pix_opencv_warpperspective :: processGrayImage(imageStruct &image) +{ + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!gray)) + { + this->comp_xsize = image.xsize; + this->comp_ysize = image.ysize; + + //Destroy cv_images to clean memory + if(gray) cvReleaseImage(&gray); + if(rgb) cvReleaseImage(&rgb); + if(tmp) cvReleaseImage(&tmp); + + // Create images with new sizes + gray = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + tmp = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 1); + } + + // no need to copy a lot of memory, just point to it... + gray->imageData = (char*) image.data; + cvWarpPerspective(gray, tmp, mapMatrix, flags, cvScalar(0)); + memcpy(image.data, tmp->imageData, image.xsize*image.ysize); + +} + +///////////////////////////////////////////////////////// +// floatThreshMess +// +///////////////////////////////////////////////////////// +void pix_opencv_warpperspective :: mapMatrixMess (int argc, t_atom *argv) +{ + post("set mapMatrix"); + int i; + if (argc != 9) { + error("map matrix should be 3x3"); + return; + } + for ( i = 0; i < 9 ; i++) { + if (argv[i].a_type != A_FLOAT) { + error("map matrix should be float"); + return; + } + } + + // fillin the mapMatrix + CV_MAT_ELEM( *mapMatrix, float, 0, 0 ) = argv[0].a_w.w_float; + CV_MAT_ELEM( *mapMatrix, float, 1, 0 ) = argv[1].a_w.w_float; + CV_MAT_ELEM( *mapMatrix, float, 2, 0 ) = argv[2].a_w.w_float; + CV_MAT_ELEM( *mapMatrix, float, 0, 1 ) = argv[3].a_w.w_float; + CV_MAT_ELEM( *mapMatrix, float, 1, 1 ) = argv[4].a_w.w_float; + CV_MAT_ELEM( *mapMatrix, float, 2, 1 ) = argv[5].a_w.w_float; + CV_MAT_ELEM( *mapMatrix, float, 0, 2 ) = argv[6].a_w.w_float; + CV_MAT_ELEM( *mapMatrix, float, 1, 2 ) = argv[7].a_w.w_float; + CV_MAT_ELEM( *mapMatrix, float, 2, 2 ) = argv[8].a_w.w_float; + +} + +void pix_opencv_warpperspective :: srcMatrixMess (int argc, t_atom *argv) +{ + int i; + if ( argc % 2 ) { + error("src is should be a list of couple x/y values"); + return; + } + if ( argc != dstMatrix->rows * dstMatrix->cols ) + { + error("src matrix should have the same size as dst matrix (which is %d x %d)", dstMatrix->cols, dstMatrix->rows); + return; + } + for ( i = 0; i < argc ; i++) { + if (argv[i].a_type != A_FLOAT) { + error("src matrix should be float"); + return; + } + } + + // fillin the srcMatrix + for ( i = 0 ; i < dstMatrix->rows ; i++ ) + { + CV_MAT_ELEM( *srcMatrix, float, i, 0 ) = argv[i*2].a_w.w_float; + CV_MAT_ELEM( *srcMatrix, float, i, 1 ) = argv[i*2+1].a_w.w_float; // does it work ? + } + findhomography(); +} + +void pix_opencv_warpperspective :: dstMatrixMess (int argc, t_atom *argv) +{ + int i; + if ( argc % 2 ){ + error("dstMatrix is should be a list of x/y pairs"); + return; + } + for ( i = 0; i < argc ; i++) { + if (argv[i].a_type != A_FLOAT) { + error("dstMatrix should be float"); + return; + } + } + if ( dstMatrix->rows != argc/2 ) { + // delete and recreate matrix if needed + cvReleaseMat(&dstMatrix); + cvReleaseMat(&srcMatrix); + dstMatrix = cvCreateMat(argc/2,2,CV_32FC1); + srcMatrix = cvCreateMat(argc/2,2,CV_32FC1); + cvSet(srcMatrix, cvScalar(0)); // set all to 0. + } + // fillin the dstMatrix + for ( i = 0 ; i < dstMatrix->rows ; i++ ) + { + CV_MAT_ELEM( *dstMatrix, float, i, 0 ) = argv[i*2].a_w.w_float; + CV_MAT_ELEM( *dstMatrix, float, i, 1 ) = argv[i*2+1].a_w.w_float; // does it work ? + } + findhomography(); +} + +void pix_opencv_warpperspective :: invertMess( int argc, t_atom *argv ){ + if ( argc == 0 ){ + error("invert need one argument (0|1)"); + } else if ( argv[0].a_type != A_FLOAT ){ + error("invert need one float argument (0|1)"); + } else { + int invert = argv[0].a_w.w_float; + if (invert > 0){ + flags |= cv::WARP_INVERSE_MAP; + } else { + flags ^= cv::WARP_INVERSE_MAP; + } + } +} + +void pix_opencv_warpperspective :: findhomography( ) +{ + int i,j; + if ( srcMatrix->cols != dstMatrix->cols || srcMatrix->rows != dstMatrix->rows ) { + error("srcMatrix and dstMatrix should have the same size to compute homography !"); + return; + } + cvFindHomography(srcMatrix, dstMatrix, mapMatrix, findmethod, 0, NULL); + for ( j = 0 ; j < 3 ; j++ ){ + for( i=0 ; i<3 ; i++){ + SETFLOAT(&mapMatrixList[i+j*3], CV_MAT_ELEM( *mapMatrix, float, i, j)); + } + } + // send out mapMatrix + outlet_list( m_dataout, 0, 9, mapMatrixList); +} +///////////////////////////////////////////////////////// +// static member function +// +///////////////////////////////////////////////////////// +void pix_opencv_warpperspective :: obj_setupCallback(t_class *classPtr) +{ + // TODO add method for message "flags" + // TODO treat list messages in a PD way ? + class_addmethod(classPtr, (t_method)&pix_opencv_warpperspective::mapMatrixMessCallback, + gensym("mapMatrix"), A_GIMME, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_warpperspective::srcMatrixMessCallback, + gensym("srcMatrix"), A_GIMME, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_warpperspective::dstMatrixMessCallback, + gensym("dstMatrix"), A_GIMME, A_NULL); + class_addmethod(classPtr, (t_method)&pix_opencv_warpperspective::invertMessCallback, + gensym("invert"), A_GIMME, A_NULL); +} + +void pix_opencv_warpperspective :: mapMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) +{ + GetMyClass(data)->mapMatrixMess(argc, argv); +} + +void pix_opencv_warpperspective :: srcMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) +{ + GetMyClass(data)->srcMatrixMess(argc, argv); +} + +void pix_opencv_warpperspective :: dstMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) +{ + GetMyClass(data)->dstMatrixMess(argc, argv); +} + +void pix_opencv_warpperspective :: invertMessCallback(void *data, t_symbol *s, int argc, t_atom *argv) +{ + GetMyClass(data)->invertMess(argc, argv); +} diff --git a/src/pix_opencv_warpperspective.h b/src/pix_opencv_warpperspective.h new file mode 100644 index 0000000..0f21ae1 --- /dev/null +++ b/src/pix_opencv_warpperspective.h @@ -0,0 +1,100 @@ +/*----------------------------------------------------------------- +LOG + GEM - Graphics Environment for Multimedia + + Compute homography between 2 sets on points and apply transformation to input image + + + Copyright (c) 1997-1999 Mark Danks. mark@danks.org + Copyright (c) Günther Geiger. geiger@epy.co.at + Copyright (c) 2001-2002 IOhannes m zmoelnig. forum::für::umläute. IEM. zmoelnig@iem.kug.ac.at + Copyright (c) 2002 James Tittle & Chris Clepper + For information on usage and redistribution, and for a DISCLAIMER OF ALL + WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution. + +-----------------------------------------------------------------*/ + +// pix_opencv_warpperspective by Antoine Villeret - 2011/13 + +#ifndef INCLUDE_PIX_OPENCV_WARPPERSPECTIVE_H_ +#define INCLUDE_PIX_OPENCV_WARPPERSPECTIVE_H_ + +#ifndef _EiC +#include "opencv2/opencv.hpp" + +#endif + +#include "Base/GemPixObj.h" + +/*----------------------------------------------------------------- +------------------------------------------------------------------- +CLASS + pix_opencv_warpperspective + +KEYWORDS + pix + +DESCRIPTION + +-----------------------------------------------------------------*/ +class GEM_EXPORT pix_opencv_warpperspective : public GemPixObj +{ + CPPEXTERN_HEADER(pix_opencv_warpperspective, GemPixObj) + + public: + + ////////// + // Constructor + pix_opencv_warpperspective(); + + protected: + + ////////// + // Destructor + virtual ~pix_opencv_warpperspective(); + + ////////// + // Do the processing + virtual void processRGBAImage(imageStruct &image); + virtual void processRGBImage(imageStruct &image); + virtual void processYUVImage(imageStruct &image); + virtual void processGrayImage(imageStruct &image); + + ///////// + // Setup + void mapMatrixMess (int argc, t_atom *argv); + void srcMatrixMess (int argc, t_atom *argv); + void dstMatrixMess (int argc, t_atom *argv); + void invertMess (int argc, t_atom *argv); + + void findhomography(); + + // to detect changes in the image size + int comp_xsize; + int comp_ysize; + + CvMat *mapMatrix; // 3x3 transformation matrix + CvMat *srcMatrix, *dstMatrix; // nX2 points coordinates matrices, n>4 + t_atom *mapMatrixList; // array to send out transformation Matrix + int flags; + int findmethod; + + + private: + + t_outlet *m_dataout; + ////////// + // Static member functions + static void mapMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv); + static void srcMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv); + static void dstMatrixMessCallback(void *data, t_symbol *s, int argc, t_atom *argv); + static void invertMessCallback(void *data, t_symbol *s, int argc, t_atom *argv); + + + ///////// + // IplImage needed + IplImage *rgb, *tmp, *gray; + +}; + +#endif // for header file -- cgit v1.2.1