agast.txt 364 KB

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