From e07bc54887dad0af75f7a9d251cda6c82fb7fb45 Mon Sep 17 00:00:00 2001 From: michealroberts Date: Sat, 30 Nov 2024 12:16:06 +0000 Subject: [PATCH] feat: add (s *StarsExtractor) RejectMisalignedPixels() to stars module in @observerly/iris feat: add (s *StarsExtractor) RejectMisalignedPixels() to stars module in @observerly/iris --- coverage.txt | 323 +++++++++++++++++++++------------------- pkg/photometry/stars.go | 74 +++++++++ 2 files changed, 244 insertions(+), 153 deletions(-) diff --git a/coverage.txt b/coverage.txt index f3a11fd..037119f 100644 --- a/coverage.txt +++ b/coverage.txt @@ -151,66 +151,6 @@ github.com/observerly/iris/pkg/image/gray16.go:40.12,42.3 1 0 github.com/observerly/iris/pkg/image/gray16.go:45.2,45.35 1 1 github.com/observerly/iris/pkg/image/gray16.go:45.35,52.3 4 9 github.com/observerly/iris/pkg/image/gray16.go:55.2,55.17 1 1 -github.com/observerly/iris/pkg/palette/palette.go:40.61,56.12 8 1 -github.com/observerly/iris/pkg/palette/palette.go:56.12,63.17 5 1 -github.com/observerly/iris/pkg/palette/palette.go:63.17,65.4 1 0 -github.com/observerly/iris/pkg/palette/palette.go:67.3,67.9 1 1 -github.com/observerly/iris/pkg/palette/palette.go:71.2,71.12 1 1 -github.com/observerly/iris/pkg/palette/palette.go:71.12,78.17 5 1 -github.com/observerly/iris/pkg/palette/palette.go:78.17,80.4 1 0 -github.com/observerly/iris/pkg/palette/palette.go:82.3,82.9 1 1 -github.com/observerly/iris/pkg/palette/palette.go:86.2,86.12 1 1 -github.com/observerly/iris/pkg/palette/palette.go:86.12,93.17 5 1 -github.com/observerly/iris/pkg/palette/palette.go:93.17,95.4 1 0 -github.com/observerly/iris/pkg/palette/palette.go:97.3,97.9 1 1 -github.com/observerly/iris/pkg/palette/palette.go:100.2,100.12 1 1 -github.com/observerly/iris/pkg/palette/palette.go:100.12,106.3 5 1 -github.com/observerly/iris/pkg/palette/palette.go:108.2,108.32 1 1 -github.com/observerly/iris/pkg/palette/palette.go:114.73,120.28 3 6 -github.com/observerly/iris/pkg/palette/palette.go:120.28,121.28 1 12 -github.com/observerly/iris/pkg/palette/palette.go:121.28,123.24 1 36 -github.com/observerly/iris/pkg/palette/palette.go:123.24,125.5 1 0 -github.com/observerly/iris/pkg/palette/palette.go:127.4,127.30 1 36 -github.com/observerly/iris/pkg/palette/palette.go:131.3,133.25 2 12 -github.com/observerly/iris/pkg/palette/palette.go:137.2,137.20 1 6 -github.com/observerly/iris/pkg/palette/palette.go:137.20,139.3 1 0 -github.com/observerly/iris/pkg/palette/palette.go:141.2,143.16 2 6 -github.com/observerly/iris/pkg/palette/palette.go:143.16,145.3 1 0 -github.com/observerly/iris/pkg/palette/palette.go:147.2,147.15 1 6 -github.com/observerly/iris/pkg/qsort/qsort.go:16.41,26.6 6 18 -github.com/observerly/iris/pkg/qsort/qsort.go:26.6,27.7 1 25 -github.com/observerly/iris/pkg/qsort/qsort.go:27.7,29.21 2 48 -github.com/observerly/iris/pkg/qsort/qsort.go:29.21,30.10 1 25 -github.com/observerly/iris/pkg/qsort/qsort.go:33.3,33.7 1 25 -github.com/observerly/iris/pkg/qsort/qsort.go:33.7,35.21 2 51 -github.com/observerly/iris/pkg/qsort/qsort.go:35.21,36.10 1 25 -github.com/observerly/iris/pkg/qsort/qsort.go:39.3,39.13 1 25 -github.com/observerly/iris/pkg/qsort/qsort.go:39.13,41.4 1 18 -github.com/observerly/iris/pkg/qsort/qsort.go:42.3,42.26 1 7 -github.com/observerly/iris/pkg/qsort/qsort.go:49.32,50.16 1 34 -github.com/observerly/iris/pkg/qsort/qsort.go:50.16,54.3 3 16 -github.com/observerly/iris/pkg/qsort/qsort.go:60.49,63.19 2 7 -github.com/observerly/iris/pkg/qsort/qsort.go:63.19,70.7 4 24 -github.com/observerly/iris/pkg/qsort/qsort.go:70.7,71.8 1 35 -github.com/observerly/iris/pkg/qsort/qsort.go:71.8,73.22 2 79 -github.com/observerly/iris/pkg/qsort/qsort.go:73.22,74.11 1 35 -github.com/observerly/iris/pkg/qsort/qsort.go:77.4,77.8 1 35 -github.com/observerly/iris/pkg/qsort/qsort.go:77.8,79.22 2 80 -github.com/observerly/iris/pkg/qsort/qsort.go:79.22,80.11 1 35 -github.com/observerly/iris/pkg/qsort/qsort.go:83.4,83.14 1 35 -github.com/observerly/iris/pkg/qsort/qsort.go:83.14,84.10 1 24 -github.com/observerly/iris/pkg/qsort/qsort.go:86.4,86.27 1 11 -github.com/observerly/iris/pkg/qsort/qsort.go:89.3,93.18 3 24 -github.com/observerly/iris/pkg/qsort/qsort.go:93.18,95.4 1 13 -github.com/observerly/iris/pkg/qsort/qsort.go:95.9,98.4 2 11 -github.com/observerly/iris/pkg/qsort/qsort.go:101.2,101.16 1 7 -github.com/observerly/iris/pkg/qsort/qsort.go:107.55,109.2 1 2 -github.com/observerly/iris/pkg/qsort/qsort.go:114.48,122.23 3 3 -github.com/observerly/iris/pkg/qsort/qsort.go:122.23,124.3 1 1 -github.com/observerly/iris/pkg/qsort/qsort.go:127.2,129.27 2 2 -github.com/observerly/iris/pkg/qsort/qsort.go:129.27,130.19 1 7 -github.com/observerly/iris/pkg/qsort/qsort.go:130.19,132.4 1 6 -github.com/observerly/iris/pkg/qsort/qsort.go:136.2,136.30 1 2 github.com/observerly/iris/pkg/frames/bias.go:30.144,36.31 3 7 github.com/observerly/iris/pkg/frames/bias.go:36.31,38.3 1 15 github.com/observerly/iris/pkg/frames/bias.go:41.2,50.21 2 7 @@ -265,6 +205,66 @@ github.com/observerly/iris/pkg/frames/light.go:74.2,120.8 7 1 github.com/observerly/iris/pkg/frames/master.go:17.79,21.16 2 1 github.com/observerly/iris/pkg/frames/master.go:21.16,23.3 1 0 github.com/observerly/iris/pkg/frames/master.go:26.2,35.8 2 1 +github.com/observerly/iris/pkg/qsort/qsort.go:16.41,26.6 6 18 +github.com/observerly/iris/pkg/qsort/qsort.go:26.6,27.7 1 25 +github.com/observerly/iris/pkg/qsort/qsort.go:27.7,29.21 2 48 +github.com/observerly/iris/pkg/qsort/qsort.go:29.21,30.10 1 25 +github.com/observerly/iris/pkg/qsort/qsort.go:33.3,33.7 1 25 +github.com/observerly/iris/pkg/qsort/qsort.go:33.7,35.21 2 51 +github.com/observerly/iris/pkg/qsort/qsort.go:35.21,36.10 1 25 +github.com/observerly/iris/pkg/qsort/qsort.go:39.3,39.13 1 25 +github.com/observerly/iris/pkg/qsort/qsort.go:39.13,41.4 1 18 +github.com/observerly/iris/pkg/qsort/qsort.go:42.3,42.26 1 7 +github.com/observerly/iris/pkg/qsort/qsort.go:49.32,50.16 1 34 +github.com/observerly/iris/pkg/qsort/qsort.go:50.16,54.3 3 16 +github.com/observerly/iris/pkg/qsort/qsort.go:60.49,63.19 2 7 +github.com/observerly/iris/pkg/qsort/qsort.go:63.19,70.7 4 24 +github.com/observerly/iris/pkg/qsort/qsort.go:70.7,71.8 1 35 +github.com/observerly/iris/pkg/qsort/qsort.go:71.8,73.22 2 79 +github.com/observerly/iris/pkg/qsort/qsort.go:73.22,74.11 1 35 +github.com/observerly/iris/pkg/qsort/qsort.go:77.4,77.8 1 35 +github.com/observerly/iris/pkg/qsort/qsort.go:77.8,79.22 2 80 +github.com/observerly/iris/pkg/qsort/qsort.go:79.22,80.11 1 35 +github.com/observerly/iris/pkg/qsort/qsort.go:83.4,83.14 1 35 +github.com/observerly/iris/pkg/qsort/qsort.go:83.14,84.10 1 24 +github.com/observerly/iris/pkg/qsort/qsort.go:86.4,86.27 1 11 +github.com/observerly/iris/pkg/qsort/qsort.go:89.3,93.18 3 24 +github.com/observerly/iris/pkg/qsort/qsort.go:93.18,95.4 1 13 +github.com/observerly/iris/pkg/qsort/qsort.go:95.9,98.4 2 11 +github.com/observerly/iris/pkg/qsort/qsort.go:101.2,101.16 1 7 +github.com/observerly/iris/pkg/qsort/qsort.go:107.55,109.2 1 2 +github.com/observerly/iris/pkg/qsort/qsort.go:114.48,122.23 3 3 +github.com/observerly/iris/pkg/qsort/qsort.go:122.23,124.3 1 1 +github.com/observerly/iris/pkg/qsort/qsort.go:127.2,129.27 2 2 +github.com/observerly/iris/pkg/qsort/qsort.go:129.27,130.19 1 7 +github.com/observerly/iris/pkg/qsort/qsort.go:130.19,132.4 1 6 +github.com/observerly/iris/pkg/qsort/qsort.go:136.2,136.30 1 2 +github.com/observerly/iris/pkg/palette/palette.go:40.61,56.12 8 1 +github.com/observerly/iris/pkg/palette/palette.go:56.12,63.17 5 1 +github.com/observerly/iris/pkg/palette/palette.go:63.17,65.4 1 0 +github.com/observerly/iris/pkg/palette/palette.go:67.3,67.9 1 1 +github.com/observerly/iris/pkg/palette/palette.go:71.2,71.12 1 1 +github.com/observerly/iris/pkg/palette/palette.go:71.12,78.17 5 1 +github.com/observerly/iris/pkg/palette/palette.go:78.17,80.4 1 0 +github.com/observerly/iris/pkg/palette/palette.go:82.3,82.9 1 1 +github.com/observerly/iris/pkg/palette/palette.go:86.2,86.12 1 1 +github.com/observerly/iris/pkg/palette/palette.go:86.12,93.17 5 1 +github.com/observerly/iris/pkg/palette/palette.go:93.17,95.4 1 0 +github.com/observerly/iris/pkg/palette/palette.go:97.3,97.9 1 1 +github.com/observerly/iris/pkg/palette/palette.go:100.2,100.12 1 1 +github.com/observerly/iris/pkg/palette/palette.go:100.12,106.3 5 1 +github.com/observerly/iris/pkg/palette/palette.go:108.2,108.32 1 1 +github.com/observerly/iris/pkg/palette/palette.go:114.73,120.28 3 6 +github.com/observerly/iris/pkg/palette/palette.go:120.28,121.28 1 12 +github.com/observerly/iris/pkg/palette/palette.go:121.28,123.24 1 36 +github.com/observerly/iris/pkg/palette/palette.go:123.24,125.5 1 0 +github.com/observerly/iris/pkg/palette/palette.go:127.4,127.30 1 36 +github.com/observerly/iris/pkg/palette/palette.go:131.3,133.25 2 12 +github.com/observerly/iris/pkg/palette/palette.go:137.2,137.20 1 6 +github.com/observerly/iris/pkg/palette/palette.go:137.20,139.3 1 0 +github.com/observerly/iris/pkg/palette/palette.go:141.2,143.16 2 6 +github.com/observerly/iris/pkg/palette/palette.go:143.16,145.3 1 0 +github.com/observerly/iris/pkg/palette/palette.go:147.2,147.15 1 6 github.com/observerly/iris/pkg/utils/array.go:22.57,23.22 1 2 github.com/observerly/iris/pkg/utils/array.go:23.22,25.3 1 1 github.com/observerly/iris/pkg/utils/array.go:27.2,29.19 2 1 @@ -396,24 +396,24 @@ github.com/observerly/iris/pkg/statistics/stats.go:186.2,188.15 2 4 github.com/observerly/iris/pkg/statistics/stats.go:201.56,207.24 3 5 github.com/observerly/iris/pkg/statistics/stats.go:207.24,212.3 3 770008 github.com/observerly/iris/pkg/statistics/stats.go:216.2,218.11 2 5 -github.com/observerly/iris/pkg/statistics/stats.go:234.100,240.24 3 3 -github.com/observerly/iris/pkg/statistics/stats.go:240.24,242.7 2 769000 -github.com/observerly/iris/pkg/statistics/stats.go:242.7,245.43 2 769082 -github.com/observerly/iris/pkg/statistics/stats.go:245.43,246.10 1 769000 -github.com/observerly/iris/pkg/statistics/stats.go:250.3,250.16 1 769000 -github.com/observerly/iris/pkg/statistics/stats.go:253.2,255.15 2 3 -github.com/observerly/iris/pkg/statistics/stats.go:266.96,272.24 3 3 -github.com/observerly/iris/pkg/statistics/stats.go:272.24,275.7 2 769000 -github.com/observerly/iris/pkg/statistics/stats.go:275.7,279.43 3 769146 -github.com/observerly/iris/pkg/statistics/stats.go:279.43,280.13 1 88 -github.com/observerly/iris/pkg/statistics/stats.go:283.4,284.45 2 769058 -github.com/observerly/iris/pkg/statistics/stats.go:284.45,285.10 1 769000 -github.com/observerly/iris/pkg/statistics/stats.go:289.3,289.50 1 769000 -github.com/observerly/iris/pkg/statistics/stats.go:294.2,296.11 2 3 +github.com/observerly/iris/pkg/statistics/stats.go:234.100,240.24 3 5 +github.com/observerly/iris/pkg/statistics/stats.go:240.24,242.7 2 1537000 +github.com/observerly/iris/pkg/statistics/stats.go:242.7,245.43 2 1537129 +github.com/observerly/iris/pkg/statistics/stats.go:245.43,246.10 1 1537000 +github.com/observerly/iris/pkg/statistics/stats.go:250.3,250.16 1 1537000 +github.com/observerly/iris/pkg/statistics/stats.go:253.2,255.15 2 5 +github.com/observerly/iris/pkg/statistics/stats.go:266.96,272.24 3 5 +github.com/observerly/iris/pkg/statistics/stats.go:272.24,275.7 2 1537000 +github.com/observerly/iris/pkg/statistics/stats.go:275.7,279.43 3 1537181 +github.com/observerly/iris/pkg/statistics/stats.go:279.43,280.13 1 118 +github.com/observerly/iris/pkg/statistics/stats.go:283.4,284.45 2 1537063 +github.com/observerly/iris/pkg/statistics/stats.go:284.45,285.10 1 1537000 +github.com/observerly/iris/pkg/statistics/stats.go:289.3,289.50 1 1537000 +github.com/observerly/iris/pkg/statistics/stats.go:294.2,296.11 2 5 github.com/observerly/iris/pkg/statistics/stats.go:305.72,316.20 6 1 -github.com/observerly/iris/pkg/statistics/stats.go:316.20,330.107 6 2 +github.com/observerly/iris/pkg/statistics/stats.go:316.20,330.107 6 4 github.com/observerly/iris/pkg/statistics/stats.go:330.107,336.4 3 1 -github.com/observerly/iris/pkg/statistics/stats.go:338.3,338.38 1 1 +github.com/observerly/iris/pkg/statistics/stats.go:338.3,338.38 1 3 github.com/observerly/iris/pkg/fits/fits.go:88.82,107.2 5 14 github.com/observerly/iris/pkg/fits/fits.go:112.53,119.16 3 1 github.com/observerly/iris/pkg/fits/fits.go:119.16,121.3 1 0 @@ -639,83 +639,100 @@ github.com/observerly/iris/pkg/photometry/noise.go:93.2,95.19 2 1 github.com/observerly/iris/pkg/photometry/stars.go:54.99,67.2 2 8 github.com/observerly/iris/pkg/photometry/stars.go:71.51,73.2 1 7 github.com/observerly/iris/pkg/photometry/stars.go:77.51,79.2 1 5 -github.com/observerly/iris/pkg/photometry/stars.go:83.59,85.2 1 6 -github.com/observerly/iris/pkg/photometry/stars.go:89.55,91.2 1 3 -github.com/observerly/iris/pkg/photometry/stars.go:95.101,101.2 3 2 -github.com/observerly/iris/pkg/photometry/stars.go:106.97,137.2 13 1 -github.com/observerly/iris/pkg/photometry/stars.go:143.119,147.25 2 95855 -github.com/observerly/iris/pkg/photometry/stars.go:147.25,151.39 2 862695 -github.com/observerly/iris/pkg/photometry/stars.go:151.39,154.4 2 862218 -github.com/observerly/iris/pkg/photometry/stars.go:157.2,159.23 2 95855 -github.com/observerly/iris/pkg/photometry/stars.go:166.89,170.25 2 7 -github.com/observerly/iris/pkg/photometry/stars.go:170.25,171.20 1 10253216 -github.com/observerly/iris/pkg/photometry/stars.go:171.20,182.22 2 12528 -github.com/observerly/iris/pkg/photometry/stars.go:182.22,186.83 2 12521 -github.com/observerly/iris/pkg/photometry/stars.go:186.83,188.6 1 4229 -github.com/observerly/iris/pkg/photometry/stars.go:192.4,192.29 1 12528 -github.com/observerly/iris/pkg/photometry/stars.go:196.2,196.14 1 7 -github.com/observerly/iris/pkg/photometry/stars.go:203.95,216.34 6 5 -github.com/observerly/iris/pkg/photometry/stars.go:216.34,222.3 3 85435 -github.com/observerly/iris/pkg/photometry/stars.go:224.2,231.29 4 5 -github.com/observerly/iris/pkg/photometry/stars.go:231.29,237.44 3 10420 -github.com/observerly/iris/pkg/photometry/stars.go:237.44,240.4 2 10125 -github.com/observerly/iris/pkg/photometry/stars.go:243.2,243.31 1 5 -github.com/observerly/iris/pkg/photometry/stars.go:248.85,265.26 8 6 -github.com/observerly/iris/pkg/photometry/stars.go:265.26,270.38 2 8534 -github.com/observerly/iris/pkg/photometry/stars.go:270.38,271.41 1 18160 -github.com/observerly/iris/pkg/photometry/stars.go:271.41,272.13 1 1130 -github.com/observerly/iris/pkg/photometry/stars.go:275.4,275.39 1 17030 -github.com/observerly/iris/pkg/photometry/stars.go:275.39,276.42 1 43792 -github.com/observerly/iris/pkg/photometry/stars.go:276.42,277.14 1 4610 -github.com/observerly/iris/pkg/photometry/stars.go:281.5,284.53 2 39182 -github.com/observerly/iris/pkg/photometry/stars.go:284.53,291.22 5 217856 -github.com/observerly/iris/pkg/photometry/stars.go:291.22,292.27 1 7258 -github.com/observerly/iris/pkg/photometry/stars.go:299.3,309.17 5 1276 -github.com/observerly/iris/pkg/photometry/stars.go:309.17,311.4 1 180 -github.com/observerly/iris/pkg/photometry/stars.go:311.9,312.24 1 1096 -github.com/observerly/iris/pkg/photometry/stars.go:312.24,314.5 1 3730 -github.com/observerly/iris/pkg/photometry/stars.go:316.4,316.38 1 1096 -github.com/observerly/iris/pkg/photometry/stars.go:319.3,319.19 1 1276 -github.com/observerly/iris/pkg/photometry/stars.go:322.2,325.31 3 6 -github.com/observerly/iris/pkg/photometry/stars.go:331.106,333.26 1 3 -github.com/observerly/iris/pkg/photometry/stars.go:333.26,336.71 2 651 -github.com/observerly/iris/pkg/photometry/stars.go:336.71,342.39 3 1263 -github.com/observerly/iris/pkg/photometry/stars.go:342.39,343.40 1 41679 -github.com/observerly/iris/pkg/photometry/stars.go:343.40,348.46 3 1375407 -github.com/observerly/iris/pkg/photometry/stars.go:348.46,350.20 2 1353132 -github.com/observerly/iris/pkg/photometry/stars.go:350.20,352.8 1 1338933 -github.com/observerly/iris/pkg/photometry/stars.go:355.6,357.19 3 1375407 -github.com/observerly/iris/pkg/photometry/stars.go:362.4,365.19 3 1263 -github.com/observerly/iris/pkg/photometry/stars.go:365.19,367.5 1 0 -github.com/observerly/iris/pkg/photometry/stars.go:369.4,384.44 10 1263 -github.com/observerly/iris/pkg/photometry/stars.go:384.44,386.5 1 1263 -github.com/observerly/iris/pkg/photometry/stars.go:388.4,396.16 2 1263 -github.com/observerly/iris/pkg/photometry/stars.go:400.2,400.14 1 3 -github.com/observerly/iris/pkg/photometry/stars.go:407.143,412.26 3 2 -github.com/observerly/iris/pkg/photometry/stars.go:412.26,420.32 4 408 -github.com/observerly/iris/pkg/photometry/stars.go:420.32,421.33 1 13464 -github.com/observerly/iris/pkg/photometry/stars.go:421.33,423.29 2 444312 -github.com/observerly/iris/pkg/photometry/stars.go:423.29,424.14 1 119136 -github.com/observerly/iris/pkg/photometry/stars.go:426.5,432.47 4 325176 -github.com/observerly/iris/pkg/photometry/stars.go:432.47,434.15 2 321952 -github.com/observerly/iris/pkg/photometry/stars.go:434.15,436.7 1 174688 -github.com/observerly/iris/pkg/photometry/stars.go:438.5,440.13 3 325176 -github.com/observerly/iris/pkg/photometry/stars.go:444.3,444.18 1 408 -github.com/observerly/iris/pkg/photometry/stars.go:444.18,446.4 1 0 -github.com/observerly/iris/pkg/photometry/stars.go:448.3,451.19 2 408 -github.com/observerly/iris/pkg/photometry/stars.go:451.19,452.12 1 0 -github.com/observerly/iris/pkg/photometry/stars.go:456.3,462.42 4 408 -github.com/observerly/iris/pkg/photometry/stars.go:462.42,463.43 1 6620 -github.com/observerly/iris/pkg/photometry/stars.go:463.43,466.29 2 111880 -github.com/observerly/iris/pkg/photometry/stars.go:466.29,467.14 1 42584 -github.com/observerly/iris/pkg/photometry/stars.go:470.5,474.47 3 69296 -github.com/observerly/iris/pkg/photometry/stars.go:474.47,476.15 2 69042 -github.com/observerly/iris/pkg/photometry/stars.go:476.15,478.7 1 51858 -github.com/observerly/iris/pkg/photometry/stars.go:480.5,481.18 2 69296 -github.com/observerly/iris/pkg/photometry/stars.go:486.3,490.81 3 408 -github.com/observerly/iris/pkg/photometry/stars.go:490.81,491.12 1 70 -github.com/observerly/iris/pkg/photometry/stars.go:495.3,504.25 5 338 -github.com/observerly/iris/pkg/photometry/stars.go:508.2,510.39 2 2 +github.com/observerly/iris/pkg/photometry/stars.go:83.58,85.2 1 1 +github.com/observerly/iris/pkg/photometry/stars.go:89.59,91.2 1 6 +github.com/observerly/iris/pkg/photometry/stars.go:95.55,97.2 1 3 +github.com/observerly/iris/pkg/photometry/stars.go:101.101,107.2 3 2 +github.com/observerly/iris/pkg/photometry/stars.go:112.97,147.2 14 1 +github.com/observerly/iris/pkg/photometry/stars.go:153.119,157.25 2 95855 +github.com/observerly/iris/pkg/photometry/stars.go:157.25,161.39 2 862695 +github.com/observerly/iris/pkg/photometry/stars.go:161.39,164.4 2 862200 +github.com/observerly/iris/pkg/photometry/stars.go:167.2,169.23 2 95855 +github.com/observerly/iris/pkg/photometry/stars.go:176.89,180.25 2 7 +github.com/observerly/iris/pkg/photometry/stars.go:180.25,181.20 1 10253216 +github.com/observerly/iris/pkg/photometry/stars.go:181.20,192.22 2 12528 +github.com/observerly/iris/pkg/photometry/stars.go:192.22,196.83 2 12521 +github.com/observerly/iris/pkg/photometry/stars.go:196.83,198.6 1 4229 +github.com/observerly/iris/pkg/photometry/stars.go:202.4,202.29 1 12528 +github.com/observerly/iris/pkg/photometry/stars.go:206.2,206.14 1 7 +github.com/observerly/iris/pkg/photometry/stars.go:213.95,226.34 6 5 +github.com/observerly/iris/pkg/photometry/stars.go:226.34,232.3 3 85435 +github.com/observerly/iris/pkg/photometry/stars.go:234.2,241.29 4 5 +github.com/observerly/iris/pkg/photometry/stars.go:241.29,247.44 3 10420 +github.com/observerly/iris/pkg/photometry/stars.go:247.44,250.4 2 10173 +github.com/observerly/iris/pkg/photometry/stars.go:253.2,253.31 1 5 +github.com/observerly/iris/pkg/photometry/stars.go:260.130,263.26 2 1 +github.com/observerly/iris/pkg/photometry/stars.go:263.26,270.17 5 209 +github.com/observerly/iris/pkg/photometry/stars.go:270.17,272.4 1 2 +github.com/observerly/iris/pkg/photometry/stars.go:274.3,274.17 1 209 +github.com/observerly/iris/pkg/photometry/stars.go:274.17,276.4 1 2 +github.com/observerly/iris/pkg/photometry/stars.go:278.3,278.17 1 209 +github.com/observerly/iris/pkg/photometry/stars.go:278.17,280.4 1 1 +github.com/observerly/iris/pkg/photometry/stars.go:282.3,282.17 1 209 +github.com/observerly/iris/pkg/photometry/stars.go:282.17,284.4 1 6 +github.com/observerly/iris/pkg/photometry/stars.go:287.3,291.35 4 209 +github.com/observerly/iris/pkg/photometry/stars.go:291.35,292.36 1 6824 +github.com/observerly/iris/pkg/photometry/stars.go:292.36,295.33 3 224301 +github.com/observerly/iris/pkg/photometry/stars.go:295.33,299.6 3 2747 +github.com/observerly/iris/pkg/photometry/stars.go:304.3,310.63 4 209 +github.com/observerly/iris/pkg/photometry/stars.go:310.63,313.4 2 206 +github.com/observerly/iris/pkg/photometry/stars.go:317.2,317.31 1 1 +github.com/observerly/iris/pkg/photometry/stars.go:322.85,339.26 8 6 +github.com/observerly/iris/pkg/photometry/stars.go:339.26,344.38 2 8582 +github.com/observerly/iris/pkg/photometry/stars.go:344.38,345.41 1 18284 +github.com/observerly/iris/pkg/photometry/stars.go:345.41,346.13 1 1130 +github.com/observerly/iris/pkg/photometry/stars.go:349.4,349.39 1 17154 +github.com/observerly/iris/pkg/photometry/stars.go:349.39,350.42 1 44144 +github.com/observerly/iris/pkg/photometry/stars.go:350.42,351.14 1 4636 +github.com/observerly/iris/pkg/photometry/stars.go:355.5,358.53 2 39508 +github.com/observerly/iris/pkg/photometry/stars.go:358.53,365.22 5 224616 +github.com/observerly/iris/pkg/photometry/stars.go:365.22,366.27 1 7278 +github.com/observerly/iris/pkg/photometry/stars.go:373.3,383.17 5 1304 +github.com/observerly/iris/pkg/photometry/stars.go:383.17,385.4 1 180 +github.com/observerly/iris/pkg/photometry/stars.go:385.9,386.24 1 1124 +github.com/observerly/iris/pkg/photometry/stars.go:386.24,388.5 1 3966 +github.com/observerly/iris/pkg/photometry/stars.go:390.4,390.38 1 1124 +github.com/observerly/iris/pkg/photometry/stars.go:393.3,393.19 1 1304 +github.com/observerly/iris/pkg/photometry/stars.go:396.2,399.31 3 6 +github.com/observerly/iris/pkg/photometry/stars.go:405.106,407.26 1 3 +github.com/observerly/iris/pkg/photometry/stars.go:407.26,410.71 2 665 +github.com/observerly/iris/pkg/photometry/stars.go:410.71,416.39 3 1285 +github.com/observerly/iris/pkg/photometry/stars.go:416.39,417.40 1 42405 +github.com/observerly/iris/pkg/photometry/stars.go:417.40,422.46 3 1399365 +github.com/observerly/iris/pkg/photometry/stars.go:422.46,424.20 2 1377090 +github.com/observerly/iris/pkg/photometry/stars.go:424.20,426.8 1 1362841 +github.com/observerly/iris/pkg/photometry/stars.go:429.6,431.19 3 1399365 +github.com/observerly/iris/pkg/photometry/stars.go:436.4,439.19 3 1285 +github.com/observerly/iris/pkg/photometry/stars.go:439.19,441.5 1 0 +github.com/observerly/iris/pkg/photometry/stars.go:443.4,458.44 10 1285 +github.com/observerly/iris/pkg/photometry/stars.go:458.44,460.5 1 1285 +github.com/observerly/iris/pkg/photometry/stars.go:462.4,470.16 2 1285 +github.com/observerly/iris/pkg/photometry/stars.go:474.2,474.14 1 3 +github.com/observerly/iris/pkg/photometry/stars.go:481.143,486.26 3 2 +github.com/observerly/iris/pkg/photometry/stars.go:486.26,494.32 4 415 +github.com/observerly/iris/pkg/photometry/stars.go:494.32,495.33 1 13695 +github.com/observerly/iris/pkg/photometry/stars.go:495.33,497.29 2 451935 +github.com/observerly/iris/pkg/photometry/stars.go:497.29,498.14 1 121180 +github.com/observerly/iris/pkg/photometry/stars.go:500.5,506.47 4 330755 +github.com/observerly/iris/pkg/photometry/stars.go:506.47,508.15 2 327531 +github.com/observerly/iris/pkg/photometry/stars.go:508.15,510.7 1 179314 +github.com/observerly/iris/pkg/photometry/stars.go:512.5,514.13 3 330755 +github.com/observerly/iris/pkg/photometry/stars.go:518.3,518.18 1 415 +github.com/observerly/iris/pkg/photometry/stars.go:518.18,520.4 1 0 +github.com/observerly/iris/pkg/photometry/stars.go:522.3,525.19 2 415 +github.com/observerly/iris/pkg/photometry/stars.go:525.19,526.12 1 0 +github.com/observerly/iris/pkg/photometry/stars.go:530.3,536.42 4 415 +github.com/observerly/iris/pkg/photometry/stars.go:536.42,537.43 1 6771 +github.com/observerly/iris/pkg/photometry/stars.go:537.43,540.29 2 115159 +github.com/observerly/iris/pkg/photometry/stars.go:540.29,541.14 1 43708 +github.com/observerly/iris/pkg/photometry/stars.go:544.5,548.47 3 71451 +github.com/observerly/iris/pkg/photometry/stars.go:548.47,550.15 2 71197 +github.com/observerly/iris/pkg/photometry/stars.go:550.15,552.7 1 53750 +github.com/observerly/iris/pkg/photometry/stars.go:554.5,555.18 2 71451 +github.com/observerly/iris/pkg/photometry/stars.go:560.3,564.81 3 415 +github.com/observerly/iris/pkg/photometry/stars.go:564.81,565.12 1 77 +github.com/observerly/iris/pkg/photometry/stars.go:569.3,578.25 5 338 +github.com/observerly/iris/pkg/photometry/stars.go:582.2,584.39 2 2 github.com/observerly/iris/pkg/iris/monochrome.go:43.95,61.2 4 13 github.com/observerly/iris/pkg/iris/monochrome.go:65.79,70.16 3 13 github.com/observerly/iris/pkg/iris/monochrome.go:70.16,72.3 1 0 diff --git a/pkg/photometry/stars.go b/pkg/photometry/stars.go index 69d762b..aa3bccd 100644 --- a/pkg/photometry/stars.go +++ b/pkg/photometry/stars.go @@ -80,6 +80,12 @@ func (s *StarsExtractor) RejectBadPixels() []Star { /*****************************************************************************************************************/ +func (s *StarsExtractor) RejectMisalignedPixels() []Star { + return rejectMisalignedPixels(s.Stars, s.Data, int32(s.Width), int32(s.Height), s.Radius, s.Radius/2.0) +} + +/*****************************************************************************************************************/ + func (s *StarsExtractor) FilterOverlappingPixels() []Star { return filterOverlappingPixels(s.Stars, int32(s.Width), int32(s.Height), int32(s.Radius)) } @@ -123,6 +129,10 @@ func (s *StarsExtractor) FindStars(stats *stats.Stats, sigma float32, starInOut s.Stars = s.FilterOverlappingPixels() + // Reject extracted based on proximity to other stars, e.g., if we have two stars in close proximity + // we discard both as the extraction pixel position is likely to be incorrect: + s.Stars = s.RejectMisalignedPixels() + // Remove implausible stars based on HFR, and return stars (updates s.HFR): stars := s.ExtractAndFilterHalfFluxRadius(location, starInOut) @@ -245,6 +255,70 @@ func rejectBadPixels(stars []Star, data []float32, xs int32, sigma float32, adu /*****************************************************************************************************************/ +// rejectMisalignedPixels filters out stars that are not aligned with the brightest pixel in their vicinity. +// This is likely due to two stars in close proximity in pixel space, causing the centroid to be misaligned. +func rejectMisalignedPixels(stars []Star, data []float32, xs int32, ys int32, radius float32, maxAllowedDistance float32) []Star { + remainingStars := 0 + + for _, s := range stars { + // Define the search window around the star's centroid position: + xStart := int32(s.X - radius) + xEnd := int32(s.X + radius) + yStart := int32(s.Y - radius) + yEnd := int32(s.Y + radius) + + if xStart < 0 { + xStart = 0 + } + + if xEnd >= xs { + xEnd = xs - 1 + } + + if yStart < 0 { + yStart = 0 + } + + if yEnd >= ys { + yEnd = ys - 1 + } + + // Find the brightest pixel within the radius of the current star: + maxIntensity := float32(0) + brightestX := s.X + brightestY := s.Y + + for y := yStart; y <= yEnd; y++ { + for x := xStart; x <= xEnd; x++ { + index := y*xs + x + intensity := data[index] + if intensity > maxIntensity { + maxIntensity = intensity + brightestX = float32(x) + brightestY = float32(y) + } + } + } + + // Calculate the distance between centroid and brightest pixel in the vicinity: + dx := s.X - brightestX + dy := s.Y - brightestY + distanceSquared := dx*dx + dy*dy + + // If the distance is within the allowed threshold, keep the star (increment remainingStars), otherwise, + // discard the star (do not increment remainingStars) and continue to the next star: + if distanceSquared <= maxAllowedDistance*maxAllowedDistance { + stars[remainingStars] = s + remainingStars++ + } + + } + + return stars[:remainingStars] +} + +/*****************************************************************************************************************/ + func filterOverlappingPixels(stars []Star, xs int32, ys int32, radius int32) []Star { // To avoid quadratic search effort, we bin the stars into a 2D grid. binSize := int32(256)