Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/features2d/doc/agast.txt
16354 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
#ifdef _MSC_VER
49
#pragma warning( disable : 4127 )
50
#endif
51
52
namespace cv
53
{
54
55
static void AGAST_5_8(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
56
{
57
58
cv::Mat img;
59
if(!_img.getMat().isContinuous())
60
img = _img.getMat().clone();
61
else
62
img = _img.getMat();
63
64
size_t total = 0;
65
int xsize = img.cols;
66
int ysize = img.rows;
67
size_t nExpectedCorners = keypoints.capacity();
68
int x, y;
69
int xsizeB = xsize - 2;
70
int ysizeB = ysize - 1;
71
int width;
72
73
keypoints.resize(0);
74
75
int pixel_5_8_[16];
76
makeAgastOffsets(pixel_5_8_, (int)img.step, AgastFeatureDetector::AGAST_5_8);
77
78
short offset0 = (short) pixel_5_8_[0];
79
short offset1 = (short) pixel_5_8_[1];
80
short offset2 = (short) pixel_5_8_[2];
81
short offset3 = (short) pixel_5_8_[3];
82
short offset4 = (short) pixel_5_8_[4];
83
short offset5 = (short) pixel_5_8_[5];
84
short offset6 = (short) pixel_5_8_[6];
85
short offset7 = (short) pixel_5_8_[7];
86
87
width = xsize;
88
89
for(y = 1; y < ysizeB; y++)
90
{
91
x = 0;
92
while(true)
93
{
94
homogeneous:
95
{
96
x++;
97
if(x > xsizeB)
98
break;
99
else
100
{
101
const unsigned char* const ptr = img.ptr() + y*width + x;
102
const int cb = *ptr + threshold;
103
const int c_b = *ptr - threshold;
104
if(ptr[offset0] > cb)
105
if(ptr[offset2] > cb)
106
if(ptr[offset3] > cb)
107
if(ptr[offset5] > cb)
108
if(ptr[offset1] > cb)
109
if(ptr[offset4] > cb)
110
goto success_structured;
111
else
112
if(ptr[offset7] > cb)
113
goto success_structured;
114
else
115
goto homogeneous;
116
else
117
if(ptr[offset4] > cb)
118
if(ptr[offset6] > cb)
119
goto success_structured;
120
else
121
goto homogeneous;
122
else
123
goto homogeneous;
124
else
125
if(ptr[offset1] > cb)
126
if(ptr[offset4] > cb)
127
goto success_homogeneous;
128
else
129
if(ptr[offset7] > cb)
130
goto success_homogeneous;
131
else
132
goto homogeneous;
133
else
134
goto homogeneous;
135
else
136
if(ptr[offset7] > cb)
137
if(ptr[offset6] > cb)
138
if(ptr[offset5] > cb)
139
if(ptr[offset1] > cb)
140
goto success_structured;
141
else
142
if(ptr[offset4] > cb)
143
goto success_structured;
144
else
145
goto homogeneous;
146
else
147
if(ptr[offset1] > cb)
148
goto success_homogeneous;
149
else
150
goto homogeneous;
151
else
152
goto homogeneous;
153
else
154
if(ptr[offset5] < c_b)
155
if(ptr[offset3] < c_b)
156
if(ptr[offset7] < c_b)
157
if(ptr[offset4] < c_b)
158
if(ptr[offset6] < c_b)
159
goto success_structured;
160
else
161
goto structured;
162
else
163
goto homogeneous;
164
else
165
goto homogeneous;
166
else
167
goto homogeneous;
168
else
169
goto homogeneous;
170
else
171
if(ptr[offset5] > cb)
172
if(ptr[offset7] > cb)
173
if(ptr[offset6] > cb)
174
if(ptr[offset1] > cb)
175
goto success_homogeneous;
176
else
177
if(ptr[offset4] > cb)
178
goto success_homogeneous;
179
else
180
goto homogeneous;
181
else
182
goto homogeneous;
183
else
184
goto homogeneous;
185
else
186
if(ptr[offset5] < c_b)
187
if(ptr[offset3] < c_b)
188
if(ptr[offset2] < c_b)
189
if(ptr[offset1] < c_b)
190
if(ptr[offset4] < c_b)
191
goto success_structured;
192
else
193
goto homogeneous;
194
else
195
if(ptr[offset4] < c_b)
196
if(ptr[offset6] < c_b)
197
goto success_structured;
198
else
199
goto homogeneous;
200
else
201
goto homogeneous;
202
else
203
if(ptr[offset7] < c_b)
204
if(ptr[offset4] < c_b)
205
if(ptr[offset6] < c_b)
206
goto success_structured;
207
else
208
goto homogeneous;
209
else
210
goto homogeneous;
211
else
212
goto homogeneous;
213
else
214
goto homogeneous;
215
else
216
goto homogeneous;
217
else
218
if(ptr[offset0] < c_b)
219
if(ptr[offset2] < c_b)
220
if(ptr[offset7] > cb)
221
if(ptr[offset3] < c_b)
222
if(ptr[offset5] < c_b)
223
if(ptr[offset1] < c_b)
224
if(ptr[offset4] < c_b)
225
goto success_structured;
226
else
227
goto structured;
228
else
229
if(ptr[offset4] < c_b)
230
if(ptr[offset6] < c_b)
231
goto success_structured;
232
else
233
goto structured;
234
else
235
goto homogeneous;
236
else
237
if(ptr[offset1] < c_b)
238
if(ptr[offset4] < c_b)
239
goto success_structured;
240
else
241
goto homogeneous;
242
else
243
goto homogeneous;
244
else
245
if(ptr[offset5] > cb)
246
if(ptr[offset3] > cb)
247
if(ptr[offset4] > cb)
248
if(ptr[offset6] > cb)
249
goto success_structured;
250
else
251
goto structured;
252
else
253
goto homogeneous;
254
else
255
goto homogeneous;
256
else
257
goto homogeneous;
258
else
259
if(ptr[offset7] < c_b)
260
if(ptr[offset3] < c_b)
261
if(ptr[offset5] < c_b)
262
if(ptr[offset1] < c_b)
263
goto success_structured;
264
else
265
if(ptr[offset4] < c_b)
266
if(ptr[offset6] < c_b)
267
goto success_structured;
268
else
269
goto structured;
270
else
271
goto homogeneous;
272
else
273
if(ptr[offset1] < c_b)
274
goto success_homogeneous;
275
else
276
goto homogeneous;
277
else
278
if(ptr[offset6] < c_b)
279
if(ptr[offset5] < c_b)
280
if(ptr[offset1] < c_b)
281
goto success_structured;
282
else
283
if(ptr[offset4] < c_b)
284
goto success_structured;
285
else
286
goto homogeneous;
287
else
288
if(ptr[offset1] < c_b)
289
goto success_homogeneous;
290
else
291
goto homogeneous;
292
else
293
goto homogeneous;
294
else
295
if(ptr[offset3] < c_b)
296
if(ptr[offset5] < c_b)
297
if(ptr[offset1] < c_b)
298
if(ptr[offset4] < c_b)
299
goto success_structured;
300
else
301
goto homogeneous;
302
else
303
if(ptr[offset4] < c_b)
304
if(ptr[offset6] < c_b)
305
goto success_structured;
306
else
307
goto homogeneous;
308
else
309
goto homogeneous;
310
else
311
if(ptr[offset1] < c_b)
312
if(ptr[offset4] < c_b)
313
goto success_homogeneous;
314
else
315
goto homogeneous;
316
else
317
goto homogeneous;
318
else
319
goto homogeneous;
320
else
321
if(ptr[offset5] > cb)
322
if(ptr[offset3] > cb)
323
if(ptr[offset2] > cb)
324
if(ptr[offset1] > cb)
325
if(ptr[offset4] > cb)
326
goto success_structured;
327
else
328
goto homogeneous;
329
else
330
if(ptr[offset4] > cb)
331
if(ptr[offset6] > cb)
332
goto success_structured;
333
else
334
goto homogeneous;
335
else
336
goto homogeneous;
337
else
338
if(ptr[offset7] > cb)
339
if(ptr[offset4] > cb)
340
if(ptr[offset6] > cb)
341
goto success_structured;
342
else
343
goto homogeneous;
344
else
345
goto homogeneous;
346
else
347
goto homogeneous;
348
else
349
goto homogeneous;
350
else
351
if(ptr[offset5] < c_b)
352
if(ptr[offset7] < c_b)
353
if(ptr[offset6] < c_b)
354
if(ptr[offset1] < c_b)
355
goto success_homogeneous;
356
else
357
if(ptr[offset4] < c_b)
358
goto success_homogeneous;
359
else
360
goto homogeneous;
361
else
362
goto homogeneous;
363
else
364
goto homogeneous;
365
else
366
goto homogeneous;
367
else
368
if(ptr[offset3] > cb)
369
if(ptr[offset5] > cb)
370
if(ptr[offset2] > cb)
371
if(ptr[offset1] > cb)
372
if(ptr[offset4] > cb)
373
goto success_homogeneous;
374
else
375
goto homogeneous;
376
else
377
if(ptr[offset4] > cb)
378
if(ptr[offset6] > cb)
379
goto success_homogeneous;
380
else
381
goto homogeneous;
382
else
383
goto homogeneous;
384
else
385
if(ptr[offset7] > cb)
386
if(ptr[offset4] > cb)
387
if(ptr[offset6] > cb)
388
goto success_homogeneous;
389
else
390
goto homogeneous;
391
else
392
goto homogeneous;
393
else
394
goto homogeneous;
395
else
396
goto homogeneous;
397
else
398
if(ptr[offset3] < c_b)
399
if(ptr[offset5] < c_b)
400
if(ptr[offset2] < c_b)
401
if(ptr[offset1] < c_b)
402
if(ptr[offset4] < c_b)
403
goto success_homogeneous;
404
else
405
goto homogeneous;
406
else
407
if(ptr[offset4] < c_b)
408
if(ptr[offset6] < c_b)
409
goto success_homogeneous;
410
else
411
goto homogeneous;
412
else
413
goto homogeneous;
414
else
415
if(ptr[offset7] < c_b)
416
if(ptr[offset4] < c_b)
417
if(ptr[offset6] < c_b)
418
goto success_homogeneous;
419
else
420
goto homogeneous;
421
else
422
goto homogeneous;
423
else
424
goto homogeneous;
425
else
426
goto homogeneous;
427
else
428
goto homogeneous;
429
}
430
}
431
structured:
432
{
433
x++;
434
if(x > xsizeB)
435
break;
436
else
437
{
438
const unsigned char* const ptr = img.ptr() + y*width + x;
439
const int cb = *ptr + threshold;
440
const int c_b = *ptr - threshold;
441
if(ptr[offset0] > cb)
442
if(ptr[offset2] > cb)
443
if(ptr[offset3] > cb)
444
if(ptr[offset5] > cb)
445
if(ptr[offset7] > cb)
446
if(ptr[offset1] > cb)
447
goto success_structured;
448
else
449
if(ptr[offset4] > cb)
450
if(ptr[offset6] > cb)
451
goto success_structured;
452
else
453
goto structured;
454
else
455
goto structured;
456
else
457
if(ptr[offset1] > cb)
458
if(ptr[offset4] > cb)
459
goto success_structured;
460
else
461
goto structured;
462
else
463
if(ptr[offset4] > cb)
464
if(ptr[offset6] > cb)
465
goto success_structured;
466
else
467
goto structured;
468
else
469
goto structured;
470
else
471
if(ptr[offset7] > cb)
472
if(ptr[offset1] > cb)
473
goto success_structured;
474
else
475
goto structured;
476
else
477
if(ptr[offset1] > cb)
478
if(ptr[offset4] > cb)
479
goto success_structured;
480
else
481
goto structured;
482
else
483
goto structured;
484
else
485
if(ptr[offset7] > cb)
486
if(ptr[offset6] > cb)
487
if(ptr[offset5] > cb)
488
if(ptr[offset1] > cb)
489
goto success_structured;
490
else
491
if(ptr[offset4] > cb)
492
goto success_structured;
493
else
494
goto structured;
495
else
496
if(ptr[offset1] > cb)
497
goto success_structured;
498
else
499
goto structured;
500
else
501
goto structured;
502
else
503
if(ptr[offset5] < c_b)
504
if(ptr[offset3] < c_b)
505
if(ptr[offset7] < c_b)
506
if(ptr[offset4] < c_b)
507
if(ptr[offset6] < c_b)
508
goto success_structured;
509
else
510
goto structured;
511
else
512
goto structured;
513
else
514
goto homogeneous;
515
else
516
goto homogeneous;
517
else
518
goto structured;
519
else
520
if(ptr[offset5] > cb)
521
if(ptr[offset7] > cb)
522
if(ptr[offset6] > cb)
523
if(ptr[offset1] > cb)
524
goto success_structured;
525
else
526
if(ptr[offset4] > cb)
527
goto success_structured;
528
else
529
goto structured;
530
else
531
goto structured;
532
else
533
goto structured;
534
else
535
if(ptr[offset5] < c_b)
536
if(ptr[offset3] < c_b)
537
if(ptr[offset2] < c_b)
538
if(ptr[offset1] < c_b)
539
if(ptr[offset4] < c_b)
540
goto success_structured;
541
else
542
goto structured;
543
else
544
if(ptr[offset4] < c_b)
545
if(ptr[offset6] < c_b)
546
goto success_structured;
547
else
548
goto structured;
549
else
550
goto structured;
551
else
552
if(ptr[offset7] < c_b)
553
if(ptr[offset4] < c_b)
554
if(ptr[offset6] < c_b)
555
goto success_homogeneous;
556
else
557
goto homogeneous;
558
else
559
goto homogeneous;
560
else
561
goto homogeneous;
562
else
563
goto structured;
564
else
565
goto homogeneous;
566
else
567
if(ptr[offset0] < c_b)
568
if(ptr[offset2] < c_b)
569
if(ptr[offset7] > cb)
570
if(ptr[offset3] < c_b)
571
if(ptr[offset5] < c_b)
572
if(ptr[offset1] < c_b)
573
if(ptr[offset4] < c_b)
574
goto success_structured;
575
else
576
goto structured;
577
else
578
if(ptr[offset4] < c_b)
579
if(ptr[offset6] < c_b)
580
goto success_structured;
581
else
582
goto structured;
583
else
584
goto structured;
585
else
586
if(ptr[offset1] < c_b)
587
if(ptr[offset4] < c_b)
588
goto success_structured;
589
else
590
goto structured;
591
else
592
goto structured;
593
else
594
if(ptr[offset5] > cb)
595
if(ptr[offset3] > cb)
596
if(ptr[offset4] > cb)
597
if(ptr[offset6] > cb)
598
goto success_structured;
599
else
600
goto structured;
601
else
602
goto structured;
603
else
604
goto homogeneous;
605
else
606
goto structured;
607
else
608
if(ptr[offset7] < c_b)
609
if(ptr[offset3] < c_b)
610
if(ptr[offset5] < c_b)
611
if(ptr[offset1] < c_b)
612
goto success_structured;
613
else
614
if(ptr[offset4] < c_b)
615
if(ptr[offset6] < c_b)
616
goto success_structured;
617
else
618
goto structured;
619
else
620
goto structured;
621
else
622
if(ptr[offset1] < c_b)
623
goto success_structured;
624
else
625
goto structured;
626
else
627
if(ptr[offset6] < c_b)
628
if(ptr[offset5] < c_b)
629
if(ptr[offset1] < c_b)
630
goto success_structured;
631
else
632
if(ptr[offset4] < c_b)
633
goto success_structured;
634
else
635
goto structured;
636
else
637
if(ptr[offset1] < c_b)
638
goto success_structured;
639
else
640
goto structured;
641
else
642
goto structured;
643
else
644
if(ptr[offset3] < c_b)
645
if(ptr[offset5] < c_b)
646
if(ptr[offset1] < c_b)
647
if(ptr[offset4] < c_b)
648
goto success_homogeneous;
649
else
650
goto homogeneous;
651
else
652
if(ptr[offset4] < c_b)
653
if(ptr[offset6] < c_b)
654
goto success_homogeneous;
655
else
656
goto homogeneous;
657
else
658
goto homogeneous;
659
else
660
if(ptr[offset1] < c_b)
661
if(ptr[offset4] < c_b)
662
goto success_homogeneous;
663
else
664
goto homogeneous;
665
else
666
goto homogeneous;
667
else
668
goto homogeneous;
669
else
670
if(ptr[offset5] > cb)
671
if(ptr[offset3] > cb)
672
if(ptr[offset2] > cb)
673
if(ptr[offset1] > cb)
674
if(ptr[offset4] > cb)
675
goto success_structured;
676
else
677
goto structured;
678
else
679
if(ptr[offset4] > cb)
680
if(ptr[offset6] > cb)
681
goto success_structured;
682
else
683
goto structured;
684
else
685
goto structured;
686
else
687
if(ptr[offset7] > cb)
688
if(ptr[offset4] > cb)
689
if(ptr[offset6] > cb)
690
goto success_homogeneous;
691
else
692
goto homogeneous;
693
else
694
goto homogeneous;
695
else
696
goto homogeneous;
697
else
698
goto structured;
699
else
700
if(ptr[offset5] < c_b)
701
if(ptr[offset7] < c_b)
702
if(ptr[offset6] < c_b)
703
if(ptr[offset1] < c_b)
704
goto success_structured;
705
else
706
if(ptr[offset4] < c_b)
707
goto success_structured;
708
else
709
goto structured;
710
else
711
goto structured;
712
else
713
goto structured;
714
else
715
goto homogeneous;
716
else
717
if(ptr[offset3] > cb)
718
if(ptr[offset5] > cb)
719
if(ptr[offset2] > cb)
720
if(ptr[offset1] > cb)
721
if(ptr[offset4] > cb)
722
goto success_homogeneous;
723
else
724
goto homogeneous;
725
else
726
if(ptr[offset4] > cb)
727
if(ptr[offset6] > cb)
728
goto success_homogeneous;
729
else
730
goto homogeneous;
731
else
732
goto homogeneous;
733
else
734
if(ptr[offset7] > cb)
735
if(ptr[offset4] > cb)
736
if(ptr[offset6] > cb)
737
goto success_homogeneous;
738
else
739
goto homogeneous;
740
else
741
goto homogeneous;
742
else
743
goto homogeneous;
744
else
745
goto homogeneous;
746
else
747
if(ptr[offset3] < c_b)
748
if(ptr[offset5] < c_b)
749
if(ptr[offset2] < c_b)
750
if(ptr[offset1] < c_b)
751
if(ptr[offset4] < c_b)
752
goto success_homogeneous;
753
else
754
goto homogeneous;
755
else
756
if(ptr[offset4] < c_b)
757
if(ptr[offset6] < c_b)
758
goto success_homogeneous;
759
else
760
goto homogeneous;
761
else
762
goto homogeneous;
763
else
764
if(ptr[offset7] < c_b)
765
if(ptr[offset4] < c_b)
766
if(ptr[offset6] < c_b)
767
goto success_homogeneous;
768
else
769
goto homogeneous;
770
else
771
goto homogeneous;
772
else
773
goto homogeneous;
774
else
775
goto homogeneous;
776
else
777
goto homogeneous;
778
}
779
}
780
success_homogeneous:
781
if(total == nExpectedCorners)
782
{
783
if(nExpectedCorners == 0)
784
{
785
nExpectedCorners = 512;
786
keypoints.reserve(nExpectedCorners);
787
}
788
else
789
{
790
nExpectedCorners *= 2;
791
keypoints.reserve(nExpectedCorners);
792
}
793
}
794
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
795
total++;
796
goto homogeneous;
797
success_structured:
798
if(total == nExpectedCorners)
799
{
800
if(nExpectedCorners == 0)
801
{
802
nExpectedCorners = 512;
803
keypoints.reserve(nExpectedCorners);
804
}
805
else
806
{
807
nExpectedCorners *= 2;
808
keypoints.reserve(nExpectedCorners);
809
}
810
}
811
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
812
total++;
813
goto structured;
814
}
815
}
816
}
817
818
static void AGAST_7_12d(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
819
{
820
cv::Mat img;
821
if(!_img.getMat().isContinuous())
822
img = _img.getMat().clone();
823
else
824
img = _img.getMat();
825
826
size_t total = 0;
827
int xsize = img.cols;
828
int ysize = img.rows;
829
size_t nExpectedCorners = keypoints.capacity();
830
int x, y;
831
int xsizeB = xsize - 4;
832
int ysizeB = ysize - 3;
833
int width;
834
835
keypoints.resize(0);
836
837
int pixel_7_12d_[16];
838
makeAgastOffsets(pixel_7_12d_, (int)img.step, AgastFeatureDetector::AGAST_7_12d);
839
840
short offset0 = (short) pixel_7_12d_[0];
841
short offset1 = (short) pixel_7_12d_[1];
842
short offset2 = (short) pixel_7_12d_[2];
843
short offset3 = (short) pixel_7_12d_[3];
844
short offset4 = (short) pixel_7_12d_[4];
845
short offset5 = (short) pixel_7_12d_[5];
846
short offset6 = (short) pixel_7_12d_[6];
847
short offset7 = (short) pixel_7_12d_[7];
848
short offset8 = (short) pixel_7_12d_[8];
849
short offset9 = (short) pixel_7_12d_[9];
850
short offset10 = (short) pixel_7_12d_[10];
851
short offset11 = (short) pixel_7_12d_[11];
852
853
width = xsize;
854
855
for(y = 3; y < ysizeB; y++)
856
{
857
x = 2;
858
while(true)
859
{
860
homogeneous:
861
{
862
x++;
863
if(x > xsizeB)
864
break;
865
else
866
{
867
const unsigned char* const ptr = img.ptr() + y*width + x;
868
const int cb = *ptr + threshold;
869
const int c_b = *ptr - threshold;
870
if(ptr[offset0] > cb)
871
if(ptr[offset5] > cb)
872
if(ptr[offset2] > cb)
873
if(ptr[offset9] > cb)
874
if(ptr[offset1] > cb)
875
if(ptr[offset6] > cb)
876
if(ptr[offset3] > cb)
877
if(ptr[offset4] > cb)
878
goto success_homogeneous;
879
else
880
if(ptr[offset10] > cb)
881
if(ptr[offset11] > cb)
882
goto success_structured;
883
else
884
goto homogeneous;
885
else
886
goto homogeneous;
887
else
888
if(ptr[offset8] > cb)
889
if(ptr[offset10] > cb)
890
if(ptr[offset11] > cb)
891
goto success_structured;
892
else
893
if(ptr[offset4] > cb)
894
if(ptr[offset7] > cb)
895
goto success_structured;
896
else
897
goto structured;
898
else
899
goto homogeneous;
900
else
901
goto homogeneous;
902
else
903
goto homogeneous;
904
else
905
if(ptr[offset11] > cb)
906
if(ptr[offset3] > cb)
907
if(ptr[offset4] > cb)
908
goto success_homogeneous;
909
else
910
if(ptr[offset10] > cb)
911
goto success_homogeneous;
912
else
913
goto homogeneous;
914
else
915
if(ptr[offset8] > cb)
916
if(ptr[offset10] > cb)
917
goto success_homogeneous;
918
else
919
goto homogeneous;
920
else
921
goto homogeneous;
922
else
923
goto homogeneous;
924
else
925
if(ptr[offset6] > cb)
926
if(ptr[offset7] > cb)
927
if(ptr[offset8] > cb)
928
if(ptr[offset4] > cb)
929
if(ptr[offset3] > cb)
930
goto success_structured;
931
else
932
if(ptr[offset10] > cb)
933
goto success_structured;
934
else
935
goto homogeneous;
936
else
937
if(ptr[offset10] > cb)
938
if(ptr[offset11] > cb)
939
goto success_structured;
940
else
941
goto homogeneous;
942
else
943
goto homogeneous;
944
else
945
goto homogeneous;
946
else
947
goto homogeneous;
948
else
949
goto homogeneous;
950
else
951
if(ptr[offset3] > cb)
952
if(ptr[offset4] > cb)
953
if(ptr[offset1] > cb)
954
if(ptr[offset6] > cb)
955
goto success_homogeneous;
956
else
957
if(ptr[offset11] > cb)
958
goto success_homogeneous;
959
else
960
goto homogeneous;
961
else
962
if(ptr[offset6] > cb)
963
if(ptr[offset7] > cb)
964
if(ptr[offset8] > cb)
965
goto success_homogeneous;
966
else
967
goto homogeneous;
968
else
969
goto homogeneous;
970
else
971
goto homogeneous;
972
else
973
goto homogeneous;
974
else
975
goto homogeneous;
976
else
977
if(ptr[offset9] > cb)
978
if(ptr[offset7] > cb)
979
if(ptr[offset8] > cb)
980
if(ptr[offset1] > cb)
981
if(ptr[offset10] > cb)
982
if(ptr[offset11] > cb)
983
goto success_homogeneous;
984
else
985
if(ptr[offset6] > cb)
986
if(ptr[offset4] > cb)
987
goto success_structured;
988
else
989
goto homogeneous;
990
else
991
goto homogeneous;
992
else
993
if(ptr[offset6] > cb)
994
if(ptr[offset3] > cb)
995
if(ptr[offset4] > cb)
996
goto success_structured;
997
else
998
goto homogeneous;
999
else
1000
goto homogeneous;
1001
else
1002
goto homogeneous;
1003
else
1004
if(ptr[offset6] > cb)
1005
if(ptr[offset4] > cb)
1006
if(ptr[offset3] > cb)
1007
goto success_homogeneous;
1008
else
1009
if(ptr[offset10] > cb)
1010
goto success_homogeneous;
1011
else
1012
goto homogeneous;
1013
else
1014
if(ptr[offset10] > cb)
1015
if(ptr[offset11] > cb)
1016
goto success_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
goto homogeneous;
1029
else
1030
if(ptr[offset5] < c_b)
1031
if(ptr[offset9] > cb)
1032
if(ptr[offset3] < c_b)
1033
if(ptr[offset4] < c_b)
1034
if(ptr[offset11] > cb)
1035
if(ptr[offset1] > cb)
1036
if(ptr[offset8] > cb)
1037
if(ptr[offset10] > cb)
1038
if(ptr[offset2] > cb)
1039
goto success_structured;
1040
else
1041
if(ptr[offset7] > cb)
1042
goto success_structured;
1043
else
1044
goto structured;
1045
else
1046
goto homogeneous;
1047
else
1048
if(ptr[offset6] < c_b)
1049
if(ptr[offset2] < c_b)
1050
if(ptr[offset7] < c_b)
1051
if(ptr[offset8] < c_b)
1052
goto success_structured;
1053
else
1054
goto structured;
1055
else
1056
goto structured;
1057
else
1058
goto homogeneous;
1059
else
1060
goto homogeneous;
1061
else
1062
if(ptr[offset6] > cb)
1063
if(ptr[offset7] > cb)
1064
if(ptr[offset8] > cb)
1065
if(ptr[offset10] > cb)
1066
goto success_structured;
1067
else
1068
goto structured;
1069
else
1070
goto homogeneous;
1071
else
1072
goto homogeneous;
1073
else
1074
if(ptr[offset6] < c_b)
1075
if(ptr[offset2] < c_b)
1076
if(ptr[offset7] < c_b)
1077
if(ptr[offset1] < c_b)
1078
goto success_structured;
1079
else
1080
if(ptr[offset8] < c_b)
1081
goto success_structured;
1082
else
1083
goto structured;
1084
else
1085
goto homogeneous;
1086
else
1087
goto homogeneous;
1088
else
1089
goto homogeneous;
1090
else
1091
if(ptr[offset2] < c_b)
1092
if(ptr[offset7] < c_b)
1093
if(ptr[offset1] < c_b)
1094
if(ptr[offset6] < c_b)
1095
goto success_structured;
1096
else
1097
goto homogeneous;
1098
else
1099
if(ptr[offset6] < c_b)
1100
if(ptr[offset8] < c_b)
1101
goto success_structured;
1102
else
1103
goto homogeneous;
1104
else
1105
goto homogeneous;
1106
else
1107
goto homogeneous;
1108
else
1109
goto homogeneous;
1110
else
1111
if(ptr[offset11] > cb)
1112
if(ptr[offset8] > cb)
1113
if(ptr[offset10] > cb)
1114
if(ptr[offset1] > cb)
1115
if(ptr[offset2] > cb)
1116
goto success_structured;
1117
else
1118
if(ptr[offset7] > cb)
1119
goto success_structured;
1120
else
1121
goto homogeneous;
1122
else
1123
if(ptr[offset6] > cb)
1124
if(ptr[offset7] > cb)
1125
goto success_structured;
1126
else
1127
goto homogeneous;
1128
else
1129
goto homogeneous;
1130
else
1131
goto homogeneous;
1132
else
1133
goto homogeneous;
1134
else
1135
goto homogeneous;
1136
else
1137
if(ptr[offset11] > cb)
1138
if(ptr[offset10] > cb)
1139
if(ptr[offset3] > cb)
1140
if(ptr[offset1] > cb)
1141
if(ptr[offset2] > cb)
1142
goto success_homogeneous;
1143
else
1144
if(ptr[offset7] > cb)
1145
if(ptr[offset8] > cb)
1146
goto success_structured;
1147
else
1148
goto homogeneous;
1149
else
1150
goto homogeneous;
1151
else
1152
if(ptr[offset6] > cb)
1153
if(ptr[offset7] > cb)
1154
if(ptr[offset8] > cb)
1155
goto success_structured;
1156
else
1157
goto homogeneous;
1158
else
1159
goto homogeneous;
1160
else
1161
goto homogeneous;
1162
else
1163
if(ptr[offset8] > cb)
1164
if(ptr[offset1] > cb)
1165
if(ptr[offset2] > cb)
1166
goto success_homogeneous;
1167
else
1168
if(ptr[offset7] > cb)
1169
goto success_homogeneous;
1170
else
1171
goto homogeneous;
1172
else
1173
if(ptr[offset6] > cb)
1174
if(ptr[offset7] > cb)
1175
goto success_homogeneous;
1176
else
1177
goto homogeneous;
1178
else
1179
goto homogeneous;
1180
else
1181
goto homogeneous;
1182
else
1183
goto homogeneous;
1184
else
1185
goto homogeneous;
1186
else
1187
if(ptr[offset9] < c_b)
1188
if(ptr[offset2] > cb)
1189
if(ptr[offset1] > cb)
1190
if(ptr[offset4] > cb)
1191
if(ptr[offset10] > cb)
1192
if(ptr[offset3] > cb)
1193
if(ptr[offset11] > cb)
1194
goto success_structured;
1195
else
1196
goto homogeneous;
1197
else
1198
goto homogeneous;
1199
else
1200
if(ptr[offset6] < c_b)
1201
if(ptr[offset7] < c_b)
1202
if(ptr[offset8] < c_b)
1203
if(ptr[offset11] < c_b)
1204
if(ptr[offset10] < c_b)
1205
goto success_structured;
1206
else
1207
goto structured;
1208
else
1209
goto structured;
1210
else
1211
goto homogeneous;
1212
else
1213
goto homogeneous;
1214
else
1215
goto homogeneous;
1216
else
1217
if(ptr[offset6] < c_b)
1218
if(ptr[offset7] < c_b)
1219
if(ptr[offset8] < c_b)
1220
if(ptr[offset10] < c_b)
1221
if(ptr[offset4] < c_b)
1222
goto success_structured;
1223
else
1224
if(ptr[offset11] < c_b)
1225
goto success_structured;
1226
else
1227
goto structured;
1228
else
1229
if(ptr[offset3] < c_b)
1230
if(ptr[offset4] < c_b)
1231
goto success_structured;
1232
else
1233
goto structured;
1234
else
1235
goto homogeneous;
1236
else
1237
goto homogeneous;
1238
else
1239
goto homogeneous;
1240
else
1241
goto homogeneous;
1242
else
1243
if(ptr[offset6] < c_b)
1244
if(ptr[offset7] < c_b)
1245
if(ptr[offset8] < c_b)
1246
if(ptr[offset4] < c_b)
1247
if(ptr[offset3] < c_b)
1248
goto success_structured;
1249
else
1250
if(ptr[offset10] < c_b)
1251
goto success_structured;
1252
else
1253
goto homogeneous;
1254
else
1255
if(ptr[offset10] < c_b)
1256
if(ptr[offset11] < c_b)
1257
goto success_structured;
1258
else
1259
goto homogeneous;
1260
else
1261
goto homogeneous;
1262
else
1263
goto homogeneous;
1264
else
1265
goto homogeneous;
1266
else
1267
goto homogeneous;
1268
else
1269
if(ptr[offset6] < c_b)
1270
if(ptr[offset7] < c_b)
1271
if(ptr[offset8] < c_b)
1272
if(ptr[offset4] < c_b)
1273
if(ptr[offset3] < c_b)
1274
goto success_homogeneous;
1275
else
1276
if(ptr[offset10] < c_b)
1277
goto success_homogeneous;
1278
else
1279
goto homogeneous;
1280
else
1281
if(ptr[offset10] < c_b)
1282
if(ptr[offset11] < c_b)
1283
goto success_homogeneous;
1284
else
1285
goto homogeneous;
1286
else
1287
goto homogeneous;
1288
else
1289
if(ptr[offset2] < c_b)
1290
if(ptr[offset1] < c_b)
1291
if(ptr[offset3] < c_b)
1292
if(ptr[offset4] < c_b)
1293
goto success_structured;
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
goto homogeneous;
1306
else
1307
if(ptr[offset2] > cb)
1308
if(ptr[offset1] > cb)
1309
if(ptr[offset3] > cb)
1310
if(ptr[offset4] > cb)
1311
if(ptr[offset10] > cb)
1312
if(ptr[offset11] > cb)
1313
goto success_homogeneous;
1314
else
1315
goto homogeneous;
1316
else
1317
goto homogeneous;
1318
else
1319
goto homogeneous;
1320
else
1321
goto homogeneous;
1322
else
1323
goto homogeneous;
1324
else
1325
if(ptr[offset2] < c_b)
1326
if(ptr[offset3] < c_b)
1327
if(ptr[offset4] < c_b)
1328
if(ptr[offset7] < c_b)
1329
if(ptr[offset1] < c_b)
1330
if(ptr[offset6] < c_b)
1331
goto success_homogeneous;
1332
else
1333
goto homogeneous;
1334
else
1335
if(ptr[offset6] < c_b)
1336
if(ptr[offset8] < c_b)
1337
goto success_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
goto homogeneous;
1350
else
1351
if(ptr[offset2] > cb)
1352
if(ptr[offset10] > cb)
1353
if(ptr[offset11] > cb)
1354
if(ptr[offset9] > cb)
1355
if(ptr[offset1] > cb)
1356
if(ptr[offset3] > cb)
1357
goto success_homogeneous;
1358
else
1359
if(ptr[offset8] > cb)
1360
goto success_homogeneous;
1361
else
1362
goto homogeneous;
1363
else
1364
if(ptr[offset6] > cb)
1365
if(ptr[offset7] > cb)
1366
if(ptr[offset8] > cb)
1367
goto success_homogeneous;
1368
else
1369
goto homogeneous;
1370
else
1371
goto homogeneous;
1372
else
1373
goto homogeneous;
1374
else
1375
if(ptr[offset1] > cb)
1376
if(ptr[offset3] > cb)
1377
if(ptr[offset4] > cb)
1378
goto success_homogeneous;
1379
else
1380
goto homogeneous;
1381
else
1382
goto homogeneous;
1383
else
1384
goto homogeneous;
1385
else
1386
goto homogeneous;
1387
else
1388
goto homogeneous;
1389
else
1390
if(ptr[offset9] > cb)
1391
if(ptr[offset7] > cb)
1392
if(ptr[offset8] > cb)
1393
if(ptr[offset10] > cb)
1394
if(ptr[offset11] > cb)
1395
if(ptr[offset1] > cb)
1396
goto success_homogeneous;
1397
else
1398
if(ptr[offset6] > cb)
1399
goto success_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
1411
goto homogeneous;
1412
else
1413
if(ptr[offset0] < c_b)
1414
if(ptr[offset2] > cb)
1415
if(ptr[offset5] > cb)
1416
if(ptr[offset7] > cb)
1417
if(ptr[offset6] > cb)
1418
if(ptr[offset4] > cb)
1419
if(ptr[offset3] > cb)
1420
if(ptr[offset1] > cb)
1421
goto success_homogeneous;
1422
else
1423
if(ptr[offset8] > cb)
1424
goto success_homogeneous;
1425
else
1426
goto homogeneous;
1427
else
1428
if(ptr[offset9] > cb)
1429
if(ptr[offset8] > cb)
1430
if(ptr[offset10] > cb)
1431
goto success_structured;
1432
else
1433
goto homogeneous;
1434
else
1435
goto homogeneous;
1436
else
1437
goto homogeneous;
1438
else
1439
if(ptr[offset9] > cb)
1440
if(ptr[offset8] > cb)
1441
if(ptr[offset10] > cb)
1442
if(ptr[offset11] > cb)
1443
goto success_structured;
1444
else
1445
goto homogeneous;
1446
else
1447
goto homogeneous;
1448
else
1449
goto homogeneous;
1450
else
1451
goto homogeneous;
1452
else
1453
goto homogeneous;
1454
else
1455
if(ptr[offset9] < c_b)
1456
if(ptr[offset8] < c_b)
1457
if(ptr[offset10] < c_b)
1458
if(ptr[offset11] < c_b)
1459
if(ptr[offset7] < c_b)
1460
if(ptr[offset1] < c_b)
1461
goto success_structured;
1462
else
1463
if(ptr[offset6] < c_b)
1464
goto success_structured;
1465
else
1466
goto homogeneous;
1467
else
1468
goto homogeneous;
1469
else
1470
goto homogeneous;
1471
else
1472
goto homogeneous;
1473
else
1474
goto homogeneous;
1475
else
1476
goto homogeneous;
1477
else
1478
if(ptr[offset9] < c_b)
1479
if(ptr[offset7] < c_b)
1480
if(ptr[offset8] < c_b)
1481
if(ptr[offset5] < c_b)
1482
if(ptr[offset1] < c_b)
1483
if(ptr[offset10] < c_b)
1484
if(ptr[offset11] < c_b)
1485
goto success_structured;
1486
else
1487
if(ptr[offset6] < c_b)
1488
if(ptr[offset4] < c_b)
1489
goto success_structured;
1490
else
1491
goto structured;
1492
else
1493
goto homogeneous;
1494
else
1495
if(ptr[offset6] < c_b)
1496
if(ptr[offset3] < c_b)
1497
if(ptr[offset4] < c_b)
1498
goto success_structured;
1499
else
1500
goto structured;
1501
else
1502
goto homogeneous;
1503
else
1504
goto homogeneous;
1505
else
1506
if(ptr[offset6] < c_b)
1507
if(ptr[offset4] < c_b)
1508
if(ptr[offset3] < c_b)
1509
goto success_structured;
1510
else
1511
if(ptr[offset10] < c_b)
1512
goto success_structured;
1513
else
1514
goto homogeneous;
1515
else
1516
if(ptr[offset10] < c_b)
1517
if(ptr[offset11] < c_b)
1518
goto success_structured;
1519
else
1520
goto homogeneous;
1521
else
1522
goto homogeneous;
1523
else
1524
goto homogeneous;
1525
else
1526
if(ptr[offset10] < c_b)
1527
if(ptr[offset11] < c_b)
1528
if(ptr[offset1] < c_b)
1529
goto success_homogeneous;
1530
else
1531
if(ptr[offset6] < c_b)
1532
goto success_homogeneous;
1533
else
1534
goto homogeneous;
1535
else
1536
goto homogeneous;
1537
else
1538
goto homogeneous;
1539
else
1540
goto homogeneous;
1541
else
1542
goto homogeneous;
1543
else
1544
goto homogeneous;
1545
else
1546
if(ptr[offset2] < c_b)
1547
if(ptr[offset9] > cb)
1548
if(ptr[offset5] > cb)
1549
if(ptr[offset1] < c_b)
1550
if(ptr[offset4] < c_b)
1551
if(ptr[offset10] < c_b)
1552
if(ptr[offset3] < c_b)
1553
if(ptr[offset11] < c_b)
1554
goto success_structured;
1555
else
1556
goto homogeneous;
1557
else
1558
goto homogeneous;
1559
else
1560
if(ptr[offset6] > cb)
1561
if(ptr[offset7] > cb)
1562
if(ptr[offset8] > cb)
1563
if(ptr[offset11] > cb)
1564
if(ptr[offset10] > cb)
1565
goto success_structured;
1566
else
1567
goto structured;
1568
else
1569
goto structured;
1570
else
1571
goto homogeneous;
1572
else
1573
goto homogeneous;
1574
else
1575
goto homogeneous;
1576
else
1577
if(ptr[offset6] > cb)
1578
if(ptr[offset7] > cb)
1579
if(ptr[offset8] > cb)
1580
if(ptr[offset10] > cb)
1581
if(ptr[offset4] > cb)
1582
goto success_structured;
1583
else
1584
if(ptr[offset11] > cb)
1585
goto success_structured;
1586
else
1587
goto structured;
1588
else
1589
if(ptr[offset3] > cb)
1590
if(ptr[offset4] > cb)
1591
goto success_structured;
1592
else
1593
goto structured;
1594
else
1595
goto homogeneous;
1596
else
1597
goto homogeneous;
1598
else
1599
goto homogeneous;
1600
else
1601
goto homogeneous;
1602
else
1603
if(ptr[offset6] > cb)
1604
if(ptr[offset7] > cb)
1605
if(ptr[offset8] > cb)
1606
if(ptr[offset4] > cb)
1607
if(ptr[offset3] > cb)
1608
goto success_structured;
1609
else
1610
if(ptr[offset10] > cb)
1611
goto success_structured;
1612
else
1613
goto homogeneous;
1614
else
1615
if(ptr[offset10] > cb)
1616
if(ptr[offset11] > cb)
1617
goto success_structured;
1618
else
1619
goto homogeneous;
1620
else
1621
goto homogeneous;
1622
else
1623
goto homogeneous;
1624
else
1625
goto homogeneous;
1626
else
1627
goto homogeneous;
1628
else
1629
if(ptr[offset3] < c_b)
1630
if(ptr[offset4] < c_b)
1631
if(ptr[offset5] < c_b)
1632
if(ptr[offset1] < c_b)
1633
if(ptr[offset6] < c_b)
1634
goto success_homogeneous;
1635
else
1636
if(ptr[offset11] < c_b)
1637
goto success_homogeneous;
1638
else
1639
goto homogeneous;
1640
else
1641
if(ptr[offset6] < c_b)
1642
if(ptr[offset7] < c_b)
1643
if(ptr[offset8] < c_b)
1644
goto success_structured;
1645
else
1646
goto homogeneous;
1647
else
1648
goto homogeneous;
1649
else
1650
goto homogeneous;
1651
else
1652
if(ptr[offset1] < c_b)
1653
if(ptr[offset10] < c_b)
1654
if(ptr[offset11] < c_b)
1655
goto success_homogeneous;
1656
else
1657
goto homogeneous;
1658
else
1659
goto homogeneous;
1660
else
1661
goto homogeneous;
1662
else
1663
goto homogeneous;
1664
else
1665
goto homogeneous;
1666
else
1667
if(ptr[offset9] < c_b)
1668
if(ptr[offset5] < c_b)
1669
if(ptr[offset1] < c_b)
1670
if(ptr[offset6] < c_b)
1671
if(ptr[offset3] < c_b)
1672
if(ptr[offset4] < c_b)
1673
goto success_homogeneous;
1674
else
1675
if(ptr[offset10] < c_b)
1676
if(ptr[offset11] < c_b)
1677
goto success_structured;
1678
else
1679
goto homogeneous;
1680
else
1681
goto homogeneous;
1682
else
1683
if(ptr[offset8] < c_b)
1684
if(ptr[offset10] < c_b)
1685
if(ptr[offset11] < c_b)
1686
goto success_structured;
1687
else
1688
if(ptr[offset4] < c_b)
1689
if(ptr[offset7] < c_b)
1690
goto success_structured;
1691
else
1692
goto structured;
1693
else
1694
goto homogeneous;
1695
else
1696
goto homogeneous;
1697
else
1698
goto homogeneous;
1699
else
1700
if(ptr[offset11] < c_b)
1701
if(ptr[offset3] < c_b)
1702
if(ptr[offset4] < c_b)
1703
goto success_homogeneous;
1704
else
1705
if(ptr[offset10] < c_b)
1706
goto success_homogeneous;
1707
else
1708
goto homogeneous;
1709
else
1710
if(ptr[offset8] < c_b)
1711
if(ptr[offset10] < c_b)
1712
goto success_homogeneous;
1713
else
1714
goto homogeneous;
1715
else
1716
goto homogeneous;
1717
else
1718
goto homogeneous;
1719
else
1720
if(ptr[offset6] < c_b)
1721
if(ptr[offset7] < c_b)
1722
if(ptr[offset8] < c_b)
1723
if(ptr[offset4] < c_b)
1724
if(ptr[offset3] < c_b)
1725
goto success_structured;
1726
else
1727
if(ptr[offset10] < c_b)
1728
goto success_structured;
1729
else
1730
goto homogeneous;
1731
else
1732
if(ptr[offset10] < c_b)
1733
if(ptr[offset11] < c_b)
1734
goto success_structured;
1735
else
1736
goto homogeneous;
1737
else
1738
goto homogeneous;
1739
else
1740
goto homogeneous;
1741
else
1742
goto homogeneous;
1743
else
1744
goto homogeneous;
1745
else
1746
if(ptr[offset10] < c_b)
1747
if(ptr[offset11] < c_b)
1748
if(ptr[offset1] < c_b)
1749
if(ptr[offset3] < c_b)
1750
goto success_homogeneous;
1751
else
1752
if(ptr[offset8] < c_b)
1753
goto success_homogeneous;
1754
else
1755
goto homogeneous;
1756
else
1757
if(ptr[offset6] < c_b)
1758
if(ptr[offset7] < c_b)
1759
if(ptr[offset8] < c_b)
1760
goto success_homogeneous;
1761
else
1762
goto homogeneous;
1763
else
1764
goto homogeneous;
1765
else
1766
goto homogeneous;
1767
else
1768
goto homogeneous;
1769
else
1770
goto homogeneous;
1771
else
1772
if(ptr[offset3] < c_b)
1773
if(ptr[offset4] < c_b)
1774
if(ptr[offset5] < c_b)
1775
if(ptr[offset1] < c_b)
1776
if(ptr[offset6] < c_b)
1777
goto success_homogeneous;
1778
else
1779
if(ptr[offset11] < c_b)
1780
goto success_homogeneous;
1781
else
1782
goto homogeneous;
1783
else
1784
if(ptr[offset6] < c_b)
1785
if(ptr[offset7] < c_b)
1786
if(ptr[offset8] < c_b)
1787
goto success_homogeneous;
1788
else
1789
goto homogeneous;
1790
else
1791
goto homogeneous;
1792
else
1793
goto homogeneous;
1794
else
1795
if(ptr[offset1] < c_b)
1796
if(ptr[offset10] < c_b)
1797
if(ptr[offset11] < c_b)
1798
goto success_homogeneous;
1799
else
1800
goto homogeneous;
1801
else
1802
goto homogeneous;
1803
else
1804
goto homogeneous;
1805
else
1806
goto homogeneous;
1807
else
1808
goto homogeneous;
1809
else
1810
if(ptr[offset9] < c_b)
1811
if(ptr[offset7] < c_b)
1812
if(ptr[offset8] < c_b)
1813
if(ptr[offset5] < c_b)
1814
if(ptr[offset1] < c_b)
1815
if(ptr[offset10] < c_b)
1816
if(ptr[offset11] < c_b)
1817
goto success_homogeneous;
1818
else
1819
if(ptr[offset6] < c_b)
1820
if(ptr[offset4] < c_b)
1821
goto success_structured;
1822
else
1823
goto homogeneous;
1824
else
1825
goto homogeneous;
1826
else
1827
if(ptr[offset6] < c_b)
1828
if(ptr[offset3] < c_b)
1829
if(ptr[offset4] < c_b)
1830
goto success_structured;
1831
else
1832
goto homogeneous;
1833
else
1834
goto homogeneous;
1835
else
1836
goto homogeneous;
1837
else
1838
if(ptr[offset6] < c_b)
1839
if(ptr[offset4] < c_b)
1840
if(ptr[offset3] < c_b)
1841
goto success_homogeneous;
1842
else
1843
if(ptr[offset10] < c_b)
1844
goto success_homogeneous;
1845
else
1846
goto homogeneous;
1847
else
1848
if(ptr[offset10] < c_b)
1849
if(ptr[offset11] < c_b)
1850
goto success_homogeneous;
1851
else
1852
goto homogeneous;
1853
else
1854
goto homogeneous;
1855
else
1856
goto homogeneous;
1857
else
1858
if(ptr[offset10] < c_b)
1859
if(ptr[offset11] < c_b)
1860
if(ptr[offset1] < c_b)
1861
goto success_homogeneous;
1862
else
1863
if(ptr[offset6] < c_b)
1864
goto success_homogeneous;
1865
else
1866
goto homogeneous;
1867
else
1868
goto homogeneous;
1869
else
1870
goto homogeneous;
1871
else
1872
goto homogeneous;
1873
else
1874
goto homogeneous;
1875
else
1876
if(ptr[offset5] > cb)
1877
if(ptr[offset9] > cb)
1878
if(ptr[offset6] > cb)
1879
if(ptr[offset7] > cb)
1880
if(ptr[offset8] > cb)
1881
if(ptr[offset4] > cb)
1882
if(ptr[offset3] > cb)
1883
goto success_homogeneous;
1884
else
1885
if(ptr[offset10] > cb)
1886
goto success_homogeneous;
1887
else
1888
goto homogeneous;
1889
else
1890
if(ptr[offset10] > cb)
1891
if(ptr[offset11] > cb)
1892
goto success_homogeneous;
1893
else
1894
goto homogeneous;
1895
else
1896
goto homogeneous;
1897
else
1898
goto homogeneous;
1899
else
1900
goto homogeneous;
1901
else
1902
goto homogeneous;
1903
else
1904
goto homogeneous;
1905
else
1906
goto homogeneous;
1907
else
1908
if(ptr[offset5] > cb)
1909
if(ptr[offset9] > cb)
1910
if(ptr[offset6] > cb)
1911
if(ptr[offset7] > cb)
1912
if(ptr[offset4] > cb)
1913
if(ptr[offset3] > cb)
1914
if(ptr[offset8] > cb)
1915
goto success_homogeneous;
1916
else
1917
if(ptr[offset1] > cb)
1918
if(ptr[offset2] > cb)
1919
goto success_homogeneous;
1920
else
1921
goto homogeneous;
1922
else
1923
goto homogeneous;
1924
else
1925
if(ptr[offset8] > cb)
1926
if(ptr[offset10] > cb)
1927
goto success_homogeneous;
1928
else
1929
goto homogeneous;
1930
else
1931
goto homogeneous;
1932
else
1933
if(ptr[offset11] > cb)
1934
if(ptr[offset8] > cb)
1935
if(ptr[offset10] > cb)
1936
goto success_homogeneous;
1937
else
1938
goto homogeneous;
1939
else
1940
goto homogeneous;
1941
else
1942
goto homogeneous;
1943
else
1944
goto homogeneous;
1945
else
1946
goto homogeneous;
1947
else
1948
if(ptr[offset2] > cb)
1949
if(ptr[offset3] > cb)
1950
if(ptr[offset4] > cb)
1951
if(ptr[offset7] > cb)
1952
if(ptr[offset1] > cb)
1953
if(ptr[offset6] > cb)
1954
goto success_homogeneous;
1955
else
1956
goto homogeneous;
1957
else
1958
if(ptr[offset6] > cb)
1959
if(ptr[offset8] > cb)
1960
goto success_homogeneous;
1961
else
1962
goto homogeneous;
1963
else
1964
goto homogeneous;
1965
else
1966
goto homogeneous;
1967
else
1968
goto homogeneous;
1969
else
1970
goto homogeneous;
1971
else
1972
goto homogeneous;
1973
else
1974
if(ptr[offset5] < c_b)
1975
if(ptr[offset9] < c_b)
1976
if(ptr[offset6] < c_b)
1977
if(ptr[offset7] < c_b)
1978
if(ptr[offset4] < c_b)
1979
if(ptr[offset3] < c_b)
1980
if(ptr[offset8] < c_b)
1981
goto success_homogeneous;
1982
else
1983
if(ptr[offset1] < c_b)
1984
if(ptr[offset2] < c_b)
1985
goto success_homogeneous;
1986
else
1987
goto homogeneous;
1988
else
1989
goto homogeneous;
1990
else
1991
if(ptr[offset8] < c_b)
1992
if(ptr[offset10] < c_b)
1993
goto success_homogeneous;
1994
else
1995
goto homogeneous;
1996
else
1997
goto homogeneous;
1998
else
1999
if(ptr[offset11] < c_b)
2000
if(ptr[offset8] < c_b)
2001
if(ptr[offset10] < c_b)
2002
goto success_homogeneous;
2003
else
2004
goto homogeneous;
2005
else
2006
goto homogeneous;
2007
else
2008
goto homogeneous;
2009
else
2010
goto homogeneous;
2011
else
2012
goto homogeneous;
2013
else
2014
if(ptr[offset2] < c_b)
2015
if(ptr[offset3] < c_b)
2016
if(ptr[offset4] < c_b)
2017
if(ptr[offset7] < c_b)
2018
if(ptr[offset1] < c_b)
2019
if(ptr[offset6] < c_b)
2020
goto success_homogeneous;
2021
else
2022
goto homogeneous;
2023
else
2024
if(ptr[offset6] < c_b)
2025
if(ptr[offset8] < c_b)
2026
goto success_homogeneous;
2027
else
2028
goto homogeneous;
2029
else
2030
goto homogeneous;
2031
else
2032
goto homogeneous;
2033
else
2034
goto homogeneous;
2035
else
2036
goto homogeneous;
2037
else
2038
goto homogeneous;
2039
else
2040
goto homogeneous;
2041
}
2042
}
2043
structured:
2044
{
2045
x++;
2046
if(x > xsizeB)
2047
break;
2048
else
2049
{
2050
const unsigned char* const ptr = img.ptr() + y*width + x;
2051
const int cb = *ptr + threshold;
2052
const int c_b = *ptr - threshold;
2053
if(ptr[offset0] > cb)
2054
if(ptr[offset5] > cb)
2055
if(ptr[offset2] > cb)
2056
if(ptr[offset9] > cb)
2057
if(ptr[offset1] > cb)
2058
if(ptr[offset6] > cb)
2059
if(ptr[offset3] > cb)
2060
if(ptr[offset4] > cb)
2061
goto success_structured;
2062
else
2063
if(ptr[offset10] > cb)
2064
if(ptr[offset11] > cb)
2065
goto success_structured;
2066
else
2067
goto structured;
2068
else
2069
goto structured;
2070
else
2071
if(ptr[offset8] > cb)
2072
if(ptr[offset10] > cb)
2073
if(ptr[offset11] > cb)
2074
goto success_structured;
2075
else
2076
if(ptr[offset4] > cb)
2077
if(ptr[offset7] > cb)
2078
goto success_structured;
2079
else
2080
goto structured;
2081
else
2082
goto structured;
2083
else
2084
goto structured;
2085
else
2086
goto structured;
2087
else
2088
if(ptr[offset11] > cb)
2089
if(ptr[offset3] > cb)
2090
if(ptr[offset4] > cb)
2091
goto success_structured;
2092
else
2093
if(ptr[offset10] > cb)
2094
goto success_structured;
2095
else
2096
goto structured;
2097
else
2098
if(ptr[offset8] > cb)
2099
if(ptr[offset10] > cb)
2100
goto success_structured;
2101
else
2102
goto structured;
2103
else
2104
goto structured;
2105
else
2106
goto structured;
2107
else
2108
if(ptr[offset6] > cb)
2109
if(ptr[offset7] > cb)
2110
if(ptr[offset8] > cb)
2111
if(ptr[offset4] > cb)
2112
if(ptr[offset3] > cb)
2113
goto success_structured;
2114
else
2115
if(ptr[offset10] > cb)
2116
goto success_structured;
2117
else
2118
goto structured;
2119
else
2120
if(ptr[offset10] > cb)
2121
if(ptr[offset11] > cb)
2122
goto success_structured;
2123
else
2124
goto structured;
2125
else
2126
goto structured;
2127
else
2128
goto structured;
2129
else
2130
goto structured;
2131
else
2132
goto structured;
2133
else
2134
if(ptr[offset3] > cb)
2135
if(ptr[offset4] > cb)
2136
if(ptr[offset1] > cb)
2137
if(ptr[offset6] > cb)
2138
goto success_structured;
2139
else
2140
if(ptr[offset11] > cb)
2141
goto success_structured;
2142
else
2143
goto structured;
2144
else
2145
if(ptr[offset6] > cb)
2146
if(ptr[offset7] > cb)
2147
if(ptr[offset8] > cb)
2148
goto success_structured;
2149
else
2150
goto structured;
2151
else
2152
goto structured;
2153
else
2154
goto structured;
2155
else
2156
goto structured;
2157
else
2158
goto structured;
2159
else
2160
if(ptr[offset9] > cb)
2161
if(ptr[offset7] > cb)
2162
if(ptr[offset8] > cb)
2163
if(ptr[offset1] > cb)
2164
if(ptr[offset10] > cb)
2165
if(ptr[offset11] > cb)
2166
goto success_structured;
2167
else
2168
if(ptr[offset6] > cb)
2169
if(ptr[offset4] > cb)
2170
goto success_structured;
2171
else
2172
goto structured;
2173
else
2174
goto structured;
2175
else
2176
if(ptr[offset6] > cb)
2177
if(ptr[offset3] > cb)
2178
if(ptr[offset4] > cb)
2179
goto success_structured;
2180
else
2181
goto structured;
2182
else
2183
goto structured;
2184
else
2185
goto structured;
2186
else
2187
if(ptr[offset6] > cb)
2188
if(ptr[offset4] > cb)
2189
if(ptr[offset3] > cb)
2190
goto success_structured;
2191
else
2192
if(ptr[offset10] > cb)
2193
goto success_structured;
2194
else
2195
goto structured;
2196
else
2197
if(ptr[offset10] > cb)
2198
if(ptr[offset11] > cb)
2199
goto success_structured;
2200
else
2201
goto structured;
2202
else
2203
goto structured;
2204
else
2205
goto structured;
2206
else
2207
goto structured;
2208
else
2209
goto structured;
2210
else
2211
goto structured;
2212
else
2213
if(ptr[offset5] < c_b)
2214
if(ptr[offset9] > cb)
2215
if(ptr[offset3] < c_b)
2216
if(ptr[offset4] < c_b)
2217
if(ptr[offset11] > cb)
2218
if(ptr[offset1] > cb)
2219
if(ptr[offset8] > cb)
2220
if(ptr[offset10] > cb)
2221
if(ptr[offset2] > cb)
2222
goto success_structured;
2223
else
2224
if(ptr[offset7] > cb)
2225
goto success_structured;
2226
else
2227
goto structured;
2228
else
2229
goto structured;
2230
else
2231
if(ptr[offset6] < c_b)
2232
if(ptr[offset2] < c_b)
2233
if(ptr[offset7] < c_b)
2234
if(ptr[offset8] < c_b)
2235
goto success_structured;
2236
else
2237
goto structured;
2238
else
2239
goto structured;
2240
else
2241
goto structured;
2242
else
2243
goto structured;
2244
else
2245
if(ptr[offset6] > cb)
2246
if(ptr[offset7] > cb)
2247
if(ptr[offset8] > cb)
2248
if(ptr[offset10] > cb)
2249
goto success_structured;
2250
else
2251
goto structured;
2252
else
2253
goto structured;
2254
else
2255
goto structured;
2256
else
2257
if(ptr[offset6] < c_b)
2258
if(ptr[offset2] < c_b)
2259
if(ptr[offset7] < c_b)
2260
if(ptr[offset1] < c_b)
2261
goto success_structured;
2262
else
2263
if(ptr[offset8] < c_b)
2264
goto success_structured;
2265
else
2266
goto structured;
2267
else
2268
goto structured;
2269
else
2270
goto structured;
2271
else
2272
goto structured;
2273
else
2274
if(ptr[offset2] < c_b)
2275
if(ptr[offset7] < c_b)
2276
if(ptr[offset1] < c_b)
2277
if(ptr[offset6] < c_b)
2278
goto success_structured;
2279
else
2280
goto structured;
2281
else
2282
if(ptr[offset6] < c_b)
2283
if(ptr[offset8] < c_b)
2284
goto success_structured;
2285
else
2286
goto structured;
2287
else
2288
goto structured;
2289
else
2290
goto structured;
2291
else
2292
goto structured;
2293
else
2294
if(ptr[offset11] > cb)
2295
if(ptr[offset8] > cb)
2296
if(ptr[offset10] > cb)
2297
if(ptr[offset1] > cb)
2298
if(ptr[offset2] > cb)
2299
goto success_structured;
2300
else
2301
if(ptr[offset7] > cb)
2302
goto success_structured;
2303
else
2304
goto structured;
2305
else
2306
if(ptr[offset6] > cb)
2307
if(ptr[offset7] > cb)
2308
goto success_structured;
2309
else
2310
goto structured;
2311
else
2312
goto structured;
2313
else
2314
goto structured;
2315
else
2316
goto structured;
2317
else
2318
goto structured;
2319
else
2320
if(ptr[offset11] > cb)
2321
if(ptr[offset10] > cb)
2322
if(ptr[offset3] > cb)
2323
if(ptr[offset1] > cb)
2324
if(ptr[offset2] > cb)
2325
goto success_structured;
2326
else
2327
if(ptr[offset7] > cb)
2328
if(ptr[offset8] > cb)
2329
goto success_structured;
2330
else
2331
goto structured;
2332
else
2333
goto structured;
2334
else
2335
if(ptr[offset6] > cb)
2336
if(ptr[offset7] > cb)
2337
if(ptr[offset8] > cb)
2338
goto success_structured;
2339
else
2340
goto structured;
2341
else
2342
goto structured;
2343
else
2344
goto structured;
2345
else
2346
if(ptr[offset8] > cb)
2347
if(ptr[offset1] > cb)
2348
if(ptr[offset2] > cb)
2349
goto success_structured;
2350
else
2351
if(ptr[offset7] > cb)
2352
goto success_structured;
2353
else
2354
goto structured;
2355
else
2356
if(ptr[offset6] > cb)
2357
if(ptr[offset7] > cb)
2358
goto success_structured;
2359
else
2360
goto structured;
2361
else
2362
goto structured;
2363
else
2364
goto structured;
2365
else
2366
goto structured;
2367
else
2368
goto structured;
2369
else
2370
if(ptr[offset9] < c_b)
2371
if(ptr[offset2] > cb)
2372
if(ptr[offset1] > cb)
2373
if(ptr[offset4] > cb)
2374
if(ptr[offset10] > cb)
2375
if(ptr[offset3] > cb)
2376
if(ptr[offset11] > cb)
2377
goto success_structured;
2378
else
2379
goto structured;
2380
else
2381
goto structured;
2382
else
2383
if(ptr[offset6] < c_b)
2384
if(ptr[offset7] < c_b)
2385
if(ptr[offset8] < c_b)
2386
if(ptr[offset11] < c_b)
2387
if(ptr[offset10] < c_b)
2388
goto success_structured;
2389
else
2390
goto structured;
2391
else
2392
goto structured;
2393
else
2394
goto structured;
2395
else
2396
goto structured;
2397
else
2398
goto structured;
2399
else
2400
if(ptr[offset6] < c_b)
2401
if(ptr[offset7] < c_b)
2402
if(ptr[offset8] < c_b)
2403
if(ptr[offset10] < c_b)
2404
if(ptr[offset4] < c_b)
2405
goto success_structured;
2406
else
2407
if(ptr[offset11] < c_b)
2408
goto success_structured;
2409
else
2410
goto structured;
2411
else
2412
if(ptr[offset3] < c_b)
2413
if(ptr[offset4] < c_b)
2414
goto success_structured;
2415
else
2416
goto structured;
2417
else
2418
goto structured;
2419
else
2420
goto structured;
2421
else
2422
goto structured;
2423
else
2424
goto structured;
2425
else
2426
if(ptr[offset6] < c_b)
2427
if(ptr[offset7] < c_b)
2428
if(ptr[offset8] < c_b)
2429
if(ptr[offset4] < c_b)
2430
if(ptr[offset3] < c_b)
2431
goto success_structured;
2432
else
2433
if(ptr[offset10] < c_b)
2434
goto success_structured;
2435
else
2436
goto structured;
2437
else
2438
if(ptr[offset10] < c_b)
2439
if(ptr[offset11] < c_b)
2440
goto success_structured;
2441
else
2442
goto structured;
2443
else
2444
goto structured;
2445
else
2446
goto structured;
2447
else
2448
goto structured;
2449
else
2450
goto structured;
2451
else
2452
if(ptr[offset6] < c_b)
2453
if(ptr[offset7] < c_b)
2454
if(ptr[offset8] < c_b)
2455
if(ptr[offset4] < c_b)
2456
if(ptr[offset3] < c_b)
2457
goto success_structured;
2458
else
2459
if(ptr[offset10] < c_b)
2460
goto success_structured;
2461
else
2462
goto structured;
2463
else
2464
if(ptr[offset10] < c_b)
2465
if(ptr[offset11] < c_b)
2466
goto success_structured;
2467
else
2468
goto structured;
2469
else
2470
goto structured;
2471
else
2472
if(ptr[offset2] < c_b)
2473
if(ptr[offset1] < c_b)
2474
if(ptr[offset3] < c_b)
2475
if(ptr[offset4] < c_b)
2476
goto success_structured;
2477
else
2478
goto structured;
2479
else
2480
goto structured;
2481
else
2482
goto structured;
2483
else
2484
goto structured;
2485
else
2486
goto structured;
2487
else
2488
goto structured;
2489
else
2490
if(ptr[offset2] > cb)
2491
if(ptr[offset1] > cb)
2492
if(ptr[offset3] > cb)
2493
if(ptr[offset4] > cb)
2494
if(ptr[offset10] > cb)
2495
if(ptr[offset11] > cb)
2496
goto success_structured;
2497
else
2498
goto structured;
2499
else
2500
goto structured;
2501
else
2502
goto structured;
2503
else
2504
goto structured;
2505
else
2506
goto structured;
2507
else
2508
if(ptr[offset2] < c_b)
2509
if(ptr[offset3] < c_b)
2510
if(ptr[offset4] < c_b)
2511
if(ptr[offset7] < c_b)
2512
if(ptr[offset1] < c_b)
2513
if(ptr[offset6] < c_b)
2514
goto success_structured;
2515
else
2516
goto structured;
2517
else
2518
if(ptr[offset6] < c_b)
2519
if(ptr[offset8] < c_b)
2520
goto success_structured;
2521
else
2522
goto structured;
2523
else
2524
goto structured;
2525
else
2526
goto structured;
2527
else
2528
goto structured;
2529
else
2530
goto structured;
2531
else
2532
goto homogeneous;
2533
else
2534
if(ptr[offset2] > cb)
2535
if(ptr[offset10] > cb)
2536
if(ptr[offset11] > cb)
2537
if(ptr[offset9] > cb)
2538
if(ptr[offset1] > cb)
2539
if(ptr[offset3] > cb)
2540
goto success_structured;
2541
else
2542
if(ptr[offset8] > cb)
2543
goto success_structured;
2544
else
2545
goto structured;
2546
else
2547
if(ptr[offset6] > cb)
2548
if(ptr[offset7] > cb)
2549
if(ptr[offset8] > cb)
2550
goto success_structured;
2551
else
2552
goto structured;
2553
else
2554
goto structured;
2555
else
2556
goto structured;
2557
else
2558
if(ptr[offset1] > cb)
2559
if(ptr[offset3] > cb)
2560
if(ptr[offset4] > cb)
2561
goto success_structured;
2562
else
2563
goto structured;
2564
else
2565
goto structured;
2566
else
2567
goto structured;
2568
else
2569
goto structured;
2570
else
2571
goto structured;
2572
else
2573
if(ptr[offset9] > cb)
2574
if(ptr[offset7] > cb)
2575
if(ptr[offset8] > cb)
2576
if(ptr[offset10] > cb)
2577
if(ptr[offset11] > cb)
2578
if(ptr[offset1] > cb)
2579
goto success_structured;
2580
else
2581
if(ptr[offset6] > cb)
2582
goto success_structured;
2583
else
2584
goto structured;
2585
else
2586
goto structured;
2587
else
2588
goto structured;
2589
else
2590
goto structured;
2591
else
2592
goto structured;
2593
else
2594
goto structured;
2595
else
2596
if(ptr[offset0] < c_b)
2597
if(ptr[offset2] > cb)
2598
if(ptr[offset5] > cb)
2599
if(ptr[offset7] > cb)
2600
if(ptr[offset6] > cb)
2601
if(ptr[offset4] > cb)
2602
if(ptr[offset3] > cb)
2603
if(ptr[offset1] > cb)
2604
goto success_structured;
2605
else
2606
if(ptr[offset8] > cb)
2607
goto success_structured;
2608
else
2609
goto structured;
2610
else
2611
if(ptr[offset9] > cb)
2612
if(ptr[offset8] > cb)
2613
if(ptr[offset10] > cb)
2614
goto success_structured;
2615
else
2616
goto structured;
2617
else
2618
goto structured;
2619
else
2620
goto structured;
2621
else
2622
if(ptr[offset9] > cb)
2623
if(ptr[offset8] > cb)
2624
if(ptr[offset10] > cb)
2625
if(ptr[offset11] > cb)
2626
goto success_structured;
2627
else
2628
goto structured;
2629
else
2630
goto structured;
2631
else
2632
goto structured;
2633
else
2634
goto structured;
2635
else
2636
goto structured;
2637
else
2638
if(ptr[offset9] < c_b)
2639
if(ptr[offset8] < c_b)
2640
if(ptr[offset10] < c_b)
2641
if(ptr[offset11] < c_b)
2642
if(ptr[offset7] < c_b)
2643
if(ptr[offset1] < c_b)
2644
goto success_structured;
2645
else
2646
if(ptr[offset6] < c_b)
2647
goto success_structured;
2648
else
2649
goto structured;
2650
else
2651
goto structured;
2652
else
2653
goto structured;
2654
else
2655
goto structured;
2656
else
2657
goto structured;
2658
else
2659
goto structured;
2660
else
2661
if(ptr[offset9] < c_b)
2662
if(ptr[offset7] < c_b)
2663
if(ptr[offset8] < c_b)
2664
if(ptr[offset5] < c_b)
2665
if(ptr[offset1] < c_b)
2666
if(ptr[offset10] < c_b)
2667
if(ptr[offset11] < c_b)
2668
goto success_structured;
2669
else
2670
if(ptr[offset6] < c_b)
2671
if(ptr[offset4] < c_b)
2672
goto success_structured;
2673
else
2674
goto structured;
2675
else
2676
goto structured;
2677
else
2678
if(ptr[offset6] < c_b)
2679
if(ptr[offset3] < c_b)
2680
if(ptr[offset4] < c_b)
2681
goto success_structured;
2682
else
2683
goto structured;
2684
else
2685
goto structured;
2686
else
2687
goto structured;
2688
else
2689
if(ptr[offset6] < c_b)
2690
if(ptr[offset4] < c_b)
2691
if(ptr[offset3] < c_b)
2692
goto success_structured;
2693
else
2694
if(ptr[offset10] < c_b)
2695
goto success_structured;
2696
else
2697
goto structured;
2698
else
2699
if(ptr[offset10] < c_b)
2700
if(ptr[offset11] < c_b)
2701
goto success_structured;
2702
else
2703
goto structured;
2704
else
2705
goto structured;
2706
else
2707
goto structured;
2708
else
2709
if(ptr[offset10] < c_b)
2710
if(ptr[offset11] < c_b)
2711
if(ptr[offset1] < c_b)
2712
goto success_structured;
2713
else
2714
if(ptr[offset6] < c_b)
2715
goto success_structured;
2716
else
2717
goto structured;
2718
else
2719
goto structured;
2720
else
2721
goto structured;
2722
else
2723
goto structured;
2724
else
2725
goto structured;
2726
else
2727
goto structured;
2728
else
2729
if(ptr[offset2] < c_b)
2730
if(ptr[offset9] > cb)
2731
if(ptr[offset5] > cb)
2732
if(ptr[offset1] < c_b)
2733
if(ptr[offset4] < c_b)
2734
if(ptr[offset10] < c_b)
2735
if(ptr[offset3] < c_b)
2736
if(ptr[offset11] < c_b)
2737
goto success_structured;
2738
else
2739
goto structured;
2740
else
2741
goto structured;
2742
else
2743
if(ptr[offset6] > cb)
2744
if(ptr[offset7] > cb)
2745
if(ptr[offset8] > cb)
2746
if(ptr[offset11] > cb)
2747
if(ptr[offset10] > cb)
2748
goto success_structured;
2749
else
2750
goto structured;
2751
else
2752
goto structured;
2753
else
2754
goto structured;
2755
else
2756
goto structured;
2757
else
2758
goto structured;
2759
else
2760
if(ptr[offset6] > cb)
2761
if(ptr[offset7] > cb)
2762
if(ptr[offset8] > cb)
2763
if(ptr[offset10] > cb)
2764
if(ptr[offset4] > cb)
2765
goto success_structured;
2766
else
2767
if(ptr[offset11] > cb)
2768
goto success_structured;
2769
else
2770
goto structured;
2771
else
2772
if(ptr[offset3] > cb)
2773
if(ptr[offset4] > cb)
2774
goto success_structured;
2775
else
2776
goto structured;
2777
else
2778
goto structured;
2779
else
2780
goto structured;
2781
else
2782
goto structured;
2783
else
2784
goto structured;
2785
else
2786
if(ptr[offset6] > cb)
2787
if(ptr[offset7] > cb)
2788
if(ptr[offset8] > cb)
2789
if(ptr[offset4] > cb)
2790
if(ptr[offset3] > cb)
2791
goto success_structured;
2792
else
2793
if(ptr[offset10] > cb)
2794
goto success_structured;
2795
else
2796
goto structured;
2797
else
2798
if(ptr[offset10] > cb)
2799
if(ptr[offset11] > cb)
2800
goto success_structured;
2801
else
2802
goto structured;
2803
else
2804
goto structured;
2805
else
2806
goto structured;
2807
else
2808
goto structured;
2809
else
2810
goto structured;
2811
else
2812
if(ptr[offset3] < c_b)
2813
if(ptr[offset4] < c_b)
2814
if(ptr[offset5] < c_b)
2815
if(ptr[offset1] < c_b)
2816
if(ptr[offset6] < c_b)
2817
goto success_structured;
2818
else
2819
if(ptr[offset11] < c_b)
2820
goto success_structured;
2821
else
2822
goto structured;
2823
else
2824
if(ptr[offset6] < c_b)
2825
if(ptr[offset7] < c_b)
2826
if(ptr[offset8] < c_b)
2827
goto success_structured;
2828
else
2829
goto structured;
2830
else
2831
goto structured;
2832
else
2833
goto structured;
2834
else
2835
if(ptr[offset1] < c_b)
2836
if(ptr[offset10] < c_b)
2837
if(ptr[offset11] < c_b)
2838
goto success_structured;
2839
else
2840
goto structured;
2841
else
2842
goto structured;
2843
else
2844
goto structured;
2845
else
2846
goto structured;
2847
else
2848
goto structured;
2849
else
2850
if(ptr[offset9] < c_b)
2851
if(ptr[offset5] < c_b)
2852
if(ptr[offset1] < c_b)
2853
if(ptr[offset6] < c_b)
2854
if(ptr[offset3] < c_b)
2855
if(ptr[offset4] < c_b)
2856
goto success_structured;
2857
else
2858
if(ptr[offset10] < c_b)
2859
if(ptr[offset11] < c_b)
2860
goto success_structured;
2861
else
2862
goto structured;
2863
else
2864
goto structured;
2865
else
2866
if(ptr[offset8] < c_b)
2867
if(ptr[offset10] < c_b)
2868
if(ptr[offset11] < c_b)
2869
goto success_structured;
2870
else
2871
if(ptr[offset4] < c_b)
2872
if(ptr[offset7] < c_b)
2873
goto success_structured;
2874
else
2875
goto structured;
2876
else
2877
goto structured;
2878
else
2879
goto structured;
2880
else
2881
goto structured;
2882
else
2883
if(ptr[offset11] < c_b)
2884
if(ptr[offset3] < c_b)
2885
if(ptr[offset4] < c_b)
2886
goto success_structured;
2887
else
2888
if(ptr[offset10] < c_b)
2889
goto success_structured;
2890
else
2891
goto structured;
2892
else
2893
if(ptr[offset8] < c_b)
2894
if(ptr[offset10] < c_b)
2895
goto success_structured;
2896
else
2897
goto structured;
2898
else
2899
goto structured;
2900
else
2901
goto structured;
2902
else
2903
if(ptr[offset6] < c_b)
2904
if(ptr[offset7] < c_b)
2905
if(ptr[offset8] < c_b)
2906
if(ptr[offset4] < c_b)
2907
if(ptr[offset3] < c_b)
2908
goto success_structured;
2909
else
2910
if(ptr[offset10] < c_b)
2911
goto success_structured;
2912
else
2913
goto structured;
2914
else
2915
if(ptr[offset10] < c_b)
2916
if(ptr[offset11] < c_b)
2917
goto success_structured;
2918
else
2919
goto structured;
2920
else
2921
goto structured;
2922
else
2923
goto structured;
2924
else
2925
goto structured;
2926
else
2927
goto structured;
2928
else
2929
if(ptr[offset10] < c_b)
2930
if(ptr[offset11] < c_b)
2931
if(ptr[offset1] < c_b)
2932
if(ptr[offset3] < c_b)
2933
goto success_structured;
2934
else
2935
if(ptr[offset8] < c_b)
2936
goto success_structured;
2937
else
2938
goto structured;
2939
else
2940
if(ptr[offset6] < c_b)
2941
if(ptr[offset7] < c_b)
2942
if(ptr[offset8] < c_b)
2943
goto success_structured;
2944
else
2945
goto structured;
2946
else
2947
goto structured;
2948
else
2949
goto structured;
2950
else
2951
goto structured;
2952
else
2953
goto structured;
2954
else
2955
if(ptr[offset3] < c_b)
2956
if(ptr[offset4] < c_b)
2957
if(ptr[offset5] < c_b)
2958
if(ptr[offset1] < c_b)
2959
if(ptr[offset6] < c_b)
2960
goto success_structured;
2961
else
2962
if(ptr[offset11] < c_b)
2963
goto success_structured;
2964
else
2965
goto structured;
2966
else
2967
if(ptr[offset6] < c_b)
2968
if(ptr[offset7] < c_b)
2969
if(ptr[offset8] < c_b)
2970
goto success_structured;
2971
else
2972
goto structured;
2973
else
2974
goto structured;
2975
else
2976
goto structured;
2977
else
2978
if(ptr[offset1] < c_b)
2979
if(ptr[offset10] < c_b)
2980
if(ptr[offset11] < c_b)
2981
goto success_structured;
2982
else
2983
goto structured;
2984
else
2985
goto structured;
2986
else
2987
goto structured;
2988
else
2989
goto structured;
2990
else
2991
goto structured;
2992
else
2993
if(ptr[offset9] < c_b)
2994
if(ptr[offset7] < c_b)
2995
if(ptr[offset8] < c_b)
2996
if(ptr[offset5] < c_b)
2997
if(ptr[offset1] < c_b)
2998
if(ptr[offset10] < c_b)
2999
if(ptr[offset11] < c_b)
3000
goto success_structured;
3001
else
3002
if(ptr[offset6] < c_b)
3003
if(ptr[offset4] < c_b)
3004
goto success_structured;
3005
else
3006
goto structured;
3007
else
3008
goto structured;
3009
else
3010
if(ptr[offset6] < c_b)
3011
if(ptr[offset3] < c_b)
3012
if(ptr[offset4] < c_b)
3013
goto success_structured;
3014
else
3015
goto structured;
3016
else
3017
goto structured;
3018
else
3019
goto structured;
3020
else
3021
if(ptr[offset6] < c_b)
3022
if(ptr[offset4] < c_b)
3023
if(ptr[offset3] < c_b)
3024
goto success_structured;
3025
else
3026
if(ptr[offset10] < c_b)
3027
goto success_structured;
3028
else
3029
goto structured;
3030
else
3031
if(ptr[offset10] < c_b)
3032
if(ptr[offset11] < c_b)
3033
goto success_structured;
3034
else
3035
goto structured;
3036
else
3037
goto structured;
3038
else
3039
goto structured;
3040
else
3041
if(ptr[offset10] < c_b)
3042
if(ptr[offset11] < c_b)
3043
if(ptr[offset1] < c_b)
3044
goto success_structured;
3045
else
3046
if(ptr[offset6] < c_b)
3047
goto success_structured;
3048
else
3049
goto structured;
3050
else
3051
goto structured;
3052
else
3053
goto structured;
3054
else
3055
goto structured;
3056
else
3057
goto structured;
3058
else
3059
if(ptr[offset5] > cb)
3060
if(ptr[offset9] > cb)
3061
if(ptr[offset6] > cb)
3062
if(ptr[offset7] > cb)
3063
if(ptr[offset8] > cb)
3064
if(ptr[offset4] > cb)
3065
if(ptr[offset3] > cb)
3066
goto success_structured;
3067
else
3068
if(ptr[offset10] > cb)
3069
goto success_structured;
3070
else
3071
goto structured;
3072
else
3073
if(ptr[offset10] > cb)
3074
if(ptr[offset11] > cb)
3075
goto success_structured;
3076
else
3077
goto structured;
3078
else
3079
goto structured;
3080
else
3081
goto structured;
3082
else
3083
goto structured;
3084
else
3085
goto structured;
3086
else
3087
goto homogeneous;
3088
else
3089
goto structured;
3090
else
3091
if(ptr[offset5] > cb)
3092
if(ptr[offset9] > cb)
3093
if(ptr[offset6] > cb)
3094
if(ptr[offset7] > cb)
3095
if(ptr[offset4] > cb)
3096
if(ptr[offset3] > cb)
3097
if(ptr[offset8] > cb)
3098
goto success_structured;
3099
else
3100
if(ptr[offset1] > cb)
3101
if(ptr[offset2] > cb)
3102
goto success_structured;
3103
else
3104
goto structured;
3105
else
3106
goto structured;
3107
else
3108
if(ptr[offset8] > cb)
3109
if(ptr[offset10] > cb)
3110
goto success_structured;
3111
else
3112
goto structured;
3113
else
3114
goto structured;
3115
else
3116
if(ptr[offset11] > cb)
3117
if(ptr[offset8] > cb)
3118
if(ptr[offset10] > cb)
3119
goto success_structured;
3120
else
3121
goto structured;
3122
else
3123
goto structured;
3124
else
3125
goto structured;
3126
else
3127
goto structured;
3128
else
3129
goto structured;
3130
else
3131
if(ptr[offset2] > cb)
3132
if(ptr[offset3] > cb)
3133
if(ptr[offset4] > cb)
3134
if(ptr[offset7] > cb)
3135
if(ptr[offset1] > cb)
3136
if(ptr[offset6] > cb)
3137
goto success_structured;
3138
else
3139
goto structured;
3140
else
3141
if(ptr[offset6] > cb)
3142
if(ptr[offset8] > cb)
3143
goto success_structured;
3144
else
3145
goto structured;
3146
else
3147
goto structured;
3148
else
3149
goto structured;
3150
else
3151
goto structured;
3152
else
3153
goto structured;
3154
else
3155
goto structured;
3156
else
3157
if(ptr[offset5] < c_b)
3158
if(ptr[offset9] < c_b)
3159
if(ptr[offset6] < c_b)
3160
if(ptr[offset7] < c_b)
3161
if(ptr[offset4] < c_b)
3162
if(ptr[offset3] < c_b)
3163
if(ptr[offset8] < c_b)
3164
goto success_structured;
3165
else
3166
if(ptr[offset1] < c_b)
3167
if(ptr[offset2] < c_b)
3168
goto success_structured;
3169
else
3170
goto structured;
3171
else
3172
goto structured;
3173
else
3174
if(ptr[offset8] < c_b)
3175
if(ptr[offset10] < c_b)
3176
goto success_structured;
3177
else
3178
goto structured;
3179
else
3180
goto structured;
3181
else
3182
if(ptr[offset11] < c_b)
3183
if(ptr[offset8] < c_b)
3184
if(ptr[offset10] < c_b)
3185
goto success_structured;
3186
else
3187
goto structured;
3188
else
3189
goto structured;
3190
else
3191
goto structured;
3192
else
3193
goto structured;
3194
else
3195
goto structured;
3196
else
3197
if(ptr[offset2] < c_b)
3198
if(ptr[offset3] < c_b)
3199
if(ptr[offset4] < c_b)
3200
if(ptr[offset7] < c_b)
3201
if(ptr[offset1] < c_b)
3202
if(ptr[offset6] < c_b)
3203
goto success_structured;
3204
else
3205
goto structured;
3206
else
3207
if(ptr[offset6] < c_b)
3208
if(ptr[offset8] < c_b)
3209
goto success_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 structured;
3220
else
3221
goto structured;
3222
else
3223
goto homogeneous;
3224
}
3225
}
3226
success_homogeneous:
3227
if(total == nExpectedCorners)
3228
{
3229
if(nExpectedCorners == 0)
3230
{
3231
nExpectedCorners = 512;
3232
keypoints.reserve(nExpectedCorners);
3233
}
3234
else
3235
{
3236
nExpectedCorners *= 2;
3237
keypoints.reserve(nExpectedCorners);
3238
}
3239
}
3240
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
3241
total++;
3242
goto homogeneous;
3243
success_structured:
3244
if(total == nExpectedCorners)
3245
{
3246
if(nExpectedCorners == 0)
3247
{
3248
nExpectedCorners = 512;
3249
keypoints.reserve(nExpectedCorners);
3250
}
3251
else
3252
{
3253
nExpectedCorners *= 2;
3254
keypoints.reserve(nExpectedCorners);
3255
}
3256
}
3257
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
3258
total++;
3259
goto structured;
3260
}
3261
}
3262
}
3263
3264
static void AGAST_7_12s(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
3265
{
3266
cv::Mat img;
3267
if(!_img.getMat().isContinuous())
3268
img = _img.getMat().clone();
3269
else
3270
img = _img.getMat();
3271
3272
size_t total = 0;
3273
int xsize = img.cols;
3274
int ysize = img.rows;
3275
size_t nExpectedCorners = keypoints.capacity();
3276
int x, y;
3277
int xsizeB=xsize - 3; //2, +1 due to faster test x>xsizeB
3278
int ysizeB=ysize - 2;
3279
int width;
3280
3281
keypoints.resize(0);
3282
3283
int pixel_7_12s_[16];
3284
makeAgastOffsets(pixel_7_12s_, (int)img.step, AgastFeatureDetector::AGAST_7_12s);
3285
3286
short offset0 = (short) pixel_7_12s_[0];
3287
short offset1 = (short) pixel_7_12s_[1];
3288
short offset2 = (short) pixel_7_12s_[2];
3289
short offset3 = (short) pixel_7_12s_[3];
3290
short offset4 = (short) pixel_7_12s_[4];
3291
short offset5 = (short) pixel_7_12s_[5];
3292
short offset6 = (short) pixel_7_12s_[6];
3293
short offset7 = (short) pixel_7_12s_[7];
3294
short offset8 = (short) pixel_7_12s_[8];
3295
short offset9 = (short) pixel_7_12s_[9];
3296
short offset10 = (short) pixel_7_12s_[10];
3297
short offset11 = (short) pixel_7_12s_[11];
3298
3299
width = xsize;
3300
3301
for(y = 2; y < ysizeB; y++)
3302
{
3303
x = 1;
3304
while(true)
3305
{
3306
homogeneous:
3307
{
3308
x++;
3309
if(x > xsizeB)
3310
break;
3311
else
3312
{
3313
const unsigned char* const ptr = img.ptr() + y*width + x;
3314
const int cb = *ptr + threshold;
3315
const int c_b = *ptr - threshold;
3316
if(ptr[offset0] > cb)
3317
if(ptr[offset2] > cb)
3318
if(ptr[offset5] > cb)
3319
if(ptr[offset9] > cb)
3320
if(ptr[offset7] > cb)
3321
if(ptr[offset1] > cb)
3322
if(ptr[offset6] > cb)
3323
if(ptr[offset3] > cb)
3324
if(ptr[offset4] > cb)
3325
goto success_structured;
3326
else
3327
if(ptr[offset10] > cb)
3328
if(ptr[offset11] > cb)
3329
goto success_structured;
3330
else
3331
goto structured;
3332
else
3333
goto homogeneous;
3334
else
3335
if(ptr[offset8] > cb)
3336
if(ptr[offset10] > cb)
3337
if(ptr[offset4] > cb)
3338
goto success_structured;
3339
else
3340
if(ptr[offset11] > cb)
3341
goto success_structured;
3342
else
3343
goto structured;
3344
else
3345
goto homogeneous;
3346
else
3347
goto homogeneous;
3348
else
3349
if(ptr[offset11] > cb)
3350
if(ptr[offset3] > cb)
3351
if(ptr[offset4] > cb)
3352
goto success_structured;
3353
else
3354
if(ptr[offset10] > cb)
3355
goto success_structured;
3356
else
3357
goto homogeneous;
3358
else
3359
if(ptr[offset8] > cb)
3360
if(ptr[offset10] > cb)
3361
goto success_structured;
3362
else
3363
goto homogeneous;
3364
else
3365
goto homogeneous;
3366
else
3367
goto homogeneous;
3368
else
3369
if(ptr[offset6] > cb)
3370
if(ptr[offset8] > cb)
3371
if(ptr[offset4] > cb)
3372
if(ptr[offset3] > cb)
3373
goto success_structured;
3374
else
3375
if(ptr[offset10] > cb)
3376
goto success_structured;
3377
else
3378
goto homogeneous;
3379
else
3380
if(ptr[offset10] > cb)
3381
if(ptr[offset11] > cb)
3382
goto success_structured;
3383
else
3384
goto homogeneous;
3385
else
3386
goto homogeneous;
3387
else
3388
goto homogeneous;
3389
else
3390
goto homogeneous;
3391
else
3392
if(ptr[offset1] > cb)
3393
if(ptr[offset11] > cb)
3394
if(ptr[offset3] > cb)
3395
if(ptr[offset4] > cb)
3396
goto success_homogeneous;
3397
else
3398
if(ptr[offset10] > cb)
3399
goto success_homogeneous;
3400
else
3401
goto homogeneous;
3402
else
3403
if(ptr[offset8] > cb)
3404
if(ptr[offset10] > cb)
3405
goto success_homogeneous;
3406
else
3407
goto homogeneous;
3408
else
3409
goto homogeneous;
3410
else
3411
if(ptr[offset6] > cb)
3412
if(ptr[offset3] > cb)
3413
if(ptr[offset4] > cb)
3414
goto success_homogeneous;
3415
else
3416
goto homogeneous;
3417
else
3418
goto homogeneous;
3419
else
3420
goto homogeneous;
3421
else
3422
goto homogeneous;
3423
else
3424
if(ptr[offset3] > cb)
3425
if(ptr[offset4] > cb)
3426
if(ptr[offset7] > cb)
3427
if(ptr[offset1] > cb)
3428
if(ptr[offset6] > cb)
3429
goto success_homogeneous;
3430
else
3431
if(ptr[offset11] > cb)
3432
goto success_homogeneous;
3433
else
3434
goto homogeneous;
3435
else
3436
if(ptr[offset6] > cb)
3437
if(ptr[offset8] > cb)
3438
goto success_homogeneous;
3439
else
3440
goto homogeneous;
3441
else
3442
goto homogeneous;
3443
else
3444
if(ptr[offset1] > cb)
3445
if(ptr[offset6] > cb)
3446
goto success_homogeneous;
3447
else
3448
if(ptr[offset11] > cb)
3449
goto success_homogeneous;
3450
else
3451
goto homogeneous;
3452
else
3453
goto homogeneous;
3454
else
3455
goto homogeneous;
3456
else
3457
goto homogeneous;
3458
else
3459
if(ptr[offset9] < c_b)
3460
if(ptr[offset7] < c_b)
3461
if(ptr[offset5] < c_b)
3462
if(ptr[offset1] > cb)
3463
if(ptr[offset4] > cb)
3464
if(ptr[offset10] > cb)
3465
if(ptr[offset3] > cb)
3466
if(ptr[offset11] > cb)
3467
goto success_structured;
3468
else
3469
goto structured;
3470
else
3471
goto homogeneous;
3472
else
3473
if(ptr[offset6] < c_b)
3474
if(ptr[offset8] < c_b)
3475
if(ptr[offset11] < c_b)
3476
if(ptr[offset10] < c_b)
3477
goto success_structured;
3478
else
3479
goto structured;
3480
else
3481
goto structured;
3482
else
3483
goto homogeneous;
3484
else
3485
goto homogeneous;
3486
else
3487
if(ptr[offset6] < c_b)
3488
if(ptr[offset8] < c_b)
3489
if(ptr[offset10] < c_b)
3490
if(ptr[offset4] < c_b)
3491
goto success_structured;
3492
else
3493
if(ptr[offset11] < c_b)
3494
goto success_structured;
3495
else
3496
goto structured;
3497
else
3498
if(ptr[offset3] < c_b)
3499
if(ptr[offset4] < c_b)
3500
goto success_structured;
3501
else
3502
goto structured;
3503
else
3504
goto homogeneous;
3505
else
3506
goto homogeneous;
3507
else
3508
goto homogeneous;
3509
else
3510
if(ptr[offset6] < c_b)
3511
if(ptr[offset8] < c_b)
3512
if(ptr[offset4] < c_b)
3513
if(ptr[offset3] < c_b)
3514
goto success_structured;
3515
else
3516
if(ptr[offset10] < c_b)
3517
goto success_structured;
3518
else
3519
goto homogeneous;
3520
else
3521
if(ptr[offset10] < c_b)
3522
if(ptr[offset11] < c_b)
3523
goto success_structured;
3524
else
3525
goto homogeneous;
3526
else
3527
goto homogeneous;
3528
else
3529
goto homogeneous;
3530
else
3531
goto homogeneous;
3532
else
3533
if(ptr[offset1] > cb)
3534
if(ptr[offset3] > cb)
3535
if(ptr[offset4] > cb)
3536
if(ptr[offset10] > cb)
3537
if(ptr[offset11] > cb)
3538
goto success_structured;
3539
else
3540
goto homogeneous;
3541
else
3542
goto homogeneous;
3543
else
3544
goto homogeneous;
3545
else
3546
goto homogeneous;
3547
else
3548
goto homogeneous;
3549
else
3550
if(ptr[offset1] > cb)
3551
if(ptr[offset3] > cb)
3552
if(ptr[offset4] > cb)
3553
if(ptr[offset10] > cb)
3554
if(ptr[offset11] > cb)
3555
goto success_homogeneous;
3556
else
3557
goto homogeneous;
3558
else
3559
goto homogeneous;
3560
else
3561
goto homogeneous;
3562
else
3563
goto homogeneous;
3564
else
3565
goto homogeneous;
3566
else
3567
if(ptr[offset10] > cb)
3568
if(ptr[offset11] > cb)
3569
if(ptr[offset9] > cb)
3570
if(ptr[offset7] > cb)
3571
if(ptr[offset1] > cb)
3572
if(ptr[offset3] > cb)
3573
goto success_homogeneous;
3574
else
3575
if(ptr[offset8] > cb)
3576
goto success_homogeneous;
3577
else
3578
goto homogeneous;
3579
else
3580
if(ptr[offset6] > cb)
3581
if(ptr[offset8] > cb)
3582
goto success_homogeneous;
3583
else
3584
goto homogeneous;
3585
else
3586
goto homogeneous;
3587
else
3588
if(ptr[offset1] > cb)
3589
if(ptr[offset3] > cb)
3590
goto success_homogeneous;
3591
else
3592
if(ptr[offset8] > cb)
3593
goto success_homogeneous;
3594
else
3595
goto homogeneous;
3596
else
3597
goto homogeneous;
3598
else
3599
if(ptr[offset1] > cb)
3600
if(ptr[offset3] > cb)
3601
if(ptr[offset4] > cb)
3602
goto success_homogeneous;
3603
else
3604
goto homogeneous;
3605
else
3606
goto homogeneous;
3607
else
3608
goto homogeneous;
3609
else
3610
goto homogeneous;
3611
else
3612
goto homogeneous;
3613
else
3614
if(ptr[offset7] > cb)
3615
if(ptr[offset9] > cb)
3616
if(ptr[offset8] > cb)
3617
if(ptr[offset5] > cb)
3618
if(ptr[offset1] > cb)
3619
if(ptr[offset10] > cb)
3620
if(ptr[offset11] > cb)
3621
goto success_homogeneous;
3622
else
3623
if(ptr[offset6] > cb)
3624
if(ptr[offset4] > cb)
3625
goto success_structured;
3626
else
3627
goto homogeneous;
3628
else
3629
goto homogeneous;
3630
else
3631
if(ptr[offset6] > cb)
3632
if(ptr[offset3] > cb)
3633
if(ptr[offset4] > cb)
3634
goto success_structured;
3635
else
3636
goto homogeneous;
3637
else
3638
goto homogeneous;
3639
else
3640
goto homogeneous;
3641
else
3642
if(ptr[offset6] > cb)
3643
if(ptr[offset4] > cb)
3644
if(ptr[offset3] > cb)
3645
goto success_homogeneous;
3646
else
3647
if(ptr[offset10] > cb)
3648
goto success_homogeneous;
3649
else
3650
goto homogeneous;
3651
else
3652
if(ptr[offset10] > cb)
3653
if(ptr[offset11] > cb)
3654
goto success_homogeneous;
3655
else
3656
goto homogeneous;
3657
else
3658
goto homogeneous;
3659
else
3660
goto homogeneous;
3661
else
3662
if(ptr[offset10] > cb)
3663
if(ptr[offset11] > cb)
3664
if(ptr[offset1] > cb)
3665
goto success_homogeneous;
3666
else
3667
if(ptr[offset6] > cb)
3668
goto success_homogeneous;
3669
else
3670
goto homogeneous;
3671
else
3672
goto homogeneous;
3673
else
3674
goto homogeneous;
3675
else
3676
goto homogeneous;
3677
else
3678
goto homogeneous;
3679
else
3680
if(ptr[offset7] < c_b)
3681
if(ptr[offset5] < c_b)
3682
if(ptr[offset2] < c_b)
3683
if(ptr[offset6] < c_b)
3684
if(ptr[offset4] < c_b)
3685
if(ptr[offset3] < c_b)
3686
if(ptr[offset1] < c_b)
3687
goto success_homogeneous;
3688
else
3689
if(ptr[offset8] < c_b)
3690
goto success_homogeneous;
3691
else
3692
goto homogeneous;
3693
else
3694
if(ptr[offset9] < c_b)
3695
if(ptr[offset8] < c_b)
3696
if(ptr[offset10] < c_b)
3697
goto success_structured;
3698
else
3699
goto homogeneous;
3700
else
3701
goto homogeneous;
3702
else
3703
goto homogeneous;
3704
else
3705
if(ptr[offset9] < c_b)
3706
if(ptr[offset8] < c_b)
3707
if(ptr[offset10] < c_b)
3708
if(ptr[offset11] < c_b)
3709
goto success_structured;
3710
else
3711
goto homogeneous;
3712
else
3713
goto homogeneous;
3714
else
3715
goto homogeneous;
3716
else
3717
goto homogeneous;
3718
else
3719
goto homogeneous;
3720
else
3721
if(ptr[offset9] < c_b)
3722
if(ptr[offset6] < c_b)
3723
if(ptr[offset8] < c_b)
3724
if(ptr[offset4] < c_b)
3725
if(ptr[offset3] < c_b)
3726
goto success_homogeneous;
3727
else
3728
if(ptr[offset10] < c_b)
3729
goto success_homogeneous;
3730
else
3731
goto homogeneous;
3732
else
3733
if(ptr[offset10] < c_b)
3734
if(ptr[offset11] < c_b)
3735
goto success_homogeneous;
3736
else
3737
goto homogeneous;
3738
else
3739
goto homogeneous;
3740
else
3741
goto homogeneous;
3742
else
3743
goto homogeneous;
3744
else
3745
goto homogeneous;
3746
else
3747
goto homogeneous;
3748
else
3749
goto homogeneous;
3750
else
3751
if(ptr[offset0] < c_b)
3752
if(ptr[offset2] < c_b)
3753
if(ptr[offset9] < c_b)
3754
if(ptr[offset5] < c_b)
3755
if(ptr[offset7] < c_b)
3756
if(ptr[offset1] < c_b)
3757
if(ptr[offset6] < c_b)
3758
if(ptr[offset3] < c_b)
3759
if(ptr[offset4] < c_b)
3760
goto success_structured;
3761
else
3762
if(ptr[offset10] < c_b)
3763
if(ptr[offset11] < c_b)
3764
goto success_structured;
3765
else
3766
goto structured;
3767
else
3768
goto homogeneous;
3769
else
3770
if(ptr[offset8] < c_b)
3771
if(ptr[offset10] < c_b)
3772
if(ptr[offset4] < c_b)
3773
goto success_structured;
3774
else
3775
if(ptr[offset11] < c_b)
3776
goto success_structured;
3777
else
3778
goto structured;
3779
else
3780
goto homogeneous;
3781
else
3782
goto homogeneous;
3783
else
3784
if(ptr[offset11] < c_b)
3785
if(ptr[offset3] < c_b)
3786
if(ptr[offset4] < c_b)
3787
goto success_structured;
3788
else
3789
if(ptr[offset10] < c_b)
3790
goto success_structured;
3791
else
3792
goto homogeneous;
3793
else
3794
if(ptr[offset8] < c_b)
3795
if(ptr[offset10] < c_b)
3796
goto success_structured;
3797
else
3798
goto homogeneous;
3799
else
3800
goto homogeneous;
3801
else
3802
goto homogeneous;
3803
else
3804
if(ptr[offset6] < c_b)
3805
if(ptr[offset8] < c_b)
3806
if(ptr[offset4] < c_b)
3807
if(ptr[offset3] < c_b)
3808
goto success_structured;
3809
else
3810
if(ptr[offset10] < c_b)
3811
goto success_structured;
3812
else
3813
goto homogeneous;
3814
else
3815
if(ptr[offset10] < c_b)
3816
if(ptr[offset11] < c_b)
3817
goto success_structured;
3818
else
3819
goto homogeneous;
3820
else
3821
goto homogeneous;
3822
else
3823
goto homogeneous;
3824
else
3825
goto homogeneous;
3826
else
3827
if(ptr[offset1] < c_b)
3828
if(ptr[offset11] < c_b)
3829
if(ptr[offset3] < c_b)
3830
if(ptr[offset4] < c_b)
3831
goto success_homogeneous;
3832
else
3833
if(ptr[offset10] < c_b)
3834
goto success_homogeneous;
3835
else
3836
goto homogeneous;
3837
else
3838
if(ptr[offset8] < c_b)
3839
if(ptr[offset10] < c_b)
3840
goto success_homogeneous;
3841
else
3842
goto homogeneous;
3843
else
3844
goto homogeneous;
3845
else
3846
if(ptr[offset6] < c_b)
3847
if(ptr[offset3] < c_b)
3848
if(ptr[offset4] < c_b)
3849
goto success_homogeneous;
3850
else
3851
goto homogeneous;
3852
else
3853
goto homogeneous;
3854
else
3855
goto homogeneous;
3856
else
3857
goto homogeneous;
3858
else
3859
if(ptr[offset10] < c_b)
3860
if(ptr[offset11] < c_b)
3861
if(ptr[offset7] < c_b)
3862
if(ptr[offset1] < c_b)
3863
if(ptr[offset3] < c_b)
3864
goto success_homogeneous;
3865
else
3866
if(ptr[offset8] < c_b)
3867
goto success_homogeneous;
3868
else
3869
goto homogeneous;
3870
else
3871
if(ptr[offset6] < c_b)
3872
if(ptr[offset8] < c_b)
3873
goto success_homogeneous;
3874
else
3875
goto homogeneous;
3876
else
3877
goto homogeneous;
3878
else
3879
if(ptr[offset1] < c_b)
3880
if(ptr[offset3] < c_b)
3881
goto success_homogeneous;
3882
else
3883
if(ptr[offset8] < c_b)
3884
goto success_homogeneous;
3885
else
3886
goto homogeneous;
3887
else
3888
goto homogeneous;
3889
else
3890
goto homogeneous;
3891
else
3892
goto homogeneous;
3893
else
3894
if(ptr[offset9] > cb)
3895
if(ptr[offset5] > cb)
3896
if(ptr[offset7] > cb)
3897
if(ptr[offset1] < c_b)
3898
if(ptr[offset4] < c_b)
3899
if(ptr[offset10] < c_b)
3900
if(ptr[offset3] < c_b)
3901
if(ptr[offset11] < c_b)
3902
goto success_structured;
3903
else
3904
goto structured;
3905
else
3906
goto homogeneous;
3907
else
3908
if(ptr[offset6] > cb)
3909
if(ptr[offset8] > cb)
3910
if(ptr[offset11] > cb)
3911
if(ptr[offset10] > cb)
3912
goto success_structured;
3913
else
3914
goto structured;
3915
else
3916
goto structured;
3917
else
3918
goto homogeneous;
3919
else
3920
goto homogeneous;
3921
else
3922
if(ptr[offset6] > cb)
3923
if(ptr[offset8] > cb)
3924
if(ptr[offset10] > cb)
3925
if(ptr[offset4] > cb)
3926
goto success_structured;
3927
else
3928
if(ptr[offset11] > cb)
3929
goto success_structured;
3930
else
3931
goto structured;
3932
else
3933
if(ptr[offset3] > cb)
3934
if(ptr[offset4] > cb)
3935
goto success_structured;
3936
else
3937
goto structured;
3938
else
3939
goto homogeneous;
3940
else
3941
goto homogeneous;
3942
else
3943
goto homogeneous;
3944
else
3945
if(ptr[offset6] > cb)
3946
if(ptr[offset8] > cb)
3947
if(ptr[offset4] > cb)
3948
if(ptr[offset3] > cb)
3949
goto success_structured;
3950
else
3951
if(ptr[offset10] > cb)
3952
goto success_structured;
3953
else
3954
goto homogeneous;
3955
else
3956
if(ptr[offset10] > cb)
3957
if(ptr[offset11] > cb)
3958
goto success_structured;
3959
else
3960
goto homogeneous;
3961
else
3962
goto homogeneous;
3963
else
3964
goto homogeneous;
3965
else
3966
goto homogeneous;
3967
else
3968
if(ptr[offset1] < c_b)
3969
if(ptr[offset3] < c_b)
3970
if(ptr[offset4] < c_b)
3971
if(ptr[offset10] < c_b)
3972
if(ptr[offset11] < c_b)
3973
goto success_structured;
3974
else
3975
goto homogeneous;
3976
else
3977
goto homogeneous;
3978
else
3979
goto homogeneous;
3980
else
3981
goto homogeneous;
3982
else
3983
goto homogeneous;
3984
else
3985
if(ptr[offset3] < c_b)
3986
if(ptr[offset4] < c_b)
3987
if(ptr[offset5] < c_b)
3988
if(ptr[offset7] < c_b)
3989
if(ptr[offset1] < c_b)
3990
if(ptr[offset6] < c_b)
3991
goto success_structured;
3992
else
3993
if(ptr[offset11] < c_b)
3994
goto success_structured;
3995
else
3996
goto homogeneous;
3997
else
3998
if(ptr[offset6] < c_b)
3999
if(ptr[offset8] < c_b)
4000
goto success_structured;
4001
else
4002
goto homogeneous;
4003
else
4004
goto homogeneous;
4005
else
4006
if(ptr[offset1] < c_b)
4007
if(ptr[offset6] < c_b)
4008
goto success_homogeneous;
4009
else
4010
if(ptr[offset11] < c_b)
4011
goto success_homogeneous;
4012
else
4013
goto homogeneous;
4014
else
4015
goto homogeneous;
4016
else
4017
if(ptr[offset1] < c_b)
4018
if(ptr[offset10] < c_b)
4019
if(ptr[offset11] < c_b)
4020
goto success_homogeneous;
4021
else
4022
goto homogeneous;
4023
else
4024
goto homogeneous;
4025
else
4026
goto homogeneous;
4027
else
4028
goto homogeneous;
4029
else
4030
goto homogeneous;
4031
else
4032
if(ptr[offset3] < c_b)
4033
if(ptr[offset4] < c_b)
4034
if(ptr[offset5] < c_b)
4035
if(ptr[offset7] < c_b)
4036
if(ptr[offset1] < c_b)
4037
if(ptr[offset6] < c_b)
4038
goto success_homogeneous;
4039
else
4040
if(ptr[offset11] < c_b)
4041
goto success_homogeneous;
4042
else
4043
goto homogeneous;
4044
else
4045
if(ptr[offset6] < c_b)
4046
if(ptr[offset8] < c_b)
4047
goto success_homogeneous;
4048
else
4049
goto homogeneous;
4050
else
4051
goto homogeneous;
4052
else
4053
if(ptr[offset1] < c_b)
4054
if(ptr[offset6] < c_b)
4055
goto success_homogeneous;
4056
else
4057
if(ptr[offset11] < c_b)
4058
goto success_homogeneous;
4059
else
4060
goto homogeneous;
4061
else
4062
goto homogeneous;
4063
else
4064
if(ptr[offset1] < c_b)
4065
if(ptr[offset10] < c_b)
4066
if(ptr[offset11] < c_b)
4067
goto success_homogeneous;
4068
else
4069
goto homogeneous;
4070
else
4071
goto homogeneous;
4072
else
4073
goto homogeneous;
4074
else
4075
goto homogeneous;
4076
else
4077
goto homogeneous;
4078
else
4079
if(ptr[offset7] > cb)
4080
if(ptr[offset5] > cb)
4081
if(ptr[offset2] > cb)
4082
if(ptr[offset6] > cb)
4083
if(ptr[offset4] > cb)
4084
if(ptr[offset3] > cb)
4085
if(ptr[offset1] > cb)
4086
goto success_homogeneous;
4087
else
4088
if(ptr[offset8] > cb)
4089
goto success_homogeneous;
4090
else
4091
goto homogeneous;
4092
else
4093
if(ptr[offset9] > cb)
4094
if(ptr[offset8] > cb)
4095
if(ptr[offset10] > cb)
4096
goto success_structured;
4097
else
4098
goto homogeneous;
4099
else
4100
goto homogeneous;
4101
else
4102
goto homogeneous;
4103
else
4104
if(ptr[offset9] > cb)
4105
if(ptr[offset8] > cb)
4106
if(ptr[offset10] > cb)
4107
if(ptr[offset11] > cb)
4108
goto success_structured;
4109
else
4110
goto homogeneous;
4111
else
4112
goto homogeneous;
4113
else
4114
goto homogeneous;
4115
else
4116
goto homogeneous;
4117
else
4118
goto homogeneous;
4119
else
4120
if(ptr[offset9] > cb)
4121
if(ptr[offset6] > cb)
4122
if(ptr[offset8] > cb)
4123
if(ptr[offset4] > cb)
4124
if(ptr[offset3] > cb)
4125
goto success_homogeneous;
4126
else
4127
if(ptr[offset10] > cb)
4128
goto success_homogeneous;
4129
else
4130
goto homogeneous;
4131
else
4132
if(ptr[offset10] > cb)
4133
if(ptr[offset11] > cb)
4134
goto success_homogeneous;
4135
else
4136
goto homogeneous;
4137
else
4138
goto homogeneous;
4139
else
4140
goto homogeneous;
4141
else
4142
goto homogeneous;
4143
else
4144
goto homogeneous;
4145
else
4146
goto homogeneous;
4147
else
4148
if(ptr[offset7] < c_b)
4149
if(ptr[offset9] < c_b)
4150
if(ptr[offset8] < c_b)
4151
if(ptr[offset5] < c_b)
4152
if(ptr[offset1] < c_b)
4153
if(ptr[offset10] < c_b)
4154
if(ptr[offset11] < c_b)
4155
goto success_homogeneous;
4156
else
4157
if(ptr[offset6] < c_b)
4158
if(ptr[offset4] < c_b)
4159
goto success_structured;
4160
else
4161
goto homogeneous;
4162
else
4163
goto homogeneous;
4164
else
4165
if(ptr[offset6] < c_b)
4166
if(ptr[offset3] < c_b)
4167
if(ptr[offset4] < c_b)
4168
goto success_structured;
4169
else
4170
goto homogeneous;
4171
else
4172
goto homogeneous;
4173
else
4174
goto homogeneous;
4175
else
4176
if(ptr[offset6] < c_b)
4177
if(ptr[offset4] < c_b)
4178
if(ptr[offset3] < c_b)
4179
goto success_homogeneous;
4180
else
4181
if(ptr[offset10] < c_b)
4182
goto success_homogeneous;
4183
else
4184
goto homogeneous;
4185
else
4186
if(ptr[offset10] < c_b)
4187
if(ptr[offset11] < c_b)
4188
goto success_homogeneous;
4189
else
4190
goto homogeneous;
4191
else
4192
goto homogeneous;
4193
else
4194
goto homogeneous;
4195
else
4196
if(ptr[offset10] < c_b)
4197
if(ptr[offset11] < c_b)
4198
if(ptr[offset1] < c_b)
4199
goto success_homogeneous;
4200
else
4201
if(ptr[offset6] < c_b)
4202
goto success_homogeneous;
4203
else
4204
goto homogeneous;
4205
else
4206
goto homogeneous;
4207
else
4208
goto homogeneous;
4209
else
4210
goto homogeneous;
4211
else
4212
goto homogeneous;
4213
else
4214
goto homogeneous;
4215
else
4216
if(ptr[offset5] > cb)
4217
if(ptr[offset7] > cb)
4218
if(ptr[offset9] > cb)
4219
if(ptr[offset6] > cb)
4220
if(ptr[offset4] > cb)
4221
if(ptr[offset3] > cb)
4222
if(ptr[offset8] > cb)
4223
goto success_homogeneous;
4224
else
4225
if(ptr[offset1] > cb)
4226
if(ptr[offset2] > cb)
4227
goto success_homogeneous;
4228
else
4229
goto homogeneous;
4230
else
4231
goto homogeneous;
4232
else
4233
if(ptr[offset8] > cb)
4234
if(ptr[offset10] > cb)
4235
goto success_homogeneous;
4236
else
4237
goto homogeneous;
4238
else
4239
goto homogeneous;
4240
else
4241
if(ptr[offset11] > cb)
4242
if(ptr[offset8] > cb)
4243
if(ptr[offset10] > cb)
4244
goto success_homogeneous;
4245
else
4246
goto homogeneous;
4247
else
4248
goto homogeneous;
4249
else
4250
goto homogeneous;
4251
else
4252
goto homogeneous;
4253
else
4254
if(ptr[offset2] > cb)
4255
if(ptr[offset3] > cb)
4256
if(ptr[offset4] > cb)
4257
if(ptr[offset1] > cb)
4258
if(ptr[offset6] > cb)
4259
goto success_homogeneous;
4260
else
4261
goto homogeneous;
4262
else
4263
if(ptr[offset6] > cb)
4264
if(ptr[offset8] > cb)
4265
goto success_homogeneous;
4266
else
4267
goto homogeneous;
4268
else
4269
goto homogeneous;
4270
else
4271
goto homogeneous;
4272
else
4273
goto homogeneous;
4274
else
4275
goto homogeneous;
4276
else
4277
goto homogeneous;
4278
else
4279
if(ptr[offset5] < c_b)
4280
if(ptr[offset7] < c_b)
4281
if(ptr[offset9] < c_b)
4282
if(ptr[offset6] < c_b)
4283
if(ptr[offset4] < c_b)
4284
if(ptr[offset3] < c_b)
4285
if(ptr[offset8] < c_b)
4286
goto success_homogeneous;
4287
else
4288
if(ptr[offset1] < c_b)
4289
if(ptr[offset2] < c_b)
4290
goto success_homogeneous;
4291
else
4292
goto homogeneous;
4293
else
4294
goto homogeneous;
4295
else
4296
if(ptr[offset8] < c_b)
4297
if(ptr[offset10] < c_b)
4298
goto success_homogeneous;
4299
else
4300
goto homogeneous;
4301
else
4302
goto homogeneous;
4303
else
4304
if(ptr[offset11] < c_b)
4305
if(ptr[offset8] < c_b)
4306
if(ptr[offset10] < c_b)
4307
goto success_homogeneous;
4308
else
4309
goto homogeneous;
4310
else
4311
goto homogeneous;
4312
else
4313
goto homogeneous;
4314
else
4315
goto homogeneous;
4316
else
4317
if(ptr[offset2] < c_b)
4318
if(ptr[offset3] < c_b)
4319
if(ptr[offset4] < c_b)
4320
if(ptr[offset1] < c_b)
4321
if(ptr[offset6] < c_b)
4322
goto success_homogeneous;
4323
else
4324
goto homogeneous;
4325
else
4326
if(ptr[offset6] < c_b)
4327
if(ptr[offset8] < c_b)
4328
goto success_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
else
4340
goto homogeneous;
4341
else
4342
goto homogeneous;
4343
}
4344
}
4345
structured:
4346
{
4347
x++;
4348
if(x > xsizeB)
4349
break;
4350
else
4351
{
4352
const unsigned char* const ptr = img.ptr() + y*width + x;
4353
const int cb = *ptr + threshold;
4354
const int c_b = *ptr - threshold;
4355
if(ptr[offset0] > cb)
4356
if(ptr[offset2] > cb)
4357
if(ptr[offset5] > cb)
4358
if(ptr[offset9] > cb)
4359
if(ptr[offset7] > cb)
4360
if(ptr[offset1] > cb)
4361
if(ptr[offset6] > cb)
4362
if(ptr[offset3] > cb)
4363
if(ptr[offset4] > cb)
4364
goto success_structured;
4365
else
4366
if(ptr[offset10] > cb)
4367
if(ptr[offset11] > cb)
4368
goto success_structured;
4369
else
4370
goto structured;
4371
else
4372
goto structured;
4373
else
4374
if(ptr[offset8] > cb)
4375
if(ptr[offset10] > cb)
4376
if(ptr[offset4] > cb)
4377
goto success_structured;
4378
else
4379
if(ptr[offset11] > cb)
4380
goto success_structured;
4381
else
4382
goto structured;
4383
else
4384
goto structured;
4385
else
4386
goto structured;
4387
else
4388
if(ptr[offset11] > cb)
4389
if(ptr[offset3] > cb)
4390
if(ptr[offset4] > cb)
4391
goto success_structured;
4392
else
4393
if(ptr[offset10] > cb)
4394
goto success_structured;
4395
else
4396
goto structured;
4397
else
4398
if(ptr[offset8] > cb)
4399
if(ptr[offset10] > cb)
4400
goto success_structured;
4401
else
4402
goto structured;
4403
else
4404
goto structured;
4405
else
4406
goto structured;
4407
else
4408
if(ptr[offset6] > cb)
4409
if(ptr[offset8] > cb)
4410
if(ptr[offset4] > cb)
4411
if(ptr[offset3] > cb)
4412
goto success_structured;
4413
else
4414
if(ptr[offset10] > cb)
4415
goto success_structured;
4416
else
4417
goto structured;
4418
else
4419
if(ptr[offset10] > cb)
4420
if(ptr[offset11] > cb)
4421
goto success_structured;
4422
else
4423
goto structured;
4424
else
4425
goto structured;
4426
else
4427
goto structured;
4428
else
4429
goto structured;
4430
else
4431
if(ptr[offset1] > cb)
4432
if(ptr[offset11] > cb)
4433
if(ptr[offset3] > cb)
4434
if(ptr[offset4] > cb)
4435
goto success_structured;
4436
else
4437
if(ptr[offset10] > cb)
4438
goto success_structured;
4439
else
4440
goto structured;
4441
else
4442
if(ptr[offset8] > cb)
4443
if(ptr[offset10] > cb)
4444
goto success_structured;
4445
else
4446
goto structured;
4447
else
4448
goto structured;
4449
else
4450
if(ptr[offset6] > cb)
4451
if(ptr[offset3] > cb)
4452
if(ptr[offset4] > cb)
4453
goto success_structured;
4454
else
4455
goto structured;
4456
else
4457
goto structured;
4458
else
4459
goto structured;
4460
else
4461
goto structured;
4462
else
4463
if(ptr[offset3] > cb)
4464
if(ptr[offset4] > cb)
4465
if(ptr[offset7] > cb)
4466
if(ptr[offset1] > cb)
4467
if(ptr[offset6] > cb)
4468
goto success_structured;
4469
else
4470
if(ptr[offset11] > cb)
4471
goto success_structured;
4472
else
4473
goto structured;
4474
else
4475
if(ptr[offset6] > cb)
4476
if(ptr[offset8] > cb)
4477
goto success_structured;
4478
else
4479
goto structured;
4480
else
4481
goto structured;
4482
else
4483
if(ptr[offset1] > cb)
4484
if(ptr[offset6] > cb)
4485
goto success_structured;
4486
else
4487
if(ptr[offset11] > cb)
4488
goto success_structured;
4489
else
4490
goto structured;
4491
else
4492
goto structured;
4493
else
4494
goto structured;
4495
else
4496
goto structured;
4497
else
4498
if(ptr[offset7] < c_b)
4499
if(ptr[offset9] < c_b)
4500
if(ptr[offset5] < c_b)
4501
if(ptr[offset1] > cb)
4502
if(ptr[offset4] > cb)
4503
if(ptr[offset10] > cb)
4504
if(ptr[offset3] > cb)
4505
if(ptr[offset11] > cb)
4506
goto success_structured;
4507
else
4508
goto structured;
4509
else
4510
goto structured;
4511
else
4512
if(ptr[offset6] < c_b)
4513
if(ptr[offset8] < c_b)
4514
if(ptr[offset11] < c_b)
4515
if(ptr[offset10] < c_b)
4516
goto success_structured;
4517
else
4518
goto structured;
4519
else
4520
goto structured;
4521
else
4522
goto structured;
4523
else
4524
goto structured;
4525
else
4526
if(ptr[offset6] < c_b)
4527
if(ptr[offset8] < c_b)
4528
if(ptr[offset10] < c_b)
4529
if(ptr[offset4] < c_b)
4530
goto success_structured;
4531
else
4532
if(ptr[offset11] < c_b)
4533
goto success_structured;
4534
else
4535
goto structured;
4536
else
4537
if(ptr[offset3] < c_b)
4538
if(ptr[offset4] < c_b)
4539
goto success_structured;
4540
else
4541
goto structured;
4542
else
4543
goto structured;
4544
else
4545
goto structured;
4546
else
4547
goto structured;
4548
else
4549
if(ptr[offset6] < c_b)
4550
if(ptr[offset8] < c_b)
4551
if(ptr[offset4] < c_b)
4552
if(ptr[offset3] < c_b)
4553
goto success_structured;
4554
else
4555
if(ptr[offset10] < c_b)
4556
goto success_structured;
4557
else
4558
goto structured;
4559
else
4560
if(ptr[offset10] < c_b)
4561
if(ptr[offset11] < c_b)
4562
goto success_structured;
4563
else
4564
goto structured;
4565
else
4566
goto structured;
4567
else
4568
goto structured;
4569
else
4570
goto structured;
4571
else
4572
if(ptr[offset1] > cb)
4573
if(ptr[offset3] > cb)
4574
if(ptr[offset4] > cb)
4575
if(ptr[offset10] > cb)
4576
if(ptr[offset11] > cb)
4577
goto success_structured;
4578
else
4579
goto structured;
4580
else
4581
goto structured;
4582
else
4583
goto structured;
4584
else
4585
goto structured;
4586
else
4587
goto structured;
4588
else
4589
if(ptr[offset10] > cb)
4590
if(ptr[offset11] > cb)
4591
if(ptr[offset9] > cb)
4592
if(ptr[offset1] > cb)
4593
if(ptr[offset3] > cb)
4594
goto success_structured;
4595
else
4596
if(ptr[offset8] > cb)
4597
goto success_structured;
4598
else
4599
goto structured;
4600
else
4601
goto structured;
4602
else
4603
if(ptr[offset1] > cb)
4604
if(ptr[offset3] > cb)
4605
if(ptr[offset4] > cb)
4606
goto success_structured;
4607
else
4608
goto structured;
4609
else
4610
goto structured;
4611
else
4612
goto structured;
4613
else
4614
goto structured;
4615
else
4616
goto structured;
4617
else
4618
if(ptr[offset10] > cb)
4619
if(ptr[offset11] > cb)
4620
if(ptr[offset9] > cb)
4621
if(ptr[offset1] > cb)
4622
if(ptr[offset3] > cb)
4623
goto success_structured;
4624
else
4625
if(ptr[offset8] > cb)
4626
goto success_structured;
4627
else
4628
goto structured;
4629
else
4630
if(ptr[offset6] > cb)
4631
if(ptr[offset8] > cb)
4632
if(ptr[offset7] > cb)
4633
goto success_structured;
4634
else
4635
goto structured;
4636
else
4637
goto structured;
4638
else
4639
goto structured;
4640
else
4641
if(ptr[offset1] > cb)
4642
if(ptr[offset3] > cb)
4643
if(ptr[offset4] > cb)
4644
goto success_structured;
4645
else
4646
goto structured;
4647
else
4648
goto structured;
4649
else
4650
goto structured;
4651
else
4652
goto structured;
4653
else
4654
goto structured;
4655
else
4656
if(ptr[offset7] > cb)
4657
if(ptr[offset9] > cb)
4658
if(ptr[offset8] > cb)
4659
if(ptr[offset5] > cb)
4660
if(ptr[offset1] > cb)
4661
if(ptr[offset10] > cb)
4662
if(ptr[offset11] > cb)
4663
goto success_structured;
4664
else
4665
if(ptr[offset6] > cb)
4666
if(ptr[offset4] > cb)
4667
goto success_structured;
4668
else
4669
goto structured;
4670
else
4671
goto structured;
4672
else
4673
if(ptr[offset6] > cb)
4674
if(ptr[offset3] > cb)
4675
if(ptr[offset4] > cb)
4676
goto success_structured;
4677
else
4678
goto structured;
4679
else
4680
goto structured;
4681
else
4682
goto structured;
4683
else
4684
if(ptr[offset6] > cb)
4685
if(ptr[offset4] > cb)
4686
if(ptr[offset3] > cb)
4687
goto success_structured;
4688
else
4689
if(ptr[offset10] > cb)
4690
goto success_structured;
4691
else
4692
goto structured;
4693
else
4694
if(ptr[offset10] > cb)
4695
if(ptr[offset11] > cb)
4696
goto success_structured;
4697
else
4698
goto structured;
4699
else
4700
goto structured;
4701
else
4702
goto structured;
4703
else
4704
if(ptr[offset10] > cb)
4705
if(ptr[offset11] > cb)
4706
if(ptr[offset1] > cb)
4707
goto success_structured;
4708
else
4709
if(ptr[offset6] > cb)
4710
goto success_structured;
4711
else
4712
goto structured;
4713
else
4714
goto structured;
4715
else
4716
goto structured;
4717
else
4718
goto structured;
4719
else
4720
goto structured;
4721
else
4722
if(ptr[offset7] < c_b)
4723
if(ptr[offset5] < c_b)
4724
if(ptr[offset2] < c_b)
4725
if(ptr[offset6] < c_b)
4726
if(ptr[offset4] < c_b)
4727
if(ptr[offset3] < c_b)
4728
if(ptr[offset1] < c_b)
4729
goto success_structured;
4730
else
4731
if(ptr[offset8] < c_b)
4732
goto success_structured;
4733
else
4734
goto structured;
4735
else
4736
if(ptr[offset9] < c_b)
4737
if(ptr[offset8] < c_b)
4738
if(ptr[offset10] < c_b)
4739
goto success_structured;
4740
else
4741
goto structured;
4742
else
4743
goto structured;
4744
else
4745
goto structured;
4746
else
4747
if(ptr[offset9] < c_b)
4748
if(ptr[offset8] < c_b)
4749
if(ptr[offset10] < c_b)
4750
if(ptr[offset11] < c_b)
4751
goto success_structured;
4752
else
4753
goto structured;
4754
else
4755
goto structured;
4756
else
4757
goto structured;
4758
else
4759
goto structured;
4760
else
4761
goto structured;
4762
else
4763
if(ptr[offset9] < c_b)
4764
if(ptr[offset6] < c_b)
4765
if(ptr[offset8] < c_b)
4766
if(ptr[offset4] < c_b)
4767
if(ptr[offset3] < c_b)
4768
goto success_structured;
4769
else
4770
if(ptr[offset10] < c_b)
4771
goto success_structured;
4772
else
4773
goto structured;
4774
else
4775
if(ptr[offset10] < c_b)
4776
if(ptr[offset11] < c_b)
4777
goto success_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
4789
goto structured;
4790
else
4791
goto structured;
4792
else
4793
if(ptr[offset0] < c_b)
4794
if(ptr[offset2] < c_b)
4795
if(ptr[offset11] < c_b)
4796
if(ptr[offset3] < c_b)
4797
if(ptr[offset5] < c_b)
4798
if(ptr[offset9] < c_b)
4799
if(ptr[offset7] < c_b)
4800
if(ptr[offset1] < c_b)
4801
if(ptr[offset4] < c_b)
4802
goto success_structured;
4803
else
4804
if(ptr[offset10] < c_b)
4805
goto success_structured;
4806
else
4807
goto structured;
4808
else
4809
if(ptr[offset6] < c_b)
4810
if(ptr[offset8] < c_b)
4811
if(ptr[offset4] < c_b)
4812
goto success_structured;
4813
else
4814
if(ptr[offset10] < c_b)
4815
goto success_structured;
4816
else
4817
goto structured;
4818
else
4819
goto structured;
4820
else
4821
goto structured;
4822
else
4823
if(ptr[offset1] < c_b)
4824
if(ptr[offset4] < c_b)
4825
goto success_structured;
4826
else
4827
if(ptr[offset10] < c_b)
4828
goto success_structured;
4829
else
4830
goto structured;
4831
else
4832
goto structured;
4833
else
4834
if(ptr[offset4] < c_b)
4835
if(ptr[offset7] < c_b)
4836
if(ptr[offset1] < c_b)
4837
goto success_structured;
4838
else
4839
if(ptr[offset6] < c_b)
4840
if(ptr[offset8] < c_b)
4841
goto success_structured;
4842
else
4843
goto structured;
4844
else
4845
goto structured;
4846
else
4847
if(ptr[offset1] < c_b)
4848
goto success_structured;
4849
else
4850
goto structured;
4851
else
4852
goto structured;
4853
else
4854
if(ptr[offset10] < c_b)
4855
if(ptr[offset9] < c_b)
4856
if(ptr[offset7] < c_b)
4857
if(ptr[offset1] < c_b)
4858
goto success_structured;
4859
else
4860
if(ptr[offset6] < c_b)
4861
if(ptr[offset8] < c_b)
4862
goto success_structured;
4863
else
4864
goto structured;
4865
else
4866
goto structured;
4867
else
4868
if(ptr[offset1] < c_b)
4869
goto success_structured;
4870
else
4871
goto structured;
4872
else
4873
if(ptr[offset1] < c_b)
4874
if(ptr[offset4] < c_b)
4875
goto success_structured;
4876
else
4877
goto structured;
4878
else
4879
goto structured;
4880
else
4881
if(ptr[offset7] > cb)
4882
if(ptr[offset9] > cb)
4883
if(ptr[offset5] > cb)
4884
if(ptr[offset4] > cb)
4885
if(ptr[offset6] > cb)
4886
if(ptr[offset8] > cb)
4887
if(ptr[offset10] > cb)
4888
goto success_structured;
4889
else
4890
goto structured;
4891
else
4892
goto structured;
4893
else
4894
goto structured;
4895
else
4896
goto structured;
4897
else
4898
goto structured;
4899
else
4900
goto structured;
4901
else
4902
goto structured;
4903
else
4904
if(ptr[offset9] < c_b)
4905
if(ptr[offset8] < c_b)
4906
if(ptr[offset10] < c_b)
4907
if(ptr[offset7] < c_b)
4908
if(ptr[offset1] < c_b)
4909
goto success_structured;
4910
else
4911
if(ptr[offset6] < c_b)
4912
goto success_structured;
4913
else
4914
goto structured;
4915
else
4916
if(ptr[offset1] < c_b)
4917
goto success_structured;
4918
else
4919
goto structured;
4920
else
4921
goto structured;
4922
else
4923
goto structured;
4924
else
4925
if(ptr[offset5] > cb)
4926
if(ptr[offset7] > cb)
4927
if(ptr[offset9] > cb)
4928
if(ptr[offset4] > cb)
4929
if(ptr[offset6] > cb)
4930
if(ptr[offset8] > cb)
4931
if(ptr[offset3] > cb)
4932
goto success_structured;
4933
else
4934
if(ptr[offset10] > cb)
4935
goto success_structured;
4936
else
4937
goto structured;
4938
else
4939
goto structured;
4940
else
4941
goto structured;
4942
else
4943
goto structured;
4944
else
4945
goto structured;
4946
else
4947
goto structured;
4948
else
4949
goto structured;
4950
else
4951
if(ptr[offset4] < c_b)
4952
if(ptr[offset5] < c_b)
4953
if(ptr[offset7] < c_b)
4954
if(ptr[offset6] < c_b)
4955
if(ptr[offset3] < c_b)
4956
if(ptr[offset1] < c_b)
4957
goto success_structured;
4958
else
4959
if(ptr[offset8] < c_b)
4960
goto success_structured;
4961
else
4962
goto structured;
4963
else
4964
if(ptr[offset9] < c_b)
4965
if(ptr[offset8] < c_b)
4966
if(ptr[offset10] < c_b)
4967
goto success_structured;
4968
else
4969
goto structured;
4970
else
4971
goto structured;
4972
else
4973
goto structured;
4974
else
4975
goto structured;
4976
else
4977
if(ptr[offset1] < c_b)
4978
if(ptr[offset6] < c_b)
4979
if(ptr[offset3] < c_b)
4980
goto success_structured;
4981
else
4982
goto structured;
4983
else
4984
goto structured;
4985
else
4986
goto structured;
4987
else
4988
if(ptr[offset7] > cb)
4989
if(ptr[offset9] > cb)
4990
if(ptr[offset5] > cb)
4991
if(ptr[offset6] > cb)
4992
if(ptr[offset8] > cb)
4993
if(ptr[offset10] > cb)
4994
if(ptr[offset11] > cb)
4995
goto success_structured;
4996
else
4997
goto structured;
4998
else
4999
goto structured;
5000
else
5001
goto structured;
5002
else
5003
goto structured;
5004
else
5005
goto structured;
5006
else
5007
goto structured;
5008
else
5009
goto structured;
5010
else
5011
if(ptr[offset5] > cb)
5012
if(ptr[offset7] > cb)
5013
if(ptr[offset9] > cb)
5014
if(ptr[offset6] > cb)
5015
if(ptr[offset8] > cb)
5016
if(ptr[offset10] > cb)
5017
if(ptr[offset4] > cb)
5018
goto success_structured;
5019
else
5020
if(ptr[offset11] > cb)
5021
goto success_structured;
5022
else
5023
goto homogeneous;
5024
else
5025
if(ptr[offset3] > cb)
5026
if(ptr[offset4] > cb)
5027
goto success_structured;
5028
else
5029
goto structured;
5030
else
5031
goto structured;
5032
else
5033
goto structured;
5034
else
5035
goto structured;
5036
else
5037
goto structured;
5038
else
5039
goto structured;
5040
else
5041
goto structured;
5042
else
5043
if(ptr[offset7] > cb)
5044
if(ptr[offset5] > cb)
5045
if(ptr[offset2] > cb)
5046
if(ptr[offset6] > cb)
5047
if(ptr[offset4] > cb)
5048
if(ptr[offset3] > cb)
5049
if(ptr[offset1] > cb)
5050
goto success_structured;
5051
else
5052
if(ptr[offset8] > cb)
5053
goto success_structured;
5054
else
5055
goto structured;
5056
else
5057
if(ptr[offset9] > cb)
5058
if(ptr[offset8] > cb)
5059
if(ptr[offset10] > cb)
5060
goto success_structured;
5061
else
5062
goto structured;
5063
else
5064
goto structured;
5065
else
5066
goto structured;
5067
else
5068
if(ptr[offset9] > cb)
5069
if(ptr[offset8] > cb)
5070
if(ptr[offset10] > cb)
5071
if(ptr[offset11] > cb)
5072
goto success_structured;
5073
else
5074
goto structured;
5075
else
5076
goto structured;
5077
else
5078
goto structured;
5079
else
5080
goto structured;
5081
else
5082
goto structured;
5083
else
5084
if(ptr[offset9] > cb)
5085
if(ptr[offset6] > cb)
5086
if(ptr[offset8] > cb)
5087
if(ptr[offset4] > cb)
5088
if(ptr[offset3] > cb)
5089
goto success_structured;
5090
else
5091
if(ptr[offset10] > cb)
5092
goto success_structured;
5093
else
5094
goto structured;
5095
else
5096
if(ptr[offset10] > cb)
5097
if(ptr[offset11] > cb)
5098
goto success_structured;
5099
else
5100
goto structured;
5101
else
5102
goto structured;
5103
else
5104
goto structured;
5105
else
5106
goto structured;
5107
else
5108
goto structured;
5109
else
5110
goto structured;
5111
else
5112
if(ptr[offset7] < c_b)
5113
if(ptr[offset9] < c_b)
5114
if(ptr[offset8] < c_b)
5115
if(ptr[offset5] < c_b)
5116
if(ptr[offset1] < c_b)
5117
if(ptr[offset10] < c_b)
5118
if(ptr[offset11] < c_b)
5119
goto success_structured;
5120
else
5121
if(ptr[offset6] < c_b)
5122
if(ptr[offset4] < c_b)
5123
goto success_structured;
5124
else
5125
goto structured;
5126
else
5127
goto structured;
5128
else
5129
if(ptr[offset6] < c_b)
5130
if(ptr[offset3] < c_b)
5131
if(ptr[offset4] < c_b)
5132
goto success_structured;
5133
else
5134
goto structured;
5135
else
5136
goto structured;
5137
else
5138
goto structured;
5139
else
5140
if(ptr[offset6] < c_b)
5141
if(ptr[offset4] < c_b)
5142
if(ptr[offset3] < c_b)
5143
goto success_structured;
5144
else
5145
if(ptr[offset10] < c_b)
5146
goto success_structured;
5147
else
5148
goto structured;
5149
else
5150
if(ptr[offset10] < c_b)
5151
if(ptr[offset11] < c_b)
5152
goto success_structured;
5153
else
5154
goto structured;
5155
else
5156
goto structured;
5157
else
5158
goto structured;
5159
else
5160
if(ptr[offset10] < c_b)
5161
if(ptr[offset11] < c_b)
5162
if(ptr[offset1] < c_b)
5163
goto success_structured;
5164
else
5165
if(ptr[offset6] < c_b)
5166
goto success_structured;
5167
else
5168
goto structured;
5169
else
5170
goto structured;
5171
else
5172
goto structured;
5173
else
5174
goto structured;
5175
else
5176
goto structured;
5177
else
5178
goto structured;
5179
else
5180
if(ptr[offset5] > cb)
5181
if(ptr[offset7] > cb)
5182
if(ptr[offset9] > cb)
5183
if(ptr[offset6] > cb)
5184
if(ptr[offset4] > cb)
5185
if(ptr[offset3] > cb)
5186
if(ptr[offset8] > cb)
5187
goto success_structured;
5188
else
5189
if(ptr[offset1] > cb)
5190
if(ptr[offset2] > cb)
5191
goto success_structured;
5192
else
5193
goto structured;
5194
else
5195
goto structured;
5196
else
5197
if(ptr[offset8] > cb)
5198
if(ptr[offset10] > cb)
5199
goto success_structured;
5200
else
5201
goto structured;
5202
else
5203
goto structured;
5204
else
5205
if(ptr[offset11] > cb)
5206
if(ptr[offset8] > cb)
5207
if(ptr[offset10] > cb)
5208
goto success_structured;
5209
else
5210
goto structured;
5211
else
5212
goto structured;
5213
else
5214
goto structured;
5215
else
5216
goto structured;
5217
else
5218
if(ptr[offset2] > cb)
5219
if(ptr[offset3] > cb)
5220
if(ptr[offset4] > cb)
5221
if(ptr[offset1] > cb)
5222
if(ptr[offset6] > cb)
5223
goto success_structured;
5224
else
5225
goto structured;
5226
else
5227
if(ptr[offset6] > cb)
5228
if(ptr[offset8] > cb)
5229
goto success_structured;
5230
else
5231
goto structured;
5232
else
5233
goto structured;
5234
else
5235
goto structured;
5236
else
5237
goto structured;
5238
else
5239
goto structured;
5240
else
5241
goto structured;
5242
else
5243
if(ptr[offset5] < c_b)
5244
if(ptr[offset7] < c_b)
5245
if(ptr[offset9] < c_b)
5246
if(ptr[offset6] < c_b)
5247
if(ptr[offset4] < c_b)
5248
if(ptr[offset3] < c_b)
5249
if(ptr[offset8] < c_b)
5250
goto success_structured;
5251
else
5252
if(ptr[offset1] < c_b)
5253
if(ptr[offset2] < c_b)
5254
goto success_structured;
5255
else
5256
goto structured;
5257
else
5258
goto structured;
5259
else
5260
if(ptr[offset8] < c_b)
5261
if(ptr[offset10] < c_b)
5262
goto success_structured;
5263
else
5264
goto structured;
5265
else
5266
goto structured;
5267
else
5268
if(ptr[offset11] < c_b)
5269
if(ptr[offset8] < c_b)
5270
if(ptr[offset10] < c_b)
5271
goto success_structured;
5272
else
5273
goto structured;
5274
else
5275
goto structured;
5276
else
5277
goto structured;
5278
else
5279
goto structured;
5280
else
5281
if(ptr[offset2] < c_b)
5282
if(ptr[offset3] < c_b)
5283
if(ptr[offset4] < c_b)
5284
if(ptr[offset1] < c_b)
5285
if(ptr[offset6] < c_b)
5286
goto success_structured;
5287
else
5288
goto structured;
5289
else
5290
if(ptr[offset6] < c_b)
5291
if(ptr[offset8] < c_b)
5292
goto success_structured;
5293
else
5294
goto structured;
5295
else
5296
goto structured;
5297
else
5298
goto structured;
5299
else
5300
goto structured;
5301
else
5302
goto structured;
5303
else
5304
goto structured;
5305
else
5306
goto homogeneous;
5307
}
5308
}
5309
success_homogeneous:
5310
if(total == nExpectedCorners)
5311
{
5312
if(nExpectedCorners == 0)
5313
{
5314
nExpectedCorners = 512;
5315
keypoints.reserve(nExpectedCorners);
5316
}
5317
else
5318
{
5319
nExpectedCorners *= 2;
5320
keypoints.reserve(nExpectedCorners);
5321
}
5322
}
5323
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
5324
total++;
5325
goto homogeneous;
5326
success_structured:
5327
if(total == nExpectedCorners)
5328
{
5329
if(nExpectedCorners == 0)
5330
{
5331
nExpectedCorners = 512;
5332
keypoints.reserve(nExpectedCorners);
5333
}
5334
else
5335
{
5336
nExpectedCorners *= 2;
5337
keypoints.reserve(nExpectedCorners);
5338
}
5339
}
5340
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
5341
total++;
5342
goto structured;
5343
}
5344
}
5345
}
5346
5347
static void OAST_9_16(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold)
5348
{
5349
cv::Mat img;
5350
if(!_img.getMat().isContinuous())
5351
img = _img.getMat().clone();
5352
else
5353
img = _img.getMat();
5354
5355
size_t total = 0;
5356
int xsize = img.cols;
5357
int ysize = img.rows;
5358
size_t nExpectedCorners = keypoints.capacity();
5359
int x, y;
5360
int xsizeB=xsize - 4;
5361
int ysizeB=ysize - 3;
5362
int width;
5363
5364
keypoints.resize(0);
5365
5366
int pixel_9_16_[16];
5367
makeAgastOffsets(pixel_9_16_, (int)img.step, AgastFeatureDetector::OAST_9_16);
5368
5369
short offset0 = (short) pixel_9_16_[0];
5370
short offset1 = (short) pixel_9_16_[1];
5371
short offset2 = (short) pixel_9_16_[2];
5372
short offset3 = (short) pixel_9_16_[3];
5373
short offset4 = (short) pixel_9_16_[4];
5374
short offset5 = (short) pixel_9_16_[5];
5375
short offset6 = (short) pixel_9_16_[6];
5376
short offset7 = (short) pixel_9_16_[7];
5377
short offset8 = (short) pixel_9_16_[8];
5378
short offset9 = (short) pixel_9_16_[9];
5379
short offset10 = (short) pixel_9_16_[10];
5380
short offset11 = (short) pixel_9_16_[11];
5381
short offset12 = (short) pixel_9_16_[12];
5382
short offset13 = (short) pixel_9_16_[13];
5383
short offset14 = (short) pixel_9_16_[14];
5384
short offset15 = (short) pixel_9_16_[15];
5385
5386
width = xsize;
5387
5388
for(y = 3; y < ysizeB; y++)
5389
{
5390
x = 2;
5391
while(true)
5392
{
5393
x++;
5394
if(x > xsizeB)
5395
break;
5396
else
5397
{
5398
const unsigned char* const ptr = img.ptr() + y*width + x;
5399
const int cb = *ptr + threshold;
5400
const int c_b = *ptr - threshold;
5401
if(ptr[offset0] > cb)
5402
if(ptr[offset2] > cb)
5403
if(ptr[offset4] > cb)
5404
if(ptr[offset5] > cb)
5405
if(ptr[offset7] > cb)
5406
if(ptr[offset3] > cb)
5407
if(ptr[offset1] > cb)
5408
if(ptr[offset6] > cb)
5409
if(ptr[offset8] > cb)
5410
{} // goto success_homogeneous;
5411
else
5412
if(ptr[offset15] > cb)
5413
{} // goto success_homogeneous;
5414
else
5415
continue; // goto homogeneous;
5416
else
5417
if(ptr[offset13] > cb)
5418
if(ptr[offset14] > cb)
5419
if(ptr[offset15] > cb)
5420
{} // goto success_homogeneous;
5421
else
5422
continue; // goto homogeneous;
5423
else
5424
continue; // goto homogeneous;
5425
else
5426
continue; // goto homogeneous;
5427
else
5428
if(ptr[offset8] > cb)
5429
if(ptr[offset9] > cb)
5430
if(ptr[offset10] > cb)
5431
if(ptr[offset6] > cb)
5432
{} // goto success_homogeneous;
5433
else
5434
if(ptr[offset11] > cb)
5435
if(ptr[offset12] > cb)
5436
if(ptr[offset13] > cb)
5437
if(ptr[offset14] > cb)
5438
if(ptr[offset15] > cb)
5439
{} // goto success_homogeneous;
5440
else
5441
continue; // goto homogeneous;
5442
else
5443
continue; // goto homogeneous;
5444
else
5445
continue; // goto homogeneous;
5446
else
5447
continue; // goto homogeneous;
5448
else
5449
continue; // goto homogeneous;
5450
else
5451
continue; // goto homogeneous;
5452
else
5453
continue; // goto homogeneous;
5454
else
5455
continue; // goto homogeneous;
5456
else
5457
if(ptr[offset10] > cb)
5458
if(ptr[offset11] > cb)
5459
if(ptr[offset12] > cb)
5460
if(ptr[offset8] > cb)
5461
if(ptr[offset9] > cb)
5462
if(ptr[offset6] > cb)
5463
{} // goto success_homogeneous;
5464
else
5465
if(ptr[offset13] > cb)
5466
if(ptr[offset14] > cb)
5467
if(ptr[offset15] > cb)
5468
{} // goto success_homogeneous;
5469
else
5470
continue; // goto homogeneous;
5471
else
5472
continue; // goto homogeneous;
5473
else
5474
continue; // goto homogeneous;
5475
else
5476
if(ptr[offset1] > cb)
5477
if(ptr[offset13] > cb)
5478
if(ptr[offset14] > cb)
5479
if(ptr[offset15] > cb)
5480
{} // goto success_homogeneous;
5481
else
5482
continue; // goto homogeneous;
5483
else
5484
continue; // goto homogeneous;
5485
else
5486
continue; // goto homogeneous;
5487
else
5488
continue; // goto homogeneous;
5489
else
5490
if(ptr[offset1] > cb)
5491
if(ptr[offset13] > cb)
5492
if(ptr[offset14] > cb)
5493
if(ptr[offset15] > cb)
5494
{} // goto success_homogeneous;
5495
else
5496
continue; // goto homogeneous;
5497
else
5498
continue; // goto homogeneous;
5499
else
5500
continue; // goto homogeneous;
5501
else
5502
continue; // goto homogeneous;
5503
else
5504
continue; // goto homogeneous;
5505
else
5506
continue; // goto homogeneous;
5507
else
5508
continue; // goto homogeneous;
5509
else
5510
if(ptr[offset7] < c_b)
5511
if(ptr[offset14] > cb)
5512
if(ptr[offset15] > cb)
5513
if(ptr[offset1] > cb)
5514
if(ptr[offset3] > cb)
5515
if(ptr[offset6] > cb)
5516
{} // goto success_homogeneous;
5517
else
5518
if(ptr[offset13] > cb)
5519
{} // goto success_homogeneous;
5520
else
5521
continue; // goto homogeneous;
5522
else
5523
if(ptr[offset10] > cb)
5524
if(ptr[offset11] > cb)
5525
if(ptr[offset12] > cb)
5526
if(ptr[offset13] > cb)
5527
{} // goto success_homogeneous;
5528
else
5529
continue; // goto homogeneous;
5530
else
5531
continue; // goto homogeneous;
5532
else
5533
continue; // goto homogeneous;
5534
else
5535
continue; // goto homogeneous;
5536
else
5537
if(ptr[offset8] > cb)
5538
if(ptr[offset9] > cb)
5539
if(ptr[offset10] > cb)
5540
if(ptr[offset11] > cb)
5541
if(ptr[offset12] > cb)
5542
if(ptr[offset13] > cb)
5543
{} // goto success_homogeneous;
5544
else
5545
continue; // goto homogeneous;
5546
else
5547
continue; // goto homogeneous;
5548
else
5549
continue; // goto homogeneous;
5550
else
5551
continue; // goto homogeneous;
5552
else
5553
continue; // goto homogeneous;
5554
else
5555
continue; // goto homogeneous;
5556
else
5557
continue; // goto homogeneous;
5558
else
5559
if(ptr[offset14] < c_b)
5560
if(ptr[offset8] < c_b)
5561
if(ptr[offset9] < c_b)
5562
if(ptr[offset10] < c_b)
5563
if(ptr[offset11] < c_b)
5564
if(ptr[offset12] < c_b)
5565
if(ptr[offset13] < c_b)
5566
if(ptr[offset6] < c_b)
5567
{} // goto success_homogeneous;
5568
else
5569
if(ptr[offset15] < c_b)
5570
{} // goto success_homogeneous;
5571
else
5572
continue; // goto homogeneous;
5573
else
5574
continue; // goto homogeneous;
5575
else
5576
continue; // goto homogeneous;
5577
else
5578
continue; // goto homogeneous;
5579
else
5580
continue; // goto homogeneous;
5581
else
5582
continue; // goto homogeneous;
5583
else
5584
continue; // goto homogeneous;
5585
else
5586
continue; // goto homogeneous;
5587
else
5588
if(ptr[offset14] > cb)
5589
if(ptr[offset15] > cb)
5590
if(ptr[offset1] > cb)
5591
if(ptr[offset3] > cb)
5592
if(ptr[offset6] > cb)
5593
{} // goto success_homogeneous;
5594
else
5595
if(ptr[offset13] > cb)
5596
{} // goto success_homogeneous;
5597
else
5598
continue; // goto homogeneous;
5599
else
5600
if(ptr[offset10] > cb)
5601
if(ptr[offset11] > cb)
5602
if(ptr[offset12] > cb)
5603
if(ptr[offset13] > cb)
5604
{} // goto success_homogeneous;
5605
else
5606
continue; // goto homogeneous;
5607
else
5608
continue; // goto homogeneous;
5609
else
5610
continue; // goto homogeneous;
5611
else
5612
continue; // goto homogeneous;
5613
else
5614
if(ptr[offset8] > cb)
5615
if(ptr[offset9] > cb)
5616
if(ptr[offset10] > cb)
5617
if(ptr[offset11] > cb)
5618
if(ptr[offset12] > cb)
5619
if(ptr[offset13] > cb)
5620
{} // goto success_homogeneous;
5621
else
5622
continue; // goto homogeneous;
5623
else
5624
continue; // goto homogeneous;
5625
else
5626
continue; // goto homogeneous;
5627
else
5628
continue; // goto homogeneous;
5629
else
5630
continue; // goto homogeneous;
5631
else
5632
continue; // goto homogeneous;
5633
else
5634
continue; // goto homogeneous;
5635
else
5636
continue; // goto homogeneous;
5637
else
5638
if(ptr[offset5] < c_b)
5639
if(ptr[offset12] > cb)
5640
if(ptr[offset13] > cb)
5641
if(ptr[offset14] > cb)
5642
if(ptr[offset15] > cb)
5643
if(ptr[offset1] > cb)
5644
if(ptr[offset3] > cb)
5645
{} // goto success_homogeneous;
5646
else
5647
if(ptr[offset10] > cb)
5648
if(ptr[offset11] > cb)
5649
{} // goto success_homogeneous;
5650
else
5651
continue; // goto homogeneous;
5652
else
5653
continue; // goto homogeneous;
5654
else
5655
if(ptr[offset8] > cb)
5656
if(ptr[offset9] > cb)
5657
if(ptr[offset10] > cb)
5658
if(ptr[offset11] > cb)
5659
{} // goto success_homogeneous;
5660
else
5661
continue; // goto homogeneous;
5662
else
5663
continue; // goto homogeneous;
5664
else
5665
continue; // goto homogeneous;
5666
else
5667
continue; // goto homogeneous;
5668
else
5669
if(ptr[offset6] > cb)
5670
if(ptr[offset7] > cb)
5671
if(ptr[offset8] > cb)
5672
if(ptr[offset9] > cb)
5673
if(ptr[offset10] > cb)
5674
if(ptr[offset11] > cb)
5675
{} // goto success_homogeneous;
5676
else
5677
continue; // goto homogeneous;
5678
else
5679
continue; // goto homogeneous;
5680
else
5681
continue; // goto homogeneous;
5682
else
5683
continue; // goto homogeneous;
5684
else
5685
continue; // goto homogeneous;
5686
else
5687
continue; // goto homogeneous;
5688
else
5689
continue; // goto homogeneous;
5690
else
5691
continue; // goto homogeneous;
5692
else
5693
if(ptr[offset12] < c_b)
5694
if(ptr[offset7] < c_b)
5695
if(ptr[offset8] < c_b)
5696
if(ptr[offset9] < c_b)
5697
if(ptr[offset10] < c_b)
5698
if(ptr[offset11] < c_b)
5699
if(ptr[offset13] < c_b)
5700
if(ptr[offset6] < c_b)
5701
{} // goto success_homogeneous;
5702
else
5703
if(ptr[offset14] < c_b)
5704
if(ptr[offset15] < c_b)
5705
{} // goto success_homogeneous;
5706
else
5707
continue; // goto homogeneous;
5708
else
5709
continue; // goto homogeneous;
5710
else
5711
continue; // goto homogeneous;
5712
else
5713
continue; // goto homogeneous;
5714
else
5715
continue; // goto homogeneous;
5716
else
5717
continue; // goto homogeneous;
5718
else
5719
continue; // goto homogeneous;
5720
else
5721
continue; // goto homogeneous;
5722
else
5723
continue; // goto homogeneous;
5724
else
5725
if(ptr[offset12] > cb)
5726
if(ptr[offset13] > cb)
5727
if(ptr[offset14] > cb)
5728
if(ptr[offset15] > cb)
5729
if(ptr[offset1] > cb)
5730
if(ptr[offset3] > cb)
5731
{} // goto success_homogeneous;
5732
else
5733
if(ptr[offset10] > cb)
5734
if(ptr[offset11] > cb)
5735
{} // goto success_homogeneous;
5736
else
5737
continue; // goto homogeneous;
5738
else
5739
continue; // goto homogeneous;
5740
else
5741
if(ptr[offset8] > cb)
5742
if(ptr[offset9] > cb)
5743
if(ptr[offset10] > cb)
5744
if(ptr[offset11] > cb)
5745
{} // goto success_homogeneous;
5746
else
5747
continue; // goto homogeneous;
5748
else
5749
continue; // goto homogeneous;
5750
else
5751
continue; // goto homogeneous;
5752
else
5753
continue; // goto homogeneous;
5754
else
5755
if(ptr[offset6] > cb)
5756
if(ptr[offset7] > cb)
5757
if(ptr[offset8] > cb)
5758
if(ptr[offset9] > cb)
5759
if(ptr[offset10] > cb)
5760
if(ptr[offset11] > cb)
5761
{} // goto success_homogeneous;
5762
else
5763
continue; // goto homogeneous;
5764
else
5765
continue; // goto homogeneous;
5766
else
5767
continue; // goto homogeneous;
5768
else
5769
continue; // goto homogeneous;
5770
else
5771
continue; // goto homogeneous;
5772
else
5773
continue; // goto homogeneous;
5774
else
5775
continue; // goto homogeneous;
5776
else
5777
continue; // goto homogeneous;
5778
else
5779
if(ptr[offset12] < c_b)
5780
if(ptr[offset7] < c_b)
5781
if(ptr[offset8] < c_b)
5782
if(ptr[offset9] < c_b)
5783
if(ptr[offset10] < c_b)
5784
if(ptr[offset11] < c_b)
5785
if(ptr[offset13] < c_b)
5786
if(ptr[offset14] < c_b)
5787
if(ptr[offset6] < c_b)
5788
{} // goto success_homogeneous;
5789
else
5790
if(ptr[offset15] < c_b)
5791
{} // goto success_homogeneous;
5792
else
5793
continue; // goto homogeneous;
5794
else
5795
continue; // goto homogeneous;
5796
else
5797
continue; // goto homogeneous;
5798
else
5799
continue; // goto homogeneous;
5800
else
5801
continue; // goto homogeneous;
5802
else
5803
continue; // goto homogeneous;
5804
else
5805
continue; // goto homogeneous;
5806
else
5807
continue; // goto homogeneous;
5808
else
5809
continue; // goto homogeneous;
5810
else
5811
if(ptr[offset4] < c_b)
5812
if(ptr[offset11] > cb)
5813
if(ptr[offset12] > cb)
5814
if(ptr[offset13] > cb)
5815
if(ptr[offset10] > cb)
5816
if(ptr[offset14] > cb)
5817
if(ptr[offset15] > cb)
5818
if(ptr[offset1] > cb)
5819
{} // goto success_homogeneous;
5820
else
5821
if(ptr[offset8] > cb)
5822
if(ptr[offset9] > cb)
5823
{} // goto success_homogeneous;
5824
else
5825
continue; // goto homogeneous;
5826
else
5827
continue; // goto homogeneous;
5828
else
5829
if(ptr[offset6] > cb)
5830
if(ptr[offset7] > cb)
5831
if(ptr[offset8] > cb)
5832
if(ptr[offset9] > cb)
5833
{} // goto success_homogeneous;
5834
else
5835
continue; // goto homogeneous;
5836
else
5837
continue; // goto homogeneous;
5838
else
5839
continue; // goto homogeneous;
5840
else
5841
continue; // goto homogeneous;
5842
else
5843
if(ptr[offset5] > cb)
5844
if(ptr[offset6] > cb)
5845
if(ptr[offset7] > cb)
5846
if(ptr[offset8] > cb)
5847
if(ptr[offset9] > cb)
5848
{} // goto success_homogeneous;
5849
else
5850
continue; // goto homogeneous;
5851
else
5852
continue; // goto homogeneous;
5853
else
5854
continue; // goto homogeneous;
5855
else
5856
continue; // goto homogeneous;
5857
else
5858
continue; // goto homogeneous;
5859
else
5860
if(ptr[offset1] > cb)
5861
if(ptr[offset3] > cb)
5862
if(ptr[offset14] > cb)
5863
if(ptr[offset15] > cb)
5864
{} // goto success_homogeneous;
5865
else
5866
continue; // goto homogeneous;
5867
else
5868
continue; // goto homogeneous;
5869
else
5870
continue; // goto homogeneous;
5871
else
5872
continue; // goto homogeneous;
5873
else
5874
continue; // goto homogeneous;
5875
else
5876
continue; // goto homogeneous;
5877
else
5878
if(ptr[offset11] < c_b)
5879
if(ptr[offset7] < c_b)
5880
if(ptr[offset8] < c_b)
5881
if(ptr[offset9] < c_b)
5882
if(ptr[offset10] < c_b)
5883
if(ptr[offset6] < c_b)
5884
if(ptr[offset5] < c_b)
5885
if(ptr[offset3] < c_b)
5886
{} // goto success_homogeneous;
5887
else
5888
if(ptr[offset12] < c_b)
5889
{} // goto success_homogeneous;
5890
else
5891
continue; // goto homogeneous;
5892
else
5893
if(ptr[offset12] < c_b)
5894
if(ptr[offset13] < c_b)
5895
if(ptr[offset14] < c_b)
5896
{} // goto success_homogeneous;
5897
else
5898
continue; // goto homogeneous;
5899
else
5900
continue; // goto homogeneous;
5901
else
5902
continue; // goto homogeneous;
5903
else
5904
if(ptr[offset12] < c_b)
5905
if(ptr[offset13] < c_b)
5906
if(ptr[offset14] < c_b)
5907
if(ptr[offset15] < c_b)
5908
{} // goto success_homogeneous;
5909
else
5910
continue; // goto homogeneous;
5911
else
5912
continue; // goto homogeneous;
5913
else
5914
continue; // goto homogeneous;
5915
else
5916
continue; // goto homogeneous;
5917
else
5918
continue; // goto homogeneous;
5919
else
5920
continue; // goto homogeneous;
5921
else
5922
continue; // goto homogeneous;
5923
else
5924
continue; // goto homogeneous;
5925
else
5926
continue; // goto homogeneous;
5927
else
5928
if(ptr[offset11] > cb)
5929
if(ptr[offset12] > cb)
5930
if(ptr[offset13] > cb)
5931
if(ptr[offset10] > cb)
5932
if(ptr[offset14] > cb)
5933
if(ptr[offset15] > cb)
5934
if(ptr[offset1] > cb)
5935
{} // goto success_homogeneous;
5936
else
5937
if(ptr[offset8] > cb)
5938
if(ptr[offset9] > cb)
5939
{} // goto success_homogeneous;
5940
else
5941
continue; // goto homogeneous;
5942
else
5943
continue; // goto homogeneous;
5944
else
5945
if(ptr[offset6] > cb)
5946
if(ptr[offset7] > cb)
5947
if(ptr[offset8] > cb)
5948
if(ptr[offset9] > cb)
5949
{} // goto success_homogeneous;
5950
else
5951
continue; // goto homogeneous;
5952
else
5953
continue; // goto homogeneous;
5954
else
5955
continue; // goto homogeneous;
5956
else
5957
continue; // goto homogeneous;
5958
else
5959
if(ptr[offset5] > cb)
5960
if(ptr[offset6] > cb)
5961
if(ptr[offset7] > cb)
5962
if(ptr[offset8] > cb)
5963
if(ptr[offset9] > cb)
5964
{} // goto success_homogeneous;
5965
else
5966
continue; // goto homogeneous;
5967
else
5968
continue; // goto homogeneous;
5969
else
5970
continue; // goto homogeneous;
5971
else
5972
continue; // goto homogeneous;
5973
else
5974
continue; // goto homogeneous;
5975
else
5976
if(ptr[offset1] > cb)
5977
if(ptr[offset3] > cb)
5978
if(ptr[offset14] > cb)
5979
if(ptr[offset15] > cb)
5980
{} // goto success_homogeneous;
5981
else
5982
continue; // goto homogeneous;
5983
else
5984
continue; // goto homogeneous;
5985
else
5986
continue; // goto homogeneous;
5987
else
5988
continue; // goto homogeneous;
5989
else
5990
continue; // goto homogeneous;
5991
else
5992
continue; // goto homogeneous;
5993
else
5994
if(ptr[offset11] < c_b)
5995
if(ptr[offset7] < c_b)
5996
if(ptr[offset8] < c_b)
5997
if(ptr[offset9] < c_b)
5998
if(ptr[offset10] < c_b)
5999
if(ptr[offset12] < c_b)
6000
if(ptr[offset13] < c_b)
6001
if(ptr[offset6] < c_b)
6002
if(ptr[offset5] < c_b)
6003
{} // goto success_homogeneous;
6004
else
6005
if(ptr[offset14] < c_b)
6006
{} // goto success_homogeneous;
6007
else
6008
continue; // goto homogeneous;
6009
else
6010
if(ptr[offset14] < c_b)
6011
if(ptr[offset15] < c_b)
6012
{} // goto success_homogeneous;
6013
else
6014
continue; // goto homogeneous;
6015
else
6016
continue; // goto homogeneous;
6017
else
6018
continue; // goto homogeneous;
6019
else
6020
continue; // goto homogeneous;
6021
else
6022
continue; // goto homogeneous;
6023
else
6024
continue; // goto homogeneous;
6025
else
6026
continue; // goto homogeneous;
6027
else
6028
continue; // goto homogeneous;
6029
else
6030
continue; // goto homogeneous;
6031
else
6032
if(ptr[offset2] < c_b)
6033
if(ptr[offset9] > cb)
6034
if(ptr[offset10] > cb)
6035
if(ptr[offset11] > cb)
6036
if(ptr[offset8] > cb)
6037
if(ptr[offset12] > cb)
6038
if(ptr[offset13] > cb)
6039
if(ptr[offset14] > cb)
6040
if(ptr[offset15] > cb)
6041
{} // goto success_homogeneous;
6042
else
6043
if(ptr[offset6] > cb)
6044
if(ptr[offset7] > cb)
6045
{} // goto success_homogeneous;
6046
else
6047
continue; // goto homogeneous;
6048
else
6049
continue; // goto homogeneous;
6050
else
6051
if(ptr[offset5] > cb)
6052
if(ptr[offset6] > cb)
6053
if(ptr[offset7] > cb)
6054
{} // goto success_homogeneous;
6055
else
6056
continue; // goto homogeneous;
6057
else
6058
continue; // goto homogeneous;
6059
else
6060
continue; // goto homogeneous;
6061
else
6062
if(ptr[offset4] > cb)
6063
if(ptr[offset5] > cb)
6064
if(ptr[offset6] > cb)
6065
if(ptr[offset7] > cb)
6066
{} // goto success_homogeneous;
6067
else
6068
continue; // goto homogeneous;
6069
else
6070
continue; // goto homogeneous;
6071
else
6072
continue; // goto homogeneous;
6073
else
6074
continue; // goto homogeneous;
6075
else
6076
if(ptr[offset3] > cb)
6077
if(ptr[offset4] > cb)
6078
if(ptr[offset5] > cb)
6079
if(ptr[offset6] > cb)
6080
if(ptr[offset7] > cb)
6081
{} // goto success_homogeneous;
6082
else
6083
continue; // goto homogeneous;
6084
else
6085
continue; // goto homogeneous;
6086
else
6087
continue; // goto homogeneous;
6088
else
6089
continue; // goto homogeneous;
6090
else
6091
continue; // goto homogeneous;
6092
else
6093
if(ptr[offset1] > cb)
6094
if(ptr[offset12] > cb)
6095
if(ptr[offset13] > cb)
6096
if(ptr[offset14] > cb)
6097
if(ptr[offset15] > cb)
6098
{} // goto success_homogeneous;
6099
else
6100
continue; // goto homogeneous;
6101
else
6102
continue; // goto homogeneous;
6103
else
6104
continue; // goto homogeneous;
6105
else
6106
continue; // goto homogeneous;
6107
else
6108
continue; // goto homogeneous;
6109
else
6110
continue; // goto homogeneous;
6111
else
6112
continue; // goto homogeneous;
6113
else
6114
if(ptr[offset9] < c_b)
6115
if(ptr[offset7] < c_b)
6116
if(ptr[offset8] < c_b)
6117
if(ptr[offset6] < c_b)
6118
if(ptr[offset5] < c_b)
6119
if(ptr[offset4] < c_b)
6120
if(ptr[offset3] < c_b)
6121
if(ptr[offset1] < c_b)
6122
{} // goto success_homogeneous;
6123
else
6124
if(ptr[offset10] < c_b)
6125
{} // goto success_homogeneous;
6126
else
6127
continue; // goto homogeneous;
6128
else
6129
if(ptr[offset10] < c_b)
6130
if(ptr[offset11] < c_b)
6131
if(ptr[offset12] < c_b)
6132
{} // goto success_homogeneous;
6133
else
6134
continue; // goto homogeneous;
6135
else
6136
continue; // goto homogeneous;
6137
else
6138
continue; // goto homogeneous;
6139
else
6140
if(ptr[offset10] < c_b)
6141
if(ptr[offset11] < c_b)
6142
if(ptr[offset12] < c_b)
6143
if(ptr[offset13] < c_b)
6144
{} // goto success_homogeneous;
6145
else
6146
continue; // goto homogeneous;
6147
else
6148
continue; // goto homogeneous;
6149
else
6150
continue; // goto homogeneous;
6151
else
6152
continue; // goto homogeneous;
6153
else
6154
if(ptr[offset10] < c_b)
6155
if(ptr[offset11] < c_b)
6156
if(ptr[offset12] < c_b)
6157
if(ptr[offset13] < c_b)
6158
if(ptr[offset14] < c_b)
6159
{} // goto success_homogeneous;
6160
else
6161
continue; // goto homogeneous;
6162
else
6163
continue; // goto homogeneous;
6164
else
6165
continue; // goto homogeneous;
6166
else
6167
continue; // goto homogeneous;
6168
else
6169
continue; // goto homogeneous;
6170
else
6171
if(ptr[offset10] < c_b)
6172
if(ptr[offset11] < c_b)
6173
if(ptr[offset12] < c_b)
6174
if(ptr[offset13] < c_b)
6175
if(ptr[offset14] < c_b)
6176
if(ptr[offset15] < c_b)
6177
{} // goto success_homogeneous;
6178
else
6179
continue; // goto homogeneous;
6180
else
6181
continue; // goto homogeneous;
6182
else
6183
continue; // goto homogeneous;
6184
else
6185
continue; // goto homogeneous;
6186
else
6187
continue; // goto homogeneous;
6188
else
6189
continue; // goto homogeneous;
6190
else
6191
continue; // goto homogeneous;
6192
else
6193
continue; // goto homogeneous;
6194
else
6195
continue; // goto homogeneous;
6196
else
6197
if(ptr[offset9] > cb)
6198
if(ptr[offset10] > cb)
6199
if(ptr[offset11] > cb)
6200
if(ptr[offset8] > cb)
6201
if(ptr[offset12] > cb)
6202
if(ptr[offset13] > cb)
6203
if(ptr[offset14] > cb)
6204
if(ptr[offset15] > cb)
6205
{} // goto success_homogeneous;
6206
else
6207
if(ptr[offset6] > cb)
6208
if(ptr[offset7] > cb)
6209
{} // goto success_homogeneous;
6210
else
6211
continue; // goto homogeneous;
6212
else
6213
continue; // goto homogeneous;
6214
else
6215
if(ptr[offset5] > cb)
6216
if(ptr[offset6] > cb)
6217
if(ptr[offset7] > cb)
6218
{} // goto success_homogeneous;
6219
else
6220
continue; // goto homogeneous;
6221
else
6222
continue; // goto homogeneous;
6223
else
6224
continue; // goto homogeneous;
6225
else
6226
if(ptr[offset4] > cb)
6227
if(ptr[offset5] > cb)
6228
if(ptr[offset6] > cb)
6229
if(ptr[offset7] > cb)
6230
{} // goto success_homogeneous;
6231
else
6232
continue; // goto homogeneous;
6233
else
6234
continue; // goto homogeneous;
6235
else
6236
continue; // goto homogeneous;
6237
else
6238
continue; // goto homogeneous;
6239
else
6240
if(ptr[offset3] > cb)
6241
if(ptr[offset4] > cb)
6242
if(ptr[offset5] > cb)
6243
if(ptr[offset6] > cb)
6244
if(ptr[offset7] > cb)
6245
{} // goto success_homogeneous;
6246
else
6247
continue; // goto homogeneous;
6248
else
6249
continue; // goto homogeneous;
6250
else
6251
continue; // goto homogeneous;
6252
else
6253
continue; // goto homogeneous;
6254
else
6255
continue; // goto homogeneous;
6256
else
6257
if(ptr[offset1] > cb)
6258
if(ptr[offset12] > cb)
6259
if(ptr[offset13] > cb)
6260
if(ptr[offset14] > cb)
6261
if(ptr[offset15] > cb)
6262
{} // goto success_homogeneous;
6263
else
6264
continue; // goto homogeneous;
6265
else
6266
continue; // goto homogeneous;
6267
else
6268
continue; // goto homogeneous;
6269
else
6270
continue; // goto homogeneous;
6271
else
6272
continue; // goto homogeneous;
6273
else
6274
continue; // goto homogeneous;
6275
else
6276
continue; // goto homogeneous;
6277
else
6278
if(ptr[offset9] < c_b)
6279
if(ptr[offset7] < c_b)
6280
if(ptr[offset8] < c_b)
6281
if(ptr[offset10] < c_b)
6282
if(ptr[offset11] < c_b)
6283
if(ptr[offset6] < c_b)
6284
if(ptr[offset5] < c_b)
6285
if(ptr[offset4] < c_b)
6286
if(ptr[offset3] < c_b)
6287
{} // goto success_homogeneous;
6288
else
6289
if(ptr[offset12] < c_b)
6290
{} // goto success_homogeneous;
6291
else
6292
continue; // goto homogeneous;
6293
else
6294
if(ptr[offset12] < c_b)
6295
if(ptr[offset13] < c_b)
6296
{} // goto success_homogeneous;
6297
else
6298
continue; // goto homogeneous;
6299
else
6300
continue; // goto homogeneous;
6301
else
6302
if(ptr[offset12] < c_b)
6303
if(ptr[offset13] < c_b)
6304
if(ptr[offset14] < c_b)
6305
{} // goto success_homogeneous;
6306
else
6307
continue; // goto homogeneous;
6308
else
6309
continue; // goto homogeneous;
6310
else
6311
continue; // goto homogeneous;
6312
else
6313
if(ptr[offset12] < c_b)
6314
if(ptr[offset13] < c_b)
6315
if(ptr[offset14] < c_b)
6316
if(ptr[offset15] < c_b)
6317
{} // goto success_homogeneous;
6318
else
6319
continue; // goto homogeneous;
6320
else
6321
continue; // goto homogeneous;
6322
else
6323
continue; // goto homogeneous;
6324
else
6325
continue; // goto homogeneous;
6326
else
6327
continue; // goto homogeneous;
6328
else
6329
continue; // goto homogeneous;
6330
else
6331
continue; // goto homogeneous;
6332
else
6333
continue; // goto homogeneous;
6334
else
6335
continue; // goto homogeneous;
6336
else
6337
if(ptr[offset0] < c_b)
6338
if(ptr[offset2] > cb)
6339
if(ptr[offset9] > cb)
6340
if(ptr[offset7] > cb)
6341
if(ptr[offset8] > cb)
6342
if(ptr[offset6] > cb)
6343
if(ptr[offset5] > cb)
6344
if(ptr[offset4] > cb)
6345
if(ptr[offset3] > cb)
6346
if(ptr[offset1] > cb)
6347
{} // goto success_homogeneous;
6348
else
6349
if(ptr[offset10] > cb)
6350
{} // goto success_homogeneous;
6351
else
6352
continue; // goto homogeneous;
6353
else
6354
if(ptr[offset10] > cb)
6355
if(ptr[offset11] > cb)
6356
if(ptr[offset12] > cb)
6357
{} // goto success_homogeneous;
6358
else
6359
continue; // goto homogeneous;
6360
else
6361
continue; // goto homogeneous;
6362
else
6363
continue; // goto homogeneous;
6364
else
6365
if(ptr[offset10] > cb)
6366
if(ptr[offset11] > cb)
6367
if(ptr[offset12] > cb)
6368
if(ptr[offset13] > cb)
6369
{} // goto success_homogeneous;
6370
else
6371
continue; // goto homogeneous;
6372
else
6373
continue; // goto homogeneous;
6374
else
6375
continue; // goto homogeneous;
6376
else
6377
continue; // goto homogeneous;
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
{} // goto success_homogeneous;
6385
else
6386
continue; // goto homogeneous;
6387
else
6388
continue; // goto homogeneous;
6389
else
6390
continue; // goto homogeneous;
6391
else
6392
continue; // goto homogeneous;
6393
else
6394
continue; // goto homogeneous;
6395
else
6396
if(ptr[offset10] > cb)
6397
if(ptr[offset11] > cb)
6398
if(ptr[offset12] > cb)
6399
if(ptr[offset13] > cb)
6400
if(ptr[offset14] > cb)
6401
if(ptr[offset15] > cb)
6402
{} // goto success_homogeneous;
6403
else
6404
continue; // goto homogeneous;
6405
else
6406
continue; // goto homogeneous;
6407
else
6408
continue; // goto homogeneous;
6409
else
6410
continue; // goto homogeneous;
6411
else
6412
continue; // goto homogeneous;
6413
else
6414
continue; // goto homogeneous;
6415
else
6416
continue; // goto homogeneous;
6417
else
6418
continue; // goto homogeneous;
6419
else
6420
if(ptr[offset9] < c_b)
6421
if(ptr[offset10] < c_b)
6422
if(ptr[offset11] < c_b)
6423
if(ptr[offset8] < c_b)
6424
if(ptr[offset12] < c_b)
6425
if(ptr[offset13] < c_b)
6426
if(ptr[offset14] < c_b)
6427
if(ptr[offset15] < c_b)
6428
{} // goto success_homogeneous;
6429
else
6430
if(ptr[offset6] < c_b)
6431
if(ptr[offset7] < c_b)
6432
{} // goto success_homogeneous;
6433
else
6434
continue; // goto homogeneous;
6435
else
6436
continue; // goto homogeneous;
6437
else
6438
if(ptr[offset5] < c_b)
6439
if(ptr[offset6] < c_b)
6440
if(ptr[offset7] < c_b)
6441
{} // goto success_homogeneous;
6442
else
6443
continue; // goto homogeneous;
6444
else
6445
continue; // goto homogeneous;
6446
else
6447
continue; // goto homogeneous;
6448
else
6449
if(ptr[offset4] < c_b)
6450
if(ptr[offset5] < c_b)
6451
if(ptr[offset6] < c_b)
6452
if(ptr[offset7] < c_b)
6453
{} // goto success_homogeneous;
6454
else
6455
continue; // goto homogeneous;
6456
else
6457
continue; // goto homogeneous;
6458
else
6459
continue; // goto homogeneous;
6460
else
6461
continue; // goto homogeneous;
6462
else
6463
if(ptr[offset3] < c_b)
6464
if(ptr[offset4] < c_b)
6465
if(ptr[offset5] < c_b)
6466
if(ptr[offset6] < c_b)
6467
if(ptr[offset7] < c_b)
6468
{} // goto success_homogeneous;
6469
else
6470
continue; // goto homogeneous;
6471
else
6472
continue; // goto homogeneous;
6473
else
6474
continue; // goto homogeneous;
6475
else
6476
continue; // goto homogeneous;
6477
else
6478
continue; // goto homogeneous;
6479
else
6480
if(ptr[offset1] < c_b)
6481
if(ptr[offset12] < c_b)
6482
if(ptr[offset13] < c_b)
6483
if(ptr[offset14] < c_b)
6484
if(ptr[offset15] < c_b)
6485
{} // goto success_homogeneous;
6486
else
6487
continue; // goto homogeneous;
6488
else
6489
continue; // goto homogeneous;
6490
else
6491
continue; // goto homogeneous;
6492
else
6493
continue; // goto homogeneous;
6494
else
6495
continue; // goto homogeneous;
6496
else
6497
continue; // goto homogeneous;
6498
else
6499
continue; // goto homogeneous;
6500
else
6501
continue; // goto homogeneous;
6502
else
6503
if(ptr[offset2] < c_b)
6504
if(ptr[offset4] > cb)
6505
if(ptr[offset11] > cb)
6506
if(ptr[offset7] > cb)
6507
if(ptr[offset8] > cb)
6508
if(ptr[offset9] > cb)
6509
if(ptr[offset10] > cb)
6510
if(ptr[offset6] > cb)
6511
if(ptr[offset5] > cb)
6512
if(ptr[offset3] > cb)
6513
{} // goto success_homogeneous;
6514
else
6515
if(ptr[offset12] > cb)
6516
{} // goto success_homogeneous;
6517
else
6518
continue; // goto homogeneous;
6519
else
6520
if(ptr[offset12] > cb)
6521
if(ptr[offset13] > cb)
6522
if(ptr[offset14] > cb)
6523
{} // goto success_homogeneous;
6524
else
6525
continue; // goto homogeneous;
6526
else
6527
continue; // goto homogeneous;
6528
else
6529
continue; // goto homogeneous;
6530
else
6531
if(ptr[offset12] > cb)
6532
if(ptr[offset13] > cb)
6533
if(ptr[offset14] > cb)
6534
if(ptr[offset15] > cb)
6535
{} // goto success_homogeneous;
6536
else
6537
continue; // goto homogeneous;
6538
else
6539
continue; // goto homogeneous;
6540
else
6541
continue; // goto homogeneous;
6542
else
6543
continue; // goto homogeneous;
6544
else
6545
continue; // goto homogeneous;
6546
else
6547
continue; // goto homogeneous;
6548
else
6549
continue; // goto homogeneous;
6550
else
6551
continue; // goto homogeneous;
6552
else
6553
if(ptr[offset11] < c_b)
6554
if(ptr[offset12] < c_b)
6555
if(ptr[offset13] < c_b)
6556
if(ptr[offset10] < c_b)
6557
if(ptr[offset14] < c_b)
6558
if(ptr[offset15] < c_b)
6559
if(ptr[offset1] < c_b)
6560
{} // goto success_homogeneous;
6561
else
6562
if(ptr[offset8] < c_b)
6563
if(ptr[offset9] < c_b)
6564
{} // goto success_homogeneous;
6565
else
6566
continue; // goto homogeneous;
6567
else
6568
continue; // goto homogeneous;
6569
else
6570
if(ptr[offset6] < c_b)
6571
if(ptr[offset7] < c_b)
6572
if(ptr[offset8] < c_b)
6573
if(ptr[offset9] < c_b)
6574
{} // goto success_homogeneous;
6575
else
6576
continue; // goto homogeneous;
6577
else
6578
continue; // goto homogeneous;
6579
else
6580
continue; // goto homogeneous;
6581
else
6582
continue; // goto homogeneous;
6583
else
6584
if(ptr[offset5] < c_b)
6585
if(ptr[offset6] < c_b)
6586
if(ptr[offset7] < c_b)
6587
if(ptr[offset8] < c_b)
6588
if(ptr[offset9] < c_b)
6589
{} // goto success_homogeneous;
6590
else
6591
continue; // goto homogeneous;
6592
else
6593
continue; // goto homogeneous;
6594
else
6595
continue; // goto homogeneous;
6596
else
6597
continue; // goto homogeneous;
6598
else
6599
continue; // goto homogeneous;
6600
else
6601
if(ptr[offset1] < c_b)
6602
if(ptr[offset3] < c_b)
6603
if(ptr[offset14] < c_b)
6604
if(ptr[offset15] < c_b)
6605
{} // goto success_homogeneous;
6606
else
6607
continue; // goto homogeneous;
6608
else
6609
continue; // goto homogeneous;
6610
else
6611
continue; // goto homogeneous;
6612
else
6613
continue; // goto homogeneous;
6614
else
6615
continue; // goto homogeneous;
6616
else
6617
continue; // goto homogeneous;
6618
else
6619
continue; // goto homogeneous;
6620
else
6621
if(ptr[offset4] < c_b)
6622
if(ptr[offset5] > cb)
6623
if(ptr[offset12] > cb)
6624
if(ptr[offset7] > cb)
6625
if(ptr[offset8] > cb)
6626
if(ptr[offset9] > cb)
6627
if(ptr[offset10] > cb)
6628
if(ptr[offset11] > cb)
6629
if(ptr[offset13] > cb)
6630
if(ptr[offset6] > cb)
6631
{} // goto success_homogeneous;
6632
else
6633
if(ptr[offset14] > cb)
6634
if(ptr[offset15] > cb)
6635
{} // goto success_homogeneous;
6636
else
6637
continue; // goto homogeneous;
6638
else
6639
continue; // goto homogeneous;
6640
else
6641
continue; // goto homogeneous;
6642
else
6643
continue; // goto homogeneous;
6644
else
6645
continue; // goto homogeneous;
6646
else
6647
continue; // goto homogeneous;
6648
else
6649
continue; // goto homogeneous;
6650
else
6651
continue; // goto homogeneous;
6652
else
6653
if(ptr[offset12] < c_b)
6654
if(ptr[offset13] < c_b)
6655
if(ptr[offset14] < c_b)
6656
if(ptr[offset15] < c_b)
6657
if(ptr[offset1] < c_b)
6658
if(ptr[offset3] < c_b)
6659
{} // goto success_homogeneous;
6660
else
6661
if(ptr[offset10] < c_b)
6662
if(ptr[offset11] < c_b)
6663
{} // goto success_homogeneous;
6664
else
6665
continue; // goto homogeneous;
6666
else
6667
continue; // goto homogeneous;
6668
else
6669
if(ptr[offset8] < c_b)
6670
if(ptr[offset9] < c_b)
6671
if(ptr[offset10] < c_b)
6672
if(ptr[offset11] < c_b)
6673
{} // goto success_homogeneous;
6674
else
6675
continue; // goto homogeneous;
6676
else
6677
continue; // goto homogeneous;
6678
else
6679
continue; // goto homogeneous;
6680
else
6681
continue; // goto homogeneous;
6682
else
6683
if(ptr[offset6] < c_b)
6684
if(ptr[offset7] < c_b)
6685
if(ptr[offset8] < c_b)
6686
if(ptr[offset9] < c_b)
6687
if(ptr[offset10] < c_b)
6688
if(ptr[offset11] < c_b)
6689
{} // goto success_homogeneous;
6690
else
6691
continue; // goto homogeneous;
6692
else
6693
continue; // goto homogeneous;
6694
else
6695
continue; // goto homogeneous;
6696
else
6697
continue; // goto homogeneous;
6698
else
6699
continue; // goto homogeneous;
6700
else
6701
continue; // goto homogeneous;
6702
else
6703
continue; // goto homogeneous;
6704
else
6705
continue; // goto homogeneous;
6706
else
6707
continue; // goto homogeneous;
6708
else
6709
if(ptr[offset5] < c_b)
6710
if(ptr[offset7] > cb)
6711
if(ptr[offset14] > cb)
6712
if(ptr[offset8] > cb)
6713
if(ptr[offset9] > cb)
6714
if(ptr[offset10] > cb)
6715
if(ptr[offset11] > cb)
6716
if(ptr[offset12] > cb)
6717
if(ptr[offset13] > cb)
6718
if(ptr[offset6] > cb)
6719
{} // goto success_homogeneous;
6720
else
6721
if(ptr[offset15] > cb)
6722
{} // goto success_homogeneous;
6723
else
6724
continue; // goto homogeneous;
6725
else
6726
continue; // goto homogeneous;
6727
else
6728
continue; // goto homogeneous;
6729
else
6730
continue; // goto homogeneous;
6731
else
6732
continue; // goto homogeneous;
6733
else
6734
continue; // goto homogeneous;
6735
else
6736
continue; // goto homogeneous;
6737
else
6738
if(ptr[offset14] < c_b)
6739
if(ptr[offset15] < c_b)
6740
if(ptr[offset1] < c_b)
6741
if(ptr[offset3] < c_b)
6742
if(ptr[offset6] < c_b)
6743
{} // goto success_homogeneous;
6744
else
6745
if(ptr[offset13] < c_b)
6746
{} // goto success_homogeneous;
6747
else
6748
continue; // goto homogeneous;
6749
else
6750
if(ptr[offset10] < c_b)
6751
if(ptr[offset11] < c_b)
6752
if(ptr[offset12] < c_b)
6753
if(ptr[offset13] < c_b)
6754
{} // goto success_homogeneous;
6755
else
6756
continue; // goto homogeneous;
6757
else
6758
continue; // goto homogeneous;
6759
else
6760
continue; // goto homogeneous;
6761
else
6762
continue; // goto homogeneous;
6763
else
6764
if(ptr[offset8] < c_b)
6765
if(ptr[offset9] < c_b)
6766
if(ptr[offset10] < c_b)
6767
if(ptr[offset11] < c_b)
6768
if(ptr[offset12] < c_b)
6769
if(ptr[offset13] < c_b)
6770
{} // goto success_homogeneous;
6771
else
6772
continue; // goto homogeneous;
6773
else
6774
continue; // goto homogeneous;
6775
else
6776
continue; // goto homogeneous;
6777
else
6778
continue; // goto homogeneous;
6779
else
6780
continue; // goto homogeneous;
6781
else
6782
continue; // goto homogeneous;
6783
else
6784
continue; // goto homogeneous;
6785
else
6786
continue; // goto homogeneous;
6787
else
6788
if(ptr[offset7] < c_b)
6789
if(ptr[offset3] < c_b)
6790
if(ptr[offset1] < c_b)
6791
if(ptr[offset6] < c_b)
6792
if(ptr[offset8] < c_b)
6793
{} // goto success_homogeneous;
6794
else
6795
if(ptr[offset15] < c_b)
6796
{} // goto success_homogeneous;
6797
else
6798
continue; // goto homogeneous;
6799
else
6800
if(ptr[offset13] < c_b)
6801
if(ptr[offset14] < c_b)
6802
if(ptr[offset15] < c_b)
6803
{} // goto success_homogeneous;
6804
else
6805
continue; // goto homogeneous;
6806
else
6807
continue; // goto homogeneous;
6808
else
6809
continue; // goto homogeneous;
6810
else
6811
if(ptr[offset8] < c_b)
6812
if(ptr[offset9] < c_b)
6813
if(ptr[offset10] < c_b)
6814
if(ptr[offset6] < c_b)
6815
{} // goto success_homogeneous;
6816
else
6817
if(ptr[offset11] < c_b)
6818
if(ptr[offset12] < c_b)
6819
if(ptr[offset13] < c_b)
6820
if(ptr[offset14] < c_b)
6821
if(ptr[offset15] < c_b)
6822
{} // goto success_homogeneous;
6823
else
6824
continue; // goto homogeneous;
6825
else
6826
continue; // goto homogeneous;
6827
else
6828
continue; // goto homogeneous;
6829
else
6830
continue; // goto homogeneous;
6831
else
6832
continue; // goto homogeneous;
6833
else
6834
continue; // goto homogeneous;
6835
else
6836
continue; // goto homogeneous;
6837
else
6838
continue; // goto homogeneous;
6839
else
6840
if(ptr[offset10] < c_b)
6841
if(ptr[offset11] < c_b)
6842
if(ptr[offset12] < c_b)
6843
if(ptr[offset8] < c_b)
6844
if(ptr[offset9] < c_b)
6845
if(ptr[offset6] < c_b)
6846
{} // goto success_homogeneous;
6847
else
6848
if(ptr[offset13] < c_b)
6849
if(ptr[offset14] < c_b)
6850
if(ptr[offset15] < c_b)
6851
{} // goto success_homogeneous;
6852
else
6853
continue; // goto homogeneous;
6854
else
6855
continue; // goto homogeneous;
6856
else
6857
continue; // goto homogeneous;
6858
else
6859
if(ptr[offset1] < c_b)
6860
if(ptr[offset13] < c_b)
6861
if(ptr[offset14] < c_b)
6862
if(ptr[offset15] < c_b)
6863
{} // goto success_homogeneous;
6864
else
6865
continue; // goto homogeneous;
6866
else
6867
continue; // goto homogeneous;
6868
else
6869
continue; // goto homogeneous;
6870
else
6871
continue; // goto homogeneous;
6872
else
6873
if(ptr[offset1] < c_b)
6874
if(ptr[offset13] < c_b)
6875
if(ptr[offset14] < c_b)
6876
if(ptr[offset15] < c_b)
6877
{} // goto success_homogeneous;
6878
else
6879
continue; // goto homogeneous;
6880
else
6881
continue; // goto homogeneous;
6882
else
6883
continue; // goto homogeneous;
6884
else
6885
continue; // goto homogeneous;
6886
else
6887
continue; // goto homogeneous;
6888
else
6889
continue; // goto homogeneous;
6890
else
6891
continue; // goto homogeneous;
6892
else
6893
if(ptr[offset14] < c_b)
6894
if(ptr[offset15] < c_b)
6895
if(ptr[offset1] < c_b)
6896
if(ptr[offset3] < c_b)
6897
if(ptr[offset6] < c_b)
6898
{} // goto success_homogeneous;
6899
else
6900
if(ptr[offset13] < c_b)
6901
{} // goto success_homogeneous;
6902
else
6903
continue; // goto homogeneous;
6904
else
6905
if(ptr[offset10] < c_b)
6906
if(ptr[offset11] < c_b)
6907
if(ptr[offset12] < c_b)
6908
if(ptr[offset13] < c_b)
6909
{} // goto success_homogeneous;
6910
else
6911
continue; // goto homogeneous;
6912
else
6913
continue; // goto homogeneous;
6914
else
6915
continue; // goto homogeneous;
6916
else
6917
continue; // goto homogeneous;
6918
else
6919
if(ptr[offset8] < c_b)
6920
if(ptr[offset9] < c_b)
6921
if(ptr[offset10] < c_b)
6922
if(ptr[offset11] < c_b)
6923
if(ptr[offset12] < c_b)
6924
if(ptr[offset13] < c_b)
6925
{} // goto success_homogeneous;
6926
else
6927
continue; // goto homogeneous;
6928
else
6929
continue; // goto homogeneous;
6930
else
6931
continue; // goto homogeneous;
6932
else
6933
continue; // goto homogeneous;
6934
else
6935
continue; // goto homogeneous;
6936
else
6937
continue; // goto homogeneous;
6938
else
6939
continue; // goto homogeneous;
6940
else
6941
continue; // goto homogeneous;
6942
else
6943
if(ptr[offset12] > cb)
6944
if(ptr[offset7] > cb)
6945
if(ptr[offset8] > cb)
6946
if(ptr[offset9] > cb)
6947
if(ptr[offset10] > cb)
6948
if(ptr[offset11] > cb)
6949
if(ptr[offset13] > cb)
6950
if(ptr[offset14] > cb)
6951
if(ptr[offset6] > cb)
6952
{} // goto success_homogeneous;
6953
else
6954
if(ptr[offset15] > cb)
6955
{} // goto success_homogeneous;
6956
else
6957
continue; // goto homogeneous;
6958
else
6959
continue; // goto homogeneous;
6960
else
6961
continue; // goto homogeneous;
6962
else
6963
continue; // goto homogeneous;
6964
else
6965
continue; // goto homogeneous;
6966
else
6967
continue; // goto homogeneous;
6968
else
6969
continue; // goto homogeneous;
6970
else
6971
continue; // goto homogeneous;
6972
else
6973
if(ptr[offset12] < c_b)
6974
if(ptr[offset13] < c_b)
6975
if(ptr[offset14] < c_b)
6976
if(ptr[offset15] < c_b)
6977
if(ptr[offset1] < c_b)
6978
if(ptr[offset3] < c_b)
6979
{} // goto success_homogeneous;
6980
else
6981
if(ptr[offset10] < c_b)
6982
if(ptr[offset11] < c_b)
6983
{} // goto success_homogeneous;
6984
else
6985
continue; // goto homogeneous;
6986
else
6987
continue; // goto homogeneous;
6988
else
6989
if(ptr[offset8] < c_b)
6990
if(ptr[offset9] < c_b)
6991
if(ptr[offset10] < c_b)
6992
if(ptr[offset11] < c_b)
6993
{} // goto success_homogeneous;
6994
else
6995
continue; // goto homogeneous;
6996
else
6997
continue; // goto homogeneous;
6998
else
6999
continue; // goto homogeneous;
7000
else
7001
continue; // goto homogeneous;
7002
else
7003
if(ptr[offset6] < c_b)
7004
if(ptr[offset7] < c_b)
7005
if(ptr[offset8] < c_b)
7006
if(ptr[offset9] < c_b)
7007
if(ptr[offset10] < c_b)
7008
if(ptr[offset11] < c_b)
7009
{} // goto success_homogeneous;
7010
else
7011
continue; // goto homogeneous;
7012
else
7013
continue; // goto homogeneous;
7014
else
7015
continue; // goto homogeneous;
7016
else
7017
continue; // goto homogeneous;
7018
else
7019
continue; // goto homogeneous;
7020
else
7021
continue; // goto homogeneous;
7022
else
7023
continue; // goto homogeneous;
7024
else
7025
continue; // goto homogeneous;
7026
else
7027
continue; // goto homogeneous;
7028
else
7029
if(ptr[offset11] > cb)
7030
if(ptr[offset7] > cb)
7031
if(ptr[offset8] > cb)
7032
if(ptr[offset9] > cb)
7033
if(ptr[offset10] > cb)
7034
if(ptr[offset12] > cb)
7035
if(ptr[offset13] > cb)
7036
if(ptr[offset6] > cb)
7037
if(ptr[offset5] > cb)
7038
{} // goto success_homogeneous;
7039
else
7040
if(ptr[offset14] > cb)
7041
{} // goto success_homogeneous;
7042
else
7043
continue; // goto homogeneous;
7044
else
7045
if(ptr[offset14] > cb)
7046
if(ptr[offset15] > cb)
7047
{} // goto success_homogeneous;
7048
else
7049
continue; // goto homogeneous;
7050
else
7051
continue; // goto homogeneous;
7052
else
7053
continue; // goto homogeneous;
7054
else
7055
continue; // goto homogeneous;
7056
else
7057
continue; // goto homogeneous;
7058
else
7059
continue; // goto homogeneous;
7060
else
7061
continue; // goto homogeneous;
7062
else
7063
continue; // goto homogeneous;
7064
else
7065
if(ptr[offset11] < c_b)
7066
if(ptr[offset12] < c_b)
7067
if(ptr[offset13] < c_b)
7068
if(ptr[offset10] < c_b)
7069
if(ptr[offset14] < c_b)
7070
if(ptr[offset15] < c_b)
7071
if(ptr[offset1] < c_b)
7072
{} // goto success_homogeneous;
7073
else
7074
if(ptr[offset8] < c_b)
7075
if(ptr[offset9] < c_b)
7076
{} // goto success_homogeneous;
7077
else
7078
continue; // goto homogeneous;
7079
else
7080
continue; // goto homogeneous;
7081
else
7082
if(ptr[offset6] < c_b)
7083
if(ptr[offset7] < c_b)
7084
if(ptr[offset8] < c_b)
7085
if(ptr[offset9] < c_b)
7086
{} // goto success_homogeneous;
7087
else
7088
continue; // goto homogeneous;
7089
else
7090
continue; // goto homogeneous;
7091
else
7092
continue; // goto homogeneous;
7093
else
7094
continue; // goto homogeneous;
7095
else
7096
if(ptr[offset5] < c_b)
7097
if(ptr[offset6] < c_b)
7098
if(ptr[offset7] < c_b)
7099
if(ptr[offset8] < c_b)
7100
if(ptr[offset9] < c_b)
7101
{} // goto success_homogeneous;
7102
else
7103
continue; // goto homogeneous;
7104
else
7105
continue; // goto homogeneous;
7106
else
7107
continue; // goto homogeneous;
7108
else
7109
continue; // goto homogeneous;
7110
else
7111
continue; // goto homogeneous;
7112
else
7113
if(ptr[offset1] < c_b)
7114
if(ptr[offset3] < c_b)
7115
if(ptr[offset14] < c_b)
7116
if(ptr[offset15] < c_b)
7117
{} // goto success_homogeneous;
7118
else
7119
continue; // goto homogeneous;
7120
else
7121
continue; // goto homogeneous;
7122
else
7123
continue; // goto homogeneous;
7124
else
7125
continue; // goto homogeneous;
7126
else
7127
continue; // goto homogeneous;
7128
else
7129
continue; // goto homogeneous;
7130
else
7131
continue; // goto homogeneous;
7132
else
7133
if(ptr[offset9] > cb)
7134
if(ptr[offset7] > cb)
7135
if(ptr[offset8] > cb)
7136
if(ptr[offset10] > cb)
7137
if(ptr[offset11] > cb)
7138
if(ptr[offset6] > cb)
7139
if(ptr[offset5] > cb)
7140
if(ptr[offset4] > cb)
7141
if(ptr[offset3] > cb)
7142
{} // goto success_homogeneous;
7143
else
7144
if(ptr[offset12] > cb)
7145
{} // goto success_homogeneous;
7146
else
7147
continue; // goto homogeneous;
7148
else
7149
if(ptr[offset12] > cb)
7150
if(ptr[offset13] > cb)
7151
{} // goto success_homogeneous;
7152
else
7153
continue; // goto homogeneous;
7154
else
7155
continue; // goto homogeneous;
7156
else
7157
if(ptr[offset12] > cb)
7158
if(ptr[offset13] > cb)
7159
if(ptr[offset14] > cb)
7160
{} // goto success_homogeneous;
7161
else
7162
continue; // goto homogeneous;
7163
else
7164
continue; // goto homogeneous;
7165
else
7166
continue; // goto homogeneous;
7167
else
7168
if(ptr[offset12] > cb)
7169
if(ptr[offset13] > cb)
7170
if(ptr[offset14] > cb)
7171
if(ptr[offset15] > cb)
7172
{} // goto success_homogeneous;
7173
else
7174
continue; // goto homogeneous;
7175
else
7176
continue; // goto homogeneous;
7177
else
7178
continue; // goto homogeneous;
7179
else
7180
continue; // goto homogeneous;
7181
else
7182
continue; // goto homogeneous;
7183
else
7184
continue; // goto homogeneous;
7185
else
7186
continue; // goto homogeneous;
7187
else
7188
continue; // goto homogeneous;
7189
else
7190
if(ptr[offset9] < c_b)
7191
if(ptr[offset10] < c_b)
7192
if(ptr[offset11] < c_b)
7193
if(ptr[offset8] < c_b)
7194
if(ptr[offset12] < c_b)
7195
if(ptr[offset13] < c_b)
7196
if(ptr[offset14] < c_b)
7197
if(ptr[offset15] < c_b)
7198
{} // goto success_homogeneous;
7199
else
7200
if(ptr[offset6] < c_b)
7201
if(ptr[offset7] < c_b)
7202
{} // goto success_homogeneous;
7203
else
7204
continue; // goto homogeneous;
7205
else
7206
continue; // goto homogeneous;
7207
else
7208
if(ptr[offset5] < c_b)
7209
if(ptr[offset6] < c_b)
7210
if(ptr[offset7] < c_b)
7211
{} // goto success_homogeneous;
7212
else
7213
continue; // goto homogeneous;
7214
else
7215
continue; // goto homogeneous;
7216
else
7217
continue; // goto homogeneous;
7218
else
7219
if(ptr[offset4] < c_b)
7220
if(ptr[offset5] < c_b)
7221
if(ptr[offset6] < c_b)
7222
if(ptr[offset7] < c_b)
7223
{} // goto success_homogeneous;
7224
else
7225
continue; // goto homogeneous;
7226
else
7227
continue; // goto homogeneous;
7228
else
7229
continue; // goto homogeneous;
7230
else
7231
continue; // goto homogeneous;
7232
else
7233
if(ptr[offset3] < c_b)
7234
if(ptr[offset4] < c_b)
7235
if(ptr[offset5] < c_b)
7236
if(ptr[offset6] < c_b)
7237
if(ptr[offset7] < c_b)
7238
{} // goto success_homogeneous;
7239
else
7240
continue; // goto homogeneous;
7241
else
7242
continue; // goto homogeneous;
7243
else
7244
continue; // goto homogeneous;
7245
else
7246
continue; // goto homogeneous;
7247
else
7248
continue; // goto homogeneous;
7249
else
7250
if(ptr[offset1] < c_b)
7251
if(ptr[offset12] < c_b)
7252
if(ptr[offset13] < c_b)
7253
if(ptr[offset14] < c_b)
7254
if(ptr[offset15] < c_b)
7255
{} // goto success_homogeneous;
7256
else
7257
continue; // goto homogeneous;
7258
else
7259
continue; // goto homogeneous;
7260
else
7261
continue; // goto homogeneous;
7262
else
7263
continue; // goto homogeneous;
7264
else
7265
continue; // goto homogeneous;
7266
else
7267
continue; // goto homogeneous;
7268
else
7269
continue; // goto homogeneous;
7270
else
7271
continue; // goto homogeneous;
7272
else
7273
if(ptr[offset7] > cb)
7274
if(ptr[offset8] > cb)
7275
if(ptr[offset9] > cb)
7276
if(ptr[offset6] > cb)
7277
if(ptr[offset5] > cb)
7278
if(ptr[offset4] > cb)
7279
if(ptr[offset3] > cb)
7280
if(ptr[offset2] > cb)
7281
if(ptr[offset1] > cb)
7282
{} // goto success_homogeneous;
7283
else
7284
if(ptr[offset10] > cb)
7285
{} // goto success_homogeneous;
7286
else
7287
continue; // goto homogeneous;
7288
else
7289
if(ptr[offset10] > cb)
7290
if(ptr[offset11] > cb)
7291
{} // goto success_homogeneous;
7292
else
7293
continue; // goto homogeneous;
7294
else
7295
continue; // goto homogeneous;
7296
else
7297
if(ptr[offset10] > cb)
7298
if(ptr[offset11] > cb)
7299
if(ptr[offset12] > cb)
7300
{} // goto success_homogeneous;
7301
else
7302
continue; // goto homogeneous;
7303
else
7304
continue; // goto homogeneous;
7305
else
7306
continue; // goto homogeneous;
7307
else
7308
if(ptr[offset10] > cb)
7309
if(ptr[offset11] > cb)
7310
if(ptr[offset12] > cb)
7311
if(ptr[offset13] > cb)
7312
{} // goto success_homogeneous;
7313
else
7314
continue; // goto homogeneous;
7315
else
7316
continue; // goto homogeneous;
7317
else
7318
continue; // goto homogeneous;
7319
else
7320
continue; // goto homogeneous;
7321
else
7322
if(ptr[offset10] > cb)
7323
if(ptr[offset11] > cb)
7324
if(ptr[offset12] > cb)
7325
if(ptr[offset13] > cb)
7326
if(ptr[offset14] > cb)
7327
{} // goto success_homogeneous;
7328
else
7329
continue; // goto homogeneous;
7330
else
7331
continue; // goto homogeneous;
7332
else
7333
continue; // goto homogeneous;
7334
else
7335
continue; // goto homogeneous;
7336
else
7337
continue; // goto homogeneous;
7338
else
7339
if(ptr[offset10] > cb)
7340
if(ptr[offset11] > cb)
7341
if(ptr[offset12] > cb)
7342
if(ptr[offset13] > cb)
7343
if(ptr[offset14] > cb)
7344
if(ptr[offset15] > cb)
7345
{} // goto success_homogeneous;
7346
else
7347
continue; // goto homogeneous;
7348
else
7349
continue; // goto homogeneous;
7350
else
7351
continue; // goto homogeneous;
7352
else
7353
continue; // goto homogeneous;
7354
else
7355
continue; // goto homogeneous;
7356
else
7357
continue; // goto homogeneous;
7358
else
7359
continue; // goto homogeneous;
7360
else
7361
continue; // goto homogeneous;
7362
else
7363
if(ptr[offset7] < c_b)
7364
if(ptr[offset8] < c_b)
7365
if(ptr[offset9] < c_b)
7366
if(ptr[offset6] < c_b)
7367
if(ptr[offset5] < c_b)
7368
if(ptr[offset4] < c_b)
7369
if(ptr[offset3] < c_b)
7370
if(ptr[offset2] < c_b)
7371
if(ptr[offset1] < c_b)
7372
{} // goto success_homogeneous;
7373
else
7374
if(ptr[offset10] < c_b)
7375
{} // goto success_homogeneous;
7376
else
7377
continue; // goto homogeneous;
7378
else
7379
if(ptr[offset10] < c_b)
7380
if(ptr[offset11] < c_b)
7381
{} // goto success_homogeneous;
7382
else
7383
continue; // goto homogeneous;
7384
else
7385
continue; // goto homogeneous;
7386
else
7387
if(ptr[offset10] < c_b)
7388
if(ptr[offset11] < c_b)
7389
if(ptr[offset12] < c_b)
7390
{} // goto success_homogeneous;
7391
else
7392
continue; // goto homogeneous;
7393
else
7394
continue; // goto homogeneous;
7395
else
7396
continue; // goto homogeneous;
7397
else
7398
if(ptr[offset10] < c_b)
7399
if(ptr[offset11] < c_b)
7400
if(ptr[offset12] < c_b)
7401
if(ptr[offset13] < c_b)
7402
{} // goto success_homogeneous;
7403
else
7404
continue; // goto homogeneous;
7405
else
7406
continue; // goto homogeneous;
7407
else
7408
continue; // goto homogeneous;
7409
else
7410
continue; // goto homogeneous;
7411
else
7412
if(ptr[offset10] < c_b)
7413
if(ptr[offset11] < c_b)
7414
if(ptr[offset12] < c_b)
7415
if(ptr[offset13] < c_b)
7416
if(ptr[offset14] < c_b)
7417
{} // goto success_homogeneous;
7418
else
7419
continue; // goto homogeneous;
7420
else
7421
continue; // goto homogeneous;
7422
else
7423
continue; // goto homogeneous;
7424
else
7425
continue; // goto homogeneous;
7426
else
7427
continue; // goto homogeneous;
7428
else
7429
if(ptr[offset10] < c_b)
7430
if(ptr[offset11] < c_b)
7431
if(ptr[offset12] < c_b)
7432
if(ptr[offset13] < c_b)
7433
if(ptr[offset14] < c_b)
7434
if(ptr[offset15] < c_b)
7435
{} // goto success_homogeneous;
7436
else
7437
continue; // goto homogeneous;
7438
else
7439
continue; // goto homogeneous;
7440
else
7441
continue; // goto homogeneous;
7442
else
7443
continue; // goto homogeneous;
7444
else
7445
continue; // goto homogeneous;
7446
else
7447
continue; // goto homogeneous;
7448
else
7449
continue; // goto homogeneous;
7450
else
7451
continue; // goto homogeneous;
7452
else
7453
continue; // goto homogeneous;
7454
}
7455
if(total == nExpectedCorners)
7456
{
7457
if(nExpectedCorners == 0)
7458
{
7459
nExpectedCorners = 512;
7460
keypoints.reserve(nExpectedCorners);
7461
}
7462
else
7463
{
7464
nExpectedCorners *= 2;
7465
keypoints.reserve(nExpectedCorners);
7466
}
7467
}
7468
keypoints.push_back(KeyPoint(Point2f((float)x, (float)y), 1.0f));
7469
total++;
7470
}
7471
}
7472
}
7473
7474
7475
void AGAST(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, bool nonmax_suppression)
7476
{
7477
AGAST(_img, keypoints, threshold, nonmax_suppression, AgastFeatureDetector::OAST_9_16);
7478
}
7479
7480
7481
class AgastFeatureDetector_Impl : public AgastFeatureDetector
7482
{
7483
public:
7484
AgastFeatureDetector_Impl( int _threshold, bool _nonmaxSuppression, int _type )
7485
: threshold(_threshold), nonmaxSuppression(_nonmaxSuppression), type((short)_type)
7486
{}
7487
7488
void detect( InputArray _image, std::vector<KeyPoint>& keypoints, InputArray _mask )
7489
{
7490
Mat mask = _mask.getMat(), grayImage;
7491
UMat ugrayImage;
7492
_InputArray gray = _image;
7493
if( _image.type() != CV_8U )
7494
{
7495
_OutputArray ogray = _image.isUMat() ? _OutputArray(ugrayImage) : _OutputArray(grayImage);
7496
cvtColor( _image, ogray, COLOR_BGR2GRAY );
7497
gray = ogray;
7498
}
7499
AGAST( gray, keypoints, threshold, nonmaxSuppression, type );
7500
KeyPointsFilter::runByPixelsMask( keypoints, mask );
7501
}
7502
7503
void set(int prop, double value)
7504
{
7505
if(prop == THRESHOLD)
7506
threshold = cvRound(value);
7507
else if(prop == NONMAX_SUPPRESSION)
7508
nonmaxSuppression = value != 0;
7509
else
7510
CV_Error(Error::StsBadArg, "");
7511
}
7512
7513
double get(int prop) const
7514
{
7515
if(prop == THRESHOLD)
7516
return threshold;
7517
if(prop == NONMAX_SUPPRESSION)
7518
return nonmaxSuppression;
7519
CV_Error(Error::StsBadArg, "");
7520
return 0;
7521
}
7522
7523
void setThreshold(int threshold_) { threshold = threshold_; }
7524
int getThreshold() const { return threshold; }
7525
7526
void setNonmaxSuppression(bool f) { nonmaxSuppression = f; }
7527
bool getNonmaxSuppression() const { return nonmaxSuppression; }
7528
7529
void setType(int type_) { type = type_; }
7530
int getType() const { return type; }
7531
7532
int threshold;
7533
bool nonmaxSuppression;
7534
int type;
7535
};
7536
7537
Ptr<AgastFeatureDetector> AgastFeatureDetector::create( int threshold, bool nonmaxSuppression, int type )
7538
{
7539
return makePtr<AgastFeatureDetector_Impl>(threshold, nonmaxSuppression, type);
7540
}
7541
7542
void AGAST(InputArray _img, std::vector<KeyPoint>& keypoints, int threshold, bool nonmax_suppression, int type)
7543
{
7544
7545
std::vector<KeyPoint> kpts;
7546
7547
// detect
7548
switch(type) {
7549
case AgastFeatureDetector::AGAST_5_8:
7550
AGAST_5_8(_img, kpts, threshold);
7551
break;
7552
case AgastFeatureDetector::AGAST_7_12d:
7553
AGAST_7_12d(_img, kpts, threshold);
7554
break;
7555
case AgastFeatureDetector::AGAST_7_12s:
7556
AGAST_7_12s(_img, kpts, threshold);
7557
break;
7558
case AgastFeatureDetector::OAST_9_16:
7559
OAST_9_16(_img, kpts, threshold);
7560
break;
7561
}
7562
7563
cv::Mat img = _img.getMat();
7564
7565
// score
7566
int pixel_[16];
7567
makeAgastOffsets(pixel_, (int)img.step, type);
7568
7569
std::vector<KeyPoint>::iterator kpt;
7570
for(kpt = kpts.begin(); kpt != kpts.end(); kpt++)
7571
{
7572
switch(type) {
7573
case AgastFeatureDetector::AGAST_5_8:
7574
kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_5_8>
7575
(&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
7576
break;
7577
case AgastFeatureDetector::AGAST_7_12d:
7578
kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_7_12d>
7579
(&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
7580
break;
7581
case AgastFeatureDetector::AGAST_7_12s:
7582
kpt->response = (float)agast_cornerScore<AgastFeatureDetector::AGAST_7_12s>
7583
(&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
7584
break;
7585
case AgastFeatureDetector::OAST_9_16:
7586
kpt->response = (float)agast_cornerScore<AgastFeatureDetector::OAST_9_16>
7587
(&img.at<uchar>((int)kpt->pt.y, (int)kpt->pt.x), pixel_, threshold);
7588
break;
7589
}
7590
}
7591
7592
// suppression
7593
if(nonmax_suppression)
7594
{
7595
size_t j;
7596
size_t curr_idx;
7597
size_t lastRow = 0, next_lastRow = 0;
7598
size_t num_Corners = kpts.size();
7599
size_t lastRowCorner_ind = 0, next_lastRowCorner_ind = 0;
7600
7601
std::vector<int> nmsFlags;
7602
std::vector<KeyPoint>::iterator currCorner_nms;
7603
std::vector<KeyPoint>::const_iterator currCorner;
7604
7605
currCorner = kpts.begin();
7606
7607
nmsFlags.resize((int)num_Corners);
7608
7609
// set all flags to MAXIMUM
7610
for(j = 0; j < num_Corners; j++)
7611
nmsFlags[j] = -1;
7612
7613
for(curr_idx = 0; curr_idx < num_Corners; curr_idx++)
7614
{
7615
int t;
7616
// check above
7617
if(lastRow + 1 < currCorner->pt.y)
7618
{
7619
lastRow = next_lastRow;
7620
lastRowCorner_ind = next_lastRowCorner_ind;
7621
}
7622
if(next_lastRow != currCorner->pt.y)
7623
{
7624
next_lastRow = (size_t) currCorner->pt.y;
7625
next_lastRowCorner_ind = curr_idx;
7626
}
7627
if(lastRow + 1 == currCorner->pt.y)
7628
{
7629
// find the corner above the current one
7630
while( (kpts[lastRowCorner_ind].pt.x < currCorner->pt.x)
7631
&& (kpts[lastRowCorner_ind].pt.y == lastRow) )
7632
lastRowCorner_ind++;
7633
7634
if( (kpts[lastRowCorner_ind].pt.x == currCorner->pt.x)
7635
&& (lastRowCorner_ind != curr_idx) )
7636
{
7637
size_t w = lastRowCorner_ind;
7638
// find the maximum in this block
7639
while(nmsFlags[w] != -1)
7640
w = nmsFlags[w];
7641
7642
if(kpts[curr_idx].response < kpts[w].response)
7643
nmsFlags[curr_idx] = (int)w;
7644
else
7645
nmsFlags[w] = (int)curr_idx;
7646
}
7647
}
7648
7649
// check left
7650
t = (int)curr_idx - 1;
7651
if( (curr_idx != 0) && (kpts[t].pt.y == currCorner->pt.y)
7652
&& (kpts[t].pt.x + 1 == currCorner->pt.x) )
7653
{
7654
int currCornerMaxAbove_ind = nmsFlags[curr_idx];
7655
// find the maximum in that area
7656
while(nmsFlags[t] != -1)
7657
t = nmsFlags[t];
7658
// no maximum above
7659
if(currCornerMaxAbove_ind == -1)
7660
{
7661
if((size_t)t != curr_idx)
7662
{
7663
if ( kpts[curr_idx].response < kpts[t].response )
7664
nmsFlags[curr_idx] = t;
7665
else
7666
nmsFlags[t] = (int)curr_idx;
7667
}
7668
}
7669
else // maximum above
7670
{
7671
if(t != currCornerMaxAbove_ind)
7672
{
7673
if(kpts[currCornerMaxAbove_ind].response < kpts[t].response)
7674
{
7675
nmsFlags[currCornerMaxAbove_ind] = t;
7676
nmsFlags[curr_idx] = t;
7677
}
7678
else
7679
{
7680
nmsFlags[t] = currCornerMaxAbove_ind;
7681
nmsFlags[curr_idx] = currCornerMaxAbove_ind;
7682
}
7683
}
7684
}
7685
}
7686
currCorner++;
7687
}
7688
7689
// collecting maximum corners
7690
for(curr_idx = 0; curr_idx < num_Corners; curr_idx++)
7691
{
7692
if (nmsFlags[curr_idx] == -1)
7693
keypoints.push_back(kpts[curr_idx]);
7694
}
7695
} else
7696
{
7697
keypoints = kpts;
7698
}
7699
}
7700
7701
} // END NAMESPACE CV
7702
7703