Paparazzi UAS  v5.8.2_stable-0-g6260b7c
Paparazzi is a free software Unmanned Aircraft System.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
fast_rosten.c
Go to the documentation of this file.
1 /*
2 Copyright (c) 2006, 2008 Edward Rosten
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions
7 are met:
8 
9 
10  *Redistributions of source code must retain the above copyright
11  notice, this list of conditions and the following disclaimer.
12 
13  *Redistributions in binary form must reproduce the above copyright
14  notice, this list of conditions and the following disclaimer in the
15  documentation and/or other materials provided with the distribution.
16 
17  *Neither the name of the University of Cambridge nor the names of
18  its contributors may be used to endorse or promote products derived
19  from this software without specific prior written permission.
20 
21 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25 CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33 
34 #include <stdlib.h>
35 #include "fast_rosten.h"
36 
37 static void fast_make_offsets(int32_t *pixel, uint16_t row_stride, uint8_t pixel_size);
38 
49 struct point_t *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) {
50  uint32_t corner_cnt = 0;
51  uint16_t rsize = 512;
52  int pixel[16];
53  uint16_t x, y, i;
54  struct point_t *ret_corners = malloc(sizeof(struct point_t) * rsize);
55 
56  // Set the pixel size
57  uint8_t pixel_size = 1;
58  if (img->type == IMAGE_YUV422) {
59  pixel_size = 2;
60  }
61 
62  // Calculate the pixel offsets
63  fast_make_offsets(pixel, img->w, pixel_size);
64 
65  // Go trough all the pixels (minus the borders)
66  for (y = 3 + y_padding; y < img->h - 3 - y_padding; y++)
67  for (x = 3 + x_padding; x < img->w - 3 - x_padding; x++) {
68  // First check if we aren't in range vertical (TODO: fix less intensive way)
69  if (min_dist > 0) {
70  bool_t need_skip = FALSE;
71 
72  // Go trough all the previous corners
73  for (i = 0; i < corner_cnt; i++) {
74  if (x - min_dist < ret_corners[i].x && ret_corners[i].x < x + min_dist
75  && y - min_dist < ret_corners[i].y && ret_corners[i].y < y + min_dist) {
76  need_skip = TRUE;
77  break;
78  }
79  }
80 
81  // Skip the box if we found a pixel nearby
82  if (need_skip) {
83  x += min_dist;
84  continue;
85  }
86  }
87 
88  // Calculate the threshold values
89  const uint8_t *p = ((uint8_t *)img->buf) + y * img->w * pixel_size + x * pixel_size + pixel_size / 2;
90  int16_t cb = *p + threshold;
91  int16_t c_b = *p - threshold;
92 
93  // Do the checks if it is a corner
94  if (p[pixel[0]] > cb)
95  if (p[pixel[1]] > cb)
96  if (p[pixel[2]] > cb)
97  if (p[pixel[3]] > cb)
98  if (p[pixel[4]] > cb)
99  if (p[pixel[5]] > cb)
100  if (p[pixel[6]] > cb)
101  if (p[pixel[7]] > cb)
102  if (p[pixel[8]] > cb)
103  {}
104  else if (p[pixel[15]] > cb)
105  {}
106  else {
107  continue;
108  }
109  else if (p[pixel[7]] < c_b)
110  if (p[pixel[14]] > cb)
111  if (p[pixel[15]] > cb)
112  {}
113  else {
114  continue;
115  }
116  else if (p[pixel[14]] < c_b)
117  if (p[pixel[8]] < c_b)
118  if (p[pixel[9]] < c_b)
119  if (p[pixel[10]] < c_b)
120  if (p[pixel[11]] < c_b)
121  if (p[pixel[12]] < c_b)
122  if (p[pixel[13]] < c_b)
123  if (p[pixel[15]] < c_b)
124  {}
125  else {
126  continue;
127  }
128  else {
129  continue;
130  }
131  else {
132  continue;
133  }
134  else {
135  continue;
136  }
137  else {
138  continue;
139  }
140  else {
141  continue;
142  }
143  else {
144  continue;
145  }
146  else {
147  continue;
148  }
149  else if (p[pixel[14]] > cb)
150  if (p[pixel[15]] > cb)
151  {}
152  else {
153  continue;
154  }
155  else {
156  continue;
157  }
158  else if (p[pixel[6]] < c_b)
159  if (p[pixel[15]] > cb)
160  if (p[pixel[13]] > cb)
161  if (p[pixel[14]] > cb)
162  {}
163  else {
164  continue;
165  }
166  else if (p[pixel[13]] < c_b)
167  if (p[pixel[7]] < c_b)
168  if (p[pixel[8]] < c_b)
169  if (p[pixel[9]] < c_b)
170  if (p[pixel[10]] < c_b)
171  if (p[pixel[11]] < c_b)
172  if (p[pixel[12]] < c_b)
173  if (p[pixel[14]] < c_b)
174  {}
175  else {
176  continue;
177  }
178  else {
179  continue;
180  }
181  else {
182  continue;
183  }
184  else {
185  continue;
186  }
187  else {
188  continue;
189  }
190  else {
191  continue;
192  }
193  else {
194  continue;
195  }
196  else {
197  continue;
198  }
199  else if (p[pixel[7]] < c_b)
200  if (p[pixel[8]] < c_b)
201  if (p[pixel[9]] < c_b)
202  if (p[pixel[10]] < c_b)
203  if (p[pixel[11]] < c_b)
204  if (p[pixel[12]] < c_b)
205  if (p[pixel[13]] < c_b)
206  if (p[pixel[14]] < c_b)
207  {}
208  else {
209  continue;
210  }
211  else {
212  continue;
213  }
214  else {
215  continue;
216  }
217  else {
218  continue;
219  }
220  else {
221  continue;
222  }
223  else {
224  continue;
225  }
226  else {
227  continue;
228  }
229  else {
230  continue;
231  }
232  else if (p[pixel[13]] > cb)
233  if (p[pixel[14]] > cb)
234  if (p[pixel[15]] > cb)
235  {}
236  else {
237  continue;
238  }
239  else {
240  continue;
241  }
242  else if (p[pixel[13]] < c_b)
243  if (p[pixel[7]] < c_b)
244  if (p[pixel[8]] < c_b)
245  if (p[pixel[9]] < c_b)
246  if (p[pixel[10]] < c_b)
247  if (p[pixel[11]] < c_b)
248  if (p[pixel[12]] < c_b)
249  if (p[pixel[14]] < c_b)
250  if (p[pixel[15]] < c_b)
251  {}
252  else {
253  continue;
254  }
255  else {
256  continue;
257  }
258  else {
259  continue;
260  }
261  else {
262  continue;
263  }
264  else {
265  continue;
266  }
267  else {
268  continue;
269  }
270  else {
271  continue;
272  }
273  else {
274  continue;
275  }
276  else {
277  continue;
278  }
279  else if (p[pixel[5]] < c_b)
280  if (p[pixel[14]] > cb)
281  if (p[pixel[12]] > cb)
282  if (p[pixel[13]] > cb)
283  if (p[pixel[15]] > cb)
284  {}
285  else if (p[pixel[6]] > cb)
286  if (p[pixel[7]] > cb)
287  if (p[pixel[8]] > cb)
288  if (p[pixel[9]] > cb)
289  if (p[pixel[10]] > cb)
290  if (p[pixel[11]] > cb)
291  {}
292  else {
293  continue;
294  }
295  else {
296  continue;
297  }
298  else {
299  continue;
300  }
301  else {
302  continue;
303  }
304  else {
305  continue;
306  }
307  else {
308  continue;
309  }
310  else {
311  continue;
312  }
313  else if (p[pixel[12]] < c_b)
314  if (p[pixel[6]] < c_b)
315  if (p[pixel[7]] < c_b)
316  if (p[pixel[8]] < c_b)
317  if (p[pixel[9]] < c_b)
318  if (p[pixel[10]] < c_b)
319  if (p[pixel[11]] < c_b)
320  if (p[pixel[13]] < c_b)
321  {}
322  else {
323  continue;
324  }
325  else {
326  continue;
327  }
328  else {
329  continue;
330  }
331  else {
332  continue;
333  }
334  else {
335  continue;
336  }
337  else {
338  continue;
339  }
340  else {
341  continue;
342  }
343  else {
344  continue;
345  }
346  else if (p[pixel[14]] < c_b)
347  if (p[pixel[7]] < c_b)
348  if (p[pixel[8]] < c_b)
349  if (p[pixel[9]] < c_b)
350  if (p[pixel[10]] < c_b)
351  if (p[pixel[11]] < c_b)
352  if (p[pixel[12]] < c_b)
353  if (p[pixel[13]] < c_b)
354  if (p[pixel[6]] < c_b)
355  {}
356  else if (p[pixel[15]] < c_b)
357  {}
358  else {
359  continue;
360  }
361  else {
362  continue;
363  }
364  else {
365  continue;
366  }
367  else {
368  continue;
369  }
370  else {
371  continue;
372  }
373  else {
374  continue;
375  }
376  else {
377  continue;
378  }
379  else {
380  continue;
381  }
382  else if (p[pixel[6]] < c_b)
383  if (p[pixel[7]] < c_b)
384  if (p[pixel[8]] < c_b)
385  if (p[pixel[9]] < c_b)
386  if (p[pixel[10]] < c_b)
387  if (p[pixel[11]] < c_b)
388  if (p[pixel[12]] < c_b)
389  if (p[pixel[13]] < c_b)
390  {}
391  else {
392  continue;
393  }
394  else {
395  continue;
396  }
397  else {
398  continue;
399  }
400  else {
401  continue;
402  }
403  else {
404  continue;
405  }
406  else {
407  continue;
408  }
409  else {
410  continue;
411  }
412  else {
413  continue;
414  }
415  else if (p[pixel[12]] > cb)
416  if (p[pixel[13]] > cb)
417  if (p[pixel[14]] > cb)
418  if (p[pixel[15]] > cb)
419  {}
420  else if (p[pixel[6]] > cb)
421  if (p[pixel[7]] > cb)
422  if (p[pixel[8]] > cb)
423  if (p[pixel[9]] > cb)
424  if (p[pixel[10]] > cb)
425  if (p[pixel[11]] > cb)
426  {}
427  else {
428  continue;
429  }
430  else {
431  continue;
432  }
433  else {
434  continue;
435  }
436  else {
437  continue;
438  }
439  else {
440  continue;
441  }
442  else {
443  continue;
444  }
445  else {
446  continue;
447  }
448  else {
449  continue;
450  }
451  else if (p[pixel[12]] < c_b)
452  if (p[pixel[7]] < c_b)
453  if (p[pixel[8]] < c_b)
454  if (p[pixel[9]] < c_b)
455  if (p[pixel[10]] < c_b)
456  if (p[pixel[11]] < c_b)
457  if (p[pixel[13]] < c_b)
458  if (p[pixel[14]] < c_b)
459  if (p[pixel[6]] < c_b)
460  {}
461  else if (p[pixel[15]] < c_b)
462  {}
463  else {
464  continue;
465  }
466  else {
467  continue;
468  }
469  else {
470  continue;
471  }
472  else {
473  continue;
474  }
475  else {
476  continue;
477  }
478  else {
479  continue;
480  }
481  else {
482  continue;
483  }
484  else {
485  continue;
486  }
487  else {
488  continue;
489  }
490  else if (p[pixel[4]] < c_b)
491  if (p[pixel[13]] > cb)
492  if (p[pixel[11]] > cb)
493  if (p[pixel[12]] > cb)
494  if (p[pixel[14]] > cb)
495  if (p[pixel[15]] > cb)
496  {}
497  else if (p[pixel[6]] > cb)
498  if (p[pixel[7]] > cb)
499  if (p[pixel[8]] > cb)
500  if (p[pixel[9]] > cb)
501  if (p[pixel[10]] > cb)
502  {}
503  else {
504  continue;
505  }
506  else {
507  continue;
508  }
509  else {
510  continue;
511  }
512  else {
513  continue;
514  }
515  else {
516  continue;
517  }
518  else if (p[pixel[5]] > cb)
519  if (p[pixel[6]] > cb)
520  if (p[pixel[7]] > cb)
521  if (p[pixel[8]] > cb)
522  if (p[pixel[9]] > cb)
523  if (p[pixel[10]] > cb)
524  {}
525  else {
526  continue;
527  }
528  else {
529  continue;
530  }
531  else {
532  continue;
533  }
534  else {
535  continue;
536  }
537  else {
538  continue;
539  }
540  else {
541  continue;
542  }
543  else {
544  continue;
545  }
546  else if (p[pixel[11]] < c_b)
547  if (p[pixel[5]] < c_b)
548  if (p[pixel[6]] < c_b)
549  if (p[pixel[7]] < c_b)
550  if (p[pixel[8]] < c_b)
551  if (p[pixel[9]] < c_b)
552  if (p[pixel[10]] < c_b)
553  if (p[pixel[12]] < c_b)
554  {}
555  else {
556  continue;
557  }
558  else {
559  continue;
560  }
561  else {
562  continue;
563  }
564  else {
565  continue;
566  }
567  else {
568  continue;
569  }
570  else {
571  continue;
572  }
573  else {
574  continue;
575  }
576  else {
577  continue;
578  }
579  else if (p[pixel[13]] < c_b)
580  if (p[pixel[7]] < c_b)
581  if (p[pixel[8]] < c_b)
582  if (p[pixel[9]] < c_b)
583  if (p[pixel[10]] < c_b)
584  if (p[pixel[11]] < c_b)
585  if (p[pixel[12]] < c_b)
586  if (p[pixel[6]] < c_b)
587  if (p[pixel[5]] < c_b)
588  {}
589  else if (p[pixel[14]] < c_b)
590  {}
591  else {
592  continue;
593  }
594  else if (p[pixel[14]] < c_b)
595  if (p[pixel[15]] < c_b)
596  {}
597  else {
598  continue;
599  }
600  else {
601  continue;
602  }
603  else {
604  continue;
605  }
606  else {
607  continue;
608  }
609  else {
610  continue;
611  }
612  else {
613  continue;
614  }
615  else {
616  continue;
617  }
618  else {
619  continue;
620  }
621  else if (p[pixel[5]] < c_b)
622  if (p[pixel[6]] < c_b)
623  if (p[pixel[7]] < c_b)
624  if (p[pixel[8]] < c_b)
625  if (p[pixel[9]] < c_b)
626  if (p[pixel[10]] < c_b)
627  if (p[pixel[11]] < c_b)
628  if (p[pixel[12]] < c_b)
629  {}
630  else {
631  continue;
632  }
633  else {
634  continue;
635  }
636  else {
637  continue;
638  }
639  else {
640  continue;
641  }
642  else {
643  continue;
644  }
645  else {
646  continue;
647  }
648  else {
649  continue;
650  }
651  else {
652  continue;
653  }
654  else if (p[pixel[11]] > cb)
655  if (p[pixel[12]] > cb)
656  if (p[pixel[13]] > cb)
657  if (p[pixel[14]] > cb)
658  if (p[pixel[15]] > cb)
659  {}
660  else if (p[pixel[6]] > cb)
661  if (p[pixel[7]] > cb)
662  if (p[pixel[8]] > cb)
663  if (p[pixel[9]] > cb)
664  if (p[pixel[10]] > cb)
665  {}
666  else {
667  continue;
668  }
669  else {
670  continue;
671  }
672  else {
673  continue;
674  }
675  else {
676  continue;
677  }
678  else {
679  continue;
680  }
681  else if (p[pixel[5]] > cb)
682  if (p[pixel[6]] > cb)
683  if (p[pixel[7]] > cb)
684  if (p[pixel[8]] > cb)
685  if (p[pixel[9]] > cb)
686  if (p[pixel[10]] > cb)
687  {}
688  else {
689  continue;
690  }
691  else {
692  continue;
693  }
694  else {
695  continue;
696  }
697  else {
698  continue;
699  }
700  else {
701  continue;
702  }
703  else {
704  continue;
705  }
706  else {
707  continue;
708  }
709  else {
710  continue;
711  }
712  else if (p[pixel[11]] < c_b)
713  if (p[pixel[7]] < c_b)
714  if (p[pixel[8]] < c_b)
715  if (p[pixel[9]] < c_b)
716  if (p[pixel[10]] < c_b)
717  if (p[pixel[12]] < c_b)
718  if (p[pixel[13]] < c_b)
719  if (p[pixel[6]] < c_b)
720  if (p[pixel[5]] < c_b)
721  {}
722  else if (p[pixel[14]] < c_b)
723  {}
724  else {
725  continue;
726  }
727  else if (p[pixel[14]] < c_b)
728  if (p[pixel[15]] < c_b)
729  {}
730  else {
731  continue;
732  }
733  else {
734  continue;
735  }
736  else {
737  continue;
738  }
739  else {
740  continue;
741  }
742  else {
743  continue;
744  }
745  else {
746  continue;
747  }
748  else {
749  continue;
750  }
751  else {
752  continue;
753  }
754  else {
755  continue;
756  }
757  else if (p[pixel[3]] < c_b)
758  if (p[pixel[10]] > cb)
759  if (p[pixel[11]] > cb)
760  if (p[pixel[12]] > cb)
761  if (p[pixel[13]] > cb)
762  if (p[pixel[14]] > cb)
763  if (p[pixel[15]] > cb)
764  {}
765  else if (p[pixel[6]] > cb)
766  if (p[pixel[7]] > cb)
767  if (p[pixel[8]] > cb)
768  if (p[pixel[9]] > cb)
769  {}
770  else {
771  continue;
772  }
773  else {
774  continue;
775  }
776  else {
777  continue;
778  }
779  else {
780  continue;
781  }
782  else if (p[pixel[5]] > cb)
783  if (p[pixel[6]] > cb)
784  if (p[pixel[7]] > cb)
785  if (p[pixel[8]] > cb)
786  if (p[pixel[9]] > cb)
787  {}
788  else {
789  continue;
790  }
791  else {
792  continue;
793  }
794  else {
795  continue;
796  }
797  else {
798  continue;
799  }
800  else {
801  continue;
802  }
803  else if (p[pixel[4]] > cb)
804  if (p[pixel[5]] > cb)
805  if (p[pixel[6]] > cb)
806  if (p[pixel[7]] > cb)
807  if (p[pixel[8]] > cb)
808  if (p[pixel[9]] > cb)
809  {}
810  else {
811  continue;
812  }
813  else {
814  continue;
815  }
816  else {
817  continue;
818  }
819  else {
820  continue;
821  }
822  else {
823  continue;
824  }
825  else {
826  continue;
827  }
828  else {
829  continue;
830  }
831  else {
832  continue;
833  }
834  else if (p[pixel[10]] < c_b)
835  if (p[pixel[7]] < c_b)
836  if (p[pixel[8]] < c_b)
837  if (p[pixel[9]] < c_b)
838  if (p[pixel[11]] < c_b)
839  if (p[pixel[6]] < c_b)
840  if (p[pixel[5]] < c_b)
841  if (p[pixel[4]] < c_b)
842  {}
843  else if (p[pixel[12]] < c_b)
844  if (p[pixel[13]] < c_b)
845  {}
846  else {
847  continue;
848  }
849  else {
850  continue;
851  }
852  else if (p[pixel[12]] < c_b)
853  if (p[pixel[13]] < c_b)
854  if (p[pixel[14]] < c_b)
855  {}
856  else {
857  continue;
858  }
859  else {
860  continue;
861  }
862  else {
863  continue;
864  }
865  else if (p[pixel[12]] < c_b)
866  if (p[pixel[13]] < c_b)
867  if (p[pixel[14]] < c_b)
868  if (p[pixel[15]] < c_b)
869  {}
870  else {
871  continue;
872  }
873  else {
874  continue;
875  }
876  else {
877  continue;
878  }
879  else {
880  continue;
881  }
882  else {
883  continue;
884  }
885  else {
886  continue;
887  }
888  else {
889  continue;
890  }
891  else {
892  continue;
893  }
894  else {
895  continue;
896  }
897  else if (p[pixel[10]] > cb)
898  if (p[pixel[11]] > cb)
899  if (p[pixel[12]] > cb)
900  if (p[pixel[13]] > cb)
901  if (p[pixel[14]] > cb)
902  if (p[pixel[15]] > cb)
903  {}
904  else if (p[pixel[6]] > cb)
905  if (p[pixel[7]] > cb)
906  if (p[pixel[8]] > cb)
907  if (p[pixel[9]] > cb)
908  {}
909  else {
910  continue;
911  }
912  else {
913  continue;
914  }
915  else {
916  continue;
917  }
918  else {
919  continue;
920  }
921  else if (p[pixel[5]] > cb)
922  if (p[pixel[6]] > cb)
923  if (p[pixel[7]] > cb)
924  if (p[pixel[8]] > cb)
925  if (p[pixel[9]] > cb)
926  {}
927  else {
928  continue;
929  }
930  else {
931  continue;
932  }
933  else {
934  continue;
935  }
936  else {
937  continue;
938  }
939  else {
940  continue;
941  }
942  else if (p[pixel[4]] > cb)
943  if (p[pixel[5]] > cb)
944  if (p[pixel[6]] > cb)
945  if (p[pixel[7]] > cb)
946  if (p[pixel[8]] > cb)
947  if (p[pixel[9]] > cb)
948  {}
949  else {
950  continue;
951  }
952  else {
953  continue;
954  }
955  else {
956  continue;
957  }
958  else {
959  continue;
960  }
961  else {
962  continue;
963  }
964  else {
965  continue;
966  }
967  else {
968  continue;
969  }
970  else {
971  continue;
972  }
973  else if (p[pixel[10]] < c_b)
974  if (p[pixel[7]] < c_b)
975  if (p[pixel[8]] < c_b)
976  if (p[pixel[9]] < c_b)
977  if (p[pixel[11]] < c_b)
978  if (p[pixel[12]] < c_b)
979  if (p[pixel[6]] < c_b)
980  if (p[pixel[5]] < c_b)
981  if (p[pixel[4]] < c_b)
982  {}
983  else if (p[pixel[13]] < c_b)
984  {}
985  else {
986  continue;
987  }
988  else if (p[pixel[13]] < c_b)
989  if (p[pixel[14]] < c_b)
990  {}
991  else {
992  continue;
993  }
994  else {
995  continue;
996  }
997  else if (p[pixel[13]] < c_b)
998  if (p[pixel[14]] < c_b)
999  if (p[pixel[15]] < c_b)
1000  {}
1001  else {
1002  continue;
1003  }
1004  else {
1005  continue;
1006  }
1007  else {
1008  continue;
1009  }
1010  else {
1011  continue;
1012  }
1013  else {
1014  continue;
1015  }
1016  else {
1017  continue;
1018  }
1019  else {
1020  continue;
1021  }
1022  else {
1023  continue;
1024  }
1025  else {
1026  continue;
1027  }
1028  else if (p[pixel[2]] < c_b)
1029  if (p[pixel[9]] > cb)
1030  if (p[pixel[10]] > cb)
1031  if (p[pixel[11]] > cb)
1032  if (p[pixel[12]] > cb)
1033  if (p[pixel[13]] > cb)
1034  if (p[pixel[14]] > cb)
1035  if (p[pixel[15]] > cb)
1036  {}
1037  else if (p[pixel[6]] > cb)
1038  if (p[pixel[7]] > cb)
1039  if (p[pixel[8]] > cb)
1040  {}
1041  else {
1042  continue;
1043  }
1044  else {
1045  continue;
1046  }
1047  else {
1048  continue;
1049  }
1050  else if (p[pixel[5]] > cb)
1051  if (p[pixel[6]] > cb)
1052  if (p[pixel[7]] > cb)
1053  if (p[pixel[8]] > cb)
1054  {}
1055  else {
1056  continue;
1057  }
1058  else {
1059  continue;
1060  }
1061  else {
1062  continue;
1063  }
1064  else {
1065  continue;
1066  }
1067  else if (p[pixel[4]] > cb)
1068  if (p[pixel[5]] > cb)
1069  if (p[pixel[6]] > cb)
1070  if (p[pixel[7]] > cb)
1071  if (p[pixel[8]] > cb)
1072  {}
1073  else {
1074  continue;
1075  }
1076  else {
1077  continue;
1078  }
1079  else {
1080  continue;
1081  }
1082  else {
1083  continue;
1084  }
1085  else {
1086  continue;
1087  }
1088  else if (p[pixel[3]] > cb)
1089  if (p[pixel[4]] > cb)
1090  if (p[pixel[5]] > cb)
1091  if (p[pixel[6]] > cb)
1092  if (p[pixel[7]] > cb)
1093  if (p[pixel[8]] > cb)
1094  {}
1095  else {
1096  continue;
1097  }
1098  else {
1099  continue;
1100  }
1101  else {
1102  continue;
1103  }
1104  else {
1105  continue;
1106  }
1107  else {
1108  continue;
1109  }
1110  else {
1111  continue;
1112  }
1113  else {
1114  continue;
1115  }
1116  else {
1117  continue;
1118  }
1119  else if (p[pixel[9]] < c_b)
1120  if (p[pixel[7]] < c_b)
1121  if (p[pixel[8]] < c_b)
1122  if (p[pixel[10]] < c_b)
1123  if (p[pixel[6]] < c_b)
1124  if (p[pixel[5]] < c_b)
1125  if (p[pixel[4]] < c_b)
1126  if (p[pixel[3]] < c_b)
1127  {}
1128  else if (p[pixel[11]] < c_b)
1129  if (p[pixel[12]] < c_b)
1130  {}
1131  else {
1132  continue;
1133  }
1134  else {
1135  continue;
1136  }
1137  else if (p[pixel[11]] < c_b)
1138  if (p[pixel[12]] < c_b)
1139  if (p[pixel[13]] < c_b)
1140  {}
1141  else {
1142  continue;
1143  }
1144  else {
1145  continue;
1146  }
1147  else {
1148  continue;
1149  }
1150  else if (p[pixel[11]] < c_b)
1151  if (p[pixel[12]] < c_b)
1152  if (p[pixel[13]] < c_b)
1153  if (p[pixel[14]] < c_b)
1154  {}
1155  else {
1156  continue;
1157  }
1158  else {
1159  continue;
1160  }
1161  else {
1162  continue;
1163  }
1164  else {
1165  continue;
1166  }
1167  else if (p[pixel[11]] < c_b)
1168  if (p[pixel[12]] < c_b)
1169  if (p[pixel[13]] < c_b)
1170  if (p[pixel[14]] < c_b)
1171  if (p[pixel[15]] < c_b)
1172  {}
1173  else {
1174  continue;
1175  }
1176  else {
1177  continue;
1178  }
1179  else {
1180  continue;
1181  }
1182  else {
1183  continue;
1184  }
1185  else {
1186  continue;
1187  }
1188  else {
1189  continue;
1190  }
1191  else {
1192  continue;
1193  }
1194  else {
1195  continue;
1196  }
1197  else {
1198  continue;
1199  }
1200  else if (p[pixel[9]] > cb)
1201  if (p[pixel[10]] > cb)
1202  if (p[pixel[11]] > cb)
1203  if (p[pixel[12]] > cb)
1204  if (p[pixel[13]] > cb)
1205  if (p[pixel[14]] > cb)
1206  if (p[pixel[15]] > cb)
1207  {}
1208  else if (p[pixel[6]] > cb)
1209  if (p[pixel[7]] > cb)
1210  if (p[pixel[8]] > cb)
1211  {}
1212  else {
1213  continue;
1214  }
1215  else {
1216  continue;
1217  }
1218  else {
1219  continue;
1220  }
1221  else if (p[pixel[5]] > cb)
1222  if (p[pixel[6]] > cb)
1223  if (p[pixel[7]] > cb)
1224  if (p[pixel[8]] > cb)
1225  {}
1226  else {
1227  continue;
1228  }
1229  else {
1230  continue;
1231  }
1232  else {
1233  continue;
1234  }
1235  else {
1236  continue;
1237  }
1238  else if (p[pixel[4]] > cb)
1239  if (p[pixel[5]] > cb)
1240  if (p[pixel[6]] > cb)
1241  if (p[pixel[7]] > cb)
1242  if (p[pixel[8]] > cb)
1243  {}
1244  else {
1245  continue;
1246  }
1247  else {
1248  continue;
1249  }
1250  else {
1251  continue;
1252  }
1253  else {
1254  continue;
1255  }
1256  else {
1257  continue;
1258  }
1259  else if (p[pixel[3]] > cb)
1260  if (p[pixel[4]] > cb)
1261  if (p[pixel[5]] > cb)
1262  if (p[pixel[6]] > cb)
1263  if (p[pixel[7]] > cb)
1264  if (p[pixel[8]] > cb)
1265  {}
1266  else {
1267  continue;
1268  }
1269  else {
1270  continue;
1271  }
1272  else {
1273  continue;
1274  }
1275  else {
1276  continue;
1277  }
1278  else {
1279  continue;
1280  }
1281  else {
1282  continue;
1283  }
1284  else {
1285  continue;
1286  }
1287  else {
1288  continue;
1289  }
1290  else if (p[pixel[9]] < c_b)
1291  if (p[pixel[7]] < c_b)
1292  if (p[pixel[8]] < c_b)
1293  if (p[pixel[10]] < c_b)
1294  if (p[pixel[11]] < c_b)
1295  if (p[pixel[6]] < c_b)
1296  if (p[pixel[5]] < c_b)
1297  if (p[pixel[4]] < c_b)
1298  if (p[pixel[3]] < c_b)
1299  {}
1300  else if (p[pixel[12]] < c_b)
1301  {}
1302  else {
1303  continue;
1304  }
1305  else if (p[pixel[12]] < c_b)
1306  if (p[pixel[13]] < c_b)
1307  {}
1308  else {
1309  continue;
1310  }
1311  else {
1312  continue;
1313  }
1314  else if (p[pixel[12]] < c_b)
1315  if (p[pixel[13]] < c_b)
1316  if (p[pixel[14]] < c_b)
1317  {}
1318  else {
1319  continue;
1320  }
1321  else {
1322  continue;
1323  }
1324  else {
1325  continue;
1326  }
1327  else if (p[pixel[12]] < c_b)
1328  if (p[pixel[13]] < c_b)
1329  if (p[pixel[14]] < c_b)
1330  if (p[pixel[15]] < c_b)
1331  {}
1332  else {
1333  continue;
1334  }
1335  else {
1336  continue;
1337  }
1338  else {
1339  continue;
1340  }
1341  else {
1342  continue;
1343  }
1344  else {
1345  continue;
1346  }
1347  else {
1348  continue;
1349  }
1350  else {
1351  continue;
1352  }
1353  else {
1354  continue;
1355  }
1356  else {
1357  continue;
1358  }
1359  else if (p[pixel[1]] < c_b)
1360  if (p[pixel[8]] > cb)
1361  if (p[pixel[9]] > cb)
1362  if (p[pixel[10]] > cb)
1363  if (p[pixel[11]] > cb)
1364  if (p[pixel[12]] > cb)
1365  if (p[pixel[13]] > cb)
1366  if (p[pixel[14]] > cb)
1367  if (p[pixel[15]] > cb)
1368  {}
1369  else if (p[pixel[6]] > cb)
1370  if (p[pixel[7]] > cb)
1371  {}
1372  else {
1373  continue;
1374  }
1375  else {
1376  continue;
1377  }
1378  else if (p[pixel[5]] > cb)
1379  if (p[pixel[6]] > cb)
1380  if (p[pixel[7]] > cb)
1381  {}
1382  else {
1383  continue;
1384  }
1385  else {
1386  continue;
1387  }
1388  else {
1389  continue;
1390  }
1391  else if (p[pixel[4]] > cb)
1392  if (p[pixel[5]] > cb)
1393  if (p[pixel[6]] > cb)
1394  if (p[pixel[7]] > cb)
1395  {}
1396  else {
1397  continue;
1398  }
1399  else {
1400  continue;
1401  }
1402  else {
1403  continue;
1404  }
1405  else {
1406  continue;
1407  }
1408  else if (p[pixel[3]] > cb)
1409  if (p[pixel[4]] > cb)
1410  if (p[pixel[5]] > cb)
1411  if (p[pixel[6]] > cb)
1412  if (p[pixel[7]] > cb)
1413  {}
1414  else {
1415  continue;
1416  }
1417  else {
1418  continue;
1419  }
1420  else {
1421  continue;
1422  }
1423  else {
1424  continue;
1425  }
1426  else {
1427  continue;
1428  }
1429  else if (p[pixel[2]] > cb)
1430  if (p[pixel[3]] > cb)
1431  if (p[pixel[4]] > cb)
1432  if (p[pixel[5]] > cb)
1433  if (p[pixel[6]] > cb)
1434  if (p[pixel[7]] > cb)
1435  {}
1436  else {
1437  continue;
1438  }
1439  else {
1440  continue;
1441  }
1442  else {
1443  continue;
1444  }
1445  else {
1446  continue;
1447  }
1448  else {
1449  continue;
1450  }
1451  else {
1452  continue;
1453  }
1454  else {
1455  continue;
1456  }
1457  else {
1458  continue;
1459  }
1460  else if (p[pixel[8]] < c_b)
1461  if (p[pixel[7]] < c_b)
1462  if (p[pixel[9]] < c_b)
1463  if (p[pixel[6]] < c_b)
1464  if (p[pixel[5]] < c_b)
1465  if (p[pixel[4]] < c_b)
1466  if (p[pixel[3]] < c_b)
1467  if (p[pixel[2]] < c_b)
1468  {}
1469  else if (p[pixel[10]] < c_b)
1470  if (p[pixel[11]] < c_b)
1471  {}
1472  else {
1473  continue;
1474  }
1475  else {
1476  continue;
1477  }
1478  else if (p[pixel[10]] < c_b)
1479  if (p[pixel[11]] < c_b)
1480  if (p[pixel[12]] < c_b)
1481  {}
1482  else {
1483  continue;
1484  }
1485  else {
1486  continue;
1487  }
1488  else {
1489  continue;
1490  }
1491  else if (p[pixel[10]] < c_b)
1492  if (p[pixel[11]] < c_b)
1493  if (p[pixel[12]] < c_b)
1494  if (p[pixel[13]] < c_b)
1495  {}
1496  else {
1497  continue;
1498  }
1499  else {
1500  continue;
1501  }
1502  else {
1503  continue;
1504  }
1505  else {
1506  continue;
1507  }
1508  else if (p[pixel[10]] < c_b)
1509  if (p[pixel[11]] < c_b)
1510  if (p[pixel[12]] < c_b)
1511  if (p[pixel[13]] < c_b)
1512  if (p[pixel[14]] < c_b)
1513  {}
1514  else {
1515  continue;
1516  }
1517  else {
1518  continue;
1519  }
1520  else {
1521  continue;
1522  }
1523  else {
1524  continue;
1525  }
1526  else {
1527  continue;
1528  }
1529  else if (p[pixel[10]] < c_b)
1530  if (p[pixel[11]] < c_b)
1531  if (p[pixel[12]] < c_b)
1532  if (p[pixel[13]] < c_b)
1533  if (p[pixel[14]] < c_b)
1534  if (p[pixel[15]] < c_b)
1535  {}
1536  else {
1537  continue;
1538  }
1539  else {
1540  continue;
1541  }
1542  else {
1543  continue;
1544  }
1545  else {
1546  continue;
1547  }
1548  else {
1549  continue;
1550  }
1551  else {
1552  continue;
1553  }
1554  else {
1555  continue;
1556  }
1557  else {
1558  continue;
1559  }
1560  else {
1561  continue;
1562  }
1563  else if (p[pixel[8]] > cb)
1564  if (p[pixel[9]] > cb)
1565  if (p[pixel[10]] > cb)
1566  if (p[pixel[11]] > cb)
1567  if (p[pixel[12]] > cb)
1568  if (p[pixel[13]] > cb)
1569  if (p[pixel[14]] > cb)
1570  if (p[pixel[15]] > cb)
1571  {}
1572  else if (p[pixel[6]] > cb)
1573  if (p[pixel[7]] > cb)
1574  {}
1575  else {
1576  continue;
1577  }
1578  else {
1579  continue;
1580  }
1581  else if (p[pixel[5]] > cb)
1582  if (p[pixel[6]] > cb)
1583  if (p[pixel[7]] > cb)
1584  {}
1585  else {
1586  continue;
1587  }
1588  else {
1589  continue;
1590  }
1591  else {
1592  continue;
1593  }
1594  else if (p[pixel[4]] > cb)
1595  if (p[pixel[5]] > cb)
1596  if (p[pixel[6]] > cb)
1597  if (p[pixel[7]] > cb)
1598  {}
1599  else {
1600  continue;
1601  }
1602  else {
1603  continue;
1604  }
1605  else {
1606  continue;
1607  }
1608  else {
1609  continue;
1610  }
1611  else if (p[pixel[3]] > cb)
1612  if (p[pixel[4]] > cb)
1613  if (p[pixel[5]] > cb)
1614  if (p[pixel[6]] > cb)
1615  if (p[pixel[7]] > cb)
1616  {}
1617  else {
1618  continue;
1619  }
1620  else {
1621  continue;
1622  }
1623  else {
1624  continue;
1625  }
1626  else {
1627  continue;
1628  }
1629  else {
1630  continue;
1631  }
1632  else if (p[pixel[2]] > cb)
1633  if (p[pixel[3]] > cb)
1634  if (p[pixel[4]] > cb)
1635  if (p[pixel[5]] > cb)
1636  if (p[pixel[6]] > cb)
1637  if (p[pixel[7]] > cb)
1638  {}
1639  else {
1640  continue;
1641  }
1642  else {
1643  continue;
1644  }
1645  else {
1646  continue;
1647  }
1648  else {
1649  continue;
1650  }
1651  else {
1652  continue;
1653  }
1654  else {
1655  continue;
1656  }
1657  else {
1658  continue;
1659  }
1660  else {
1661  continue;
1662  }
1663  else if (p[pixel[8]] < c_b)
1664  if (p[pixel[7]] < c_b)
1665  if (p[pixel[9]] < c_b)
1666  if (p[pixel[10]] < c_b)
1667  if (p[pixel[6]] < c_b)
1668  if (p[pixel[5]] < c_b)
1669  if (p[pixel[4]] < c_b)
1670  if (p[pixel[3]] < c_b)
1671  if (p[pixel[2]] < c_b)
1672  {}
1673  else if (p[pixel[11]] < c_b)
1674  {}
1675  else {
1676  continue;
1677  }
1678  else if (p[pixel[11]] < c_b)
1679  if (p[pixel[12]] < c_b)
1680  {}
1681  else {
1682  continue;
1683  }
1684  else {
1685  continue;
1686  }
1687  else if (p[pixel[11]] < c_b)
1688  if (p[pixel[12]] < c_b)
1689  if (p[pixel[13]] < c_b)
1690  {}
1691  else {
1692  continue;
1693  }
1694  else {
1695  continue;
1696  }
1697  else {
1698  continue;
1699  }
1700  else if (p[pixel[11]] < c_b)
1701  if (p[pixel[12]] < c_b)
1702  if (p[pixel[13]] < c_b)
1703  if (p[pixel[14]] < c_b)
1704  {}
1705  else {
1706  continue;
1707  }
1708  else {
1709  continue;
1710  }
1711  else {
1712  continue;
1713  }
1714  else {
1715  continue;
1716  }
1717  else if (p[pixel[11]] < c_b)
1718  if (p[pixel[12]] < c_b)
1719  if (p[pixel[13]] < c_b)
1720  if (p[pixel[14]] < c_b)
1721  if (p[pixel[15]] < c_b)
1722  {}
1723  else {
1724  continue;
1725  }
1726  else {
1727  continue;
1728  }
1729  else {
1730  continue;
1731  }
1732  else {
1733  continue;
1734  }
1735  else {
1736  continue;
1737  }
1738  else {
1739  continue;
1740  }
1741  else {
1742  continue;
1743  }
1744  else {
1745  continue;
1746  }
1747  else {
1748  continue;
1749  }
1750  else if (p[pixel[0]] < c_b)
1751  if (p[pixel[1]] > cb)
1752  if (p[pixel[8]] > cb)
1753  if (p[pixel[7]] > cb)
1754  if (p[pixel[9]] > cb)
1755  if (p[pixel[6]] > cb)
1756  if (p[pixel[5]] > cb)
1757  if (p[pixel[4]] > cb)
1758  if (p[pixel[3]] > cb)
1759  if (p[pixel[2]] > cb)
1760  {}
1761  else if (p[pixel[10]] > cb)
1762  if (p[pixel[11]] > cb)
1763  {}
1764  else {
1765  continue;
1766  }
1767  else {
1768  continue;
1769  }
1770  else if (p[pixel[10]] > cb)
1771  if (p[pixel[11]] > cb)
1772  if (p[pixel[12]] > cb)
1773  {}
1774  else {
1775  continue;
1776  }
1777  else {
1778  continue;
1779  }
1780  else {
1781  continue;
1782  }
1783  else if (p[pixel[10]] > cb)
1784  if (p[pixel[11]] > cb)
1785  if (p[pixel[12]] > cb)
1786  if (p[pixel[13]] > cb)
1787  {}
1788  else {
1789  continue;
1790  }
1791  else {
1792  continue;
1793  }
1794  else {
1795  continue;
1796  }
1797  else {
1798  continue;
1799  }
1800  else if (p[pixel[10]] > cb)
1801  if (p[pixel[11]] > cb)
1802  if (p[pixel[12]] > cb)
1803  if (p[pixel[13]] > cb)
1804  if (p[pixel[14]] > cb)
1805  {}
1806  else {
1807  continue;
1808  }
1809  else {
1810  continue;
1811  }
1812  else {
1813  continue;
1814  }
1815  else {
1816  continue;
1817  }
1818  else {
1819  continue;
1820  }
1821  else if (p[pixel[10]] > cb)
1822  if (p[pixel[11]] > cb)
1823  if (p[pixel[12]] > cb)
1824  if (p[pixel[13]] > cb)
1825  if (p[pixel[14]] > cb)
1826  if (p[pixel[15]] > cb)
1827  {}
1828  else {
1829  continue;
1830  }
1831  else {
1832  continue;
1833  }
1834  else {
1835  continue;
1836  }
1837  else {
1838  continue;
1839  }
1840  else {
1841  continue;
1842  }
1843  else {
1844  continue;
1845  }
1846  else {
1847  continue;
1848  }
1849  else {
1850  continue;
1851  }
1852  else if (p[pixel[8]] < c_b)
1853  if (p[pixel[9]] < c_b)
1854  if (p[pixel[10]] < c_b)
1855  if (p[pixel[11]] < c_b)
1856  if (p[pixel[12]] < c_b)
1857  if (p[pixel[13]] < c_b)
1858  if (p[pixel[14]] < c_b)
1859  if (p[pixel[15]] < c_b)
1860  {}
1861  else if (p[pixel[6]] < c_b)
1862  if (p[pixel[7]] < c_b)
1863  {}
1864  else {
1865  continue;
1866  }
1867  else {
1868  continue;
1869  }
1870  else if (p[pixel[5]] < c_b)
1871  if (p[pixel[6]] < c_b)
1872  if (p[pixel[7]] < c_b)
1873  {}
1874  else {
1875  continue;
1876  }
1877  else {
1878  continue;
1879  }
1880  else {
1881  continue;
1882  }
1883  else if (p[pixel[4]] < c_b)
1884  if (p[pixel[5]] < c_b)
1885  if (p[pixel[6]] < c_b)
1886  if (p[pixel[7]] < c_b)
1887  {}
1888  else {
1889  continue;
1890  }
1891  else {
1892  continue;
1893  }
1894  else {
1895  continue;
1896  }
1897  else {
1898  continue;
1899  }
1900  else if (p[pixel[3]] < c_b)
1901  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)
1905  {}
1906  else {
1907  continue;
1908  }
1909  else {
1910  continue;
1911  }
1912  else {
1913  continue;
1914  }
1915  else {
1916  continue;
1917  }
1918  else {
1919  continue;
1920  }
1921  else if (p[pixel[2]] < c_b)
1922  if (p[pixel[3]] < c_b)
1923  if (p[pixel[4]] < c_b)
1924  if (p[pixel[5]] < c_b)
1925  if (p[pixel[6]] < c_b)
1926  if (p[pixel[7]] < c_b)
1927  {}
1928  else {
1929  continue;
1930  }
1931  else {
1932  continue;
1933  }
1934  else {
1935  continue;
1936  }
1937  else {
1938  continue;
1939  }
1940  else {
1941  continue;
1942  }
1943  else {
1944  continue;
1945  }
1946  else {
1947  continue;
1948  }
1949  else {
1950  continue;
1951  }
1952  else {
1953  continue;
1954  }
1955  else if (p[pixel[1]] < c_b)
1956  if (p[pixel[2]] > cb)
1957  if (p[pixel[9]] > cb)
1958  if (p[pixel[7]] > cb)
1959  if (p[pixel[8]] > cb)
1960  if (p[pixel[10]] > cb)
1961  if (p[pixel[6]] > cb)
1962  if (p[pixel[5]] > cb)
1963  if (p[pixel[4]] > cb)
1964  if (p[pixel[3]] > cb)
1965  {}
1966  else if (p[pixel[11]] > cb)
1967  if (p[pixel[12]] > cb)
1968  {}
1969  else {
1970  continue;
1971  }
1972  else {
1973  continue;
1974  }
1975  else if (p[pixel[11]] > cb)
1976  if (p[pixel[12]] > cb)
1977  if (p[pixel[13]] > cb)
1978  {}
1979  else {
1980  continue;
1981  }
1982  else {
1983  continue;
1984  }
1985  else {
1986  continue;
1987  }
1988  else if (p[pixel[11]] > cb)
1989  if (p[pixel[12]] > cb)
1990  if (p[pixel[13]] > cb)
1991  if (p[pixel[14]] > cb)
1992  {}
1993  else {
1994  continue;
1995  }
1996  else {
1997  continue;
1998  }
1999  else {
2000  continue;
2001  }
2002  else {
2003  continue;
2004  }
2005  else if (p[pixel[11]] > cb)
2006  if (p[pixel[12]] > cb)
2007  if (p[pixel[13]] > cb)
2008  if (p[pixel[14]] > cb)
2009  if (p[pixel[15]] > cb)
2010  {}
2011  else {
2012  continue;
2013  }
2014  else {
2015  continue;
2016  }
2017  else {
2018  continue;
2019  }
2020  else {
2021  continue;
2022  }
2023  else {
2024  continue;
2025  }
2026  else {
2027  continue;
2028  }
2029  else {
2030  continue;
2031  }
2032  else {
2033  continue;
2034  }
2035  else if (p[pixel[9]] < c_b)
2036  if (p[pixel[10]] < c_b)
2037  if (p[pixel[11]] < c_b)
2038  if (p[pixel[12]] < c_b)
2039  if (p[pixel[13]] < c_b)
2040  if (p[pixel[14]] < c_b)
2041  if (p[pixel[15]] < c_b)
2042  {}
2043  else if (p[pixel[6]] < c_b)
2044  if (p[pixel[7]] < c_b)
2045  if (p[pixel[8]] < c_b)
2046  {}
2047  else {
2048  continue;
2049  }
2050  else {
2051  continue;
2052  }
2053  else {
2054  continue;
2055  }
2056  else if (p[pixel[5]] < c_b)
2057  if (p[pixel[6]] < c_b)
2058  if (p[pixel[7]] < c_b)
2059  if (p[pixel[8]] < c_b)
2060  {}
2061  else {
2062  continue;
2063  }
2064  else {
2065  continue;
2066  }
2067  else {
2068  continue;
2069  }
2070  else {
2071  continue;
2072  }
2073  else if (p[pixel[4]] < c_b)
2074  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)
2078  {}
2079  else {
2080  continue;
2081  }
2082  else {
2083  continue;
2084  }
2085  else {
2086  continue;
2087  }
2088  else {
2089  continue;
2090  }
2091  else {
2092  continue;
2093  }
2094  else if (p[pixel[3]] < c_b)
2095  if (p[pixel[4]] < c_b)
2096  if (p[pixel[5]] < c_b)
2097  if (p[pixel[6]] < c_b)
2098  if (p[pixel[7]] < c_b)
2099  if (p[pixel[8]] < c_b)
2100  {}
2101  else {
2102  continue;
2103  }
2104  else {
2105  continue;
2106  }
2107  else {
2108  continue;
2109  }
2110  else {
2111  continue;
2112  }
2113  else {
2114  continue;
2115  }
2116  else {
2117  continue;
2118  }
2119  else {
2120  continue;
2121  }
2122  else {
2123  continue;
2124  }
2125  else {
2126  continue;
2127  }
2128  else if (p[pixel[2]] < c_b)
2129  if (p[pixel[3]] > cb)
2130  if (p[pixel[10]] > cb)
2131  if (p[pixel[7]] > cb)
2132  if (p[pixel[8]] > cb)
2133  if (p[pixel[9]] > cb)
2134  if (p[pixel[11]] > cb)
2135  if (p[pixel[6]] > cb)
2136  if (p[pixel[5]] > cb)
2137  if (p[pixel[4]] > cb)
2138  {}
2139  else if (p[pixel[12]] > cb)
2140  if (p[pixel[13]] > cb)
2141  {}
2142  else {
2143  continue;
2144  }
2145  else {
2146  continue;
2147  }
2148  else if (p[pixel[12]] > cb)
2149  if (p[pixel[13]] > cb)
2150  if (p[pixel[14]] > cb)
2151  {}
2152  else {
2153  continue;
2154  }
2155  else {
2156  continue;
2157  }
2158  else {
2159  continue;
2160  }
2161  else if (p[pixel[12]] > cb)
2162  if (p[pixel[13]] > cb)
2163  if (p[pixel[14]] > cb)
2164  if (p[pixel[15]] > cb)
2165  {}
2166  else {
2167  continue;
2168  }
2169  else {
2170  continue;
2171  }
2172  else {
2173  continue;
2174  }
2175  else {
2176  continue;
2177  }
2178  else {
2179  continue;
2180  }
2181  else {
2182  continue;
2183  }
2184  else {
2185  continue;
2186  }
2187  else {
2188  continue;
2189  }
2190  else if (p[pixel[10]] < c_b)
2191  if (p[pixel[11]] < c_b)
2192  if (p[pixel[12]] < c_b)
2193  if (p[pixel[13]] < c_b)
2194  if (p[pixel[14]] < c_b)
2195  if (p[pixel[15]] < c_b)
2196  {}
2197  else if (p[pixel[6]] < c_b)
2198  if (p[pixel[7]] < c_b)
2199  if (p[pixel[8]] < c_b)
2200  if (p[pixel[9]] < c_b)
2201  {}
2202  else {
2203  continue;
2204  }
2205  else {
2206  continue;
2207  }
2208  else {
2209  continue;
2210  }
2211  else {
2212  continue;
2213  }
2214  else if (p[pixel[5]] < c_b)
2215  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)
2219  {}
2220  else {
2221  continue;
2222  }
2223  else {
2224  continue;
2225  }
2226  else {
2227  continue;
2228  }
2229  else {
2230  continue;
2231  }
2232  else {
2233  continue;
2234  }
2235  else if (p[pixel[4]] < c_b)
2236  if (p[pixel[5]] < c_b)
2237  if (p[pixel[6]] < c_b)
2238  if (p[pixel[7]] < c_b)
2239  if (p[pixel[8]] < c_b)
2240  if (p[pixel[9]] < c_b)
2241  {}
2242  else {
2243  continue;
2244  }
2245  else {
2246  continue;
2247  }
2248  else {
2249  continue;
2250  }
2251  else {
2252  continue;
2253  }
2254  else {
2255  continue;
2256  }
2257  else {
2258  continue;
2259  }
2260  else {
2261  continue;
2262  }
2263  else {
2264  continue;
2265  }
2266  else {
2267  continue;
2268  }
2269  else if (p[pixel[3]] < c_b)
2270  if (p[pixel[4]] > cb)
2271  if (p[pixel[13]] > cb)
2272  if (p[pixel[7]] > cb)
2273  if (p[pixel[8]] > cb)
2274  if (p[pixel[9]] > cb)
2275  if (p[pixel[10]] > cb)
2276  if (p[pixel[11]] > cb)
2277  if (p[pixel[12]] > cb)
2278  if (p[pixel[6]] > cb)
2279  if (p[pixel[5]] > cb)
2280  {}
2281  else if (p[pixel[14]] > cb)
2282  {}
2283  else {
2284  continue;
2285  }
2286  else if (p[pixel[14]] > cb)
2287  if (p[pixel[15]] > cb)
2288  {}
2289  else {
2290  continue;
2291  }
2292  else {
2293  continue;
2294  }
2295  else {
2296  continue;
2297  }
2298  else {
2299  continue;
2300  }
2301  else {
2302  continue;
2303  }
2304  else {
2305  continue;
2306  }
2307  else {
2308  continue;
2309  }
2310  else {
2311  continue;
2312  }
2313  else if (p[pixel[13]] < c_b)
2314  if (p[pixel[11]] > cb)
2315  if (p[pixel[5]] > cb)
2316  if (p[pixel[6]] > cb)
2317  if (p[pixel[7]] > cb)
2318  if (p[pixel[8]] > cb)
2319  if (p[pixel[9]] > cb)
2320  if (p[pixel[10]] > cb)
2321  if (p[pixel[12]] > cb)
2322  {}
2323  else {
2324  continue;
2325  }
2326  else {
2327  continue;
2328  }
2329  else {
2330  continue;
2331  }
2332  else {
2333  continue;
2334  }
2335  else {
2336  continue;
2337  }
2338  else {
2339  continue;
2340  }
2341  else {
2342  continue;
2343  }
2344  else if (p[pixel[11]] < c_b)
2345  if (p[pixel[12]] < c_b)
2346  if (p[pixel[14]] < c_b)
2347  if (p[pixel[15]] < c_b)
2348  {}
2349  else if (p[pixel[6]] < c_b)
2350  if (p[pixel[7]] < c_b)
2351  if (p[pixel[8]] < c_b)
2352  if (p[pixel[9]] < c_b)
2353  if (p[pixel[10]] < c_b)
2354  {}
2355  else {
2356  continue;
2357  }
2358  else {
2359  continue;
2360  }
2361  else {
2362  continue;
2363  }
2364  else {
2365  continue;
2366  }
2367  else {
2368  continue;
2369  }
2370  else if (p[pixel[5]] < c_b)
2371  if (p[pixel[6]] < c_b)
2372  if (p[pixel[7]] < c_b)
2373  if (p[pixel[8]] < c_b)
2374  if (p[pixel[9]] < c_b)
2375  if (p[pixel[10]] < c_b)
2376  {}
2377  else {
2378  continue;
2379  }
2380  else {
2381  continue;
2382  }
2383  else {
2384  continue;
2385  }
2386  else {
2387  continue;
2388  }
2389  else {
2390  continue;
2391  }
2392  else {
2393  continue;
2394  }
2395  else {
2396  continue;
2397  }
2398  else {
2399  continue;
2400  }
2401  else if (p[pixel[5]] > cb)
2402  if (p[pixel[6]] > cb)
2403  if (p[pixel[7]] > cb)
2404  if (p[pixel[8]] > cb)
2405  if (p[pixel[9]] > cb)
2406  if (p[pixel[10]] > cb)
2407  if (p[pixel[11]] > cb)
2408  if (p[pixel[12]] > cb)
2409  {}
2410  else {
2411  continue;
2412  }
2413  else {
2414  continue;
2415  }
2416  else {
2417  continue;
2418  }
2419  else {
2420  continue;
2421  }
2422  else {
2423  continue;
2424  }
2425  else {
2426  continue;
2427  }
2428  else {
2429  continue;
2430  }
2431  else {
2432  continue;
2433  }
2434  else if (p[pixel[4]] < c_b)
2435  if (p[pixel[5]] > cb)
2436  if (p[pixel[14]] > cb)
2437  if (p[pixel[7]] > cb)
2438  if (p[pixel[8]] > cb)
2439  if (p[pixel[9]] > cb)
2440  if (p[pixel[10]] > cb)
2441  if (p[pixel[11]] > cb)
2442  if (p[pixel[12]] > cb)
2443  if (p[pixel[13]] > cb)
2444  if (p[pixel[6]] > cb)
2445  {}
2446  else if (p[pixel[15]] > cb)
2447  {}
2448  else {
2449  continue;
2450  }
2451  else {
2452  continue;
2453  }
2454  else {
2455  continue;
2456  }
2457  else {
2458  continue;
2459  }
2460  else {
2461  continue;
2462  }
2463  else {
2464  continue;
2465  }
2466  else {
2467  continue;
2468  }
2469  else {
2470  continue;
2471  }
2472  else if (p[pixel[14]] < c_b)
2473  if (p[pixel[12]] > cb)
2474  if (p[pixel[6]] > cb)
2475  if (p[pixel[7]] > cb)
2476  if (p[pixel[8]] > cb)
2477  if (p[pixel[9]] > cb)
2478  if (p[pixel[10]] > cb)
2479  if (p[pixel[11]] > cb)
2480  if (p[pixel[13]] > cb)
2481  {}
2482  else {
2483  continue;
2484  }
2485  else {
2486  continue;
2487  }
2488  else {
2489  continue;
2490  }
2491  else {
2492  continue;
2493  }
2494  else {
2495  continue;
2496  }
2497  else {
2498  continue;
2499  }
2500  else {
2501  continue;
2502  }
2503  else if (p[pixel[12]] < c_b)
2504  if (p[pixel[13]] < c_b)
2505  if (p[pixel[15]] < c_b)
2506  {}
2507  else if (p[pixel[6]] < c_b)
2508  if (p[pixel[7]] < c_b)
2509  if (p[pixel[8]] < c_b)
2510  if (p[pixel[9]] < c_b)
2511  if (p[pixel[10]] < c_b)
2512  if (p[pixel[11]] < c_b)
2513  {}
2514  else {
2515  continue;
2516  }
2517  else {
2518  continue;
2519  }
2520  else {
2521  continue;
2522  }
2523  else {
2524  continue;
2525  }
2526  else {
2527  continue;
2528  }
2529  else {
2530  continue;
2531  }
2532  else {
2533  continue;
2534  }
2535  else {
2536  continue;
2537  }
2538  else if (p[pixel[6]] > cb)
2539  if (p[pixel[7]] > cb)
2540  if (p[pixel[8]] > cb)
2541  if (p[pixel[9]] > cb)
2542  if (p[pixel[10]] > cb)
2543  if (p[pixel[11]] > cb)
2544  if (p[pixel[12]] > cb)
2545  if (p[pixel[13]] > cb)
2546  {}
2547  else {
2548  continue;
2549  }
2550  else {
2551  continue;
2552  }
2553  else {
2554  continue;
2555  }
2556  else {
2557  continue;
2558  }
2559  else {
2560  continue;
2561  }
2562  else {
2563  continue;
2564  }
2565  else {
2566  continue;
2567  }
2568  else {
2569  continue;
2570  }
2571  else if (p[pixel[5]] < c_b)
2572  if (p[pixel[6]] > cb)
2573  if (p[pixel[15]] < c_b)
2574  if (p[pixel[13]] > cb)
2575  if (p[pixel[7]] > cb)
2576  if (p[pixel[8]] > cb)
2577  if (p[pixel[9]] > cb)
2578  if (p[pixel[10]] > cb)
2579  if (p[pixel[11]] > cb)
2580  if (p[pixel[12]] > cb)
2581  if (p[pixel[14]] > cb)
2582  {}
2583  else {
2584  continue;
2585  }
2586  else {
2587  continue;
2588  }
2589  else {
2590  continue;
2591  }
2592  else {
2593  continue;
2594  }
2595  else {
2596  continue;
2597  }
2598  else {
2599  continue;
2600  }
2601  else {
2602  continue;
2603  }
2604  else if (p[pixel[13]] < c_b)
2605  if (p[pixel[14]] < c_b)
2606  {}
2607  else {
2608  continue;
2609  }
2610  else {
2611  continue;
2612  }
2613  else if (p[pixel[7]] > cb)
2614  if (p[pixel[8]] > cb)
2615  if (p[pixel[9]] > cb)
2616  if (p[pixel[10]] > cb)
2617  if (p[pixel[11]] > cb)
2618  if (p[pixel[12]] > cb)
2619  if (p[pixel[13]] > cb)
2620  if (p[pixel[14]] > cb)
2621  {}
2622  else {
2623  continue;
2624  }
2625  else {
2626  continue;
2627  }
2628  else {
2629  continue;
2630  }
2631  else {
2632  continue;
2633  }
2634  else {
2635  continue;
2636  }
2637  else {
2638  continue;
2639  }
2640  else {
2641  continue;
2642  }
2643  else {
2644  continue;
2645  }
2646  else if (p[pixel[6]] < c_b)
2647  if (p[pixel[7]] > cb)
2648  if (p[pixel[14]] > cb)
2649  if (p[pixel[8]] > cb)
2650  if (p[pixel[9]] > cb)
2651  if (p[pixel[10]] > cb)
2652  if (p[pixel[11]] > cb)
2653  if (p[pixel[12]] > cb)
2654  if (p[pixel[13]] > cb)
2655  if (p[pixel[15]] > cb)
2656  {}
2657  else {
2658  continue;
2659  }
2660  else {
2661  continue;
2662  }
2663  else {
2664  continue;
2665  }
2666  else {
2667  continue;
2668  }
2669  else {
2670  continue;
2671  }
2672  else {
2673  continue;
2674  }
2675  else {
2676  continue;
2677  }
2678  else if (p[pixel[14]] < c_b)
2679  if (p[pixel[15]] < c_b)
2680  {}
2681  else {
2682  continue;
2683  }
2684  else {
2685  continue;
2686  }
2687  else if (p[pixel[7]] < c_b)
2688  if (p[pixel[8]] < c_b)
2689  {}
2690  else if (p[pixel[15]] < c_b)
2691  {}
2692  else {
2693  continue;
2694  }
2695  else if (p[pixel[14]] < c_b)
2696  if (p[pixel[15]] < c_b)
2697  {}
2698  else {
2699  continue;
2700  }
2701  else {
2702  continue;
2703  }
2704  else if (p[pixel[13]] > cb)
2705  if (p[pixel[7]] > cb)
2706  if (p[pixel[8]] > cb)
2707  if (p[pixel[9]] > cb)
2708  if (p[pixel[10]] > cb)
2709  if (p[pixel[11]] > cb)
2710  if (p[pixel[12]] > cb)
2711  if (p[pixel[14]] > cb)
2712  if (p[pixel[15]] > cb)
2713  {}
2714  else {
2715  continue;
2716  }
2717  else {
2718  continue;
2719  }
2720  else {
2721  continue;
2722  }
2723  else {
2724  continue;
2725  }
2726  else {
2727  continue;
2728  }
2729  else {
2730  continue;
2731  }
2732  else {
2733  continue;
2734  }
2735  else {
2736  continue;
2737  }
2738  else if (p[pixel[13]] < c_b)
2739  if (p[pixel[14]] < c_b)
2740  if (p[pixel[15]] < c_b)
2741  {}
2742  else {
2743  continue;
2744  }
2745  else {
2746  continue;
2747  }
2748  else {
2749  continue;
2750  }
2751  else if (p[pixel[12]] > cb)
2752  if (p[pixel[7]] > cb)
2753  if (p[pixel[8]] > cb)
2754  if (p[pixel[9]] > cb)
2755  if (p[pixel[10]] > cb)
2756  if (p[pixel[11]] > cb)
2757  if (p[pixel[13]] > cb)
2758  if (p[pixel[14]] > cb)
2759  if (p[pixel[6]] > cb)
2760  {}
2761  else if (p[pixel[15]] > cb)
2762  {}
2763  else {
2764  continue;
2765  }
2766  else {
2767  continue;
2768  }
2769  else {
2770  continue;
2771  }
2772  else {
2773  continue;
2774  }
2775  else {
2776  continue;
2777  }
2778  else {
2779  continue;
2780  }
2781  else {
2782  continue;
2783  }
2784  else {
2785  continue;
2786  }
2787  else if (p[pixel[12]] < c_b)
2788  if (p[pixel[13]] < c_b)
2789  if (p[pixel[14]] < c_b)
2790  if (p[pixel[15]] < c_b)
2791  {}
2792  else if (p[pixel[6]] < c_b)
2793  if (p[pixel[7]] < c_b)
2794  if (p[pixel[8]] < c_b)
2795  if (p[pixel[9]] < c_b)
2796  if (p[pixel[10]] < c_b)
2797  if (p[pixel[11]] < c_b)
2798  {}
2799  else {
2800  continue;
2801  }
2802  else {
2803  continue;
2804  }
2805  else {
2806  continue;
2807  }
2808  else {
2809  continue;
2810  }
2811  else {
2812  continue;
2813  }
2814  else {
2815  continue;
2816  }
2817  else {
2818  continue;
2819  }
2820  else {
2821  continue;
2822  }
2823  else {
2824  continue;
2825  }
2826  else if (p[pixel[11]] > cb)
2827  if (p[pixel[7]] > cb)
2828  if (p[pixel[8]] > cb)
2829  if (p[pixel[9]] > cb)
2830  if (p[pixel[10]] > cb)
2831  if (p[pixel[12]] > cb)
2832  if (p[pixel[13]] > cb)
2833  if (p[pixel[6]] > cb)
2834  if (p[pixel[5]] > cb)
2835  {}
2836  else if (p[pixel[14]] > cb)
2837  {}
2838  else {
2839  continue;
2840  }
2841  else if (p[pixel[14]] > cb)
2842  if (p[pixel[15]] > cb)
2843  {}
2844  else {
2845  continue;
2846  }
2847  else {
2848  continue;
2849  }
2850  else {
2851  continue;
2852  }
2853  else {
2854  continue;
2855  }
2856  else {
2857  continue;
2858  }
2859  else {
2860  continue;
2861  }
2862  else {
2863  continue;
2864  }
2865  else {
2866  continue;
2867  }
2868  else if (p[pixel[11]] < c_b)
2869  if (p[pixel[12]] < c_b)
2870  if (p[pixel[13]] < c_b)
2871  if (p[pixel[14]] < c_b)
2872  if (p[pixel[15]] < c_b)
2873  {}
2874  else if (p[pixel[6]] < c_b)
2875  if (p[pixel[7]] < c_b)
2876  if (p[pixel[8]] < c_b)
2877  if (p[pixel[9]] < c_b)
2878  if (p[pixel[10]] < c_b)
2879  {}
2880  else {
2881  continue;
2882  }
2883  else {
2884  continue;
2885  }
2886  else {
2887  continue;
2888  }
2889  else {
2890  continue;
2891  }
2892  else {
2893  continue;
2894  }
2895  else if (p[pixel[5]] < c_b)
2896  if (p[pixel[6]] < c_b)
2897  if (p[pixel[7]] < c_b)
2898  if (p[pixel[8]] < c_b)
2899  if (p[pixel[9]] < c_b)
2900  if (p[pixel[10]] < c_b)
2901  {}
2902  else {
2903  continue;
2904  }
2905  else {
2906  continue;
2907  }
2908  else {
2909  continue;
2910  }
2911  else {
2912  continue;
2913  }
2914  else {
2915  continue;
2916  }
2917  else {
2918  continue;
2919  }
2920  else {
2921  continue;
2922  }
2923  else {
2924  continue;
2925  }
2926  else {
2927  continue;
2928  }
2929  else if (p[pixel[10]] > cb)
2930  if (p[pixel[7]] > cb)
2931  if (p[pixel[8]] > cb)
2932  if (p[pixel[9]] > cb)
2933  if (p[pixel[11]] > cb)
2934  if (p[pixel[12]] > cb)
2935  if (p[pixel[6]] > cb)
2936  if (p[pixel[5]] > cb)
2937  if (p[pixel[4]] > cb)
2938  {}
2939  else if (p[pixel[13]] > cb)
2940  {}
2941  else {
2942  continue;
2943  }
2944  else if (p[pixel[13]] > cb)
2945  if (p[pixel[14]] > cb)
2946  {}
2947  else {
2948  continue;
2949  }
2950  else {
2951  continue;
2952  }
2953  else if (p[pixel[13]] > cb)
2954  if (p[pixel[14]] > cb)
2955  if (p[pixel[15]] > cb)
2956  {}
2957  else {
2958  continue;
2959  }
2960  else {
2961  continue;
2962  }
2963  else {
2964  continue;
2965  }
2966  else {
2967  continue;
2968  }
2969  else {
2970  continue;
2971  }
2972  else {
2973  continue;
2974  }
2975  else {
2976  continue;
2977  }
2978  else {
2979  continue;
2980  }
2981  else if (p[pixel[10]] < c_b)
2982  if (p[pixel[11]] < c_b)
2983  if (p[pixel[12]] < c_b)
2984  if (p[pixel[13]] < c_b)
2985  if (p[pixel[14]] < c_b)
2986  if (p[pixel[15]] < c_b)
2987  {}
2988  else if (p[pixel[6]] < c_b)
2989  if (p[pixel[7]] < c_b)
2990  if (p[pixel[8]] < c_b)
2991  if (p[pixel[9]] < c_b)
2992  {}
2993  else {
2994  continue;
2995  }
2996  else {
2997  continue;
2998  }
2999  else {
3000  continue;
3001  }
3002  else {
3003  continue;
3004  }
3005  else if (p[pixel[5]] < c_b)
3006  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)
3010  {}
3011  else {
3012  continue;
3013  }
3014  else {
3015  continue;
3016  }
3017  else {
3018  continue;
3019  }
3020  else {
3021  continue;
3022  }
3023  else {
3024  continue;
3025  }
3026  else if (p[pixel[4]] < c_b)
3027  if (p[pixel[5]] < c_b)
3028  if (p[pixel[6]] < c_b)
3029  if (p[pixel[7]] < c_b)
3030  if (p[pixel[8]] < c_b)
3031  if (p[pixel[9]] < c_b)
3032  {}
3033  else {
3034  continue;
3035  }
3036  else {
3037  continue;
3038  }
3039  else {
3040  continue;
3041  }
3042  else {
3043  continue;
3044  }
3045  else {
3046  continue;
3047  }
3048  else {
3049  continue;
3050  }
3051  else {
3052  continue;
3053  }
3054  else {
3055  continue;
3056  }
3057  else {
3058  continue;
3059  }
3060  else if (p[pixel[9]] > cb)
3061  if (p[pixel[7]] > cb)
3062  if (p[pixel[8]] > cb)
3063  if (p[pixel[10]] > cb)
3064  if (p[pixel[11]] > cb)
3065  if (p[pixel[6]] > cb)
3066  if (p[pixel[5]] > cb)
3067  if (p[pixel[4]] > cb)
3068  if (p[pixel[3]] > cb)
3069  {}
3070  else if (p[pixel[12]] > cb)
3071  {}
3072  else {
3073  continue;
3074  }
3075  else if (p[pixel[12]] > cb)
3076  if (p[pixel[13]] > cb)
3077  {}
3078  else {
3079  continue;
3080  }
3081  else {
3082  continue;
3083  }
3084  else if (p[pixel[12]] > cb)
3085  if (p[pixel[13]] > cb)
3086  if (p[pixel[14]] > cb)
3087  {}
3088  else {
3089  continue;
3090  }
3091  else {
3092  continue;
3093  }
3094  else {
3095  continue;
3096  }
3097  else if (p[pixel[12]] > cb)
3098  if (p[pixel[13]] > cb)
3099  if (p[pixel[14]] > cb)
3100  if (p[pixel[15]] > cb)
3101  {}
3102  else {
3103  continue;
3104  }
3105  else {
3106  continue;
3107  }
3108  else {
3109  continue;
3110  }
3111  else {
3112  continue;
3113  }
3114  else {
3115  continue;
3116  }
3117  else {
3118  continue;
3119  }
3120  else {
3121  continue;
3122  }
3123  else {
3124  continue;
3125  }
3126  else if (p[pixel[9]] < c_b)
3127  if (p[pixel[10]] < c_b)
3128  if (p[pixel[11]] < c_b)
3129  if (p[pixel[12]] < c_b)
3130  if (p[pixel[13]] < c_b)
3131  if (p[pixel[14]] < c_b)
3132  if (p[pixel[15]] < c_b)
3133  {}
3134  else if (p[pixel[6]] < c_b)
3135  if (p[pixel[7]] < c_b)
3136  if (p[pixel[8]] < c_b)
3137  {}
3138  else {
3139  continue;
3140  }
3141  else {
3142  continue;
3143  }
3144  else {
3145  continue;
3146  }
3147  else if (p[pixel[5]] < c_b)
3148  if (p[pixel[6]] < c_b)
3149  if (p[pixel[7]] < c_b)
3150  if (p[pixel[8]] < c_b)
3151  {}
3152  else {
3153  continue;
3154  }
3155  else {
3156  continue;
3157  }
3158  else {
3159  continue;
3160  }
3161  else {
3162  continue;
3163  }
3164  else if (p[pixel[4]] < c_b)
3165  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)
3169  {}
3170  else {
3171  continue;
3172  }
3173  else {
3174  continue;
3175  }
3176  else {
3177  continue;
3178  }
3179  else {
3180  continue;
3181  }
3182  else {
3183  continue;
3184  }
3185  else if (p[pixel[3]] < c_b)
3186  if (p[pixel[4]] < c_b)
3187  if (p[pixel[5]] < c_b)
3188  if (p[pixel[6]] < c_b)
3189  if (p[pixel[7]] < c_b)
3190  if (p[pixel[8]] < c_b)
3191  {}
3192  else {
3193  continue;
3194  }
3195  else {
3196  continue;
3197  }
3198  else {
3199  continue;
3200  }
3201  else {
3202  continue;
3203  }
3204  else {
3205  continue;
3206  }
3207  else {
3208  continue;
3209  }
3210  else {
3211  continue;
3212  }
3213  else {
3214  continue;
3215  }
3216  else {
3217  continue;
3218  }
3219  else if (p[pixel[8]] > cb)
3220  if (p[pixel[7]] > cb)
3221  if (p[pixel[9]] > cb)
3222  if (p[pixel[10]] > cb)
3223  if (p[pixel[6]] > cb)
3224  if (p[pixel[5]] > cb)
3225  if (p[pixel[4]] > cb)
3226  if (p[pixel[3]] > cb)
3227  if (p[pixel[2]] > cb)
3228  {}
3229  else if (p[pixel[11]] > cb)
3230  {}
3231  else {
3232  continue;
3233  }
3234  else if (p[pixel[11]] > cb)
3235  if (p[pixel[12]] > cb)
3236  {}
3237  else {
3238  continue;
3239  }
3240  else {
3241  continue;
3242  }
3243  else if (p[pixel[11]] > cb)
3244  if (p[pixel[12]] > cb)
3245  if (p[pixel[13]] > cb)
3246  {}
3247  else {
3248  continue;
3249  }
3250  else {
3251  continue;
3252  }
3253  else {
3254  continue;
3255  }
3256  else if (p[pixel[11]] > cb)
3257  if (p[pixel[12]] > cb)
3258  if (p[pixel[13]] > cb)
3259  if (p[pixel[14]] > cb)
3260  {}
3261  else {
3262  continue;
3263  }
3264  else {
3265  continue;
3266  }
3267  else {
3268  continue;
3269  }
3270  else {
3271  continue;
3272  }
3273  else if (p[pixel[11]] > cb)
3274  if (p[pixel[12]] > cb)
3275  if (p[pixel[13]] > cb)
3276  if (p[pixel[14]] > cb)
3277  if (p[pixel[15]] > cb)
3278  {}
3279  else {
3280  continue;
3281  }
3282  else {
3283  continue;
3284  }
3285  else {
3286  continue;
3287  }
3288  else {
3289  continue;
3290  }
3291  else {
3292  continue;
3293  }
3294  else {
3295  continue;
3296  }
3297  else {
3298  continue;
3299  }
3300  else {
3301  continue;
3302  }
3303  else if (p[pixel[8]] < c_b)
3304  if (p[pixel[9]] < c_b)
3305  if (p[pixel[10]] < c_b)
3306  if (p[pixel[11]] < c_b)
3307  if (p[pixel[12]] < c_b)
3308  if (p[pixel[13]] < c_b)
3309  if (p[pixel[14]] < c_b)
3310  if (p[pixel[15]] < c_b)
3311  {}
3312  else if (p[pixel[6]] < c_b)
3313  if (p[pixel[7]] < c_b)
3314  {}
3315  else {
3316  continue;
3317  }
3318  else {
3319  continue;
3320  }
3321  else if (p[pixel[5]] < c_b)
3322  if (p[pixel[6]] < c_b)
3323  if (p[pixel[7]] < c_b)
3324  {}
3325  else {
3326  continue;
3327  }
3328  else {
3329  continue;
3330  }
3331  else {
3332  continue;
3333  }
3334  else if (p[pixel[4]] < c_b)
3335  if (p[pixel[5]] < c_b)
3336  if (p[pixel[6]] < c_b)
3337  if (p[pixel[7]] < c_b)
3338  {}
3339  else {
3340  continue;
3341  }
3342  else {
3343  continue;
3344  }
3345  else {
3346  continue;
3347  }
3348  else {
3349  continue;
3350  }
3351  else if (p[pixel[3]] < c_b)
3352  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)
3356  {}
3357  else {
3358  continue;
3359  }
3360  else {
3361  continue;
3362  }
3363  else {
3364  continue;
3365  }
3366  else {
3367  continue;
3368  }
3369  else {
3370  continue;
3371  }
3372  else if (p[pixel[2]] < c_b)
3373  if (p[pixel[3]] < c_b)
3374  if (p[pixel[4]] < c_b)
3375  if (p[pixel[5]] < c_b)
3376  if (p[pixel[6]] < c_b)
3377  if (p[pixel[7]] < c_b)
3378  {}
3379  else {
3380  continue;
3381  }
3382  else {
3383  continue;
3384  }
3385  else {
3386  continue;
3387  }
3388  else {
3389  continue;
3390  }
3391  else {
3392  continue;
3393  }
3394  else {
3395  continue;
3396  }
3397  else {
3398  continue;
3399  }
3400  else {
3401  continue;
3402  }
3403  else {
3404  continue;
3405  }
3406  else if (p[pixel[7]] > cb)
3407  if (p[pixel[8]] > cb)
3408  if (p[pixel[9]] > cb)
3409  if (p[pixel[6]] > cb)
3410  if (p[pixel[5]] > cb)
3411  if (p[pixel[4]] > cb)
3412  if (p[pixel[3]] > cb)
3413  if (p[pixel[2]] > cb)
3414  if (p[pixel[1]] > cb)
3415  {}
3416  else if (p[pixel[10]] > cb)
3417  {}
3418  else {
3419  continue;
3420  }
3421  else if (p[pixel[10]] > cb)
3422  if (p[pixel[11]] > cb)
3423  {}
3424  else {
3425  continue;
3426  }
3427  else {
3428  continue;
3429  }
3430  else if (p[pixel[10]] > cb)
3431  if (p[pixel[11]] > cb)
3432  if (p[pixel[12]] > cb)
3433  {}
3434  else {
3435  continue;
3436  }
3437  else {
3438  continue;
3439  }
3440  else {
3441  continue;
3442  }
3443  else if (p[pixel[10]] > cb)
3444  if (p[pixel[11]] > cb)
3445  if (p[pixel[12]] > cb)
3446  if (p[pixel[13]] > cb)
3447  {}
3448  else {
3449  continue;
3450  }
3451  else {
3452  continue;
3453  }
3454  else {
3455  continue;
3456  }
3457  else {
3458  continue;
3459  }
3460  else if (p[pixel[10]] > cb)
3461  if (p[pixel[11]] > cb)
3462  if (p[pixel[12]] > cb)
3463  if (p[pixel[13]] > cb)
3464  if (p[pixel[14]] > cb)
3465  {}
3466  else {
3467  continue;
3468  }
3469  else {
3470  continue;
3471  }
3472  else {
3473  continue;
3474  }
3475  else {
3476  continue;
3477  }
3478  else {
3479  continue;
3480  }
3481  else if (p[pixel[10]] > cb)
3482  if (p[pixel[11]] > cb)
3483  if (p[pixel[12]] > cb)
3484  if (p[pixel[13]] > cb)
3485  if (p[pixel[14]] > cb)
3486  if (p[pixel[15]] > cb)
3487  {}
3488  else {
3489  continue;
3490  }
3491  else {
3492  continue;
3493  }
3494  else {
3495  continue;
3496  }
3497  else {
3498  continue;
3499  }
3500  else {
3501  continue;
3502  }
3503  else {
3504  continue;
3505  }
3506  else {
3507  continue;
3508  }
3509  else {
3510  continue;
3511  }
3512  else if (p[pixel[7]] < c_b)
3513  if (p[pixel[8]] < c_b)
3514  if (p[pixel[9]] < c_b)
3515  if (p[pixel[6]] < c_b)
3516  if (p[pixel[5]] < c_b)
3517  if (p[pixel[4]] < c_b)
3518  if (p[pixel[3]] < c_b)
3519  if (p[pixel[2]] < c_b)
3520  if (p[pixel[1]] < c_b)
3521  {}
3522  else if (p[pixel[10]] < c_b)
3523  {}
3524  else {
3525  continue;
3526  }
3527  else if (p[pixel[10]] < c_b)
3528  if (p[pixel[11]] < c_b)
3529  {}
3530  else {
3531  continue;
3532  }
3533  else {
3534  continue;
3535  }
3536  else if (p[pixel[10]] < c_b)
3537  if (p[pixel[11]] < c_b)
3538  if (p[pixel[12]] < c_b)
3539  {}
3540  else {
3541  continue;
3542  }
3543  else {
3544  continue;
3545  }
3546  else {
3547  continue;
3548  }
3549  else if (p[pixel[10]] < c_b)
3550  if (p[pixel[11]] < c_b)
3551  if (p[pixel[12]] < c_b)
3552  if (p[pixel[13]] < c_b)
3553  {}
3554  else {
3555  continue;
3556  }
3557  else {
3558  continue;
3559  }
3560  else {
3561  continue;
3562  }
3563  else {
3564  continue;
3565  }
3566  else if (p[pixel[10]] < c_b)
3567  if (p[pixel[11]] < c_b)
3568  if (p[pixel[12]] < c_b)
3569  if (p[pixel[13]] < c_b)
3570  if (p[pixel[14]] < c_b)
3571  {}
3572  else {
3573  continue;
3574  }
3575  else {
3576  continue;
3577  }
3578  else {
3579  continue;
3580  }
3581  else {
3582  continue;
3583  }
3584  else {
3585  continue;
3586  }
3587  else if (p[pixel[10]] < c_b)
3588  if (p[pixel[11]] < c_b)
3589  if (p[pixel[12]] < c_b)
3590  if (p[pixel[13]] < c_b)
3591  if (p[pixel[14]] < c_b)
3592  if (p[pixel[15]] < c_b)
3593  {}
3594  else {
3595  continue;
3596  }
3597  else {
3598  continue;
3599  }
3600  else {
3601  continue;
3602  }
3603  else {
3604  continue;
3605  }
3606  else {
3607  continue;
3608  }
3609  else {
3610  continue;
3611  }
3612  else {
3613  continue;
3614  }
3615  else {
3616  continue;
3617  }
3618  else {
3619  continue;
3620  }
3621 
3622  // When we have more corner than allocted space reallocate
3623  if (corner_cnt == rsize) {
3624  rsize *= 2;
3625  ret_corners = realloc(ret_corners, sizeof(struct point_t) * rsize);
3626  }
3627 
3628  ret_corners[corner_cnt].x = x;
3629  ret_corners[corner_cnt].y = y;
3630  corner_cnt++;
3631 
3632  // Skip some in the width direction
3633  x += min_dist;
3634  }
3635 
3636  *num_corners = corner_cnt;
3637  return ret_corners;
3638 }
3639 
3645 static void fast_make_offsets(int32_t *pixel, uint16_t row_stride, uint8_t pixel_size)
3646 {
3647  pixel[0] = 0 * pixel_size + row_stride * 3 * pixel_size;
3648  pixel[1] = 1 * pixel_size + row_stride * 3 * pixel_size;
3649  pixel[2] = 2 * pixel_size + row_stride * 2 * pixel_size;
3650  pixel[3] = 3 * pixel_size + row_stride * 1 * pixel_size;
3651  pixel[4] = 3 * pixel_size + row_stride * 0 * pixel_size;
3652  pixel[5] = 3 * pixel_size + row_stride * -1 * pixel_size;
3653  pixel[6] = 2 * pixel_size + row_stride * -2 * pixel_size;
3654  pixel[7] = 1 * pixel_size + row_stride * -3 * pixel_size;
3655  pixel[8] = 0 * pixel_size + row_stride * -3 * pixel_size;
3656  pixel[9] = -1 * pixel_size + row_stride * -3 * pixel_size;
3657  pixel[10] = -2 * pixel_size + row_stride * -2 * pixel_size;
3658  pixel[11] = -3 * pixel_size + row_stride * -1 * pixel_size;
3659  pixel[12] = -3 * pixel_size + row_stride * 0 * pixel_size;
3660  pixel[13] = -3 * pixel_size + row_stride * 1 * pixel_size;
3661  pixel[14] = -2 * pixel_size + row_stride * 2 * pixel_size;
3662  pixel[15] = -1 * pixel_size + row_stride * 3 * pixel_size;
3663 }
unsigned short uint16_t
Definition: types.h:16
uint16_t x
The x coordinate of the point.
Definition: image.h:55
Definition: image.h:42
#define FALSE
Definition: std.h:5
struct point_t * 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)
Do a FAST9 corner detection.
Definition: fast_rosten.c:49
#define TRUE
Definition: std.h:4
uint16_t w
Image width.
Definition: image.h:44
unsigned long uint32_t
Definition: types.h:18
uint16_t h
Image height.
Definition: image.h:45
signed short int16_t
Definition: types.h:17
void * buf
Image buffer (depending on the image_type)
Definition: image.h:50
Definition: image.h:54
signed long int32_t
Definition: types.h:19
unsigned char uint8_t
Definition: types.h:14
static void fast_make_offsets(int32_t *pixel, uint16_t row_stride, uint8_t pixel_size)
Make offsets for FAST9 calculation.
Definition: fast_rosten.c:3645
UYVY format (uint16 per pixel)
Definition: image.h:35
static float p[2][2]
uint16_t y
The y coordinate of the point.
Definition: image.h:56
enum image_type type
The image type.
Definition: image.h:43