diff --git a/imgcorrect/corrections.py b/imgcorrect/corrections.py index fc1b3c1..1140acc 100644 --- a/imgcorrect/corrections.py +++ b/imgcorrect/corrections.py @@ -47,6 +47,7 @@ def _get_band_coeff(row): 23: zenith_co.sg3144_batch1_coefficients, 63: zenith_co.sg3144_batch2_coefficients, 217: zenith_co.sg3144_batch3_coefficients, + 220: zenith_co.sg3144_batch4_coefficients, } aruco_id = row["aruco_id"] diff --git a/imgcorrect/detect_panel.py b/imgcorrect/detect_panel.py index e8248eb..ea3ce93 100644 --- a/imgcorrect/detect_panel.py +++ b/imgcorrect/detect_panel.py @@ -65,7 +65,9 @@ def extract_panel_bounds(image): corners, ids, rejected_img_points = cv.aruco.detectMarkers(image, dictionary) # if at least one marker detected - if ids is not None and (ids[0][0] == 23 or ids[0][0] == 63 or ids[0][0] == 217): + if ids is not None and ( + ids[0][0] == 23 or ids[0][0] == 63 or ids[0][0] == 217 or ids[0][0] == 220 + ): aruco_side_length_p = cv.norm(corners[0][0][1] - corners[0][0][0]) gsd = ARUCO_SIDE_LENGTH_M / aruco_side_length_p logger.debug("Calibration image GSD: %10.5f m/pixel", gsd) @@ -76,9 +78,9 @@ def extract_panel_bounds(image): # panels with markers of id:63 are incorrectly oriented # in this case, panel is beneath marker - if ids[0][0] == 63 or ids[0][0] == 217: + if ids[0][0] == 63 or ids[0][0] == 217 or ids[0][0] == 220: logger.info( - "Aruco ID: 63 or 217 detected. Adjusting for panel beneath marker." + "Aruco ID: 63, 217, or 220 detected. Adjusting for panel beneath marker." ) top_aruco_line = corners[0][0][3] - corners[0][0][2] top_aruco_line_middle = top_aruco_line / 2.0 + corners[0][0][2] diff --git a/imgcorrect/zenith_co.py b/imgcorrect/zenith_co.py index 345d099..0263511 100644 --- a/imgcorrect/zenith_co.py +++ b/imgcorrect/zenith_co.py @@ -6672,3 +6672,2210 @@ 0.09845492, # 2450 ] ) + +sg3144_batch4_coefficients = [0.0] * 250 +sg3144_batch4_coefficients.extend( + [ + 0.12586513, # 250 + 0.12552644, # 251 + 0.12525138, # 252 + 0.12508899, # 253 + 0.12472446, # 254 + 0.12449314, # 255 + 0.12417163, # 256 + 0.12390990, # 257 + 0.12364104, # 258 + 0.12339621, # 259 + 0.12321978, # 260 + 0.12264317, # 261 + 0.12237762, # 262 + 0.12229501, # 263 + 0.12196222, # 264 + 0.12177245, # 265 + 0.12153471, # 266 + 0.12124804, # 267 + 0.12093819, # 268 + 0.12079809, # 269 + 0.12055811, # 270 + 0.12029209, # 271 + 0.12016642, # 272 + 0.11981658, # 273 + 0.11947314, # 274 + 0.11944327, # 275 + 0.11925660, # 276 + 0.11918341, # 277 + 0.11908432, # 278 + 0.11882719, # 279 + 0.11844860, # 280 + 0.11847254, # 281 + 0.11844811, # 282 + 0.11809897, # 283 + 0.11801056, # 284 + 0.11779897, # 285 + 0.11776040, # 286 + 0.11791267, # 287 + 0.11772359, # 288 + 0.11737876, # 289 + 0.11733833, # 290 + 0.11731040, # 291 + 0.11726091, # 292 + 0.11707329, # 293 + 0.11678946, # 294 + 0.11693388, # 295 + 0.11678045, # 296 + 0.11675379, # 297 + 0.11666351, # 298 + 0.11667391, # 299 + 0.11636710, # 300 + 0.11617737, # 301 + 0.11615611, # 302 + 0.11620161, # 303 + 0.11619198, # 304 + 0.11583588, # 305 + 0.11551420, # 306 + 0.11560241, # 307 + 0.11551037, # 308 + 0.11544049, # 309 + 0.11551399, # 310 + 0.11532577, # 311 + 0.11518479, # 312 + 0.11500626, # 313 + 0.11487930, # 314 + 0.11468408, # 315 + 0.11454254, # 316 + 0.11434393, # 317 + 0.11423116, # 318 + 0.11400504, # 319 + 0.11357094, # 320 + 0.11347808, # 321 + 0.11344303, # 322 + 0.11348205, # 323 + 0.11331455, # 324 + 0.11318877, # 325 + 0.11316470, # 326 + 0.11324377, # 327 + 0.11302857, # 328 + 0.11275437, # 329 + 0.11280423, # 330 + 0.11273818, # 331 + 0.11255275, # 332 + 0.11247920, # 333 + 0.11242583, # 334 + 0.11219861, # 335 + 0.11199917, # 336 + 0.11170273, # 337 + 0.11176584, # 338 + 0.11186359, # 339 + 0.11158681, # 340 + 0.11140050, # 341 + 0.11143731, # 342 + 0.11145546, # 343 + 0.11133491, # 344 + 0.11095560, # 345 + 0.11073468, # 346 + 0.11084832, # 347 + 0.11083414, # 348 + 0.11066457, # 349 + 0.11055013, # 350 + 0.11072212, # 351 + 0.11059354, # 352 + 0.11038877, # 353 + 0.11034035, # 354 + 0.11051220, # 355 + 0.11047160, # 356 + 0.11040233, # 357 + 0.11038763, # 358 + 0.11029905, # 359 + 0.11023674, # 360 + 0.11026524, # 361 + 0.11027537, # 362 + 0.11027652, # 363 + 0.11019141, # 364 + 0.11021897, # 365 + 0.11014677, # 366 + 0.10990932, # 367 + 0.10974526, # 368 + 0.10983153, # 369 + 0.10978298, # 370 + 0.10958421, # 371 + 0.10963277, # 372 + 0.10978465, # 373 + 0.10959758, # 374 + 0.10952759, # 375 + 0.10929075, # 376 + 0.10924445, # 377 + 0.10948340, # 378 + 0.10932067, # 379 + 0.10926395, # 380 + 0.10918136, # 381 + 0.10912952, # 382 + 0.10914133, # 383 + 0.10911754, # 384 + 0.10908007, # 385 + 0.10894343, # 386 + 0.10885639, # 387 + 0.10877824, # 388 + 0.10869083, # 389 + 0.10865974, # 390 + 0.10867359, # 391 + 0.10860157, # 392 + 0.10852707, # 393 + 0.10851249, # 394 + 0.10838943, # 395 + 0.10830239, # 396 + 0.10821442, # 397 + 0.10817644, # 398 + 0.10813147, # 399 + 0.10797764, # 400 + 0.10799384, # 401 + 0.10800424, # 402 + 0.10791687, # 403 + 0.10787353, # 404 + 0.10781625, # 405 + 0.10782353, # 406 + 0.10788227, # 407 + 0.10786807, # 408 + 0.10775737, # 409 + 0.10779076, # 410 + 0.10786440, # 411 + 0.10781413, # 412 + 0.10764401, # 413 + 0.10749138, # 414 + 0.10740424, # 415 + 0.10741327, # 416 + 0.10745052, # 417 + 0.10743615, # 418 + 0.10742903, # 419 + 0.10738852, # 420 + 0.10735058, # 421 + 0.10741611, # 422 + 0.10737813, # 423 + 0.10722055, # 424 + 0.10723779, # 425 + 0.10739216, # 426 + 0.10725609, # 427 + 0.10703548, # 428 + 0.10710443, # 429 + 0.10713685, # 430 + 0.10706679, # 431 + 0.10704137, # 432 + 0.10709263, # 433 + 0.10704029, # 434 + 0.10695521, # 435 + 0.10696259, # 436 + 0.10684960, # 437 + 0.10692528, # 438 + 0.10699065, # 439 + 0.10684566, # 440 + 0.10675619, # 441 + 0.10671987, # 442 + 0.10681296, # 443 + 0.10683156, # 444 + 0.10667633, # 445 + 0.10656386, # 446 + 0.10655429, # 447 + 0.10657769, # 448 + 0.10657385, # 449 + 0.10658777, # 450 + 0.10648670, # 451 + 0.10637875, # 452 + 0.10638116, # 453 + 0.10640598, # 454 + 0.10638517, # 455 + 0.10631975, # 456 + 0.10622571, # 457 + 0.10620247, # 458 + 0.10622794, # 459 + 0.10621587, # 460 + 0.10616919, # 461 + 0.10610605, # 462 + 0.10606202, # 463 + 0.10607019, # 464 + 0.10608176, # 465 + 0.10606019, # 466 + 0.10607606, # 467 + 0.10606592, # 468 + 0.10603651, # 469 + 0.10598891, # 470 + 0.10596865, # 471 + 0.10600476, # 472 + 0.10598196, # 473 + 0.10601007, # 474 + 0.10597153, # 475 + 0.10589742, # 476 + 0.10591611, # 477 + 0.10589389, # 478 + 0.10589961, # 479 + 0.10598352, # 480 + 0.10596014, # 481 + 0.10595152, # 482 + 0.10590321, # 483 + 0.10584831, # 484 + 0.10578213, # 485 + 0.10575236, # 486 + 0.10573748, # 487 + 0.10571382, # 488 + 0.10569223, # 489 + 0.10559735, # 490 + 0.10560050, # 491 + 0.10558983, # 492 + 0.10555405, # 493 + 0.10551910, # 494 + 0.10555619, # 495 + 0.10559577, # 496 + 0.10549890, # 497 + 0.10542566, # 498 + 0.10539428, # 499 + 0.10540348, # 500 + 0.10540171, # 501 + 0.10535701, # 502 + 0.10528432, # 503 + 0.10530389, # 504 + 0.10534309, # 505 + 0.10532178, # 506 + 0.10528021, # 507 + 0.10525799, # 508 + 0.10523842, # 509 + 0.10530431, # 510 + 0.10527095, # 511 + 0.10520566, # 512 + 0.10521763, # 513 + 0.10522184, # 514 + 0.10525795, # 515 + 0.10527740, # 516 + 0.10525627, # 517 + 0.10521196, # 518 + 0.10515350, # 519 + 0.10520530, # 520 + 0.10517683, # 521 + 0.10513735, # 522 + 0.10516746, # 523 + 0.10518774, # 524 + 0.10513191, # 525 + 0.10505963, # 526 + 0.10511723, # 527 + 0.10515483, # 528 + 0.10511338, # 529 + 0.10509147, # 530 + 0.10502513, # 531 + 0.10499393, # 532 + 0.10496097, # 533 + 0.10495750, # 534 + 0.10498476, # 535 + 0.10491115, # 536 + 0.10496822, # 537 + 0.10498137, # 538 + 0.10494368, # 539 + 0.10496688, # 540 + 0.10485851, # 541 + 0.10480894, # 542 + 0.10487372, # 543 + 0.10484691, # 544 + 0.10479583, # 545 + 0.10476699, # 546 + 0.10476706, # 547 + 0.10476947, # 548 + 0.10475338, # 549 + 0.10475965, # 550 + 0.10472165, # 551 + 0.10474746, # 552 + 0.10471743, # 553 + 0.10471897, # 554 + 0.10470274, # 555 + 0.10469606, # 556 + 0.10469715, # 557 + 0.10462374, # 558 + 0.10459801, # 559 + 0.10456583, # 560 + 0.10452598, # 561 + 0.10450999, # 562 + 0.10450205, # 563 + 0.10444540, # 564 + 0.10439698, # 565 + 0.10441940, # 566 + 0.10444316, # 567 + 0.10444061, # 568 + 0.10440102, # 569 + 0.10438273, # 570 + 0.10442552, # 571 + 0.10450434, # 572 + 0.10441361, # 573 + 0.10442115, # 574 + 0.10433120, # 575 + 0.10440910, # 576 + 0.10431998, # 577 + 0.10435033, # 578 + 0.10435512, # 579 + 0.10430353, # 580 + 0.10432799, # 581 + 0.10428280, # 582 + 0.10426317, # 583 + 0.10429593, # 584 + 0.10418509, # 585 + 0.10413184, # 586 + 0.10419277, # 587 + 0.10418272, # 588 + 0.10416274, # 589 + 0.10422818, # 590 + 0.10409201, # 591 + 0.10408887, # 592 + 0.10414507, # 593 + 0.10412048, # 594 + 0.10422706, # 595 + 0.10417059, # 596 + 0.10407026, # 597 + 0.10409717, # 598 + 0.10413898, # 599 + 0.10404723, # 600 + 0.10405013, # 601 + 0.10399276, # 602 + 0.10400208, # 603 + 0.10401473, # 604 + 0.10394792, # 605 + 0.10386808, # 606 + 0.10390975, # 607 + 0.10398703, # 608 + 0.10399577, # 609 + 0.10395995, # 610 + 0.10394132, # 611 + 0.10378862, # 612 + 0.10388868, # 613 + 0.10391552, # 614 + 0.10385918, # 615 + 0.10378513, # 616 + 0.10365566, # 617 + 0.10371649, # 618 + 0.10374701, # 619 + 0.10381316, # 620 + 0.10375523, # 621 + 0.10370384, # 622 + 0.10369996, # 623 + 0.10371610, # 624 + 0.10374524, # 625 + 0.10363466, # 626 + 0.10361500, # 627 + 0.10370285, # 628 + 0.10362643, # 629 + 0.10363261, # 630 + 0.10373675, # 631 + 0.10362317, # 632 + 0.10352046, # 633 + 0.10355930, # 634 + 0.10345156, # 635 + 0.10349583, # 636 + 0.10352859, # 637 + 0.10349706, # 638 + 0.10364620, # 639 + 0.10345815, # 640 + 0.10344765, # 641 + 0.10358971, # 642 + 0.10350276, # 643 + 0.10351868, # 644 + 0.10343172, # 645 + 0.10348772, # 646 + 0.10342972, # 647 + 0.10330989, # 648 + 0.10346134, # 649 + 0.10331447, # 650 + 0.10329499, # 651 + 0.10321036, # 652 + 0.10330188, # 653 + 0.10324574, # 654 + 0.10324087, # 655 + 0.10329606, # 656 + 0.10337522, # 657 + 0.10327112, # 658 + 0.10334654, # 659 + 0.10313998, # 660 + 0.10328594, # 661 + 0.10326114, # 662 + 0.10336397, # 663 + 0.10335065, # 664 + 0.10322537, # 665 + 0.10322407, # 666 + 0.10325425, # 667 + 0.10321393, # 668 + 0.10300393, # 669 + 0.10302337, # 670 + 0.10317033, # 671 + 0.10322745, # 672 + 0.10317544, # 673 + 0.10298567, # 674 + 0.10301040, # 675 + 0.10314990, # 676 + 0.10315968, # 677 + 0.10309910, # 678 + 0.10315808, # 679 + 0.10294108, # 680 + 0.10302393, # 681 + 0.10308478, # 682 + 0.10293319, # 683 + 0.10309217, # 684 + 0.10301792, # 685 + 0.10297502, # 686 + 0.10290718, # 687 + 0.10311840, # 688 + 0.10298816, # 689 + 0.10292143, # 690 + 0.10307619, # 691 + 0.10317079, # 692 + 0.10283321, # 693 + 0.10275178, # 694 + 0.10296311, # 695 + 0.10303299, # 696 + 0.10302904, # 697 + 0.10298820, # 698 + 0.10293310, # 699 + 0.10283558, # 700 + 0.10290125, # 701 + 0.10297658, # 702 + 0.10301197, # 703 + 0.10279121, # 704 + 0.10263000, # 705 + 0.10257784, # 706 + 0.10291681, # 707 + 0.10270598, # 708 + 0.10270220, # 709 + 0.10269327, # 710 + 0.10275455, # 711 + 0.10278142, # 712 + 0.10263198, # 713 + 0.10273858, # 714 + 0.10268672, # 715 + 0.10264462, # 716 + 0.10263580, # 717 + 0.10256177, # 718 + 0.10274763, # 719 + 0.10249163, # 720 + 0.10247151, # 721 + 0.10221286, # 722 + 0.10270146, # 723 + 0.10284158, # 724 + 0.10296148, # 725 + 0.10238723, # 726 + 0.10253821, # 727 + 0.10293624, # 728 + 0.10215732, # 729 + 0.10221114, # 730 + 0.10251801, # 731 + 0.10244159, # 732 + 0.10264413, # 733 + 0.10226905, # 734 + 0.10224586, # 735 + 0.10249297, # 736 + 0.10220062, # 737 + 0.10263832, # 738 + 0.10257841, # 739 + 0.10269500, # 740 + 0.10257091, # 741 + 0.10239749, # 742 + 0.10249087, # 743 + 0.10225421, # 744 + 0.10275467, # 745 + 0.10280666, # 746 + 0.10216219, # 747 + 0.10173511, # 748 + 0.10217178, # 749 + 0.10258940, # 750 + 0.10232844, # 751 + 0.10219844, # 752 + 0.10227283, # 753 + 0.10212050, # 754 + 0.10208084, # 755 + 0.10240609, # 756 + 0.10219252, # 757 + 0.10230191, # 758 + 0.10212155, # 759 + 0.10290334, # 760 + 0.10231823, # 761 + 0.10254757, # 762 + 0.10271888, # 763 + 0.10255648, # 764 + 0.10224945, # 765 + 0.10243999, # 766 + 0.10219798, # 767 + 0.10204963, # 768 + 0.10198995, # 769 + 0.10205689, # 770 + 0.10239633, # 771 + 0.10208962, # 772 + 0.10183527, # 773 + 0.10220045, # 774 + 0.10227746, # 775 + 0.10188597, # 776 + 0.10218168, # 777 + 0.10231313, # 778 + 0.10206785, # 779 + 0.10219568, # 780 + 0.10182638, # 781 + 0.10209918, # 782 + 0.10217670, # 783 + 0.10253010, # 784 + 0.10202307, # 785 + 0.10232489, # 786 + 0.10174655, # 787 + 0.10211779, # 788 + 0.10204213, # 789 + 0.10210736, # 790 + 0.10220964, # 791 + 0.10229066, # 792 + 0.10195705, # 793 + 0.10211666, # 794 + 0.10184597, # 795 + 0.10216660, # 796 + 0.10196429, # 797 + 0.10191380, # 798 + 0.10167532, # 799 + 0.10168394, # 800 + 0.10214084, # 801 + 0.10203334, # 802 + 0.10206741, # 803 + 0.10173347, # 804 + 0.10208326, # 805 + 0.10188724, # 806 + 0.10179023, # 807 + 0.10185154, # 808 + 0.10203225, # 809 + 0.10195532, # 810 + 0.10173214, # 811 + 0.10187767, # 812 + 0.10166227, # 813 + 0.10203921, # 814 + 0.10140235, # 815 + 0.10211105, # 816 + 0.10186363, # 817 + 0.10197284, # 818 + 0.10193884, # 819 + 0.10236855, # 820 + 0.10244927, # 821 + 0.10240881, # 822 + 0.10247319, # 823 + 0.10190377, # 824 + 0.10188198, # 825 + 0.10215121, # 826 + 0.10210479, # 827 + 0.10192668, # 828 + 0.10248238, # 829 + 0.10209073, # 830 + 0.10189674, # 831 + 0.10185616, # 832 + 0.10244868, # 833 + 0.10208262, # 834 + 0.10200351, # 835 + 0.10222803, # 836 + 0.10211913, # 837 + 0.10184417, # 838 + 0.10209233, # 839 + 0.10219872, # 840 + 0.10230850, # 841 + 0.10218479, # 842 + 0.10204271, # 843 + 0.10205131, # 844 + 0.10185181, # 845 + 0.10177322, # 846 + 0.10195036, # 847 + 0.10193752, # 848 + 0.10192814, # 849 + 0.10174366, # 850 + 0.10197464, # 851 + 0.10193539, # 852 + 0.10186732, # 853 + 0.10228306, # 854 + 0.10179030, # 855 + 0.10190728, # 856 + 0.10208709, # 857 + 0.10204337, # 858 + 0.10162310, # 859 + 0.10181919, # 860 + 0.10192977, # 861 + 0.10185334, # 862 + 0.10179699, # 863 + 0.10184594, # 864 + 0.10187183, # 865 + 0.10161917, # 866 + 0.10177174, # 867 + 0.10184055, # 868 + 0.10165141, # 869 + 0.10192377, # 870 + 0.10172143, # 871 + 0.10164951, # 872 + 0.10172283, # 873 + 0.10163590, # 874 + 0.10140201, # 875 + 0.10155318, # 876 + 0.10159361, # 877 + 0.10158812, # 878 + 0.10170086, # 879 + 0.10164394, # 880 + 0.10167694, # 881 + 0.10156531, # 882 + 0.10152174, # 883 + 0.10166658, # 884 + 0.10165911, # 885 + 0.10164242, # 886 + 0.10151882, # 887 + 0.10155390, # 888 + 0.10157637, # 889 + 0.10160950, # 890 + 0.10145565, # 891 + 0.10158632, # 892 + 0.10134549, # 893 + 0.10150795, # 894 + 0.10146968, # 895 + 0.10145706, # 896 + 0.10152639, # 897 + 0.10147964, # 898 + 0.10146388, # 899 + 0.10136951, # 900 + 0.10146732, # 901 + 0.10137076, # 902 + 0.10131131, # 903 + 0.10135272, # 904 + 0.10135834, # 905 + 0.10130318, # 906 + 0.10130568, # 907 + 0.10130595, # 908 + 0.10131591, # 909 + 0.10129960, # 910 + 0.10123795, # 911 + 0.10128356, # 912 + 0.10124997, # 913 + 0.10123796, # 914 + 0.10115332, # 915 + 0.10120629, # 916 + 0.10117435, # 917 + 0.10120545, # 918 + 0.10118203, # 919 + 0.10114875, # 920 + 0.10121421, # 921 + 0.10116769, # 922 + 0.10111805, # 923 + 0.10114565, # 924 + 0.10106022, # 925 + 0.10115269, # 926 + 0.10113272, # 927 + 0.10106346, # 928 + 0.10108723, # 929 + 0.10104445, # 930 + 0.10107876, # 931 + 0.10109219, # 932 + 0.10104373, # 933 + 0.10105200, # 934 + 0.10102741, # 935 + 0.10102766, # 936 + 0.10100503, # 937 + 0.10099411, # 938 + 0.10100043, # 939 + 0.10096873, # 940 + 0.10101967, # 941 + 0.10097695, # 942 + 0.10101393, # 943 + 0.10096938, # 944 + 0.10098623, # 945 + 0.10102114, # 946 + 0.10100755, # 947 + 0.10099915, # 948 + 0.10105830, # 949 + 0.10104325, # 950 + 0.10110811, # 951 + 0.10111991, # 952 + 0.10106342, # 953 + 0.10103641, # 954 + 0.10113621, # 955 + 0.10109261, # 956 + 0.10107113, # 957 + 0.10112976, # 958 + 0.10119345, # 959 + 0.10120160, # 960 + 0.10115062, # 961 + 0.10118692, # 962 + 0.10116119, # 963 + 0.10115292, # 964 + 0.10118227, # 965 + 0.10121968, # 966 + 0.10120974, # 967 + 0.10125394, # 968 + 0.10117009, # 969 + 0.10117148, # 970 + 0.10121981, # 971 + 0.10120348, # 972 + 0.10122971, # 973 + 0.10120593, # 974 + 0.10120856, # 975 + 0.10120535, # 976 + 0.10117494, # 977 + 0.10118291, # 978 + 0.10115129, # 979 + 0.10121886, # 980 + 0.10118044, # 981 + 0.10116783, # 982 + 0.10118880, # 983 + 0.10115660, # 984 + 0.10117608, # 985 + 0.10115872, # 986 + 0.10115774, # 987 + 0.10114689, # 988 + 0.10115415, # 989 + 0.10114201, # 990 + 0.10115267, # 991 + 0.10116636, # 992 + 0.10105962, # 993 + 0.10110580, # 994 + 0.10110690, # 995 + 0.10106508, # 996 + 0.10116412, # 997 + 0.10116309, # 998 + 0.10109267, # 999 + 0.10106873, # 1000 + 0.10109191, # 1001 + 0.10102541, # 1002 + 0.10104172, # 1003 + 0.10109221, # 1004 + 0.10103322, # 1005 + 0.10099750, # 1006 + 0.10102608, # 1007 + 0.10104721, # 1008 + 0.10102120, # 1009 + 0.10104491, # 1010 + 0.10101208, # 1011 + 0.10101037, # 1012 + 0.10101439, # 1013 + 0.10100136, # 1014 + 0.10102365, # 1015 + 0.10099655, # 1016 + 0.10102355, # 1017 + 0.10099024, # 1018 + 0.10097294, # 1019 + 0.10099455, # 1020 + 0.10097753, # 1021 + 0.10097018, # 1022 + 0.10098375, # 1023 + 0.10100965, # 1024 + 0.10095444, # 1025 + 0.10096739, # 1026 + 0.10093648, # 1027 + 0.10091875, # 1028 + 0.10092789, # 1029 + 0.10096198, # 1030 + 0.10090630, # 1031 + 0.10089561, # 1032 + 0.10091318, # 1033 + 0.10090923, # 1034 + 0.10091154, # 1035 + 0.10089304, # 1036 + 0.10087991, # 1037 + 0.10089700, # 1038 + 0.10088445, # 1039 + 0.10089587, # 1040 + 0.10089121, # 1041 + 0.10090174, # 1042 + 0.10089468, # 1043 + 0.10084169, # 1044 + 0.10089481, # 1045 + 0.10089046, # 1046 + 0.10089672, # 1047 + 0.10086608, # 1048 + 0.10088162, # 1049 + 0.10082422, # 1050 + 0.10081317, # 1051 + 0.10084312, # 1052 + 0.10079768, # 1053 + 0.10081474, # 1054 + 0.10080018, # 1055 + 0.10081413, # 1056 + 0.10085282, # 1057 + 0.10080118, # 1058 + 0.10075540, # 1059 + 0.10080424, # 1060 + 0.10075228, # 1061 + 0.10074009, # 1062 + 0.10075978, # 1063 + 0.10077612, # 1064 + 0.10076513, # 1065 + 0.10076963, # 1066 + 0.10075819, # 1067 + 0.10074968, # 1068 + 0.10072975, # 1069 + 0.10072452, # 1070 + 0.10071510, # 1071 + 0.10071951, # 1072 + 0.10072941, # 1073 + 0.10069170, # 1074 + 0.10071488, # 1075 + 0.10074009, # 1076 + 0.10069585, # 1077 + 0.10064729, # 1078 + 0.10067416, # 1079 + 0.10065520, # 1080 + 0.10063686, # 1081 + 0.10067202, # 1082 + 0.10069142, # 1083 + 0.10069347, # 1084 + 0.10067222, # 1085 + 0.10061254, # 1086 + 0.10060847, # 1087 + 0.10061663, # 1088 + 0.10059886, # 1089 + 0.10059519, # 1090 + 0.10064731, # 1091 + 0.10066356, # 1092 + 0.10062277, # 1093 + 0.10062280, # 1094 + 0.10060910, # 1095 + 0.10060875, # 1096 + 0.10058437, # 1097 + 0.10057550, # 1098 + 0.10055614, # 1099 + 0.10054359, # 1100 + 0.10057009, # 1101 + 0.10058133, # 1102 + 0.10060722, # 1103 + 0.10060167, # 1104 + 0.10056464, # 1105 + 0.10059611, # 1106 + 0.10061464, # 1107 + 0.10063036, # 1108 + 0.10060766, # 1109 + 0.10061995, # 1110 + 0.10058168, # 1111 + 0.10061361, # 1112 + 0.10059057, # 1113 + 0.10058484, # 1114 + 0.10054815, # 1115 + 0.10054767, # 1116 + 0.10054699, # 1117 + 0.10055894, # 1118 + 0.10058079, # 1119 + 0.10054865, # 1120 + 0.10052995, # 1121 + 0.10051630, # 1122 + 0.10050457, # 1123 + 0.10047217, # 1124 + 0.10051274, # 1125 + 0.10050721, # 1126 + 0.10046918, # 1127 + 0.10045508, # 1128 + 0.10045136, # 1129 + 0.10049447, # 1130 + 0.10049572, # 1131 + 0.10048929, # 1132 + 0.10048218, # 1133 + 0.10046645, # 1134 + 0.10049758, # 1135 + 0.10046149, # 1136 + 0.10044382, # 1137 + 0.10045663, # 1138 + 0.10044645, # 1139 + 0.10042503, # 1140 + 0.10043983, # 1141 + 0.10043466, # 1142 + 0.10044804, # 1143 + 0.10039974, # 1144 + 0.10039313, # 1145 + 0.10038872, # 1146 + 0.10038752, # 1147 + 0.10035551, # 1148 + 0.10036389, # 1149 + 0.10035150, # 1150 + 0.10033647, # 1151 + 0.10035118, # 1152 + 0.10032485, # 1153 + 0.10032513, # 1154 + 0.10034580, # 1155 + 0.10031085, # 1156 + 0.10030024, # 1157 + 0.10032793, # 1158 + 0.10031648, # 1159 + 0.10032004, # 1160 + 0.10033011, # 1161 + 0.10031394, # 1162 + 0.10029340, # 1163 + 0.10031880, # 1164 + 0.10034745, # 1165 + 0.10030310, # 1166 + 0.10028245, # 1167 + 0.10030444, # 1168 + 0.10032980, # 1169 + 0.10029375, # 1170 + 0.10028972, # 1171 + 0.10030616, # 1172 + 0.10026693, # 1173 + 0.10026531, # 1174 + 0.10023433, # 1175 + 0.10025538, # 1176 + 0.10028412, # 1177 + 0.10027363, # 1178 + 0.10025863, # 1179 + 0.10024930, # 1180 + 0.10023901, # 1181 + 0.10023739, # 1182 + 0.10021083, # 1183 + 0.10019022, # 1184 + 0.10020055, # 1185 + 0.10022346, # 1186 + 0.10020601, # 1187 + 0.10022296, # 1188 + 0.10021224, # 1189 + 0.10020562, # 1190 + 0.10018215, # 1191 + 0.10021693, # 1192 + 0.10019360, # 1193 + 0.10014673, # 1194 + 0.10016553, # 1195 + 0.10017725, # 1196 + 0.10014219, # 1197 + 0.10018972, # 1198 + 0.10019273, # 1199 + 0.10015863, # 1200 + 0.10016209, # 1201 + 0.10014085, # 1202 + 0.10013396, # 1203 + 0.10011375, # 1204 + 0.10013001, # 1205 + 0.10012621, # 1206 + 0.10012897, # 1207 + 0.10012300, # 1208 + 0.10013701, # 1209 + 0.10012236, # 1210 + 0.10009159, # 1211 + 0.10008686, # 1212 + 0.10006940, # 1213 + 0.10007205, # 1214 + 0.10006854, # 1215 + 0.10006253, # 1216 + 0.10009324, # 1217 + 0.10009590, # 1218 + 0.10007560, # 1219 + 0.10007756, # 1220 + 0.10007621, # 1221 + 0.10006852, # 1222 + 0.10004998, # 1223 + 0.10004709, # 1224 + 0.10005520, # 1225 + 0.10005052, # 1226 + 0.10004727, # 1227 + 0.10001506, # 1228 + 0.10001724, # 1229 + 0.10006437, # 1230 + 0.10007939, # 1231 + 0.10005832, # 1232 + 0.10004283, # 1233 + 0.10003169, # 1234 + 0.10002357, # 1235 + 0.10002196, # 1236 + 0.09998305, # 1237 + 0.09997607, # 1238 + 0.09998777, # 1239 + 0.09997283, # 1240 + 0.09998190, # 1241 + 0.10000737, # 1242 + 0.09997105, # 1243 + 0.09993727, # 1244 + 0.09993984, # 1245 + 0.09996587, # 1246 + 0.09997357, # 1247 + 0.09995922, # 1248 + 0.09995725, # 1249 + 0.09997510, # 1250 + 0.09996997, # 1251 + 0.09993141, # 1252 + 0.09993352, # 1253 + 0.09994643, # 1254 + 0.09996704, # 1255 + 0.09993461, # 1256 + 0.09989146, # 1257 + 0.09991634, # 1258 + 0.09990423, # 1259 + 0.09990721, # 1260 + 0.09989924, # 1261 + 0.09986722, # 1262 + 0.09989509, # 1263 + 0.09992988, # 1264 + 0.09993232, # 1265 + 0.09989496, # 1266 + 0.09989461, # 1267 + 0.09992280, # 1268 + 0.09991983, # 1269 + 0.09990987, # 1270 + 0.09988275, # 1271 + 0.09987343, # 1272 + 0.09986501, # 1273 + 0.09986928, # 1274 + 0.09984217, # 1275 + 0.09982880, # 1276 + 0.09983317, # 1277 + 0.09985770, # 1278 + 0.09984147, # 1279 + 0.09980244, # 1280 + 0.09982714, # 1281 + 0.09981963, # 1282 + 0.09981832, # 1283 + 0.09986185, # 1284 + 0.09984367, # 1285 + 0.09978614, # 1286 + 0.09977494, # 1287 + 0.09979524, # 1288 + 0.09980967, # 1289 + 0.09979310, # 1290 + 0.09980297, # 1291 + 0.09982419, # 1292 + 0.09979586, # 1293 + 0.09977759, # 1294 + 0.09974540, # 1295 + 0.09978536, # 1296 + 0.09979473, # 1297 + 0.09976561, # 1298 + 0.09976336, # 1299 + 0.09977801, # 1300 + 0.09977631, # 1301 + 0.09974140, # 1302 + 0.09975116, # 1303 + 0.09976737, # 1304 + 0.09974820, # 1305 + 0.09975940, # 1306 + 0.09978772, # 1307 + 0.09976031, # 1308 + 0.09972599, # 1309 + 0.09973804, # 1310 + 0.09974022, # 1311 + 0.09973604, # 1312 + 0.09972275, # 1313 + 0.09972191, # 1314 + 0.09972971, # 1315 + 0.09971628, # 1316 + 0.09973768, # 1317 + 0.09974259, # 1318 + 0.09973093, # 1319 + 0.09971447, # 1320 + 0.09972228, # 1321 + 0.09971557, # 1322 + 0.09971223, # 1323 + 0.09969288, # 1324 + 0.09968927, # 1325 + 0.09968165, # 1326 + 0.09967315, # 1327 + 0.09967751, # 1328 + 0.09966145, # 1329 + 0.09966385, # 1330 + 0.09964629, # 1331 + 0.09965105, # 1332 + 0.09964945, # 1333 + 0.09966032, # 1334 + 0.09966824, # 1335 + 0.09962832, # 1336 + 0.09964064, # 1337 + 0.09964412, # 1338 + 0.09959093, # 1339 + 0.09959924, # 1340 + 0.09960221, # 1341 + 0.09958238, # 1342 + 0.09959311, # 1343 + 0.09959633, # 1344 + 0.09960798, # 1345 + 0.09959922, # 1346 + 0.09958642, # 1347 + 0.09956165, # 1348 + 0.09958000, # 1349 + 0.09957628, # 1350 + 0.09957081, # 1351 + 0.09957493, # 1352 + 0.09954328, # 1353 + 0.09950255, # 1354 + 0.09946147, # 1355 + 0.09948441, # 1356 + 0.09948918, # 1357 + 0.09946480, # 1358 + 0.09945212, # 1359 + 0.09944770, # 1360 + 0.09944927, # 1361 + 0.09941499, # 1362 + 0.09941837, # 1363 + 0.09942911, # 1364 + 0.09942238, # 1365 + 0.09941562, # 1366 + 0.09943005, # 1367 + 0.09944074, # 1368 + 0.09943761, # 1369 + 0.09941321, # 1370 + 0.09939350, # 1371 + 0.09937876, # 1372 + 0.09935332, # 1373 + 0.09935305, # 1374 + 0.09933363, # 1375 + 0.09929748, # 1376 + 0.09927980, # 1377 + 0.09929866, # 1378 + 0.09931021, # 1379 + 0.09933413, # 1380 + 0.09928158, # 1381 + 0.09926815, # 1382 + 0.09927087, # 1383 + 0.09926888, # 1384 + 0.09927645, # 1385 + 0.09928643, # 1386 + 0.09929522, # 1387 + 0.09929387, # 1388 + 0.09931082, # 1389 + 0.09929849, # 1390 + 0.09929269, # 1391 + 0.09930465, # 1392 + 0.09928745, # 1393 + 0.09926637, # 1394 + 0.09925904, # 1395 + 0.09928371, # 1396 + 0.09928536, # 1397 + 0.09921905, # 1398 + 0.09918685, # 1399 + 0.09922948, # 1400 + 0.09923604, # 1401 + 0.09920477, # 1402 + 0.09916711, # 1403 + 0.09918437, # 1404 + 0.09920853, # 1405 + 0.09918493, # 1406 + 0.09917945, # 1407 + 0.09922255, # 1408 + 0.09920830, # 1409 + 0.09919540, # 1410 + 0.09917072, # 1411 + 0.09918080, # 1412 + 0.09917326, # 1413 + 0.09918902, # 1414 + 0.09916061, # 1415 + 0.09916747, # 1416 + 0.09916478, # 1417 + 0.09919929, # 1418 + 0.09918245, # 1419 + 0.09918582, # 1420 + 0.09917807, # 1421 + 0.09915213, # 1422 + 0.09912179, # 1423 + 0.09916388, # 1424 + 0.09914658, # 1425 + 0.09917089, # 1426 + 0.09917629, # 1427 + 0.09918895, # 1428 + 0.09917317, # 1429 + 0.09913195, # 1430 + 0.09911514, # 1431 + 0.09914577, # 1432 + 0.09916289, # 1433 + 0.09915647, # 1434 + 0.09912564, # 1435 + 0.09913216, # 1436 + 0.09917456, # 1437 + 0.09913723, # 1438 + 0.09911042, # 1439 + 0.09912156, # 1440 + 0.09912780, # 1441 + 0.09913757, # 1442 + 0.09914246, # 1443 + 0.09912176, # 1444 + 0.09909273, # 1445 + 0.09912384, # 1446 + 0.09912652, # 1447 + 0.09913679, # 1448 + 0.09913630, # 1449 + 0.09910902, # 1450 + 0.09912878, # 1451 + 0.09912859, # 1452 + 0.09911195, # 1453 + 0.09912758, # 1454 + 0.09906498, # 1455 + 0.09910411, # 1456 + 0.09911074, # 1457 + 0.09910327, # 1458 + 0.09909128, # 1459 + 0.09908992, # 1460 + 0.09912336, # 1461 + 0.09906566, # 1462 + 0.09911966, # 1463 + 0.09907474, # 1464 + 0.09908610, # 1465 + 0.09909963, # 1466 + 0.09910967, # 1467 + 0.09911203, # 1468 + 0.09907787, # 1469 + 0.09910982, # 1470 + 0.09909780, # 1471 + 0.09906706, # 1472 + 0.09910511, # 1473 + 0.09909491, # 1474 + 0.09909333, # 1475 + 0.09910351, # 1476 + 0.09910832, # 1477 + 0.09911350, # 1478 + 0.09912560, # 1479 + 0.09908690, # 1480 + 0.09912472, # 1481 + 0.09908880, # 1482 + 0.09909388, # 1483 + 0.09910202, # 1484 + 0.09907796, # 1485 + 0.09909292, # 1486 + 0.09907948, # 1487 + 0.09905823, # 1488 + 0.09911071, # 1489 + 0.09910180, # 1490 + 0.09910674, # 1491 + 0.09909670, # 1492 + 0.09907112, # 1493 + 0.09907787, # 1494 + 0.09907124, # 1495 + 0.09909126, # 1496 + 0.09910936, # 1497 + 0.09909928, # 1498 + 0.09912371, # 1499 + 0.09910286, # 1500 + 0.09912384, # 1501 + 0.09910633, # 1502 + 0.09909866, # 1503 + 0.09907085, # 1504 + 0.09904145, # 1505 + 0.09908165, # 1506 + 0.09904909, # 1507 + 0.09906504, # 1508 + 0.09909424, # 1509 + 0.09904735, # 1510 + 0.09909414, # 1511 + 0.09908766, # 1512 + 0.09903077, # 1513 + 0.09907413, # 1514 + 0.09906846, # 1515 + 0.09903392, # 1516 + 0.09905918, # 1517 + 0.09906081, # 1518 + 0.09905459, # 1519 + 0.09905053, # 1520 + 0.09906492, # 1521 + 0.09911673, # 1522 + 0.09904888, # 1523 + 0.09905840, # 1524 + 0.09904048, # 1525 + 0.09904682, # 1526 + 0.09904513, # 1527 + 0.09902151, # 1528 + 0.09907133, # 1529 + 0.09902170, # 1530 + 0.09900837, # 1531 + 0.09905157, # 1532 + 0.09906240, # 1533 + 0.09902329, # 1534 + 0.09900644, # 1535 + 0.09902776, # 1536 + 0.09898500, # 1537 + 0.09899986, # 1538 + 0.09903794, # 1539 + 0.09905073, # 1540 + 0.09901776, # 1541 + 0.09901269, # 1542 + 0.09897997, # 1543 + 0.09901475, # 1544 + 0.09900950, # 1545 + 0.09901184, # 1546 + 0.09902765, # 1547 + 0.09898526, # 1548 + 0.09898308, # 1549 + 0.09901452, # 1550 + 0.09903443, # 1551 + 0.09903281, # 1552 + 0.09898198, # 1553 + 0.09898915, # 1554 + 0.09898431, # 1555 + 0.09902891, # 1556 + 0.09905049, # 1557 + 0.09901545, # 1558 + 0.09899843, # 1559 + 0.09899662, # 1560 + 0.09900479, # 1561 + 0.09903050, # 1562 + 0.09901586, # 1563 + 0.09899173, # 1564 + 0.09899281, # 1565 + 0.09903279, # 1566 + 0.09897612, # 1567 + 0.09900737, # 1568 + 0.09902394, # 1569 + 0.09893120, # 1570 + 0.09903481, # 1571 + 0.09902333, # 1572 + 0.09898349, # 1573 + 0.09897793, # 1574 + 0.09896845, # 1575 + 0.09896109, # 1576 + 0.09895195, # 1577 + 0.09899737, # 1578 + 0.09898972, # 1579 + 0.09896078, # 1580 + 0.09896633, # 1581 + 0.09897226, # 1582 + 0.09896063, # 1583 + 0.09901823, # 1584 + 0.09898574, # 1585 + 0.09895386, # 1586 + 0.09899609, # 1587 + 0.09896475, # 1588 + 0.09891485, # 1589 + 0.09899436, # 1590 + 0.09894309, # 1591 + 0.09893155, # 1592 + 0.09894851, # 1593 + 0.09897632, # 1594 + 0.09892361, # 1595 + 0.09898662, # 1596 + 0.09898593, # 1597 + 0.09898229, # 1598 + 0.09893760, # 1599 + 0.09896076, # 1600 + 0.09893733, # 1601 + 0.09896883, # 1602 + 0.09895956, # 1603 + 0.09899019, # 1604 + 0.09894582, # 1605 + 0.09893110, # 1606 + 0.09896748, # 1607 + 0.09895297, # 1608 + 0.09893824, # 1609 + 0.09896496, # 1610 + 0.09896095, # 1611 + 0.09897460, # 1612 + 0.09896796, # 1613 + 0.09894395, # 1614 + 0.09893427, # 1615 + 0.09895382, # 1616 + 0.09896404, # 1617 + 0.09895310, # 1618 + 0.09888104, # 1619 + 0.09887760, # 1620 + 0.09894148, # 1621 + 0.09889068, # 1622 + 0.09890548, # 1623 + 0.09892432, # 1624 + 0.09889073, # 1625 + 0.09891096, # 1626 + 0.09885164, # 1627 + 0.09888890, # 1628 + 0.09891508, # 1629 + 0.09887395, # 1630 + 0.09891045, # 1631 + 0.09888123, # 1632 + 0.09885649, # 1633 + 0.09890396, # 1634 + 0.09887931, # 1635 + 0.09886318, # 1636 + 0.09888185, # 1637 + 0.09882223, # 1638 + 0.09886559, # 1639 + 0.09879718, # 1640 + 0.09882799, # 1641 + 0.09880458, # 1642 + 0.09884304, # 1643 + 0.09886837, # 1644 + 0.09886796, # 1645 + 0.09874658, # 1646 + 0.09878013, # 1647 + 0.09884352, # 1648 + 0.09878442, # 1649 + 0.09886187, # 1650 + 0.09878286, # 1651 + 0.09883070, # 1652 + 0.09875150, # 1653 + 0.09875591, # 1654 + 0.09877482, # 1655 + 0.09876626, # 1656 + 0.09875308, # 1657 + 0.09873266, # 1658 + 0.09867192, # 1659 + 0.09875647, # 1660 + 0.09871456, # 1661 + 0.09874214, # 1662 + 0.09870728, # 1663 + 0.09866012, # 1664 + 0.09874921, # 1665 + 0.09873254, # 1666 + 0.09863266, # 1667 + 0.09868740, # 1668 + 0.09870660, # 1669 + 0.09875217, # 1670 + 0.09872818, # 1671 + 0.09865377, # 1672 + 0.09867028, # 1673 + 0.09869386, # 1674 + 0.09868054, # 1675 + 0.09865505, # 1676 + 0.09869040, # 1677 + 0.09867970, # 1678 + 0.09871797, # 1679 + 0.09863467, # 1680 + 0.09865129, # 1681 + 0.09868434, # 1682 + 0.09860602, # 1683 + 0.09870465, # 1684 + 0.09863552, # 1685 + 0.09866939, # 1686 + 0.09855652, # 1687 + 0.09859698, # 1688 + 0.09858894, # 1689 + 0.09857232, # 1690 + 0.09861912, # 1691 + 0.09856679, # 1692 + 0.09857630, # 1693 + 0.09861010, # 1694 + 0.09855852, # 1695 + 0.09857933, # 1696 + 0.09860116, # 1697 + 0.09855470, # 1698 + 0.09859189, # 1699 + 0.09862789, # 1700 + 0.09862709, # 1701 + 0.09861342, # 1702 + 0.09867186, # 1703 + 0.09856629, # 1704 + 0.09864353, # 1705 + 0.09868988, # 1706 + 0.09864353, # 1707 + 0.09860398, # 1708 + 0.09863111, # 1709 + 0.09859586, # 1710 + 0.09867004, # 1711 + 0.09863089, # 1712 + 0.09864284, # 1713 + 0.09864141, # 1714 + 0.09863186, # 1715 + 0.09856946, # 1716 + 0.09857386, # 1717 + 0.09856127, # 1718 + 0.09855511, # 1719 + 0.09856144, # 1720 + 0.09848182, # 1721 + 0.09855195, # 1722 + 0.09853104, # 1723 + 0.09850080, # 1724 + 0.09844651, # 1725 + 0.09846919, # 1726 + 0.09855651, # 1727 + 0.09848597, # 1728 + 0.09847871, # 1729 + 0.09848612, # 1730 + 0.09846992, # 1731 + 0.09851544, # 1732 + 0.09841257, # 1733 + 0.09843661, # 1734 + 0.09846069, # 1735 + 0.09845225, # 1736 + 0.09844814, # 1737 + 0.09847455, # 1738 + 0.09850797, # 1739 + 0.09848455, # 1740 + 0.09846637, # 1741 + 0.09852619, # 1742 + 0.09849478, # 1743 + 0.09852240, # 1744 + 0.09846825, # 1745 + 0.09846541, # 1746 + 0.09849291, # 1747 + 0.09844992, # 1748 + 0.09843496, # 1749 + 0.09842570, # 1750 + 0.09848554, # 1751 + 0.09847254, # 1752 + 0.09847235, # 1753 + 0.09850562, # 1754 + 0.09848717, # 1755 + 0.09845792, # 1756 + 0.09851388, # 1757 + 0.09846477, # 1758 + 0.09848409, # 1759 + 0.09846354, # 1760 + 0.09845326, # 1761 + 0.09853895, # 1762 + 0.09847467, # 1763 + 0.09848467, # 1764 + 0.09845385, # 1765 + 0.09845568, # 1766 + 0.09846354, # 1767 + 0.09845808, # 1768 + 0.09843386, # 1769 + 0.09849157, # 1770 + 0.09843309, # 1771 + 0.09844335, # 1772 + 0.09845602, # 1773 + 0.09843580, # 1774 + 0.09848103, # 1775 + 0.09848766, # 1776 + 0.09846134, # 1777 + 0.09848621, # 1778 + 0.09851361, # 1779 + 0.09848828, # 1780 + 0.09845225, # 1781 + 0.09848085, # 1782 + 0.09852611, # 1783 + 0.09848943, # 1784 + 0.09842503, # 1785 + 0.09842148, # 1786 + 0.09849206, # 1787 + 0.09847262, # 1788 + 0.09844525, # 1789 + 0.09842335, # 1790 + 0.09839316, # 1791 + 0.09842222, # 1792 + 0.09843034, # 1793 + 0.09846014, # 1794 + 0.09844322, # 1795 + 0.09841022, # 1796 + 0.09841211, # 1797 + 0.09842258, # 1798 + 0.09839097, # 1799 + 0.09842979, # 1800 + 0.09834340, # 1801 + 0.09834973, # 1802 + 0.09834669, # 1803 + 0.09834415, # 1804 + 0.09828911, # 1805 + 0.09830739, # 1806 + 0.09831707, # 1807 + 0.09831585, # 1808 + 0.09833576, # 1809 + 0.09826354, # 1810 + 0.09831706, # 1811 + 0.09827729, # 1812 + 0.09830539, # 1813 + 0.09830207, # 1814 + 0.09822750, # 1815 + 0.09827100, # 1816 + 0.09822868, # 1817 + 0.09824160, # 1818 + 0.09825677, # 1819 + 0.09823565, # 1820 + 0.09823567, # 1821 + 0.09825064, # 1822 + 0.09827218, # 1823 + 0.09819866, # 1824 + 0.09822880, # 1825 + 0.09818946, # 1826 + 0.09818036, # 1827 + 0.09812889, # 1828 + 0.09812816, # 1829 + 0.09817047, # 1830 + 0.09819004, # 1831 + 0.09826083, # 1832 + 0.09816036, # 1833 + 0.09806614, # 1834 + 0.09806736, # 1835 + 0.09802477, # 1836 + 0.09798191, # 1837 + 0.09808923, # 1838 + 0.09804813, # 1839 + 0.09794982, # 1840 + 0.09801484, # 1841 + 0.09804671, # 1842 + 0.09804340, # 1843 + 0.09795634, # 1844 + 0.09797090, # 1845 + 0.09794064, # 1846 + 0.09799424, # 1847 + 0.09798742, # 1848 + 0.09800793, # 1849 + 0.09796444, # 1850 + 0.09797746, # 1851 + 0.09794511, # 1852 + 0.09797432, # 1853 + 0.09800017, # 1854 + 0.09795947, # 1855 + 0.09796578, # 1856 + 0.09794079, # 1857 + 0.09793678, # 1858 + 0.09790997, # 1859 + 0.09801331, # 1860 + 0.09786040, # 1861 + 0.09789829, # 1862 + 0.09784212, # 1863 + 0.09783052, # 1864 + 0.09767361, # 1865 + 0.09768276, # 1866 + 0.09770582, # 1867 + 0.09762104, # 1868 + 0.09756633, # 1869 + 0.09755235, # 1870 + 0.09758926, # 1871 + 0.09754185, # 1872 + 0.09753706, # 1873 + 0.09754814, # 1874 + 0.09754484, # 1875 + 0.09765883, # 1876 + 0.09760944, # 1877 + 0.09765878, # 1878 + 0.09777654, # 1879 + 0.09778201, # 1880 + 0.09767505, # 1881 + 0.09769603, # 1882 + 0.09766850, # 1883 + 0.09778363, # 1884 + 0.09776548, # 1885 + 0.09776374, # 1886 + 0.09770215, # 1887 + 0.09771711, # 1888 + 0.09767389, # 1889 + 0.09769561, # 1890 + 0.09764944, # 1891 + 0.09750519, # 1892 + 0.09756387, # 1893 + 0.09764100, # 1894 + 0.09757468, # 1895 + 0.09766387, # 1896 + 0.09765734, # 1897 + 0.09756303, # 1898 + 0.09762346, # 1899 + 0.09752290, # 1900 + 0.09752912, # 1901 + 0.09753202, # 1902 + 0.09756604, # 1903 + 0.09756393, # 1904 + 0.09757457, # 1905 + 0.09761566, # 1906 + 0.09752093, # 1907 + 0.09749774, # 1908 + 0.09764419, # 1909 + 0.09761719, # 1910 + 0.09764110, # 1911 + 0.09769031, # 1912 + 0.09747557, # 1913 + 0.09750744, # 1914 + 0.09751707, # 1915 + 0.09755221, # 1916 + 0.09749291, # 1917 + 0.09744402, # 1918 + 0.09742256, # 1919 + 0.09740070, # 1920 + 0.09738505, # 1921 + 0.09747808, # 1922 + 0.09752124, # 1923 + 0.09747647, # 1924 + 0.09737546, # 1925 + 0.09751952, # 1926 + 0.09749911, # 1927 + 0.09746223, # 1928 + 0.09756185, # 1929 + 0.09752124, # 1930 + 0.09753734, # 1931 + 0.09756952, # 1932 + 0.09758300, # 1933 + 0.09757578, # 1934 + 0.09755891, # 1935 + 0.09758638, # 1936 + 0.09757063, # 1937 + 0.09760176, # 1938 + 0.09753323, # 1939 + 0.09754827, # 1940 + 0.09757204, # 1941 + 0.09755272, # 1942 + 0.09761000, # 1943 + 0.09758683, # 1944 + 0.09753956, # 1945 + 0.09755810, # 1946 + 0.09760199, # 1947 + 0.09762913, # 1948 + 0.09767340, # 1949 + 0.09767393, # 1950 + 0.09767850, # 1951 + 0.09766387, # 1952 + 0.09766958, # 1953 + 0.09768662, # 1954 + 0.09764770, # 1955 + 0.09758941, # 1956 + 0.09755328, # 1957 + 0.09762410, # 1958 + 0.09760445, # 1959 + 0.09760178, # 1960 + 0.09767821, # 1961 + 0.09758502, # 1962 + 0.09754839, # 1963 + 0.09755428, # 1964 + 0.09757822, # 1965 + 0.09757614, # 1966 + 0.09754952, # 1967 + 0.09760527, # 1968 + 0.09767820, # 1969 + 0.09766101, # 1970 + 0.09763066, # 1971 + 0.09764796, # 1972 + 0.09760018, # 1973 + 0.09761498, # 1974 + 0.09769741, # 1975 + 0.09768030, # 1976 + 0.09763452, # 1977 + 0.09762383, # 1978 + 0.09768352, # 1979 + 0.09768023, # 1980 + 0.09759149, # 1981 + 0.09759059, # 1982 + 0.09761647, # 1983 + 0.09763785, # 1984 + 0.09765582, # 1985 + 0.09767613, # 1986 + 0.09760635, # 1987 + 0.09762109, # 1988 + 0.09758481, # 1989 + 0.09756075, # 1990 + 0.09758000, # 1991 + 0.09757106, # 1992 + 0.09760548, # 1993 + 0.09759576, # 1994 + 0.09755369, # 1995 + 0.09757183, # 1996 + 0.09758654, # 1997 + 0.09762560, # 1998 + 0.09758283, # 1999 + 0.09758680, # 2000 + 0.09759153, # 2001 + 0.09753459, # 2002 + 0.09751372, # 2003 + 0.09753604, # 2004 + 0.09752592, # 2005 + 0.09760649, # 2006 + 0.09759941, # 2007 + 0.09752553, # 2008 + 0.09753153, # 2009 + 0.09747514, # 2010 + 0.09746142, # 2011 + 0.09749746, # 2012 + 0.09747018, # 2013 + 0.09752478, # 2014 + 0.09753067, # 2015 + 0.09751935, # 2016 + 0.09740871, # 2017 + 0.09742407, # 2018 + 0.09743496, # 2019 + 0.09739699, # 2020 + 0.09737430, # 2021 + 0.09739481, # 2022 + 0.09747091, # 2023 + 0.09741568, # 2024 + 0.09743191, # 2025 + 0.09749136, # 2026 + 0.09746437, # 2027 + 0.09744797, # 2028 + 0.09747045, # 2029 + 0.09741168, # 2030 + 0.09737722, # 2031 + 0.09744810, # 2032 + 0.09752870, # 2033 + 0.09750970, # 2034 + 0.09745932, # 2035 + 0.09750762, # 2036 + 0.09754585, # 2037 + 0.09757904, # 2038 + 0.09756465, # 2039 + 0.09751406, # 2040 + 0.09751594, # 2041 + 0.09750515, # 2042 + 0.09749812, # 2043 + 0.09755028, # 2044 + 0.09762086, # 2045 + 0.09763000, # 2046 + 0.09757034, # 2047 + 0.09755353, # 2048 + 0.09763986, # 2049 + 0.09763878, # 2050 + 0.09761645, # 2051 + 0.09762172, # 2052 + 0.09755324, # 2053 + 0.09754261, # 2054 + 0.09760983, # 2055 + 0.09759790, # 2056 + 0.09756978, # 2057 + 0.09759482, # 2058 + 0.09759760, # 2059 + 0.09755615, # 2060 + 0.09756962, # 2061 + 0.09762883, # 2062 + 0.09762608, # 2063 + 0.09761332, # 2064 + 0.09765061, # 2065 + 0.09770859, # 2066 + 0.09769092, # 2067 + 0.09769770, # 2068 + 0.09764988, # 2069 + 0.09767224, # 2070 + 0.09773651, # 2071 + 0.09775094, # 2072 + 0.09775399, # 2073 + 0.09773602, # 2074 + 0.09774285, # 2075 + 0.09779896, # 2076 + 0.09776853, # 2077 + 0.09773732, # 2078 + 0.09777492, # 2079 + 0.09778194, # 2080 + 0.09785361, # 2081 + 0.09786050, # 2082 + 0.09774195, # 2083 + 0.09766221, # 2084 + 0.09768072, # 2085 + 0.09775579, # 2086 + 0.09784003, # 2087 + 0.09773394, # 2088 + 0.09771916, # 2089 + 0.09784818, # 2090 + 0.09783700, # 2091 + 0.09772106, # 2092 + 0.09767446, # 2093 + 0.09776228, # 2094 + 0.09784199, # 2095 + 0.09782690, # 2096 + 0.09779563, # 2097 + 0.09777760, # 2098 + 0.09777354, # 2099 + 0.09784122, # 2100 + 0.09781321, # 2101 + 0.09783038, # 2102 + 0.09788162, # 2103 + 0.09787273, # 2104 + 0.09783515, # 2105 + 0.09782163, # 2106 + 0.09793674, # 2107 + 0.09794690, # 2108 + 0.09784570, # 2109 + 0.09786712, # 2110 + 0.09784538, # 2111 + 0.09778790, # 2112 + 0.09790531, # 2113 + 0.09792944, # 2114 + 0.09786042, # 2115 + 0.09782860, # 2116 + 0.09781313, # 2117 + 0.09788841, # 2118 + 0.09772919, # 2119 + 0.09770408, # 2120 + 0.09779999, # 2121 + 0.09784318, # 2122 + 0.09769947, # 2123 + 0.09770365, # 2124 + 0.09773580, # 2125 + 0.09764306, # 2126 + 0.09756358, # 2127 + 0.09749651, # 2128 + 0.09744963, # 2129 + 0.09756470, # 2130 + 0.09771977, # 2131 + 0.09758550, # 2132 + 0.09768637, # 2133 + 0.09764672, # 2134 + 0.09752676, # 2135 + 0.09747013, # 2136 + 0.09750276, # 2137 + 0.09768181, # 2138 + 0.09774577, # 2139 + 0.09753248, # 2140 + 0.09749789, # 2141 + 0.09766586, # 2142 + 0.09768763, # 2143 + 0.09746763, # 2144 + 0.09732841, # 2145 + 0.09753186, # 2146 + 0.09765115, # 2147 + 0.09758215, # 2148 + 0.09757694, # 2149 + 0.09744984, # 2150 + 0.09752602, # 2151 + 0.09768421, # 2152 + 0.09757742, # 2153 + 0.09749108, # 2154 + 0.09751060, # 2155 + 0.09744094, # 2156 + 0.09757256, # 2157 + 0.09766121, # 2158 + 0.09753778, # 2159 + 0.09760175, # 2160 + 0.09775775, # 2161 + 0.09788703, # 2162 + 0.09782367, # 2163 + 0.09767449, # 2164 + 0.09754017, # 2165 + 0.09765825, # 2166 + 0.09766968, # 2167 + 0.09763328, # 2168 + 0.09763909, # 2169 + 0.09763323, # 2170 + 0.09765903, # 2171 + 0.09751178, # 2172 + 0.09758728, # 2173 + 0.09779772, # 2174 + 0.09793930, # 2175 + 0.09799356, # 2176 + 0.09797891, # 2177 + 0.09782440, # 2178 + 0.09769183, # 2179 + 0.09764094, # 2180 + 0.09779197, # 2181 + 0.09780457, # 2182 + 0.09778975, # 2183 + 0.09775484, # 2184 + 0.09774012, # 2185 + 0.09770555, # 2186 + 0.09767472, # 2187 + 0.09772798, # 2188 + 0.09793769, # 2189 + 0.09799210, # 2190 + 0.09780354, # 2191 + 0.09777517, # 2192 + 0.09781890, # 2193 + 0.09774948, # 2194 + 0.09776483, # 2195 + 0.09784012, # 2196 + 0.09788205, # 2197 + 0.09782235, # 2198 + 0.09787946, # 2199 + 0.09792460, # 2200 + 0.09784315, # 2201 + 0.09783775, # 2202 + 0.09785107, # 2203 + 0.09813007, # 2204 + 0.09800378, # 2205 + 0.09796090, # 2206 + 0.09797277, # 2207 + 0.09802572, # 2208 + 0.09800370, # 2209 + 0.09794560, # 2210 + 0.09792338, # 2211 + 0.09815762, # 2212 + 0.09804423, # 2213 + 0.09797797, # 2214 + 0.09787870, # 2215 + 0.09771587, # 2216 + 0.09801452, # 2217 + 0.09792135, # 2218 + 0.09777516, # 2219 + 0.09785990, # 2220 + 0.09777508, # 2221 + 0.09768148, # 2222 + 0.09781117, # 2223 + 0.09786452, # 2224 + 0.09786757, # 2225 + 0.09795787, # 2226 + 0.09794524, # 2227 + 0.09783726, # 2228 + 0.09776483, # 2229 + 0.09771203, # 2230 + 0.09784412, # 2231 + 0.09789022, # 2232 + 0.09786293, # 2233 + 0.09785109, # 2234 + 0.09771966, # 2235 + 0.09786488, # 2236 + 0.09780396, # 2237 + 0.09799820, # 2238 + 0.09804255, # 2239 + 0.09776989, # 2240 + 0.09771631, # 2241 + 0.09786532, # 2242 + 0.09774393, # 2243 + 0.09785805, # 2244 + 0.09817237, # 2245 + 0.09804135, # 2246 + 0.09781481, # 2247 + 0.09756453, # 2248 + 0.09799930, # 2249 + 0.09813302, # 2250 + 0.09795806, # 2251 + 0.09807650, # 2252 + 0.09800700, # 2253 + 0.09810213, # 2254 + 0.09813083, # 2255 + 0.09771887, # 2256 + 0.09782474, # 2257 + 0.09817136, # 2258 + 0.09838294, # 2259 + 0.09822836, # 2260 + 0.09799412, # 2261 + 0.09783678, # 2262 + 0.09762703, # 2263 + 0.09775873, # 2264 + 0.09777577, # 2265 + 0.09770228, # 2266 + 0.09827946, # 2267 + 0.09820816, # 2268 + 0.09769344, # 2269 + 0.09770326, # 2270 + 0.09800910, # 2271 + 0.09794326, # 2272 + 0.09806726, # 2273 + 0.09813158, # 2274 + 0.09816626, # 2275 + 0.09805222, # 2276 + 0.09790382, # 2277 + 0.09803422, # 2278 + 0.09811505, # 2279 + 0.09806145, # 2280 + 0.09789593, # 2281 + 0.09774517, # 2282 + 0.09784097, # 2283 + 0.09776755, # 2284 + 0.09779709, # 2285 + 0.09773700, # 2286 + 0.09776620, # 2287 + 0.09802869, # 2288 + 0.09776614, # 2289 + 0.09748762, # 2290 + 0.09807615, # 2291 + 0.09798026, # 2292 + 0.09786575, # 2293 + 0.09766494, # 2294 + 0.09784185, # 2295 + 0.09830739, # 2296 + 0.09820499, # 2297 + 0.09814103, # 2298 + 0.09815139, # 2299 + 0.09825968, # 2300 + 0.09837772, # 2301 + 0.09858465, # 2302 + 0.09821832, # 2303 + 0.09815256, # 2304 + 0.09833673, # 2305 + 0.09845700, # 2306 + 0.09864518, # 2307 + 0.09887491, # 2308 + 0.09825340, # 2309 + 0.09849716, # 2310 + 0.09839884, # 2311 + 0.09843389, # 2312 + 0.09861663, # 2313 + 0.09859604, # 2314 + 0.09840028, # 2315 + 0.09850996, # 2316 + 0.09788293, # 2317 + 0.09800493, # 2318 + 0.09767696, # 2319 + 0.09822008, # 2320 + 0.09799186, # 2321 + 0.09819045, # 2322 + 0.09829516, # 2323 + 0.09794547, # 2324 + 0.09790853, # 2325 + 0.09795010, # 2326 + 0.09870433, # 2327 + 0.09857582, # 2328 + 0.09845560, # 2329 + 0.09780692, # 2330 + 0.09779323, # 2331 + 0.09813105, # 2332 + 0.09858985, # 2333 + 0.09789783, # 2334 + 0.09836513, # 2335 + 0.09780875, # 2336 + 0.09755110, # 2337 + 0.09891037, # 2338 + 0.09856006, # 2339 + 0.09793685, # 2340 + 0.09788608, # 2341 + 0.09797067, # 2342 + 0.09815232, # 2343 + 0.09839507, # 2344 + 0.09760465, # 2345 + 0.09704748, # 2346 + 0.09787379, # 2347 + 0.09790314, # 2348 + 0.09833008, # 2349 + 0.09842907, # 2350 + 0.09809867, # 2351 + 0.09802192, # 2352 + 0.09861434, # 2353 + 0.09872327, # 2354 + 0.09812842, # 2355 + 0.09763869, # 2356 + 0.09813481, # 2357 + 0.09746561, # 2358 + 0.09855381, # 2359 + 0.09829322, # 2360 + 0.09802410, # 2361 + 0.09829514, # 2362 + 0.09782848, # 2363 + 0.09816804, # 2364 + 0.09751130, # 2365 + 0.09791595, # 2366 + 0.09855392, # 2367 + 0.09884416, # 2368 + 0.09815829, # 2369 + 0.09892480, # 2370 + 0.09885124, # 2371 + 0.09804603, # 2372 + 0.09900131, # 2373 + 0.09913377, # 2374 + 0.09924385, # 2375 + 0.09773905, # 2376 + 0.09876743, # 2377 + 0.09800472, # 2378 + 0.09894291, # 2379 + 0.09862382, # 2380 + 0.09825338, # 2381 + 0.09877964, # 2382 + 0.09825437, # 2383 + 0.09824579, # 2384 + 0.09842542, # 2385 + 0.09977045, # 2386 + 0.09851361, # 2387 + 0.09768973, # 2388 + 0.09869670, # 2389 + 0.09915006, # 2390 + 0.09894602, # 2391 + 0.09893265, # 2392 + 0.09774470, # 2393 + 0.09739045, # 2394 + 0.09796809, # 2395 + 0.09781514, # 2396 + 0.09927942, # 2397 + 0.09879224, # 2398 + 0.09774835, # 2399 + 0.09757390, # 2400 + 0.09794278, # 2401 + 0.09867889, # 2402 + 0.09782500, # 2403 + 0.09908253, # 2404 + 0.09732538, # 2405 + 0.09913711, # 2406 + 0.09827180, # 2407 + 0.09817546, # 2408 + 0.09806777, # 2409 + 0.09822211, # 2410 + 0.09868335, # 2411 + 0.09757372, # 2412 + 0.09796047, # 2413 + 0.09767115, # 2414 + 0.09751451, # 2415 + 0.09851544, # 2416 + 0.09875589, # 2417 + 0.09831868, # 2418 + 0.09938702, # 2419 + 0.09769714, # 2420 + 0.09904953, # 2421 + 0.09817855, # 2422 + 0.09909976, # 2423 + 0.09836460, # 2424 + 0.09819190, # 2425 + 0.09798366, # 2426 + 0.09907098, # 2427 + 0.09830242, # 2428 + 0.09873648, # 2429 + 0.09789515, # 2430 + 0.09927206, # 2431 + 0.09937372, # 2432 + 0.09965171, # 2433 + 0.09842818, # 2434 + 0.09904249, # 2435 + 0.09789032, # 2436 + 0.09972183, # 2437 + 0.09942817, # 2438 + 0.09814100, # 2439 + 0.09760356, # 2440 + 0.09965755, # 2441 + 0.09881925, # 2442 + 0.10022802, # 2443 + 0.09917493, # 2444 + 0.09823885, # 2445 + 0.09889273, # 2446 + 0.09903072, # 2447 + 0.09757706, # 2448 + 0.09884540, # 2449 + 0.10034529, # 2450 + ] +) diff --git a/tests/aruco_markers/aruco_220.png b/tests/aruco_markers/aruco_220.png new file mode 100644 index 0000000..1516ef1 Binary files /dev/null and b/tests/aruco_markers/aruco_220.png differ diff --git a/tests/test_corrections.py b/tests/test_corrections.py index 9bf9677..16557de 100644 --- a/tests/test_corrections.py +++ b/tests/test_corrections.py @@ -10,11 +10,11 @@ def test_aruco_marker_detection(): - """Test that all three supported aruco marker IDs (23, 63, 217) can be detected.""" + """Test that all four supported aruco marker IDs (23, 63, 217, 220) can be detected.""" dictionary = cv.aruco.Dictionary_get(cv.aruco.DICT_6X6_250) - # Test all three marker IDs - for marker_id in [23, 63, 217]: + # Test all four marker IDs + for marker_id in [23, 63, 217, 220]: test_image_path = f"tests/aruco_markers/aruco_{marker_id}.png" # Skip test if image doesn't exist @@ -44,7 +44,7 @@ def test_aruco_marker_detection(): def test_aruco_marker_coefficient_selection(): """Test that each aruco marker ID maps to the correct coefficient array.""" - # Test that all three batch coefficients are properly loaded + # Test that all four batch coefficients are properly loaded assert ( len(zenith_co.sg3144_batch1_coefficients) > 250 ), "Batch1 coefficients not loaded properly" @@ -54,6 +54,9 @@ def test_aruco_marker_coefficient_selection(): assert ( len(zenith_co.sg3144_batch3_coefficients) > 250 ), "Batch3 coefficients not loaded properly" + assert ( + len(zenith_co.sg3144_batch4_coefficients) > 250 + ), "Batch4 coefficients not loaded properly" # Verify they are lists, not tuples (no trailing comma issue) assert isinstance( @@ -65,6 +68,9 @@ def test_aruco_marker_coefficient_selection(): assert isinstance( zenith_co.sg3144_batch3_coefficients, list ), "Batch3 should be a list" + assert isinstance( + zenith_co.sg3144_batch4_coefficients, list + ), "Batch4 should be a list" # Verify the first few non-zero values match expected batch data # Batch1 at index 250 should be 0.1239909 @@ -82,6 +88,11 @@ def test_aruco_marker_coefficient_selection(): abs(zenith_co.sg3144_batch3_coefficients[250] - 0.11927114) < 0.00001 ), "Batch3 coefficient mismatch" + # Batch4 at index 250 should be 0.12586513 + assert ( + abs(zenith_co.sg3144_batch4_coefficients[250] - 0.12586513) < 0.00001 + ), "Batch4 coefficient mismatch" + # Verify all coefficients are numeric and non-negative for i, coeff in enumerate(zenith_co.sg3144_batch1_coefficients): assert isinstance(coeff, (int, float)), f"Batch1[{i}] is not numeric" @@ -95,6 +106,10 @@ def test_aruco_marker_coefficient_selection(): assert isinstance(coeff, (int, float)), f"Batch3[{i}] is not numeric" assert coeff >= 0, f"Batch3[{i}] is negative" + for i, coeff in enumerate(zenith_co.sg3144_batch4_coefficients): + assert isinstance(coeff, (int, float)), f"Batch4[{i}] is not numeric" + assert coeff >= 0, f"Batch4[{i}] is negative" + def test_6x_cal_ils(): imgcorrect.correct_images(