I am working on a project (ball detection) and have managed to get almost all the x,y
coordinates of the ball from every frame from this video
Here are the coordinates in every frame except None
where the algorithm failed to find the ball
points = [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, [985, 325], [978, 345], None, None, None, None, None, [1098, 238], [921, 555], [918, 574], [918, 574], [904, 613], [895, 644], [886, 649], [877, 654], [870, 658], [870, 658], [861, 664], [853, 672], [846, 679], [837, 688], [827, 695], [827, 695], [821, 707], [812, 716], [803, 729], [1051, 313], [786, 755], [786, 755], [782, 769], [782, 746], [786, 730], [793, 700], [800, 677], [800, 677], [803, 656], [807, 640], [814, 620], [819, 593], [819, 579], [819, 579], [825, 562], [831, 546], [834, 532], None, [833, 805], [833, 805], None, None, None, None, None, None, [865, 427], [867, 418], [871, 409], [872, 400], [877, 392], [877, 392], [877, 385], [883, 377], [883, 369], [887, 366], [890, 358], [890, 357], [892, 352], [894, 346], [897, 340], [898, 336], [900, 332], [900, 332], [902, 329], [905, 325], [905, 322], [908, 320], [910, 316], [910, 316], [912, 315], [914, 314], [916, 310], [919, 308], [919, 306], [919, 306], [920, 305], [924, 306], [922, 306], [926, 305], [928, 305], [926, 307], [930, 306], [930, 305], [932, 305], [933, 307], [935, 310], [935, 308], [936, 310], [937, 313], [938, 314], [940, 316], [942, 319], [942, 319], [942, 322], [943, 323], [945, 324], [946, 316], [945, 306], [945, 306], [945, 298], [946, 291], [947, 284], [947, 278], [950, 272], [949, 273], [950, 266], [951, 261], [950, 255], [950, 251], [951, 245], [951, 245], [953, 241], [952, 237], [950, 236], [945, 237], [939, 240], [938, 239], [934, 242], [928, 244], [922, 250], [917, 252], [911, 256], [911, 256], [905, 263], [899, 267], [896, 274], [890, 278], [883, 286], [883, 286], [878, 293], [873, 300], [869, 309], [863, 318], [858, 329], [858, 329], [851, 338], [846, 349], [840, 359], [835, 371], [830, 384], [830, 384], [825, 397], [818, 410], [812, 424], None, None, None, None, None, None, None, [774, 535], [773, 537], [768, 550], [761, 572], [754, 592], [750, 615], [748, 624], [748, 624], [739, 652], [733, 674], [728, 698], [727, 718], [718, 733], [718, 733], [714, 732], [709, 729], [705, 728], [702, 729], [694, 728], [696, 728], [692, 728], [688, 730], [684, 730], [678, 731], [675, 734], [675, 734], [673, 737], [667, 741], [664, 743], [659, 749], [653, 755], [653, 755], [650, 759], [647, 765], [642, 774], [636, 780], [633, 786], [633, 787], [630, 796], [625, 804], [629, 769], [634, 737], [633, 718], [633, 718], [640, 697], [644, 657], [649, 640], [651, 616], [655, 592], [654, 591], [654, 578], [656, 560], [659, 544], [662, 525], None, None, None, [668, 482], None, None, [675, 448], [675, 448], None, [677, 427], [677, 419], [678, 410], [678, 404], [678, 404], [679, 394], [682, 394], [682, 385], [682, 380], [683, 374], [683, 374], [684, 370], [684, 367], [684, 364], [685, 361], [686, 359], [686, 359], [686, 357], [686, 356], [687, 353], [686, 353], [687, 352], [687, 352], [688, 350], [687, 339], [685, 329], [687, 318], [686, 309], [687, 309], [681, 300], [686, 293], [688, 283], [689, 273], [688, 268], [689, 270], [689, 261], [688, 256], [688, 250], [689, 243], [688, 238], [688, 238], [690, 237], [690, 231], [690, 228], [691, 226], [696, 227], [699, 226], [705, 227], None, None, None, None, None, None, None, None, None, [758, 234], [758, 234], [762, 239], [769, 241], [775, 243], [780, 246], [787, 250], [787, 250], [793, 253], [800, 256], [806, 261], [812, 263], [820, 266], [820, 266], [826, 271], [832, 274], [840, 279], [845, 283], [851, 289], [852, 289], [858, 296], [866, 299], [874, 306], [879, 312], [888, 318], [888, 318], [893, 323], [900, 330], [908, 338], [914, 344], [922, 350], [922, 350], [928, 360], [937, 367], [945, 378], [950, 384], None, None, [967, 402], [974, 411], [980, 421], [989, 428], None, None, None, None, None, None, None, None, None, [1054, 518], [1061, 533], [1066, 543], [1076, 557], [1077, 558], [1087, 569], [1093, 585], [1101, 601], [1110, 614], [1119, 629], [1119, 629], [1128, 642], [1136, 662], None, None, None, None, None, None, None, None, None, None, None, [1211, 723], [1216, 718], [1220, 719], [1226, 719], [1227, 718], [1232, 718], [1238, 719], [1243, 721], [1252, 721], [1256, 721], [1256, 721], [1262, 725], [1268, 728], [1273, 731], [1280, 734], [1286, 737], [1286, 737], [1293, 742], [1298, 746], [1305, 749], None, [1299, 691], [1299, 691], [1295, 668], [1295, 649], [1288, 623], [1285, 597], [1280, 571], [1280, 571], [1277, 552], None, None, None, None, None, None, None, None, [1254, 430], [1249, 417], [1249, 417], [1246, 409], [1242, 399], [1239, 392], [1237, 384], [1234, 379], [1234, 379], [1231, 373], [1230, 367], [1227, 364], [1225, 361], [1222, 358], [1222, 358], [1220, 356], [1219, 353], [1214, 353], [1212, 352], [1209, 350], [1209, 350], [1207, 351], [1206, 350], [1204, 352], [1202, 350], [1202, 335], [1202, 335], [1200, 324], [1198, 313], None, [1194, 292], [1195, 281], [1195, 281], [1194, 273], [1191, 263], [1191, 256], [1191, 247], [1190, 239], [1190, 239], [1189, 234], [1189, 228], [1189, 221], [1188, 216], [1186, 213], [1187, 212], [1184, 209], [1183, 205], [1182, 200], [1181, 195], [1181, 195], [1181, 195], None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, [908, 212], [906, 222], [901, 235], [900, 235], [898, 249], [893, 263], [888, 276], [883, 292], [878, 303], [879, 303], [876, 321], [857, 673], [866, 349], [863, 365], [859, 384], [859, 384], [855, 398], [851, 411], [849, 412], [845, 413], [841, 414], [841, 414], [837, 414], [835, 413], [830, 415], [828, 416], [825, 416], [825, 416], [821, 419], [817, 421], [816, 424], [813, 425], [809, 423], [809, 423], [805, 405], [804, 378], [803, 360], [799, 340], [800, 324], [800, 324], [838, 625], None, [793, 274], [791, 259], [788, 248], [788, 248], [787, 235], [783, 224], [783, 214], [781, 204], None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, [856, 617], [857, 617], [860, 617], None, None, None, None, None, None, None, None, None, None, [808, 210], [814, 226], [818, 239], [820, 238], [824, 250], [830, 260], [836, 275], [839, 286], None, None, [852, 321], [858, 334], [860, 350], [868, 366], [875, 383], [875, 383], [880, 402], [885, 418], None, None, None, None, None, None, None, None, None, None, None, None, None, [975, 558], [991, 561], [991, 561], None, [997, 579], None, None, None, None, None, [1017, 577], None, [1028, 565], [942, 433], [942, 433], [943, 424], [944, 420], [946, 412], [949, 407], [948, 401], [948, 401], [948, 397], [949, 391], [950, 391], [952, 385], [954, 381], [954, 381], [954, 378], [954, 375], [955, 372], [956, 371], [956, 368], [956, 368], [956, 368], [960, 365], [959, 363], [960, 364], [961, 364], [961, 364], [963, 363], [963, 364], [962, 364], [965, 365], [967, 367], [967, 367], [967, 367], [966, 370], [966, 371], [968, 374], [969, 377], [969, 377], [969, 381], [969, 384], [969, 388], None, [972, 394], [972, 394], [971, 399], [972, 404], [973, 409], [972, 414], [973, 418], [973, 418], [973, 424], [973, 430], [972, 437], None, None, None, None, None, None, None, None, None, [973, 430], [974, 423], [974, 416], [974, 411], [974, 407], [974, 407], [973, 403], [972, 396], None, [971, 389], [973, 385], [973, 385], [972, 384], [973, 379], [972, 377], [971, 374], [972, 373], [973, 373], None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, [957, 372], None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, [946, 412], [941, 413], [935, 414], [936, 414], [929, 414], [922, 413], [914, 414], [908, 416], [902, 417], [902, 417], [894, 418], [889, 422], [882, 424], [873, 425], [867, 428], [867, 428], [861, 436], [853, 437], None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, [743, 536], [738, 543], [732, 552], [732, 545], [732, 545], [734, 532], None, None, [701, 583], None, None, None, None, None, [766, 425], [770, 413], [769, 414], [774, 405], [776, 392], [780, 384], [783, 374], [788, 363], [788, 363], [791, 354], [794, 346], [799, 339], [802, 331], [805, 324], [805, 324], [808, 319], [813, 312], [814, 304], [818, 299], [824, 295], [824, 295], [828, 288], [828, 285], [832, 280], [835, 276], [838, 274], [838, 274], [842, 269], [846, 266], [848, 265], [852, 262], [855, 260], [855, 260], [857, 259], [861, 256], None, [868, 253], None, None, None, None, None, None, None, None, None, None, None, [1081, 594], [1091, 586], [1091, 586], [1103, 573], [1113, 564], [1126, 553], [1140, 542], [1150, 533], [1150, 533], [1163, 523], None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]
Inside this list are coordinates of the ball touching the court which I am interested in.
These are [[886, 649], [946, 316], [718, 733], [688, 350], [1238, 719], [1202, 350], [809, 423], [973, 430], [1081, 594]]
I already tried finding the difference of adjacent frames and then select the outliers, it didn't work out. (probably because of the None
values)
How else can I find the desired coordinates?
Thanks for any help/suggestion/pointer
I take it that the last coordinate, z, is the vertical axis, the one in which gravity operates. You are watching a ball bounce on a court from above, tracking its position in (x,y), and trying to determine when it bounces.
Theoretically, if there is no friction, the bouncing in z and the motion in (x,y) are independent; the motion in (x,y) will be the same, whether the ball is flying through the air, or bouncing every second, or rolling on the surface. In this case, the task is impossible.
If there is friction, then a bounce may cause a slight change in (x,y) velocity; I haven't analysed the numbers, but by eye I can tell that there is no large change. You could try calculating the velocity over time -- using not just neighboring frames, but long intervals, in order to make precise estimates -- and looking for discontinuities.
If that approach fails, then you must look for other clues to z. You could look for the shadow of the ball, or try to measure the apparent size of the ball.