Paparazzi UAS  v5.10_stable-5-g83a0da5-dirty
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 
51 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) {
52  uint32_t corner_cnt = 0;
53 
54  int pixel[16];
55  int16_t i;
56  uint16_t x, y, x_min, x_max, y_min;
57  uint8_t need_skip;
58  // Set the pixel size
59  uint8_t pixel_size = 1;
60  if (img->type == IMAGE_YUV422) {
61  pixel_size = 2;
62  }
63 
64  // Calculate the pixel offsets
65  fast_make_offsets(pixel, img->w, pixel_size);
66 
67  // Go trough all the pixels (minus the borders)
68  for (y = 3 + y_padding; y < img->h - 3 - y_padding; y++) {
69 
70  if (min_dist > 0) y_min = y - min_dist;
71 
72  for (x = 3 + x_padding; x < img->w - 3 - x_padding; x++) {
73  // First check if we aren't in range vertical (TODO: fix less intensive way)
74  if (min_dist > 0) {
75 
76  need_skip = 0;
77 
78  x_min = x - min_dist;
79  x_max = x + min_dist;
80 
81 
82  // Go through the previous corners until y goes out of range
83  i = corner_cnt-1;
84  while( i >= 0) {
85 
86  // corners are stored with increasing y,
87  // so if we go from the last to the first, then their y-coordinate will go out of range
88  if(ret_corners[i].y < y_min)
89  break;
90 
91  if (x_min < ret_corners[i].x && ret_corners[i].x < x_max) {
92  need_skip = 1;
93  break;
94  }
95 
96  i--;
97  }
98 
99  // Skip the box if we found a pixel nearby
100  if (need_skip) {
101  x += min_dist;
102  continue;
103  }
104  }
105 
106  // Calculate the threshold values
107  const uint8_t *p = ((uint8_t *)img->buf) + y * img->w * pixel_size + x * pixel_size + pixel_size / 2;
108  int16_t cb = *p + threshold;
109  int16_t c_b = *p - threshold;
110 
111  // Do the checks if it is a corner
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)
121  {}
122  else if (p[pixel[15]] > cb)
123  {}
124  else {
125  continue;
126  }
127  else if (p[pixel[7]] < c_b)
128  if (p[pixel[14]] > cb)
129  if (p[pixel[15]] > cb)
130  {}
131  else {
132  continue;
133  }
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)
142  {}
143  else {
144  continue;
145  }
146  else {
147  continue;
148  }
149  else {
150  continue;
151  }
152  else {
153  continue;
154  }
155  else {
156  continue;
157  }
158  else {
159  continue;
160  }
161  else {
162  continue;
163  }
164  else {
165  continue;
166  }
167  else if (p[pixel[14]] > cb)
168  if (p[pixel[15]] > cb)
169  {}
170  else {
171  continue;
172  }
173  else {
174  continue;
175  }
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)
180  {}
181  else {
182  continue;
183  }
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)
192  {}
193  else {
194  continue;
195  }
196  else {
197  continue;
198  }
199  else {
200  continue;
201  }
202  else {
203  continue;
204  }
205  else {
206  continue;
207  }
208  else {
209  continue;
210  }
211  else {
212  continue;
213  }
214  else {
215  continue;
216  }
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)
225  {}
226  else {
227  continue;
228  }
229  else {
230  continue;
231  }
232  else {
233  continue;
234  }
235  else {
236  continue;
237  }
238  else {
239  continue;
240  }
241  else {
242  continue;
243  }
244  else {
245  continue;
246  }
247  else {
248  continue;
249  }
250  else if (p[pixel[13]] > cb)
251  if (p[pixel[14]] > cb)
252  if (p[pixel[15]] > cb)
253  {}
254  else {
255  continue;
256  }
257  else {
258  continue;
259  }
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)
269  {}
270  else {
271  continue;
272  }
273  else {
274  continue;
275  }
276  else {
277  continue;
278  }
279  else {
280  continue;
281  }
282  else {
283  continue;
284  }
285  else {
286  continue;
287  }
288  else {
289  continue;
290  }
291  else {
292  continue;
293  }
294  else {
295  continue;
296  }
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)
302  {}
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)
309  {}
310  else {
311  continue;
312  }
313  else {
314  continue;
315  }
316  else {
317  continue;
318  }
319  else {
320  continue;
321  }
322  else {
323  continue;
324  }
325  else {
326  continue;
327  }
328  else {
329  continue;
330  }
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)
339  {}
340  else {
341  continue;
342  }
343  else {
344  continue;
345  }
346  else {
347  continue;
348  }
349  else {
350  continue;
351  }
352  else {
353  continue;
354  }
355  else {
356  continue;
357  }
358  else {
359  continue;
360  }
361  else {
362  continue;
363  }
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)
373  {}
374  else if (p[pixel[15]] < c_b)
375  {}
376  else {
377  continue;
378  }
379  else {
380  continue;
381  }
382  else {
383  continue;
384  }
385  else {
386  continue;
387  }
388  else {
389  continue;
390  }
391  else {
392  continue;
393  }
394  else {
395  continue;
396  }
397  else {
398  continue;
399  }
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)
408  {}
409  else {
410  continue;
411  }
412  else {
413  continue;
414  }
415  else {
416  continue;
417  }
418  else {
419  continue;
420  }
421  else {
422  continue;
423  }
424  else {
425  continue;
426  }
427  else {
428  continue;
429  }
430  else {
431  continue;
432  }
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)
437  {}
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)
444  {}
445  else {
446  continue;
447  }
448  else {
449  continue;
450  }
451  else {
452  continue;
453  }
454  else {
455  continue;
456  }
457  else {
458  continue;
459  }
460  else {
461  continue;
462  }
463  else {
464  continue;
465  }
466  else {
467  continue;
468  }
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)
478  {}
479  else if (p[pixel[15]] < c_b)
480  {}
481  else {
482  continue;
483  }
484  else {
485  continue;
486  }
487  else {
488  continue;
489  }
490  else {
491  continue;
492  }
493  else {
494  continue;
495  }
496  else {
497  continue;
498  }
499  else {
500  continue;
501  }
502  else {
503  continue;
504  }
505  else {
506  continue;
507  }
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)
514  {}
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)
520  {}
521  else {
522  continue;
523  }
524  else {
525  continue;
526  }
527  else {
528  continue;
529  }
530  else {
531  continue;
532  }
533  else {
534  continue;
535  }
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)
542  {}
543  else {
544  continue;
545  }
546  else {
547  continue;
548  }
549  else {
550  continue;
551  }
552  else {
553  continue;
554  }
555  else {
556  continue;
557  }
558  else {
559  continue;
560  }
561  else {
562  continue;
563  }
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)
572  {}
573  else {
574  continue;
575  }
576  else {
577  continue;
578  }
579  else {
580  continue;
581  }
582  else {
583  continue;
584  }
585  else {
586  continue;
587  }
588  else {
589  continue;
590  }
591  else {
592  continue;
593  }
594  else {
595  continue;
596  }
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)
606  {}
607  else if (p[pixel[14]] < c_b)
608  {}
609  else {
610  continue;
611  }
612  else if (p[pixel[14]] < c_b)
613  if (p[pixel[15]] < c_b)
614  {}
615  else {
616  continue;
617  }
618  else {
619  continue;
620  }
621  else {
622  continue;
623  }
624  else {
625  continue;
626  }
627  else {
628  continue;
629  }
630  else {
631  continue;
632  }
633  else {
634  continue;
635  }
636  else {
637  continue;
638  }
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)
647  {}
648  else {
649  continue;
650  }
651  else {
652  continue;
653  }
654  else {
655  continue;
656  }
657  else {
658  continue;
659  }
660  else {
661  continue;
662  }
663  else {
664  continue;
665  }
666  else {
667  continue;
668  }
669  else {
670  continue;
671  }
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)
677  {}
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)
683  {}
684  else {
685  continue;
686  }
687  else {
688  continue;
689  }
690  else {
691  continue;
692  }
693  else {
694  continue;
695  }
696  else {
697  continue;
698  }
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)
705  {}
706  else {
707  continue;
708  }
709  else {
710  continue;
711  }
712  else {
713  continue;
714  }
715  else {
716  continue;
717  }
718  else {
719  continue;
720  }
721  else {
722  continue;
723  }
724  else {
725  continue;
726  }
727  else {
728  continue;
729  }
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)
739  {}
740  else if (p[pixel[14]] < c_b)
741  {}
742  else {
743  continue;
744  }
745  else if (p[pixel[14]] < c_b)
746  if (p[pixel[15]] < c_b)
747  {}
748  else {
749  continue;
750  }
751  else {
752  continue;
753  }
754  else {
755  continue;
756  }
757  else {
758  continue;
759  }
760  else {
761  continue;
762  }
763  else {
764  continue;
765  }
766  else {
767  continue;
768  }
769  else {
770  continue;
771  }
772  else {
773  continue;
774  }
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)
782  {}
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)
787  {}
788  else {
789  continue;
790  }
791  else {
792  continue;
793  }
794  else {
795  continue;
796  }
797  else {
798  continue;
799  }
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)
805  {}
806  else {
807  continue;
808  }
809  else {
810  continue;
811  }
812  else {
813  continue;
814  }
815  else {
816  continue;
817  }
818  else {
819  continue;
820  }
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)
827  {}
828  else {
829  continue;
830  }
831  else {
832  continue;
833  }
834  else {
835  continue;
836  }
837  else {
838  continue;
839  }
840  else {
841  continue;
842  }
843  else {
844  continue;
845  }
846  else {
847  continue;
848  }
849  else {
850  continue;
851  }
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)
860  {}
861  else if (p[pixel[12]] < c_b)
862  if (p[pixel[13]] < c_b)
863  {}
864  else {
865  continue;
866  }
867  else {
868  continue;
869  }
870  else if (p[pixel[12]] < c_b)
871  if (p[pixel[13]] < c_b)
872  if (p[pixel[14]] < c_b)
873  {}
874  else {
875  continue;
876  }
877  else {
878  continue;
879  }
880  else {
881  continue;
882  }
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)
887  {}
888  else {
889  continue;
890  }
891  else {
892  continue;
893  }
894  else {
895  continue;
896  }
897  else {
898  continue;
899  }
900  else {
901  continue;
902  }
903  else {
904  continue;
905  }
906  else {
907  continue;
908  }
909  else {
910  continue;
911  }
912  else {
913  continue;
914  }
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)
921  {}
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)
926  {}
927  else {
928  continue;
929  }
930  else {
931  continue;
932  }
933  else {
934  continue;
935  }
936  else {
937  continue;
938  }
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)
944  {}
945  else {
946  continue;
947  }
948  else {
949  continue;
950  }
951  else {
952  continue;
953  }
954  else {
955  continue;
956  }
957  else {
958  continue;
959  }
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)
966  {}
967  else {
968  continue;
969  }
970  else {
971  continue;
972  }
973  else {
974  continue;
975  }
976  else {
977  continue;
978  }
979  else {
980  continue;
981  }
982  else {
983  continue;
984  }
985  else {
986  continue;
987  }
988  else {
989  continue;
990  }
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)
1000  {}
1001  else if (p[pixel[13]] < c_b)
1002  {}
1003  else {
1004  continue;
1005  }
1006  else if (p[pixel[13]] < c_b)
1007  if (p[pixel[14]] < c_b)
1008  {}
1009  else {
1010  continue;
1011  }
1012  else {
1013  continue;
1014  }
1015  else if (p[pixel[13]] < c_b)
1016  if (p[pixel[14]] < c_b)
1017  if (p[pixel[15]] < c_b)
1018  {}
1019  else {
1020  continue;
1021  }
1022  else {
1023  continue;
1024  }
1025  else {
1026  continue;
1027  }
1028  else {
1029  continue;
1030  }
1031  else {
1032  continue;
1033  }
1034  else {
1035  continue;
1036  }
1037  else {
1038  continue;
1039  }
1040  else {
1041  continue;
1042  }
1043  else {
1044  continue;
1045  }
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)
1054  {}
1055  else if (p[pixel[6]] > cb)
1056  if (p[pixel[7]] > cb)
1057  if (p[pixel[8]] > cb)
1058  {}
1059  else {
1060  continue;
1061  }
1062  else {
1063  continue;
1064  }
1065  else {
1066  continue;
1067  }
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)
1072  {}
1073  else {
1074  continue;
1075  }
1076  else {
1077  continue;
1078  }
1079  else {
1080  continue;
1081  }
1082  else {
1083  continue;
1084  }
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)
1090  {}
1091  else {
1092  continue;
1093  }
1094  else {
1095  continue;
1096  }
1097  else {
1098  continue;
1099  }
1100  else {
1101  continue;
1102  }
1103  else {
1104  continue;
1105  }
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)
1112  {}
1113  else {
1114  continue;
1115  }
1116  else {
1117  continue;
1118  }
1119  else {
1120  continue;
1121  }
1122  else {
1123  continue;
1124  }
1125  else {
1126  continue;
1127  }
1128  else {
1129  continue;
1130  }
1131  else {
1132  continue;
1133  }
1134  else {
1135  continue;
1136  }
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)
1145  {}
1146  else if (p[pixel[11]] < c_b)
1147  if (p[pixel[12]] < c_b)
1148  {}
1149  else {
1150  continue;
1151  }
1152  else {
1153  continue;
1154  }
1155  else if (p[pixel[11]] < c_b)
1156  if (p[pixel[12]] < c_b)
1157  if (p[pixel[13]] < c_b)
1158  {}
1159  else {
1160  continue;
1161  }
1162  else {
1163  continue;
1164  }
1165  else {
1166  continue;
1167  }
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)
1172  {}
1173  else {
1174  continue;
1175  }
1176  else {
1177  continue;
1178  }
1179  else {
1180  continue;
1181  }
1182  else {
1183  continue;
1184  }
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)
1190  {}
1191  else {
1192  continue;
1193  }
1194  else {
1195  continue;
1196  }
1197  else {
1198  continue;
1199  }
1200  else {
1201  continue;
1202  }
1203  else {
1204  continue;
1205  }
1206  else {
1207  continue;
1208  }
1209  else {
1210  continue;
1211  }
1212  else {
1213  continue;
1214  }
1215  else {
1216  continue;
1217  }
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)
1225  {}
1226  else if (p[pixel[6]] > cb)
1227  if (p[pixel[7]] > cb)
1228  if (p[pixel[8]] > cb)
1229  {}
1230  else {
1231  continue;
1232  }
1233  else {
1234  continue;
1235  }
1236  else {
1237  continue;
1238  }
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)
1243  {}
1244  else {
1245  continue;
1246  }
1247  else {
1248  continue;
1249  }
1250  else {
1251  continue;
1252  }
1253  else {
1254  continue;
1255  }
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)
1261  {}
1262  else {
1263  continue;
1264  }
1265  else {
1266  continue;
1267  }
1268  else {
1269  continue;
1270  }
1271  else {
1272  continue;
1273  }
1274  else {
1275  continue;
1276  }
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)
1283  {}
1284  else {
1285  continue;
1286  }
1287  else {
1288  continue;
1289  }
1290  else {
1291  continue;
1292  }
1293  else {
1294  continue;
1295  }
1296  else {
1297  continue;
1298  }
1299  else {
1300  continue;
1301  }
1302  else {
1303  continue;
1304  }
1305  else {
1306  continue;
1307  }
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)
1317  {}
1318  else if (p[pixel[12]] < c_b)
1319  {}
1320  else {
1321  continue;
1322  }
1323  else if (p[pixel[12]] < c_b)
1324  if (p[pixel[13]] < c_b)
1325  {}
1326  else {
1327  continue;
1328  }
1329  else {
1330  continue;
1331  }
1332  else if (p[pixel[12]] < c_b)
1333  if (p[pixel[13]] < c_b)
1334  if (p[pixel[14]] < c_b)
1335  {}
1336  else {
1337  continue;
1338  }
1339  else {
1340  continue;
1341  }
1342  else {
1343  continue;
1344  }
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)
1349  {}
1350  else {
1351  continue;
1352  }
1353  else {
1354  continue;
1355  }
1356  else {
1357  continue;
1358  }
1359  else {
1360  continue;
1361  }
1362  else {
1363  continue;
1364  }
1365  else {
1366  continue;
1367  }
1368  else {
1369  continue;
1370  }
1371  else {
1372  continue;
1373  }
1374  else {
1375  continue;
1376  }
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)
1386  {}
1387  else if (p[pixel[6]] > cb)
1388  if (p[pixel[7]] > cb)
1389  {}
1390  else {
1391  continue;
1392  }
1393  else {
1394  continue;
1395  }
1396  else if (p[pixel[5]] > cb)
1397  if (p[pixel[6]] > cb)
1398  if (p[pixel[7]] > cb)
1399  {}
1400  else {
1401  continue;
1402  }
1403  else {
1404  continue;
1405  }
1406  else {
1407  continue;
1408  }
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)
1413  {}
1414  else {
1415  continue;
1416  }
1417  else {
1418  continue;
1419  }
1420  else {
1421  continue;
1422  }
1423  else {
1424  continue;
1425  }
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)
1431  {}
1432  else {
1433  continue;
1434  }
1435  else {
1436  continue;
1437  }
1438  else {
1439  continue;
1440  }
1441  else {
1442  continue;
1443  }
1444  else {
1445  continue;
1446  }
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)
1453  {}
1454  else {
1455  continue;
1456  }
1457  else {
1458  continue;
1459  }
1460  else {
1461  continue;
1462  }
1463  else {
1464  continue;
1465  }
1466  else {
1467  continue;
1468  }
1469  else {
1470  continue;
1471  }
1472  else {
1473  continue;
1474  }
1475  else {
1476  continue;
1477  }
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)
1486  {}
1487  else if (p[pixel[10]] < c_b)
1488  if (p[pixel[11]] < c_b)
1489  {}
1490  else {
1491  continue;
1492  }
1493  else {
1494  continue;
1495  }
1496  else if (p[pixel[10]] < c_b)
1497  if (p[pixel[11]] < c_b)
1498  if (p[pixel[12]] < c_b)
1499  {}
1500  else {
1501  continue;
1502  }
1503  else {
1504  continue;
1505  }
1506  else {
1507  continue;
1508  }
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)
1513  {}
1514  else {
1515  continue;
1516  }
1517  else {
1518  continue;
1519  }
1520  else {
1521  continue;
1522  }
1523  else {
1524  continue;
1525  }
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)
1531  {}
1532  else {
1533  continue;
1534  }
1535  else {
1536  continue;
1537  }
1538  else {
1539  continue;
1540  }
1541  else {
1542  continue;
1543  }
1544  else {
1545  continue;
1546  }
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)
1553  {}
1554  else {
1555  continue;
1556  }
1557  else {
1558  continue;
1559  }
1560  else {
1561  continue;
1562  }
1563  else {
1564  continue;
1565  }
1566  else {
1567  continue;
1568  }
1569  else {
1570  continue;
1571  }
1572  else {
1573  continue;
1574  }
1575  else {
1576  continue;
1577  }
1578  else {
1579  continue;
1580  }
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)
1589  {}
1590  else if (p[pixel[6]] > cb)
1591  if (p[pixel[7]] > cb)
1592  {}
1593  else {
1594  continue;
1595  }
1596  else {
1597  continue;
1598  }
1599  else if (p[pixel[5]] > cb)
1600  if (p[pixel[6]] > cb)
1601  if (p[pixel[7]] > cb)
1602  {}
1603  else {
1604  continue;
1605  }
1606  else {
1607  continue;
1608  }
1609  else {
1610  continue;
1611  }
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)
1616  {}
1617  else {
1618  continue;
1619  }
1620  else {
1621  continue;
1622  }
1623  else {
1624  continue;
1625  }
1626  else {
1627  continue;
1628  }
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)
1634  {}
1635  else {
1636  continue;
1637  }
1638  else {
1639  continue;
1640  }
1641  else {
1642  continue;
1643  }
1644  else {
1645  continue;
1646  }
1647  else {
1648  continue;
1649  }
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)
1656  {}
1657  else {
1658  continue;
1659  }
1660  else {
1661  continue;
1662  }
1663  else {
1664  continue;
1665  }
1666  else {
1667  continue;
1668  }
1669  else {
1670  continue;
1671  }
1672  else {
1673  continue;
1674  }
1675  else {
1676  continue;
1677  }
1678  else {
1679  continue;
1680  }
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)
1690  {}
1691  else if (p[pixel[11]] < c_b)
1692  {}
1693  else {
1694  continue;
1695  }
1696  else if (p[pixel[11]] < c_b)
1697  if (p[pixel[12]] < c_b)
1698  {}
1699  else {
1700  continue;
1701  }
1702  else {
1703  continue;
1704  }
1705  else if (p[pixel[11]] < c_b)
1706  if (p[pixel[12]] < c_b)
1707  if (p[pixel[13]] < c_b)
1708  {}
1709  else {
1710  continue;
1711  }
1712  else {
1713  continue;
1714  }
1715  else {
1716  continue;
1717  }
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)
1722  {}
1723  else {
1724  continue;
1725  }
1726  else {
1727  continue;
1728  }
1729  else {
1730  continue;
1731  }
1732  else {
1733  continue;
1734  }
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)
1740  {}
1741  else {
1742  continue;
1743  }
1744  else {
1745  continue;
1746  }
1747  else {
1748  continue;
1749  }
1750  else {
1751  continue;
1752  }
1753  else {
1754  continue;
1755  }
1756  else {
1757  continue;
1758  }
1759  else {
1760  continue;
1761  }
1762  else {
1763  continue;
1764  }
1765  else {
1766  continue;
1767  }
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)
1778  {}
1779  else if (p[pixel[10]] > cb)
1780  if (p[pixel[11]] > cb)
1781  {}
1782  else {
1783  continue;
1784  }
1785  else {
1786  continue;
1787  }
1788  else if (p[pixel[10]] > cb)
1789  if (p[pixel[11]] > cb)
1790  if (p[pixel[12]] > cb)
1791  {}
1792  else {
1793  continue;
1794  }
1795  else {
1796  continue;
1797  }
1798  else {
1799  continue;
1800  }
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)
1805  {}
1806  else {
1807  continue;
1808  }
1809  else {
1810  continue;
1811  }
1812  else {
1813  continue;
1814  }
1815  else {
1816  continue;
1817  }
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)
1823  {}
1824  else {
1825  continue;
1826  }
1827  else {
1828  continue;
1829  }
1830  else {
1831  continue;
1832  }
1833  else {
1834  continue;
1835  }
1836  else {
1837  continue;
1838  }
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)
1845  {}
1846  else {
1847  continue;
1848  }
1849  else {
1850  continue;
1851  }
1852  else {
1853  continue;
1854  }
1855  else {
1856  continue;
1857  }
1858  else {
1859  continue;
1860  }
1861  else {
1862  continue;
1863  }
1864  else {
1865  continue;
1866  }
1867  else {
1868  continue;
1869  }
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)
1878  {}
1879  else if (p[pixel[6]] < c_b)
1880  if (p[pixel[7]] < c_b)
1881  {}
1882  else {
1883  continue;
1884  }
1885  else {
1886  continue;
1887  }
1888  else if (p[pixel[5]] < c_b)
1889  if (p[pixel[6]] < c_b)
1890  if (p[pixel[7]] < c_b)
1891  {}
1892  else {
1893  continue;
1894  }
1895  else {
1896  continue;
1897  }
1898  else {
1899  continue;
1900  }
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)
1905  {}
1906  else {
1907  continue;
1908  }
1909  else {
1910  continue;
1911  }
1912  else {
1913  continue;
1914  }
1915  else {
1916  continue;
1917  }
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)
1923  {}
1924  else {
1925  continue;
1926  }
1927  else {
1928  continue;
1929  }
1930  else {
1931  continue;
1932  }
1933  else {
1934  continue;
1935  }
1936  else {
1937  continue;
1938  }
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)
1945  {}
1946  else {
1947  continue;
1948  }
1949  else {
1950  continue;
1951  }
1952  else {
1953  continue;
1954  }
1955  else {
1956  continue;
1957  }
1958  else {
1959  continue;
1960  }
1961  else {
1962  continue;
1963  }
1964  else {
1965  continue;
1966  }
1967  else {
1968  continue;
1969  }
1970  else {
1971  continue;
1972  }
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)
1983  {}
1984  else if (p[pixel[11]] > cb)
1985  if (p[pixel[12]] > cb)
1986  {}
1987  else {
1988  continue;
1989  }
1990  else {
1991  continue;
1992  }
1993  else if (p[pixel[11]] > cb)
1994  if (p[pixel[12]] > cb)
1995  if (p[pixel[13]] > cb)
1996  {}
1997  else {
1998  continue;
1999  }
2000  else {
2001  continue;
2002  }
2003  else {
2004  continue;
2005  }
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)
2010  {}
2011  else {
2012  continue;
2013  }
2014  else {
2015  continue;
2016  }
2017  else {
2018  continue;
2019  }
2020  else {
2021  continue;
2022  }
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)
2028  {}
2029  else {
2030  continue;
2031  }
2032  else {
2033  continue;
2034  }
2035  else {
2036  continue;
2037  }
2038  else {
2039  continue;
2040  }
2041  else {
2042  continue;
2043  }
2044  else {
2045  continue;
2046  }
2047  else {
2048  continue;
2049  }
2050  else {
2051  continue;
2052  }
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)
2060  {}
2061  else if (p[pixel[6]] < c_b)
2062  if (p[pixel[7]] < c_b)
2063  if (p[pixel[8]] < c_b)
2064  {}
2065  else {
2066  continue;
2067  }
2068  else {
2069  continue;
2070  }
2071  else {
2072  continue;
2073  }
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)
2078  {}
2079  else {
2080  continue;
2081  }
2082  else {
2083  continue;
2084  }
2085  else {
2086  continue;
2087  }
2088  else {
2089  continue;
2090  }
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)
2096  {}
2097  else {
2098  continue;
2099  }
2100  else {
2101  continue;
2102  }
2103  else {
2104  continue;
2105  }
2106  else {
2107  continue;
2108  }
2109  else {
2110  continue;
2111  }
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)
2118  {}
2119  else {
2120  continue;
2121  }
2122  else {
2123  continue;
2124  }
2125  else {
2126  continue;
2127  }
2128  else {
2129  continue;
2130  }
2131  else {
2132  continue;
2133  }
2134  else {
2135  continue;
2136  }
2137  else {
2138  continue;
2139  }
2140  else {
2141  continue;
2142  }
2143  else {
2144  continue;
2145  }
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)
2156  {}
2157  else if (p[pixel[12]] > cb)
2158  if (p[pixel[13]] > cb)
2159  {}
2160  else {
2161  continue;
2162  }
2163  else {
2164  continue;
2165  }
2166  else if (p[pixel[12]] > cb)
2167  if (p[pixel[13]] > cb)
2168  if (p[pixel[14]] > cb)
2169  {}
2170  else {
2171  continue;
2172  }
2173  else {
2174  continue;
2175  }
2176  else {
2177  continue;
2178  }
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)
2183  {}
2184  else {
2185  continue;
2186  }
2187  else {
2188  continue;
2189  }
2190  else {
2191  continue;
2192  }
2193  else {
2194  continue;
2195  }
2196  else {
2197  continue;
2198  }
2199  else {
2200  continue;
2201  }
2202  else {
2203  continue;
2204  }
2205  else {
2206  continue;
2207  }
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)
2214  {}
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)
2219  {}
2220  else {
2221  continue;
2222  }
2223  else {
2224  continue;
2225  }
2226  else {
2227  continue;
2228  }
2229  else {
2230  continue;
2231  }
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)
2237  {}
2238  else {
2239  continue;
2240  }
2241  else {
2242  continue;
2243  }
2244  else {
2245  continue;
2246  }
2247  else {
2248  continue;
2249  }
2250  else {
2251  continue;
2252  }
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)
2259  {}
2260  else {
2261  continue;
2262  }
2263  else {
2264  continue;
2265  }
2266  else {
2267  continue;
2268  }
2269  else {
2270  continue;
2271  }
2272  else {
2273  continue;
2274  }
2275  else {
2276  continue;
2277  }
2278  else {
2279  continue;
2280  }
2281  else {
2282  continue;
2283  }
2284  else {
2285  continue;
2286  }
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)
2298  {}
2299  else if (p[pixel[14]] > cb)
2300  {}
2301  else {
2302  continue;
2303  }
2304  else if (p[pixel[14]] > cb)
2305  if (p[pixel[15]] > cb)
2306  {}
2307  else {
2308  continue;
2309  }
2310  else {
2311  continue;
2312  }
2313  else {
2314  continue;
2315  }
2316  else {
2317  continue;
2318  }
2319  else {
2320  continue;
2321  }
2322  else {
2323  continue;
2324  }
2325  else {
2326  continue;
2327  }
2328  else {
2329  continue;
2330  }
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)
2340  {}
2341  else {
2342  continue;
2343  }
2344  else {
2345  continue;
2346  }
2347  else {
2348  continue;
2349  }
2350  else {
2351  continue;
2352  }
2353  else {
2354  continue;
2355  }
2356  else {
2357  continue;
2358  }
2359  else {
2360  continue;
2361  }
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)
2366  {}
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)
2372  {}
2373  else {
2374  continue;
2375  }
2376  else {
2377  continue;
2378  }
2379  else {
2380  continue;
2381  }
2382  else {
2383  continue;
2384  }
2385  else {
2386  continue;
2387  }
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)
2394  {}
2395  else {
2396  continue;
2397  }
2398  else {
2399  continue;
2400  }
2401  else {
2402  continue;
2403  }
2404  else {
2405  continue;
2406  }
2407  else {
2408  continue;
2409  }
2410  else {
2411  continue;
2412  }
2413  else {
2414  continue;
2415  }
2416  else {
2417  continue;
2418  }
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)
2427  {}
2428  else {
2429  continue;
2430  }
2431  else {
2432  continue;
2433  }
2434  else {
2435  continue;
2436  }
2437  else {
2438  continue;
2439  }
2440  else {
2441  continue;
2442  }
2443  else {
2444  continue;
2445  }
2446  else {
2447  continue;
2448  }
2449  else {
2450  continue;
2451  }
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)
2463  {}
2464  else if (p[pixel[15]] > cb)
2465  {}
2466  else {
2467  continue;
2468  }
2469  else {
2470  continue;
2471  }
2472  else {
2473  continue;
2474  }
2475  else {
2476  continue;
2477  }
2478  else {
2479  continue;
2480  }
2481  else {
2482  continue;
2483  }
2484  else {
2485  continue;
2486  }
2487  else {
2488  continue;
2489  }
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)
2499  {}
2500  else {
2501  continue;
2502  }
2503  else {
2504  continue;
2505  }
2506  else {
2507  continue;
2508  }
2509  else {
2510  continue;
2511  }
2512  else {
2513  continue;
2514  }
2515  else {
2516  continue;
2517  }
2518  else {
2519  continue;
2520  }
2521  else if (p[pixel[12]] < c_b)
2522  if (p[pixel[13]] < c_b)
2523  if (p[pixel[15]] < c_b)
2524  {}
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)
2531  {}
2532  else {
2533  continue;
2534  }
2535  else {
2536  continue;
2537  }
2538  else {
2539  continue;
2540  }
2541  else {
2542  continue;
2543  }
2544  else {
2545  continue;
2546  }
2547  else {
2548  continue;
2549  }
2550  else {
2551  continue;
2552  }
2553  else {
2554  continue;
2555  }
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)
2564  {}
2565  else {
2566  continue;
2567  }
2568  else {
2569  continue;
2570  }
2571  else {
2572  continue;
2573  }
2574  else {
2575  continue;
2576  }
2577  else {
2578  continue;
2579  }
2580  else {
2581  continue;
2582  }
2583  else {
2584  continue;
2585  }
2586  else {
2587  continue;
2588  }
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)
2600  {}
2601  else {
2602  continue;
2603  }
2604  else {
2605  continue;
2606  }
2607  else {
2608  continue;
2609  }
2610  else {
2611  continue;
2612  }
2613  else {
2614  continue;
2615  }
2616  else {
2617  continue;
2618  }
2619  else {
2620  continue;
2621  }
2622  else if (p[pixel[13]] < c_b)
2623  if (p[pixel[14]] < c_b)
2624  {}
2625  else {
2626  continue;
2627  }
2628  else {
2629  continue;
2630  }
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)
2639  {}
2640  else {
2641  continue;
2642  }
2643  else {
2644  continue;
2645  }
2646  else {
2647  continue;
2648  }
2649  else {
2650  continue;
2651  }
2652  else {
2653  continue;
2654  }
2655  else {
2656  continue;
2657  }
2658  else {
2659  continue;
2660  }
2661  else {
2662  continue;
2663  }
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)
2674  {}
2675  else {
2676  continue;
2677  }
2678  else {
2679  continue;
2680  }
2681  else {
2682  continue;
2683  }
2684  else {
2685  continue;
2686  }
2687  else {
2688  continue;
2689  }
2690  else {
2691  continue;
2692  }
2693  else {
2694  continue;
2695  }
2696  else if (p[pixel[14]] < c_b)
2697  if (p[pixel[15]] < c_b)
2698  {}
2699  else {
2700  continue;
2701  }
2702  else {
2703  continue;
2704  }
2705  else if (p[pixel[7]] < c_b)
2706  if (p[pixel[8]] < c_b)
2707  {}
2708  else if (p[pixel[15]] < c_b)
2709  {}
2710  else {
2711  continue;
2712  }
2713  else if (p[pixel[14]] < c_b)
2714  if (p[pixel[15]] < c_b)
2715  {}
2716  else {
2717  continue;
2718  }
2719  else {
2720  continue;
2721  }
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)
2731  {}
2732  else {
2733  continue;
2734  }
2735  else {
2736  continue;
2737  }
2738  else {
2739  continue;
2740  }
2741  else {
2742  continue;
2743  }
2744  else {
2745  continue;
2746  }
2747  else {
2748  continue;
2749  }
2750  else {
2751  continue;
2752  }
2753  else {
2754  continue;
2755  }
2756  else if (p[pixel[13]] < c_b)
2757  if (p[pixel[14]] < c_b)
2758  if (p[pixel[15]] < c_b)
2759  {}
2760  else {
2761  continue;
2762  }
2763  else {
2764  continue;
2765  }
2766  else {
2767  continue;
2768  }
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)
2778  {}
2779  else if (p[pixel[15]] > cb)
2780  {}
2781  else {
2782  continue;
2783  }
2784  else {
2785  continue;
2786  }
2787  else {
2788  continue;
2789  }
2790  else {
2791  continue;
2792  }
2793  else {
2794  continue;
2795  }
2796  else {
2797  continue;
2798  }
2799  else {
2800  continue;
2801  }
2802  else {
2803  continue;
2804  }
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)
2809  {}
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)
2816  {}
2817  else {
2818  continue;
2819  }
2820  else {
2821  continue;
2822  }
2823  else {
2824  continue;
2825  }
2826  else {
2827  continue;
2828  }
2829  else {
2830  continue;
2831  }
2832  else {
2833  continue;
2834  }
2835  else {
2836  continue;
2837  }
2838  else {
2839  continue;
2840  }
2841  else {
2842  continue;
2843  }
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)
2853  {}
2854  else if (p[pixel[14]] > cb)
2855  {}
2856  else {
2857  continue;
2858  }
2859  else if (p[pixel[14]] > cb)
2860  if (p[pixel[15]] > cb)
2861  {}
2862  else {
2863  continue;
2864  }
2865  else {
2866  continue;
2867  }
2868  else {
2869  continue;
2870  }
2871  else {
2872  continue;
2873  }
2874  else {
2875  continue;
2876  }
2877  else {
2878  continue;
2879  }
2880  else {
2881  continue;
2882  }
2883  else {
2884  continue;
2885  }
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)
2891  {}
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)
2897  {}
2898  else {
2899  continue;
2900  }
2901  else {
2902  continue;
2903  }
2904  else {
2905  continue;
2906  }
2907  else {
2908  continue;
2909  }
2910  else {
2911  continue;
2912  }
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)
2919  {}
2920  else {
2921  continue;
2922  }
2923  else {
2924  continue;
2925  }
2926  else {
2927  continue;
2928  }
2929  else {
2930  continue;
2931  }
2932  else {
2933  continue;
2934  }
2935  else {
2936  continue;
2937  }
2938  else {
2939  continue;
2940  }
2941  else {
2942  continue;
2943  }
2944  else {
2945  continue;
2946  }
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)
2956  {}
2957  else if (p[pixel[13]] > cb)
2958  {}
2959  else {
2960  continue;
2961  }
2962  else if (p[pixel[13]] > cb)
2963  if (p[pixel[14]] > cb)
2964  {}
2965  else {
2966  continue;
2967  }
2968  else {
2969  continue;
2970  }
2971  else if (p[pixel[13]] > cb)
2972  if (p[pixel[14]] > cb)
2973  if (p[pixel[15]] > cb)
2974  {}
2975  else {
2976  continue;
2977  }
2978  else {
2979  continue;
2980  }
2981  else {
2982  continue;
2983  }
2984  else {
2985  continue;
2986  }
2987  else {
2988  continue;
2989  }
2990  else {
2991  continue;
2992  }
2993  else {
2994  continue;
2995  }
2996  else {
2997  continue;
2998  }
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)
3005  {}
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)
3010  {}
3011  else {
3012  continue;
3013  }
3014  else {
3015  continue;
3016  }
3017  else {
3018  continue;
3019  }
3020  else {
3021  continue;
3022  }
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)
3028  {}
3029  else {
3030  continue;
3031  }
3032  else {
3033  continue;
3034  }
3035  else {
3036  continue;
3037  }
3038  else {
3039  continue;
3040  }
3041  else {
3042  continue;
3043  }
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)
3050  {}
3051  else {
3052  continue;
3053  }
3054  else {
3055  continue;
3056  }
3057  else {
3058  continue;
3059  }
3060  else {
3061  continue;
3062  }
3063  else {
3064  continue;
3065  }
3066  else {
3067  continue;
3068  }
3069  else {
3070  continue;
3071  }
3072  else {
3073  continue;
3074  }
3075  else {
3076  continue;
3077  }
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)
3087  {}
3088  else if (p[pixel[12]] > cb)
3089  {}
3090  else {
3091  continue;
3092  }
3093  else if (p[pixel[12]] > cb)
3094  if (p[pixel[13]] > cb)
3095  {}
3096  else {
3097  continue;
3098  }
3099  else {
3100  continue;
3101  }
3102  else if (p[pixel[12]] > cb)
3103  if (p[pixel[13]] > cb)
3104  if (p[pixel[14]] > cb)
3105  {}
3106  else {
3107  continue;
3108  }
3109  else {
3110  continue;
3111  }
3112  else {
3113  continue;
3114  }
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)
3119  {}
3120  else {
3121  continue;
3122  }
3123  else {
3124  continue;
3125  }
3126  else {
3127  continue;
3128  }
3129  else {
3130  continue;
3131  }
3132  else {
3133  continue;
3134  }
3135  else {
3136  continue;
3137  }
3138  else {
3139  continue;
3140  }
3141  else {
3142  continue;
3143  }
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)
3151  {}
3152  else if (p[pixel[6]] < c_b)
3153  if (p[pixel[7]] < c_b)
3154  if (p[pixel[8]] < c_b)
3155  {}
3156  else {
3157  continue;
3158  }
3159  else {
3160  continue;
3161  }
3162  else {
3163  continue;
3164  }
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)
3169  {}
3170  else {
3171  continue;
3172  }
3173  else {
3174  continue;
3175  }
3176  else {
3177  continue;
3178  }
3179  else {
3180  continue;
3181  }
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)
3187  {}
3188  else {
3189  continue;
3190  }
3191  else {
3192  continue;
3193  }
3194  else {
3195  continue;
3196  }
3197  else {
3198  continue;
3199  }
3200  else {
3201  continue;
3202  }
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)
3209  {}
3210  else {
3211  continue;
3212  }
3213  else {
3214  continue;
3215  }
3216  else {
3217  continue;
3218  }
3219  else {
3220  continue;
3221  }
3222  else {
3223  continue;
3224  }
3225  else {
3226  continue;
3227  }
3228  else {
3229  continue;
3230  }
3231  else {
3232  continue;
3233  }
3234  else {
3235  continue;
3236  }
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)
3246  {}
3247  else if (p[pixel[11]] > cb)
3248  {}
3249  else {
3250  continue;
3251  }
3252  else if (p[pixel[11]] > cb)
3253  if (p[pixel[12]] > cb)
3254  {}
3255  else {
3256  continue;
3257  }
3258  else {
3259  continue;
3260  }
3261  else if (p[pixel[11]] > cb)
3262  if (p[pixel[12]] > cb)
3263  if (p[pixel[13]] > cb)
3264  {}
3265  else {
3266  continue;
3267  }
3268  else {
3269  continue;
3270  }
3271  else {
3272  continue;
3273  }
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)
3278  {}
3279  else {
3280  continue;
3281  }
3282  else {
3283  continue;
3284  }
3285  else {
3286  continue;
3287  }
3288  else {
3289  continue;
3290  }
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)
3296  {}
3297  else {
3298  continue;
3299  }
3300  else {
3301  continue;
3302  }
3303  else {
3304  continue;
3305  }
3306  else {
3307  continue;
3308  }
3309  else {
3310  continue;
3311  }
3312  else {
3313  continue;
3314  }
3315  else {
3316  continue;
3317  }
3318  else {
3319  continue;
3320  }
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)
3329  {}
3330  else if (p[pixel[6]] < c_b)
3331  if (p[pixel[7]] < c_b)
3332  {}
3333  else {
3334  continue;
3335  }
3336  else {
3337  continue;
3338  }
3339  else if (p[pixel[5]] < c_b)
3340  if (p[pixel[6]] < c_b)
3341  if (p[pixel[7]] < c_b)
3342  {}
3343  else {
3344  continue;
3345  }
3346  else {
3347  continue;
3348  }
3349  else {
3350  continue;
3351  }
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)
3356  {}
3357  else {
3358  continue;
3359  }
3360  else {
3361  continue;
3362  }
3363  else {
3364  continue;
3365  }
3366  else {
3367  continue;
3368  }
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)
3374  {}
3375  else {
3376  continue;
3377  }
3378  else {
3379  continue;
3380  }
3381  else {
3382  continue;
3383  }
3384  else {
3385  continue;
3386  }
3387  else {
3388  continue;
3389  }
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)
3396  {}
3397  else {
3398  continue;
3399  }
3400  else {
3401  continue;
3402  }
3403  else {
3404  continue;
3405  }
3406  else {
3407  continue;
3408  }
3409  else {
3410  continue;
3411  }
3412  else {
3413  continue;
3414  }
3415  else {
3416  continue;
3417  }
3418  else {
3419  continue;
3420  }
3421  else {
3422  continue;
3423  }
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)
3433  {}
3434  else if (p[pixel[10]] > cb)
3435  {}
3436  else {
3437  continue;
3438  }
3439  else if (p[pixel[10]] > cb)
3440  if (p[pixel[11]] > cb)
3441  {}
3442  else {
3443  continue;
3444  }
3445  else {
3446  continue;
3447  }
3448  else if (p[pixel[10]] > cb)
3449  if (p[pixel[11]] > cb)
3450  if (p[pixel[12]] > cb)
3451  {}
3452  else {
3453  continue;
3454  }
3455  else {
3456  continue;
3457  }
3458  else {
3459  continue;
3460  }
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)
3465  {}
3466  else {
3467  continue;
3468  }
3469  else {
3470  continue;
3471  }
3472  else {
3473  continue;
3474  }
3475  else {
3476  continue;
3477  }
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)
3483  {}
3484  else {
3485  continue;
3486  }
3487  else {
3488  continue;
3489  }
3490  else {
3491  continue;
3492  }
3493  else {
3494  continue;
3495  }
3496  else {
3497  continue;
3498  }
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)
3505  {}
3506  else {
3507  continue;
3508  }
3509  else {
3510  continue;
3511  }
3512  else {
3513  continue;
3514  }
3515  else {
3516  continue;
3517  }
3518  else {
3519  continue;
3520  }
3521  else {
3522  continue;
3523  }
3524  else {
3525  continue;
3526  }
3527  else {
3528  continue;
3529  }
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)
3539  {}
3540  else if (p[pixel[10]] < c_b)
3541  {}
3542  else {
3543  continue;
3544  }
3545  else if (p[pixel[10]] < c_b)
3546  if (p[pixel[11]] < c_b)
3547  {}
3548  else {
3549  continue;
3550  }
3551  else {
3552  continue;
3553  }
3554  else if (p[pixel[10]] < c_b)
3555  if (p[pixel[11]] < c_b)
3556  if (p[pixel[12]] < c_b)
3557  {}
3558  else {
3559  continue;
3560  }
3561  else {
3562  continue;
3563  }
3564  else {
3565  continue;
3566  }
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)
3571  {}
3572  else {
3573  continue;
3574  }
3575  else {
3576  continue;
3577  }
3578  else {
3579  continue;
3580  }
3581  else {
3582  continue;
3583  }
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)
3589  {}
3590  else {
3591  continue;
3592  }
3593  else {
3594  continue;
3595  }
3596  else {
3597  continue;
3598  }
3599  else {
3600  continue;
3601  }
3602  else {
3603  continue;
3604  }
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)
3611  {}
3612  else {
3613  continue;
3614  }
3615  else {
3616  continue;
3617  }
3618  else {
3619  continue;
3620  }
3621  else {
3622  continue;
3623  }
3624  else {
3625  continue;
3626  }
3627  else {
3628  continue;
3629  }
3630  else {
3631  continue;
3632  }
3633  else {
3634  continue;
3635  }
3636  else {
3637  continue;
3638  }
3639 
3640  // When we have more corner than allocted space reallocate
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));
3644  }
3645 
3646  ret_corners[corner_cnt].x = x;
3647  ret_corners[corner_cnt].y = y;
3648  corner_cnt++;
3649 
3650  // Skip some in the width direction
3651  x += min_dist;
3652  }
3653  }
3654  *num_corners = corner_cnt;
3655 }
3656 
3662 static void fast_make_offsets(int32_t *pixel, uint16_t row_stride, uint8_t pixel_size)
3663 {
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;
3680 }
unsigned short uint16_t
Definition: types.h:16
Definition: image.h:42
uint32_t x
The x coordinate of the point.
Definition: image.h:56
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.
Definition: fast_rosten.c:51
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:51
uint32_t y
The y coordinate of the point.
Definition: image.h:57
Definition: image.h:55
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:3662
UYVY format (uint16 per pixel)
Definition: image.h:35
static float p[2][2]
enum image_type type
The image type.
Definition: image.h:43