6058 lines
190 KiB
C++
6058 lines
190 KiB
C++
/* This is FAST corner detector, contributed to OpenCV by the author, Edward Rosten.
|
|
Below is the original copyright and the references */
|
|
|
|
/*
|
|
Copyright (c) 2006, 2008 Edward Rosten
|
|
All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions
|
|
are met:
|
|
|
|
*Redistributions of source code must retain the above copyright
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
*Redistributions in binary form must reproduce the above copyright
|
|
notice, this list of conditions and the following disclaimer in the
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
*Neither the name of the University of Cambridge nor the names of
|
|
its contributors may be used to endorse or promote products derived
|
|
from this software without specific prior written permission.
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
/*
|
|
The references are:
|
|
* Machine learning for high-speed corner detection,
|
|
E. Rosten and T. Drummond, ECCV 2006
|
|
* Faster and better: A machine learning approach to corner detection
|
|
E. Rosten, R. Porter and T. Drummond, PAMI, 2009
|
|
*/
|
|
|
|
#include "precomp.hpp"
|
|
|
|
namespace cv
|
|
{
|
|
|
|
static int fast9CornerScore(const unsigned char* p, const int pixel[], int bstart)
|
|
{
|
|
int bmin = bstart;
|
|
int bmax = 255;
|
|
int b = (bmax + bmin)/2;
|
|
|
|
/*Compute the score using binary search*/
|
|
for(;;)
|
|
{
|
|
int cb = *p + b;
|
|
int c_b= *p - b;
|
|
|
|
if( p[pixel[0]] > cb)
|
|
if( p[pixel[1]] > cb)
|
|
if( p[pixel[2]] > cb)
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[7]] < c_b)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[14]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[6]] < c_b)
|
|
if( p[pixel[15]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[13]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[13]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[5]] < c_b)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[12]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[14]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[12]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[4]] < c_b)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[11]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[13]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[11]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[3]] < c_b)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[10]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[10]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[2]] < c_b)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[9]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[3]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[9]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[3]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[12]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[1]] < c_b)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[2]] > cb)
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[8]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[2]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[2]] > cb)
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[8]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[2]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[0]] < c_b)
|
|
if( p[pixel[1]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[2]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[2]] < c_b)
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[1]] < c_b)
|
|
if( p[pixel[2]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[3]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[2]] < c_b)
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[3]] < c_b)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[13]] < c_b)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[14]] < c_b)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[15]] < c_b)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[3]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[2]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[2]] < c_b)
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[7]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[7]] > cb)
|
|
if( p[pixel[8]] > cb)
|
|
if( p[pixel[9]] > cb)
|
|
if( p[pixel[6]] > cb)
|
|
if( p[pixel[5]] > cb)
|
|
if( p[pixel[4]] > cb)
|
|
if( p[pixel[3]] > cb)
|
|
if( p[pixel[2]] > cb)
|
|
if( p[pixel[1]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] > cb)
|
|
if( p[pixel[11]] > cb)
|
|
if( p[pixel[12]] > cb)
|
|
if( p[pixel[13]] > cb)
|
|
if( p[pixel[14]] > cb)
|
|
if( p[pixel[15]] > cb)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else if( p[pixel[7]] < c_b)
|
|
if( p[pixel[8]] < c_b)
|
|
if( p[pixel[9]] < c_b)
|
|
if( p[pixel[6]] < c_b)
|
|
if( p[pixel[5]] < c_b)
|
|
if( p[pixel[4]] < c_b)
|
|
if( p[pixel[3]] < c_b)
|
|
if( p[pixel[2]] < c_b)
|
|
if( p[pixel[1]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
if( p[pixel[10]] < c_b)
|
|
if( p[pixel[11]] < c_b)
|
|
if( p[pixel[12]] < c_b)
|
|
if( p[pixel[13]] < c_b)
|
|
if( p[pixel[14]] < c_b)
|
|
if( p[pixel[15]] < c_b)
|
|
goto is_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
else
|
|
goto is_not_a_corner;
|
|
|
|
is_a_corner:
|
|
bmin=b;
|
|
goto end_if;
|
|
|
|
is_not_a_corner:
|
|
bmax=b;
|
|
goto end_if;
|
|
|
|
end_if:
|
|
|
|
if(bmin == bmax - 1 || bmin == bmax)
|
|
return bmin;
|
|
b = (bmin + bmax) / 2;
|
|
}
|
|
}
|
|
|
|
static void makeOffsets(int pixel[], int row_stride)
|
|
{
|
|
pixel[0] = 0 + row_stride * 3;
|
|
pixel[1] = 1 + row_stride * 3;
|
|
pixel[2] = 2 + row_stride * 2;
|
|
pixel[3] = 3 + row_stride * 1;
|
|
pixel[4] = 3 + row_stride * 0;
|
|
pixel[5] = 3 + row_stride * -1;
|
|
pixel[6] = 2 + row_stride * -2;
|
|
pixel[7] = 1 + row_stride * -3;
|
|
pixel[8] = 0 + row_stride * -3;
|
|
pixel[9] = -1 + row_stride * -3;
|
|
pixel[10] = -2 + row_stride * -2;
|
|
pixel[11] = -3 + row_stride * -1;
|
|
pixel[12] = -3 + row_stride * 0;
|
|
pixel[13] = -3 + row_stride * 1;
|
|
pixel[14] = -2 + row_stride * 2;
|
|
pixel[15] = -1 + row_stride * 3;
|
|
}
|
|
|
|
|
|
static void fast9ComputeScores(const Mat& img, vector<Point>& corners, vector<int>& scores, int b)
|
|
{
|
|
int pixel[16];
|
|
makeOffsets(pixel, img.step);
|
|
size_t n, num_corners = corners.size();
|
|
|
|
scores.resize(num_corners);
|
|
for(n=0; n < num_corners; n++)
|
|
scores[n] = fast9CornerScore(&img.at<uchar>(corners[n]), pixel, b);
|
|
}
|
|
|
|
|
|
static void fast9Detect(const Mat& img, vector<Point>& ret_corners, int b)
|
|
{
|
|
int xsize = img.cols, ysize = img.rows;
|
|
int pixel[16];
|
|
makeOffsets(pixel, img.step);
|
|
|
|
ret_corners.reserve(512);
|
|
|
|
for(int y=3; y < ysize - 3; y++)
|
|
for(int x=3; x < xsize - 3; x++)
|
|
{
|
|
const uchar* p = &img.at<uchar>(y,x);
|
|
|
|
int cb = *p + b;
|
|
int c_b= *p - b;
|
|
if(p[pixel[0]] > cb)
|
|
if(p[pixel[1]] > cb)
|
|
if(p[pixel[2]] > cb)
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else if(p[pixel[7]] < c_b)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else if(p[pixel[14]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[6]] < c_b)
|
|
if(p[pixel[15]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else if(p[pixel[13]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[13]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[5]] < c_b)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[12]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[14]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[12]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[4]] < c_b)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[11]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[13]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[11]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[3]] < c_b)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[10]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[10]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[2]] < c_b)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[9]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[3]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[9]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[3]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[12]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[1]] < c_b)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[2]] > cb)
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[8]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[2]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[2]] > cb)
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[8]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[2]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[0]] < c_b)
|
|
if(p[pixel[1]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[2]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[2]] < c_b)
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[1]] < c_b)
|
|
if(p[pixel[2]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[3]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[2]] < c_b)
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[3]] < c_b)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[13]] < c_b)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[14]] < c_b)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[15]] < c_b)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[3]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[2]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[2]] < c_b)
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[7]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[7]] > cb)
|
|
if(p[pixel[8]] > cb)
|
|
if(p[pixel[9]] > cb)
|
|
if(p[pixel[6]] > cb)
|
|
if(p[pixel[5]] > cb)
|
|
if(p[pixel[4]] > cb)
|
|
if(p[pixel[3]] > cb)
|
|
if(p[pixel[2]] > cb)
|
|
if(p[pixel[1]] > cb)
|
|
{}
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] > cb)
|
|
if(p[pixel[11]] > cb)
|
|
if(p[pixel[12]] > cb)
|
|
if(p[pixel[13]] > cb)
|
|
if(p[pixel[14]] > cb)
|
|
if(p[pixel[15]] > cb)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else if(p[pixel[7]] < c_b)
|
|
if(p[pixel[8]] < c_b)
|
|
if(p[pixel[9]] < c_b)
|
|
if(p[pixel[6]] < c_b)
|
|
if(p[pixel[5]] < c_b)
|
|
if(p[pixel[4]] < c_b)
|
|
if(p[pixel[3]] < c_b)
|
|
if(p[pixel[2]] < c_b)
|
|
if(p[pixel[1]] < c_b)
|
|
{}
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
if(p[pixel[10]] < c_b)
|
|
if(p[pixel[11]] < c_b)
|
|
if(p[pixel[12]] < c_b)
|
|
if(p[pixel[13]] < c_b)
|
|
if(p[pixel[14]] < c_b)
|
|
if(p[pixel[15]] < c_b)
|
|
{}
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
else
|
|
continue;
|
|
ret_corners.push_back(Point(x,y));
|
|
}
|
|
}
|
|
|
|
/* This defines non-strict maxima */
|
|
#define Compare(X, Y) ((X)>=(Y))
|
|
|
|
/* This is a fast, integer only, sparse nonmaximal suppression. */
|
|
/* probably only useful for FAST corner detection */
|
|
static void fastNonmaxSuppression(const vector<Point>& corners,
|
|
const vector<int>& scores,
|
|
vector<KeyPoint>& ret_nonmax)
|
|
{
|
|
int i, j, num_corners = (int)corners.size();
|
|
|
|
// Point above points (roughly) to the pixel above the one of interest, if there is a feature there.
|
|
int point_above = 0;
|
|
int point_below = 0;
|
|
|
|
ret_nonmax.clear();
|
|
if(num_corners < 1)
|
|
return;
|
|
|
|
/* Find where each row begins
|
|
(the corners are output in raster scan order). A beginning of -1 signifies
|
|
that there are no corners on that row. */
|
|
int last_row = corners[num_corners-1].y;
|
|
vector<int> row_start(last_row+1);
|
|
|
|
for(i=0; i < last_row+1; i++)
|
|
row_start[i] = -1;
|
|
|
|
int prev_row = -1;
|
|
for(i=0; i< num_corners; i++)
|
|
if(corners[i].y != prev_row)
|
|
{
|
|
row_start[corners[i].y] = i;
|
|
prev_row = corners[i].y;
|
|
}
|
|
|
|
ret_nonmax.reserve(num_corners);
|
|
for(i = 0; i < num_corners; i++)
|
|
{
|
|
int score = scores[i];
|
|
Point pos = corners[i];
|
|
|
|
// Check left
|
|
if(i > 0 && corners[i-1].x == pos.x-1 && corners[i-1].y == pos.y && Compare(scores[i-1], score))
|
|
continue;
|
|
|
|
// Check right
|
|
if(i < num_corners-1 && corners[i+1].x == pos.x+1 && corners[i+1].y == pos.y && Compare(scores[i+1], score))
|
|
continue;
|
|
|
|
bool suppressed = false;
|
|
// Check above (if there is a valid row above)
|
|
if(pos.y != 0 && row_start[pos.y - 1] != -1)
|
|
{
|
|
// Make sure that current point_above is one row above.
|
|
if(corners[point_above].y < pos.y - 1)
|
|
point_above = row_start[pos.y-1];
|
|
|
|
// Make point_above point to the first of the pixels above the current point, if it exists.
|
|
for(; corners[point_above].y < pos.y && corners[point_above].x < pos.x - 1; point_above++)
|
|
;
|
|
|
|
for(j=point_above; corners[j].y < pos.y && corners[j].x <= pos.x + 1; j++)
|
|
{
|
|
int x = corners[j].x;
|
|
if( (x == pos.x - 1 || x ==pos.x || x == pos.x+1) && Compare(scores[j], score))
|
|
{
|
|
suppressed = true;
|
|
break;
|
|
}
|
|
}
|
|
if( suppressed )
|
|
continue;
|
|
}
|
|
|
|
// Check below (if there is anything below)
|
|
if(pos.y != last_row && row_start[pos.y + 1] != -1 && point_below < num_corners) // Nothing below
|
|
{
|
|
if(corners[point_below].y < pos.y + 1)
|
|
point_below = row_start[pos.y+1];
|
|
|
|
// Make point below point to one of the pixels belowthe current point, if it exists.
|
|
for(; point_below < num_corners && corners[point_below].y == pos.y+1
|
|
&& corners[point_below].x < pos.x - 1; point_below++)
|
|
;
|
|
|
|
for(j=point_below; j < num_corners && corners[j].y == pos.y+1 && corners[j].x <= pos.x + 1; j++)
|
|
{
|
|
int x = corners[j].x;
|
|
if( (x == pos.x - 1 || x ==pos.x || x == pos.x+1) && Compare(scores[j],score))
|
|
{
|
|
suppressed = true;
|
|
break;
|
|
}
|
|
}
|
|
if( suppressed )
|
|
continue;
|
|
}
|
|
|
|
ret_nonmax.push_back(KeyPoint(corners[i], 6.f, -1.f, (float)score));
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void cv::FAST( const Mat& image, vector<KeyPoint>& keypoints, int threshold, bool nonmax_suppression )
|
|
{
|
|
CV_Assert(image.data && image.type() == CV_8U);
|
|
|
|
vector<Point> corners;
|
|
fast9Detect(image, corners, threshold);
|
|
|
|
if(nonmax_suppression)
|
|
{
|
|
vector<int> scores;
|
|
fast9ComputeScores(image, corners, scores, threshold);
|
|
fastNonmaxSuppression(corners, scores, keypoints);
|
|
}
|
|
else
|
|
{
|
|
size_t i, n = corners.size();
|
|
keypoints.resize(n);
|
|
for( i = 0; i < n; i++ )
|
|
keypoints[i] = KeyPoint(corners[i], 6.f);
|
|
}
|
|
}
|