Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/features2d/src/agast.cpp
16337 views
1
/* This is AGAST and OAST, an optimal and accelerated corner detector
2
based on the accelerated segment tests
3
Below is the original copyright and the references */
4
5
/*
6
Copyright (C) 2010 Elmar Mair
7
All rights reserved.
8
9
Redistribution and use in source and binary forms, with or without
10
modification, are permitted provided that the following conditions
11
are met:
12
13
*Redistributions of source code must retain the above copyright
14
notice, this list of conditions and the following disclaimer.
15
16
*Redistributions in binary form must reproduce the above copyright
17
notice, this list of conditions and the following disclaimer in the
18
documentation and/or other materials provided with the distribution.
19
20
*Neither the name of the University of Cambridge nor the names of
21
its contributors may be used to endorse or promote products derived
22
from this software without specific prior written permission.
23
24
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
28
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
30
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
31
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
32
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
34
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
*/
36
37
/*
38
The references are:
39
* Adaptive and Generic Corner Detection Based on the Accelerated Segment Test,
40
Elmar Mair and Gregory D. Hager and Darius Burschka
41
and Michael Suppa and Gerhard Hirzinger ECCV 2010
42
URL: http://www6.in.tum.de/Main/ResearchAgast
43
*/
44
45
#include "precomp.hpp"
46
#include "agast_score.hpp"
47
48
namespace cv
49
{
50
51
#if (defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
52
53
static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
54
{
55
56
cv::Mat img;
57
if(!_img.getMat().isContinuous())
58
img = _img.getMat().clone();
59
else
60
img = _img.getMat();
61
62
size_t total = 0;
63
int xsize = img.cols;
64
int ysize = img.rows;
65
size_t nExpectedCorners = keypoints.capacity();
66
int x, y;
67
int xsizeB = xsize - 2;
68
int ysizeB = ysize - 1;
69
int width;
70
71
keypoints.resize(0);
72
73
int pixel_5_8_[16];
74
makeAgastOffsets(pixel_5_8_, (int)img.step, AgastFeatureDetector::AGAST_5_8);
75
76
short offset0 = (short) pixel_5_8_[0];
77
short offset1 = (short) pixel_5_8_[1];
78
short offset2 = (short) pixel_5_8_[2];
79
short offset3 = (short) pixel_5_8_[3];
80
short offset4 = (short) pixel_5_8_[4];
81
short offset5 = (short) pixel_5_8_[5];
82
short offset6 = (short) pixel_5_8_[6];
83
short offset7 = (short) pixel_5_8_[7];
84
85
width = xsize;
86
87
for(y = 1; y < ysizeB; y++)
88
{
89
x = 0;
90
while(true)
91
{
92
homogeneous:
93
{
94
x++;
95
if(x > xsizeB)
96
break;
97
else
98
{
99
const unsigned char* const ptr = img.ptr() + y*width + x;
100
const int cb = *ptr + threshold;
101
const int c_b = *ptr - threshold;
102
if(ptr[offset0] > cb)
103
if(ptr[offset2] > cb)
104
if(ptr[offset3] > cb)
105
if(ptr[offset5] > cb)
106
if(ptr[offset1] > cb)
107
if(ptr[offset4] > cb)
108
goto success_structured;
109
else
110
if(ptr[offset7] > cb)
111
goto success_structured;
112
else
113
goto homogeneous;
114
else
115
if(ptr[offset4] > cb)
116
if(ptr[offset6] > cb)
117
goto success_structured;
118
else
119
goto homogeneous;
120
else
121
goto homogeneous;
122
else
123
if(ptr[offset1] > cb)
124
if(ptr[offset4] > cb)
125
goto success_homogeneous;
126
else
127
if(ptr[offset7] > cb)
128
goto success_homogeneous;
129
else
130
goto homogeneous;
131
else
132
goto homogeneous;
133
else
134
if(ptr[offset7] > cb)
135
if(ptr[offset6] > cb)
136
if(ptr[offset5] > cb)
137
if(ptr[offset1] > cb)
138
goto success_structured;
139
else
140
if(ptr[offset4] > cb)
141
goto success_structured;
142
else
143
goto homogeneous;
144
else
145
if(ptr[offset1] > cb)
146
goto success_homogeneous;
147
else
148
goto homogeneous;
149
else
150
goto homogeneous;
151
else
152
if(ptr[offset5] < c_b)
153
if(ptr[offset3] < c_b)
154
if(ptr[offset7] < c_b)
155
if(ptr[offset4] < c_b)
156
if(ptr[offset6] < c_b)
157
goto success_structured;
158
else
159
goto structured;
160
else
161
goto homogeneous;
162
else
163
goto homogeneous;
164
else
165
goto homogeneous;
166
else
167
goto homogeneous;
168
else
169
if(ptr[offset5] > cb)
170
if(ptr[offset7] > cb)
171
if(ptr[offset6] > cb)
172
if(ptr[offset1] > cb)
173
goto success_homogeneous;
174
else
175
if(ptr[offset4] > cb)
176
goto success_homogeneous;
177
else
178
goto homogeneous;
179
else
180
goto homogeneous;
181
else
182
goto homogeneous;
183
else
184
if(ptr[offset5] < c_b)
185
if(ptr[offset3] < c_b)
186
if(ptr[offset2] < c_b)
187
if(ptr[offset1] < c_b)
188
if(ptr[offset4] < c_b)
189
goto success_structured;
190
else
191
goto homogeneous;
192
else
193
if(ptr[offset4] < c_b)
194
if(ptr[offset6] < c_b)
195
goto success_structured;
196
else
197
goto homogeneous;
198
else
199
goto homogeneous;
200
else
201
if(ptr[offset7] < c_b)
202
if(ptr[offset4] < c_b)
203
if(ptr[offset6] < c_b)
204
goto success_structured;
205
else
206
goto homogeneous;
207
else
208
goto homogeneous;
209
else
210
goto homogeneous;
211
else
212
goto homogeneous;
213
else
214
goto homogeneous;
215
else
216
if(ptr[offset0] < c_b)
217
if(ptr[offset2] < c_b)
218
if(ptr[offset7] > cb)
219
if(ptr[offset3] < c_b)
220
if(ptr[offset5] < c_b)
221
if(ptr[offset1] < c_b)
222
if(ptr[offset4] < c_b)
223
goto success_structured;
224
else
225
goto structured;
226
else
227
if(ptr[offset4] < c_b)
228
if(ptr[offset6] < c_b)
229
goto success_structured;
230
else
231
goto structured;
232
else
233
goto homogeneous;
234
else
235
if(ptr[offset1] < c_b)
236
if(ptr[offset4] < c_b)
237
goto success_structured;
238
else
239
goto homogeneous;
240
else
241
goto homogeneous;
242
else
243
if(ptr[offset5] > cb)
244
if(ptr[offset3] > cb)
245
if(ptr[offset4] > cb)
246
if(ptr[offset6] > cb)
247
goto success_structured;
248
else
249
goto structured;
250
else
251
goto homogeneous;
252
else
253
goto homogeneous;
254
else
255
goto homogeneous;
256
else
257
if(ptr[offset7] < c_b)
258
if(ptr[offset3] < c_b)
259
if(ptr[offset5] < c_b)
260
if(ptr[offset1] < c_b)
261
goto success_structured;
262
else
263
if(ptr[offset4] < c_b)
264
if(ptr[offset6] < c_b)
265
goto success_structured;
266
else
267
goto structured;
268
else
269
goto homogeneous;
270
else
271
if(ptr[offset1] < c_b)
272
goto success_homogeneous;
273
else
274
goto homogeneous;
275
else
276
if(ptr[offset6] < c_b)
277
if(ptr[offset5] < c_b)
278
if(ptr[offset1] < c_b)
279
goto success_structured;
280
else
281
if(ptr[offset4] < c_b)
282
goto success_structured;
283
else
284
goto homogeneous;
285
else
286
if(ptr[offset1] < c_b)
287
goto success_homogeneous;
288
else
289
goto homogeneous;
290
else
291
goto homogeneous;
292
else
293
if(ptr[offset3] < c_b)
294
if(ptr[offset5] < c_b)
295
if(ptr[offset1] < c_b)
296
if(ptr[offset4] < c_b)
297
goto success_structured;
298
else
299
goto homogeneous;
300
else
301
if(ptr[offset4] < c_b)
302
if(ptr[offset6] < c_b)
303
goto success_structured;
304
else
305
goto homogeneous;
306
else
307
goto homogeneous;
308
else
309
if(ptr[offset1] < c_b)
310
if(ptr[offset4] < c_b)
311
goto success_homogeneous;
312
else
313
goto homogeneous;
314
else
315
goto homogeneous;
316
else
317
goto homogeneous;
318
else
319
if(ptr[offset5] > cb)
320
if(ptr[offset3] > cb)
321
if(ptr[offset2] > cb)
322
if(ptr[offset1] > cb)
323
if(ptr[offset4] > cb)
324
goto success_structured;
325
else
326
goto homogeneous;
327
else
328
if(ptr[offset4] > cb)
329
if(ptr[offset6] > cb)
330
goto success_structured;
331
else
332
goto homogeneous;
333
else
334
goto homogeneous;
335
else
336
if(ptr[offset7] > cb)
337
if(ptr[offset4] > cb)
338
if(ptr[offset6] > cb)
339
goto success_structured;
340
else
341
goto homogeneous;
342
else
343
goto homogeneous;
344
else
345
goto homogeneous;
346
else
347
goto homogeneous;
348
else
349
if(ptr[offset5] < c_b)
350
if(ptr[offset7] < c_b)
351
if(ptr[offset6] < c_b)
352
if(ptr[offset1] < c_b)
353
goto success_homogeneous;
354
else
355
if(ptr[offset4] < c_b)
356
goto success_homogeneous;
357
else
358
goto homogeneous;
359
else
360
goto homogeneous;
361
else
362
goto homogeneous;
363
else
364
goto homogeneous;
365
else
366
if(ptr[offset3] > cb)
367
if(ptr[offset5] > cb)
368
if(ptr[offset2] > cb)
369
if(ptr[offset1] > cb)
370
if(ptr[offset4] > cb)
371
goto success_homogeneous;
372
else
373
goto homogeneous;
374
else
375
if(ptr[offset4] > cb)
376
if(ptr[offset6] > cb)
377
goto success_homogeneous;
378
else
379
goto homogeneous;
380
else
381
goto homogeneous;
382
else
383
if(ptr[offset7] > cb)
384
if(ptr[offset4] > cb)
385
if(ptr[offset6] > cb)
386
goto success_homogeneous;
387
else
388
goto homogeneous;
389
else
390
goto homogeneous;
391
else
392
goto homogeneous;
393
else
394
goto homogeneous;
395
else
396
if(ptr[offset3] < c_b)
397
if(ptr[offset5] < c_b)
398
if(ptr[offset2] < c_b)
399
if(ptr[offset1] < c_b)
400
if(ptr[offset4] < c_b)
401
goto success_homogeneous;
402
else
403
goto homogeneous;
404
else
405
if(ptr[offset4] < c_b)
406
if(ptr[offset6] < c_b)
407
goto success_homogeneous;
408
else
409
goto homogeneous;
410
else
411
goto homogeneous;
412
else
413
if(ptr[offset7] < c_b)
414
if(ptr[offset4] < c_b)
415
if(ptr[offset6] < c_b)
416
goto success_homogeneous;
417
else
418
goto homogeneous;
419
else
420
goto homogeneous;
421
else
422
goto homogeneous;
423
else
424
goto homogeneous;
425
else
426
goto homogeneous;
427
}
428
}
429
structured:
430
{
431
x++;
432
if(x > xsizeB)
433
break;
434
else
435
{
436
const unsigned char* const ptr = img.ptr() + y*width + x;
437
const int cb = *ptr + threshold;
438
const int c_b = *ptr - threshold;
439
if(ptr[offset0] > cb)
440
if(ptr[offset2] > cb)
441
if(ptr[offset3] > cb)
442
if(ptr[offset5] > cb)
443
if(ptr[offset7] > cb)
444
if(ptr[offset1] > cb)
445
goto success_structured;
446
else
447
if(ptr[offset4] > cb)
448
if(ptr[offset6] > cb)
449
goto success_structured;
450
else
451
goto structured;
452
else
453
goto structured;
454
else
455
if(ptr[offset1] > cb)
456
if(ptr[offset4] > cb)
457
goto success_structured;
458
else
459
goto structured;
460
else
461
if(ptr[offset4] > cb)
462
if(ptr[offset6] > cb)
463
goto success_structured;
464
else
465
goto structured;
466
else
467
goto structured;
468
else
469
if(ptr[offset7] > cb)
470
if(ptr[offset1] > cb)
471
goto success_structured;
472
else
473
goto structured;
474
else
475
if(ptr[offset1] > cb)
476
if(ptr[offset4] > cb)
477
goto success_structured;
478
else
479
goto structured;
480
else
481
goto structured;
482
else
483
if(ptr[offset7] > cb)
484
if(ptr[offset6] > cb)
485
if(ptr[offset5] > cb)
486
if(ptr[offset1] > cb)
487
goto success_structured;
488
else
489
if(ptr[offset4] > cb)
490
goto success_structured;
491
else
492
goto structured;
493
else
494
if(ptr[offset1] > cb)
495
goto success_structured;
496
else
497
goto structured;
498
else
499
goto structured;
500
else
501
if(ptr[offset5] < c_b)
502
if(ptr[offset3] < c_b)
503
if(ptr[offset7] < c_b)
504
if(ptr[offset4] < c_b)
505
if(ptr[offset6] < c_b)
506
goto success_structured;
507
else
508
goto structured;
509
else
510
goto structured;
511
else
512
goto homogeneous;
513
else
514
goto homogeneous;
515
else
516
goto structured;
517
else
518
if(ptr[offset5] > cb)
519
if(ptr[offset7] > cb)
520
if(ptr[offset6] > cb)
521
if(ptr[offset1] > cb)
522
goto success_structured;
523
else
524
if(ptr[offset4] > cb)
525
goto success_structured;
526
else
527
goto structured;
528
else
529
goto structured;
530
else
531
goto structured;
532
else
533
if(ptr[offset5] < c_b)
534
if(ptr[offset3] < c_b)
535
if(ptr[offset2] < c_b)
536
if(ptr[offset1] < c_b)
537
if(ptr[offset4] < c_b)
538
goto success_structured;
539
else
540
goto structured;
541
else
542
if(ptr[offset4] < c_b)
543
if(ptr[offset6] < c_b)
544
goto success_structured;
545
else
546
goto structured;
547
else
548
goto structured;
549
else
550
if(ptr[offset7] < c_b)
551
if(ptr[offset4] < c_b)
552
if(ptr[offset6] < c_b)
553
goto success_homogeneous;
554
else
555
goto homogeneous;
556
else
557
goto homogeneous;
558
else
559
goto homogeneous;
560
else
561
goto structured;
562
else
563
goto homogeneous;
564
else
565
if(ptr[offset0] < c_b)
566
if(ptr[offset2] < c_b)
567
if(ptr[offset7] > cb)
568
if(ptr[offset3] < c_b)
569
if(ptr[offset5] < c_b)
570
if(ptr[offset1] < c_b)
571
if(ptr[offset4] < c_b)
572
goto success_structured;
573
else
574
goto structured;
575
else
576
if(ptr[offset4] < c_b)
577
if(ptr[offset6] < c_b)
578
goto success_structured;
579
else
580
goto structured;
581
else
582
goto structured;
583
else
584
if(ptr[offset1] < c_b)
585
if(ptr[offset4] < c_b)
586
goto success_structured;
587
else
588
goto structured;
589
else
590
goto structured;
591
else
592
if(ptr[offset5] > cb)
593
if(ptr[offset3] > cb)
594
if(ptr[offset4] > cb)
595
if(ptr[offset6] > cb)
596
goto success_structured;
597
else
598
goto structured;
599
else
600
goto structured;
601
else
602
goto homogeneous;
603
else
604
goto structured;
605
else
606
if(ptr[offset7] < c_b)
607
if(ptr[offset3] < c_b)
608
if(ptr[offset5] < c_b)
609
if(ptr[offset1] < c_b)
610
goto success_structured;
611
else
612
if(ptr[offset4] < c_b)
613
if(ptr[offset6] < c_b)
614
goto success_structured;
615
else
616
goto structured;
617
else
618
goto structured;
619
else
620
if(ptr[offset1] < c_b)
621
goto success_structured;
622
else
623
goto structured;
624
else
625
if(ptr[offset6] < c_b)
626
if(ptr[offset5] < c_b)
627
if(ptr[offset1] < c_b)
628
goto success_structured;
629
else
630
if(ptr[offset4] < c_b)
631
goto success_structured;
632
else
633
goto structured;
634
else
635
if(ptr[offset1] < c_b)
636
goto success_structured;
637
else
638
goto structured;
639
else
640
goto structured;
641
else
642
if(ptr[offset3] < c_b)
643
if(ptr[offset5] < c_b)
644
if(ptr[offset1] < c_b)
645
if(ptr[offset4] < c_b)
646
goto success_homogeneous;
647
else
648
goto homogeneous;
649
else
650
if(ptr[offset4] < c_b)
651
if(ptr[offset6] < c_b)
652
goto success_homogeneous;
653
else
654
goto homogeneous;
655
else
656
goto homogeneous;
657
else
658
if(ptr[offset1] < c_b)
659
if(ptr[offset4] < c_b)
660
goto success_homogeneous;
661
else
662
goto homogeneous;
663
else
664
goto homogeneous;
665
else
666
goto homogeneous;
667
else
668
if(ptr[offset5] > cb)
669
if(ptr[offset3] > cb)
670
if(ptr[offset2] > cb)
671
if(ptr[offset1] > cb)
672
if(ptr[offset4] > cb)
673
goto success_structured;
674
else
675
goto structured;
676
else
677
if(ptr[offset4] > cb)
678
if(ptr[offset6] > cb)
679
goto success_structured;
680
else
681
goto structured;
682
else
683
goto structured;
684
else
685
if(ptr[offset7] > cb)
686
if(ptr[offset4] > cb)
687
if(ptr[offset6] > cb)
688
goto success_homogeneous;
689
else
690
goto homogeneous;
691
else
692
goto homogeneous;
693
else
694
goto homogeneous;
695
else
696
goto structured;
697
else
698
if(ptr[offset5] < c_b)
699
if(ptr[offset7] < c_b)
700
if(ptr[offset6] < c_b)
701
if(ptr[offset1] < c_b)
702
goto success_structured;
703
else
704
if(ptr[offset4] < c_b)
705
goto success_structured;
706
else
707
goto structured;
708
else
709
goto structured;
710
else
711
goto structured;
712
else
713
goto homogeneous;
714
else
715
if(ptr[offset3] > cb)
716
if(ptr[offset5] > cb)
717
if(ptr[offset2] > cb)
718
if(ptr[offset1] > cb)
719
if(ptr[offset4] > cb)
720
goto success_homogeneous;
721
else
722
goto homogeneous;
723
else
724
if(ptr[offset4] > cb)
725
if(ptr[offset6] > cb)
726
goto success_homogeneous;
727
else
728
goto homogeneous;
729
else
730
goto homogeneous;
731
else
732
if(ptr[offset7] > cb)
733
if(ptr[offset4] > cb)
734
if(ptr[offset6] > cb)
735
goto success_homogeneous;
736
else
737
goto homogeneous;
738
else
739
goto homogeneous;
740
else
741
goto homogeneous;
742
else
743
goto homogeneous;
744
else
745
if(ptr[offset3] < c_b)
746
if(ptr[offset5] < c_b)
747
if(ptr[offset2] < c_b)
748
if(ptr[offset1] < c_b)
749
if(ptr[offset4] < c_b)
750
goto success_homogeneous;
751
else
752
goto homogeneous;
753
else
754
if(ptr[offset4] < c_b)
755
if(ptr[offset6] < c_b)
756
goto success_homogeneous;
757
else
758
goto homogeneous;
759
else
760
goto homogeneous;
761
else
762
if(ptr[offset7] < c_b)
763
if(ptr[offset4] < c_b)
764
if(ptr[offset6] < c_b)
765
goto success_homogeneous;
766
else
767
goto homogeneous;
768
else
769
goto homogeneous;
770
else
771
goto homogeneous;
772
else
773
goto homogeneous;
774
else
775
goto homogeneous;
776
}
777
}
778
success_homogeneous:
779
if(total == nExpectedCorners)
780
{
781
if(nExpectedCorners == 0)
782
{
783
nExpectedCorners = 512;
784
keypoints.reserve(nExpectedCorners);
785
}
786
else
787
{
788
nExpectedCorners *= 2;
789
keypoints.reserve(nExpectedCorners);
790
}
791
}
792
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
793
total++;
794
goto homogeneous;
795
success_structured:
796
if(total == nExpectedCorners)
797
{
798
if(nExpectedCorners == 0)
799
{
800
nExpectedCorners = 512;
801
keypoints.reserve(nExpectedCorners);
802
}
803
else
804
{
805
nExpectedCorners *= 2;
806
keypoints.reserve(nExpectedCorners);
807
}
808
}
809
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
810
total++;
811
goto structured;
812
}
813
}
814
}
815
816
static void AGAST_7_12d(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
817
{
818
cv::Mat img;
819
if(!_img.getMat().isContinuous())
820
img = _img.getMat().clone();
821
else
822
img = _img.getMat();
823
824
size_t total = 0;
825
int xsize = img.cols;
826
int ysize = img.rows;
827
size_t nExpectedCorners = keypoints.capacity();
828
int x, y;
829
int xsizeB = xsize - 4;
830
int ysizeB = ysize - 3;
831
int width;
832
833
keypoints.resize(0);
834
835
int pixel_7_12d_[16];
836
makeAgastOffsets(pixel_7_12d_, (int)img.step, AgastFeatureDetector::AGAST_7_12d);
837
838
short offset0 = (short) pixel_7_12d_[0];
839
short offset1 = (short) pixel_7_12d_[1];
840
short offset2 = (short) pixel_7_12d_[2];
841
short offset3 = (short) pixel_7_12d_[3];
842
short offset4 = (short) pixel_7_12d_[4];
843
short offset5 = (short) pixel_7_12d_[5];
844
short offset6 = (short) pixel_7_12d_[6];
845
short offset7 = (short) pixel_7_12d_[7];
846
short offset8 = (short) pixel_7_12d_[8];
847
short offset9 = (short) pixel_7_12d_[9];
848
short offset10 = (short) pixel_7_12d_[10];
849
short offset11 = (short) pixel_7_12d_[11];
850
851
width = xsize;
852
853
for(y = 3; y < ysizeB; y++)
854
{
855
x = 2;
856
while(true)
857
{
858
homogeneous:
859
{
860
x++;
861
if(x > xsizeB)
862
break;
863
else
864
{
865
const unsigned char* const ptr = img.ptr() + y*width + x;
866
const int cb = *ptr + threshold;
867
const int c_b = *ptr - threshold;
868
if(ptr[offset0] > cb)
869
if(ptr[offset5] > cb)
870
if(ptr[offset2] > cb)
871
if(ptr[offset9] > cb)
872
if(ptr[offset1] > cb)
873
if(ptr[offset6] > cb)
874
if(ptr[offset3] > cb)
875
if(ptr[offset4] > cb)
876
goto success_homogeneous;
877
else
878
if(ptr[offset10] > cb)
879
if(ptr[offset11] > cb)
880
goto success_structured;
881
else
882
goto homogeneous;
883
else
884
goto homogeneous;
885
else
886
if(ptr[offset8] > cb)
887
if(ptr[offset10] > cb)
888
if(ptr[offset11] > cb)
889
goto success_structured;
890
else
891
if(ptr[offset4] > cb)
892
if(ptr[offset7] > cb)
893
goto success_structured;
894
else
895
goto structured;
896
else
897
goto homogeneous;
898
else
899
goto homogeneous;
900
else
901
goto homogeneous;
902
else
903
if(ptr[offset11] > cb)
904
if(ptr[offset3] > cb)
905
if(ptr[offset4] > cb)
906
goto success_homogeneous;
907
else
908
if(ptr[offset10] > cb)
909
goto success_homogeneous;
910
else
911
goto homogeneous;
912
else
913
if(ptr[offset8] > cb)
914
if(ptr[offset10] > cb)
915
goto success_homogeneous;
916
else
917
goto homogeneous;
918
else
919
goto homogeneous;
920
else
921
goto homogeneous;
922
else
923
if(ptr[offset6] > cb)
924
if(ptr[offset7] > cb)
925
if(ptr[offset8] > cb)
926
if(ptr[offset4] > cb)
927
if(ptr[offset3] > cb)
928
goto success_structured;
929
else
930
if(ptr[offset10] > cb)
931
goto success_structured;
932
else
933
goto homogeneous;
934
else
935
if(ptr[offset10] > cb)
936
if(ptr[offset11] > cb)
937
goto success_structured;
938
else
939
goto homogeneous;
940
else
941
goto homogeneous;
942
else
943
goto homogeneous;
944
else
945
goto homogeneous;
946
else
947
goto homogeneous;
948
else
949
if(ptr[offset3] > cb)
950
if(ptr[offset4] > cb)
951
if(ptr[offset1] > cb)
952
if(ptr[offset6] > cb)
953
goto success_homogeneous;
954
else
955
if(ptr[offset11] > cb)
956
goto success_homogeneous;
957
else
958
goto homogeneous;
959
else
960
if(ptr[offset6] > cb)
961
if(ptr[offset7] > cb)
962
if(ptr[offset8] > cb)
963
goto success_homogeneous;
964
else
965
goto homogeneous;
966
else
967
goto homogeneous;
968
else
969
goto homogeneous;
970
else
971
goto homogeneous;
972
else
973
goto homogeneous;
974
else
975
if(ptr[offset9] > cb)
976
if(ptr[offset7] > cb)
977
if(ptr[offset8] > cb)
978
if(ptr[offset1] > cb)
979
if(ptr[offset10] > cb)
980
if(ptr[offset11] > cb)
981
goto success_homogeneous;
982
else
983
if(ptr[offset6] > cb)
984
if(ptr[offset4] > cb)
985
goto success_structured;
986
else
987
goto homogeneous;
988
else
989
goto homogeneous;
990
else
991
if(ptr[offset6] > cb)
992
if(ptr[offset3] > cb)
993
if(ptr[offset4] > cb)
994
goto success_structured;
995
else
996
goto homogeneous;
997
else
998
goto homogeneous;
999
else
1000
goto homogeneous;
1001
else
1002
if(ptr[offset6] > cb)
1003
if(ptr[offset4] > cb)
1004
if(ptr[offset3] > cb)
1005
goto success_homogeneous;
1006
else
1007
if(ptr[offset10] > cb)
1008
goto success_homogeneous;
1009
else
1010
goto homogeneous;
1011
else
1012
if(ptr[offset10] > cb)
1013
if(ptr[offset11] > cb)
1014
goto success_homogeneous;
1015
else
1016
goto homogeneous;
1017
else
1018
goto homogeneous;
1019
else
1020
goto homogeneous;
1021
else
1022
goto homogeneous;
1023
else
1024
goto homogeneous;
1025
else
1026
goto homogeneous;
1027
else
1028
if(ptr[offset5] < c_b)
1029
if(ptr[offset9] > cb)
1030
if(ptr[offset3] < c_b)
1031
if(ptr[offset4] < c_b)
1032
if(ptr[offset11] > cb)
1033
if(ptr[offset1] > cb)
1034
if(ptr[offset8] > cb)
1035
if(ptr[offset10] > cb)
1036
if(ptr[offset2] > cb)
1037
goto success_structured;
1038
else
1039
if(ptr[offset7] > cb)
1040
goto success_structured;
1041
else
1042
goto structured;
1043
else
1044
goto homogeneous;
1045
else
1046
if(ptr[offset6] < c_b)
1047
if(ptr[offset2] < c_b)
1048
if(ptr[offset7] < c_b)
1049
if(ptr[offset8] < c_b)
1050
goto success_structured;
1051
else
1052
goto structured;
1053
else
1054
goto structured;
1055
else
1056
goto homogeneous;
1057
else
1058
goto homogeneous;
1059
else
1060
if(ptr[offset6] > cb)
1061
if(ptr[offset7] > cb)
1062
if(ptr[offset8] > cb)
1063
if(ptr[offset10] > cb)
1064
goto success_structured;
1065
else
1066
goto structured;
1067
else
1068
goto homogeneous;
1069
else
1070
goto homogeneous;
1071
else
1072
if(ptr[offset6] < c_b)
1073
if(ptr[offset2] < c_b)
1074
if(ptr[offset7] < c_b)
1075
if(ptr[offset1] < c_b)
1076
goto success_structured;
1077
else
1078
if(ptr[offset8] < c_b)
1079
goto success_structured;
1080
else
1081
goto structured;
1082
else
1083
goto homogeneous;
1084
else
1085
goto homogeneous;
1086
else
1087
goto homogeneous;
1088
else
1089
if(ptr[offset2] < c_b)
1090
if(ptr[offset7] < c_b)
1091
if(ptr[offset1] < c_b)
1092
if(ptr[offset6] < c_b)
1093
goto success_structured;
1094
else
1095
goto homogeneous;
1096
else
1097
if(ptr[offset6] < c_b)
1098
if(ptr[offset8] < c_b)
1099
goto success_structured;
1100
else
1101
goto homogeneous;
1102
else
1103
goto homogeneous;
1104
else
1105
goto homogeneous;
1106
else
1107
goto homogeneous;
1108
else
1109
if(ptr[offset11] > cb)
1110
if(ptr[offset8] > cb)
1111
if(ptr[offset10] > cb)
1112
if(ptr[offset1] > cb)
1113
if(ptr[offset2] > cb)
1114
goto success_structured;
1115
else
1116
if(ptr[offset7] > cb)
1117
goto success_structured;
1118
else
1119
goto homogeneous;
1120
else
1121
if(ptr[offset6] > cb)
1122
if(ptr[offset7] > cb)
1123
goto success_structured;
1124
else
1125
goto homogeneous;
1126
else
1127
goto homogeneous;
1128
else
1129
goto homogeneous;
1130
else
1131
goto homogeneous;
1132
else
1133
goto homogeneous;
1134
else
1135
if(ptr[offset11] > cb)
1136
if(ptr[offset10] > cb)
1137
if(ptr[offset3] > cb)
1138
if(ptr[offset1] > cb)
1139
if(ptr[offset2] > cb)
1140
goto success_homogeneous;
1141
else
1142
if(ptr[offset7] > cb)
1143
if(ptr[offset8] > cb)
1144
goto success_structured;
1145
else
1146
goto homogeneous;
1147
else
1148
goto homogeneous;
1149
else
1150
if(ptr[offset6] > cb)
1151
if(ptr[offset7] > cb)
1152
if(ptr[offset8] > cb)
1153
goto success_structured;
1154
else
1155
goto homogeneous;
1156
else
1157
goto homogeneous;
1158
else
1159
goto homogeneous;
1160
else
1161
if(ptr[offset8] > cb)
1162
if(ptr[offset1] > cb)
1163
if(ptr[offset2] > cb)
1164
goto success_homogeneous;
1165
else
1166
if(ptr[offset7] > cb)
1167
goto success_homogeneous;
1168
else
1169
goto homogeneous;
1170
else
1171
if(ptr[offset6] > cb)
1172
if(ptr[offset7] > cb)
1173
goto success_homogeneous;
1174
else
1175
goto homogeneous;
1176
else
1177
goto homogeneous;
1178
else
1179
goto homogeneous;
1180
else
1181
goto homogeneous;
1182
else
1183
goto homogeneous;
1184
else
1185
if(ptr[offset9] < c_b)
1186
if(ptr[offset2] > cb)
1187
if(ptr[offset1] > cb)
1188
if(ptr[offset4] > cb)
1189
if(ptr[offset10] > cb)
1190
if(ptr[offset3] > cb)
1191
if(ptr[offset11] > cb)
1192
goto success_structured;
1193
else
1194
goto homogeneous;
1195
else
1196
goto homogeneous;
1197
else
1198
if(ptr[offset6] < c_b)
1199
if(ptr[offset7] < c_b)
1200
if(ptr[offset8] < c_b)
1201
if(ptr[offset11] < c_b)
1202
if(ptr[offset10] < c_b)
1203
goto success_structured;
1204
else
1205
goto structured;
1206
else
1207
goto structured;
1208
else
1209
goto homogeneous;
1210
else
1211
goto homogeneous;
1212
else
1213
goto homogeneous;
1214
else
1215
if(ptr[offset6] < c_b)
1216
if(ptr[offset7] < c_b)
1217
if(ptr[offset8] < c_b)
1218
if(ptr[offset10] < c_b)
1219
if(ptr[offset4] < c_b)
1220
goto success_structured;
1221
else
1222
if(ptr[offset11] < c_b)
1223
goto success_structured;
1224
else
1225
goto structured;
1226
else
1227
if(ptr[offset3] < c_b)
1228
if(ptr[offset4] < c_b)
1229
goto success_structured;
1230
else
1231
goto structured;
1232
else
1233
goto homogeneous;
1234
else
1235
goto homogeneous;
1236
else
1237
goto homogeneous;
1238
else
1239
goto homogeneous;
1240
else
1241
if(ptr[offset6] < c_b)
1242
if(ptr[offset7] < c_b)
1243
if(ptr[offset8] < c_b)
1244
if(ptr[offset4] < c_b)
1245
if(ptr[offset3] < c_b)
1246
goto success_structured;
1247
else
1248
if(ptr[offset10] < c_b)
1249
goto success_structured;
1250
else
1251
goto homogeneous;
1252
else
1253
if(ptr[offset10] < c_b)
1254
if(ptr[offset11] < c_b)
1255
goto success_structured;
1256
else
1257
goto homogeneous;
1258
else
1259
goto homogeneous;
1260
else
1261
goto homogeneous;
1262
else
1263
goto homogeneous;
1264
else
1265
goto homogeneous;
1266
else
1267
if(ptr[offset6] < c_b)
1268
if(ptr[offset7] < c_b)
1269
if(ptr[offset8] < c_b)
1270
if(ptr[offset4] < c_b)
1271
if(ptr[offset3] < c_b)
1272
goto success_homogeneous;
1273
else
1274
if(ptr[offset10] < c_b)
1275
goto success_homogeneous;
1276
else
1277
goto homogeneous;
1278
else
1279
if(ptr[offset10] < c_b)
1280
if(ptr[offset11] < c_b)
1281
goto success_homogeneous;
1282
else
1283
goto homogeneous;
1284
else
1285
goto homogeneous;
1286
else
1287
if(ptr[offset2] < c_b)
1288
if(ptr[offset1] < c_b)
1289
if(ptr[offset3] < c_b)
1290
if(ptr[offset4] < c_b)
1291
goto success_structured;
1292
else
1293
goto homogeneous;
1294
else
1295
goto homogeneous;
1296
else
1297
goto homogeneous;
1298
else
1299
goto homogeneous;
1300
else
1301
goto homogeneous;
1302
else
1303
goto homogeneous;
1304
else
1305
if(ptr[offset2] > cb)
1306
if(ptr[offset1] > cb)
1307
if(ptr[offset3] > cb)
1308
if(ptr[offset4] > cb)
1309
if(ptr[offset10] > cb)
1310
if(ptr[offset11] > cb)
1311
goto success_homogeneous;
1312
else
1313
goto homogeneous;
1314
else
1315
goto homogeneous;
1316
else
1317
goto homogeneous;
1318
else
1319
goto homogeneous;
1320
else
1321
goto homogeneous;
1322
else
1323
if(ptr[offset2] < c_b)
1324
if(ptr[offset3] < c_b)
1325
if(ptr[offset4] < c_b)
1326
if(ptr[offset7] < c_b)
1327
if(ptr[offset1] < c_b)
1328
if(ptr[offset6] < c_b)
1329
goto success_homogeneous;
1330
else
1331
goto homogeneous;
1332
else
1333
if(ptr[offset6] < c_b)
1334
if(ptr[offset8] < c_b)
1335
goto success_homogeneous;
1336
else
1337
goto homogeneous;
1338
else
1339
goto homogeneous;
1340
else
1341
goto homogeneous;
1342
else
1343
goto homogeneous;
1344
else
1345
goto homogeneous;
1346
else
1347
goto homogeneous;
1348
else
1349
if(ptr[offset2] > cb)
1350
if(ptr[offset10] > cb)
1351
if(ptr[offset11] > cb)
1352
if(ptr[offset9] > cb)
1353
if(ptr[offset1] > cb)
1354
if(ptr[offset3] > cb)
1355
goto success_homogeneous;
1356
else
1357
if(ptr[offset8] > cb)
1358
goto success_homogeneous;
1359
else
1360
goto homogeneous;
1361
else
1362
if(ptr[offset6] > cb)
1363
if(ptr[offset7] > cb)
1364
if(ptr[offset8] > cb)
1365
goto success_homogeneous;
1366
else
1367
goto homogeneous;
1368
else
1369
goto homogeneous;
1370
else
1371
goto homogeneous;
1372
else
1373
if(ptr[offset1] > cb)
1374
if(ptr[offset3] > cb)
1375
if(ptr[offset4] > cb)
1376
goto success_homogeneous;
1377
else
1378
goto homogeneous;
1379
else
1380
goto homogeneous;
1381
else
1382
goto homogeneous;
1383
else
1384
goto homogeneous;
1385
else
1386
goto homogeneous;
1387
else
1388
if(ptr[offset9] > cb)
1389
if(ptr[offset7] > cb)
1390
if(ptr[offset8] > cb)
1391
if(ptr[offset10] > cb)
1392
if(ptr[offset11] > cb)
1393
if(ptr[offset1] > cb)
1394
goto success_homogeneous;
1395
else
1396
if(ptr[offset6] > cb)
1397
goto success_homogeneous;
1398
else
1399
goto homogeneous;
1400
else
1401
goto homogeneous;
1402
else
1403
goto homogeneous;
1404
else
1405
goto homogeneous;
1406
else
1407
goto homogeneous;
1408
else
1409
goto homogeneous;
1410
else if(ptr[offset0] < c_b)
1411
if(ptr[offset2] > cb)
1412
if(ptr[offset5] > cb)
1413
if(ptr[offset7] > cb)
1414
if(ptr[offset6] > cb)
1415
if(ptr[offset4] > cb)
1416
if(ptr[offset3] > cb)
1417
if(ptr[offset1] > cb)
1418
goto success_homogeneous;
1419
else
1420
if(ptr[offset8] > cb)
1421
goto success_homogeneous;
1422
else
1423
goto homogeneous;
1424
else
1425
if(ptr[offset9] > cb)
1426
if(ptr[offset8] > cb)
1427
if(ptr[offset10] > cb)
1428
goto success_structured;
1429
else
1430
goto homogeneous;
1431
else
1432
goto homogeneous;
1433
else
1434
goto homogeneous;
1435
else
1436
if(ptr[offset9] > cb)
1437
if(ptr[offset8] > cb)
1438
if(ptr[offset10] > cb)
1439
if(ptr[offset11] > cb)
1440
goto success_structured;
1441
else
1442
goto homogeneous;
1443
else
1444
goto homogeneous;
1445
else
1446
goto homogeneous;
1447
else
1448
goto homogeneous;
1449
else
1450
goto homogeneous;
1451
else
1452
if(ptr[offset9] < c_b)
1453
if(ptr[offset8] < c_b)
1454
if(ptr[offset10] < c_b)
1455
if(ptr[offset11] < c_b)
1456
if(ptr[offset7] < c_b)
1457
if(ptr[offset1] < c_b)
1458
goto success_structured;
1459
else
1460
if(ptr[offset6] < c_b)
1461
goto success_structured;
1462
else
1463
goto homogeneous;
1464
else
1465
goto homogeneous;
1466
else
1467
goto homogeneous;
1468
else
1469
goto homogeneous;
1470
else
1471
goto homogeneous;
1472
else
1473
goto homogeneous;
1474
else
1475
if(ptr[offset9] < c_b)
1476
if(ptr[offset7] < c_b)
1477
if(ptr[offset8] < c_b)
1478
if(ptr[offset5] < c_b)
1479
if(ptr[offset1] < c_b)
1480
if(ptr[offset10] < c_b)
1481
if(ptr[offset11] < c_b)
1482
goto success_structured;
1483
else
1484
if(ptr[offset6] < c_b)
1485
if(ptr[offset4] < c_b)
1486
goto success_structured;
1487
else
1488
goto structured;
1489
else
1490
goto homogeneous;
1491
else
1492
if(ptr[offset6] < c_b)
1493
if(ptr[offset3] < c_b)
1494
if(ptr[offset4] < c_b)
1495
goto success_structured;
1496
else
1497
goto structured;
1498
else
1499
goto homogeneous;
1500
else
1501
goto homogeneous;
1502
else
1503
if(ptr[offset6] < c_b)
1504
if(ptr[offset4] < c_b)
1505
if(ptr[offset3] < c_b)
1506
goto success_structured;
1507
else
1508
if(ptr[offset10] < c_b)
1509
goto success_structured;
1510
else
1511
goto homogeneous;
1512
else
1513
if(ptr[offset10] < c_b)
1514
if(ptr[offset11] < c_b)
1515
goto success_structured;
1516
else
1517
goto homogeneous;
1518
else
1519
goto homogeneous;
1520
else
1521
goto homogeneous;
1522
else
1523
if(ptr[offset10] < c_b)
1524
if(ptr[offset11] < c_b)
1525
if(ptr[offset1] < c_b)
1526
goto success_homogeneous;
1527
else
1528
if(ptr[offset6] < c_b)
1529
goto success_homogeneous;
1530
else
1531
goto homogeneous;
1532
else
1533
goto homogeneous;
1534
else
1535
goto homogeneous;
1536
else
1537
goto homogeneous;
1538
else
1539
goto homogeneous;
1540
else
1541
goto homogeneous;
1542
else
1543
if(ptr[offset2] < c_b)
1544
if(ptr[offset9] > cb)
1545
if(ptr[offset5] > cb)
1546
if(ptr[offset1] < c_b)
1547
if(ptr[offset4] < c_b)
1548
if(ptr[offset10] < c_b)
1549
if(ptr[offset3] < c_b)
1550
if(ptr[offset11] < c_b)
1551
goto success_structured;
1552
else
1553
goto homogeneous;
1554
else
1555
goto homogeneous;
1556
else
1557
if(ptr[offset6] > cb)
1558
if(ptr[offset7] > cb)
1559
if(ptr[offset8] > cb)
1560
if(ptr[offset11] > cb)
1561
if(ptr[offset10] > cb)
1562
goto success_structured;
1563
else
1564
goto structured;
1565
else
1566
goto structured;
1567
else
1568
goto homogeneous;
1569
else
1570
goto homogeneous;
1571
else
1572
goto homogeneous;
1573
else
1574
if(ptr[offset6] > cb)
1575
if(ptr[offset7] > cb)
1576
if(ptr[offset8] > cb)
1577
if(ptr[offset10] > cb)
1578
if(ptr[offset4] > cb)
1579
goto success_structured;
1580
else
1581
if(ptr[offset11] > cb)
1582
goto success_structured;
1583
else
1584
goto structured;
1585
else
1586
if(ptr[offset3] > cb)
1587
if(ptr[offset4] > cb)
1588
goto success_structured;
1589
else
1590
goto structured;
1591
else
1592
goto homogeneous;
1593
else
1594
goto homogeneous;
1595
else
1596
goto homogeneous;
1597
else
1598
goto homogeneous;
1599
else
1600
if(ptr[offset6] > cb)
1601
if(ptr[offset7] > cb)
1602
if(ptr[offset8] > cb)
1603
if(ptr[offset4] > cb)
1604
if(ptr[offset3] > cb)
1605
goto success_structured;
1606
else
1607
if(ptr[offset10] > cb)
1608
goto success_structured;
1609
else
1610
goto homogeneous;
1611
else
1612
if(ptr[offset10] > cb)
1613
if(ptr[offset11] > cb)
1614
goto success_structured;
1615
else
1616
goto homogeneous;
1617
else
1618
goto homogeneous;
1619
else
1620
goto homogeneous;
1621
else
1622
goto homogeneous;
1623
else
1624
goto homogeneous;
1625
else
1626
if(ptr[offset3] < c_b)
1627
if(ptr[offset4] < c_b)
1628
if(ptr[offset5] < c_b)
1629
if(ptr[offset1] < c_b)
1630
if(ptr[offset6] < c_b)
1631
goto success_homogeneous;
1632
else
1633
if(ptr[offset11] < c_b)
1634
goto success_homogeneous;
1635
else
1636
goto homogeneous;
1637
else
1638
if(ptr[offset6] < c_b)
1639
if(ptr[offset7] < c_b)
1640
if(ptr[offset8] < c_b)
1641
goto success_structured;
1642
else
1643
goto homogeneous;
1644
else
1645
goto homogeneous;
1646
else
1647
goto homogeneous;
1648
else
1649
if(ptr[offset1] < c_b)
1650
if(ptr[offset10] < c_b)
1651
if(ptr[offset11] < c_b)
1652
goto success_homogeneous;
1653
else
1654
goto homogeneous;
1655
else
1656
goto homogeneous;
1657
else
1658
goto homogeneous;
1659
else
1660
goto homogeneous;
1661
else
1662
goto homogeneous;
1663
else
1664
if(ptr[offset9] < c_b)
1665
if(ptr[offset5] < c_b)
1666
if(ptr[offset1] < c_b)
1667
if(ptr[offset6] < c_b)
1668
if(ptr[offset3] < c_b)
1669
if(ptr[offset4] < c_b)
1670
goto success_homogeneous;
1671
else
1672
if(ptr[offset10] < c_b)
1673
if(ptr[offset11] < c_b)
1674
goto success_structured;
1675
else
1676
goto homogeneous;
1677
else
1678
goto homogeneous;
1679
else
1680
if(ptr[offset8] < c_b)
1681
if(ptr[offset10] < c_b)
1682
if(ptr[offset11] < c_b)
1683
goto success_structured;
1684
else
1685
if(ptr[offset4] < c_b)
1686
if(ptr[offset7] < c_b)
1687
goto success_structured;
1688
else
1689
goto structured;
1690
else
1691
goto homogeneous;
1692
else
1693
goto homogeneous;
1694
else
1695
goto homogeneous;
1696
else
1697
if(ptr[offset11] < c_b)
1698
if(ptr[offset3] < c_b)
1699
if(ptr[offset4] < c_b)
1700
goto success_homogeneous;
1701
else
1702
if(ptr[offset10] < c_b)
1703
goto success_homogeneous;
1704
else
1705
goto homogeneous;
1706
else
1707
if(ptr[offset8] < c_b)
1708
if(ptr[offset10] < c_b)
1709
goto success_homogeneous;
1710
else
1711
goto homogeneous;
1712
else
1713
goto homogeneous;
1714
else
1715
goto homogeneous;
1716
else
1717
if(ptr[offset6] < c_b)
1718
if(ptr[offset7] < c_b)
1719
if(ptr[offset8] < c_b)
1720
if(ptr[offset4] < c_b)
1721
if(ptr[offset3] < c_b)
1722
goto success_structured;
1723
else
1724
if(ptr[offset10] < c_b)
1725
goto success_structured;
1726
else
1727
goto homogeneous;
1728
else
1729
if(ptr[offset10] < c_b)
1730
if(ptr[offset11] < c_b)
1731
goto success_structured;
1732
else
1733
goto homogeneous;
1734
else
1735
goto homogeneous;
1736
else
1737
goto homogeneous;
1738
else
1739
goto homogeneous;
1740
else
1741
goto homogeneous;
1742
else
1743
if(ptr[offset10] < c_b)
1744
if(ptr[offset11] < c_b)
1745
if(ptr[offset1] < c_b)
1746
if(ptr[offset3] < c_b)
1747
goto success_homogeneous;
1748
else
1749
if(ptr[offset8] < c_b)
1750
goto success_homogeneous;
1751
else
1752
goto homogeneous;
1753
else
1754
if(ptr[offset6] < c_b)
1755
if(ptr[offset7] < c_b)
1756
if(ptr[offset8] < c_b)
1757
goto success_homogeneous;
1758
else
1759
goto homogeneous;
1760
else
1761
goto homogeneous;
1762
else
1763
goto homogeneous;
1764
else
1765
goto homogeneous;
1766
else
1767
goto homogeneous;
1768
else
1769
if(ptr[offset3] < c_b)
1770
if(ptr[offset4] < c_b)
1771
if(ptr[offset5] < c_b)
1772
if(ptr[offset1] < c_b)
1773
if(ptr[offset6] < c_b)
1774
goto success_homogeneous;
1775
else
1776
if(ptr[offset11] < c_b)
1777
goto success_homogeneous;
1778
else
1779
goto homogeneous;
1780
else
1781
if(ptr[offset6] < c_b)
1782
if(ptr[offset7] < c_b)
1783
if(ptr[offset8] < c_b)
1784
goto success_homogeneous;
1785
else
1786
goto homogeneous;
1787
else
1788
goto homogeneous;
1789
else
1790
goto homogeneous;
1791
else
1792
if(ptr[offset1] < c_b)
1793
if(ptr[offset10] < c_b)
1794
if(ptr[offset11] < c_b)
1795
goto success_homogeneous;
1796
else
1797
goto homogeneous;
1798
else
1799
goto homogeneous;
1800
else
1801
goto homogeneous;
1802
else
1803
goto homogeneous;
1804
else
1805
goto homogeneous;
1806
else
1807
if(ptr[offset9] < c_b)
1808
if(ptr[offset7] < c_b)
1809
if(ptr[offset8] < c_b)
1810
if(ptr[offset5] < c_b)
1811
if(ptr[offset1] < c_b)
1812
if(ptr[offset10] < c_b)
1813
if(ptr[offset11] < c_b)
1814
goto success_homogeneous;
1815
else
1816
if(ptr[offset6] < c_b)
1817
if(ptr[offset4] < c_b)
1818
goto success_structured;
1819
else
1820
goto homogeneous;
1821
else
1822
goto homogeneous;
1823
else
1824
if(ptr[offset6] < c_b)
1825
if(ptr[offset3] < c_b)
1826
if(ptr[offset4] < c_b)
1827
goto success_structured;
1828
else
1829
goto homogeneous;
1830
else
1831
goto homogeneous;
1832
else
1833
goto homogeneous;
1834
else
1835
if(ptr[offset6] < c_b)
1836
if(ptr[offset4] < c_b)
1837
if(ptr[offset3] < c_b)
1838
goto success_homogeneous;
1839
else
1840
if(ptr[offset10] < c_b)
1841
goto success_homogeneous;
1842
else
1843
goto homogeneous;
1844
else
1845
if(ptr[offset10] < c_b)
1846
if(ptr[offset11] < c_b)
1847
goto success_homogeneous;
1848
else
1849
goto homogeneous;
1850
else
1851
goto homogeneous;
1852
else
1853
goto homogeneous;
1854
else
1855
if(ptr[offset10] < c_b)
1856
if(ptr[offset11] < c_b)
1857
if(ptr[offset1] < c_b)
1858
goto success_homogeneous;
1859
else
1860
if(ptr[offset6] < c_b)
1861
goto success_homogeneous;
1862
else
1863
goto homogeneous;
1864
else
1865
goto homogeneous;
1866
else
1867
goto homogeneous;
1868
else
1869
goto homogeneous;
1870
else
1871
goto homogeneous;
1872
else
1873
if(ptr[offset5] > cb)
1874
if(ptr[offset9] > cb)
1875
if(ptr[offset6] > cb)
1876
if(ptr[offset7] > cb)
1877
if(ptr[offset8] > cb)
1878
if(ptr[offset4] > cb)
1879
if(ptr[offset3] > cb)
1880
goto success_homogeneous;
1881
else
1882
if(ptr[offset10] > cb)
1883
goto success_homogeneous;
1884
else
1885
goto homogeneous;
1886
else
1887
if(ptr[offset10] > cb)
1888
if(ptr[offset11] > cb)
1889
goto success_homogeneous;
1890
else
1891
goto homogeneous;
1892
else
1893
goto homogeneous;
1894
else
1895
goto homogeneous;
1896
else
1897
goto homogeneous;
1898
else
1899
goto homogeneous;
1900
else
1901
goto homogeneous;
1902
else
1903
goto homogeneous;
1904
else
1905
if(ptr[offset5] > cb)
1906
if(ptr[offset9] > cb)
1907
if(ptr[offset6] > cb)
1908
if(ptr[offset7] > cb)
1909
if(ptr[offset4] > cb)
1910
if(ptr[offset3] > cb)
1911
if(ptr[offset8] > cb)
1912
goto success_homogeneous;
1913
else
1914
if(ptr[offset1] > cb)
1915
if(ptr[offset2] > cb)
1916
goto success_homogeneous;
1917
else
1918
goto homogeneous;
1919
else
1920
goto homogeneous;
1921
else
1922
if(ptr[offset8] > cb)
1923
if(ptr[offset10] > cb)
1924
goto success_homogeneous;
1925
else
1926
goto homogeneous;
1927
else
1928
goto homogeneous;
1929
else
1930
if(ptr[offset11] > cb)
1931
if(ptr[offset8] > cb)
1932
if(ptr[offset10] > cb)
1933
goto success_homogeneous;
1934
else
1935
goto homogeneous;
1936
else
1937
goto homogeneous;
1938
else
1939
goto homogeneous;
1940
else
1941
goto homogeneous;
1942
else
1943
goto homogeneous;
1944
else
1945
if(ptr[offset2] > cb)
1946
if(ptr[offset3] > cb)
1947
if(ptr[offset4] > cb)
1948
if(ptr[offset7] > cb)
1949
if(ptr[offset1] > cb)
1950
if(ptr[offset6] > cb)
1951
goto success_homogeneous;
1952
else
1953
goto homogeneous;
1954
else
1955
if(ptr[offset6] > cb)
1956
if(ptr[offset8] > cb)
1957
goto success_homogeneous;
1958
else
1959
goto homogeneous;
1960
else
1961
goto homogeneous;
1962
else
1963
goto homogeneous;
1964
else
1965
goto homogeneous;
1966
else
1967
goto homogeneous;
1968
else
1969
goto homogeneous;
1970
else
1971
if(ptr[offset5] < c_b)
1972
if(ptr[offset9] < c_b)
1973
if(ptr[offset6] < c_b)
1974
if(ptr[offset7] < c_b)
1975
if(ptr[offset4] < c_b)
1976
if(ptr[offset3] < c_b)
1977
if(ptr[offset8] < c_b)
1978
goto success_homogeneous;
1979
else
1980
if(ptr[offset1] < c_b)
1981
if(ptr[offset2] < c_b)
1982
goto success_homogeneous;
1983
else
1984
goto homogeneous;
1985
else
1986
goto homogeneous;
1987
else
1988
if(ptr[offset8] < c_b)
1989
if(ptr[offset10] < c_b)
1990
goto success_homogeneous;
1991
else
1992
goto homogeneous;
1993
else
1994
goto homogeneous;
1995
else
1996
if(ptr[offset11] < c_b)
1997
if(ptr[offset8] < c_b)
1998
if(ptr[offset10] < c_b)
1999
goto success_homogeneous;
2000
else
2001
goto homogeneous;
2002
else
2003
goto homogeneous;
2004
else
2005
goto homogeneous;
2006
else
2007
goto homogeneous;
2008
else
2009
goto homogeneous;
2010
else
2011
if(ptr[offset2] < c_b)
2012
if(ptr[offset3] < c_b)
2013
if(ptr[offset4] < c_b)
2014
if(ptr[offset7] < c_b)
2015
if(ptr[offset1] < c_b)
2016
if(ptr[offset6] < c_b)
2017
goto success_homogeneous;
2018
else
2019
goto homogeneous;
2020
else
2021
if(ptr[offset6] < c_b)
2022
if(ptr[offset8] < c_b)
2023
goto success_homogeneous;
2024
else
2025
goto homogeneous;
2026
else
2027
goto homogeneous;
2028
else
2029
goto homogeneous;
2030
else
2031
goto homogeneous;
2032
else
2033
goto homogeneous;
2034
else
2035
goto homogeneous;
2036
else
2037
goto homogeneous;
2038
}
2039
}
2040
structured:
2041
{
2042
x++;
2043
if(x > xsizeB)
2044
break;
2045
else
2046
{
2047
const unsigned char* const ptr = img.ptr() + y*width + x;
2048
const int cb = *ptr + threshold;
2049
const int c_b = *ptr - threshold;
2050
if(ptr[offset0] > cb)
2051
if(ptr[offset5] > cb)
2052
if(ptr[offset2] > cb)
2053
if(ptr[offset9] > cb)
2054
if(ptr[offset1] > cb)
2055
if(ptr[offset6] > cb)
2056
if(ptr[offset3] > cb)
2057
if(ptr[offset4] > cb)
2058
goto success_structured;
2059
else
2060
if(ptr[offset10] > cb)
2061
if(ptr[offset11] > cb)
2062
goto success_structured;
2063
else
2064
goto structured;
2065
else
2066
goto structured;
2067
else
2068
if(ptr[offset8] > cb)
2069
if(ptr[offset10] > cb)
2070
if(ptr[offset11] > cb)
2071
goto success_structured;
2072
else
2073
if(ptr[offset4] > cb)
2074
if(ptr[offset7] > cb)
2075
goto success_structured;
2076
else
2077
goto structured;
2078
else
2079
goto structured;
2080
else
2081
goto structured;
2082
else
2083
goto structured;
2084
else
2085
if(ptr[offset11] > cb)
2086
if(ptr[offset3] > cb)
2087
if(ptr[offset4] > cb)
2088
goto success_structured;
2089
else
2090
if(ptr[offset10] > cb)
2091
goto success_structured;
2092
else
2093
goto structured;
2094
else
2095
if(ptr[offset8] > cb)
2096
if(ptr[offset10] > cb)
2097
goto success_structured;
2098
else
2099
goto structured;
2100
else
2101
goto structured;
2102
else
2103
goto structured;
2104
else
2105
if(ptr[offset6] > cb)
2106
if(ptr[offset7] > cb)
2107
if(ptr[offset8] > cb)
2108
if(ptr[offset4] > cb)
2109
if(ptr[offset3] > cb)
2110
goto success_structured;
2111
else
2112
if(ptr[offset10] > cb)
2113
goto success_structured;
2114
else
2115
goto structured;
2116
else
2117
if(ptr[offset10] > cb)
2118
if(ptr[offset11] > cb)
2119
goto success_structured;
2120
else
2121
goto structured;
2122
else
2123
goto structured;
2124
else
2125
goto structured;
2126
else
2127
goto structured;
2128
else
2129
goto structured;
2130
else
2131
if(ptr[offset3] > cb)
2132
if(ptr[offset4] > cb)
2133
if(ptr[offset1] > cb)
2134
if(ptr[offset6] > cb)
2135
goto success_structured;
2136
else
2137
if(ptr[offset11] > cb)
2138
goto success_structured;
2139
else
2140
goto structured;
2141
else
2142
if(ptr[offset6] > cb)
2143
if(ptr[offset7] > cb)
2144
if(ptr[offset8] > cb)
2145
goto success_structured;
2146
else
2147
goto structured;
2148
else
2149
goto structured;
2150
else
2151
goto structured;
2152
else
2153
goto structured;
2154
else
2155
goto structured;
2156
else
2157
if(ptr[offset9] > cb)
2158
if(ptr[offset7] > cb)
2159
if(ptr[offset8] > cb)
2160
if(ptr[offset1] > cb)
2161
if(ptr[offset10] > cb)
2162
if(ptr[offset11] > cb)
2163
goto success_structured;
2164
else
2165
if(ptr[offset6] > cb)
2166
if(ptr[offset4] > cb)
2167
goto success_structured;
2168
else
2169
goto structured;
2170
else
2171
goto structured;
2172
else
2173
if(ptr[offset6] > cb)
2174
if(ptr[offset3] > cb)
2175
if(ptr[offset4] > cb)
2176
goto success_structured;
2177
else
2178
goto structured;
2179
else
2180
goto structured;
2181
else
2182
goto structured;
2183
else
2184
if(ptr[offset6] > cb)
2185
if(ptr[offset4] > cb)
2186
if(ptr[offset3] > cb)
2187
goto success_structured;
2188
else
2189
if(ptr[offset10] > cb)
2190
goto success_structured;
2191
else
2192
goto structured;
2193
else
2194
if(ptr[offset10] > cb)
2195
if(ptr[offset11] > cb)
2196
goto success_structured;
2197
else
2198
goto structured;
2199
else
2200
goto structured;
2201
else
2202
goto structured;
2203
else
2204
goto structured;
2205
else
2206
goto structured;
2207
else
2208
goto structured;
2209
else
2210
if(ptr[offset5] < c_b)
2211
if(ptr[offset9] > cb)
2212
if(ptr[offset3] < c_b)
2213
if(ptr[offset4] < c_b)
2214
if(ptr[offset11] > cb)
2215
if(ptr[offset1] > cb)
2216
if(ptr[offset8] > cb)
2217
if(ptr[offset10] > cb)
2218
if(ptr[offset2] > cb)
2219
goto success_structured;
2220
else
2221
if(ptr[offset7] > cb)
2222
goto success_structured;
2223
else
2224
goto structured;
2225
else
2226
goto structured;
2227
else
2228
if(ptr[offset6] < c_b)
2229
if(ptr[offset2] < c_b)
2230
if(ptr[offset7] < c_b)
2231
if(ptr[offset8] < c_b)
2232
goto success_structured;
2233
else
2234
goto structured;
2235
else
2236
goto structured;
2237
else
2238
goto structured;
2239
else
2240
goto structured;
2241
else
2242
if(ptr[offset6] > cb)
2243
if(ptr[offset7] > cb)
2244
if(ptr[offset8] > cb)
2245
if(ptr[offset10] > cb)
2246
goto success_structured;
2247
else
2248
goto structured;
2249
else
2250
goto structured;
2251
else
2252
goto structured;
2253
else
2254
if(ptr[offset6] < c_b)
2255
if(ptr[offset2] < c_b)
2256
if(ptr[offset7] < c_b)
2257
if(ptr[offset1] < c_b)
2258
goto success_structured;
2259
else
2260
if(ptr[offset8] < c_b)
2261
goto success_structured;
2262
else
2263
goto structured;
2264
else
2265
goto structured;
2266
else
2267
goto structured;
2268
else
2269
goto structured;
2270
else
2271
if(ptr[offset2] < c_b)
2272
if(ptr[offset7] < c_b)
2273
if(ptr[offset1] < c_b)
2274
if(ptr[offset6] < c_b)
2275
goto success_structured;
2276
else
2277
goto structured;
2278
else
2279
if(ptr[offset6] < c_b)
2280
if(ptr[offset8] < c_b)
2281
goto success_structured;
2282
else
2283
goto structured;
2284
else
2285
goto structured;
2286
else
2287
goto structured;
2288
else
2289
goto structured;
2290
else
2291
if(ptr[offset11] > cb)
2292
if(ptr[offset8] > cb)
2293
if(ptr[offset10] > cb)
2294
if(ptr[offset1] > cb)
2295
if(ptr[offset2] > cb)
2296
goto success_structured;
2297
else
2298
if(ptr[offset7] > cb)
2299
goto success_structured;
2300
else
2301
goto structured;
2302
else
2303
if(ptr[offset6] > cb)
2304
if(ptr[offset7] > cb)
2305
goto success_structured;
2306
else
2307
goto structured;
2308
else
2309
goto structured;
2310
else
2311
goto structured;
2312
else
2313
goto structured;
2314
else
2315
goto structured;
2316
else
2317
if(ptr[offset11] > cb)
2318
if(ptr[offset10] > cb)
2319
if(ptr[offset3] > cb)
2320
if(ptr[offset1] > cb)
2321
if(ptr[offset2] > cb)
2322
goto success_structured;
2323
else
2324
if(ptr[offset7] > cb)
2325
if(ptr[offset8] > cb)
2326
goto success_structured;
2327
else
2328
goto structured;
2329
else
2330
goto structured;
2331
else
2332
if(ptr[offset6] > cb)
2333
if(ptr[offset7] > cb)
2334
if(ptr[offset8] > cb)
2335
goto success_structured;
2336
else
2337
goto structured;
2338
else
2339
goto structured;
2340
else
2341
goto structured;
2342
else
2343
if(ptr[offset8] > cb)
2344
if(ptr[offset1] > cb)
2345
if(ptr[offset2] > cb)
2346
goto success_structured;
2347
else
2348
if(ptr[offset7] > cb)
2349
goto success_structured;
2350
else
2351
goto structured;
2352
else
2353
if(ptr[offset6] > cb)
2354
if(ptr[offset7] > cb)
2355
goto success_structured;
2356
else
2357
goto structured;
2358
else
2359
goto structured;
2360
else
2361
goto structured;
2362
else
2363
goto structured;
2364
else
2365
goto structured;
2366
else
2367
if(ptr[offset9] < c_b)
2368
if(ptr[offset2] > cb)
2369
if(ptr[offset1] > cb)
2370
if(ptr[offset4] > cb)
2371
if(ptr[offset10] > cb)
2372
if(ptr[offset3] > cb)
2373
if(ptr[offset11] > cb)
2374
goto success_structured;
2375
else
2376
goto structured;
2377
else
2378
goto structured;
2379
else
2380
if(ptr[offset6] < c_b)
2381
if(ptr[offset7] < c_b)
2382
if(ptr[offset8] < c_b)
2383
if(ptr[offset11] < c_b)
2384
if(ptr[offset10] < c_b)
2385
goto success_structured;
2386
else
2387
goto structured;
2388
else
2389
goto structured;
2390
else
2391
goto structured;
2392
else
2393
goto structured;
2394
else
2395
goto structured;
2396
else
2397
if(ptr[offset6] < c_b)
2398
if(ptr[offset7] < c_b)
2399
if(ptr[offset8] < c_b)
2400
if(ptr[offset10] < c_b)
2401
if(ptr[offset4] < c_b)
2402
goto success_structured;
2403
else
2404
if(ptr[offset11] < c_b)
2405
goto success_structured;
2406
else
2407
goto structured;
2408
else
2409
if(ptr[offset3] < c_b)
2410
if(ptr[offset4] < c_b)
2411
goto success_structured;
2412
else
2413
goto structured;
2414
else
2415
goto structured;
2416
else
2417
goto structured;
2418
else
2419
goto structured;
2420
else
2421
goto structured;
2422
else
2423
if(ptr[offset6] < c_b)
2424
if(ptr[offset7] < c_b)
2425
if(ptr[offset8] < c_b)
2426
if(ptr[offset4] < c_b)
2427
if(ptr[offset3] < c_b)
2428
goto success_structured;
2429
else
2430
if(ptr[offset10] < c_b)
2431
goto success_structured;
2432
else
2433
goto structured;
2434
else
2435
if(ptr[offset10] < c_b)
2436
if(ptr[offset11] < c_b)
2437
goto success_structured;
2438
else
2439
goto structured;
2440
else
2441
goto structured;
2442
else
2443
goto structured;
2444
else
2445
goto structured;
2446
else
2447
goto structured;
2448
else
2449
if(ptr[offset6] < c_b)
2450
if(ptr[offset7] < c_b)
2451
if(ptr[offset8] < c_b)
2452
if(ptr[offset4] < c_b)
2453
if(ptr[offset3] < c_b)
2454
goto success_structured;
2455
else
2456
if(ptr[offset10] < c_b)
2457
goto success_structured;
2458
else
2459
goto structured;
2460
else
2461
if(ptr[offset10] < c_b)
2462
if(ptr[offset11] < c_b)
2463
goto success_structured;
2464
else
2465
goto structured;
2466
else
2467
goto structured;
2468
else
2469
if(ptr[offset2] < c_b)
2470
if(ptr[offset1] < c_b)
2471
if(ptr[offset3] < c_b)
2472
if(ptr[offset4] < c_b)
2473
goto success_structured;
2474
else
2475
goto structured;
2476
else
2477
goto structured;
2478
else
2479
goto structured;
2480
else
2481
goto structured;
2482
else
2483
goto structured;
2484
else
2485
goto structured;
2486
else
2487
if(ptr[offset2] > cb)
2488
if(ptr[offset1] > cb)
2489
if(ptr[offset3] > cb)
2490
if(ptr[offset4] > cb)
2491
if(ptr[offset10] > cb)
2492
if(ptr[offset11] > cb)
2493
goto success_structured;
2494
else
2495
goto structured;
2496
else
2497
goto structured;
2498
else
2499
goto structured;
2500
else
2501
goto structured;
2502
else
2503
goto structured;
2504
else
2505
if(ptr[offset2] < c_b)
2506
if(ptr[offset3] < c_b)
2507
if(ptr[offset4] < c_b)
2508
if(ptr[offset7] < c_b)
2509
if(ptr[offset1] < c_b)
2510
if(ptr[offset6] < c_b)
2511
goto success_structured;
2512
else
2513
goto structured;
2514
else
2515
if(ptr[offset6] < c_b)
2516
if(ptr[offset8] < c_b)
2517
goto success_structured;
2518
else
2519
goto structured;
2520
else
2521
goto structured;
2522
else
2523
goto structured;
2524
else
2525
goto structured;
2526
else
2527
goto structured;
2528
else
2529
goto homogeneous;
2530
else
2531
if(ptr[offset2] > cb)
2532
if(ptr[offset10] > cb)
2533
if(ptr[offset11] > cb)
2534
if(ptr[offset9] > cb)
2535
if(ptr[offset1] > cb)
2536
if(ptr[offset3] > cb)
2537
goto success_structured;
2538
else
2539
if(ptr[offset8] > cb)
2540
goto success_structured;
2541
else
2542
goto structured;
2543
else
2544
if(ptr[offset6] > cb)
2545
if(ptr[offset7] > cb)
2546
if(ptr[offset8] > cb)
2547
goto success_structured;
2548
else
2549
goto structured;
2550
else
2551
goto structured;
2552
else
2553
goto structured;
2554
else
2555
if(ptr[offset1] > cb)
2556
if(ptr[offset3] > cb)
2557
if(ptr[offset4] > cb)
2558
goto success_structured;
2559
else
2560
goto structured;
2561
else
2562
goto structured;
2563
else
2564
goto structured;
2565
else
2566
goto structured;
2567
else
2568
goto structured;
2569
else
2570
if(ptr[offset9] > cb)
2571
if(ptr[offset7] > cb)
2572
if(ptr[offset8] > cb)
2573
if(ptr[offset10] > cb)
2574
if(ptr[offset11] > cb)
2575
if(ptr[offset1] > cb)
2576
goto success_structured;
2577
else
2578
if(ptr[offset6] > cb)
2579
goto success_structured;
2580
else
2581
goto structured;
2582
else
2583
goto structured;
2584
else
2585
goto structured;
2586
else
2587
goto structured;
2588
else
2589
goto structured;
2590
else
2591
goto structured;
2592
else if(ptr[offset0] < c_b)
2593
if(ptr[offset2] > cb)
2594
if(ptr[offset5] > cb)
2595
if(ptr[offset7] > cb)
2596
if(ptr[offset6] > cb)
2597
if(ptr[offset4] > cb)
2598
if(ptr[offset3] > cb)
2599
if(ptr[offset1] > cb)
2600
goto success_structured;
2601
else
2602
if(ptr[offset8] > cb)
2603
goto success_structured;
2604
else
2605
goto structured;
2606
else
2607
if(ptr[offset9] > cb)
2608
if(ptr[offset8] > cb)
2609
if(ptr[offset10] > cb)
2610
goto success_structured;
2611
else
2612
goto structured;
2613
else
2614
goto structured;
2615
else
2616
goto structured;
2617
else
2618
if(ptr[offset9] > cb)
2619
if(ptr[offset8] > cb)
2620
if(ptr[offset10] > cb)
2621
if(ptr[offset11] > cb)
2622
goto success_structured;
2623
else
2624
goto structured;
2625
else
2626
goto structured;
2627
else
2628
goto structured;
2629
else
2630
goto structured;
2631
else
2632
goto structured;
2633
else
2634
if(ptr[offset9] < c_b)
2635
if(ptr[offset8] < c_b)
2636
if(ptr[offset10] < c_b)
2637
if(ptr[offset11] < c_b)
2638
if(ptr[offset7] < c_b)
2639
if(ptr[offset1] < c_b)
2640
goto success_structured;
2641
else
2642
if(ptr[offset6] < c_b)
2643
goto success_structured;
2644
else
2645
goto structured;
2646
else
2647
goto structured;
2648
else
2649
goto structured;
2650
else
2651
goto structured;
2652
else
2653
goto structured;
2654
else
2655
goto structured;
2656
else
2657
if(ptr[offset9] < c_b)
2658
if(ptr[offset7] < c_b)
2659
if(ptr[offset8] < c_b)
2660
if(ptr[offset5] < c_b)
2661
if(ptr[offset1] < c_b)
2662
if(ptr[offset10] < c_b)
2663
if(ptr[offset11] < c_b)
2664
goto success_structured;
2665
else
2666
if(ptr[offset6] < c_b)
2667
if(ptr[offset4] < c_b)
2668
goto success_structured;
2669
else
2670
goto structured;
2671
else
2672
goto structured;
2673
else
2674
if(ptr[offset6] < c_b)
2675
if(ptr[offset3] < c_b)
2676
if(ptr[offset4] < c_b)
2677
goto success_structured;
2678
else
2679
goto structured;
2680
else
2681
goto structured;
2682
else
2683
goto structured;
2684
else
2685
if(ptr[offset6] < c_b)
2686
if(ptr[offset4] < c_b)
2687
if(ptr[offset3] < c_b)
2688
goto success_structured;
2689
else
2690
if(ptr[offset10] < c_b)
2691
goto success_structured;
2692
else
2693
goto structured;
2694
else
2695
if(ptr[offset10] < c_b)
2696
if(ptr[offset11] < c_b)
2697
goto success_structured;
2698
else
2699
goto structured;
2700
else
2701
goto structured;
2702
else
2703
goto structured;
2704
else
2705
if(ptr[offset10] < c_b)
2706
if(ptr[offset11] < c_b)
2707
if(ptr[offset1] < c_b)
2708
goto success_structured;
2709
else
2710
if(ptr[offset6] < c_b)
2711
goto success_structured;
2712
else
2713
goto structured;
2714
else
2715
goto structured;
2716
else
2717
goto structured;
2718
else
2719
goto structured;
2720
else
2721
goto structured;
2722
else
2723
goto structured;
2724
else
2725
if(ptr[offset2] < c_b)
2726
if(ptr[offset9] > cb)
2727
if(ptr[offset5] > cb)
2728
if(ptr[offset1] < c_b)
2729
if(ptr[offset4] < c_b)
2730
if(ptr[offset10] < c_b)
2731
if(ptr[offset3] < c_b)
2732
if(ptr[offset11] < c_b)
2733
goto success_structured;
2734
else
2735
goto structured;
2736
else
2737
goto structured;
2738
else
2739
if(ptr[offset6] > cb)
2740
if(ptr[offset7] > cb)
2741
if(ptr[offset8] > cb)
2742
if(ptr[offset11] > cb)
2743
if(ptr[offset10] > cb)
2744
goto success_structured;
2745
else
2746
goto structured;
2747
else
2748
goto structured;
2749
else
2750
goto structured;
2751
else
2752
goto structured;
2753
else
2754
goto structured;
2755
else
2756
if(ptr[offset6] > cb)
2757
if(ptr[offset7] > cb)
2758
if(ptr[offset8] > cb)
2759
if(ptr[offset10] > cb)
2760
if(ptr[offset4] > cb)
2761
goto success_structured;
2762
else
2763
if(ptr[offset11] > cb)
2764
goto success_structured;
2765
else
2766
goto structured;
2767
else
2768
if(ptr[offset3] > cb)
2769
if(ptr[offset4] > cb)
2770
goto success_structured;
2771
else
2772
goto structured;
2773
else
2774
goto structured;
2775
else
2776
goto structured;
2777
else
2778
goto structured;
2779
else
2780
goto structured;
2781
else
2782
if(ptr[offset6] > cb)
2783
if(ptr[offset7] > cb)
2784
if(ptr[offset8] > cb)
2785
if(ptr[offset4] > cb)
2786
if(ptr[offset3] > cb)
2787
goto success_structured;
2788
else
2789
if(ptr[offset10] > cb)
2790
goto success_structured;
2791
else
2792
goto structured;
2793
else
2794
if(ptr[offset10] > cb)
2795
if(ptr[offset11] > cb)
2796
goto success_structured;
2797
else
2798
goto structured;
2799
else
2800
goto structured;
2801
else
2802
goto structured;
2803
else
2804
goto structured;
2805
else
2806
goto structured;
2807
else
2808
if(ptr[offset3] < c_b)
2809
if(ptr[offset4] < c_b)
2810
if(ptr[offset5] < c_b)
2811
if(ptr[offset1] < c_b)
2812
if(ptr[offset6] < c_b)
2813
goto success_structured;
2814
else
2815
if(ptr[offset11] < c_b)
2816
goto success_structured;
2817
else
2818
goto structured;
2819
else
2820
if(ptr[offset6] < c_b)
2821
if(ptr[offset7] < c_b)
2822
if(ptr[offset8] < c_b)
2823
goto success_structured;
2824
else
2825
goto structured;
2826
else
2827
goto structured;
2828
else
2829
goto structured;
2830
else
2831
if(ptr[offset1] < c_b)
2832
if(ptr[offset10] < c_b)
2833
if(ptr[offset11] < c_b)
2834
goto success_structured;
2835
else
2836
goto structured;
2837
else
2838
goto structured;
2839
else
2840
goto structured;
2841
else
2842
goto structured;
2843
else
2844
goto structured;
2845
else
2846
if(ptr[offset9] < c_b)
2847
if(ptr[offset5] < c_b)
2848
if(ptr[offset1] < c_b)
2849
if(ptr[offset6] < c_b)
2850
if(ptr[offset3] < c_b)
2851
if(ptr[offset4] < c_b)
2852
goto success_structured;
2853
else
2854
if(ptr[offset10] < c_b)
2855
if(ptr[offset11] < c_b)
2856
goto success_structured;
2857
else
2858
goto structured;
2859
else
2860
goto structured;
2861
else
2862
if(ptr[offset8] < c_b)
2863
if(ptr[offset10] < c_b)
2864
if(ptr[offset11] < c_b)
2865
goto success_structured;
2866
else
2867
if(ptr[offset4] < c_b)
2868
if(ptr[offset7] < c_b)
2869
goto success_structured;
2870
else
2871
goto structured;
2872
else
2873
goto structured;
2874
else
2875
goto structured;
2876
else
2877
goto structured;
2878
else
2879
if(ptr[offset11] < c_b)
2880
if(ptr[offset3] < c_b)
2881
if(ptr[offset4] < c_b)
2882
goto success_structured;
2883
else
2884
if(ptr[offset10] < c_b)
2885
goto success_structured;
2886
else
2887
goto structured;
2888
else
2889
if(ptr[offset8] < c_b)
2890
if(ptr[offset10] < c_b)
2891
goto success_structured;
2892
else
2893
goto structured;
2894
else
2895
goto structured;
2896
else
2897
goto structured;
2898
else
2899
if(ptr[offset6] < c_b)
2900
if(ptr[offset7] < c_b)
2901
if(ptr[offset8] < c_b)
2902
if(ptr[offset4] < c_b)
2903
if(ptr[offset3] < c_b)
2904
goto success_structured;
2905
else
2906
if(ptr[offset10] < c_b)
2907
goto success_structured;
2908
else
2909
goto structured;
2910
else
2911
if(ptr[offset10] < c_b)
2912
if(ptr[offset11] < c_b)
2913
goto success_structured;
2914
else
2915
goto structured;
2916
else
2917
goto structured;
2918
else
2919
goto structured;
2920
else
2921
goto structured;
2922
else
2923
goto structured;
2924
else
2925
if(ptr[offset10] < c_b)
2926
if(ptr[offset11] < c_b)
2927
if(ptr[offset1] < c_b)
2928
if(ptr[offset3] < c_b)
2929
goto success_structured;
2930
else
2931
if(ptr[offset8] < c_b)
2932
goto success_structured;
2933
else
2934
goto structured;
2935
else
2936
if(ptr[offset6] < c_b)
2937
if(ptr[offset7] < c_b)
2938
if(ptr[offset8] < c_b)
2939
goto success_structured;
2940
else
2941
goto structured;
2942
else
2943
goto structured;
2944
else
2945
goto structured;
2946
else
2947
goto structured;
2948
else
2949
goto structured;
2950
else
2951
if(ptr[offset3] < c_b)
2952
if(ptr[offset4] < c_b)
2953
if(ptr[offset5] < c_b)
2954
if(ptr[offset1] < c_b)
2955
if(ptr[offset6] < c_b)
2956
goto success_structured;
2957
else
2958
if(ptr[offset11] < c_b)
2959
goto success_structured;
2960
else
2961
goto structured;
2962
else
2963
if(ptr[offset6] < c_b)
2964
if(ptr[offset7] < c_b)
2965
if(ptr[offset8] < c_b)
2966
goto success_structured;
2967
else
2968
goto structured;
2969
else
2970
goto structured;
2971
else
2972
goto structured;
2973
else
2974
if(ptr[offset1] < c_b)
2975
if(ptr[offset10] < c_b)
2976
if(ptr[offset11] < c_b)
2977
goto success_structured;
2978
else
2979
goto structured;
2980
else
2981
goto structured;
2982
else
2983
goto structured;
2984
else
2985
goto structured;
2986
else
2987
goto structured;
2988
else
2989
if(ptr[offset9] < c_b)
2990
if(ptr[offset7] < c_b)
2991
if(ptr[offset8] < c_b)
2992
if(ptr[offset5] < c_b)
2993
if(ptr[offset1] < c_b)
2994
if(ptr[offset10] < c_b)
2995
if(ptr[offset11] < c_b)
2996
goto success_structured;
2997
else
2998
if(ptr[offset6] < c_b)
2999
if(ptr[offset4] < c_b)
3000
goto success_structured;
3001
else
3002
goto structured;
3003
else
3004
goto structured;
3005
else
3006
if(ptr[offset6] < c_b)
3007
if(ptr[offset3] < c_b)
3008
if(ptr[offset4] < c_b)
3009
goto success_structured;
3010
else
3011
goto structured;
3012
else
3013
goto structured;
3014
else
3015
goto structured;
3016
else
3017
if(ptr[offset6] < c_b)
3018
if(ptr[offset4] < c_b)
3019
if(ptr[offset3] < c_b)
3020
goto success_structured;
3021
else
3022
if(ptr[offset10] < c_b)
3023
goto success_structured;
3024
else
3025
goto structured;
3026
else
3027
if(ptr[offset10] < c_b)
3028
if(ptr[offset11] < c_b)
3029
goto success_structured;
3030
else
3031
goto structured;
3032
else
3033
goto structured;
3034
else
3035
goto structured;
3036
else
3037
if(ptr[offset10] < c_b)
3038
if(ptr[offset11] < c_b)
3039
if(ptr[offset1] < c_b)
3040
goto success_structured;
3041
else
3042
if(ptr[offset6] < c_b)
3043
goto success_structured;
3044
else
3045
goto structured;
3046
else
3047
goto structured;
3048
else
3049
goto structured;
3050
else
3051
goto structured;
3052
else
3053
goto structured;
3054
else
3055
if(ptr[offset5] > cb)
3056
if(ptr[offset9] > cb)
3057
if(ptr[offset6] > cb)
3058
if(ptr[offset7] > cb)
3059
if(ptr[offset8] > cb)
3060
if(ptr[offset4] > cb)
3061
if(ptr[offset3] > cb)
3062
goto success_structured;
3063
else
3064
if(ptr[offset10] > cb)
3065
goto success_structured;
3066
else
3067
goto structured;
3068
else
3069
if(ptr[offset10] > cb)
3070
if(ptr[offset11] > cb)
3071
goto success_structured;
3072
else
3073
goto structured;
3074
else
3075
goto structured;
3076
else
3077
goto structured;
3078
else
3079
goto structured;
3080
else
3081
goto structured;
3082
else
3083
goto homogeneous;
3084
else
3085
goto structured;
3086
else
3087
if(ptr[offset5] > cb)
3088
if(ptr[offset9] > cb)
3089
if(ptr[offset6] > cb)
3090
if(ptr[offset7] > cb)
3091
if(ptr[offset4] > cb)
3092
if(ptr[offset3] > cb)
3093
if(ptr[offset8] > cb)
3094
goto success_structured;
3095
else
3096
if(ptr[offset1] > cb)
3097
if(ptr[offset2] > cb)
3098
goto success_structured;
3099
else
3100
goto structured;
3101
else
3102
goto structured;
3103
else
3104
if(ptr[offset8] > cb)
3105
if(ptr[offset10] > cb)
3106
goto success_structured;
3107
else
3108
goto structured;
3109
else
3110
goto structured;
3111
else
3112
if(ptr[offset11] > cb)
3113
if(ptr[offset8] > cb)
3114
if(ptr[offset10] > cb)
3115
goto success_structured;
3116
else
3117
goto structured;
3118
else
3119
goto structured;
3120
else
3121
goto structured;
3122
else
3123
goto structured;
3124
else
3125
goto structured;
3126
else
3127
if(ptr[offset2] > cb)
3128
if(ptr[offset3] > cb)
3129
if(ptr[offset4] > cb)
3130
if(ptr[offset7] > cb)
3131
if(ptr[offset1] > cb)
3132
if(ptr[offset6] > cb)
3133
goto success_structured;
3134
else
3135
goto structured;
3136
else
3137
if(ptr[offset6] > cb)
3138
if(ptr[offset8] > cb)
3139
goto success_structured;
3140
else
3141
goto structured;
3142
else
3143
goto structured;
3144
else
3145
goto structured;
3146
else
3147
goto structured;
3148
else
3149
goto structured;
3150
else
3151
goto structured;
3152
else
3153
if(ptr[offset5] < c_b)
3154
if(ptr[offset9] < c_b)
3155
if(ptr[offset6] < c_b)
3156
if(ptr[offset7] < c_b)
3157
if(ptr[offset4] < c_b)
3158
if(ptr[offset3] < c_b)
3159
if(ptr[offset8] < c_b)
3160
goto success_structured;
3161
else
3162
if(ptr[offset1] < c_b)
3163
if(ptr[offset2] < c_b)
3164
goto success_structured;
3165
else
3166
goto structured;
3167
else
3168
goto structured;
3169
else
3170
if(ptr[offset8] < c_b)
3171
if(ptr[offset10] < c_b)
3172
goto success_structured;
3173
else
3174
goto structured;
3175
else
3176
goto structured;
3177
else
3178
if(ptr[offset11] < c_b)
3179
if(ptr[offset8] < c_b)
3180
if(ptr[offset10] < c_b)
3181
goto success_structured;
3182
else
3183
goto structured;
3184
else
3185
goto structured;
3186
else
3187
goto structured;
3188
else
3189
goto structured;
3190
else
3191
goto structured;
3192
else
3193
if(ptr[offset2] < c_b)
3194
if(ptr[offset3] < c_b)
3195
if(ptr[offset4] < c_b)
3196
if(ptr[offset7] < c_b)
3197
if(ptr[offset1] < c_b)
3198
if(ptr[offset6] < c_b)
3199
goto success_structured;
3200
else
3201
goto structured;
3202
else
3203
if(ptr[offset6] < c_b)
3204
if(ptr[offset8] < c_b)
3205
goto success_structured;
3206
else
3207
goto structured;
3208
else
3209
goto structured;
3210
else
3211
goto structured;
3212
else
3213
goto structured;
3214
else
3215
goto structured;
3216
else
3217
goto structured;
3218
else
3219
goto homogeneous;
3220
}
3221
}
3222
success_homogeneous:
3223
if(total == nExpectedCorners)
3224
{
3225
if(nExpectedCorners == 0)
3226
{
3227
nExpectedCorners = 512;
3228
keypoints.reserve(nExpectedCorners);
3229
}
3230
else
3231
{
3232
nExpectedCorners *= 2;
3233
keypoints.reserve(nExpectedCorners);
3234
}
3235
}
3236
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
3237
total++;
3238
goto homogeneous;
3239
success_structured:
3240
if(total == nExpectedCorners)
3241
{
3242
if(nExpectedCorners == 0)
3243
{
3244
nExpectedCorners = 512;
3245
keypoints.reserve(nExpectedCorners);
3246
}
3247
else
3248
{
3249
nExpectedCorners *= 2;
3250
keypoints.reserve(nExpectedCorners);
3251
}
3252
}
3253
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
3254
total++;
3255
goto structured;
3256
}
3257
}
3258
}
3259
3260
3261
static void AGAST_7_12s(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
3262
{
3263
cv::Mat img;
3264
if(!_img.getMat().isContinuous())
3265
img = _img.getMat().clone();
3266
else
3267
img = _img.getMat();
3268
3269
size_t total = 0;
3270
int xsize = img.cols;
3271
int ysize = img.rows;
3272
size_t nExpectedCorners = keypoints.capacity();
3273
int x, y;
3274
int xsizeB=xsize - 3; //2, +1 due to faster test x>xsizeB
3275
int ysizeB=ysize - 2;
3276
int width;
3277
3278
keypoints.resize(0);
3279
3280
int pixel_7_12s_[16];
3281
makeAgastOffsets(pixel_7_12s_, (int)img.step, AgastFeatureDetector::AGAST_7_12s);
3282
3283
short offset0 = (short) pixel_7_12s_[0];
3284
short offset1 = (short) pixel_7_12s_[1];
3285
short offset2 = (short) pixel_7_12s_[2];
3286
short offset3 = (short) pixel_7_12s_[3];
3287
short offset4 = (short) pixel_7_12s_[4];
3288
short offset5 = (short) pixel_7_12s_[5];
3289
short offset6 = (short) pixel_7_12s_[6];
3290
short offset7 = (short) pixel_7_12s_[7];
3291
short offset8 = (short) pixel_7_12s_[8];
3292
short offset9 = (short) pixel_7_12s_[9];
3293
short offset10 = (short) pixel_7_12s_[10];
3294
short offset11 = (short) pixel_7_12s_[11];
3295
3296
width = xsize;
3297
3298
for(y = 2; y < ysizeB; y++)
3299
{
3300
x = 1;
3301
while(true)
3302
{
3303
homogeneous:
3304
{
3305
x++;
3306
if(x > xsizeB)
3307
break;
3308
else
3309
{
3310
const unsigned char* const ptr = img.ptr() + y*width + x;
3311
const int cb = *ptr + threshold;
3312
const int c_b = *ptr - threshold;
3313
if(ptr[offset0] > cb)
3314
if(ptr[offset2] > cb)
3315
if(ptr[offset5] > cb)
3316
if(ptr[offset9] > cb)
3317
if(ptr[offset7] > cb)
3318
if(ptr[offset1] > cb)
3319
if(ptr[offset6] > cb)
3320
if(ptr[offset3] > cb)
3321
if(ptr[offset4] > cb)
3322
goto success_structured;
3323
else
3324
if(ptr[offset10] > cb)
3325
if(ptr[offset11] > cb)
3326
goto success_structured;
3327
else
3328
goto structured;
3329
else
3330
goto homogeneous;
3331
else
3332
if(ptr[offset8] > cb)
3333
if(ptr[offset10] > cb)
3334
if(ptr[offset4] > cb)
3335
goto success_structured;
3336
else
3337
if(ptr[offset11] > cb)
3338
goto success_structured;
3339
else
3340
goto structured;
3341
else
3342
goto homogeneous;
3343
else
3344
goto homogeneous;
3345
else
3346
if(ptr[offset11] > cb)
3347
if(ptr[offset3] > cb)
3348
if(ptr[offset4] > cb)
3349
goto success_structured;
3350
else
3351
if(ptr[offset10] > cb)
3352
goto success_structured;
3353
else
3354
goto homogeneous;
3355
else
3356
if(ptr[offset8] > cb)
3357
if(ptr[offset10] > cb)
3358
goto success_structured;
3359
else
3360
goto homogeneous;
3361
else
3362
goto homogeneous;
3363
else
3364
goto homogeneous;
3365
else
3366
if(ptr[offset6] > cb)
3367
if(ptr[offset8] > cb)
3368
if(ptr[offset4] > cb)
3369
if(ptr[offset3] > cb)
3370
goto success_structured;
3371
else
3372
if(ptr[offset10] > cb)
3373
goto success_structured;
3374
else
3375
goto homogeneous;
3376
else
3377
if(ptr[offset10] > cb)
3378
if(ptr[offset11] > cb)
3379
goto success_structured;
3380
else
3381
goto homogeneous;
3382
else
3383
goto homogeneous;
3384
else
3385
goto homogeneous;
3386
else
3387
goto homogeneous;
3388
else
3389
if(ptr[offset1] > cb)
3390
if(ptr[offset11] > cb)
3391
if(ptr[offset3] > cb)
3392
if(ptr[offset4] > cb)
3393
goto success_homogeneous;
3394
else
3395
if(ptr[offset10] > cb)
3396
goto success_homogeneous;
3397
else
3398
goto homogeneous;
3399
else
3400
if(ptr[offset8] > cb)
3401
if(ptr[offset10] > cb)
3402
goto success_homogeneous;
3403
else
3404
goto homogeneous;
3405
else
3406
goto homogeneous;
3407
else
3408
if(ptr[offset6] > cb)
3409
if(ptr[offset3] > cb)
3410
if(ptr[offset4] > cb)
3411
goto success_homogeneous;
3412
else
3413
goto homogeneous;
3414
else
3415
goto homogeneous;
3416
else
3417
goto homogeneous;
3418
else
3419
goto homogeneous;
3420
else
3421
if(ptr[offset3] > cb)
3422
if(ptr[offset4] > cb)
3423
if(ptr[offset7] > cb)
3424
if(ptr[offset1] > cb)
3425
if(ptr[offset6] > cb)
3426
goto success_homogeneous;
3427
else
3428
if(ptr[offset11] > cb)
3429
goto success_homogeneous;
3430
else
3431
goto homogeneous;
3432
else
3433
if(ptr[offset6] > cb)
3434
if(ptr[offset8] > cb)
3435
goto success_homogeneous;
3436
else
3437
goto homogeneous;
3438
else
3439
goto homogeneous;
3440
else
3441
if(ptr[offset1] > cb)
3442
if(ptr[offset6] > cb)
3443
goto success_homogeneous;
3444
else
3445
if(ptr[offset11] > cb)
3446
goto success_homogeneous;
3447
else
3448
goto homogeneous;
3449
else
3450
goto homogeneous;
3451
else
3452
goto homogeneous;
3453
else
3454
goto homogeneous;
3455
else
3456
if(ptr[offset9] < c_b)
3457
if(ptr[offset7] < c_b)
3458
if(ptr[offset5] < c_b)
3459
if(ptr[offset1] > cb)
3460
if(ptr[offset4] > cb)
3461
if(ptr[offset10] > cb)
3462
if(ptr[offset3] > cb)
3463
if(ptr[offset11] > cb)
3464
goto success_structured;
3465
else
3466
goto structured;
3467
else
3468
goto homogeneous;
3469
else
3470
if(ptr[offset6] < c_b)
3471
if(ptr[offset8] < c_b)
3472
if(ptr[offset11] < c_b)
3473
if(ptr[offset10] < c_b)
3474
goto success_structured;
3475
else
3476
goto structured;
3477
else
3478
goto structured;
3479
else
3480
goto homogeneous;
3481
else
3482
goto homogeneous;
3483
else
3484
if(ptr[offset6] < c_b)
3485
if(ptr[offset8] < c_b)
3486
if(ptr[offset10] < c_b)
3487
if(ptr[offset4] < c_b)
3488
goto success_structured;
3489
else
3490
if(ptr[offset11] < c_b)
3491
goto success_structured;
3492
else
3493
goto structured;
3494
else
3495
if(ptr[offset3] < c_b)
3496
if(ptr[offset4] < c_b)
3497
goto success_structured;
3498
else
3499
goto structured;
3500
else
3501
goto homogeneous;
3502
else
3503
goto homogeneous;
3504
else
3505
goto homogeneous;
3506
else
3507
if(ptr[offset6] < c_b)
3508
if(ptr[offset8] < c_b)
3509
if(ptr[offset4] < c_b)
3510
if(ptr[offset3] < c_b)
3511
goto success_structured;
3512
else
3513
if(ptr[offset10] < c_b)
3514
goto success_structured;
3515
else
3516
goto homogeneous;
3517
else
3518
if(ptr[offset10] < c_b)
3519
if(ptr[offset11] < c_b)
3520
goto success_structured;
3521
else
3522
goto homogeneous;
3523
else
3524
goto homogeneous;
3525
else
3526
goto homogeneous;
3527
else
3528
goto homogeneous;
3529
else
3530
if(ptr[offset1] > cb)
3531
if(ptr[offset3] > cb)
3532
if(ptr[offset4] > cb)
3533
if(ptr[offset10] > cb)
3534
if(ptr[offset11] > cb)
3535
goto success_structured;
3536
else
3537
goto homogeneous;
3538
else
3539
goto homogeneous;
3540
else
3541
goto homogeneous;
3542
else
3543
goto homogeneous;
3544
else
3545
goto homogeneous;
3546
else
3547
if(ptr[offset1] > cb)
3548
if(ptr[offset3] > cb)
3549
if(ptr[offset4] > cb)
3550
if(ptr[offset10] > cb)
3551
if(ptr[offset11] > cb)
3552
goto success_homogeneous;
3553
else
3554
goto homogeneous;
3555
else
3556
goto homogeneous;
3557
else
3558
goto homogeneous;
3559
else
3560
goto homogeneous;
3561
else
3562
goto homogeneous;
3563
else
3564
if(ptr[offset10] > cb)
3565
if(ptr[offset11] > cb)
3566
if(ptr[offset9] > cb)
3567
if(ptr[offset7] > cb)
3568
if(ptr[offset1] > cb)
3569
if(ptr[offset3] > cb)
3570
goto success_homogeneous;
3571
else
3572
if(ptr[offset8] > cb)
3573
goto success_homogeneous;
3574
else
3575
goto homogeneous;
3576
else
3577
if(ptr[offset6] > cb)
3578
if(ptr[offset8] > cb)
3579
goto success_homogeneous;
3580
else
3581
goto homogeneous;
3582
else
3583
goto homogeneous;
3584
else
3585
if(ptr[offset1] > cb)
3586
if(ptr[offset3] > cb)
3587
goto success_homogeneous;
3588
else
3589
if(ptr[offset8] > cb)
3590
goto success_homogeneous;
3591
else
3592
goto homogeneous;
3593
else
3594
goto homogeneous;
3595
else
3596
if(ptr[offset1] > cb)
3597
if(ptr[offset3] > cb)
3598
if(ptr[offset4] > cb)
3599
goto success_homogeneous;
3600
else
3601
goto homogeneous;
3602
else
3603
goto homogeneous;
3604
else
3605
goto homogeneous;
3606
else
3607
goto homogeneous;
3608
else
3609
goto homogeneous;
3610
else
3611
if(ptr[offset7] > cb)
3612
if(ptr[offset9] > cb)
3613
if(ptr[offset8] > cb)
3614
if(ptr[offset5] > cb)
3615
if(ptr[offset1] > cb)
3616
if(ptr[offset10] > cb)
3617
if(ptr[offset11] > cb)
3618
goto success_homogeneous;
3619
else
3620
if(ptr[offset6] > cb)
3621
if(ptr[offset4] > cb)
3622
goto success_structured;
3623
else
3624
goto homogeneous;
3625
else
3626
goto homogeneous;
3627
else
3628
if(ptr[offset6] > cb)
3629
if(ptr[offset3] > cb)
3630
if(ptr[offset4] > cb)
3631
goto success_structured;
3632
else
3633
goto homogeneous;
3634
else
3635
goto homogeneous;
3636
else
3637
goto homogeneous;
3638
else
3639
if(ptr[offset6] > cb)
3640
if(ptr[offset4] > cb)
3641
if(ptr[offset3] > cb)
3642
goto success_homogeneous;
3643
else
3644
if(ptr[offset10] > cb)
3645
goto success_homogeneous;
3646
else
3647
goto homogeneous;
3648
else
3649
if(ptr[offset10] > cb)
3650
if(ptr[offset11] > cb)
3651
goto success_homogeneous;
3652
else
3653
goto homogeneous;
3654
else
3655
goto homogeneous;
3656
else
3657
goto homogeneous;
3658
else
3659
if(ptr[offset10] > cb)
3660
if(ptr[offset11] > cb)
3661
if(ptr[offset1] > cb)
3662
goto success_homogeneous;
3663
else
3664
if(ptr[offset6] > cb)
3665
goto success_homogeneous;
3666
else
3667
goto homogeneous;
3668
else
3669
goto homogeneous;
3670
else
3671
goto homogeneous;
3672
else
3673
goto homogeneous;
3674
else
3675
goto homogeneous;
3676
else
3677
if(ptr[offset7] < c_b)
3678
if(ptr[offset5] < c_b)
3679
if(ptr[offset2] < c_b)
3680
if(ptr[offset6] < c_b)
3681
if(ptr[offset4] < c_b)
3682
if(ptr[offset3] < c_b)
3683
if(ptr[offset1] < c_b)
3684
goto success_homogeneous;
3685
else
3686
if(ptr[offset8] < c_b)
3687
goto success_homogeneous;
3688
else
3689
goto homogeneous;
3690
else
3691
if(ptr[offset9] < c_b)
3692
if(ptr[offset8] < c_b)
3693
if(ptr[offset10] < c_b)
3694
goto success_structured;
3695
else
3696
goto homogeneous;
3697
else
3698
goto homogeneous;
3699
else
3700
goto homogeneous;
3701
else
3702
if(ptr[offset9] < c_b)
3703
if(ptr[offset8] < c_b)
3704
if(ptr[offset10] < c_b)
3705
if(ptr[offset11] < c_b)
3706
goto success_structured;
3707
else
3708
goto homogeneous;
3709
else
3710
goto homogeneous;
3711
else
3712
goto homogeneous;
3713
else
3714
goto homogeneous;
3715
else
3716
goto homogeneous;
3717
else
3718
if(ptr[offset9] < c_b)
3719
if(ptr[offset6] < c_b)
3720
if(ptr[offset8] < c_b)
3721
if(ptr[offset4] < c_b)
3722
if(ptr[offset3] < c_b)
3723
goto success_homogeneous;
3724
else
3725
if(ptr[offset10] < c_b)
3726
goto success_homogeneous;
3727
else
3728
goto homogeneous;
3729
else
3730
if(ptr[offset10] < c_b)
3731
if(ptr[offset11] < c_b)
3732
goto success_homogeneous;
3733
else
3734
goto homogeneous;
3735
else
3736
goto homogeneous;
3737
else
3738
goto homogeneous;
3739
else
3740
goto homogeneous;
3741
else
3742
goto homogeneous;
3743
else
3744
goto homogeneous;
3745
else
3746
goto homogeneous;
3747
else if(ptr[offset0] < c_b)
3748
if(ptr[offset2] < c_b)
3749
if(ptr[offset9] < c_b)
3750
if(ptr[offset5] < c_b)
3751
if(ptr[offset7] < c_b)
3752
if(ptr[offset1] < c_b)
3753
if(ptr[offset6] < c_b)
3754
if(ptr[offset3] < c_b)
3755
if(ptr[offset4] < c_b)
3756
goto success_structured;
3757
else
3758
if(ptr[offset10] < c_b)
3759
if(ptr[offset11] < c_b)
3760
goto success_structured;
3761
else
3762
goto structured;
3763
else
3764
goto homogeneous;
3765
else
3766
if(ptr[offset8] < c_b)
3767
if(ptr[offset10] < c_b)
3768
if(ptr[offset4] < c_b)
3769
goto success_structured;
3770
else
3771
if(ptr[offset11] < c_b)
3772
goto success_structured;
3773
else
3774
goto structured;
3775
else
3776
goto homogeneous;
3777
else
3778
goto homogeneous;
3779
else
3780
if(ptr[offset11] < c_b)
3781
if(ptr[offset3] < c_b)
3782
if(ptr[offset4] < c_b)
3783
goto success_structured;
3784
else
3785
if(ptr[offset10] < c_b)
3786
goto success_structured;
3787
else
3788
goto homogeneous;
3789
else
3790
if(ptr[offset8] < c_b)
3791
if(ptr[offset10] < c_b)
3792
goto success_structured;
3793
else
3794
goto homogeneous;
3795
else
3796
goto homogeneous;
3797
else
3798
goto homogeneous;
3799
else
3800
if(ptr[offset6] < c_b)
3801
if(ptr[offset8] < c_b)
3802
if(ptr[offset4] < c_b)
3803
if(ptr[offset3] < c_b)
3804
goto success_structured;
3805
else
3806
if(ptr[offset10] < c_b)
3807
goto success_structured;
3808
else
3809
goto homogeneous;
3810
else
3811
if(ptr[offset10] < c_b)
3812
if(ptr[offset11] < c_b)
3813
goto success_structured;
3814
else
3815
goto homogeneous;
3816
else
3817
goto homogeneous;
3818
else
3819
goto homogeneous;
3820
else
3821
goto homogeneous;
3822
else
3823
if(ptr[offset1] < c_b)
3824
if(ptr[offset11] < c_b)
3825
if(ptr[offset3] < c_b)
3826
if(ptr[offset4] < c_b)
3827
goto success_homogeneous;
3828
else
3829
if(ptr[offset10] < c_b)
3830
goto success_homogeneous;
3831
else
3832
goto homogeneous;
3833
else
3834
if(ptr[offset8] < c_b)
3835
if(ptr[offset10] < c_b)
3836
goto success_homogeneous;
3837
else
3838
goto homogeneous;
3839
else
3840
goto homogeneous;
3841
else
3842
if(ptr[offset6] < c_b)
3843
if(ptr[offset3] < c_b)
3844
if(ptr[offset4] < c_b)
3845
goto success_homogeneous;
3846
else
3847
goto homogeneous;
3848
else
3849
goto homogeneous;
3850
else
3851
goto homogeneous;
3852
else
3853
goto homogeneous;
3854
else
3855
if(ptr[offset10] < c_b)
3856
if(ptr[offset11] < c_b)
3857
if(ptr[offset7] < c_b)
3858
if(ptr[offset1] < c_b)
3859
if(ptr[offset3] < c_b)
3860
goto success_homogeneous;
3861
else
3862
if(ptr[offset8] < c_b)
3863
goto success_homogeneous;
3864
else
3865
goto homogeneous;
3866
else
3867
if(ptr[offset6] < c_b)
3868
if(ptr[offset8] < c_b)
3869
goto success_homogeneous;
3870
else
3871
goto homogeneous;
3872
else
3873
goto homogeneous;
3874
else
3875
if(ptr[offset1] < c_b)
3876
if(ptr[offset3] < c_b)
3877
goto success_homogeneous;
3878
else
3879
if(ptr[offset8] < c_b)
3880
goto success_homogeneous;
3881
else
3882
goto homogeneous;
3883
else
3884
goto homogeneous;
3885
else
3886
goto homogeneous;
3887
else
3888
goto homogeneous;
3889
else
3890
if(ptr[offset9] > cb)
3891
if(ptr[offset5] > cb)
3892
if(ptr[offset7] > cb)
3893
if(ptr[offset1] < c_b)
3894
if(ptr[offset4] < c_b)
3895
if(ptr[offset10] < c_b)
3896
if(ptr[offset3] < c_b)
3897
if(ptr[offset11] < c_b)
3898
goto success_structured;
3899
else
3900
goto structured;
3901
else
3902
goto homogeneous;
3903
else
3904
if(ptr[offset6] > cb)
3905
if(ptr[offset8] > cb)
3906
if(ptr[offset11] > cb)
3907
if(ptr[offset10] > cb)
3908
goto success_structured;
3909
else
3910
goto structured;
3911
else
3912
goto structured;
3913
else
3914
goto homogeneous;
3915
else
3916
goto homogeneous;
3917
else
3918
if(ptr[offset6] > cb)
3919
if(ptr[offset8] > cb)
3920
if(ptr[offset10] > cb)
3921
if(ptr[offset4] > cb)
3922
goto success_structured;
3923
else
3924
if(ptr[offset11] > cb)
3925
goto success_structured;
3926
else
3927
goto structured;
3928
else
3929
if(ptr[offset3] > cb)
3930
if(ptr[offset4] > cb)
3931
goto success_structured;
3932
else
3933
goto structured;
3934
else
3935
goto homogeneous;
3936
else
3937
goto homogeneous;
3938
else
3939
goto homogeneous;
3940
else
3941
if(ptr[offset6] > cb)
3942
if(ptr[offset8] > cb)
3943
if(ptr[offset4] > cb)
3944
if(ptr[offset3] > cb)
3945
goto success_structured;
3946
else
3947
if(ptr[offset10] > cb)
3948
goto success_structured;
3949
else
3950
goto homogeneous;
3951
else
3952
if(ptr[offset10] > cb)
3953
if(ptr[offset11] > cb)
3954
goto success_structured;
3955
else
3956
goto homogeneous;
3957
else
3958
goto homogeneous;
3959
else
3960
goto homogeneous;
3961
else
3962
goto homogeneous;
3963
else
3964
if(ptr[offset1] < c_b)
3965
if(ptr[offset3] < c_b)
3966
if(ptr[offset4] < c_b)
3967
if(ptr[offset10] < c_b)
3968
if(ptr[offset11] < c_b)
3969
goto success_structured;
3970
else
3971
goto homogeneous;
3972
else
3973
goto homogeneous;
3974
else
3975
goto homogeneous;
3976
else
3977
goto homogeneous;
3978
else
3979
goto homogeneous;
3980
else
3981
if(ptr[offset3] < c_b)
3982
if(ptr[offset4] < c_b)
3983
if(ptr[offset5] < c_b)
3984
if(ptr[offset7] < c_b)
3985
if(ptr[offset1] < c_b)
3986
if(ptr[offset6] < c_b)
3987
goto success_structured;
3988
else
3989
if(ptr[offset11] < c_b)
3990
goto success_structured;
3991
else
3992
goto homogeneous;
3993
else
3994
if(ptr[offset6] < c_b)
3995
if(ptr[offset8] < c_b)
3996
goto success_structured;
3997
else
3998
goto homogeneous;
3999
else
4000
goto homogeneous;
4001
else
4002
if(ptr[offset1] < c_b)
4003
if(ptr[offset6] < c_b)
4004
goto success_homogeneous;
4005
else
4006
if(ptr[offset11] < c_b)
4007
goto success_homogeneous;
4008
else
4009
goto homogeneous;
4010
else
4011
goto homogeneous;
4012
else
4013
if(ptr[offset1] < c_b)
4014
if(ptr[offset10] < c_b)
4015
if(ptr[offset11] < c_b)
4016
goto success_homogeneous;
4017
else
4018
goto homogeneous;
4019
else
4020
goto homogeneous;
4021
else
4022
goto homogeneous;
4023
else
4024
goto homogeneous;
4025
else
4026
goto homogeneous;
4027
else
4028
if(ptr[offset3] < c_b)
4029
if(ptr[offset4] < c_b)
4030
if(ptr[offset5] < c_b)
4031
if(ptr[offset7] < c_b)
4032
if(ptr[offset1] < c_b)
4033
if(ptr[offset6] < c_b)
4034
goto success_homogeneous;
4035
else
4036
if(ptr[offset11] < c_b)
4037
goto success_homogeneous;
4038
else
4039
goto homogeneous;
4040
else
4041
if(ptr[offset6] < c_b)
4042
if(ptr[offset8] < c_b)
4043
goto success_homogeneous;
4044
else
4045
goto homogeneous;
4046
else
4047
goto homogeneous;
4048
else
4049
if(ptr[offset1] < c_b)
4050
if(ptr[offset6] < c_b)
4051
goto success_homogeneous;
4052
else
4053
if(ptr[offset11] < c_b)
4054
goto success_homogeneous;
4055
else
4056
goto homogeneous;
4057
else
4058
goto homogeneous;
4059
else
4060
if(ptr[offset1] < c_b)
4061
if(ptr[offset10] < c_b)
4062
if(ptr[offset11] < c_b)
4063
goto success_homogeneous;
4064
else
4065
goto homogeneous;
4066
else
4067
goto homogeneous;
4068
else
4069
goto homogeneous;
4070
else
4071
goto homogeneous;
4072
else
4073
goto homogeneous;
4074
else
4075
if(ptr[offset7] > cb)
4076
if(ptr[offset5] > cb)
4077
if(ptr[offset2] > cb)
4078
if(ptr[offset6] > cb)
4079
if(ptr[offset4] > cb)
4080
if(ptr[offset3] > cb)
4081
if(ptr[offset1] > cb)
4082
goto success_homogeneous;
4083
else
4084
if(ptr[offset8] > cb)
4085
goto success_homogeneous;
4086
else
4087
goto homogeneous;
4088
else
4089
if(ptr[offset9] > cb)
4090
if(ptr[offset8] > cb)
4091
if(ptr[offset10] > cb)
4092
goto success_structured;
4093
else
4094
goto homogeneous;
4095
else
4096
goto homogeneous;
4097
else
4098
goto homogeneous;
4099
else
4100
if(ptr[offset9] > cb)
4101
if(ptr[offset8] > cb)
4102
if(ptr[offset10] > cb)
4103
if(ptr[offset11] > cb)
4104
goto success_structured;
4105
else
4106
goto homogeneous;
4107
else
4108
goto homogeneous;
4109
else
4110
goto homogeneous;
4111
else
4112
goto homogeneous;
4113
else
4114
goto homogeneous;
4115
else
4116
if(ptr[offset9] > cb)
4117
if(ptr[offset6] > cb)
4118
if(ptr[offset8] > cb)
4119
if(ptr[offset4] > cb)
4120
if(ptr[offset3] > cb)
4121
goto success_homogeneous;
4122
else
4123
if(ptr[offset10] > cb)
4124
goto success_homogeneous;
4125
else
4126
goto homogeneous;
4127
else
4128
if(ptr[offset10] > cb)
4129
if(ptr[offset11] > cb)
4130
goto success_homogeneous;
4131
else
4132
goto homogeneous;
4133
else
4134
goto homogeneous;
4135
else
4136
goto homogeneous;
4137
else
4138
goto homogeneous;
4139
else
4140
goto homogeneous;
4141
else
4142
goto homogeneous;
4143
else
4144
if(ptr[offset7] < c_b)
4145
if(ptr[offset9] < c_b)
4146
if(ptr[offset8] < c_b)
4147
if(ptr[offset5] < c_b)
4148
if(ptr[offset1] < c_b)
4149
if(ptr[offset10] < c_b)
4150
if(ptr[offset11] < c_b)
4151
goto success_homogeneous;
4152
else
4153
if(ptr[offset6] < c_b)
4154
if(ptr[offset4] < c_b)
4155
goto success_structured;
4156
else
4157
goto homogeneous;
4158
else
4159
goto homogeneous;
4160
else
4161
if(ptr[offset6] < c_b)
4162
if(ptr[offset3] < c_b)
4163
if(ptr[offset4] < c_b)
4164
goto success_structured;
4165
else
4166
goto homogeneous;
4167
else
4168
goto homogeneous;
4169
else
4170
goto homogeneous;
4171
else
4172
if(ptr[offset6] < c_b)
4173
if(ptr[offset4] < c_b)
4174
if(ptr[offset3] < c_b)
4175
goto success_homogeneous;
4176
else
4177
if(ptr[offset10] < c_b)
4178
goto success_homogeneous;
4179
else
4180
goto homogeneous;
4181
else
4182
if(ptr[offset10] < c_b)
4183
if(ptr[offset11] < c_b)
4184
goto success_homogeneous;
4185
else
4186
goto homogeneous;
4187
else
4188
goto homogeneous;
4189
else
4190
goto homogeneous;
4191
else
4192
if(ptr[offset10] < c_b)
4193
if(ptr[offset11] < c_b)
4194
if(ptr[offset1] < c_b)
4195
goto success_homogeneous;
4196
else
4197
if(ptr[offset6] < c_b)
4198
goto success_homogeneous;
4199
else
4200
goto homogeneous;
4201
else
4202
goto homogeneous;
4203
else
4204
goto homogeneous;
4205
else
4206
goto homogeneous;
4207
else
4208
goto homogeneous;
4209
else
4210
goto homogeneous;
4211
else
4212
if(ptr[offset5] > cb)
4213
if(ptr[offset7] > cb)
4214
if(ptr[offset9] > cb)
4215
if(ptr[offset6] > cb)
4216
if(ptr[offset4] > cb)
4217
if(ptr[offset3] > cb)
4218
if(ptr[offset8] > cb)
4219
goto success_homogeneous;
4220
else
4221
if(ptr[offset1] > cb)
4222
if(ptr[offset2] > cb)
4223
goto success_homogeneous;
4224
else
4225
goto homogeneous;
4226
else
4227
goto homogeneous;
4228
else
4229
if(ptr[offset8] > cb)
4230
if(ptr[offset10] > cb)
4231
goto success_homogeneous;
4232
else
4233
goto homogeneous;
4234
else
4235
goto homogeneous;
4236
else
4237
if(ptr[offset11] > cb)
4238
if(ptr[offset8] > cb)
4239
if(ptr[offset10] > cb)
4240
goto success_homogeneous;
4241
else
4242
goto homogeneous;
4243
else
4244
goto homogeneous;
4245
else
4246
goto homogeneous;
4247
else
4248
goto homogeneous;
4249
else
4250
if(ptr[offset2] > cb)
4251
if(ptr[offset3] > cb)
4252
if(ptr[offset4] > cb)
4253
if(ptr[offset1] > cb)
4254
if(ptr[offset6] > cb)
4255
goto success_homogeneous;
4256
else
4257
goto homogeneous;
4258
else
4259
if(ptr[offset6] > cb)
4260
if(ptr[offset8] > cb)
4261
goto success_homogeneous;
4262
else
4263
goto homogeneous;
4264
else
4265
goto homogeneous;
4266
else
4267
goto homogeneous;
4268
else
4269
goto homogeneous;
4270
else
4271
goto homogeneous;
4272
else
4273
goto homogeneous;
4274
else
4275
if(ptr[offset5] < c_b)
4276
if(ptr[offset7] < c_b)
4277
if(ptr[offset9] < c_b)
4278
if(ptr[offset6] < c_b)
4279
if(ptr[offset4] < c_b)
4280
if(ptr[offset3] < c_b)
4281
if(ptr[offset8] < c_b)
4282
goto success_homogeneous;
4283
else
4284
if(ptr[offset1] < c_b)
4285
if(ptr[offset2] < c_b)
4286
goto success_homogeneous;
4287
else
4288
goto homogeneous;
4289
else
4290
goto homogeneous;
4291
else
4292
if(ptr[offset8] < c_b)
4293
if(ptr[offset10] < c_b)
4294
goto success_homogeneous;
4295
else
4296
goto homogeneous;
4297
else
4298
goto homogeneous;
4299
else
4300
if(ptr[offset11] < c_b)
4301
if(ptr[offset8] < c_b)
4302
if(ptr[offset10] < c_b)
4303
goto success_homogeneous;
4304
else
4305
goto homogeneous;
4306
else
4307
goto homogeneous;
4308
else
4309
goto homogeneous;
4310
else
4311
goto homogeneous;
4312
else
4313
if(ptr[offset2] < c_b)
4314
if(ptr[offset3] < c_b)
4315
if(ptr[offset4] < c_b)
4316
if(ptr[offset1] < c_b)
4317
if(ptr[offset6] < c_b)
4318
goto success_homogeneous;
4319
else
4320
goto homogeneous;
4321
else
4322
if(ptr[offset6] < c_b)
4323
if(ptr[offset8] < c_b)
4324
goto success_homogeneous;
4325
else
4326
goto homogeneous;
4327
else
4328
goto homogeneous;
4329
else
4330
goto homogeneous;
4331
else
4332
goto homogeneous;
4333
else
4334
goto homogeneous;
4335
else
4336
goto homogeneous;
4337
else
4338
goto homogeneous;
4339
}
4340
}
4341
structured:
4342
{
4343
x++;
4344
if(x > xsizeB)
4345
break;
4346
else
4347
{
4348
const unsigned char* const ptr = img.ptr() + y*width + x;
4349
const int cb = *ptr + threshold;
4350
const int c_b = *ptr - threshold;
4351
if(ptr[offset0] > cb)
4352
if(ptr[offset2] > cb)
4353
if(ptr[offset5] > cb)
4354
if(ptr[offset9] > cb)
4355
if(ptr[offset7] > cb)
4356
if(ptr[offset1] > cb)
4357
if(ptr[offset6] > cb)
4358
if(ptr[offset3] > cb)
4359
if(ptr[offset4] > cb)
4360
goto success_structured;
4361
else
4362
if(ptr[offset10] > cb)
4363
if(ptr[offset11] > cb)
4364
goto success_structured;
4365
else
4366
goto structured;
4367
else
4368
goto structured;
4369
else
4370
if(ptr[offset8] > cb)
4371
if(ptr[offset10] > cb)
4372
if(ptr[offset4] > cb)
4373
goto success_structured;
4374
else
4375
if(ptr[offset11] > cb)
4376
goto success_structured;
4377
else
4378
goto structured;
4379
else
4380
goto structured;
4381
else
4382
goto structured;
4383
else
4384
if(ptr[offset11] > cb)
4385
if(ptr[offset3] > cb)
4386
if(ptr[offset4] > cb)
4387
goto success_structured;
4388
else
4389
if(ptr[offset10] > cb)
4390
goto success_structured;
4391
else
4392
goto structured;
4393
else
4394
if(ptr[offset8] > cb)
4395
if(ptr[offset10] > cb)
4396
goto success_structured;
4397
else
4398
goto structured;
4399
else
4400
goto structured;
4401
else
4402
goto structured;
4403
else
4404
if(ptr[offset6] > cb)
4405
if(ptr[offset8] > cb)
4406
if(ptr[offset4] > cb)
4407
if(ptr[offset3] > cb)
4408
goto success_structured;
4409
else
4410
if(ptr[offset10] > cb)
4411
goto success_structured;
4412
else
4413
goto structured;
4414
else
4415
if(ptr[offset10] > cb)
4416
if(ptr[offset11] > cb)
4417
goto success_structured;
4418
else
4419
goto structured;
4420
else
4421
goto structured;
4422
else
4423
goto structured;
4424
else
4425
goto structured;
4426
else
4427
if(ptr[offset1] > cb)
4428
if(ptr[offset11] > cb)
4429
if(ptr[offset3] > cb)
4430
if(ptr[offset4] > cb)
4431
goto success_structured;
4432
else
4433
if(ptr[offset10] > cb)
4434
goto success_structured;
4435
else
4436
goto structured;
4437
else
4438
if(ptr[offset8] > cb)
4439
if(ptr[offset10] > cb)
4440
goto success_structured;
4441
else
4442
goto structured;
4443
else
4444
goto structured;
4445
else
4446
if(ptr[offset6] > cb)
4447
if(ptr[offset3] > cb)
4448
if(ptr[offset4] > cb)
4449
goto success_structured;
4450
else
4451
goto structured;
4452
else
4453
goto structured;
4454
else
4455
goto structured;
4456
else
4457
goto structured;
4458
else
4459
if(ptr[offset3] > cb)
4460
if(ptr[offset4] > cb)
4461
if(ptr[offset7] > cb)
4462
if(ptr[offset1] > cb)
4463
if(ptr[offset6] > cb)
4464
goto success_structured;
4465
else
4466
if(ptr[offset11] > cb)
4467
goto success_structured;
4468
else
4469
goto structured;
4470
else
4471
if(ptr[offset6] > cb)
4472
if(ptr[offset8] > cb)
4473
goto success_structured;
4474
else
4475
goto structured;
4476
else
4477
goto structured;
4478
else
4479
if(ptr[offset1] > cb)
4480
if(ptr[offset6] > cb)
4481
goto success_structured;
4482
else
4483
if(ptr[offset11] > cb)
4484
goto success_structured;
4485
else
4486
goto structured;
4487
else
4488
goto structured;
4489
else
4490
goto structured;
4491
else
4492
goto structured;
4493
else
4494
if(ptr[offset7] < c_b)
4495
if(ptr[offset9] < c_b)
4496
if(ptr[offset5] < c_b)
4497
if(ptr[offset1] > cb)
4498
if(ptr[offset4] > cb)
4499
if(ptr[offset10] > cb)
4500
if(ptr[offset3] > cb)
4501
if(ptr[offset11] > cb)
4502
goto success_structured;
4503
else
4504
goto structured;
4505
else
4506
goto structured;
4507
else
4508
if(ptr[offset6] < c_b)
4509
if(ptr[offset8] < c_b)
4510
if(ptr[offset11] < c_b)
4511
if(ptr[offset10] < c_b)
4512
goto success_structured;
4513
else
4514
goto structured;
4515
else
4516
goto structured;
4517
else
4518
goto structured;
4519
else
4520
goto structured;
4521
else
4522
if(ptr[offset6] < c_b)
4523
if(ptr[offset8] < c_b)
4524
if(ptr[offset10] < c_b)
4525
if(ptr[offset4] < c_b)
4526
goto success_structured;
4527
else
4528
if(ptr[offset11] < c_b)
4529
goto success_structured;
4530
else
4531
goto structured;
4532
else
4533
if(ptr[offset3] < c_b)
4534
if(ptr[offset4] < c_b)
4535
goto success_structured;
4536
else
4537
goto structured;
4538
else
4539
goto structured;
4540
else
4541
goto structured;
4542
else
4543
goto structured;
4544
else
4545
if(ptr[offset6] < c_b)
4546
if(ptr[offset8] < c_b)
4547
if(ptr[offset4] < c_b)
4548
if(ptr[offset3] < c_b)
4549
goto success_structured;
4550
else
4551
if(ptr[offset10] < c_b)
4552
goto success_structured;
4553
else
4554
goto structured;
4555
else
4556
if(ptr[offset10] < c_b)
4557
if(ptr[offset11] < c_b)
4558
goto success_structured;
4559
else
4560
goto structured;
4561
else
4562
goto structured;
4563
else
4564
goto structured;
4565
else
4566
goto structured;
4567
else
4568
if(ptr[offset1] > cb)
4569
if(ptr[offset3] > cb)
4570
if(ptr[offset4] > cb)
4571
if(ptr[offset10] > cb)
4572
if(ptr[offset11] > cb)
4573
goto success_structured;
4574
else
4575
goto structured;
4576
else
4577
goto structured;
4578
else
4579
goto structured;
4580
else
4581
goto structured;
4582
else
4583
goto structured;
4584
else
4585
if(ptr[offset10] > cb)
4586
if(ptr[offset11] > cb)
4587
if(ptr[offset9] > cb)
4588
if(ptr[offset1] > cb)
4589
if(ptr[offset3] > cb)
4590
goto success_structured;
4591
else
4592
if(ptr[offset8] > cb)
4593
goto success_structured;
4594
else
4595
goto structured;
4596
else
4597
goto structured;
4598
else
4599
if(ptr[offset1] > cb)
4600
if(ptr[offset3] > cb)
4601
if(ptr[offset4] > cb)
4602
goto success_structured;
4603
else
4604
goto structured;
4605
else
4606
goto structured;
4607
else
4608
goto structured;
4609
else
4610
goto structured;
4611
else
4612
goto structured;
4613
else
4614
if(ptr[offset10] > cb)
4615
if(ptr[offset11] > cb)
4616
if(ptr[offset9] > cb)
4617
if(ptr[offset1] > cb)
4618
if(ptr[offset3] > cb)
4619
goto success_structured;
4620
else
4621
if(ptr[offset8] > cb)
4622
goto success_structured;
4623
else
4624
goto structured;
4625
else
4626
if(ptr[offset6] > cb)
4627
if(ptr[offset8] > cb)
4628
if(ptr[offset7] > cb)
4629
goto success_structured;
4630
else
4631
goto structured;
4632
else
4633
goto structured;
4634
else
4635
goto structured;
4636
else
4637
if(ptr[offset1] > cb)
4638
if(ptr[offset3] > cb)
4639
if(ptr[offset4] > cb)
4640
goto success_structured;
4641
else
4642
goto structured;
4643
else
4644
goto structured;
4645
else
4646
goto structured;
4647
else
4648
goto structured;
4649
else
4650
goto structured;
4651
else
4652
if(ptr[offset7] > cb)
4653
if(ptr[offset9] > cb)
4654
if(ptr[offset8] > cb)
4655
if(ptr[offset5] > cb)
4656
if(ptr[offset1] > cb)
4657
if(ptr[offset10] > cb)
4658
if(ptr[offset11] > cb)
4659
goto success_structured;
4660
else
4661
if(ptr[offset6] > cb)
4662
if(ptr[offset4] > cb)
4663
goto success_structured;
4664
else
4665
goto structured;
4666
else
4667
goto structured;
4668
else
4669
if(ptr[offset6] > cb)
4670
if(ptr[offset3] > cb)
4671
if(ptr[offset4] > cb)
4672
goto success_structured;
4673
else
4674
goto structured;
4675
else
4676
goto structured;
4677
else
4678
goto structured;
4679
else
4680
if(ptr[offset6] > cb)
4681
if(ptr[offset4] > cb)
4682
if(ptr[offset3] > cb)
4683
goto success_structured;
4684
else
4685
if(ptr[offset10] > cb)
4686
goto success_structured;
4687
else
4688
goto structured;
4689
else
4690
if(ptr[offset10] > cb)
4691
if(ptr[offset11] > cb)
4692
goto success_structured;
4693
else
4694
goto structured;
4695
else
4696
goto structured;
4697
else
4698
goto structured;
4699
else
4700
if(ptr[offset10] > cb)
4701
if(ptr[offset11] > cb)
4702
if(ptr[offset1] > cb)
4703
goto success_structured;
4704
else
4705
if(ptr[offset6] > cb)
4706
goto success_structured;
4707
else
4708
goto structured;
4709
else
4710
goto structured;
4711
else
4712
goto structured;
4713
else
4714
goto structured;
4715
else
4716
goto structured;
4717
else
4718
if(ptr[offset7] < c_b)
4719
if(ptr[offset5] < c_b)
4720
if(ptr[offset2] < c_b)
4721
if(ptr[offset6] < c_b)
4722
if(ptr[offset4] < c_b)
4723
if(ptr[offset3] < c_b)
4724
if(ptr[offset1] < c_b)
4725
goto success_structured;
4726
else
4727
if(ptr[offset8] < c_b)
4728
goto success_structured;
4729
else
4730
goto structured;
4731
else
4732
if(ptr[offset9] < c_b)
4733
if(ptr[offset8] < c_b)
4734
if(ptr[offset10] < c_b)
4735
goto success_structured;
4736
else
4737
goto structured;
4738
else
4739
goto structured;
4740
else
4741
goto structured;
4742
else
4743
if(ptr[offset9] < c_b)
4744
if(ptr[offset8] < c_b)
4745
if(ptr[offset10] < c_b)
4746
if(ptr[offset11] < c_b)
4747
goto success_structured;
4748
else
4749
goto structured;
4750
else
4751
goto structured;
4752
else
4753
goto structured;
4754
else
4755
goto structured;
4756
else
4757
goto structured;
4758
else
4759
if(ptr[offset9] < c_b)
4760
if(ptr[offset6] < c_b)
4761
if(ptr[offset8] < c_b)
4762
if(ptr[offset4] < c_b)
4763
if(ptr[offset3] < c_b)
4764
goto success_structured;
4765
else
4766
if(ptr[offset10] < c_b)
4767
goto success_structured;
4768
else
4769
goto structured;
4770
else
4771
if(ptr[offset10] < c_b)
4772
if(ptr[offset11] < c_b)
4773
goto success_structured;
4774
else
4775
goto structured;
4776
else
4777
goto structured;
4778
else
4779
goto structured;
4780
else
4781
goto structured;
4782
else
4783
goto structured;
4784
else
4785
goto structured;
4786
else
4787
goto structured;
4788
else if(ptr[offset0] < c_b)
4789
if(ptr[offset2] < c_b)
4790
if(ptr[offset11] < c_b)
4791
if(ptr[offset3] < c_b)
4792
if(ptr[offset5] < c_b)
4793
if(ptr[offset9] < c_b)
4794
if(ptr[offset7] < c_b)
4795
if(ptr[offset1] < c_b)
4796
if(ptr[offset4] < c_b)
4797
goto success_structured;
4798
else
4799
if(ptr[offset10] < c_b)
4800
goto success_structured;
4801
else
4802
goto structured;
4803
else
4804
if(ptr[offset6] < c_b)
4805
if(ptr[offset8] < c_b)
4806
if(ptr[offset4] < c_b)
4807
goto success_structured;
4808
else
4809
if(ptr[offset10] < c_b)
4810
goto success_structured;
4811
else
4812
goto structured;
4813
else
4814
goto structured;
4815
else
4816
goto structured;
4817
else
4818
if(ptr[offset1] < c_b)
4819
if(ptr[offset4] < c_b)
4820
goto success_structured;
4821
else
4822
if(ptr[offset10] < c_b)
4823
goto success_structured;
4824
else
4825
goto structured;
4826
else
4827
goto structured;
4828
else
4829
if(ptr[offset4] < c_b)
4830
if(ptr[offset7] < c_b)
4831
if(ptr[offset1] < c_b)
4832
goto success_structured;
4833
else
4834
if(ptr[offset6] < c_b)
4835
if(ptr[offset8] < c_b)
4836
goto success_structured;
4837
else
4838
goto structured;
4839
else
4840
goto structured;
4841
else
4842
if(ptr[offset1] < c_b)
4843
goto success_structured;
4844
else
4845
goto structured;
4846
else
4847
goto structured;
4848
else
4849
if(ptr[offset10] < c_b)
4850
if(ptr[offset9] < c_b)
4851
if(ptr[offset7] < c_b)
4852
if(ptr[offset1] < c_b)
4853
goto success_structured;
4854
else
4855
if(ptr[offset6] < c_b)
4856
if(ptr[offset8] < c_b)
4857
goto success_structured;
4858
else
4859
goto structured;
4860
else
4861
goto structured;
4862
else
4863
if(ptr[offset1] < c_b)
4864
goto success_structured;
4865
else
4866
goto structured;
4867
else
4868
if(ptr[offset1] < c_b)
4869
if(ptr[offset4] < c_b)
4870
goto success_structured;
4871
else
4872
goto structured;
4873
else
4874
goto structured;
4875
else
4876
if(ptr[offset7] > cb)
4877
if(ptr[offset9] > cb)
4878
if(ptr[offset5] > cb)
4879
if(ptr[offset4] > cb)
4880
if(ptr[offset6] > cb)
4881
if(ptr[offset8] > cb)
4882
if(ptr[offset10] > cb)
4883
goto success_structured;
4884
else
4885
goto structured;
4886
else
4887
goto structured;
4888
else
4889
goto structured;
4890
else
4891
goto structured;
4892
else
4893
goto structured;
4894
else
4895
goto structured;
4896
else
4897
goto structured;
4898
else
4899
if(ptr[offset9] < c_b)
4900
if(ptr[offset8] < c_b)
4901
if(ptr[offset10] < c_b)
4902
if(ptr[offset7] < c_b)
4903
if(ptr[offset1] < c_b)
4904
goto success_structured;
4905
else
4906
if(ptr[offset6] < c_b)
4907
goto success_structured;
4908
else
4909
goto structured;
4910
else
4911
if(ptr[offset1] < c_b)
4912
goto success_structured;
4913
else
4914
goto structured;
4915
else
4916
goto structured;
4917
else
4918
goto structured;
4919
else
4920
if(ptr[offset5] > cb)
4921
if(ptr[offset7] > cb)
4922
if(ptr[offset9] > cb)
4923
if(ptr[offset4] > cb)
4924
if(ptr[offset6] > cb)
4925
if(ptr[offset8] > cb)
4926
if(ptr[offset3] > cb)
4927
goto success_structured;
4928
else
4929
if(ptr[offset10] > cb)
4930
goto success_structured;
4931
else
4932
goto structured;
4933
else
4934
goto structured;
4935
else
4936
goto structured;
4937
else
4938
goto structured;
4939
else
4940
goto structured;
4941
else
4942
goto structured;
4943
else
4944
goto structured;
4945
else
4946
if(ptr[offset4] < c_b)
4947
if(ptr[offset5] < c_b)
4948
if(ptr[offset7] < c_b)
4949
if(ptr[offset6] < c_b)
4950
if(ptr[offset3] < c_b)
4951
if(ptr[offset1] < c_b)
4952
goto success_structured;
4953
else
4954
if(ptr[offset8] < c_b)
4955
goto success_structured;
4956
else
4957
goto structured;
4958
else
4959
if(ptr[offset9] < c_b)
4960
if(ptr[offset8] < c_b)
4961
if(ptr[offset10] < c_b)
4962
goto success_structured;
4963
else
4964
goto structured;
4965
else
4966
goto structured;
4967
else
4968
goto structured;
4969
else
4970
goto structured;
4971
else
4972
if(ptr[offset1] < c_b)
4973
if(ptr[offset6] < c_b)
4974
if(ptr[offset3] < c_b)
4975
goto success_structured;
4976
else
4977
goto structured;
4978
else
4979
goto structured;
4980
else
4981
goto structured;
4982
else
4983
if(ptr[offset7] > cb)
4984
if(ptr[offset9] > cb)
4985
if(ptr[offset5] > cb)
4986
if(ptr[offset6] > cb)
4987
if(ptr[offset8] > cb)
4988
if(ptr[offset10] > cb)
4989
if(ptr[offset11] > cb)
4990
goto success_structured;
4991
else
4992
goto structured;
4993
else
4994
goto structured;
4995
else
4996
goto structured;
4997
else
4998
goto structured;
4999
else
5000
goto structured;
5001
else
5002
goto structured;
5003
else
5004
goto structured;
5005
else
5006
if(ptr[offset5] > cb)
5007
if(ptr[offset7] > cb)
5008
if(ptr[offset9] > cb)
5009
if(ptr[offset6] > cb)
5010
if(ptr[offset8] > cb)
5011
if(ptr[offset10] > cb)
5012
if(ptr[offset4] > cb)
5013
goto success_structured;
5014
else
5015
if(ptr[offset11] > cb)
5016
goto success_structured;
5017
else
5018
goto homogeneous;
5019
else
5020
if(ptr[offset3] > cb)
5021
if(ptr[offset4] > cb)
5022
goto success_structured;
5023
else
5024
goto structured;
5025
else
5026
goto structured;
5027
else
5028
goto structured;
5029
else
5030
goto structured;
5031
else
5032
goto structured;
5033
else
5034
goto structured;
5035
else
5036
goto structured;
5037
else
5038
if(ptr[offset7] > cb)
5039
if(ptr[offset5] > cb)
5040
if(ptr[offset2] > cb)
5041
if(ptr[offset6] > cb)
5042
if(ptr[offset4] > cb)
5043
if(ptr[offset3] > cb)
5044
if(ptr[offset1] > cb)
5045
goto success_structured;
5046
else
5047
if(ptr[offset8] > cb)
5048
goto success_structured;
5049
else
5050
goto structured;
5051
else
5052
if(ptr[offset9] > cb)
5053
if(ptr[offset8] > cb)
5054
if(ptr[offset10] > cb)
5055
goto success_structured;
5056
else
5057
goto structured;
5058
else
5059
goto structured;
5060
else
5061
goto structured;
5062
else
5063
if(ptr[offset9] > cb)
5064
if(ptr[offset8] > cb)
5065
if(ptr[offset10] > cb)
5066
if(ptr[offset11] > cb)
5067
goto success_structured;
5068
else
5069
goto structured;
5070
else
5071
goto structured;
5072
else
5073
goto structured;
5074
else
5075
goto structured;
5076
else
5077
goto structured;
5078
else
5079
if(ptr[offset9] > cb)
5080
if(ptr[offset6] > cb)
5081
if(ptr[offset8] > cb)
5082
if(ptr[offset4] > cb)
5083
if(ptr[offset3] > cb)
5084
goto success_structured;
5085
else
5086
if(ptr[offset10] > cb)
5087
goto success_structured;
5088
else
5089
goto structured;
5090
else
5091
if(ptr[offset10] > cb)
5092
if(ptr[offset11] > cb)
5093
goto success_structured;
5094
else
5095
goto structured;
5096
else
5097
goto structured;
5098
else
5099
goto structured;
5100
else
5101
goto structured;
5102
else
5103
goto structured;
5104
else
5105
goto structured;
5106
else
5107
if(ptr[offset7] < c_b)
5108
if(ptr[offset9] < c_b)
5109
if(ptr[offset8] < c_b)
5110
if(ptr[offset5] < c_b)
5111
if(ptr[offset1] < c_b)
5112
if(ptr[offset10] < c_b)
5113
if(ptr[offset11] < c_b)
5114
goto success_structured;
5115
else
5116
if(ptr[offset6] < c_b)
5117
if(ptr[offset4] < c_b)
5118
goto success_structured;
5119
else
5120
goto structured;
5121
else
5122
goto structured;
5123
else
5124
if(ptr[offset6] < c_b)
5125
if(ptr[offset3] < c_b)
5126
if(ptr[offset4] < c_b)
5127
goto success_structured;
5128
else
5129
goto structured;
5130
else
5131
goto structured;
5132
else
5133
goto structured;
5134
else
5135
if(ptr[offset6] < c_b)
5136
if(ptr[offset4] < c_b)
5137
if(ptr[offset3] < c_b)
5138
goto success_structured;
5139
else
5140
if(ptr[offset10] < c_b)
5141
goto success_structured;
5142
else
5143
goto structured;
5144
else
5145
if(ptr[offset10] < c_b)
5146
if(ptr[offset11] < c_b)
5147
goto success_structured;
5148
else
5149
goto structured;
5150
else
5151
goto structured;
5152
else
5153
goto structured;
5154
else
5155
if(ptr[offset10] < c_b)
5156
if(ptr[offset11] < c_b)
5157
if(ptr[offset1] < c_b)
5158
goto success_structured;
5159
else
5160
if(ptr[offset6] < c_b)
5161
goto success_structured;
5162
else
5163
goto structured;
5164
else
5165
goto structured;
5166
else
5167
goto structured;
5168
else
5169
goto structured;
5170
else
5171
goto structured;
5172
else
5173
goto structured;
5174
else
5175
if(ptr[offset5] > cb)
5176
if(ptr[offset7] > cb)
5177
if(ptr[offset9] > cb)
5178
if(ptr[offset6] > cb)
5179
if(ptr[offset4] > cb)
5180
if(ptr[offset3] > cb)
5181
if(ptr[offset8] > cb)
5182
goto success_structured;
5183
else
5184
if(ptr[offset1] > cb)
5185
if(ptr[offset2] > cb)
5186
goto success_structured;
5187
else
5188
goto structured;
5189
else
5190
goto structured;
5191
else
5192
if(ptr[offset8] > cb)
5193
if(ptr[offset10] > cb)
5194
goto success_structured;
5195
else
5196
goto structured;
5197
else
5198
goto structured;
5199
else
5200
if(ptr[offset11] > cb)
5201
if(ptr[offset8] > cb)
5202
if(ptr[offset10] > cb)
5203
goto success_structured;
5204
else
5205
goto structured;
5206
else
5207
goto structured;
5208
else
5209
goto structured;
5210
else
5211
goto structured;
5212
else
5213
if(ptr[offset2] > cb)
5214
if(ptr[offset3] > cb)
5215
if(ptr[offset4] > cb)
5216
if(ptr[offset1] > cb)
5217
if(ptr[offset6] > cb)
5218
goto success_structured;
5219
else
5220
goto structured;
5221
else
5222
if(ptr[offset6] > cb)
5223
if(ptr[offset8] > cb)
5224
goto success_structured;
5225
else
5226
goto structured;
5227
else
5228
goto structured;
5229
else
5230
goto structured;
5231
else
5232
goto structured;
5233
else
5234
goto structured;
5235
else
5236
goto structured;
5237
else
5238
if(ptr[offset5] < c_b)
5239
if(ptr[offset7] < c_b)
5240
if(ptr[offset9] < c_b)
5241
if(ptr[offset6] < c_b)
5242
if(ptr[offset4] < c_b)
5243
if(ptr[offset3] < c_b)
5244
if(ptr[offset8] < c_b)
5245
goto success_structured;
5246
else
5247
if(ptr[offset1] < c_b)
5248
if(ptr[offset2] < c_b)
5249
goto success_structured;
5250
else
5251
goto structured;
5252
else
5253
goto structured;
5254
else
5255
if(ptr[offset8] < c_b)
5256
if(ptr[offset10] < c_b)
5257
goto success_structured;
5258
else
5259
goto structured;
5260
else
5261
goto structured;
5262
else
5263
if(ptr[offset11] < c_b)
5264
if(ptr[offset8] < c_b)
5265
if(ptr[offset10] < c_b)
5266
goto success_structured;
5267
else
5268
goto structured;
5269
else
5270
goto structured;
5271
else
5272
goto structured;
5273
else
5274
goto structured;
5275
else
5276
if(ptr[offset2] < c_b)
5277
if(ptr[offset3] < c_b)
5278
if(ptr[offset4] < c_b)
5279
if(ptr[offset1] < c_b)
5280
if(ptr[offset6] < c_b)
5281
goto success_structured;
5282
else
5283
goto structured;
5284
else
5285
if(ptr[offset6] < c_b)
5286
if(ptr[offset8] < c_b)
5287
goto success_structured;
5288
else
5289
goto structured;
5290
else
5291
goto structured;
5292
else
5293
goto structured;
5294
else
5295
goto structured;
5296
else
5297
goto structured;
5298
else
5299
goto structured;
5300
else
5301
goto homogeneous;
5302
}
5303
}
5304
success_homogeneous:
5305
if(total == nExpectedCorners)
5306
{
5307
if(nExpectedCorners == 0)
5308
{
5309
nExpectedCorners = 512;
5310
keypoints.reserve(nExpectedCorners);
5311
}
5312
else
5313
{
5314
nExpectedCorners *= 2;
5315
keypoints.reserve(nExpectedCorners);
5316
}
5317
}
5318
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
5319
total++;
5320
goto homogeneous;
5321
success_structured:
5322
if(total == nExpectedCorners)
5323
{
5324
if(nExpectedCorners == 0)
5325
{
5326
nExpectedCorners = 512;
5327
keypoints.reserve(nExpectedCorners);
5328
}
5329
else
5330
{
5331
nExpectedCorners *= 2;
5332
keypoints.reserve(nExpectedCorners);
5333
}
5334
}
5335
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
5336
total++;
5337
goto structured;
5338
}
5339
}
5340
}
5341
5342
static void OAST_9_16(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
5343
{
5344
cv::Mat img;
5345
if(!_img.getMat().isContinuous())
5346
img = _img.getMat().clone();
5347
else
5348
img = _img.getMat();
5349
5350
size_t total = 0;
5351
int xsize = img.cols;
5352
int ysize = img.rows;
5353
size_t nExpectedCorners = keypoints.capacity();
5354
int x, y;
5355
int xsizeB=xsize - 4;
5356
int ysizeB=ysize - 3;
5357
int width;
5358
5359
keypoints.resize(0);
5360
5361
int pixel_9_16_[16];
5362
makeAgastOffsets(pixel_9_16_, (int)img.step, AgastFeatureDetector::OAST_9_16);
5363
5364
short offset0 = (short) pixel_9_16_[0];
5365
short offset1 = (short) pixel_9_16_[1];
5366
short offset2 = (short) pixel_9_16_[2];
5367
short offset3 = (short) pixel_9_16_[3];
5368
short offset4 = (short) pixel_9_16_[4];
5369
short offset5 = (short) pixel_9_16_[5];
5370
short offset6 = (short) pixel_9_16_[6];
5371
short offset7 = (short) pixel_9_16_[7];
5372
short offset8 = (short) pixel_9_16_[8];
5373
short offset9 = (short) pixel_9_16_[9];
5374
short offset10 = (short) pixel_9_16_[10];
5375
short offset11 = (short) pixel_9_16_[11];
5376
short offset12 = (short) pixel_9_16_[12];
5377
short offset13 = (short) pixel_9_16_[13];
5378
short offset14 = (short) pixel_9_16_[14];
5379
short offset15 = (short) pixel_9_16_[15];
5380
5381
width = xsize;
5382
5383
for(y = 3; y < ysizeB; y++)
5384
{
5385
x = 2;
5386
while(true)
5387
{
5388
x++;
5389
if(x > xsizeB)
5390
break;
5391
else
5392
{
5393
const unsigned char* const ptr = img.ptr() + y*width + x;
5394
const int cb = *ptr + threshold;
5395
const int c_b = *ptr - threshold;
5396
if(ptr[offset0] > cb)
5397
if(ptr[offset2] > cb)
5398
if(ptr[offset4] > cb)
5399
if(ptr[offset5] > cb)
5400
if(ptr[offset7] > cb)
5401
if(ptr[offset3] > cb)
5402
if(ptr[offset1] > cb)
5403
if(ptr[offset6] > cb)
5404
if(ptr[offset8] > cb)
5405
{}
5406
else
5407
if(ptr[offset15] > cb)
5408
{}
5409
else
5410
continue;
5411
else
5412
if(ptr[offset13] > cb)
5413
if(ptr[offset14] > cb)
5414
if(ptr[offset15] > cb)
5415
{}
5416
else
5417
continue;
5418
else
5419
continue;
5420
else
5421
continue;
5422
else
5423
if(ptr[offset8] > cb)
5424
if(ptr[offset9] > cb)
5425
if(ptr[offset10] > cb)
5426
if(ptr[offset6] > cb)
5427
{}
5428
else
5429
if(ptr[offset11] > cb)
5430
if(ptr[offset12] > cb)
5431
if(ptr[offset13] > cb)
5432
if(ptr[offset14] > cb)
5433
if(ptr[offset15] > cb)
5434
{}
5435
else
5436
continue;
5437
else
5438
continue;
5439
else
5440
continue;
5441
else
5442
continue;
5443
else
5444
continue;
5445
else
5446
continue;
5447
else
5448
continue;
5449
else
5450
continue;
5451
else
5452
if(ptr[offset10] > cb)
5453
if(ptr[offset11] > cb)
5454
if(ptr[offset12] > cb)
5455
if(ptr[offset8] > cb)
5456
if(ptr[offset9] > cb)
5457
if(ptr[offset6] > cb)
5458
{}
5459
else
5460
if(ptr[offset13] > cb)
5461
if(ptr[offset14] > cb)
5462
if(ptr[offset15] > cb)
5463
{}
5464
else
5465
continue;
5466
else
5467
continue;
5468
else
5469
continue;
5470
else
5471
if(ptr[offset1] > cb)
5472
if(ptr[offset13] > cb)
5473
if(ptr[offset14] > cb)
5474
if(ptr[offset15] > cb)
5475
{}
5476
else
5477
continue;
5478
else
5479
continue;
5480
else
5481
continue;
5482
else
5483
continue;
5484
else
5485
if(ptr[offset1] > cb)
5486
if(ptr[offset13] > cb)
5487
if(ptr[offset14] > cb)
5488
if(ptr[offset15] > cb)
5489
{}
5490
else
5491
continue;
5492
else
5493
continue;
5494
else
5495
continue;
5496
else
5497
continue;
5498
else
5499
continue;
5500
else
5501
continue;
5502
else
5503
continue;
5504
else if(ptr[offset7] < c_b)
5505
if(ptr[offset14] > cb)
5506
if(ptr[offset15] > cb)
5507
if(ptr[offset1] > cb)
5508
if(ptr[offset3] > cb)
5509
if(ptr[offset6] > cb)
5510
{}
5511
else
5512
if(ptr[offset13] > cb)
5513
{}
5514
else
5515
continue;
5516
else
5517
if(ptr[offset10] > cb)
5518
if(ptr[offset11] > cb)
5519
if(ptr[offset12] > cb)
5520
if(ptr[offset13] > cb)
5521
{}
5522
else
5523
continue;
5524
else
5525
continue;
5526
else
5527
continue;
5528
else
5529
continue;
5530
else
5531
if(ptr[offset8] > cb)
5532
if(ptr[offset9] > cb)
5533
if(ptr[offset10] > cb)
5534
if(ptr[offset11] > cb)
5535
if(ptr[offset12] > cb)
5536
if(ptr[offset13] > cb)
5537
{}
5538
else
5539
continue;
5540
else
5541
continue;
5542
else
5543
continue;
5544
else
5545
continue;
5546
else
5547
continue;
5548
else
5549
continue;
5550
else
5551
continue;
5552
else if(ptr[offset14] < c_b)
5553
if(ptr[offset8] < c_b)
5554
if(ptr[offset9] < c_b)
5555
if(ptr[offset10] < c_b)
5556
if(ptr[offset11] < c_b)
5557
if(ptr[offset12] < c_b)
5558
if(ptr[offset13] < c_b)
5559
if(ptr[offset6] < c_b)
5560
{}
5561
else
5562
if(ptr[offset15] < c_b)
5563
{}
5564
else
5565
continue;
5566
else
5567
continue;
5568
else
5569
continue;
5570
else
5571
continue;
5572
else
5573
continue;
5574
else
5575
continue;
5576
else
5577
continue;
5578
else
5579
continue;
5580
else
5581
if(ptr[offset14] > cb)
5582
if(ptr[offset15] > cb)
5583
if(ptr[offset1] > cb)
5584
if(ptr[offset3] > cb)
5585
if(ptr[offset6] > cb)
5586
{}
5587
else
5588
if(ptr[offset13] > cb)
5589
{}
5590
else
5591
continue;
5592
else
5593
if(ptr[offset10] > cb)
5594
if(ptr[offset11] > cb)
5595
if(ptr[offset12] > cb)
5596
if(ptr[offset13] > cb)
5597
{}
5598
else
5599
continue;
5600
else
5601
continue;
5602
else
5603
continue;
5604
else
5605
continue;
5606
else
5607
if(ptr[offset8] > cb)
5608
if(ptr[offset9] > cb)
5609
if(ptr[offset10] > cb)
5610
if(ptr[offset11] > cb)
5611
if(ptr[offset12] > cb)
5612
if(ptr[offset13] > cb)
5613
{}
5614
else
5615
continue;
5616
else
5617
continue;
5618
else
5619
continue;
5620
else
5621
continue;
5622
else
5623
continue;
5624
else
5625
continue;
5626
else
5627
continue;
5628
else
5629
continue;
5630
else if(ptr[offset5] < c_b)
5631
if(ptr[offset12] > cb)
5632
if(ptr[offset13] > cb)
5633
if(ptr[offset14] > cb)
5634
if(ptr[offset15] > cb)
5635
if(ptr[offset1] > cb)
5636
if(ptr[offset3] > cb)
5637
{}
5638
else
5639
if(ptr[offset10] > cb)
5640
if(ptr[offset11] > cb)
5641
{}
5642
else
5643
continue;
5644
else
5645
continue;
5646
else
5647
if(ptr[offset8] > cb)
5648
if(ptr[offset9] > cb)
5649
if(ptr[offset10] > cb)
5650
if(ptr[offset11] > cb)
5651
{}
5652
else
5653
continue;
5654
else
5655
continue;
5656
else
5657
continue;
5658
else
5659
continue;
5660
else
5661
if(ptr[offset6] > cb)
5662
if(ptr[offset7] > cb)
5663
if(ptr[offset8] > cb)
5664
if(ptr[offset9] > cb)
5665
if(ptr[offset10] > cb)
5666
if(ptr[offset11] > cb)
5667
{}
5668
else
5669
continue;
5670
else
5671
continue;
5672
else
5673
continue;
5674
else
5675
continue;
5676
else
5677
continue;
5678
else
5679
continue;
5680
else
5681
continue;
5682
else
5683
continue;
5684
else if(ptr[offset12] < c_b)
5685
if(ptr[offset7] < c_b)
5686
if(ptr[offset8] < c_b)
5687
if(ptr[offset9] < c_b)
5688
if(ptr[offset10] < c_b)
5689
if(ptr[offset11] < c_b)
5690
if(ptr[offset13] < c_b)
5691
if(ptr[offset6] < c_b)
5692
{}
5693
else
5694
if(ptr[offset14] < c_b)
5695
if(ptr[offset15] < c_b)
5696
{}
5697
else
5698
continue;
5699
else
5700
continue;
5701
else
5702
continue;
5703
else
5704
continue;
5705
else
5706
continue;
5707
else
5708
continue;
5709
else
5710
continue;
5711
else
5712
continue;
5713
else
5714
continue;
5715
else
5716
if(ptr[offset12] > cb)
5717
if(ptr[offset13] > cb)
5718
if(ptr[offset14] > cb)
5719
if(ptr[offset15] > cb)
5720
if(ptr[offset1] > cb)
5721
if(ptr[offset3] > cb)
5722
{}
5723
else
5724
if(ptr[offset10] > cb)
5725
if(ptr[offset11] > cb)
5726
{}
5727
else
5728
continue;
5729
else
5730
continue;
5731
else
5732
if(ptr[offset8] > cb)
5733
if(ptr[offset9] > cb)
5734
if(ptr[offset10] > cb)
5735
if(ptr[offset11] > cb)
5736
{}
5737
else
5738
continue;
5739
else
5740
continue;
5741
else
5742
continue;
5743
else
5744
continue;
5745
else
5746
if(ptr[offset6] > cb)
5747
if(ptr[offset7] > cb)
5748
if(ptr[offset8] > cb)
5749
if(ptr[offset9] > cb)
5750
if(ptr[offset10] > cb)
5751
if(ptr[offset11] > cb)
5752
{}
5753
else
5754
continue;
5755
else
5756
continue;
5757
else
5758
continue;
5759
else
5760
continue;
5761
else
5762
continue;
5763
else
5764
continue;
5765
else
5766
continue;
5767
else
5768
continue;
5769
else if(ptr[offset12] < c_b)
5770
if(ptr[offset7] < c_b)
5771
if(ptr[offset8] < c_b)
5772
if(ptr[offset9] < c_b)
5773
if(ptr[offset10] < c_b)
5774
if(ptr[offset11] < c_b)
5775
if(ptr[offset13] < c_b)
5776
if(ptr[offset14] < c_b)
5777
if(ptr[offset6] < c_b)
5778
{}
5779
else
5780
if(ptr[offset15] < c_b)
5781
{}
5782
else
5783
continue;
5784
else
5785
continue;
5786
else
5787
continue;
5788
else
5789
continue;
5790
else
5791
continue;
5792
else
5793
continue;
5794
else
5795
continue;
5796
else
5797
continue;
5798
else
5799
continue;
5800
else if(ptr[offset4] < c_b)
5801
if(ptr[offset11] > cb)
5802
if(ptr[offset12] > cb)
5803
if(ptr[offset13] > cb)
5804
if(ptr[offset10] > cb)
5805
if(ptr[offset14] > cb)
5806
if(ptr[offset15] > cb)
5807
if(ptr[offset1] > cb)
5808
{}
5809
else
5810
if(ptr[offset8] > cb)
5811
if(ptr[offset9] > cb)
5812
{}
5813
else
5814
continue;
5815
else
5816
continue;
5817
else
5818
if(ptr[offset6] > cb)
5819
if(ptr[offset7] > cb)
5820
if(ptr[offset8] > cb)
5821
if(ptr[offset9] > cb)
5822
{}
5823
else
5824
continue;
5825
else
5826
continue;
5827
else
5828
continue;
5829
else
5830
continue;
5831
else
5832
if(ptr[offset5] > cb)
5833
if(ptr[offset6] > cb)
5834
if(ptr[offset7] > cb)
5835
if(ptr[offset8] > cb)
5836
if(ptr[offset9] > cb)
5837
{}
5838
else
5839
continue;
5840
else
5841
continue;
5842
else
5843
continue;
5844
else
5845
continue;
5846
else
5847
continue;
5848
else
5849
if(ptr[offset1] > cb)
5850
if(ptr[offset3] > cb)
5851
if(ptr[offset14] > cb)
5852
if(ptr[offset15] > cb)
5853
{}
5854
else
5855
continue;
5856
else
5857
continue;
5858
else
5859
continue;
5860
else
5861
continue;
5862
else
5863
continue;
5864
else
5865
continue;
5866
else if(ptr[offset11] < c_b)
5867
if(ptr[offset7] < c_b)
5868
if(ptr[offset8] < c_b)
5869
if(ptr[offset9] < c_b)
5870
if(ptr[offset10] < c_b)
5871
if(ptr[offset6] < c_b)
5872
if(ptr[offset5] < c_b)
5873
if(ptr[offset3] < c_b)
5874
{}
5875
else
5876
if(ptr[offset12] < c_b)
5877
{}
5878
else
5879
continue;
5880
else
5881
if(ptr[offset12] < c_b)
5882
if(ptr[offset13] < c_b)
5883
if(ptr[offset14] < c_b)
5884
{}
5885
else
5886
continue;
5887
else
5888
continue;
5889
else
5890
continue;
5891
else
5892
if(ptr[offset12] < c_b)
5893
if(ptr[offset13] < c_b)
5894
if(ptr[offset14] < c_b)
5895
if(ptr[offset15] < c_b)
5896
{}
5897
else
5898
continue;
5899
else
5900
continue;
5901
else
5902
continue;
5903
else
5904
continue;
5905
else
5906
continue;
5907
else
5908
continue;
5909
else
5910
continue;
5911
else
5912
continue;
5913
else
5914
continue;
5915
else
5916
if(ptr[offset11] > cb)
5917
if(ptr[offset12] > cb)
5918
if(ptr[offset13] > cb)
5919
if(ptr[offset10] > cb)
5920
if(ptr[offset14] > cb)
5921
if(ptr[offset15] > cb)
5922
if(ptr[offset1] > cb)
5923
{}
5924
else
5925
if(ptr[offset8] > cb)
5926
if(ptr[offset9] > cb)
5927
{}
5928
else
5929
continue;
5930
else
5931
continue;
5932
else
5933
if(ptr[offset6] > cb)
5934
if(ptr[offset7] > cb)
5935
if(ptr[offset8] > cb)
5936
if(ptr[offset9] > cb)
5937
{}
5938
else
5939
continue;
5940
else
5941
continue;
5942
else
5943
continue;
5944
else
5945
continue;
5946
else
5947
if(ptr[offset5] > cb)
5948
if(ptr[offset6] > cb)
5949
if(ptr[offset7] > cb)
5950
if(ptr[offset8] > cb)
5951
if(ptr[offset9] > cb)
5952
{}
5953
else
5954
continue;
5955
else
5956
continue;
5957
else
5958
continue;
5959
else
5960
continue;
5961
else
5962
continue;
5963
else
5964
if(ptr[offset1] > cb)
5965
if(ptr[offset3] > cb)
5966
if(ptr[offset14] > cb)
5967
if(ptr[offset15] > cb)
5968
{}
5969
else
5970
continue;
5971
else
5972
continue;
5973
else
5974
continue;
5975
else
5976
continue;
5977
else
5978
continue;
5979
else
5980
continue;
5981
else if(ptr[offset11] < c_b)
5982
if(ptr[offset7] < c_b)
5983
if(ptr[offset8] < c_b)
5984
if(ptr[offset9] < c_b)
5985
if(ptr[offset10] < c_b)
5986
if(ptr[offset12] < c_b)
5987
if(ptr[offset13] < c_b)
5988
if(ptr[offset6] < c_b)
5989
if(ptr[offset5] < c_b)
5990
{}
5991
else
5992
if(ptr[offset14] < c_b)
5993
{}
5994
else
5995
continue;
5996
else
5997
if(ptr[offset14] < c_b)
5998
if(ptr[offset15] < c_b)
5999
{}
6000
else
6001
continue;
6002
else
6003
continue;
6004
else
6005
continue;
6006
else
6007
continue;
6008
else
6009
continue;
6010
else
6011
continue;
6012
else
6013
continue;
6014
else
6015
continue;
6016
else
6017
continue;
6018
else if(ptr[offset2] < c_b)
6019
if(ptr[offset9] > cb)
6020
if(ptr[offset10] > cb)
6021
if(ptr[offset11] > cb)
6022
if(ptr[offset8] > cb)
6023
if(ptr[offset12] > cb)
6024
if(ptr[offset13] > cb)
6025
if(ptr[offset14] > cb)
6026
if(ptr[offset15] > cb)
6027
{}
6028
else
6029
if(ptr[offset6] > cb)
6030
if(ptr[offset7] > cb)
6031
{}
6032
else
6033
continue;
6034
else
6035
continue;
6036
else
6037
if(ptr[offset5] > cb)
6038
if(ptr[offset6] > cb)
6039
if(ptr[offset7] > cb)
6040
{}
6041
else
6042
continue;
6043
else
6044
continue;
6045
else
6046
continue;
6047
else
6048
if(ptr[offset4] > cb)
6049
if(ptr[offset5] > cb)
6050
if(ptr[offset6] > cb)
6051
if(ptr[offset7] > cb)
6052
{}
6053
else
6054
continue;
6055
else
6056
continue;
6057
else
6058
continue;
6059
else
6060
continue;
6061
else
6062
if(ptr[offset3] > cb)
6063
if(ptr[offset4] > cb)
6064
if(ptr[offset5] > cb)
6065
if(ptr[offset6] > cb)
6066
if(ptr[offset7] > cb)
6067
{}
6068
else
6069
continue;
6070
else
6071
continue;
6072
else
6073
continue;
6074
else
6075
continue;
6076
else
6077
continue;
6078
else
6079
if(ptr[offset1] > cb)
6080
if(ptr[offset12] > cb)
6081
if(ptr[offset13] > cb)
6082
if(ptr[offset14] > cb)
6083
if(ptr[offset15] > cb)
6084
{}
6085
else
6086
continue;
6087
else
6088
continue;
6089
else
6090
continue;
6091
else
6092
continue;
6093
else
6094
continue;
6095
else
6096
continue;
6097
else
6098
continue;
6099
else if(ptr[offset9] < c_b)
6100
if(ptr[offset7] < c_b)
6101
if(ptr[offset8] < c_b)
6102
if(ptr[offset6] < c_b)
6103
if(ptr[offset5] < c_b)
6104
if(ptr[offset4] < c_b)
6105
if(ptr[offset3] < c_b)
6106
if(ptr[offset1] < c_b)
6107
{}
6108
else
6109
if(ptr[offset10] < c_b)
6110
{}
6111
else
6112
continue;
6113
else
6114
if(ptr[offset10] < c_b)
6115
if(ptr[offset11] < c_b)
6116
if(ptr[offset12] < c_b)
6117
{}
6118
else
6119
continue;
6120
else
6121
continue;
6122
else
6123
continue;
6124
else
6125
if(ptr[offset10] < c_b)
6126
if(ptr[offset11] < c_b)
6127
if(ptr[offset12] < c_b)
6128
if(ptr[offset13] < c_b)
6129
{}
6130
else
6131
continue;
6132
else
6133
continue;
6134
else
6135
continue;
6136
else
6137
continue;
6138
else
6139
if(ptr[offset10] < c_b)
6140
if(ptr[offset11] < c_b)
6141
if(ptr[offset12] < c_b)
6142
if(ptr[offset13] < c_b)
6143
if(ptr[offset14] < c_b)
6144
{}
6145
else
6146
continue;
6147
else
6148
continue;
6149
else
6150
continue;
6151
else
6152
continue;
6153
else
6154
continue;
6155
else
6156
if(ptr[offset10] < c_b)
6157
if(ptr[offset11] < c_b)
6158
if(ptr[offset12] < c_b)
6159
if(ptr[offset13] < c_b)
6160
if(ptr[offset14] < c_b)
6161
if(ptr[offset15] < c_b)
6162
{}
6163
else
6164
continue;
6165
else
6166
continue;
6167
else
6168
continue;
6169
else
6170
continue;
6171
else
6172
continue;
6173
else
6174
continue;
6175
else
6176
continue;
6177
else
6178
continue;
6179
else
6180
continue;
6181
else
6182
if(ptr[offset9] > cb)
6183
if(ptr[offset10] > cb)
6184
if(ptr[offset11] > cb)
6185
if(ptr[offset8] > cb)
6186
if(ptr[offset12] > cb)
6187
if(ptr[offset13] > cb)
6188
if(ptr[offset14] > cb)
6189
if(ptr[offset15] > cb)
6190
{}
6191
else
6192
if(ptr[offset6] > cb)
6193
if(ptr[offset7] > cb)
6194
{}
6195
else
6196
continue;
6197
else
6198
continue;
6199
else
6200
if(ptr[offset5] > cb)
6201
if(ptr[offset6] > cb)
6202
if(ptr[offset7] > cb)
6203
{}
6204
else
6205
continue;
6206
else
6207
continue;
6208
else
6209
continue;
6210
else
6211
if(ptr[offset4] > cb)
6212
if(ptr[offset5] > cb)
6213
if(ptr[offset6] > cb)
6214
if(ptr[offset7] > cb)
6215
{}
6216
else
6217
continue;
6218
else
6219
continue;
6220
else
6221
continue;
6222
else
6223
continue;
6224
else
6225
if(ptr[offset3] > cb)
6226
if(ptr[offset4] > cb)
6227
if(ptr[offset5] > cb)
6228
if(ptr[offset6] > cb)
6229
if(ptr[offset7] > cb)
6230
{}
6231
else
6232
continue;
6233
else
6234
continue;
6235
else
6236
continue;
6237
else
6238
continue;
6239
else
6240
continue;
6241
else
6242
if(ptr[offset1] > cb)
6243
if(ptr[offset12] > cb)
6244
if(ptr[offset13] > cb)
6245
if(ptr[offset14] > cb)
6246
if(ptr[offset15] > cb)
6247
{}
6248
else
6249
continue;
6250
else
6251
continue;
6252
else
6253
continue;
6254
else
6255
continue;
6256
else
6257
continue;
6258
else
6259
continue;
6260
else
6261
continue;
6262
else if(ptr[offset9] < c_b)
6263
if(ptr[offset7] < c_b)
6264
if(ptr[offset8] < c_b)
6265
if(ptr[offset10] < c_b)
6266
if(ptr[offset11] < c_b)
6267
if(ptr[offset6] < c_b)
6268
if(ptr[offset5] < c_b)
6269
if(ptr[offset4] < c_b)
6270
if(ptr[offset3] < c_b)
6271
{}
6272
else
6273
if(ptr[offset12] < c_b)
6274
{}
6275
else
6276
continue;
6277
else
6278
if(ptr[offset12] < c_b)
6279
if(ptr[offset13] < c_b)
6280
{}
6281
else
6282
continue;
6283
else
6284
continue;
6285
else
6286
if(ptr[offset12] < c_b)
6287
if(ptr[offset13] < c_b)
6288
if(ptr[offset14] < c_b)
6289
{}
6290
else
6291
continue;
6292
else
6293
continue;
6294
else
6295
continue;
6296
else
6297
if(ptr[offset12] < c_b)
6298
if(ptr[offset13] < c_b)
6299
if(ptr[offset14] < c_b)
6300
if(ptr[offset15] < c_b)
6301
{}
6302
else
6303
continue;
6304
else
6305
continue;
6306
else
6307
continue;
6308
else
6309
continue;
6310
else
6311
continue;
6312
else
6313
continue;
6314
else
6315
continue;
6316
else
6317
continue;
6318
else
6319
continue;
6320
else if(ptr[offset0] < c_b)
6321
if(ptr[offset2] > cb)
6322
if(ptr[offset9] > cb)
6323
if(ptr[offset7] > cb)
6324
if(ptr[offset8] > cb)
6325
if(ptr[offset6] > cb)
6326
if(ptr[offset5] > cb)
6327
if(ptr[offset4] > cb)
6328
if(ptr[offset3] > cb)
6329
if(ptr[offset1] > cb)
6330
{}
6331
else
6332
if(ptr[offset10] > cb)
6333
{}
6334
else
6335
continue;
6336
else
6337
if(ptr[offset10] > cb)
6338
if(ptr[offset11] > cb)
6339
if(ptr[offset12] > cb)
6340
{}
6341
else
6342
continue;
6343
else
6344
continue;
6345
else
6346
continue;
6347
else
6348
if(ptr[offset10] > cb)
6349
if(ptr[offset11] > cb)
6350
if(ptr[offset12] > cb)
6351
if(ptr[offset13] > cb)
6352
{}
6353
else
6354
continue;
6355
else
6356
continue;
6357
else
6358
continue;
6359
else
6360
continue;
6361
else
6362
if(ptr[offset10] > cb)
6363
if(ptr[offset11] > cb)
6364
if(ptr[offset12] > cb)
6365
if(ptr[offset13] > cb)
6366
if(ptr[offset14] > cb)
6367
{}
6368
else
6369
continue;
6370
else
6371
continue;
6372
else
6373
continue;
6374
else
6375
continue;
6376
else
6377
continue;
6378
else
6379
if(ptr[offset10] > cb)
6380
if(ptr[offset11] > cb)
6381
if(ptr[offset12] > cb)
6382
if(ptr[offset13] > cb)
6383
if(ptr[offset14] > cb)
6384
if(ptr[offset15] > cb)
6385
{}
6386
else
6387
continue;
6388
else
6389
continue;
6390
else
6391
continue;
6392
else
6393
continue;
6394
else
6395
continue;
6396
else
6397
continue;
6398
else
6399
continue;
6400
else
6401
continue;
6402
else if(ptr[offset9] < c_b)
6403
if(ptr[offset10] < c_b)
6404
if(ptr[offset11] < c_b)
6405
if(ptr[offset8] < c_b)
6406
if(ptr[offset12] < c_b)
6407
if(ptr[offset13] < c_b)
6408
if(ptr[offset14] < c_b)
6409
if(ptr[offset15] < c_b)
6410
{}
6411
else
6412
if(ptr[offset6] < c_b)
6413
if(ptr[offset7] < c_b)
6414
{}
6415
else
6416
continue;
6417
else
6418
continue;
6419
else
6420
if(ptr[offset5] < c_b)
6421
if(ptr[offset6] < c_b)
6422
if(ptr[offset7] < c_b)
6423
{}
6424
else
6425
continue;
6426
else
6427
continue;
6428
else
6429
continue;
6430
else
6431
if(ptr[offset4] < c_b)
6432
if(ptr[offset5] < c_b)
6433
if(ptr[offset6] < c_b)
6434
if(ptr[offset7] < c_b)
6435
{}
6436
else
6437
continue;
6438
else
6439
continue;
6440
else
6441
continue;
6442
else
6443
continue;
6444
else
6445
if(ptr[offset3] < c_b)
6446
if(ptr[offset4] < c_b)
6447
if(ptr[offset5] < c_b)
6448
if(ptr[offset6] < c_b)
6449
if(ptr[offset7] < c_b)
6450
{}
6451
else
6452
continue;
6453
else
6454
continue;
6455
else
6456
continue;
6457
else
6458
continue;
6459
else
6460
continue;
6461
else
6462
if(ptr[offset1] < c_b)
6463
if(ptr[offset12] < c_b)
6464
if(ptr[offset13] < c_b)
6465
if(ptr[offset14] < c_b)
6466
if(ptr[offset15] < c_b)
6467
{}
6468
else
6469
continue;
6470
else
6471
continue;
6472
else
6473
continue;
6474
else
6475
continue;
6476
else
6477
continue;
6478
else
6479
continue;
6480
else
6481
continue;
6482
else
6483
continue;
6484
else if(ptr[offset2] < c_b)
6485
if(ptr[offset4] > cb)
6486
if(ptr[offset11] > cb)
6487
if(ptr[offset7] > cb)
6488
if(ptr[offset8] > cb)
6489
if(ptr[offset9] > cb)
6490
if(ptr[offset10] > cb)
6491
if(ptr[offset6] > cb)
6492
if(ptr[offset5] > cb)
6493
if(ptr[offset3] > cb)
6494
{}
6495
else
6496
if(ptr[offset12] > cb)
6497
{}
6498
else
6499
continue;
6500
else
6501
if(ptr[offset12] > cb)
6502
if(ptr[offset13] > cb)
6503
if(ptr[offset14] > cb)
6504
{}
6505
else
6506
continue;
6507
else
6508
continue;
6509
else
6510
continue;
6511
else
6512
if(ptr[offset12] > cb)
6513
if(ptr[offset13] > cb)
6514
if(ptr[offset14] > cb)
6515
if(ptr[offset15] > cb)
6516
{}
6517
else
6518
continue;
6519
else
6520
continue;
6521
else
6522
continue;
6523
else
6524
continue;
6525
else
6526
continue;
6527
else
6528
continue;
6529
else
6530
continue;
6531
else
6532
continue;
6533
else if(ptr[offset11] < c_b)
6534
if(ptr[offset12] < c_b)
6535
if(ptr[offset13] < c_b)
6536
if(ptr[offset10] < c_b)
6537
if(ptr[offset14] < c_b)
6538
if(ptr[offset15] < c_b)
6539
if(ptr[offset1] < c_b)
6540
{}
6541
else
6542
if(ptr[offset8] < c_b)
6543
if(ptr[offset9] < c_b)
6544
{}
6545
else
6546
continue;
6547
else
6548
continue;
6549
else
6550
if(ptr[offset6] < c_b)
6551
if(ptr[offset7] < c_b)
6552
if(ptr[offset8] < c_b)
6553
if(ptr[offset9] < c_b)
6554
{}
6555
else
6556
continue;
6557
else
6558
continue;
6559
else
6560
continue;
6561
else
6562
continue;
6563
else
6564
if(ptr[offset5] < c_b)
6565
if(ptr[offset6] < c_b)
6566
if(ptr[offset7] < c_b)
6567
if(ptr[offset8] < c_b)
6568
if(ptr[offset9] < c_b)
6569
{}
6570
else
6571
continue;
6572
else
6573
continue;
6574
else
6575
continue;
6576
else
6577
continue;
6578
else
6579
continue;
6580
else
6581
if(ptr[offset1] < c_b)
6582
if(ptr[offset3] < c_b)
6583
if(ptr[offset14] < c_b)
6584
if(ptr[offset15] < c_b)
6585
{}
6586
else
6587
continue;
6588
else
6589
continue;
6590
else
6591
continue;
6592
else
6593
continue;
6594
else
6595
continue;
6596
else
6597
continue;
6598
else
6599
continue;
6600
else if(ptr[offset4] < c_b)
6601
if(ptr[offset5] > cb)
6602
if(ptr[offset12] > cb)
6603
if(ptr[offset7] > cb)
6604
if(ptr[offset8] > cb)
6605
if(ptr[offset9] > cb)
6606
if(ptr[offset10] > cb)
6607
if(ptr[offset11] > cb)
6608
if(ptr[offset13] > cb)
6609
if(ptr[offset6] > cb)
6610
{}
6611
else
6612
if(ptr[offset14] > cb)
6613
if(ptr[offset15] > cb)
6614
{}
6615
else
6616
continue;
6617
else
6618
continue;
6619
else
6620
continue;
6621
else
6622
continue;
6623
else
6624
continue;
6625
else
6626
continue;
6627
else
6628
continue;
6629
else
6630
continue;
6631
else if(ptr[offset12] < c_b)
6632
if(ptr[offset13] < c_b)
6633
if(ptr[offset14] < c_b)
6634
if(ptr[offset15] < c_b)
6635
if(ptr[offset1] < c_b)
6636
if(ptr[offset3] < c_b)
6637
{}
6638
else
6639
if(ptr[offset10] < c_b)
6640
if(ptr[offset11] < c_b)
6641
{}
6642
else
6643
continue;
6644
else
6645
continue;
6646
else
6647
if(ptr[offset8] < c_b)
6648
if(ptr[offset9] < c_b)
6649
if(ptr[offset10] < c_b)
6650
if(ptr[offset11] < c_b)
6651
{}
6652
else
6653
continue;
6654
else
6655
continue;
6656
else
6657
continue;
6658
else
6659
continue;
6660
else
6661
if(ptr[offset6] < c_b)
6662
if(ptr[offset7] < c_b)
6663
if(ptr[offset8] < c_b)
6664
if(ptr[offset9] < c_b)
6665
if(ptr[offset10] < c_b)
6666
if(ptr[offset11] < c_b)
6667
{}
6668
else
6669
continue;
6670
else
6671
continue;
6672
else
6673
continue;
6674
else
6675
continue;
6676
else
6677
continue;
6678
else
6679
continue;
6680
else
6681
continue;
6682
else
6683
continue;
6684
else
6685
continue;
6686
else if(ptr[offset5] < c_b)
6687
if(ptr[offset7] > cb)
6688
if(ptr[offset14] > cb)
6689
if(ptr[offset8] > cb)
6690
if(ptr[offset9] > cb)
6691
if(ptr[offset10] > cb)
6692
if(ptr[offset11] > cb)
6693
if(ptr[offset12] > cb)
6694
if(ptr[offset13] > cb)
6695
if(ptr[offset6] > cb)
6696
{}
6697
else
6698
if(ptr[offset15] > cb)
6699
{}
6700
else
6701
continue;
6702
else
6703
continue;
6704
else
6705
continue;
6706
else
6707
continue;
6708
else
6709
continue;
6710
else
6711
continue;
6712
else
6713
continue;
6714
else if(ptr[offset14] < c_b)
6715
if(ptr[offset15] < c_b)
6716
if(ptr[offset1] < c_b)
6717
if(ptr[offset3] < c_b)
6718
if(ptr[offset6] < c_b)
6719
{}
6720
else
6721
if(ptr[offset13] < c_b)
6722
{}
6723
else
6724
continue;
6725
else
6726
if(ptr[offset10] < c_b)
6727
if(ptr[offset11] < c_b)
6728
if(ptr[offset12] < c_b)
6729
if(ptr[offset13] < c_b)
6730
{}
6731
else
6732
continue;
6733
else
6734
continue;
6735
else
6736
continue;
6737
else
6738
continue;
6739
else
6740
if(ptr[offset8] < c_b)
6741
if(ptr[offset9] < c_b)
6742
if(ptr[offset10] < c_b)
6743
if(ptr[offset11] < c_b)
6744
if(ptr[offset12] < c_b)
6745
if(ptr[offset13] < c_b)
6746
{}
6747
else
6748
continue;
6749
else
6750
continue;
6751
else
6752
continue;
6753
else
6754
continue;
6755
else
6756
continue;
6757
else
6758
continue;
6759
else
6760
continue;
6761
else
6762
continue;
6763
else if(ptr[offset7] < c_b)
6764
if(ptr[offset3] < c_b)
6765
if(ptr[offset1] < c_b)
6766
if(ptr[offset6] < c_b)
6767
if(ptr[offset8] < c_b)
6768
{}
6769
else
6770
if(ptr[offset15] < c_b)
6771
{}
6772
else
6773
continue;
6774
else
6775
if(ptr[offset13] < c_b)
6776
if(ptr[offset14] < c_b)
6777
if(ptr[offset15] < c_b)
6778
{}
6779
else
6780
continue;
6781
else
6782
continue;
6783
else
6784
continue;
6785
else
6786
if(ptr[offset8] < c_b)
6787
if(ptr[offset9] < c_b)
6788
if(ptr[offset10] < c_b)
6789
if(ptr[offset6] < c_b)
6790
{}
6791
else
6792
if(ptr[offset11] < c_b)
6793
if(ptr[offset12] < c_b)
6794
if(ptr[offset13] < c_b)
6795
if(ptr[offset14] < c_b)
6796
if(ptr[offset15] < c_b)
6797
{}
6798
else
6799
continue;
6800
else
6801
continue;
6802
else
6803
continue;
6804
else
6805
continue;
6806
else
6807
continue;
6808
else
6809
continue;
6810
else
6811
continue;
6812
else
6813
continue;
6814
else
6815
if(ptr[offset10] < c_b)
6816
if(ptr[offset11] < c_b)
6817
if(ptr[offset12] < c_b)
6818
if(ptr[offset8] < c_b)
6819
if(ptr[offset9] < c_b)
6820
if(ptr[offset6] < c_b)
6821
{}
6822
else
6823
if(ptr[offset13] < c_b)
6824
if(ptr[offset14] < c_b)
6825
if(ptr[offset15] < c_b)
6826
{}
6827
else
6828
continue;
6829
else
6830
continue;
6831
else
6832
continue;
6833
else
6834
if(ptr[offset1] < c_b)
6835
if(ptr[offset13] < c_b)
6836
if(ptr[offset14] < c_b)
6837
if(ptr[offset15] < c_b)
6838
{}
6839
else
6840
continue;
6841
else
6842
continue;
6843
else
6844
continue;
6845
else
6846
continue;
6847
else
6848
if(ptr[offset1] < c_b)
6849
if(ptr[offset13] < c_b)
6850
if(ptr[offset14] < c_b)
6851
if(ptr[offset15] < c_b)
6852
{}
6853
else
6854
continue;
6855
else
6856
continue;
6857
else
6858
continue;
6859
else
6860
continue;
6861
else
6862
continue;
6863
else
6864
continue;
6865
else
6866
continue;
6867
else
6868
if(ptr[offset14] < c_b)
6869
if(ptr[offset15] < c_b)
6870
if(ptr[offset1] < c_b)
6871
if(ptr[offset3] < c_b)
6872
if(ptr[offset6] < c_b)
6873
{}
6874
else
6875
if(ptr[offset13] < c_b)
6876
{}
6877
else
6878
continue;
6879
else
6880
if(ptr[offset10] < c_b)
6881
if(ptr[offset11] < c_b)
6882
if(ptr[offset12] < c_b)
6883
if(ptr[offset13] < c_b)
6884
{}
6885
else
6886
continue;
6887
else
6888
continue;
6889
else
6890
continue;
6891
else
6892
continue;
6893
else
6894
if(ptr[offset8] < c_b)
6895
if(ptr[offset9] < c_b)
6896
if(ptr[offset10] < c_b)
6897
if(ptr[offset11] < c_b)
6898
if(ptr[offset12] < c_b)
6899
if(ptr[offset13] < c_b)
6900
{}
6901
else
6902
continue;
6903
else
6904
continue;
6905
else
6906
continue;
6907
else
6908
continue;
6909
else
6910
continue;
6911
else
6912
continue;
6913
else
6914
continue;
6915
else
6916
continue;
6917
else
6918
if(ptr[offset12] > cb)
6919
if(ptr[offset7] > cb)
6920
if(ptr[offset8] > cb)
6921
if(ptr[offset9] > cb)
6922
if(ptr[offset10] > cb)
6923
if(ptr[offset11] > cb)
6924
if(ptr[offset13] > cb)
6925
if(ptr[offset14] > cb)
6926
if(ptr[offset6] > cb)
6927
{}
6928
else
6929
if(ptr[offset15] > cb)
6930
{}
6931
else
6932
continue;
6933
else
6934
continue;
6935
else
6936
continue;
6937
else
6938
continue;
6939
else
6940
continue;
6941
else
6942
continue;
6943
else
6944
continue;
6945
else
6946
continue;
6947
else if(ptr[offset12] < c_b)
6948
if(ptr[offset13] < c_b)
6949
if(ptr[offset14] < c_b)
6950
if(ptr[offset15] < c_b)
6951
if(ptr[offset1] < c_b)
6952
if(ptr[offset3] < c_b)
6953
{}
6954
else
6955
if(ptr[offset10] < c_b)
6956
if(ptr[offset11] < c_b)
6957
{}
6958
else
6959
continue;
6960
else
6961
continue;
6962
else
6963
if(ptr[offset8] < c_b)
6964
if(ptr[offset9] < c_b)
6965
if(ptr[offset10] < c_b)
6966
if(ptr[offset11] < c_b)
6967
{}
6968
else
6969
continue;
6970
else
6971
continue;
6972
else
6973
continue;
6974
else
6975
continue;
6976
else
6977
if(ptr[offset6] < c_b)
6978
if(ptr[offset7] < c_b)
6979
if(ptr[offset8] < c_b)
6980
if(ptr[offset9] < c_b)
6981
if(ptr[offset10] < c_b)
6982
if(ptr[offset11] < c_b)
6983
{}
6984
else
6985
continue;
6986
else
6987
continue;
6988
else
6989
continue;
6990
else
6991
continue;
6992
else
6993
continue;
6994
else
6995
continue;
6996
else
6997
continue;
6998
else
6999
continue;
7000
else
7001
continue;
7002
else
7003
if(ptr[offset11] > cb)
7004
if(ptr[offset7] > cb)
7005
if(ptr[offset8] > cb)
7006
if(ptr[offset9] > cb)
7007
if(ptr[offset10] > cb)
7008
if(ptr[offset12] > cb)
7009
if(ptr[offset13] > cb)
7010
if(ptr[offset6] > cb)
7011
if(ptr[offset5] > cb)
7012
{}
7013
else
7014
if(ptr[offset14] > cb)
7015
{}
7016
else
7017
continue;
7018
else
7019
if(ptr[offset14] > cb)
7020
if(ptr[offset15] > cb)
7021
{}
7022
else
7023
continue;
7024
else
7025
continue;
7026
else
7027
continue;
7028
else
7029
continue;
7030
else
7031
continue;
7032
else
7033
continue;
7034
else
7035
continue;
7036
else
7037
continue;
7038
else if(ptr[offset11] < c_b)
7039
if(ptr[offset12] < c_b)
7040
if(ptr[offset13] < c_b)
7041
if(ptr[offset10] < c_b)
7042
if(ptr[offset14] < c_b)
7043
if(ptr[offset15] < c_b)
7044
if(ptr[offset1] < c_b)
7045
{}
7046
else
7047
if(ptr[offset8] < c_b)
7048
if(ptr[offset9] < c_b)
7049
{}
7050
else
7051
continue;
7052
else
7053
continue;
7054
else
7055
if(ptr[offset6] < c_b)
7056
if(ptr[offset7] < c_b)
7057
if(ptr[offset8] < c_b)
7058
if(ptr[offset9] < c_b)
7059
{}
7060
else
7061
continue;
7062
else
7063
continue;
7064
else
7065
continue;
7066
else
7067
continue;
7068
else
7069
if(ptr[offset5] < c_b)
7070
if(ptr[offset6] < c_b)
7071
if(ptr[offset7] < c_b)
7072
if(ptr[offset8] < c_b)
7073
if(ptr[offset9] < c_b)
7074
{}
7075
else
7076
continue;
7077
else
7078
continue;
7079
else
7080
continue;
7081
else
7082
continue;
7083
else
7084
continue;
7085
else
7086
if(ptr[offset1] < c_b)
7087
if(ptr[offset3] < c_b)
7088
if(ptr[offset14] < c_b)
7089
if(ptr[offset15] < c_b)
7090
{}
7091
else
7092
continue;
7093
else
7094
continue;
7095
else
7096
continue;
7097
else
7098
continue;
7099
else
7100
continue;
7101
else
7102
continue;
7103
else
7104
continue;
7105
else
7106
if(ptr[offset9] > cb)
7107
if(ptr[offset7] > cb)
7108
if(ptr[offset8] > cb)
7109
if(ptr[offset10] > cb)
7110
if(ptr[offset11] > cb)
7111
if(ptr[offset6] > cb)
7112
if(ptr[offset5] > cb)
7113
if(ptr[offset4] > cb)
7114
if(ptr[offset3] > cb)
7115
{}
7116
else
7117
if(ptr[offset12] > cb)
7118
{}
7119
else
7120
continue;
7121
else
7122
if(ptr[offset12] > cb)
7123
if(ptr[offset13] > cb)
7124
{}
7125
else
7126
continue;
7127
else
7128
continue;
7129
else
7130
if(ptr[offset12] > cb)
7131
if(ptr[offset13] > cb)
7132
if(ptr[offset14] > cb)
7133
{}
7134
else
7135
continue;
7136
else
7137
continue;
7138
else
7139
continue;
7140
else
7141
if(ptr[offset12] > cb)
7142
if(ptr[offset13] > cb)
7143
if(ptr[offset14] > cb)
7144
if(ptr[offset15] > cb)
7145
{}
7146
else
7147
continue;
7148
else
7149
continue;
7150
else
7151
continue;
7152
else
7153
continue;
7154
else
7155
continue;
7156
else
7157
continue;
7158
else
7159
continue;
7160
else
7161
continue;
7162
else if(ptr[offset9] < c_b)
7163
if(ptr[offset10] < c_b)
7164
if(ptr[offset11] < c_b)
7165
if(ptr[offset8] < c_b)
7166
if(ptr[offset12] < c_b)
7167
if(ptr[offset13] < c_b)
7168
if(ptr[offset14] < c_b)
7169
if(ptr[offset15] < c_b)
7170
{}
7171
else
7172
if(ptr[offset6] < c_b)
7173
if(ptr[offset7] < c_b)
7174
{}
7175
else
7176
continue;
7177
else
7178
continue;
7179
else
7180
if(ptr[offset5] < c_b)
7181
if(ptr[offset6] < c_b)
7182
if(ptr[offset7] < c_b)
7183
{}
7184
else
7185
continue;
7186
else
7187
continue;
7188
else
7189
continue;
7190
else
7191
if(ptr[offset4] < c_b)
7192
if(ptr[offset5] < c_b)
7193
if(ptr[offset6] < c_b)
7194
if(ptr[offset7] < c_b)
7195
{}
7196
else
7197
continue;
7198
else
7199
continue;
7200
else
7201
continue;
7202
else
7203
continue;
7204
else
7205
if(ptr[offset3] < c_b)
7206
if(ptr[offset4] < c_b)
7207
if(ptr[offset5] < c_b)
7208
if(ptr[offset6] < c_b)
7209
if(ptr[offset7] < c_b)
7210
{}
7211
else
7212
continue;
7213
else
7214
continue;
7215
else
7216
continue;
7217
else
7218
continue;
7219
else
7220
continue;
7221
else
7222
if(ptr[offset1] < c_b)
7223
if(ptr[offset12] < c_b)
7224
if(ptr[offset13] < c_b)
7225
if(ptr[offset14] < c_b)
7226
if(ptr[offset15] < c_b)
7227
{}
7228
else
7229
continue;
7230
else
7231
continue;
7232
else
7233
continue;
7234
else
7235
continue;
7236
else
7237
continue;
7238
else
7239
continue;
7240
else
7241
continue;
7242
else
7243
continue;
7244
else
7245
if(ptr[offset7] > cb)
7246
if(ptr[offset8] > cb)
7247
if(ptr[offset9] > cb)
7248
if(ptr[offset6] > cb)
7249
if(ptr[offset5] > cb)
7250
if(ptr[offset4] > cb)
7251
if(ptr[offset3] > cb)
7252
if(ptr[offset2] > cb)
7253
if(ptr[offset1] > cb)
7254
{}
7255
else
7256
if(ptr[offset10] > cb)
7257
{}
7258
else
7259
continue;
7260
else
7261
if(ptr[offset10] > cb)
7262
if(ptr[offset11] > cb)
7263
{}
7264
else
7265
continue;
7266
else
7267
continue;
7268
else
7269
if(ptr[offset10] > cb)
7270
if(ptr[offset11] > cb)
7271
if(ptr[offset12] > cb)
7272
{}
7273
else
7274
continue;
7275
else
7276
continue;
7277
else
7278
continue;
7279
else
7280
if(ptr[offset10] > cb)
7281
if(ptr[offset11] > cb)
7282
if(ptr[offset12] > cb)
7283
if(ptr[offset13] > cb)
7284
{}
7285
else
7286
continue;
7287
else
7288
continue;
7289
else
7290
continue;
7291
else
7292
continue;
7293
else
7294
if(ptr[offset10] > cb)
7295
if(ptr[offset11] > cb)
7296
if(ptr[offset12] > cb)
7297
if(ptr[offset13] > cb)
7298
if(ptr[offset14] > cb)
7299
{}
7300
else
7301
continue;
7302
else
7303
continue;
7304
else
7305
continue;
7306
else
7307
continue;
7308
else
7309
continue;
7310
else
7311
if(ptr[offset10] > cb)
7312
if(ptr[offset11] > cb)
7313
if(ptr[offset12] > cb)
7314
if(ptr[offset13] > cb)
7315
if(ptr[offset14] > cb)
7316
if(ptr[offset15] > cb)
7317
{}
7318
else
7319
continue;
7320
else
7321
continue;
7322
else
7323
continue;
7324
else
7325
continue;
7326
else
7327
continue;
7328
else
7329
continue;
7330
else
7331
continue;
7332
else
7333
continue;
7334
else if(ptr[offset7] < c_b)
7335
if(ptr[offset8] < c_b)
7336
if(ptr[offset9] < c_b)
7337
if(ptr[offset6] < c_b)
7338
if(ptr[offset5] < c_b)
7339
if(ptr[offset4] < c_b)
7340
if(ptr[offset3] < c_b)
7341
if(ptr[offset2] < c_b)
7342
if(ptr[offset1] < c_b)
7343
{}
7344
else
7345
if(ptr[offset10] < c_b)
7346
{}
7347
else
7348
continue;
7349
else
7350
if(ptr[offset10] < c_b)
7351
if(ptr[offset11] < c_b)
7352
{}
7353
else
7354
continue;
7355
else
7356
continue;
7357
else
7358
if(ptr[offset10] < c_b)
7359
if(ptr[offset11] < c_b)
7360
if(ptr[offset12] < c_b)
7361
{}
7362
else
7363
continue;
7364
else
7365
continue;
7366
else
7367
continue;
7368
else
7369
if(ptr[offset10] < c_b)
7370
if(ptr[offset11] < c_b)
7371
if(ptr[offset12] < c_b)
7372
if(ptr[offset13] < c_b)
7373
{}
7374
else
7375
continue;
7376
else
7377
continue;
7378
else
7379
continue;
7380
else
7381
continue;
7382
else
7383
if(ptr[offset10] < c_b)
7384
if(ptr[offset11] < c_b)
7385
if(ptr[offset12] < c_b)
7386
if(ptr[offset13] < c_b)
7387
if(ptr[offset14] < c_b)
7388
{}
7389
else
7390
continue;
7391
else
7392
continue;
7393
else
7394
continue;
7395
else
7396
continue;
7397
else
7398
continue;
7399
else
7400
if(ptr[offset10] < c_b)
7401
if(ptr[offset11] < c_b)
7402
if(ptr[offset12] < c_b)
7403
if(ptr[offset13] < c_b)
7404
if(ptr[offset14] < c_b)
7405
if(ptr[offset15] < c_b)
7406
{}
7407
else
7408
continue;
7409
else
7410
continue;
7411
else
7412
continue;
7413
else
7414
continue;
7415
else
7416
continue;
7417
else
7418
continue;
7419
else
7420
continue;
7421
else
7422
continue;
7423
else
7424
continue;
7425
}
7426
if(total == nExpectedCorners)
7427
{
7428
if(nExpectedCorners == 0)
7429
{
7430
nExpectedCorners = 512;
7431
keypoints.reserve(nExpectedCorners);
7432
}
7433
else
7434
{
7435
nExpectedCorners *= 2;
7436
keypoints.reserve(nExpectedCorners);
7437
}
7438
}
7439
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
7440
total++;
7441
}
7442
}
7443
}
7444
7445
7446
7447
#else // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
7448
7449
static void AGAST_ALL(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, AgastFeatureDetector::DetectorType agasttype)
7450
{
7451
cv::Mat img;
7452
if(!_img.getMat().isContinuous())
7453
img = _img.getMat().clone();
7454
else
7455
img = _img.getMat();
7456
7457
int agastbase;
7458
int result;
7459
uint32_t *table_struct1;
7460
uint32_t *table_struct2;
7461
static const uint32_t table_5_8_struct1[] =
7462
{
7463
0x00010026,0x20020017,0x3003000c,0x50040009,0x10050007,0x406f0006,0x706f006c,0x4008006c,
7464
0x606f006c,0x100a006c,0x406d000b,0x706d006c,0x700d0012,0x600e006c,0x500f0011,0x106f0010,
7465
0x406f006c,0x106d006c,0x5013106c,0x3014106c,0x7015106c,0x4016106c,0x606f106e,0x5018001c,
7466
0x7019006c,0x601a006c,0x106d001b,0x406d006c,0x501d106c,0x301e106c,0x201f1023,0x10201021,
7467
0x406f106c,0x4022106c,0x606f106c,0x7024106c,0x4025106c,0x606f106c,0x00271058,0x20281049,
7468
0x70290035,0x302a1031,0x502b102f,0x102c102d,0x406f106e,0x402e106c,0x606f106e,0x1030106c,
7469
0x406f106c,0x5032006c,0x3033006c,0x4034006c,0x606f006e,0x70361041,0x3037103c,0x5038103b,
7470
0x106f1039,0x403a106c,0x606f106e,0x106d106c,0x603d106c,0x503e1040,0x106f103f,0x406f106c,
7471
0x106d106c,0x3042106c,0x50431047,0x10441045,0x406f106c,0x4046106c,0x606f106c,0x1048106c,
7472
0x406d106c,0x504a0053,0x304b006c,0x204c0050,0x104d004e,0x406f006c,0x404f006c,0x606f006c,
7473
0x7051006c,0x4052006c,0x606f006c,0x5054106c,0x7055106c,0x6056106c,0x106d1057,0x406d106c,
7474
0x30590062,0x505a006c,0x205b005f,0x105c005d,0x406d006c,0x405e006c,0x606d006c,0x7060006c,
7475
0x4061006c,0x606d006c,0x3063106c,0x5064106c,0x20651069,0x10661067,0x406d106c,0x4068106c,
7476
0x606d106c,0x706a106c,0x406b106c,0x606d106c,0x000000fc,0x000000fd,0x000000fe,0x000000ff
7477
};
7478
7479
static const uint32_t table_5_8_struct2[] =
7480
{
7481
0x0001002a,0x2002001b,0x30030010,0x5004000c,0x70050008,0x10730006,0x40070072,0x60730072,
7482
0x1009000a,0x40730072,0x400b0072,0x60730072,0x700d000e,0x10730072,0x100f0072,0x40730072,
7483
0x70110016,0x60120072,0x50130015,0x10730014,0x40730072,0x10730072,0x50171072,0x30181070,
7484
0x70191070,0x401a1072,0x60731072,0x501c0020,0x701d0072,0x601e0072,0x1073001f,0x40730072,
7485
0x50211070,0x30221072,0x20231027,0x10241025,0x40731072,0x40261072,0x60731072,0x70281070,
7486
0x40291070,0x60711070,0x002b105c,0x202c104d,0x702d0039,0x302e1035,0x502f1033,0x10301031,
7487
0x40731072,0x40321072,0x60731072,0x10341072,0x40731072,0x50360072,0x30370070,0x40380072,
7488
0x60730072,0x703a1045,0x303b1040,0x503c103f,0x1073103d,0x403e1072,0x60731072,0x10731072,
7489
0x60411072,0x50421044,0x10731043,0x40731072,0x10731072,0x30461070,0x5047104b,0x10481049,
7490
0x40711070,0x404a1070,0x60711070,0x104c1070,0x40711070,0x504e0057,0x304f0072,0x20500054,
7491
0x10510052,0x40730072,0x40530072,0x60730072,0x70550070,0x40560070,0x60710070,0x50581070,
7492
0x70591072,0x605a1072,0x1073105b,0x40731072,0x305d0066,0x505e0070,0x205f0063,0x10600061,
7493
0x40710070,0x40620070,0x60710070,0x70640070,0x40650070,0x60710070,0x30671070,0x50681070,
7494
0x2069106d,0x106a106b,0x40711070,0x406c1070,0x60711070,0x706e1070,0x406f1070,0x60711070,
7495
0x000000fc,0x000000fd,0x000000fe,0x000000ff
7496
};
7497
7498
static const uint32_t table_7_12d_struct1[] =
7499
{
7500
0x000100b5,0x50020036,0x20030025,0x9004001d,0x10050015,0x6006000f,0x3007000a,0x41870008,
7501
0xa0090186,0xb1890186,0x800b0186,0xa00c0186,0xb189000d,0x400e0186,0x71890188,0xb0100186,
7502
0x30110013,0x41870012,0xa1870186,0x80140186,0xa1870186,0x60160186,0x70170186,0x80180186,
7503
0x4019001b,0x3189001a,0xa1890186,0xa01c0186,0xb1890186,0x301e0186,0x401f0186,0x10200022,
7504
0x61870021,0xb1870186,0x60230186,0x70240186,0x81870186,0x90260186,0x70270186,0x80280186,
7505
0x10290030,0xa02a002d,0xb187002b,0x602c0186,0x41890186,0x602e0186,0x302f0186,0x41890186,
7506
0x60310186,0x40320034,0x31870033,0xa1870186,0xa0350186,0xb1870186,0x503710a1,0x9038006b,
7507
0x3039105b,0x403a1053,0xb03b004d,0x103c0044,0x803d0040,0xa03e0186,0x2189003f,0x71890188,
7508
0x60411186,0x20421186,0x70431188,0x81891188,0x60450048,0x70460186,0x80470186,0xa1890188,
7509
0x60491186,0x204a1186,0x704b1186,0x1189104c,0x81891188,0x204e1186,0x704f1186,0x10501051,
7510
0x61891186,0x60521186,0x81891186,0xb0540186,0x80550186,0xa0560186,0x10570059,0x21890058,
7511
0x71890186,0x605a0186,0x71890186,0xb05c0186,0xa05d0186,0x305e0065,0x105f0062,0x21870060,
7512
0x70610186,0x81890186,0x60630186,0x70640186,0x81890186,0x80660186,0x10670069,0x21870068,
7513
0x71870186,0x606a0186,0x71870186,0x906c1093,0x206d0087,0x106e007f,0x406f0077,0xa0700072,
7514
0x30710186,0xb1890186,0x60731186,0x70741186,0x80751186,0xb0761188,0xa1891188,0x60781186,
7515
0x70791186,0x807a1186,0xa07b107d,0x4189107c,0xb1891188,0x307e1186,0x41891188,0x60801186,
7516
0x70811186,0x80821186,0x40831085,0x31891084,0xa1891186,0xa0861186,0xb1891186,0x60881186,
7517
0x70891186,0x808a108f,0x408b108d,0x3187108c,0xa1871186,0xa08e1186,0xb1871186,0x20901186,
7518
0x10911186,0x30921186,0x41891186,0x20940099,0x10950186,0x30960186,0x40970186,0xa0980186,
7519
0xb1870186,0x209a1186,0x309b1186,0x409c1186,0x709d1186,0x109e109f,0x61871186,0x60a01186,
7520
0x81871186,0x20a200ae,0xa0a30186,0xb0a40186,0x90a500ab,0x10a600a8,0x318700a7,0x81870186,
7521
0x60a90186,0x70aa0186,0x81870186,0x10ac0186,0x30ad0186,0x41870186,0x90af0186,0x70b00186,
7522
0x80b10186,0xa0b20186,0xb0b30186,0x118700b4,0x61870186,0x00b6115a,0x20b700e2,0x50b800cc,
7523
0x70b900c5,0x60ba0186,0x40bb00c1,0x30bc00be,0x118700bd,0x81870186,0x90bf0186,0x80c00186,
7524
0xa1890186,0x90c20186,0x80c30186,0xa0c40186,0xb1890186,0x90c61186,0x80c71186,0xa0c81186,
7525
0xb0c91186,0x70ca1186,0x118910cb,0x61891186,0x90cd1186,0x70ce1186,0x80cf1186,0x50d010de,
7526
0x10d110d8,0xa0d210d5,0xb18910d3,0x60d41186,0x41891188,0x60d61186,0x30d71186,0x41891188,
7527
0x60d91186,0x40da10dc,0x318910db,0xa1891186,0xa0dd1186,0xb1891186,0xa0df1186,0xb0e01186,
7528
0x118710e1,0x61871186,0x20e3113a,0x90e4010b,0x50e500ff,0x10e610f7,0x40e710ef,0xa0e810ea,
7529
0x30e91186,0xb1891186,0x60eb0186,0x70ec0186,0x80ed0186,0xb0ee0188,0xa1890188,0x60f00186,
7530
0x70f10186,0x80f20186,0xa0f300f5,0x418900f4,0xb1890188,0x30f60186,0x41890188,0x60f80186,
7531
0x70f90186,0x80fa0186,0x40fb00fd,0x318900fc,0xa1890186,0xa0fe0186,0xb1890186,0x31001186,
7532
0x41011186,0x51021108,0x11031105,0x61871104,0xb1871186,0x61061186,0x71071186,0x81891186,
7533
0x11091186,0xa10a1186,0xb1871186,0x910c112e,0x510d1126,0x110e111e,0x610f1118,0x31101113,
7534
0x41871111,0xa1121186,0xb1891186,0x81141186,0xa1151186,0xb1891116,0x41171186,0x71891188,
7535
0xb1191186,0x311a111c,0x4187111b,0xa1871186,0x811d1186,0xa1871186,0x611f1186,0x71201186,
7536
0x81211186,0x41221124,0x31891123,0xa1891186,0xa1251186,0xb1891186,0xa1271186,0xb1281186,
7537
0x1129112b,0x3187112a,0x81871186,0x612c1186,0x712d1186,0x81871186,0x312f1186,0x41301186,
7538
0x51311137,0x11321134,0x61871133,0xb1871186,0x61351186,0x71361186,0x81871186,0x11381186,
7539
0xa1391186,0xb1871186,0x913b1150,0x713c1186,0x813d1186,0x513e114c,0x113f1146,0xa1401143,
7540
0xb1871141,0x61421186,0x41891186,0x61441186,0x31451186,0x41891186,0x61471186,0x4148114a,
7541
0x31871149,0xa1871186,0xa14b1186,0xb1871186,0xa14d1186,0xb14e1186,0x1187114f,0x61871186,
7542
0x51510186,0x91520186,0x61530186,0x71540186,0x81550186,0x41560158,0x31870157,0xa1870186,
7543
0xa1590186,0xb1870186,0x515b0170,0x915c0168,0x615d0186,0x715e0186,0x415f0165,0x31600163,
7544
0x81870161,0x11620186,0x21870186,0x81640186,0xa1870186,0xb1660186,0x81670186,0xa1870186,
7545
0x21690186,0x316a0186,0x416b0186,0x716c0186,0x116d016e,0x61870186,0x616f0186,0x81870186,
7546
0x51711186,0x9172117e,0x61731186,0x71741186,0x4175117b,0x31761179,0x81871177,0x11781186,
7547
0x21871186,0x817a1186,0xa1871186,0xb17c1186,0x817d1186,0xa1871186,0x217f1186,0x31801186,
7548
0x41811186,0x71821186,0x11831184,0x61871186,0x61851186,0x81871186,0x000000fc,0x000000fd,
7549
0x000000fe,0x000000ff
7550
};
7551
7552
static const uint32_t table_7_12d_struct2[] =
7553
{
7554
0x000100b5,0x50020036,0x20030025,0x9004001d,0x10050015,0x6006000f,0x3007000a,0x41890008,
7555
0xa0090188,0xb1890188,0x800b0188,0xa00c0188,0xb189000d,0x400e0188,0x71890188,0xb0100188,
7556
0x30110013,0x41890012,0xa1890188,0x80140188,0xa1890188,0x60160188,0x70170188,0x80180188,
7557
0x4019001b,0x3189001a,0xa1890188,0xa01c0188,0xb1890188,0x301e0188,0x401f0188,0x10200022,
7558
0x61890021,0xb1890188,0x60230188,0x70240188,0x81890188,0x90260188,0x70270188,0x80280188,
7559
0x10290030,0xa02a002d,0xb189002b,0x602c0188,0x41890188,0x602e0188,0x302f0188,0x41890188,
7560
0x60310188,0x40320034,0x31890033,0xa1890188,0xa0350188,0xb1890188,0x503710a1,0x9038006b,
7561
0x3039105b,0x403a1053,0xb03b004d,0x103c0044,0x803d0040,0xa03e0188,0x2189003f,0x71890188,
7562
0x60411188,0x20421188,0x70431188,0x81891188,0x60450048,0x70460188,0x80470188,0xa1890188,
7563
0x60491188,0x204a1188,0x704b1188,0x1189104c,0x81891188,0x204e1188,0x704f1188,0x10501051,
7564
0x61891188,0x60521188,0x81891188,0xb0540188,0x80550188,0xa0560188,0x10570059,0x21890058,
7565
0x71890188,0x605a0188,0x71890188,0xb05c0188,0xa05d0188,0x305e0065,0x105f0062,0x21890060,
7566
0x70610188,0x81890188,0x60630188,0x70640188,0x81890188,0x80660188,0x10670069,0x21890068,
7567
0x71890188,0x606a0188,0x71890188,0x906c1093,0x206d0087,0x106e007f,0x406f0077,0xa0700072,
7568
0x30710188,0xb1890188,0x60731188,0x70741188,0x80751188,0xb0761188,0xa1891188,0x60781188,
7569
0x70791188,0x807a1188,0xa07b107d,0x4189107c,0xb1891188,0x307e1188,0x41891188,0x60801188,
7570
0x70811188,0x80821188,0x40831085,0x31891084,0xa1891188,0xa0861188,0xb1891188,0x60881188,
7571
0x70891188,0x808a108f,0x408b108d,0x3189108c,0xa1891188,0xa08e1188,0xb1891188,0x20901188,
7572
0x10911188,0x30921188,0x41891188,0x20940099,0x10950188,0x30960188,0x40970188,0xa0980188,
7573
0xb1890188,0x209a1186,0x309b1188,0x409c1188,0x709d1188,0x109e109f,0x61891188,0x60a01188,
7574
0x81891188,0x20a200ae,0xa0a30188,0xb0a40188,0x90a500ab,0x10a600a8,0x318900a7,0x81890188,
7575
0x60a90188,0x70aa0188,0x81890188,0x10ac0188,0x30ad0188,0x41890188,0x90af0188,0x70b00188,
7576
0x80b10188,0xa0b20188,0xb0b30188,0x118900b4,0x61890188,0x00b6115a,0x20b700e2,0x50b800cc,
7577
0x70b900c5,0x60ba0188,0x40bb00c1,0x30bc00be,0x118900bd,0x81890188,0x90bf0188,0x80c00188,
7578
0xa1890188,0x90c20188,0x80c30188,0xa0c40188,0xb1890188,0x90c61188,0x80c71188,0xa0c81188,
7579
0xb0c91188,0x70ca1188,0x118910cb,0x61891188,0x90cd1188,0x70ce1188,0x80cf1188,0x50d010de,
7580
0x10d110d8,0xa0d210d5,0xb18910d3,0x60d41188,0x41891188,0x60d61188,0x30d71188,0x41891188,
7581
0x60d91188,0x40da10dc,0x318910db,0xa1891188,0xa0dd1188,0xb1891188,0xa0df1188,0xb0e01188,
7582
0x118910e1,0x61891188,0x20e3113a,0x90e4010b,0x50e500ff,0x10e610f7,0x40e710ef,0xa0e810ea,
7583
0x30e91188,0xb1891188,0x60eb0188,0x70ec0188,0x80ed0188,0xb0ee0188,0xa1890188,0x60f00188,
7584
0x70f10188,0x80f20188,0xa0f300f5,0x418900f4,0xb1890188,0x30f60188,0x41890188,0x60f80188,
7585
0x70f90188,0x80fa0188,0x40fb00fd,0x318900fc,0xa1890188,0xa0fe0188,0xb1890188,0x31001188,
7586
0x41011188,0x51021108,0x11031105,0x61891104,0xb1891188,0x61061188,0x71071188,0x81891188,
7587
0x11091188,0xa10a1188,0xb1891188,0x910c112e,0x510d1126,0x110e111e,0x610f1118,0x31101113,
7588
0x41891111,0xa1121188,0xb1891188,0x81141188,0xa1151188,0xb1891116,0x41171188,0x71891188,
7589
0xb1191188,0x311a111c,0x4189111b,0xa1891188,0x811d1188,0xa1891188,0x611f1188,0x71201188,
7590
0x81211188,0x41221124,0x31891123,0xa1891188,0xa1251188,0xb1891188,0xa1271188,0xb1281188,
7591
0x1129112b,0x3189112a,0x81891188,0x612c1188,0x712d1188,0x81891188,0x312f1188,0x41301188,
7592
0x51311137,0x11321134,0x61891133,0xb1891188,0x61351188,0x71361188,0x81891188,0x11381188,
7593
0xa1391188,0xb1891188,0x913b1150,0x713c1188,0x813d1188,0x513e114c,0x113f1146,0xa1401143,
7594
0xb1891141,0x61421188,0x41891188,0x61441188,0x31451188,0x41891188,0x61471188,0x4148114a,
7595
0x31891149,0xa1891188,0xa14b1188,0xb1891188,0xa14d1188,0xb14e1188,0x1189114f,0x61891188,
7596
0x51510188,0x91520186,0x61530188,0x71540188,0x81550188,0x41560158,0x31890157,0xa1890188,
7597
0xa1590188,0xb1890188,0x515b0170,0x915c0168,0x615d0188,0x715e0188,0x415f0165,0x31600163,
7598
0x81890161,0x11620188,0x21890188,0x81640188,0xa1890188,0xb1660188,0x81670188,0xa1890188,
7599
0x21690188,0x316a0188,0x416b0188,0x716c0188,0x116d016e,0x61890188,0x616f0188,0x81890188,
7600
0x51711186,0x9172117e,0x61731188,0x71741188,0x4175117b,0x31761179,0x81891177,0x11781188,
7601
0x21891188,0x817a1188,0xa1891188,0xb17c1188,0x817d1188,0xa1891188,0x217f1188,0x31801188,
7602
0x41811188,0x71821188,0x11831184,0x61891188,0x61851188,0x81891188,0x000000fc,0x000000fd,
7603
0x000000fe,0x000000ff
7604
};
7605
7606
static const uint32_t table_7_12s_struct1[] =
7607
{
7608
0x00010091,0x20020064,0x50030031,0x90040026,0x7005001c,0x10060015,0x6007000f,0x3008000b,
7609
0x41590009,0xa00a0156,0xb1590158,0x800c0156,0xa00d0156,0x4159000e,0xb1590158,0xb0100156,
7610
0x30110013,0x41590012,0xa1590156,0x80140156,0xa1590156,0x60160156,0x80170156,0x4018001a,
7611
0x31590019,0xa1590156,0xa01b0156,0xb1590156,0x101d0156,0xb01e0023,0x301f0021,0x41570020,
7612
0xa1570156,0x80220156,0xa1570156,0x60240156,0x30250156,0x41570156,0x30270156,0x40280156,
7613
0x7029002e,0x102a002c,0x6157002b,0xb1570156,0x602d0156,0x81570156,0x102f0156,0x61570030,
7614
0xb1570156,0x90321055,0x70331050,0x5034104b,0x10350044,0x4036003d,0xa0370039,0x30380156,
7615
0xb1590158,0x603a1156,0x803b1156,0xb03c1158,0xa1591158,0x603e1156,0x803f1156,0xa0401042,
7616
0x41591041,0xb1591158,0x30431156,0x41591158,0x60451156,0x80461156,0x40471049,0x31591048,
7617
0xa1591156,0xa04a1156,0xb1591156,0x104c0156,0x304d0156,0x404e0156,0xa04f0156,0xb1590156,
7618
0x10510156,0x30520156,0x40530156,0xa0540156,0xb1570156,0xa0560156,0xb0570156,0x90580061,
7619
0x7059005e,0x105a005c,0x3157005b,0x81570156,0x605d0156,0x81570156,0x105f0156,0x31570060,
7620
0x81570156,0x10620156,0x30630156,0x41570156,0x7065007a,0x90660156,0x80670156,0x50680076,
7621
0x10690070,0xa06a006d,0xb157006b,0x606c0156,0x41590156,0x606e0156,0x306f0156,0x41590156,
7622
0x60710156,0x40720074,0x31570073,0xa1570156,0xa0750156,0xb1570156,0xa0770156,0xb0780156,
7623
0x11570079,0x61570156,0x707b1156,0x507c1156,0x207d1089,0x607e1156,0x407f1085,0x30801082,
7624
0x11571081,0x81571156,0x90831156,0x80841156,0xa1591156,0x90861156,0x80871156,0xa0881156,
7625
0xb1591156,0x908a1156,0x608b1156,0x808c1156,0x408d108f,0x3157108e,0xa1571156,0xa0901156,
7626
0xb1571156,0x0092112c,0x209310ff,0x909410c2,0x509510b7,0x709610ad,0x109710a6,0x609810a0,
7627
0x3099109c,0x4159109a,0xa09b1156,0xb1591158,0x809d1156,0xa09e1156,0x4159109f,0xb1591158,
7628
0xb0a11156,0x30a210a4,0x415910a3,0xa1591156,0x80a51156,0xa1591156,0x60a71156,0x80a81156,
7629
0x40a910ab,0x315910aa,0xa1591156,0xa0ac1156,0xb1591156,0x10ae1156,0xb0af10b4,0x30b010b2,
7630
0x415710b1,0xa1571156,0x80b31156,0xa1571156,0x60b51156,0x30b61156,0x41571156,0xa0b81156,
7631
0xb0b91156,0x70ba10bf,0x10bb10bd,0x315710bc,0x81571156,0x60be1156,0x81571156,0x10c01156,
7632
0x315710c1,0x81571156,0x90c300f0,0x50c400e1,0x70c500dc,0x10c610d5,0x40c710ce,0xa0c810ca,
7633
0x30c91156,0xb1591158,0x60cb0156,0x80cc0156,0xb0cd0158,0xa1590158,0x60cf0156,0x80d00156,
7634
0xa0d100d3,0x415900d2,0xb1590158,0x30d40156,0x41590158,0x60d60156,0x80d70156,0x40d800da,
7635
0x315900d9,0xa1590156,0xa0db0156,0xb1590156,0x10dd1156,0x30de1156,0x40df1156,0xa0e01156,
7636
0xb1591156,0x30e21156,0x40e31156,0x50e410ed,0x70e510ea,0x10e610e8,0x615910e7,0xb1591156,
7637
0x60e91156,0x81591156,0x10eb1156,0x615710ec,0xb1571156,0x10ee1156,0xa0ef1156,0xb1571156,
7638
0x30f11156,0x40f21156,0x50f310fc,0x70f410f9,0x10f510f7,0x615710f6,0xb1571156,0x60f81156,
7639
0x81571156,0x10fa1156,0x615710fb,0xb1571156,0x10fd1156,0xa0fe1156,0xb1571156,0x71000116,
7640
0x51010156,0x2102010e,0x61030156,0x4104010a,0x31050107,0x11570106,0x81570156,0x91080156,
7641
0x81090156,0xa1590156,0x910b0156,0x810c0156,0xa10d0156,0xb1590156,0x910f0156,0x61100156,
7642
0x81110156,0x41120114,0x31570113,0xa1570156,0xa1150156,0xb1570156,0x71171156,0x91181156,
7643
0x81191156,0x511a1128,0x111b1122,0xa11c111f,0xb157111d,0x611e1156,0x41591156,0x61201156,
7644
0x31211156,0x41591156,0x61231156,0x41241126,0x31571125,0xa1571156,0xa1271156,0xb1571156,
7645
0xa1291156,0xb12a1156,0x1157112b,0x61571156,0x512d0141,0x712e0156,0x912f013a,0x61300156,
7646
0x41310137,0x31320135,0x81570133,0x11340156,0x21570156,0x81360156,0xa1570156,0xb1380156,
7647
0x81390156,0xa1570156,0x213b0156,0x313c0156,0x413d0156,0x113e013f,0x61570156,0x61400156,
7648
0x81570156,0x51421156,0x71431156,0x9144114f,0x61451156,0x4146114c,0x3147114a,0x81571148,
7649
0x11491156,0x21571156,0x814b1156,0xa1571156,0xb14d1156,0x814e1156,0xa1571156,0x21501156,
7650
0x31511156,0x41521156,0x11531154,0x61571156,0x61551156,0x81571156,0x000000fc,0x000000fd,
7651
0x000000fe,0x000000ff
7652
};
7653
7654
static const uint32_t table_7_12s_struct2[] =
7655
{
7656
0x00010092,0x20020065,0x50030031,0x90040026,0x7005001c,0x10060015,0x6007000f,0x3008000b,
7657
0x41400009,0xa00a013f,0xb140013f,0x800c013f,0xa00d013f,0x4140000e,0xb140013f,0xb010013f,
7658
0x30110013,0x41400012,0xa140013f,0x8014013f,0xa140013f,0x6016013f,0x8017013f,0x4018001a,
7659
0x31400019,0xa140013f,0xa01b013f,0xb140013f,0x101d013f,0xb01e0023,0x301f0021,0x41400020,
7660
0xa140013f,0x8022013f,0xa140013f,0x6024013f,0x3025013f,0x4140013f,0x3027013f,0x4028013f,
7661
0x7029002e,0x102a002c,0x6140002b,0xb140013f,0x602d013f,0x8140013f,0x102f013f,0x61400030,
7662
0xb140013f,0x70321059,0x90331050,0x5034104b,0x10350044,0x4036003d,0xa0370039,0x3038013f,
7663
0xb140013f,0x603a113f,0x803b113f,0xb03c113f,0xa140113f,0x603e113f,0x803f113f,0xa0401042,
7664
0x41401041,0xb140113f,0x3043113f,0x4140113f,0x6045113f,0x8046113f,0x40471049,0x31401048,
7665
0xa140113f,0xa04a113f,0xb140113f,0x104c013f,0x304d013f,0x404e013f,0xa04f013f,0xb140013f,
7666
0xa051013f,0xb052013f,0x90530056,0x1054013f,0x31400055,0x8140013f,0x1057013f,0x3058013f,
7667
0x4140013f,0xa05a013f,0xb05b013f,0x905c0062,0x105d005f,0x3140005e,0x8140013f,0x6060013f,
7668
0x8061013f,0x7140013f,0x1063013f,0x3064013f,0x4140013f,0x7066007b,0x9067013f,0x8068013f,
7669
0x50690077,0x106a0071,0xa06b006e,0xb140006c,0x606d013f,0x4140013f,0x606f013f,0x3070013f,
7670
0x4140013f,0x6072013f,0x40730075,0x31400074,0xa140013f,0xa076013f,0xb140013f,0xa078013f,
7671
0xb079013f,0x1140007a,0x6140013f,0x707c113f,0x507d113f,0x207e108a,0x607f113f,0x40801086,
7672
0x30811083,0x11401082,0x8140113f,0x9084113f,0x8085113f,0xa140113f,0x9087113f,0x8088113f,
7673
0xa089113f,0xb140113f,0x908b113f,0x608c113f,0x808d113f,0x408e1090,0x3140108f,0xa140113f,
7674
0xa091113f,0xb140113f,0x00931113,0x209410e6,0xb09510c8,0x309610b9,0x509710a9,0x909810a3,
7675
0x709910a0,0x109a109c,0x4140109b,0xa140113f,0x609d113f,0x809e113f,0x4140109f,0xa140113f,
7676
0x10a1113f,0x414010a2,0xa140113f,0x40a4113f,0x70a510a8,0x114010a6,0x60a7113f,0x8140113f,
7677
0x1140113f,0xa0aa10b2,0x90ab10b0,0x70ac10af,0x114010ad,0x60ae113f,0x8140113f,0x1140113f,
7678
0x10b1113f,0x4140113f,0x70b3013f,0x90b4013f,0x50b5013f,0x40b6013f,0x60b7013f,0x80b8013f,
7679
0xa140013f,0x90ba10c0,0x80bb113f,0xa0bc113f,0x70bd10bf,0x114010be,0x6140113f,0x1140113f,
7680
0x50c1013f,0x70c2013f,0x90c3013f,0x40c4013f,0x60c5013f,0x80c6013f,0x314000c7,0xa140013f,
7681
0x40c910dc,0x50ca10d5,0x70cb10d2,0x60cc113f,0x30cd10cf,0x114010ce,0x8140113f,0x90d0113f,
7682
0x80d1113f,0xa140113f,0x10d3113f,0x60d4113f,0x3140113f,0x70d6013f,0x90d7013f,0x50d8013f,
7683
0x60d9013f,0x80da013f,0xa0db013f,0xb140013f,0x50dd013f,0x70de013f,0x90df013f,0x60e0013f,
7684
0x80e1013f,0xa0e200e4,0x414000e3,0xb140013d,0x30e5013f,0x4140013f,0x70e700fd,0x50e8013f,
7685
0x20e900f5,0x60ea013f,0x40eb00f1,0x30ec00ee,0x114000ed,0x8140013f,0x90ef013f,0x80f0013f,
7686
0xa140013f,0x90f2013f,0x80f3013f,0xa0f4013f,0xb140013f,0x90f6013f,0x60f7013f,0x80f8013f,
7687
0x40f900fb,0x314000fa,0xa140013f,0xa0fc013f,0xb140013f,0x70fe113f,0x90ff113f,0x8100113f,
7688
0x5101110f,0x11021109,0xa1031106,0xb1401104,0x6105113f,0x4140113f,0x6107113f,0x3108113f,
7689
0x4140113f,0x610a113f,0x410b110d,0x3140110c,0xa140113f,0xa10e113f,0xb140113f,0xa110113f,
7690
0xb111113f,0x11401112,0x6140113f,0x51140128,0x7115013f,0x91160121,0x6117013f,0x4118011e,
7691
0x3119011c,0x8140011a,0x111b013f,0x2140013f,0x811d013f,0xa140013f,0xb11f013f,0x8120013f,
7692
0xa140013f,0x2122013f,0x3123013f,0x4124013f,0x11250126,0x6140013f,0x6127013f,0x8140013f,
7693
0x5129113d,0x712a113f,0x912b1136,0x612c113f,0x412d1133,0x312e1131,0x8140112f,0x1130113f,
7694
0x2140113f,0x8132113f,0xa140113f,0xb134113f,0x8135113f,0xa140113f,0x2137113f,0x3138113f,
7695
0x4139113f,0x113a113b,0x6140113f,0x613c113f,0x8140113f,0x000000fc,0x000000fd,0x000000fe,
7696
0x000000ff
7697
};
7698
7699
static const uint32_t table_9_16_struct[] =
7700
{
7701
0x00010138,0x200200d3,0x4003008a,0x50040051,0x70050027,0x30060016,0x1007000d,0x6008000a,
7702
0x82ad0009,0xf2ad02ac,0xd00b02ac,0xe00c02ac,0xf2ad02ac,0x800e02ac,0x900f02ac,0xa01002ac,
7703
0x62ad0011,0xb01202ac,0xc01302ac,0xd01402ac,0xe01502ac,0xf2ad02ac,0xa01702ac,0xb01802ac,
7704
0xc01902ac,0x801a0023,0x901b001f,0x62ad001c,0xd01d02ac,0xe01e02ac,0xf2ad02ac,0x102002ac,
7705
0xd02102ac,0xe02202ac,0xf2ad02ac,0x102402ac,0xd02502ac,0xe02602ac,0xf2ad02ac,0x70281041,
7706
0xe0290038,0xf02a02ac,0x102b0032,0x302c002e,0x62ad002d,0xd2ad02ac,0xa02f02ac,0xb03002ac,
7707
0xc03102ac,0xd2ad02ac,0x803302ac,0x903402ac,0xa03502ac,0xb03602ac,0xc03702ac,0xd2ad02ac,
7708
0xe03912ac,0x803a12ac,0x903b12ac,0xa03c12ac,0xb03d12ac,0xc03e12ac,0xd03f12ac,0x62ad1040,
7709
0xf2ad12ac,0xe04202ac,0xf04302ac,0x1044004b,0x30450047,0x62ad0046,0xd2ad02ac,0xa04802ac,
7710
0xb04902ac,0xc04a02ac,0xd2ad02ac,0x804c02ac,0x904d02ac,0xa04e02ac,0xb04f02ac,0xc05002ac,
7711
0xd2ad02ac,0x5052106e,0xc0530064,0xd05402ac,0xe05502ac,0xf056005e,0x1057005a,0x32ad0058,
7712
0xa05902ac,0xb2ad02ac,0x805b02ac,0x905c02ac,0xa05d02ac,0xb2ad02ac,0x605f02ac,0x706002ac,
7713
0x806102ac,0x906202ac,0xa06302ac,0xb2ad02ac,0xc06512ac,0x706612ac,0x806712ac,0x906812ac,
7714
0xa06912ac,0xb06a12ac,0xd06b12ac,0x62ad106c,0xe06d12ac,0xf2ad12ac,0xc06f0080,0xd07002ac,
7715
0xe07102ac,0xf072007a,0x10730076,0x32ad0074,0xa07502ac,0xb2ad02ac,0x807702ac,0x907802ac,
7716
0xa07902ac,0xb2ad02ac,0x607b02ac,0x707c02ac,0x807d02ac,0x907e02ac,0xa07f02ac,0xb2ad02ac,
7717
0xc08112ac,0x708212ac,0x808312ac,0x908412ac,0xa08512ac,0xb08612ac,0xd08712ac,0xe08812ac,
7718
0x62ad1089,0xf2ad12ac,0x408b10b1,0xb08c00a1,0xc08d02ac,0xd08e02ac,0xa08f009d,0xe0900098,
7719
0xf0910094,0x12ad0092,0x809302ac,0x92ad02ac,0x609502ac,0x709602ac,0x809702ac,0x92ad02ac,
7720
0x509902ac,0x609a02ac,0x709b02ac,0x809c02ac,0x92ad02ac,0x109e02ac,0x309f02ac,0xe0a002ac,
7721
0xf2ad02ac,0xb0a212ac,0x70a312ac,0x80a412ac,0x90a512ac,0xa0a612ac,0x60a710ad,0x50a810aa,
7722
0x32ad10a9,0xc2ad12ac,0xc0ab12ac,0xd0ac12ac,0xe2ad12ac,0xc0ae12ac,0xd0af12ac,0xe0b012ac,
7723
0xf2ad12ac,0xb0b200c7,0xc0b302ac,0xd0b402ac,0xa0b500c3,0xe0b600be,0xf0b700ba,0x12ad00b8,
7724
0x80b902ac,0x92ad02ac,0x60bb02ac,0x70bc02ac,0x80bd02ac,0x92ad02ac,0x50bf02ac,0x60c002ac,
7725
0x70c102ac,0x80c202ac,0x92ad02ac,0x10c402ac,0x30c502ac,0xe0c602ac,0xf2ad02ac,0xb0c812ac,
7726
0x70c912ac,0x80ca12ac,0x90cb12ac,0xa0cc12ac,0xc0cd12ac,0xd0ce12ac,0x60cf10d1,0x52ad10d0,
7727
0xe2ad12ac,0xe0d212ac,0xf2ad12ac,0x20d4110a,0x90d500ef,0xa0d602ac,0xb0d702ac,0x80d800ea,
7728
0xc0d900e5,0xd0da00e1,0xe0db00de,0xf2ad00dc,0x60dd02ac,0x72ad02ac,0x50df02ac,0x60e002ac,
7729
0x72ad02ac,0x40e202ac,0x50e302ac,0x60e402ac,0x72ad02ac,0x30e602ac,0x40e702ac,0x50e802ac,
7730
0x60e902ac,0x72ad02ac,0x10eb02ac,0xc0ec02ac,0xd0ed02ac,0xe0ee02ac,0xf2ad02ac,0x90f012ac,
7731
0x70f112ac,0x80f212ac,0x60f31104,0x50f410ff,0x40f510fb,0x30f610f8,0x12ad10f7,0xa2ad12ac,
7732
0xa0f912ac,0xb0fa12ac,0xc2ad12ac,0xa0fc12ac,0xb0fd12ac,0xc0fe12ac,0xd2ad12ac,0xa10012ac,
7733
0xb10112ac,0xc10212ac,0xd10312ac,0xe2ad12ac,0xa10512ac,0xb10612ac,0xc10712ac,0xd10812ac,
7734
0xe10912ac,0xf2ad12ac,0x910b0125,0xa10c02ac,0xb10d02ac,0x810e0120,0xc10f011b,0xd1100117,
7735
0xe1110114,0xf2ad0112,0x611302ac,0x72ad02ac,0x511502ac,0x611602ac,0x72ad02ac,0x411802ac,
7736
0x511902ac,0x611a02ac,0x72ad02ac,0x311c02ac,0x411d02ac,0x511e02ac,0x611f02ac,0x72ad02ac,
7737
0x112102ac,0xc12202ac,0xd12302ac,0xe12402ac,0xf2ad02ac,0x912612ac,0x712712ac,0x812812ac,
7738
0xa12912ac,0xb12a12ac,0x612b1134,0x512c1131,0x412d112f,0x32ad112e,0xc2ad12ac,0xc13012ac,
7739
0xd2ad12ac,0xc13212ac,0xd13312ac,0xe2ad12ac,0xc13512ac,0xd13612ac,0xe13712ac,0xf2ad12ac,
7740
0x01391270,0x213a0170,0x913b0155,0x713c02ac,0x813d02ac,0x613e014f,0x513f014a,0x41400146,
7741
0x31410143,0x12ad0142,0xa2ad02ac,0xa14402ac,0xb14502ac,0xc2ad02ac,0xa14702ac,0xb14802ac,
7742
0xc14902ac,0xd2ad02ac,0xa14b02ac,0xb14c02ac,0xc14d02ac,0xd14e02ac,0xe2ad02ac,0xa15002ac,
7743
0xb15102ac,0xc15202ac,0xd15302ac,0xe15402ac,0xf2ad02ac,0x915612ac,0xa15712ac,0xb15812ac,
7744
0x8159116b,0xc15a1166,0xd15b1162,0xe15c115f,0xf2ad115d,0x615e12ac,0x72ad12ac,0x516012ac,
7745
0x616112ac,0x72ad12ac,0x416312ac,0x516412ac,0x616512ac,0x72ad12ac,0x316712ac,0x416812ac,
7746
0x516912ac,0x616a12ac,0x72ad12ac,0x116c12ac,0xc16d12ac,0xd16e12ac,0xe16f12ac,0xf2ad12ac,
7747
0x21711242,0x41720198,0xb1730182,0x717402ac,0x817502ac,0x917602ac,0xa17702ac,0x6178017e,
7748
0x5179017b,0x32ad017a,0xc2ad02ac,0xc17c02ac,0xd17d02ac,0xe2ad02ac,0xc17f02ac,0xd18002ac,
7749
0xe18102ac,0xf2ad02ac,0xb18312ac,0xc18412ac,0xd18512ac,0xa1861194,0xe187118f,0xf188118b,
7750
0x12ad1189,0x818a12ac,0x92ad12ac,0x618c12ac,0x718d12ac,0x818e12ac,0x92ad12ac,0x519012ac,
7751
0x619112ac,0x719212ac,0x819312ac,0x92ad12ac,0x119512ac,0x319612ac,0xe19712ac,0xf2ad12ac,
7752
0x41991220,0x519a01b6,0xc19b01a4,0x719c02ac,0x819d02ac,0x919e02ac,0xa19f02ac,0xb1a002ac,
7753
0xd1a102ac,0x62ad01a2,0xe1a302ac,0xf2ad02ac,0xc1a512ac,0xd1a612ac,0xe1a712ac,0xf1a811b0,
7754
0x11a911ac,0x32ad11aa,0xa1ab12ac,0xb2ad12ac,0x81ad12ac,0x91ae12ac,0xa1af12ac,0xb2ad12ac,
7755
0x61b112ac,0x71b212ac,0x81b312ac,0x91b412ac,0xa1b512ac,0xb2ad12ac,0x51b71204,0x71b801d1,
7756
0xe1b901c1,0x81ba02ac,0x91bb02ac,0xa1bc02ac,0xb1bd02ac,0xc1be02ac,0xd1bf02ac,0x62ad01c0,
7757
0xf2ad02ac,0xe1c212ac,0xf1c312ac,0x11c411cb,0x31c511c7,0x62ad11c6,0xd2ad12ac,0xa1c812ac,
7758
0xb1c912ac,0xc1ca12ac,0xd2ad12ac,0x81cc12ac,0x91cd12ac,0xa1ce12ac,0xb1cf12ac,0xc1d012ac,
7759
0xd2ad12ac,0x71d211f4,0x31d311e3,0x11d411da,0x61d511d7,0x82ad11d6,0xf2ad12ac,0xd1d812ac,
7760
0xe1d912ac,0xf2ad12ac,0x81db12ac,0x91dc12ac,0xa1dd12ac,0x62ad11de,0xb1df12ac,0xc1e012ac,
7761
0xd1e112ac,0xe1e212ac,0xf2ad12ac,0xa1e412ac,0xb1e512ac,0xc1e612ac,0x81e711f0,0x91e811ec,
7762
0x62ad11e9,0xd1ea12ac,0xe1eb12ac,0xf2ad12ac,0x11ed12ac,0xd1ee12ac,0xe1ef12ac,0xf2ad12ac,
7763
0x11f112ac,0xd1f212ac,0xe1f312ac,0xf2ad12ac,0xe1f512ac,0xf1f612ac,0x11f711fe,0x31f811fa,
7764
0x62ad11f9,0xd2ad12ac,0xa1fb12ac,0xb1fc12ac,0xc1fd12ac,0xd2ad12ac,0x81ff12ac,0x920012ac,
7765
0xa20112ac,0xb20212ac,0xc20312ac,0xd2ad12ac,0xc205020e,0x720602ac,0x820702ac,0x920802ac,
7766
0xa20902ac,0xb20a02ac,0xd20b02ac,0xe20c02ac,0x62ad020d,0xf2ad02ac,0xc20f12ac,0xd21012ac,
7767
0xe21112ac,0xf212121a,0x12131216,0x32ad1214,0xa21512ac,0xb2ad12ac,0x821712ac,0x921812ac,
7768
0xa21912ac,0xb2ad12ac,0x621b12ac,0x721c12ac,0x821d12ac,0x921e12ac,0xa21f12ac,0xb2ad12ac,
7769
0xb221022c,0x722202ac,0x822302ac,0x922402ac,0xa22502ac,0xc22602ac,0xd22702ac,0x6228022a,
7770
0x52ad0229,0xe2ad02ac,0xe22b02ac,0xf2ad02ac,0xb22d12ac,0xc22e12ac,0xd22f12ac,0xa230123e,
7771
0xe2311239,0xf2321235,0x12ad1233,0x823412ac,0x92ad12ac,0x623612ac,0x723712ac,0x823812ac,
7772
0x92ad12ac,0x523a12ac,0x623b12ac,0x723c12ac,0x823d12ac,0x92ad12ac,0x123f12ac,0x324012ac,
7773
0xe24112ac,0xf2ad12ac,0x92430255,0x724402ac,0x824502ac,0xa24602ac,0xb24702ac,0x62480251,
7774
0x5249024e,0x424a024c,0x32ad024b,0xc2ad02ac,0xc24d02ac,0xd2ad02ac,0xc24f02ac,0xd25002ac,
7775
0xe2ad02ac,0xc25202ac,0xd25302ac,0xe25402ac,0xf2ad02ac,0x925612ac,0xa25712ac,0xb25812ac,
7776
0x8259126b,0xc25a1266,0xd25b1262,0xe25c125f,0xf2ad125d,0x625e12ac,0x72ad12ac,0x526012ac,
7777
0x626112ac,0x72ad12ac,0x426312ac,0x526412ac,0x626512ac,0x72ad12ac,0x326712ac,0x426812ac,
7778
0x526912ac,0x626a12ac,0x72ad12ac,0x126c12ac,0xc26d12ac,0xd26e12ac,0xe26f12ac,0xf2ad12ac,
7779
0x7271028e,0x827202ac,0x927302ac,0x62740288,0x52750283,0x4276027f,0x3277027c,0x2278027a,
7780
0x12ad0279,0xa2ad02ac,0xa27b02ac,0xb2ad02ac,0xa27d02ac,0xb27e02ac,0xc2ad02ac,0xa28002ac,
7781
0xb28102ac,0xc28202ac,0xd2ad02ac,0xa28402ac,0xb28502ac,0xc28602ac,0xd28702ac,0xe2ad02ac,
7782
0xa28902ac,0xb28a02ac,0xc28b02ac,0xd28c02ac,0xe28d02ac,0xf2ad02ac,0x728f12ac,0x829012ac,
7783
0x929112ac,0x629212a6,0x529312a1,0x4294129d,0x3295129a,0x22961298,0x12ad1297,0xa2ad12ac,
7784
0xa29912ac,0xb2ad12ac,0xa29b12ac,0xb29c12ac,0xc2ad12ac,0xa29e12ac,0xb29f12ac,0xc2a012ac,
7785
0xd2ad12ac,0xa2a212ac,0xb2a312ac,0xc2a412ac,0xd2a512ac,0xe2ad12ac,0xa2a712ac,0xb2a812ac,
7786
0xc2a912ac,0xd2aa12ac,0xe2ab12ac,0xf2ad12ac,0x000000fc,0x000000fd,0x000000fe,0x000000ff
7787
};
7788
switch(agasttype) {
7789
case AgastFeatureDetector::AGAST_5_8:
7790
agastbase=0;
7791
table_struct1=(uint32_t *)(table_5_8_struct1);
7792
table_struct2=(uint32_t *)(table_5_8_struct2);
7793
break;
7794
case AgastFeatureDetector::AGAST_7_12d:
7795
agastbase=2;
7796
table_struct1=(uint32_t *)(table_7_12d_struct1);
7797
table_struct2=(uint32_t *)(table_7_12d_struct2);
7798
break;
7799
case AgastFeatureDetector::AGAST_7_12s:
7800
agastbase=1;
7801
table_struct1=(uint32_t *)(table_7_12s_struct1);
7802
table_struct2=(uint32_t *)(table_7_12s_struct2);
7803
break;
7804
case AgastFeatureDetector::OAST_9_16:
7805
default:
7806
agastbase=2;
7807
table_struct1=(uint32_t *)(table_9_16_struct);
7808
table_struct2=(uint32_t *)(table_9_16_struct);
7809
break;
7810
}
7811
7812
size_t total = 0;
7813
int xsize = img.cols;
7814
int ysize = img.rows;
7815
size_t nExpectedCorners = keypoints.capacity();
7816
int x, y;
7817
int xsizeB = xsize - (agastbase + 2);
7818
int ysizeB = ysize - (agastbase + 1);
7819
int width;
7820
7821
keypoints.resize(0);
7822
7823
int pixel[16];
7824
makeAgastOffsets(pixel, (int)img.step, agasttype);
7825
7826
width = xsize;
7827
7828
for(y = agastbase+1; y < ysizeB; y++)
7829
{
7830
x = agastbase;
7831
while(true)
7832
{
7833
homogeneous:
7834
{
7835
x++;
7836
if(x > xsizeB)
7837
break;
7838
else
7839
{
7840
const unsigned char* const ptr = img.ptr() + y*width + x;
7841
result = agast_tree_search(table_struct1, pixel, ptr, threshold);
7842
switch (result)
7843
{
7844
case 252:
7845
goto homogeneous;
7846
case 253:
7847
goto success_homogeneous;
7848
case 254:
7849
goto structured;
7850
case 255:
7851
goto success_structured;
7852
}
7853
}
7854
}
7855
structured:
7856
{
7857
x++;
7858
if(x > xsizeB)
7859
break;
7860
else
7861
{
7862
const unsigned char* const ptr = img.ptr() + y*width + x;
7863
result = agast_tree_search(table_struct2, pixel, ptr, threshold);
7864
switch (result)
7865
{
7866
case 252:
7867
goto homogeneous;
7868
case 253:
7869
goto success_homogeneous;
7870
case 254:
7871
goto structured;
7872
case 255:
7873
goto success_structured;
7874
}
7875
}
7876
}
7877
success_homogeneous:
7878
if(total == nExpectedCorners)
7879
{
7880
if(nExpectedCorners == 0)
7881
{
7882
nExpectedCorners = 512;
7883
keypoints.reserve(nExpectedCorners);
7884
}
7885
else
7886
{
7887
nExpectedCorners *= 2;
7888
keypoints.reserve(nExpectedCorners);
7889
}
7890
}
7891
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
7892
total++;
7893
goto homogeneous;
7894
success_structured:
7895
if(total == nExpectedCorners)
7896
{
7897
if(nExpectedCorners == 0)
7898
{
7899
nExpectedCorners = 512;
7900
keypoints.reserve(nExpectedCorners);
7901
}
7902
else
7903
{
7904
nExpectedCorners *= 2;
7905
keypoints.reserve(nExpectedCorners);
7906
}
7907
}
7908
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 7.0f));
7909
total++;
7910
goto structured;
7911
}
7912
}
7913
}
7914
7915
static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
7916
{
7917
AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_5_8);
7918
}
7919
7920
static void AGAST_7_12d(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
7921
{
7922
AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_7_12d);
7923
}
7924
7925
static void AGAST_7_12s(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
7926
{
7927
AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::AGAST_7_12s);
7928
}
7929
7930
static void OAST_9_16(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
7931
{
7932
AGAST_ALL(_img, keypoints, threshold, AgastFeatureDetector::OAST_9_16);
7933
}
7934
7935
#endif // !(defined __i386__ || defined(_M_IX86) || defined __x86_64__ || defined(_M_X64))
7936
7937
void AGAST(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, bool nonmax_suppression)
7938
{
7939
CV_INSTRUMENT_REGION();
7940
7941
AGAST(_img, keypoints, threshold, nonmax_suppression, AgastFeatureDetector::OAST_9_16);
7942
}
7943
7944
class AgastFeatureDetector_Impl CV_FINAL : public AgastFeatureDetector
7945
{
7946
public:
7947
AgastFeatureDetector_Impl( int _threshold, bool _nonmaxSuppression, DetectorType _type )
7948
: threshold(_threshold), nonmaxSuppression(_nonmaxSuppression), type(_type)
7949
{}
7950
7951
void detect( InputArray _image, std::vector<KeyPoint>& keypoints, InputArray _mask ) CV_OVERRIDE
7952
{
7953
CV_INSTRUMENT_REGION();
7954
7955
if(_image.empty())
7956
{
7957
keypoints.clear();
7958
return;
7959
}
7960
7961
Mat mask = _mask.getMat(), grayImage;
7962
UMat ugrayImage;
7963
_InputArray gray = _image;
7964
if( _image.type() != CV_8U )
7965
{
7966
_OutputArray ogray = _image.isUMat() ? _OutputArray(ugrayImage) : _OutputArray(grayImage);
7967
cvtColor( _image, ogray, COLOR_BGR2GRAY );
7968
gray = ogray;
7969
}
7970
keypoints.clear();
7971
AGAST( gray, keypoints, threshold, nonmaxSuppression, type );
7972
KeyPointsFilter::runByPixelsMask( keypoints, mask );
7973
}
7974
7975
void set(int prop, double value)
7976
{
7977
if(prop == THRESHOLD)
7978
threshold = cvRound(value);
7979
else if(prop == NONMAX_SUPPRESSION)
7980
nonmaxSuppression = value != 0;
7981
else
7982
CV_Error(Error::StsBadArg, "");
7983
}
7984
7985
double get(int prop) const
7986
{
7987
if(prop == THRESHOLD)
7988
return threshold;
7989
if(prop == NONMAX_SUPPRESSION)
7990
return nonmaxSuppression;
7991
CV_Error(Error::StsBadArg, "");
7992
return 0;
7993
}
7994
7995
void setThreshold(int threshold_) CV_OVERRIDE { threshold = threshold_; }
7996
int getThreshold() const CV_OVERRIDE { return threshold; }
7997
7998
void setNonmaxSuppression(bool f) CV_OVERRIDE { nonmaxSuppression = f; }
7999
bool getNonmaxSuppression() const CV_OVERRIDE { return nonmaxSuppression; }
8000
8001
void setType(DetectorType type_) CV_OVERRIDE{ type = type_; }
8002
DetectorType getType() const CV_OVERRIDE{ return type; }
8003
8004
int threshold;
8005
bool nonmaxSuppression;
8006
DetectorType type;
8007
};
8008
8009
Ptr<AgastFeatureDetector> AgastFeatureDetector::create( int threshold, bool nonmaxSuppression, AgastFeatureDetector::DetectorType type )
8010
{
8011
return makePtr<AgastFeatureDetector_Impl>(threshold, nonmaxSuppression, type);
8012
}
8013
8014
void AGAST(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, bool nonmax_suppression, AgastFeatureDetector::DetectorType type)
8015
{
8016
CV_INSTRUMENT_REGION();
8017
8018
std::vector<KeyPoint> kpts;
8019
8020
// detect
8021
switch(type) {
8022
case AgastFeatureDetector::AGAST_5_8:
8023
AGAST_5_8(_img, kpts, threshold);
8024
break;
8025
case AgastFeatureDetector::AGAST_7_12d:
8026
AGAST_7_12d(_img, kpts, threshold);
8027
break;
8028
case AgastFeatureDetector::AGAST_7_12s:
8029
AGAST_7_12s(_img, kpts, threshold);
8030
break;
8031
case AgastFeatureDetector::OAST_9_16:
8032
OAST_9_16(_img, kpts, threshold);
8033
break;
8034
}
8035
8036
cv::Mat img = _img.getMat();
8037
8038
// score
8039
int pixel_[16];
8040
makeAgastOffsets(pixel_, (int)img.step, type);
8041
8042
std::vector<KeyPoint>::iterator kpt;
8043
for(kpt = kpts.begin(); kpt != kpts.end(); ++kpt)
8044
{
8045
switch(type) {
8046
case AgastFeatureDetector::AGAST_5_8:
8047
kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_5_8>
8048
(&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
8049
break;
8050
case AgastFeatureDetector::AGAST_7_12d:
8051
kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_7_12d>
8052
(&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
8053
break;
8054
case AgastFeatureDetector::AGAST_7_12s:
8055
kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_7_12s>
8056
(&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
8057
break;
8058
case AgastFeatureDetector::OAST_9_16:
8059
kpt->response = (float)agast_cornerScore<AgastFeatureDetector::OAST_9_16>
8060
(&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
8061
break;
8062
}
8063
}
8064
8065
// suppression
8066
if(nonmax_suppression)
8067
{
8068
size_t j;
8069
size_t curr_idx;
8070
size_t lastRow = 0, next_lastRow = 0;
8071
size_t num_Corners = kpts.size();
8072
size_t lastRowCorner_ind = 0, next_lastRowCorner_ind = 0;
8073
8074
std::vector<int> nmsFlags;
8075
std::vector<KeyPoint>::const_iterator currCorner;
8076
8077
currCorner = kpts.begin();
8078
8079
nmsFlags.resize((int)num_Corners);
8080
8081
// set all flags to MAXIMUM
8082
for(j = 0; j < num_Corners; j++)
8083
nmsFlags[j] = -1;
8084
8085
for(curr_idx = 0; curr_idx < num_Corners; curr_idx++)
8086
{
8087
int t;
8088
// check above
8089
if(lastRow + 1 < currCorner->pt.y)
8090
{
8091
lastRow = next_lastRow;
8092
lastRowCorner_ind = next_lastRowCorner_ind;
8093
}
8094
if(next_lastRow != currCorner->pt.y)
8095
{
8096
next_lastRow = (size_t) currCorner->pt.y;
8097
next_lastRowCorner_ind = curr_idx;
8098
}
8099
if(lastRow + 1 == currCorner->pt.y)
8100
{
8101
// find the corner above the current one
8102
while( (kpts[lastRowCorner_ind].pt.x < currCorner->pt.x)
8103
&& (kpts[lastRowCorner_ind].pt.y == lastRow) )
8104
lastRowCorner_ind++;
8105
8106
if( (kpts[lastRowCorner_ind].pt.x == currCorner->pt.x)
8107
&& (lastRowCorner_ind != curr_idx) )
8108
{
8109
size_t w = lastRowCorner_ind;
8110
// find the maximum in this block
8111
while(nmsFlags[w] != -1)
8112
w = nmsFlags[w];
8113
8114
if(kpts[curr_idx].response < kpts[w].response)
8115
nmsFlags[curr_idx] = (int)w;
8116
else
8117
nmsFlags[w] = (int)curr_idx;
8118
}
8119
}
8120
8121
// check left
8122
t = (int)curr_idx - 1;
8123
if( (curr_idx != 0) && (kpts[t].pt.y == currCorner->pt.y)
8124
&& (kpts[t].pt.x + 1 == currCorner->pt.x) )
8125
{
8126
int currCornerMaxAbove_ind = nmsFlags[curr_idx];
8127
// find the maximum in that area
8128
while(nmsFlags[t] != -1)
8129
t = nmsFlags[t];
8130
// no maximum above
8131
if(currCornerMaxAbove_ind == -1)
8132
{
8133
if((size_t)t != curr_idx)
8134
{
8135
if ( kpts[curr_idx].response < kpts[t].response )
8136
nmsFlags[curr_idx] = t;
8137
else
8138
nmsFlags[t] = (int)curr_idx;
8139
}
8140
}
8141
else // maximum above
8142
{
8143
if(t != currCornerMaxAbove_ind)
8144
{
8145
if(kpts[currCornerMaxAbove_ind].response < kpts[t].response)
8146
{
8147
nmsFlags[currCornerMaxAbove_ind] = t;
8148
nmsFlags[curr_idx] = t;
8149
}
8150
else
8151
{
8152
nmsFlags[t] = currCornerMaxAbove_ind;
8153
nmsFlags[curr_idx] = currCornerMaxAbove_ind;
8154
}
8155
}
8156
}
8157
}
8158
++currCorner;
8159
}
8160
8161
// collecting maximum corners
8162
for(curr_idx = 0; curr_idx < num_Corners; curr_idx++)
8163
{
8164
if (nmsFlags[curr_idx] == -1)
8165
keypoints.push_back(kpts[curr_idx]);
8166
}
8167
} else
8168
{
8169
keypoints = kpts;
8170
}
8171
}
8172
8173
String AgastFeatureDetector::getDefaultName() const
8174
{
8175
return(Feature2D::getDefaultName() + ".AgastFeatureDetector");
8176
}
8177
8178
} // END NAMESPACE CV
8179
8180