Мне нужен очень точный алгоритм для подгонки круга к набору точек данных (на самом деле мне нужно определить центр).Данные поступают после бинаризации и сегментации изображения.Я попробовал простые алгоритмы центра масс и взвешенного центра масс, а также предварительно сделал функцию OpenCv :: fitEllipse.Я получил лучшие результаты от функции OpenCV, но все же точность не достаточна.Результаты значительно ухудшаются, когда центр закрепляется в подпиксельных областях.Точности, которую я получил, недостаточно, даже когда имеешь дело с смоделированными данными, что плохо, так как в конечном итоге процедура должна будет работать с данными, полученными камерами.Есть ли у вас какие-либо предложения, какой алгоритм мне искать, или у вас есть готовое решение?Я бы предпочел воздержаться от ссылок на любые внешние библиотеки.Спасибо за вашу помощь.
отредактировано: калибровочную мишень можно локализовать в любой области поля зрения.Ниже приведены лучшие результаты, которые я получил с помощью процедуры OpenCV:
169,367 748,345
167,557 820,788
165,690 893,158
164,047 965,197
162,715 1036,729
161,575 1108,089
160,477 1179,552
233,297 1015,313
232,076 1086,965
220,359 1229,578
268,494 1160,275
339,544 1162,980
362,017 1235,669
433,390 1238,491
482,754 1168,299
505,233 1241,039
554,856 1170,664
577,302 1243,439
627,331 1172,795
649,507 1245,665
713,572 588,896
711,995 661,853
710,440 735,034
708,722 808,856
707,018 882,674
705,377 956,169
703,609 1029,211
701,716 1101,950
699,760 1174,689
721,895 1247,620
785,829 614,754
784,344 687,750
782,819 761,315
781,292 835,225
779,389 908,975
777,619 982,335
775,688 1055,275
773,672 1128,091
771,603 1200,724
Отредактировано: численно сгенерированная модель и реальные координаты центров:
51,1 79,8
51,1 179,8
51,1 279,8
51,1 379,8
51,1 479,8
51,1 579,8
51,1 679,8
51,1 779,8
51,1 879,8
51,1 979,8
51,1 1079,8
51,1 1179,8
51,1 1279,8
51,1 1379,8
51,1 1479,8
151,1 79,8
151,1 179,8
151,1 279,8
151,1 379,8
151,1 479,8
151,1 579,8
151,1 679,8
151,1 779,8
151,1 879,8
151,1 979,8
151,1 1079,8
151,1 1179,8
151,1 1279,8
151,1 1379,8
151,1 1479,8
251,1 79,8
251,1 179,8
251,1 279,8
251,1 379,8
251,1 479,8
251,1 579,8
251,1 679,8
251,1 779,8
251,1 879,8
251,1 979,8
251,1 1079,8
251,1 1179,8
251,1 1279,8
251,1 1379,8
251,1 1479,8
351,1 79,8
351,1 179,8
351,1 279,8
351,1 379,8
351,1 479,8
351,1 579,8
351,1 679,8
351,1 779,8
351,1 879,8
351,1 979,8
351,1 1079,8
351,1 1179,8
351,1 1279,8
351,1 1379,8
351,1 1479,8
451,1 79,8
451,1 179,8
451,1 279,8
451,1 379,8
451,1 479,8
451,1 579,8
451,1 679,8
451,1 779,8
451,1 879,8
451,1 979,8
451,1 1079,8
451,1 1179,8
451,1 1279,8
451,1 1379,8
451,1 1479,8
551,1 79,8
551,1 179,8
551,1 279,8
551,1 379,8
551,1 479,8
551,1 579,8
551,1 679,8
551,1 779,8
551,1 879,8
551,1 979,8
551,1 1079,8
551,1 1179,8
551,1 1279,8
551,1 1379,8
551,1 1479,8
651,1 79,8
651,1 179,8
651,1 279,8
651,1 379,8
651,1 479,8
651,1 579,8
651,1 679,8
651,1 779,8
651,1 879,8
651,1 979,8
651,1 1079,8
651,1 1179,8
651,1 1279,8
651,1 1379,8
651,1 1479,8
751,1 79,8
751,1 179,8
751,1 279,8
751,1 379,8
751,1 479,8
751,1 579,8
751,1 679,8
751,1 779,8
751,1 879,8
751,1 979,8
751,1 1079,8
751,1 1179,8
751,1 1279,8
751,1 1379,8
751,1 1479,8
851,1 79,8
851,1 179,8
851,1 279,8
851,1 379,8
851,1 479,8
851,1 579,8
851,1 679,8
851,1 779,8
851,1 879,8
851,1 979,8
851,1 1079,8
851,1 1179,8
851,1 1279,8
851,1 1379,8
851,1 1479,8
951,1 79,8
951,1 179,8
951,1 279,8
951,1 379,8
951,1 479,8
951,1 579,8
951,1 679,8
951,1 779,8
951,1 879,8
951,1 979,8
951,1 1079,8
951,1 1179,8
951,1 1279,8
951,1 1379,8
951,1 1479,8
1051,1 79,8
1051,1 179,8
1051,1 279,8
1051,1 379,8
1051,1 479,8
1051,1 579,8
1051,1 679,8
1051,1 779,8
1051,1 879,8
1051,1 979,8
1051,1 1079,8
1051,1 1179,8
1051,1 1279,8
1051,1 1379,8
1051,1 1479,8
1151,1 79,8
1151,1 179,8
1151,1 279,8
1151,1 379,8
1151,1 479,8
1151,1 579,8
1151,1 679,8
1151,1 779,8
1151,1 879,8
1151,1 979,8
1151,1 1079,8
1151,1 1179,8
1151,1 1279,8
1151,1 1379,8
1151,1 1479,8