68 for (y = 3 + y_padding; y < img->
h - 3 - y_padding; y++) {
70 if (min_dist > 0) y_min = y - min_dist;
72 for (x = 3 + x_padding; x < img->
w - 3 - x_padding; x++) {
88 if(ret_corners[i].y < y_min)
91 if (x_min < ret_corners[i].x && ret_corners[i].x < x_max) {
107 const uint8_t *
p = ((
uint8_t *)img->
buf) + y * img->
w * pixel_size + x * pixel_size + pixel_size / 2;
112 if (p[pixel[0]] > cb)
113 if (p[pixel[1]] > cb)
114 if (p[pixel[2]] > cb)
115 if (p[pixel[3]] > cb)
116 if (p[pixel[4]] > cb)
117 if (p[pixel[5]] > cb)
118 if (p[pixel[6]] > cb)
119 if (p[pixel[7]] > cb)
120 if (p[pixel[8]] > cb)
122 else if (p[pixel[15]] > cb)
127 else if (p[pixel[7]] < c_b)
128 if (p[pixel[14]] > cb)
129 if (p[pixel[15]] > cb)
134 else if (p[pixel[14]] < c_b)
135 if (p[pixel[8]] < c_b)
136 if (p[pixel[9]] < c_b)
137 if (p[pixel[10]] < c_b)
138 if (p[pixel[11]] < c_b)
139 if (p[pixel[12]] < c_b)
140 if (p[pixel[13]] < c_b)
141 if (p[pixel[15]] < c_b)
167 else if (p[pixel[14]] > cb)
168 if (p[pixel[15]] > cb)
176 else if (p[pixel[6]] < c_b)
177 if (p[pixel[15]] > cb)
178 if (p[pixel[13]] > cb)
179 if (p[pixel[14]] > cb)
184 else if (p[pixel[13]] < c_b)
185 if (p[pixel[7]] < c_b)
186 if (p[pixel[8]] < c_b)
187 if (p[pixel[9]] < c_b)
188 if (p[pixel[10]] < c_b)
189 if (p[pixel[11]] < c_b)
190 if (p[pixel[12]] < c_b)
191 if (p[pixel[14]] < c_b)
217 else if (p[pixel[7]] < c_b)
218 if (p[pixel[8]] < c_b)
219 if (p[pixel[9]] < c_b)
220 if (p[pixel[10]] < c_b)
221 if (p[pixel[11]] < c_b)
222 if (p[pixel[12]] < c_b)
223 if (p[pixel[13]] < c_b)
224 if (p[pixel[14]] < c_b)
250 else if (p[pixel[13]] > cb)
251 if (p[pixel[14]] > cb)
252 if (p[pixel[15]] > cb)
260 else if (p[pixel[13]] < c_b)
261 if (p[pixel[7]] < c_b)
262 if (p[pixel[8]] < c_b)
263 if (p[pixel[9]] < c_b)
264 if (p[pixel[10]] < c_b)
265 if (p[pixel[11]] < c_b)
266 if (p[pixel[12]] < c_b)
267 if (p[pixel[14]] < c_b)
268 if (p[pixel[15]] < c_b)
297 else if (p[pixel[5]] < c_b)
298 if (p[pixel[14]] > cb)
299 if (p[pixel[12]] > cb)
300 if (p[pixel[13]] > cb)
301 if (p[pixel[15]] > cb)
303 else if (p[pixel[6]] > cb)
304 if (p[pixel[7]] > cb)
305 if (p[pixel[8]] > cb)
306 if (p[pixel[9]] > cb)
307 if (p[pixel[10]] > cb)
308 if (p[pixel[11]] > cb)
331 else if (p[pixel[12]] < c_b)
332 if (p[pixel[6]] < c_b)
333 if (p[pixel[7]] < c_b)
334 if (p[pixel[8]] < c_b)
335 if (p[pixel[9]] < c_b)
336 if (p[pixel[10]] < c_b)
337 if (p[pixel[11]] < c_b)
338 if (p[pixel[13]] < c_b)
364 else if (p[pixel[14]] < c_b)
365 if (p[pixel[7]] < c_b)
366 if (p[pixel[8]] < c_b)
367 if (p[pixel[9]] < c_b)
368 if (p[pixel[10]] < c_b)
369 if (p[pixel[11]] < c_b)
370 if (p[pixel[12]] < c_b)
371 if (p[pixel[13]] < c_b)
372 if (p[pixel[6]] < c_b)
374 else if (p[pixel[15]] < c_b)
400 else if (p[pixel[6]] < c_b)
401 if (p[pixel[7]] < c_b)
402 if (p[pixel[8]] < c_b)
403 if (p[pixel[9]] < c_b)
404 if (p[pixel[10]] < c_b)
405 if (p[pixel[11]] < c_b)
406 if (p[pixel[12]] < c_b)
407 if (p[pixel[13]] < c_b)
433 else if (p[pixel[12]] > cb)
434 if (p[pixel[13]] > cb)
435 if (p[pixel[14]] > cb)
436 if (p[pixel[15]] > cb)
438 else if (p[pixel[6]] > cb)
439 if (p[pixel[7]] > cb)
440 if (p[pixel[8]] > cb)
441 if (p[pixel[9]] > cb)
442 if (p[pixel[10]] > cb)
443 if (p[pixel[11]] > cb)
469 else if (p[pixel[12]] < c_b)
470 if (p[pixel[7]] < c_b)
471 if (p[pixel[8]] < c_b)
472 if (p[pixel[9]] < c_b)
473 if (p[pixel[10]] < c_b)
474 if (p[pixel[11]] < c_b)
475 if (p[pixel[13]] < c_b)
476 if (p[pixel[14]] < c_b)
477 if (p[pixel[6]] < c_b)
479 else if (p[pixel[15]] < c_b)
508 else if (p[pixel[4]] < c_b)
509 if (p[pixel[13]] > cb)
510 if (p[pixel[11]] > cb)
511 if (p[pixel[12]] > cb)
512 if (p[pixel[14]] > cb)
513 if (p[pixel[15]] > cb)
515 else if (p[pixel[6]] > cb)
516 if (p[pixel[7]] > cb)
517 if (p[pixel[8]] > cb)
518 if (p[pixel[9]] > cb)
519 if (p[pixel[10]] > cb)
536 else if (p[pixel[5]] > cb)
537 if (p[pixel[6]] > cb)
538 if (p[pixel[7]] > cb)
539 if (p[pixel[8]] > cb)
540 if (p[pixel[9]] > cb)
541 if (p[pixel[10]] > cb)
564 else if (p[pixel[11]] < c_b)
565 if (p[pixel[5]] < c_b)
566 if (p[pixel[6]] < c_b)
567 if (p[pixel[7]] < c_b)
568 if (p[pixel[8]] < c_b)
569 if (p[pixel[9]] < c_b)
570 if (p[pixel[10]] < c_b)
571 if (p[pixel[12]] < c_b)
597 else if (p[pixel[13]] < c_b)
598 if (p[pixel[7]] < c_b)
599 if (p[pixel[8]] < c_b)
600 if (p[pixel[9]] < c_b)
601 if (p[pixel[10]] < c_b)
602 if (p[pixel[11]] < c_b)
603 if (p[pixel[12]] < c_b)
604 if (p[pixel[6]] < c_b)
605 if (p[pixel[5]] < c_b)
607 else if (p[pixel[14]] < c_b)
612 else if (p[pixel[14]] < c_b)
613 if (p[pixel[15]] < c_b)
639 else if (p[pixel[5]] < c_b)
640 if (p[pixel[6]] < c_b)
641 if (p[pixel[7]] < c_b)
642 if (p[pixel[8]] < c_b)
643 if (p[pixel[9]] < c_b)
644 if (p[pixel[10]] < c_b)
645 if (p[pixel[11]] < c_b)
646 if (p[pixel[12]] < c_b)
672 else if (p[pixel[11]] > cb)
673 if (p[pixel[12]] > cb)
674 if (p[pixel[13]] > cb)
675 if (p[pixel[14]] > cb)
676 if (p[pixel[15]] > cb)
678 else if (p[pixel[6]] > cb)
679 if (p[pixel[7]] > cb)
680 if (p[pixel[8]] > cb)
681 if (p[pixel[9]] > cb)
682 if (p[pixel[10]] > cb)
699 else if (p[pixel[5]] > cb)
700 if (p[pixel[6]] > cb)
701 if (p[pixel[7]] > cb)
702 if (p[pixel[8]] > cb)
703 if (p[pixel[9]] > cb)
704 if (p[pixel[10]] > cb)
730 else if (p[pixel[11]] < c_b)
731 if (p[pixel[7]] < c_b)
732 if (p[pixel[8]] < c_b)
733 if (p[pixel[9]] < c_b)
734 if (p[pixel[10]] < c_b)
735 if (p[pixel[12]] < c_b)
736 if (p[pixel[13]] < c_b)
737 if (p[pixel[6]] < c_b)
738 if (p[pixel[5]] < c_b)
740 else if (p[pixel[14]] < c_b)
745 else if (p[pixel[14]] < c_b)
746 if (p[pixel[15]] < c_b)
775 else if (p[pixel[3]] < c_b)
776 if (p[pixel[10]] > cb)
777 if (p[pixel[11]] > cb)
778 if (p[pixel[12]] > cb)
779 if (p[pixel[13]] > cb)
780 if (p[pixel[14]] > cb)
781 if (p[pixel[15]] > cb)
783 else if (p[pixel[6]] > cb)
784 if (p[pixel[7]] > cb)
785 if (p[pixel[8]] > cb)
786 if (p[pixel[9]] > cb)
800 else if (p[pixel[5]] > cb)
801 if (p[pixel[6]] > cb)
802 if (p[pixel[7]] > cb)
803 if (p[pixel[8]] > cb)
804 if (p[pixel[9]] > cb)
821 else if (p[pixel[4]] > cb)
822 if (p[pixel[5]] > cb)
823 if (p[pixel[6]] > cb)
824 if (p[pixel[7]] > cb)
825 if (p[pixel[8]] > cb)
826 if (p[pixel[9]] > cb)
852 else if (p[pixel[10]] < c_b)
853 if (p[pixel[7]] < c_b)
854 if (p[pixel[8]] < c_b)
855 if (p[pixel[9]] < c_b)
856 if (p[pixel[11]] < c_b)
857 if (p[pixel[6]] < c_b)
858 if (p[pixel[5]] < c_b)
859 if (p[pixel[4]] < c_b)
861 else if (p[pixel[12]] < c_b)
862 if (p[pixel[13]] < c_b)
870 else if (p[pixel[12]] < c_b)
871 if (p[pixel[13]] < c_b)
872 if (p[pixel[14]] < c_b)
883 else if (p[pixel[12]] < c_b)
884 if (p[pixel[13]] < c_b)
885 if (p[pixel[14]] < c_b)
886 if (p[pixel[15]] < c_b)
915 else if (p[pixel[10]] > cb)
916 if (p[pixel[11]] > cb)
917 if (p[pixel[12]] > cb)
918 if (p[pixel[13]] > cb)
919 if (p[pixel[14]] > cb)
920 if (p[pixel[15]] > cb)
922 else if (p[pixel[6]] > cb)
923 if (p[pixel[7]] > cb)
924 if (p[pixel[8]] > cb)
925 if (p[pixel[9]] > cb)
939 else if (p[pixel[5]] > cb)
940 if (p[pixel[6]] > cb)
941 if (p[pixel[7]] > cb)
942 if (p[pixel[8]] > cb)
943 if (p[pixel[9]] > cb)
960 else if (p[pixel[4]] > cb)
961 if (p[pixel[5]] > cb)
962 if (p[pixel[6]] > cb)
963 if (p[pixel[7]] > cb)
964 if (p[pixel[8]] > cb)
965 if (p[pixel[9]] > cb)
991 else if (p[pixel[10]] < c_b)
992 if (p[pixel[7]] < c_b)
993 if (p[pixel[8]] < c_b)
994 if (p[pixel[9]] < c_b)
995 if (p[pixel[11]] < c_b)
996 if (p[pixel[12]] < c_b)
997 if (p[pixel[6]] < c_b)
998 if (p[pixel[5]] < c_b)
999 if (p[pixel[4]] < c_b)
1001 else if (p[pixel[13]] < c_b)
1006 else if (p[pixel[13]] < c_b)
1007 if (p[pixel[14]] < c_b)
1015 else if (p[pixel[13]] < c_b)
1016 if (p[pixel[14]] < c_b)
1017 if (p[pixel[15]] < c_b)
1046 else if (p[pixel[2]] < c_b)
1047 if (p[pixel[9]] > cb)
1048 if (p[pixel[10]] > cb)
1049 if (p[pixel[11]] > cb)
1050 if (p[pixel[12]] > cb)
1051 if (p[pixel[13]] > cb)
1052 if (p[pixel[14]] > cb)
1053 if (p[pixel[15]] > cb)
1055 else if (p[pixel[6]] > cb)
1056 if (p[pixel[7]] > cb)
1057 if (p[pixel[8]] > cb)
1068 else if (p[pixel[5]] > cb)
1069 if (p[pixel[6]] > cb)
1070 if (p[pixel[7]] > cb)
1071 if (p[pixel[8]] > cb)
1085 else if (p[pixel[4]] > cb)
1086 if (p[pixel[5]] > cb)
1087 if (p[pixel[6]] > cb)
1088 if (p[pixel[7]] > cb)
1089 if (p[pixel[8]] > cb)
1106 else if (p[pixel[3]] > cb)
1107 if (p[pixel[4]] > cb)
1108 if (p[pixel[5]] > cb)
1109 if (p[pixel[6]] > cb)
1110 if (p[pixel[7]] > cb)
1111 if (p[pixel[8]] > cb)
1137 else if (p[pixel[9]] < c_b)
1138 if (p[pixel[7]] < c_b)
1139 if (p[pixel[8]] < c_b)
1140 if (p[pixel[10]] < c_b)
1141 if (p[pixel[6]] < c_b)
1142 if (p[pixel[5]] < c_b)
1143 if (p[pixel[4]] < c_b)
1144 if (p[pixel[3]] < c_b)
1146 else if (p[pixel[11]] < c_b)
1147 if (p[pixel[12]] < c_b)
1155 else if (p[pixel[11]] < c_b)
1156 if (p[pixel[12]] < c_b)
1157 if (p[pixel[13]] < c_b)
1168 else if (p[pixel[11]] < c_b)
1169 if (p[pixel[12]] < c_b)
1170 if (p[pixel[13]] < c_b)
1171 if (p[pixel[14]] < c_b)
1185 else if (p[pixel[11]] < c_b)
1186 if (p[pixel[12]] < c_b)
1187 if (p[pixel[13]] < c_b)
1188 if (p[pixel[14]] < c_b)
1189 if (p[pixel[15]] < c_b)
1218 else if (p[pixel[9]] > cb)
1219 if (p[pixel[10]] > cb)
1220 if (p[pixel[11]] > cb)
1221 if (p[pixel[12]] > cb)
1222 if (p[pixel[13]] > cb)
1223 if (p[pixel[14]] > cb)
1224 if (p[pixel[15]] > cb)
1226 else if (p[pixel[6]] > cb)
1227 if (p[pixel[7]] > cb)
1228 if (p[pixel[8]] > cb)
1239 else if (p[pixel[5]] > cb)
1240 if (p[pixel[6]] > cb)
1241 if (p[pixel[7]] > cb)
1242 if (p[pixel[8]] > cb)
1256 else if (p[pixel[4]] > cb)
1257 if (p[pixel[5]] > cb)
1258 if (p[pixel[6]] > cb)
1259 if (p[pixel[7]] > cb)
1260 if (p[pixel[8]] > cb)
1277 else if (p[pixel[3]] > cb)
1278 if (p[pixel[4]] > cb)
1279 if (p[pixel[5]] > cb)
1280 if (p[pixel[6]] > cb)
1281 if (p[pixel[7]] > cb)
1282 if (p[pixel[8]] > cb)
1308 else if (p[pixel[9]] < c_b)
1309 if (p[pixel[7]] < c_b)
1310 if (p[pixel[8]] < c_b)
1311 if (p[pixel[10]] < c_b)
1312 if (p[pixel[11]] < c_b)
1313 if (p[pixel[6]] < c_b)
1314 if (p[pixel[5]] < c_b)
1315 if (p[pixel[4]] < c_b)
1316 if (p[pixel[3]] < c_b)
1318 else if (p[pixel[12]] < c_b)
1323 else if (p[pixel[12]] < c_b)
1324 if (p[pixel[13]] < c_b)
1332 else if (p[pixel[12]] < c_b)
1333 if (p[pixel[13]] < c_b)
1334 if (p[pixel[14]] < c_b)
1345 else if (p[pixel[12]] < c_b)
1346 if (p[pixel[13]] < c_b)
1347 if (p[pixel[14]] < c_b)
1348 if (p[pixel[15]] < c_b)
1377 else if (p[pixel[1]] < c_b)
1378 if (p[pixel[8]] > cb)
1379 if (p[pixel[9]] > cb)
1380 if (p[pixel[10]] > cb)
1381 if (p[pixel[11]] > cb)
1382 if (p[pixel[12]] > cb)
1383 if (p[pixel[13]] > cb)
1384 if (p[pixel[14]] > cb)
1385 if (p[pixel[15]] > cb)
1387 else if (p[pixel[6]] > cb)
1388 if (p[pixel[7]] > cb)
1396 else if (p[pixel[5]] > cb)
1397 if (p[pixel[6]] > cb)
1398 if (p[pixel[7]] > cb)
1409 else if (p[pixel[4]] > cb)
1410 if (p[pixel[5]] > cb)
1411 if (p[pixel[6]] > cb)
1412 if (p[pixel[7]] > cb)
1426 else if (p[pixel[3]] > cb)
1427 if (p[pixel[4]] > cb)
1428 if (p[pixel[5]] > cb)
1429 if (p[pixel[6]] > cb)
1430 if (p[pixel[7]] > cb)
1447 else if (p[pixel[2]] > cb)
1448 if (p[pixel[3]] > cb)
1449 if (p[pixel[4]] > cb)
1450 if (p[pixel[5]] > cb)
1451 if (p[pixel[6]] > cb)
1452 if (p[pixel[7]] > cb)
1478 else if (p[pixel[8]] < c_b)
1479 if (p[pixel[7]] < c_b)
1480 if (p[pixel[9]] < c_b)
1481 if (p[pixel[6]] < c_b)
1482 if (p[pixel[5]] < c_b)
1483 if (p[pixel[4]] < c_b)
1484 if (p[pixel[3]] < c_b)
1485 if (p[pixel[2]] < c_b)
1487 else if (p[pixel[10]] < c_b)
1488 if (p[pixel[11]] < c_b)
1496 else if (p[pixel[10]] < c_b)
1497 if (p[pixel[11]] < c_b)
1498 if (p[pixel[12]] < c_b)
1509 else if (p[pixel[10]] < c_b)
1510 if (p[pixel[11]] < c_b)
1511 if (p[pixel[12]] < c_b)
1512 if (p[pixel[13]] < c_b)
1526 else if (p[pixel[10]] < c_b)
1527 if (p[pixel[11]] < c_b)
1528 if (p[pixel[12]] < c_b)
1529 if (p[pixel[13]] < c_b)
1530 if (p[pixel[14]] < c_b)
1547 else if (p[pixel[10]] < c_b)
1548 if (p[pixel[11]] < c_b)
1549 if (p[pixel[12]] < c_b)
1550 if (p[pixel[13]] < c_b)
1551 if (p[pixel[14]] < c_b)
1552 if (p[pixel[15]] < c_b)
1581 else if (p[pixel[8]] > cb)
1582 if (p[pixel[9]] > cb)
1583 if (p[pixel[10]] > cb)
1584 if (p[pixel[11]] > cb)
1585 if (p[pixel[12]] > cb)
1586 if (p[pixel[13]] > cb)
1587 if (p[pixel[14]] > cb)
1588 if (p[pixel[15]] > cb)
1590 else if (p[pixel[6]] > cb)
1591 if (p[pixel[7]] > cb)
1599 else if (p[pixel[5]] > cb)
1600 if (p[pixel[6]] > cb)
1601 if (p[pixel[7]] > cb)
1612 else if (p[pixel[4]] > cb)
1613 if (p[pixel[5]] > cb)
1614 if (p[pixel[6]] > cb)
1615 if (p[pixel[7]] > cb)
1629 else if (p[pixel[3]] > cb)
1630 if (p[pixel[4]] > cb)
1631 if (p[pixel[5]] > cb)
1632 if (p[pixel[6]] > cb)
1633 if (p[pixel[7]] > cb)
1650 else if (p[pixel[2]] > cb)
1651 if (p[pixel[3]] > cb)
1652 if (p[pixel[4]] > cb)
1653 if (p[pixel[5]] > cb)
1654 if (p[pixel[6]] > cb)
1655 if (p[pixel[7]] > cb)
1681 else if (p[pixel[8]] < c_b)
1682 if (p[pixel[7]] < c_b)
1683 if (p[pixel[9]] < c_b)
1684 if (p[pixel[10]] < c_b)
1685 if (p[pixel[6]] < c_b)
1686 if (p[pixel[5]] < c_b)
1687 if (p[pixel[4]] < c_b)
1688 if (p[pixel[3]] < c_b)
1689 if (p[pixel[2]] < c_b)
1691 else if (p[pixel[11]] < c_b)
1696 else if (p[pixel[11]] < c_b)
1697 if (p[pixel[12]] < c_b)
1705 else if (p[pixel[11]] < c_b)
1706 if (p[pixel[12]] < c_b)
1707 if (p[pixel[13]] < c_b)
1718 else if (p[pixel[11]] < c_b)
1719 if (p[pixel[12]] < c_b)
1720 if (p[pixel[13]] < c_b)
1721 if (p[pixel[14]] < c_b)
1735 else if (p[pixel[11]] < c_b)
1736 if (p[pixel[12]] < c_b)
1737 if (p[pixel[13]] < c_b)
1738 if (p[pixel[14]] < c_b)
1739 if (p[pixel[15]] < c_b)
1768 else if (p[pixel[0]] < c_b)
1769 if (p[pixel[1]] > cb)
1770 if (p[pixel[8]] > cb)
1771 if (p[pixel[7]] > cb)
1772 if (p[pixel[9]] > cb)
1773 if (p[pixel[6]] > cb)
1774 if (p[pixel[5]] > cb)
1775 if (p[pixel[4]] > cb)
1776 if (p[pixel[3]] > cb)
1777 if (p[pixel[2]] > cb)
1779 else if (p[pixel[10]] > cb)
1780 if (p[pixel[11]] > cb)
1788 else if (p[pixel[10]] > cb)
1789 if (p[pixel[11]] > cb)
1790 if (p[pixel[12]] > cb)
1801 else if (p[pixel[10]] > cb)
1802 if (p[pixel[11]] > cb)
1803 if (p[pixel[12]] > cb)
1804 if (p[pixel[13]] > cb)
1818 else if (p[pixel[10]] > cb)
1819 if (p[pixel[11]] > cb)
1820 if (p[pixel[12]] > cb)
1821 if (p[pixel[13]] > cb)
1822 if (p[pixel[14]] > cb)
1839 else if (p[pixel[10]] > cb)
1840 if (p[pixel[11]] > cb)
1841 if (p[pixel[12]] > cb)
1842 if (p[pixel[13]] > cb)
1843 if (p[pixel[14]] > cb)
1844 if (p[pixel[15]] > cb)
1870 else if (p[pixel[8]] < c_b)
1871 if (p[pixel[9]] < c_b)
1872 if (p[pixel[10]] < c_b)
1873 if (p[pixel[11]] < c_b)
1874 if (p[pixel[12]] < c_b)
1875 if (p[pixel[13]] < c_b)
1876 if (p[pixel[14]] < c_b)
1877 if (p[pixel[15]] < c_b)
1879 else if (p[pixel[6]] < c_b)
1880 if (p[pixel[7]] < c_b)
1888 else if (p[pixel[5]] < c_b)
1889 if (p[pixel[6]] < c_b)
1890 if (p[pixel[7]] < c_b)
1901 else if (p[pixel[4]] < c_b)
1902 if (p[pixel[5]] < c_b)
1903 if (p[pixel[6]] < c_b)
1904 if (p[pixel[7]] < c_b)
1918 else if (p[pixel[3]] < c_b)
1919 if (p[pixel[4]] < c_b)
1920 if (p[pixel[5]] < c_b)
1921 if (p[pixel[6]] < c_b)
1922 if (p[pixel[7]] < c_b)
1939 else if (p[pixel[2]] < c_b)
1940 if (p[pixel[3]] < c_b)
1941 if (p[pixel[4]] < c_b)
1942 if (p[pixel[5]] < c_b)
1943 if (p[pixel[6]] < c_b)
1944 if (p[pixel[7]] < c_b)
1973 else if (p[pixel[1]] < c_b)
1974 if (p[pixel[2]] > cb)
1975 if (p[pixel[9]] > cb)
1976 if (p[pixel[7]] > cb)
1977 if (p[pixel[8]] > cb)
1978 if (p[pixel[10]] > cb)
1979 if (p[pixel[6]] > cb)
1980 if (p[pixel[5]] > cb)
1981 if (p[pixel[4]] > cb)
1982 if (p[pixel[3]] > cb)
1984 else if (p[pixel[11]] > cb)
1985 if (p[pixel[12]] > cb)
1993 else if (p[pixel[11]] > cb)
1994 if (p[pixel[12]] > cb)
1995 if (p[pixel[13]] > cb)
2006 else if (p[pixel[11]] > cb)
2007 if (p[pixel[12]] > cb)
2008 if (p[pixel[13]] > cb)
2009 if (p[pixel[14]] > cb)
2023 else if (p[pixel[11]] > cb)
2024 if (p[pixel[12]] > cb)
2025 if (p[pixel[13]] > cb)
2026 if (p[pixel[14]] > cb)
2027 if (p[pixel[15]] > cb)
2053 else if (p[pixel[9]] < c_b)
2054 if (p[pixel[10]] < c_b)
2055 if (p[pixel[11]] < c_b)
2056 if (p[pixel[12]] < c_b)
2057 if (p[pixel[13]] < c_b)
2058 if (p[pixel[14]] < c_b)
2059 if (p[pixel[15]] < c_b)
2061 else if (p[pixel[6]] < c_b)
2062 if (p[pixel[7]] < c_b)
2063 if (p[pixel[8]] < c_b)
2074 else if (p[pixel[5]] < c_b)
2075 if (p[pixel[6]] < c_b)
2076 if (p[pixel[7]] < c_b)
2077 if (p[pixel[8]] < c_b)
2091 else if (p[pixel[4]] < c_b)
2092 if (p[pixel[5]] < c_b)
2093 if (p[pixel[6]] < c_b)
2094 if (p[pixel[7]] < c_b)
2095 if (p[pixel[8]] < c_b)
2112 else if (p[pixel[3]] < c_b)
2113 if (p[pixel[4]] < c_b)
2114 if (p[pixel[5]] < c_b)
2115 if (p[pixel[6]] < c_b)
2116 if (p[pixel[7]] < c_b)
2117 if (p[pixel[8]] < c_b)
2146 else if (p[pixel[2]] < c_b)
2147 if (p[pixel[3]] > cb)
2148 if (p[pixel[10]] > cb)
2149 if (p[pixel[7]] > cb)
2150 if (p[pixel[8]] > cb)
2151 if (p[pixel[9]] > cb)
2152 if (p[pixel[11]] > cb)
2153 if (p[pixel[6]] > cb)
2154 if (p[pixel[5]] > cb)
2155 if (p[pixel[4]] > cb)
2157 else if (p[pixel[12]] > cb)
2158 if (p[pixel[13]] > cb)
2166 else if (p[pixel[12]] > cb)
2167 if (p[pixel[13]] > cb)
2168 if (p[pixel[14]] > cb)
2179 else if (p[pixel[12]] > cb)
2180 if (p[pixel[13]] > cb)
2181 if (p[pixel[14]] > cb)
2182 if (p[pixel[15]] > cb)
2208 else if (p[pixel[10]] < c_b)
2209 if (p[pixel[11]] < c_b)
2210 if (p[pixel[12]] < c_b)
2211 if (p[pixel[13]] < c_b)
2212 if (p[pixel[14]] < c_b)
2213 if (p[pixel[15]] < c_b)
2215 else if (p[pixel[6]] < c_b)
2216 if (p[pixel[7]] < c_b)
2217 if (p[pixel[8]] < c_b)
2218 if (p[pixel[9]] < c_b)
2232 else if (p[pixel[5]] < c_b)
2233 if (p[pixel[6]] < c_b)
2234 if (p[pixel[7]] < c_b)
2235 if (p[pixel[8]] < c_b)
2236 if (p[pixel[9]] < c_b)
2253 else if (p[pixel[4]] < c_b)
2254 if (p[pixel[5]] < c_b)
2255 if (p[pixel[6]] < c_b)
2256 if (p[pixel[7]] < c_b)
2257 if (p[pixel[8]] < c_b)
2258 if (p[pixel[9]] < c_b)
2287 else if (p[pixel[3]] < c_b)
2288 if (p[pixel[4]] > cb)
2289 if (p[pixel[13]] > cb)
2290 if (p[pixel[7]] > cb)
2291 if (p[pixel[8]] > cb)
2292 if (p[pixel[9]] > cb)
2293 if (p[pixel[10]] > cb)
2294 if (p[pixel[11]] > cb)
2295 if (p[pixel[12]] > cb)
2296 if (p[pixel[6]] > cb)
2297 if (p[pixel[5]] > cb)
2299 else if (p[pixel[14]] > cb)
2304 else if (p[pixel[14]] > cb)
2305 if (p[pixel[15]] > cb)
2331 else if (p[pixel[13]] < c_b)
2332 if (p[pixel[11]] > cb)
2333 if (p[pixel[5]] > cb)
2334 if (p[pixel[6]] > cb)
2335 if (p[pixel[7]] > cb)
2336 if (p[pixel[8]] > cb)
2337 if (p[pixel[9]] > cb)
2338 if (p[pixel[10]] > cb)
2339 if (p[pixel[12]] > cb)
2362 else if (p[pixel[11]] < c_b)
2363 if (p[pixel[12]] < c_b)
2364 if (p[pixel[14]] < c_b)
2365 if (p[pixel[15]] < c_b)
2367 else if (p[pixel[6]] < c_b)
2368 if (p[pixel[7]] < c_b)
2369 if (p[pixel[8]] < c_b)
2370 if (p[pixel[9]] < c_b)
2371 if (p[pixel[10]] < c_b)
2388 else if (p[pixel[5]] < c_b)
2389 if (p[pixel[6]] < c_b)
2390 if (p[pixel[7]] < c_b)
2391 if (p[pixel[8]] < c_b)
2392 if (p[pixel[9]] < c_b)
2393 if (p[pixel[10]] < c_b)
2419 else if (p[pixel[5]] > cb)
2420 if (p[pixel[6]] > cb)
2421 if (p[pixel[7]] > cb)
2422 if (p[pixel[8]] > cb)
2423 if (p[pixel[9]] > cb)
2424 if (p[pixel[10]] > cb)
2425 if (p[pixel[11]] > cb)
2426 if (p[pixel[12]] > cb)
2452 else if (p[pixel[4]] < c_b)
2453 if (p[pixel[5]] > cb)
2454 if (p[pixel[14]] > cb)
2455 if (p[pixel[7]] > cb)
2456 if (p[pixel[8]] > cb)
2457 if (p[pixel[9]] > cb)
2458 if (p[pixel[10]] > cb)
2459 if (p[pixel[11]] > cb)
2460 if (p[pixel[12]] > cb)
2461 if (p[pixel[13]] > cb)
2462 if (p[pixel[6]] > cb)
2464 else if (p[pixel[15]] > cb)
2490 else if (p[pixel[14]] < c_b)
2491 if (p[pixel[12]] > cb)
2492 if (p[pixel[6]] > cb)
2493 if (p[pixel[7]] > cb)
2494 if (p[pixel[8]] > cb)
2495 if (p[pixel[9]] > cb)
2496 if (p[pixel[10]] > cb)
2497 if (p[pixel[11]] > cb)
2498 if (p[pixel[13]] > cb)
2521 else if (p[pixel[12]] < c_b)
2522 if (p[pixel[13]] < c_b)
2523 if (p[pixel[15]] < c_b)
2525 else if (p[pixel[6]] < c_b)
2526 if (p[pixel[7]] < c_b)
2527 if (p[pixel[8]] < c_b)
2528 if (p[pixel[9]] < c_b)
2529 if (p[pixel[10]] < c_b)
2530 if (p[pixel[11]] < c_b)
2556 else if (p[pixel[6]] > cb)
2557 if (p[pixel[7]] > cb)
2558 if (p[pixel[8]] > cb)
2559 if (p[pixel[9]] > cb)
2560 if (p[pixel[10]] > cb)
2561 if (p[pixel[11]] > cb)
2562 if (p[pixel[12]] > cb)
2563 if (p[pixel[13]] > cb)
2589 else if (p[pixel[5]] < c_b)
2590 if (p[pixel[6]] > cb)
2591 if (p[pixel[15]] < c_b)
2592 if (p[pixel[13]] > cb)
2593 if (p[pixel[7]] > cb)
2594 if (p[pixel[8]] > cb)
2595 if (p[pixel[9]] > cb)
2596 if (p[pixel[10]] > cb)
2597 if (p[pixel[11]] > cb)
2598 if (p[pixel[12]] > cb)
2599 if (p[pixel[14]] > cb)
2622 else if (p[pixel[13]] < c_b)
2623 if (p[pixel[14]] < c_b)
2631 else if (p[pixel[7]] > cb)
2632 if (p[pixel[8]] > cb)
2633 if (p[pixel[9]] > cb)
2634 if (p[pixel[10]] > cb)
2635 if (p[pixel[11]] > cb)
2636 if (p[pixel[12]] > cb)
2637 if (p[pixel[13]] > cb)
2638 if (p[pixel[14]] > cb)
2664 else if (p[pixel[6]] < c_b)
2665 if (p[pixel[7]] > cb)
2666 if (p[pixel[14]] > cb)
2667 if (p[pixel[8]] > cb)
2668 if (p[pixel[9]] > cb)
2669 if (p[pixel[10]] > cb)
2670 if (p[pixel[11]] > cb)
2671 if (p[pixel[12]] > cb)
2672 if (p[pixel[13]] > cb)
2673 if (p[pixel[15]] > cb)
2696 else if (p[pixel[14]] < c_b)
2697 if (p[pixel[15]] < c_b)
2705 else if (p[pixel[7]] < c_b)
2706 if (p[pixel[8]] < c_b)
2708 else if (p[pixel[15]] < c_b)
2713 else if (p[pixel[14]] < c_b)
2714 if (p[pixel[15]] < c_b)
2722 else if (p[pixel[13]] > cb)
2723 if (p[pixel[7]] > cb)
2724 if (p[pixel[8]] > cb)
2725 if (p[pixel[9]] > cb)
2726 if (p[pixel[10]] > cb)
2727 if (p[pixel[11]] > cb)
2728 if (p[pixel[12]] > cb)
2729 if (p[pixel[14]] > cb)
2730 if (p[pixel[15]] > cb)
2756 else if (p[pixel[13]] < c_b)
2757 if (p[pixel[14]] < c_b)
2758 if (p[pixel[15]] < c_b)
2769 else if (p[pixel[12]] > cb)
2770 if (p[pixel[7]] > cb)
2771 if (p[pixel[8]] > cb)
2772 if (p[pixel[9]] > cb)
2773 if (p[pixel[10]] > cb)
2774 if (p[pixel[11]] > cb)
2775 if (p[pixel[13]] > cb)
2776 if (p[pixel[14]] > cb)
2777 if (p[pixel[6]] > cb)
2779 else if (p[pixel[15]] > cb)
2805 else if (p[pixel[12]] < c_b)
2806 if (p[pixel[13]] < c_b)
2807 if (p[pixel[14]] < c_b)
2808 if (p[pixel[15]] < c_b)
2810 else if (p[pixel[6]] < c_b)
2811 if (p[pixel[7]] < c_b)
2812 if (p[pixel[8]] < c_b)
2813 if (p[pixel[9]] < c_b)
2814 if (p[pixel[10]] < c_b)
2815 if (p[pixel[11]] < c_b)
2844 else if (p[pixel[11]] > cb)
2845 if (p[pixel[7]] > cb)
2846 if (p[pixel[8]] > cb)
2847 if (p[pixel[9]] > cb)
2848 if (p[pixel[10]] > cb)
2849 if (p[pixel[12]] > cb)
2850 if (p[pixel[13]] > cb)
2851 if (p[pixel[6]] > cb)
2852 if (p[pixel[5]] > cb)
2854 else if (p[pixel[14]] > cb)
2859 else if (p[pixel[14]] > cb)
2860 if (p[pixel[15]] > cb)
2886 else if (p[pixel[11]] < c_b)
2887 if (p[pixel[12]] < c_b)
2888 if (p[pixel[13]] < c_b)
2889 if (p[pixel[14]] < c_b)
2890 if (p[pixel[15]] < c_b)
2892 else if (p[pixel[6]] < c_b)
2893 if (p[pixel[7]] < c_b)
2894 if (p[pixel[8]] < c_b)
2895 if (p[pixel[9]] < c_b)
2896 if (p[pixel[10]] < c_b)
2913 else if (p[pixel[5]] < c_b)
2914 if (p[pixel[6]] < c_b)
2915 if (p[pixel[7]] < c_b)
2916 if (p[pixel[8]] < c_b)
2917 if (p[pixel[9]] < c_b)
2918 if (p[pixel[10]] < c_b)
2947 else if (p[pixel[10]] > cb)
2948 if (p[pixel[7]] > cb)
2949 if (p[pixel[8]] > cb)
2950 if (p[pixel[9]] > cb)
2951 if (p[pixel[11]] > cb)
2952 if (p[pixel[12]] > cb)
2953 if (p[pixel[6]] > cb)
2954 if (p[pixel[5]] > cb)
2955 if (p[pixel[4]] > cb)
2957 else if (p[pixel[13]] > cb)
2962 else if (p[pixel[13]] > cb)
2963 if (p[pixel[14]] > cb)
2971 else if (p[pixel[13]] > cb)
2972 if (p[pixel[14]] > cb)
2973 if (p[pixel[15]] > cb)
2999 else if (p[pixel[10]] < c_b)
3000 if (p[pixel[11]] < c_b)
3001 if (p[pixel[12]] < c_b)
3002 if (p[pixel[13]] < c_b)
3003 if (p[pixel[14]] < c_b)
3004 if (p[pixel[15]] < c_b)
3006 else if (p[pixel[6]] < c_b)
3007 if (p[pixel[7]] < c_b)
3008 if (p[pixel[8]] < c_b)
3009 if (p[pixel[9]] < c_b)
3023 else if (p[pixel[5]] < c_b)
3024 if (p[pixel[6]] < c_b)
3025 if (p[pixel[7]] < c_b)
3026 if (p[pixel[8]] < c_b)
3027 if (p[pixel[9]] < c_b)
3044 else if (p[pixel[4]] < c_b)
3045 if (p[pixel[5]] < c_b)
3046 if (p[pixel[6]] < c_b)
3047 if (p[pixel[7]] < c_b)
3048 if (p[pixel[8]] < c_b)
3049 if (p[pixel[9]] < c_b)
3078 else if (p[pixel[9]] > cb)
3079 if (p[pixel[7]] > cb)
3080 if (p[pixel[8]] > cb)
3081 if (p[pixel[10]] > cb)
3082 if (p[pixel[11]] > cb)
3083 if (p[pixel[6]] > cb)
3084 if (p[pixel[5]] > cb)
3085 if (p[pixel[4]] > cb)
3086 if (p[pixel[3]] > cb)
3088 else if (p[pixel[12]] > cb)
3093 else if (p[pixel[12]] > cb)
3094 if (p[pixel[13]] > cb)
3102 else if (p[pixel[12]] > cb)
3103 if (p[pixel[13]] > cb)
3104 if (p[pixel[14]] > cb)
3115 else if (p[pixel[12]] > cb)
3116 if (p[pixel[13]] > cb)
3117 if (p[pixel[14]] > cb)
3118 if (p[pixel[15]] > cb)
3144 else if (p[pixel[9]] < c_b)
3145 if (p[pixel[10]] < c_b)
3146 if (p[pixel[11]] < c_b)
3147 if (p[pixel[12]] < c_b)
3148 if (p[pixel[13]] < c_b)
3149 if (p[pixel[14]] < c_b)
3150 if (p[pixel[15]] < c_b)
3152 else if (p[pixel[6]] < c_b)
3153 if (p[pixel[7]] < c_b)
3154 if (p[pixel[8]] < c_b)
3165 else if (p[pixel[5]] < c_b)
3166 if (p[pixel[6]] < c_b)
3167 if (p[pixel[7]] < c_b)
3168 if (p[pixel[8]] < c_b)
3182 else if (p[pixel[4]] < c_b)
3183 if (p[pixel[5]] < c_b)
3184 if (p[pixel[6]] < c_b)
3185 if (p[pixel[7]] < c_b)
3186 if (p[pixel[8]] < c_b)
3203 else if (p[pixel[3]] < c_b)
3204 if (p[pixel[4]] < c_b)
3205 if (p[pixel[5]] < c_b)
3206 if (p[pixel[6]] < c_b)
3207 if (p[pixel[7]] < c_b)
3208 if (p[pixel[8]] < c_b)
3237 else if (p[pixel[8]] > cb)
3238 if (p[pixel[7]] > cb)
3239 if (p[pixel[9]] > cb)
3240 if (p[pixel[10]] > cb)
3241 if (p[pixel[6]] > cb)
3242 if (p[pixel[5]] > cb)
3243 if (p[pixel[4]] > cb)
3244 if (p[pixel[3]] > cb)
3245 if (p[pixel[2]] > cb)
3247 else if (p[pixel[11]] > cb)
3252 else if (p[pixel[11]] > cb)
3253 if (p[pixel[12]] > cb)
3261 else if (p[pixel[11]] > cb)
3262 if (p[pixel[12]] > cb)
3263 if (p[pixel[13]] > cb)
3274 else if (p[pixel[11]] > cb)
3275 if (p[pixel[12]] > cb)
3276 if (p[pixel[13]] > cb)
3277 if (p[pixel[14]] > cb)
3291 else if (p[pixel[11]] > cb)
3292 if (p[pixel[12]] > cb)
3293 if (p[pixel[13]] > cb)
3294 if (p[pixel[14]] > cb)
3295 if (p[pixel[15]] > cb)
3321 else if (p[pixel[8]] < c_b)
3322 if (p[pixel[9]] < c_b)
3323 if (p[pixel[10]] < c_b)
3324 if (p[pixel[11]] < c_b)
3325 if (p[pixel[12]] < c_b)
3326 if (p[pixel[13]] < c_b)
3327 if (p[pixel[14]] < c_b)
3328 if (p[pixel[15]] < c_b)
3330 else if (p[pixel[6]] < c_b)
3331 if (p[pixel[7]] < c_b)
3339 else if (p[pixel[5]] < c_b)
3340 if (p[pixel[6]] < c_b)
3341 if (p[pixel[7]] < c_b)
3352 else if (p[pixel[4]] < c_b)
3353 if (p[pixel[5]] < c_b)
3354 if (p[pixel[6]] < c_b)
3355 if (p[pixel[7]] < c_b)
3369 else if (p[pixel[3]] < c_b)
3370 if (p[pixel[4]] < c_b)
3371 if (p[pixel[5]] < c_b)
3372 if (p[pixel[6]] < c_b)
3373 if (p[pixel[7]] < c_b)
3390 else if (p[pixel[2]] < c_b)
3391 if (p[pixel[3]] < c_b)
3392 if (p[pixel[4]] < c_b)
3393 if (p[pixel[5]] < c_b)
3394 if (p[pixel[6]] < c_b)
3395 if (p[pixel[7]] < c_b)
3424 else if (p[pixel[7]] > cb)
3425 if (p[pixel[8]] > cb)
3426 if (p[pixel[9]] > cb)
3427 if (p[pixel[6]] > cb)
3428 if (p[pixel[5]] > cb)
3429 if (p[pixel[4]] > cb)
3430 if (p[pixel[3]] > cb)
3431 if (p[pixel[2]] > cb)
3432 if (p[pixel[1]] > cb)
3434 else if (p[pixel[10]] > cb)
3439 else if (p[pixel[10]] > cb)
3440 if (p[pixel[11]] > cb)
3448 else if (p[pixel[10]] > cb)
3449 if (p[pixel[11]] > cb)
3450 if (p[pixel[12]] > cb)
3461 else if (p[pixel[10]] > cb)
3462 if (p[pixel[11]] > cb)
3463 if (p[pixel[12]] > cb)
3464 if (p[pixel[13]] > cb)
3478 else if (p[pixel[10]] > cb)
3479 if (p[pixel[11]] > cb)
3480 if (p[pixel[12]] > cb)
3481 if (p[pixel[13]] > cb)
3482 if (p[pixel[14]] > cb)
3499 else if (p[pixel[10]] > cb)
3500 if (p[pixel[11]] > cb)
3501 if (p[pixel[12]] > cb)
3502 if (p[pixel[13]] > cb)
3503 if (p[pixel[14]] > cb)
3504 if (p[pixel[15]] > cb)
3530 else if (p[pixel[7]] < c_b)
3531 if (p[pixel[8]] < c_b)
3532 if (p[pixel[9]] < c_b)
3533 if (p[pixel[6]] < c_b)
3534 if (p[pixel[5]] < c_b)
3535 if (p[pixel[4]] < c_b)
3536 if (p[pixel[3]] < c_b)
3537 if (p[pixel[2]] < c_b)
3538 if (p[pixel[1]] < c_b)
3540 else if (p[pixel[10]] < c_b)
3545 else if (p[pixel[10]] < c_b)
3546 if (p[pixel[11]] < c_b)
3554 else if (p[pixel[10]] < c_b)
3555 if (p[pixel[11]] < c_b)
3556 if (p[pixel[12]] < c_b)
3567 else if (p[pixel[10]] < c_b)
3568 if (p[pixel[11]] < c_b)
3569 if (p[pixel[12]] < c_b)
3570 if (p[pixel[13]] < c_b)
3584 else if (p[pixel[10]] < c_b)
3585 if (p[pixel[11]] < c_b)
3586 if (p[pixel[12]] < c_b)
3587 if (p[pixel[13]] < c_b)
3588 if (p[pixel[14]] < c_b)
3605 else if (p[pixel[10]] < c_b)
3606 if (p[pixel[11]] < c_b)
3607 if (p[pixel[12]] < c_b)
3608 if (p[pixel[13]] < c_b)
3609 if (p[pixel[14]] < c_b)
3610 if (p[pixel[15]] < c_b)
3641 if (corner_cnt >= *ret_corners_length) {
3642 *ret_corners_length *= 2;
3643 ret_corners = realloc(ret_corners,
sizeof(
struct point_t) * (*ret_corners_length));
3646 ret_corners[corner_cnt].
x = x;
3647 ret_corners[corner_cnt].
y = y;
3654 *num_corners = corner_cnt;
3664 pixel[0] = 0 * pixel_size + row_stride * 3 * pixel_size;
3665 pixel[1] = 1 * pixel_size + row_stride * 3 * pixel_size;
3666 pixel[2] = 2 * pixel_size + row_stride * 2 * pixel_size;
3667 pixel[3] = 3 * pixel_size + row_stride * 1 * pixel_size;
3668 pixel[4] = 3 * pixel_size + row_stride * 0 * pixel_size;
3669 pixel[5] = 3 * pixel_size + row_stride * -1 * pixel_size;
3670 pixel[6] = 2 * pixel_size + row_stride * -2 * pixel_size;
3671 pixel[7] = 1 * pixel_size + row_stride * -3 * pixel_size;
3672 pixel[8] = 0 * pixel_size + row_stride * -3 * pixel_size;
3673 pixel[9] = -1 * pixel_size + row_stride * -3 * pixel_size;
3674 pixel[10] = -2 * pixel_size + row_stride * -2 * pixel_size;
3675 pixel[11] = -3 * pixel_size + row_stride * -1 * pixel_size;
3676 pixel[12] = -3 * pixel_size + row_stride * 0 * pixel_size;
3677 pixel[13] = -3 * pixel_size + row_stride * 1 * pixel_size;
3678 pixel[14] = -2 * pixel_size + row_stride * 2 * pixel_size;
3679 pixel[15] = -1 * pixel_size + row_stride * 3 * pixel_size;
uint32_t x
The x coordinate of the point.
void fast9_detect(struct image_t *img, uint8_t threshold, uint16_t min_dist, uint16_t x_padding, uint16_t y_padding, uint16_t *num_corners, uint16_t *ret_corners_length, struct point_t *ret_corners)
Do a FAST9 corner detection.
void * buf
Image buffer (depending on the image_type)
uint32_t y
The y coordinate of the point.
static void fast_make_offsets(int32_t *pixel, uint16_t row_stride, uint8_t pixel_size)
Make offsets for FAST9 calculation.
UYVY format (uint16 per pixel)
enum image_type type
The image type.