[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libcvd-members] libcvd cvd/fast_corner.h cvd_src/faster_corner....
From: |
Ethan Eade |
Subject: |
[libcvd-members] libcvd cvd/fast_corner.h cvd_src/faster_corner.... |
Date: |
Fri, 26 Jan 2007 15:51:59 +0000 |
CVSROOT: /cvsroot/libcvd
Module name: libcvd
Changes by: Ethan Eade <ethaneade> 07/01/26 15:51:59
Modified files:
cvd : fast_corner.h
cvd_src : faster_corner.cxx
Added files:
cvd_src : corner_9.h corner_10.h
Log message:
Added faster_corner_detect_9 and faster_corner_detect_10. These run in
55% and 40% of the
time required by their respective counterparts, fast_corner_detect_9 and
fast_corner_detect_10. All questions are asked in parallel.
Ed has argued for these to replace fast_* (instead of having different
names) when supported by the configuration. I haven't made those
changes yet.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd/fast_corner.h?cvsroot=libcvd&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/faster_corner.cxx?cvsroot=libcvd&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/corner_9.h?cvsroot=libcvd&rev=1.1
http://cvs.savannah.gnu.org/viewcvs/libcvd/cvd_src/corner_10.h?cvsroot=libcvd&rev=1.1
Patches:
Index: cvd/fast_corner.h
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd/fast_corner.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- cvd/fast_corner.h 20 Jan 2007 15:42:21 -0000 1.13
+++ cvd/fast_corner.h 26 Jan 2007 15:51:59 -0000 1.14
@@ -155,6 +155,8 @@
#if (CVD_HAVE_EMMINTRIN && CVD_HAVE_SSE2)
void faster_corner_detect_12(const BasicImage<byte>& I,
std::vector<ImageRef>& corners, int barrier);
+ void faster_corner_detect_10(const BasicImage<byte>& I,
std::vector<ImageRef>& corners, int barrier);
+ void faster_corner_detect_9(const BasicImage<byte>& I,
std::vector<ImageRef>& corners, int barrier);
#endif
Index: cvd_src/faster_corner.cxx
===================================================================
RCS file: /cvsroot/libcvd/libcvd/cvd_src/faster_corner.cxx,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- cvd_src/faster_corner.cxx 25 Jan 2007 15:40:04 -0000 1.3
+++ cvd_src/faster_corner.cxx 26 Jan 2007 15:51:59 -0000 1.4
@@ -13,6 +13,8 @@
namespace CVD
{
+ #include <cvd_src/corner_9.h>
+ #include <cvd_src/corner_10.h>
#include <cvd_src/corner_12.h>
struct Less { template <class T1, class T2> static bool eval(const T1 a,
const T2 b) { return a < b; }};
@@ -142,6 +144,394 @@
faster_corner_detect_12<false>(I, corners, barrier);
}
+ template <bool Aligned> void faster_corner_detect_10(const
BasicImage<byte>& I, std::vector<ImageRef>& corners, const int barrier)
+ {
+ const int w = I.size().x;
+ const int stride = 3*w;
+ typedef std::list<std::pair<const byte*, unsigned int> > Passed;
+ Passed passed;
+
+ // The compiler refuses to reserve a register for this
+ register const __m128i barriers = _mm_set1_epi8((byte)barrier);
+ const byte* const end = I[I.size().y - 3]-16;
+
+ for (const byte* p = I[3] + 16; p!=end; p+=16) {
+ __m128i lo, hi;
+ {
+ const __m128i here = load_si128<Aligned>((const __m128i*)(p));
+ lo = _mm_subs_epu8(here, barriers);
+ hi = _mm_adds_epu8(barriers, here);
+ }
+ unsigned int ans_b, ans_e;
+ {
+ __m128i top = load_si128<Aligned>((const __m128i*)(p-stride));
+ __m128i bottom = load_si128<Aligned>((const
__m128i*)(p+stride));
+
+ CHECK_BARRIER(lo, hi, top, ans_b);
+ CHECK_BARRIER(lo, hi, bottom, ans_e);
+ if (!(ans_b | ans_e))
+ continue;
+ }
+
+ unsigned int ans_m, ans_p, possible;
+ {
+ __m128i ul = _mm_loadu_si128((const __m128i*)(p-2-2*w));
+ __m128i lr = _mm_loadu_si128((const __m128i*)(p+2+2*w));
+ CHECK_BARRIER(lo, hi, ul, ans_m);
+ CHECK_BARRIER(lo, hi, lr, ans_p);
+ possible = (ans_m & ans_b) | (ans_e & ans_p);
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_o, ans_n;
+ {
+ __m128i ll = _mm_loadu_si128((const __m128i*)(p-2+2*w));
+ __m128i ur = _mm_loadu_si128((const __m128i*)(p+2-2*w));
+ CHECK_BARRIER(lo, hi, ll, ans_o);
+ CHECK_BARRIER(lo, hi, ur, ans_n);
+ possible &= ans_o | (ans_b & ans_n);
+ possible &= ans_n | (ans_e & ans_o);
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_h, ans_k;
+ {
+ __m128i left = _mm_loadu_si128((const __m128i*)(p-3));
+ __m128i right = _mm_loadu_si128((const __m128i*)(p+3));
+ CHECK_BARRIER(lo, hi, left, ans_h);
+ CHECK_BARRIER(lo, hi, right, ans_k);
+ possible &= ans_h | (ans_n & ans_k & ans_p);
+ possible &= ans_k | (ans_m & ans_h & ans_o);
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_a, ans_c;
+ {
+ __m128i a = _mm_loadu_si128((const __m128i*)(p-1-stride));
+ __m128i c = _mm_insert_epi16(_mm_srli_si128(a,2), *(const
unsigned short*)(p+15-stride), 7);
+ //__m128i c = _mm_loadu_si128((const __m128i*)(p+1-stride));
+ CHECK_BARRIER(lo, hi, a, ans_a);
+ CHECK_BARRIER(lo, hi, c, ans_c);
+ possible &= ans_a | (ans_e & ans_p);
+ possible &= ans_c | (ans_o & ans_e);
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_d, ans_f;
+ {
+ __m128i d = _mm_loadu_si128((const __m128i*)(p-1+stride));
+ __m128i f = _mm_insert_epi16(_mm_srli_si128(d,2), *(const
unsigned short*)(p+15+stride), 7);
+ //__m128i f = _mm_loadu_si128((const __m128i*)(p+1+stride));
+ CHECK_BARRIER(lo, hi, d, ans_d);
+ CHECK_BARRIER(lo, hi, f, ans_f);
+ const unsigned int ans_abc = ans_a & ans_b & ans_c;
+ possible &= ans_d | (ans_abc & ans_n);
+ possible &= ans_f | (ans_m & ans_abc);
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_g, ans_i;
+ {
+ __m128i g = _mm_loadu_si128((const __m128i*)(p-3-w));
+ __m128i ii = _mm_loadu_si128((const __m128i*)(p-3+w));
+ CHECK_BARRIER(lo, hi, g, ans_g);
+ CHECK_BARRIER(lo, hi, ii, ans_i);
+ possible &= ans_g | (ans_f & ans_p & ans_k);
+ possible &= ans_i | (ans_c & ans_n & ans_k);
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_j, ans_l;
+ {
+ __m128i jj = _mm_loadu_si128((const __m128i*)(p+3-w));
+ __m128i l = _mm_loadu_si128((const __m128i*)(p+3+w));
+ CHECK_BARRIER(lo, hi, jj, ans_j);
+ CHECK_BARRIER(lo, hi, l, ans_l);
+ const unsigned int ans_ghi = ans_g & ans_h & ans_i;
+ possible &= ans_j | (ans_d & ans_o & ans_ghi);
+ possible &= ans_l | (ans_m & ans_a & ans_ghi);
+ if (!possible)
+ continue;
+ }
+ passed.push_back(make_pair(p,(possible | (possible>>16))&0xFFFF));
+ }
+ corners.reserve(passed.size());
+ int row = 3;
+ const byte* row_start = I[3];
+ // Check first 16
+ {
+ for (int j=3; j<16; ++j)
+ if (is_corner_10<Less>(row_start + j, w, row_start[j]-barrier)
||
+ is_corner_10<Greater>(row_start + j, w,
row_start[j]+barrier))
+ corners.push_back(ImageRef(j,3));
+ }
+ for (Passed::iterator it = passed.begin(); it != passed.end(); ++it) {
+ while (it->first >= row_start + w) {
+ ++row;
+ row_start += w;
+ }
+ int x = it->first - row_start;
+ unsigned int bits = it->second;
+ if (x == 0) {
+ x = 3;
+ bits >>= 3;
+ } else if (x >= w-18)
+ bits &= 0x1FFF;
+ for (;bits;bits>>=1, ++x) {
+ if (bits&0x1)
+ corners.push_back(ImageRef(x,row));
+ }
+ }
+ // Check last 16
+ {
+ row_start = I[I.size().y-4];
+ for (int j=w-16; j<w; ++j)
+ if (is_corner_10<Less>(row_start + j, w, row_start[j]-barrier)
||
+ is_corner_10<Greater>(row_start + j, w,
row_start[j]+barrier))
+ corners.push_back(ImageRef(j,I.size().y-4));
+ }
+ }
+
+ void faster_corner_detect_10(const BasicImage<byte>& I,
std::vector<ImageRef>& corners, int barrier)
+ {
+ if (I.size().x < 22) {
+ fast_corner_detect_10(I,corners,barrier);
+ return;
+ } else if (I.size().x < 22 || I.size().y < 7)
+ return;
+
+ if (is_aligned<16>(I[0]) && is_aligned<16>(I[1]))
+ faster_corner_detect_10<true>(I, corners, barrier);
+ else
+ faster_corner_detect_10<false>(I, corners, barrier);
+ }
+
+ template <bool Aligned> void faster_corner_detect_9(const
BasicImage<byte>& I, std::vector<ImageRef>& corners, const int barrier)
+ {
+ const int w = I.size().x;
+ const int stride = 3*w;
+ typedef std::list<std::pair<const byte*, unsigned int> > Passed;
+ Passed passed;
+ // The compiler refuses to reserve a register for this
+ register const __m128i barriers = _mm_set1_epi8((byte)barrier);
+ const byte* const end = I[I.size().y - 3]-16;
+
+ for (const byte* p = I[3] + 16; p!=end; p+=16) {
+ __m128i lo, hi;
+ {
+ const __m128i here = load_si128<Aligned>((const __m128i*)(p));
+ lo = _mm_subs_epu8(here, barriers);
+ hi = _mm_adds_epu8(barriers, here);
+ }
+ unsigned int ans_0, ans_8, possible;
+ {
+ __m128i top = load_si128<Aligned>((const __m128i*)(p-stride));
+ __m128i bottom = load_si128<Aligned>((const
__m128i*)(p+stride));
+
+ CHECK_BARRIER(lo, hi, top, ans_0);
+ CHECK_BARRIER(lo, hi, bottom, ans_8);
+ possible = ans_0 | ans_8;
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_15, ans_1;
+ {
+ __m128i a = _mm_loadu_si128((const __m128i*)(p-1-stride));
+ __m128i c = _mm_insert_epi16(_mm_srli_si128(a,2), *(const
unsigned short*)(p+15-stride), 7);
+ CHECK_BARRIER(lo, hi, a, ans_15);
+ CHECK_BARRIER(lo, hi, c, ans_1);
+ possible &= ans_8 | (ans_15 & ans_1);
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_9, ans_7;
+ {
+ __m128i d = _mm_loadu_si128((const __m128i*)(p-1+stride));
+ __m128i f = _mm_insert_epi16(_mm_srli_si128(d,2), *(const
unsigned short*)(p+15+stride), 7);
+ CHECK_BARRIER(lo, hi, d, ans_9);
+ CHECK_BARRIER(lo, hi, f, ans_7);
+ possible &= ans_9 | (ans_0 & ans_1);
+ possible &= ans_7 | (ans_15 & ans_0);
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_12, ans_4;
+ {
+ __m128i left = _mm_loadu_si128((const __m128i*)(p-3));
+ __m128i right = _mm_loadu_si128((const __m128i*)(p+3));
+ CHECK_BARRIER(lo, hi, left, ans_12);
+ CHECK_BARRIER(lo, hi, right, ans_4);
+ possible &= ans_12 | (ans_4 & (ans_1 | ans_7));
+ possible &= ans_4 | (ans_12 & (ans_9 | ans_15));
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_14, ans_6;
+ {
+ __m128i ul = _mm_loadu_si128((const __m128i*)(p-2-2*w));
+ __m128i lr = _mm_loadu_si128((const __m128i*)(p+2+2*w));
+ CHECK_BARRIER(lo, hi, ul, ans_14);
+ CHECK_BARRIER(lo, hi, lr, ans_6);
+ {
+ const unsigned int ans_6_7 = ans_6 & ans_7;
+ possible &= ans_14 | (ans_6_7 & (ans_4 | (ans_8 & ans_9)));
+ possible &= ans_1 | (ans_6_7) | ans_12;
+ }
+ {
+ const unsigned int ans_14_15 = ans_14 & ans_15;
+ possible &= ans_6 | (ans_14_15 & (ans_12 | (ans_0 &
ans_1)));
+ possible &= ans_9 | (ans_14_15) | ans_4;
+ }
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_10, ans_2;
+ {
+ __m128i ll = _mm_loadu_si128((const __m128i*)(p-2+2*w));
+ __m128i ur = _mm_loadu_si128((const __m128i*)(p+2-2*w));
+ CHECK_BARRIER(lo, hi, ll, ans_10);
+ CHECK_BARRIER(lo, hi, ur, ans_2);
+ {
+ const unsigned int ans_1_2 = ans_1 & ans_2;
+ possible &= ans_10 | (ans_1_2 & ((ans_0 & ans_15) | ans_4));
+ possible &= ans_12 | (ans_1_2) | (ans_6 & ans_7);
+ }
+ {
+ const unsigned int ans_9_10 = ans_9 & ans_10;
+ possible &= ans_2 | (ans_9_10 & ((ans_7 & ans_8) | ans_12));
+ possible &= ans_4 | (ans_9_10) | (ans_14 & ans_15);
+ }
+ possible &= ans_8 | ans_14 | ans_2;
+ possible &= ans_0 | ans_10 | ans_6;
+ if (!possible)
+ continue;
+ }
+
+ unsigned int ans_13, ans_5;
+ {
+ __m128i g = _mm_loadu_si128((const __m128i*)(p-3-w));
+ __m128i l = _mm_loadu_si128((const __m128i*)(p+3+w));
+ CHECK_BARRIER(lo, hi, g, ans_13);
+ CHECK_BARRIER(lo, hi, l, ans_5);
+ const unsigned int ans_15_0 = ans_15 & ans_0;
+ const unsigned int ans_7_8 = ans_7 & ans_8;
+ {
+ const unsigned int ans_12_13 = ans_12 & ans_13;
+ possible &= ans_5 | (ans_12_13 & ans_14 & ((ans_15_0) |
ans_10));
+ possible &= ans_7 | (ans_1 & ans_2) | (ans_12_13);
+ possible &= ans_2 | (ans_12_13) | (ans_7_8);
+ }
+ {
+ const unsigned int ans_4_5 = ans_4 & ans_5;
+ const unsigned int ans_9_10 = ans_9 & ans_10;
+ possible &= ans_13 | (ans_4_5 & ans_6 & ((ans_7_8) |
ans_2));
+ possible &= ans_15 | (ans_4_5) | (ans_9_10);
+ possible &= ans_10 | (ans_4_5) | (ans_15_0);
+ possible &= ans_15 | (ans_9_10) | (ans_4_5);
+ }
+
+ possible &= ans_8 | (ans_13 & ans_14) | ans_2;
+ possible &= ans_0 | (ans_5 & ans_6) | ans_10;
+ if (!possible)
+ continue;
+ }
+
+
+ unsigned int ans_11, ans_3;
+ {
+ __m128i ii = _mm_loadu_si128((const __m128i*)(p-3+w));
+ __m128i jj = _mm_loadu_si128((const __m128i*)(p+3-w));
+ CHECK_BARRIER(lo, hi, ii, ans_11);
+ CHECK_BARRIER(lo, hi, jj, ans_3);
+ {
+ const unsigned int ans_2_3 = ans_2 & ans_3;
+ possible &= ans_11 | (ans_2_3 & ans_4 & ((ans_0 & ans_1) |
(ans_5 & ans_6)));
+ possible &= ans_13 | (ans_7 & ans_8) | (ans_2_3);
+ possible &= ans_8 | (ans_2_3) | (ans_13 & ans_14);
+ }
+ {
+ const unsigned int ans_11_12 = ans_11 & ans_12;
+ possible &= ans_3 | (ans_10 & ans_11_12 & ((ans_8 & ans_9)
| (ans_13 & ans_14)));
+ possible &= ans_1 | (ans_11_12) | (ans_6 & ans_7);
+ possible &= ans_6 | (ans_0 & ans_1) | (ans_11_12);
+ }
+ {
+ const unsigned int ans_3_4 = ans_3 & ans_4;
+ possible &= ans_9 | (ans_3_4) | (ans_14 & ans_15);
+ possible &= ans_14 | (ans_8 & ans_9) | (ans_3_4);
+ }
+ {
+ const unsigned int ans_10_11 = ans_10 & ans_11;
+ possible &= ans_5 | (ans_15 & ans_0) | (ans_10_11);
+ possible &= ans_0 | (ans_10_11) | (ans_5 & ans_6);
+ }
+ if (!possible)
+ continue;
+
+ }
+ passed.push_back(make_pair(p,(possible | (possible>>16))&0xFFFF));
+ }
+ corners.reserve(passed.size()*2);
+ int row = 3;
+ const byte* row_start = I[3];
+ // Check first 16
+ {
+ for (int j=3; j<16; ++j)
+ if (is_corner_9<Less>(row_start + j, w, row_start[j]-barrier)
||
+ is_corner_9<Greater>(row_start + j, w,
row_start[j]+barrier))
+ corners.push_back(ImageRef(j,3));
+ }
+ for (Passed::iterator it = passed.begin(); it != passed.end(); ++it) {
+ while (it->first >= row_start + w) {
+ ++row;
+ row_start += w;
+ }
+ int x = it->first - row_start;
+ unsigned int bits = it->second;
+ if (x == 0) {
+ x = 3;
+ bits >>= 3;
+ } else if (x >= w-18)
+ bits &= 0x1FFF;
+ for (;bits;bits>>=1, ++x) {
+ if (bits&0x1)
+ corners.push_back(ImageRef(x,row));
+ }
+ }
+ // Check last 16
+ {
+ row_start = I[I.size().y-4];
+ for (int j=w-16; j<w; ++j)
+ if (is_corner_9<Less>(row_start + j, w, row_start[j]-barrier)
||
+ is_corner_9<Greater>(row_start + j, w,
row_start[j]+barrier))
+ corners.push_back(ImageRef(j,I.size().y-4));
+ }
+ }
+
+ void faster_corner_detect_9(const BasicImage<byte>& I,
std::vector<ImageRef>& corners, int barrier)
+ {
+ if (I.size().x < 22) {
+ fast_corner_detect_9(I,corners,barrier);
+ return;
+ } else if (I.size().x < 22 || I.size().y < 7)
+ return;
+
+ if (is_aligned<16>(I[0]) && is_aligned<16>(I[1]))
+ faster_corner_detect_9<true>(I, corners, barrier);
+ else
+ faster_corner_detect_9<false>(I, corners, barrier);
+ }
}
Index: cvd_src/corner_9.h
===================================================================
RCS file: cvd_src/corner_9.h
diff -N cvd_src/corner_9.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ cvd_src/corner_9.h 26 Jan 2007 15:51:59 -0000 1.1
@@ -0,0 +1,440 @@
+template <class C> inline bool is_corner_9(const byte* p, const int w, const
int t) {
+ const int w3 = 3*w;
+ if (!C::eval(p[-1-w3],t)) { // ???????????????-
+ if (!C::eval(p[w3],t)) { // ????????-??????-
+ return false;
+ } // address@hidden
+ if (!C::eval(p[1+w3],t)) { // address@hidden
+ return false;
+ } // ???????@@??????-
+ if (!C::eval(p[2+2*w],t)) { // ??????-@@??????-
+ return false;
+ } // ??????@@@??????-
+ if (!C::eval(p[3+w],t)) { // ?????-@@@??????-
+ if (!C::eval(p[-2-2*w],t)) { // ?????-@@@?????--
+ return false;
+ } // ?????-@@@address@hidden
+ if (!C::eval(p[-3-w],t)) { // ?????-@@@address@hidden
+ return false;
+ } // ?????-@@@????@@-
+ if (!C::eval(p[-1+w3],t)) { // ?????-@@@-???@@-
+ return false;
+ } // ?????-@@@@???@@-
+ if (!C::eval(p[-2+2*w],t)) { // ?????-@@@@-??@@-
+ return false;
+ } // ?????-@@@@@??@@-
+ if (!C::eval(p[-3+w],t)) { // ?????-@@@@@-?@@-
+ return false;
+ } // ?????-@@@@@@?@@-
+ if (!C::eval(p[-3],t)) { // ?????-@@@@@@-@@-
+ return false;
+ } // ?????-@@@@@@@@@-
+ return true;
+ } // ?????@@@@??????-
+ if (!C::eval(p[3],t)) { // ????-@@@@??????-
+ if (!C::eval(p[-3-w],t)) { // ????-@@@@????-?-
+ return false;
+ } // ????-@@@@address@hidden
+ if (!C::eval(p[-1+w3],t)) { // ????-@@@@address@hidden
+ return false;
+ } // ????-@@@@@address@hidden
+ if (!C::eval(p[-2+2*w],t)) { // ????-@@@@@address@hidden
+ return false;
+ } // ????-@@@@@@address@hidden
+ if (!C::eval(p[-3+w],t)) { // ????-@@@@@@address@hidden
+ return false;
+ } // ????-@@@@@@@address@hidden
+ if (!C::eval(p[-3],t)) { // ????-@@@@@@@address@hidden
+ return false;
+ } // ????-@@@@@@@@@?-
+ return true;
+ } // ????@@@@@??????-
+ if (!C::eval(p[3-w],t)) { // ???-@@@@@??????-
+ if (!C::eval(p[-1+w3],t)) { // ???-@@@@@-?????-
+ return false;
+ } // ???-@@@@@@?????-
+ if (!C::eval(p[-2+2*w],t)) { // ???-@@@@@@-????-
+ return false;
+ } // ???-@@@@@@@????-
+ if (!C::eval(p[-3+w],t)) { // ???-@@@@@@@-???-
+ return false;
+ } // ???-@@@@@@@@???-
+ if (!C::eval(p[-3],t)) { // ???-@@@@@@@@-??-
+ return false;
+ } // ???-@@@@@@@@@??-
+ return true;
+ } // ???@@@@@@??????-
+ if (!C::eval(p[-1+w3],t)) { // ???@@@@@@-?????-
+ if (!C::eval(p[-w3],t)) { // -??@@@@@@-?????-
+ return false;
+ } // @??@@@@@@-?????-
+ if (!C::eval(p[1-w3],t)) { // @-?@@@@@@-?????-
+ return false;
+ } // @@?@@@@@@-?????-
+ if (!C::eval(p[2-2*w],t)) { // @@-@@@@@@-?????-
+ return false;
+ } // @@@@@@@@@-?????-
+ return true;
+ } // ???@@@@@@@?????-
+ if (!C::eval(p[2-2*w],t)) { // ??-@@@@@@@?????-
+ if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@-????-
+ return false;
+ } // ??-@@@@@@@@????-
+ if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@-???-
+ return false;
+ } // ??-@@@@@@@@@???-
+ return true;
+ } // ??@@@@@@@@?????-
+ if (!C::eval(p[-2+2*w],t)) { // ??@@@@@@@@-????-
+ if (!C::eval(p[1-w3],t)) { // ?-@@@@@@@@-????-
+ return false;
+ } // ?@@@@@@@@@-????-
+ return true;
+ } // ??@@@@@@@@@????-
+ return true;
+ } // ???????????????@
+ if (!C::eval(p[-2-2*w],t)) { // ??????????????-@
+ if (!C::eval(p[3+w],t)) { // ?????-????????-@
+ return false;
+ } // address@hidden@
+ if (!C::eval(p[1+w3],t)) { // address@hidden@
+ return false;
+ } // address@hidden@??????-@
+ if (!C::eval(p[2+2*w],t)) { // address@hidden@??????-@
+ return false;
+ } // ?????@@@??????-@
+ if (!C::eval(p[3],t)) { // ????-@@@??????-@
+ if (!C::eval(p[-3-w],t)) { // ????-@@@?????--@
+ return false;
+ } // ????-@@@address@hidden@
+ if (!C::eval(p[-3],t)) { // ????-@@@address@hidden@
+ return false;
+ } // ????-@@@????@@-@
+ if (!C::eval(p[w3],t)) { // ????-@@@-???@@-@
+ return false;
+ } // ????-@@@@???@@-@
+ if (!C::eval(p[-1+w3],t)) { // ????-@@@@-??@@-@
+ return false;
+ } // ????-@@@@@??@@-@
+ if (!C::eval(p[-2+2*w],t)) { // ????-@@@@@-?@@-@
+ return false;
+ } // ????-@@@@@@?@@-@
+ if (!C::eval(p[-3+w],t)) { // ????-@@@@@@-@@-@
+ return false;
+ } // ????-@@@@@@@@@-@
+ return true;
+ } // ????@@@@??????-@
+ if (!C::eval(p[3-w],t)) { // ???-@@@@??????-@
+ if (!C::eval(p[-3],t)) { // ???-@@@@????-?-@
+ return false;
+ } // ???-@@@@address@hidden@
+ if (!C::eval(p[w3],t)) { // ???-@@@@address@hidden@
+ return false;
+ } // ???-@@@@@address@hidden@
+ if (!C::eval(p[-1+w3],t)) { // ???-@@@@@address@hidden@
+ return false;
+ } // ???-@@@@@@address@hidden@
+ if (!C::eval(p[-2+2*w],t)) { // ???-@@@@@@address@hidden@
+ return false;
+ } // ???-@@@@@@@address@hidden@
+ if (!C::eval(p[-3+w],t)) { // ???-@@@@@@@address@hidden@
+ return false;
+ } // ???-@@@@@@@@@?-@
+ return true;
+ } // ???@@@@@??????-@
+ if (!C::eval(p[2-2*w],t)) { // ??-@@@@@??????-@
+ if (!C::eval(p[w3],t)) { // ??-@@@@@-?????-@
+ return false;
+ } // ??-@@@@@@?????-@
+ if (!C::eval(p[-1+w3],t)) { // ??-@@@@@@-????-@
+ return false;
+ } // ??-@@@@@@@????-@
+ if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@-???-@
+ return false;
+ } // ??-@@@@@@@@???-@
+ if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@-??-@
+ return false;
+ } // ??-@@@@@@@@@??-@
+ return true;
+ } // ??@@@@@@??????-@
+ if (!C::eval(p[1-w3],t)) { // ?-@@@@@@??????-@
+ if (!C::eval(p[w3],t)) { // ?-@@@@@@-?????-@
+ return false;
+ } // ?-@@@@@@@?????-@
+ if (!C::eval(p[-1+w3],t)) { // ?-@@@@@@@-????-@
+ return false;
+ } // ?-@@@@@@@@????-@
+ if (!C::eval(p[-2+2*w],t)) { // ?-@@@@@@@@-???-@
+ return false;
+ } // ?-@@@@@@@@@???-@
+ return true;
+ } // ?@@@@@@@??????-@
+ if (!C::eval(p[-w3],t)) { // -@@@@@@@??????-@
+ if (!C::eval(p[w3],t)) { // -@@@@@@@-?????-@
+ return false;
+ } // -@@@@@@@@?????-@
+ if (!C::eval(p[-1+w3],t)) { // -@@@@@@@@-????-@
+ return false;
+ } // -@@@@@@@@@????-@
+ return true;
+ } // @@@@@@@@??????-@
+ return true;
+ } // ??????????????@@
+ if (!C::eval(p[-w3],t)) { // -?????????????@@
+ if (!C::eval(p[1+w3],t)) { // -??????-??????@@
+ return false;
+ } // address@hidden@@
+ if (!C::eval(p[-1+w3],t)) { // address@hidden@@
+ return false;
+ } // address@hidden@????@@
+ if (!C::eval(p[w3],t)) { // address@hidden@????@@
+ return false;
+ } // -??????@@@????@@
+ if (!C::eval(p[-2+2*w],t)) { // -??????@@@-???@@
+ if (!C::eval(p[2+2*w],t)) { // -?????-@@@-???@@
+ return false;
+ } // -?????@@@@-???@@
+ if (!C::eval(p[3+w],t)) { // -????-@@@@-???@@
+ return false;
+ } // -????@@@@@-???@@
+ if (!C::eval(p[1-w3],t)) { // --???@@@@@-???@@
+ return false;
+ } // address@hidden@@@@@-???@@
+ if (!C::eval(p[2-2*w],t)) { // address@hidden@@@@@-???@@
+ return false;
+ } // -@@??@@@@@-???@@
+ if (!C::eval(p[3-w],t)) { // -@@-?@@@@@-???@@
+ return false;
+ } // -@@@?@@@@@-???@@
+ if (!C::eval(p[3],t)) { // -@@@-@@@@@-???@@
+ return false;
+ } // -@@@@@@@@@-???@@
+ return true;
+ } // -??????@@@@???@@
+ if (!C::eval(p[-3+w],t)) { // -??????@@@@-??@@
+ if (!C::eval(p[2+2*w],t)) { // -?????-@@@@-??@@
+ return false;
+ } // -?????@@@@@-??@@
+ if (!C::eval(p[2-2*w],t)) { // -?-???@@@@@-??@@
+ return false;
+ } // address@hidden@@@@@-??@@
+ if (!C::eval(p[3-w],t)) { // address@hidden@@@@@-??@@
+ return false;
+ } // -?@@??@@@@@-??@@
+ if (!C::eval(p[3],t)) { // -?@@-?@@@@@-??@@
+ return false;
+ } // -?@@@?@@@@@-??@@
+ if (!C::eval(p[3+w],t)) { // -?@@@-@@@@@-??@@
+ return false;
+ } // -?@@@@@@@@@-??@@
+ return true;
+ } // -??????@@@@@??@@
+ if (!C::eval(p[-3],t)) { // -??????@@@@@-?@@
+ if (!C::eval(p[3-w],t)) { // -??-???@@@@@-?@@
+ return false;
+ } // address@hidden@@@@@-?@@
+ if (!C::eval(p[3],t)) { // address@hidden@@@@@-?@@
+ return false;
+ } // -??@@??@@@@@-?@@
+ if (!C::eval(p[3+w],t)) { // -??@@-?@@@@@-?@@
+ return false;
+ } // -??@@@?@@@@@-?@@
+ if (!C::eval(p[2+2*w],t)) { // -??@@@-@@@@@-?@@
+ return false;
+ } // -??@@@@@@@@@-?@@
+ return true;
+ } // -??????@@@@@@?@@
+ if (!C::eval(p[-3-w],t)) { // -??????@@@@@@-@@
+ if (!C::eval(p[3],t)) { // -???-??@@@@@@-@@
+ return false;
+ } // address@hidden@@@@@@-@@
+ if (!C::eval(p[3+w],t)) { // address@hidden@@@@@@-@@
+ return false;
+ } // -???@@?@@@@@@-@@
+ if (!C::eval(p[2+2*w],t)) { // -???@@-@@@@@@-@@
+ return false;
+ } // -???@@@@@@@@@-@@
+ return true;
+ } // -??????@@@@@@@@@
+ return true;
+ } // @?????????????@@
+ if (!C::eval(p[-3-w],t)) { // @????????????-@@
+ if (!C::eval(p[2+2*w],t)) { // @?????-??????-@@
+ return false;
+ } // @address@hidden@@
+ if (!C::eval(p[3+w],t)) { // @address@hidden@@
+ return false;
+ } // @????@@??????-@@
+ if (!C::eval(p[3],t)) { // @???-@@??????-@@
+ return false;
+ } // @???@@@??????-@@
+ if (!C::eval(p[3-w],t)) { // @??-@@@??????-@@
+ if (!C::eval(p[-3],t)) { // @??-@@@?????--@@
+ return false;
+ } // @??-@@@address@hidden@@
+ if (!C::eval(p[-3+w],t)) { // @??-@@@address@hidden@@
+ return false;
+ } // @??-@@@????@@-@@
+ if (!C::eval(p[1+w3],t)) { // @??-@@@-???@@-@@
+ return false;
+ } // @??-@@@@???@@-@@
+ if (!C::eval(p[w3],t)) { // @??-@@@@-??@@-@@
+ return false;
+ } // @??-@@@@@??@@-@@
+ if (!C::eval(p[-1+w3],t)) { // @??-@@@@@-?@@-@@
+ return false;
+ } // @??-@@@@@@?@@-@@
+ if (!C::eval(p[-2+2*w],t)) { // @??-@@@@@@-@@-@@
+ return false;
+ } // @??-@@@@@@@@@-@@
+ return true;
+ } // @??@@@@??????-@@
+ if (!C::eval(p[2-2*w],t)) { // @?-@@@@??????-@@
+ if (!C::eval(p[-3+w],t)) { // @?-@@@@????-?-@@
+ return false;
+ } // @?-@@@@address@hidden@@
+ if (!C::eval(p[1+w3],t)) { // @?-@@@@address@hidden@@
+ return false;
+ } // @?-@@@@@address@hidden@@
+ if (!C::eval(p[w3],t)) { // @?-@@@@@address@hidden@@
+ return false;
+ } // @?-@@@@@@address@hidden@@
+ if (!C::eval(p[-1+w3],t)) { // @?-@@@@@@address@hidden@@
+ return false;
+ } // @?-@@@@@@@address@hidden@@
+ if (!C::eval(p[-2+2*w],t)) { // @?-@@@@@@@address@hidden@@
+ return false;
+ } // @?-@@@@@@@@@?-@@
+ return true;
+ } // @?@@@@@??????-@@
+ if (!C::eval(p[1-w3],t)) { // @-@@@@@??????-@@
+ if (!C::eval(p[1+w3],t)) { // @-@@@@@-?????-@@
+ return false;
+ } // @-@@@@@@?????-@@
+ if (!C::eval(p[w3],t)) { // @-@@@@@@-????-@@
+ return false;
+ } // @-@@@@@@@????-@@
+ if (!C::eval(p[-1+w3],t)) { // @-@@@@@@@-???-@@
+ return false;
+ } // @-@@@@@@@@???-@@
+ if (!C::eval(p[-2+2*w],t)) { // @-@@@@@@@@-??-@@
+ return false;
+ } // @-@@@@@@@@@??-@@
+ return true;
+ } // @@@@@@@??????-@@
+ return true;
+ } // @????????????@@@
+ if (!C::eval(p[1-w3],t)) { // @-???????????@@@
+ if (!C::eval(p[-2+2*w],t)) { // @-????????-??@@@
+ return false;
+ } // @address@hidden@@@
+ if (!C::eval(p[-1+w3],t)) { // @address@hidden@@@
+ return false;
+ } // @-???????@@??@@@
+ if (!C::eval(p[w3],t)) { // @-??????-@@??@@@
+ return false;
+ } // @-??????@@@??@@@
+ if (!C::eval(p[-3+w],t)) { // @-??????@@@-?@@@
+ if (!C::eval(p[1+w3],t)) { // @-?????-@@@-?@@@
+ return false;
+ } // @-?????@@@@-?@@@
+ if (!C::eval(p[2+2*w],t)) { // @-????-@@@@-?@@@
+ return false;
+ } // @-????@@@@@-?@@@
+ if (!C::eval(p[2-2*w],t)) { // @--???@@@@@-?@@@
+ return false;
+ } // @address@hidden@@@@@-?@@@
+ if (!C::eval(p[3-w],t)) { // @address@hidden@@@@@-?@@@
+ return false;
+ } // @-@@??@@@@@-?@@@
+ if (!C::eval(p[3],t)) { // @-@@-?@@@@@-?@@@
+ return false;
+ } // @-@@@?@@@@@-?@@@
+ if (!C::eval(p[3+w],t)) { // @-@@@-@@@@@-?@@@
+ return false;
+ } // @-@@@@@@@@@-?@@@
+ return true;
+ } // @-??????@@@@?@@@
+ if (!C::eval(p[-3],t)) { // @-??????@@@@-@@@
+ if (!C::eval(p[1+w3],t)) { // @-?????-@@@@-@@@
+ return false;
+ } // @-?????@@@@@-@@@
+ if (!C::eval(p[3-w],t)) { // @-?-???@@@@@-@@@
+ return false;
+ } // @address@hidden@@@@@-@@@
+ if (!C::eval(p[3],t)) { // @address@hidden@@@@@-@@@
+ return false;
+ } // @-?@@??@@@@@-@@@
+ if (!C::eval(p[3+w],t)) { // @-?@@-?@@@@@-@@@
+ return false;
+ } // @-?@@@?@@@@@-@@@
+ if (!C::eval(p[2+2*w],t)) { // @-?@@@-@@@@@-@@@
+ return false;
+ } // @-?@@@@@@@@@-@@@
+ return true;
+ } // @-??????@@@@@@@@
+ return true;
+ } // @@???????????@@@
+ if (!C::eval(p[-3],t)) { // @@??????????-@@@
+ if (!C::eval(p[3+w],t)) { // @@???-??????-@@@
+ return false;
+ } // @@address@hidden@@@
+ if (!C::eval(p[3],t)) { // @@address@hidden@@@
+ return false;
+ } // @@??@@??????-@@@
+ if (!C::eval(p[3-w],t)) { // @@?-@@??????-@@@
+ return false;
+ } // @@?@@@??????-@@@
+ if (!C::eval(p[2-2*w],t)) { // @@-@@@??????-@@@
+ if (!C::eval(p[-3+w],t)) { // @@-@@@?????--@@@
+ return false;
+ } // @@-@@@address@hidden@@@
+ if (!C::eval(p[-2+2*w],t)) { // @@-@@@address@hidden@@@
+ return false;
+ } // @@-@@@????@@-@@@
+ if (!C::eval(p[2+2*w],t)) { // @@-@@@-???@@-@@@
+ return false;
+ } // @@-@@@@???@@-@@@
+ if (!C::eval(p[1+w3],t)) { // @@-@@@@-??@@-@@@
+ return false;
+ } // @@-@@@@@??@@-@@@
+ if (!C::eval(p[w3],t)) { // @@-@@@@@-?@@-@@@
+ return false;
+ } // @@-@@@@@@?@@-@@@
+ if (!C::eval(p[-1+w3],t)) { // @@-@@@@@@-@@-@@@
+ return false;
+ } // @@-@@@@@@@@@-@@@
+ return true;
+ } // @@@@@@??????-@@@
+ return true;
+ } // @@??????????@@@@
+ if (!C::eval(p[2-2*w],t)) { // @@-?????????@@@@
+ if (!C::eval(p[-1+w3],t)) { // @@-??????-??@@@@
+ return false;
+ } // @@address@hidden@@@@
+ if (!C::eval(p[-2+2*w],t)) { // @@address@hidden@@@@
+ return false;
+ } // @@-??????@@?@@@@
+ if (!C::eval(p[-3+w],t)) { // @@-??????@@-@@@@
+ return false;
+ } // @@-??????@@@@@@@
+ return true;
+ } // @@@?????????@@@@
+ if (!C::eval(p[-3+w],t)) { // @@@????????-@@@@
+ if (!C::eval(p[3-w],t)) { // @@@-???????-@@@@
+ return false;
+ } // @@@@???????-@@@@
+ if (!C::eval(p[3],t)) { // @@@@-??????-@@@@
+ return false;
+ } // @@@@@??????-@@@@
+ return true;
+ } // @@@????????@@@@@
+ if (!C::eval(p[3-w],t)) { // @@@-???????@@@@@
+ if (!C::eval(p[-2+2*w],t)) { // @@@-??????-@@@@@
+ return false;
+ } // @@@-??????@@@@@@
+ return true;
+ } // @@@@???????@@@@@
+ return true;
+}
+
Index: cvd_src/corner_10.h
===================================================================
RCS file: cvd_src/corner_10.h
diff -N cvd_src/corner_10.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ cvd_src/corner_10.h 26 Jan 2007 15:51:59 -0000 1.1
@@ -0,0 +1,365 @@
+template <class C> inline bool is_corner_10(const byte* p, const int w, const
int t) {
+ const int w3 = 3*w;
+ if (!C::eval(p[-1-w3],t)) { // ???????????????-
+ if (!C::eval(p[3+w],t)) { // ?????-?????????-
+ return false;
+ } // address@hidden
+ if (!C::eval(p[2+2*w],t)) { // address@hidden
+ return false;
+ } // ?????@@????????-
+ if (!C::eval(p[-1+w3],t)) { // ?????@@??-?????-
+ return false;
+ } // ?????@@address@hidden
+ if (!C::eval(p[1+w3],t)) { // ?????@@address@hidden
+ return false;
+ } // ?????@@@address@hidden
+ if (!C::eval(p[w3],t)) { // ?????@@@address@hidden
+ return false;
+ } // ?????@@@@@?????-
+ if (!C::eval(p[-2+2*w],t)) { // ?????@@@@@-????-
+ if (!C::eval(p[-w3],t)) { // -????@@@@@-????-
+ return false;
+ } // @????@@@@@-????-
+ if (!C::eval(p[3],t)) { // @???-@@@@@-????-
+ return false;
+ } // @???@@@@@@-????-
+ if (!C::eval(p[1-w3],t)) { // @-??@@@@@@-????-
+ return false;
+ } // @@??@@@@@@-????-
+ if (!C::eval(p[2-2*w],t)) { // @@-?@@@@@@-????-
+ return false;
+ } // @@@?@@@@@@-????-
+ if (!C::eval(p[3-w],t)) { // @@@-@@@@@@-????-
+ return false;
+ } // @@@@@@@@@@-????-
+ return true;
+ } // ?????@@@@@@????-
+ if (!C::eval(p[-3+w],t)) { // ?????@@@@@@-???-
+ if (!C::eval(p[3],t)) { // ????-@@@@@@-???-
+ return false;
+ } // ????@@@@@@@-???-
+ if (!C::eval(p[1-w3],t)) { // ?-??@@@@@@@-???-
+ return false;
+ } // address@hidden@@@@@@@-???-
+ if (!C::eval(p[2-2*w],t)) { // address@hidden@@@@@@@-???-
+ return false;
+ } // ?@@?@@@@@@@-???-
+ if (!C::eval(p[3-w],t)) { // ?@@-@@@@@@@-???-
+ return false;
+ } // ?@@@@@@@@@@-???-
+ return true;
+ } // ?????@@@@@@@???-
+ if (!C::eval(p[3],t)) { // ????-@@@@@@@???-
+ if (!C::eval(p[-3],t)) { // ????-@@@@@@@-??-
+ return false;
+ } // ????-@@@@@@@@??-
+ if (!C::eval(p[-3-w],t)) { // ????-@@@@@@@@-?-
+ return false;
+ } // ????-@@@@@@@@@?-
+ if (!C::eval(p[-2-2*w],t)) { // ????-@@@@@@@@@--
+ return false;
+ } // ????-@@@@@@@@@@-
+ return true;
+ } // ????@@@@@@@@???-
+ if (!C::eval(p[3-w],t)) { // ???-@@@@@@@@???-
+ if (!C::eval(p[-3],t)) { // ???-@@@@@@@@-??-
+ return false;
+ } // ???-@@@@@@@@@??-
+ if (!C::eval(p[-3-w],t)) { // ???-@@@@@@@@@-?-
+ return false;
+ } // ???-@@@@@@@@@@?-
+ return true;
+ } // ???@@@@@@@@@???-
+ if (!C::eval(p[-3],t)) { // ???@@@@@@@@@-??-
+ if (!C::eval(p[2-2*w],t)) { // ??-@@@@@@@@@-??-
+ return false;
+ } // ??@@@@@@@@@@-??-
+ return true;
+ } // ???@@@@@@@@@@??-
+ return true;
+ } // ???????????????@
+ if (!C::eval(p[-2-2*w],t)) { // ??????????????-@
+ if (!C::eval(p[3],t)) { // ????-?????????-@
+ return false;
+ } // address@hidden@
+ if (!C::eval(p[3+w],t)) { // address@hidden@
+ return false;
+ } // ????@@????????-@
+ if (!C::eval(p[w3],t)) { // ????@@??-?????-@
+ return false;
+ } // ????@@address@hidden@
+ if (!C::eval(p[1+w3],t)) { // ????@@address@hidden@
+ return false;
+ } // ????@@?@@?????-@
+ if (!C::eval(p[2+2*w],t)) { // ????@@-@@?????-@
+ return false;
+ } // ????@@@@@?????-@
+ if (!C::eval(p[3-w],t)) { // ???-@@@@@?????-@
+ if (!C::eval(p[-1+w3],t)) { // ???-@@@@@-????-@
+ return false;
+ } // ???-@@@@@@????-@
+ if (!C::eval(p[-3-w],t)) { // ???-@@@@@@???--@
+ return false;
+ } // ???-@@@@@@address@hidden@
+ if (!C::eval(p[-2+2*w],t)) { // ???-@@@@@@address@hidden@
+ return false;
+ } // ???-@@@@@@@address@hidden@
+ if (!C::eval(p[-3+w],t)) { // ???-@@@@@@@address@hidden@
+ return false;
+ } // ???-@@@@@@@@address@hidden@
+ if (!C::eval(p[-3],t)) { // ???-@@@@@@@@address@hidden@
+ return false;
+ } // ???-@@@@@@@@@@-@
+ return true;
+ } // ???@@@@@@?????-@
+ if (!C::eval(p[2-2*w],t)) { // ??-@@@@@@?????-@
+ if (!C::eval(p[-3],t)) { // ??-@@@@@@???-?-@
+ return false;
+ } // ??-@@@@@@address@hidden@
+ if (!C::eval(p[-1+w3],t)) { // ??-@@@@@@address@hidden@
+ return false;
+ } // ??-@@@@@@@address@hidden@
+ if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@address@hidden@
+ return false;
+ } // ??-@@@@@@@@address@hidden@
+ if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@address@hidden@
+ return false;
+ } // ??-@@@@@@@@@@?-@
+ return true;
+ } // ??@@@@@@@?????-@
+ if (!C::eval(p[1-w3],t)) { // ?-@@@@@@@?????-@
+ if (!C::eval(p[-1+w3],t)) { // ?-@@@@@@@-????-@
+ return false;
+ } // ?-@@@@@@@@????-@
+ if (!C::eval(p[-2+2*w],t)) { // ?-@@@@@@@@-???-@
+ return false;
+ } // ?-@@@@@@@@@???-@
+ if (!C::eval(p[-3+w],t)) { // ?-@@@@@@@@@-??-@
+ return false;
+ } // ?-@@@@@@@@@@??-@
+ return true;
+ } // ?@@@@@@@@?????-@
+ if (!C::eval(p[-w3],t)) { // -@@@@@@@@?????-@
+ if (!C::eval(p[-1+w3],t)) { // -@@@@@@@@-????-@
+ return false;
+ } // -@@@@@@@@@????-@
+ if (!C::eval(p[-2+2*w],t)) { // -@@@@@@@@@-???-@
+ return false;
+ } // -@@@@@@@@@@???-@
+ return true;
+ } // @@@@@@@@@?????-@
+ return true;
+ } // ??????????????@@
+ if (!C::eval(p[-3-w],t)) { // ?????????????-@@
+ if (!C::eval(p[1+w3],t)) { // ???????-?????-@@
+ return false;
+ } // address@hidden@@
+ if (!C::eval(p[3-w],t)) { // address@hidden@@
+ return false;
+ } // address@hidden@?????-@@
+ if (!C::eval(p[3],t)) { // address@hidden@?????-@@
+ return false;
+ } // ???@@address@hidden@@
+ if (!C::eval(p[3+w],t)) { // ???@@address@hidden@@
+ return false;
+ } // ???@@@address@hidden@@
+ if (!C::eval(p[2+2*w],t)) { // ???@@@address@hidden@@
+ return false;
+ } // ???@@@@@?????-@@
+ if (!C::eval(p[2-2*w],t)) { // ??-@@@@@?????-@@
+ if (!C::eval(p[w3],t)) { // ??-@@@@@-????-@@
+ return false;
+ } // ??-@@@@@@????-@@
+ if (!C::eval(p[-3],t)) { // ??-@@@@@@???--@@
+ return false;
+ } // ??-@@@@@@address@hidden@@
+ if (!C::eval(p[-1+w3],t)) { // ??-@@@@@@address@hidden@@
+ return false;
+ } // ??-@@@@@@@address@hidden@@
+ if (!C::eval(p[-2+2*w],t)) { // ??-@@@@@@@address@hidden@@
+ return false;
+ } // ??-@@@@@@@@address@hidden@@
+ if (!C::eval(p[-3+w],t)) { // ??-@@@@@@@@address@hidden@@
+ return false;
+ } // ??-@@@@@@@@@@-@@
+ return true;
+ } // ??@@@@@@?????-@@
+ if (!C::eval(p[1-w3],t)) { // ?-@@@@@@?????-@@
+ if (!C::eval(p[-3+w],t)) { // ?-@@@@@@???-?-@@
+ return false;
+ } // ?-@@@@@@address@hidden@@
+ if (!C::eval(p[w3],t)) { // ?-@@@@@@address@hidden@@
+ return false;
+ } // ?-@@@@@@@address@hidden@@
+ if (!C::eval(p[-1+w3],t)) { // ?-@@@@@@@address@hidden@@
+ return false;
+ } // ?-@@@@@@@@address@hidden@@
+ if (!C::eval(p[-2+2*w],t)) { // ?-@@@@@@@@address@hidden@@
+ return false;
+ } // ?-@@@@@@@@@@?-@@
+ return true;
+ } // ?@@@@@@@?????-@@
+ if (!C::eval(p[-w3],t)) { // -@@@@@@@?????-@@
+ if (!C::eval(p[w3],t)) { // -@@@@@@@-????-@@
+ return false;
+ } // -@@@@@@@@????-@@
+ if (!C::eval(p[-1+w3],t)) { // -@@@@@@@@-???-@@
+ return false;
+ } // -@@@@@@@@@???-@@
+ if (!C::eval(p[-2+2*w],t)) { // -@@@@@@@@@-??-@@
+ return false;
+ } // -@@@@@@@@@@??-@@
+ return true;
+ } // @@@@@@@@?????-@@
+ return true;
+ } // ?????????????@@@
+ if (!C::eval(p[-w3],t)) { // -????????????@@@
+ if (!C::eval(p[2+2*w],t)) { // -?????-??????@@@
+ return false;
+ } // address@hidden@@@
+ if (!C::eval(p[1+w3],t)) { // address@hidden@@@
+ return false;
+ } // -?????@@?????@@@
+ if (!C::eval(p[-2+2*w],t)) { // -?????@@??-??@@@
+ return false;
+ } // -?????@@address@hidden@@@
+ if (!C::eval(p[w3],t)) { // -?????@@address@hidden@@@
+ return false;
+ } // -?????@@@address@hidden@@@
+ if (!C::eval(p[-1+w3],t)) { // -?????@@@address@hidden@@@
+ return false;
+ } // -?????@@@@@??@@@
+ if (!C::eval(p[-3+w],t)) { // -?????@@@@@-?@@@
+ if (!C::eval(p[1-w3],t)) { // --????@@@@@-?@@@
+ return false;
+ } // address@hidden@@@@@-?@@@
+ if (!C::eval(p[3+w],t)) { // address@hidden@@@@@-?@@@
+ return false;
+ } // address@hidden@@@@@@-?@@@
+ if (!C::eval(p[2-2*w],t)) { // address@hidden@@@@@@-?@@@
+ return false;
+ } // -@@??@@@@@@-?@@@
+ if (!C::eval(p[3-w],t)) { // -@@-?@@@@@@-?@@@
+ return false;
+ } // -@@@?@@@@@@-?@@@
+ if (!C::eval(p[3],t)) { // -@@@-@@@@@@-?@@@
+ return false;
+ } // -@@@@@@@@@@-?@@@
+ return true;
+ } // -?????@@@@@@?@@@
+ if (!C::eval(p[-3],t)) { // -?????@@@@@@-@@@
+ if (!C::eval(p[3+w],t)) { // -????-@@@@@@-@@@
+ return false;
+ } // -????@@@@@@@-@@@
+ if (!C::eval(p[2-2*w],t)) { // -?-??@@@@@@@-@@@
+ return false;
+ } // address@hidden@@@@@@@-@@@
+ if (!C::eval(p[3-w],t)) { // address@hidden@@@@@@@-@@@
+ return false;
+ } // -?@@?@@@@@@@-@@@
+ if (!C::eval(p[3],t)) { // -?@@-@@@@@@@-@@@
+ return false;
+ } // -?@@@@@@@@@@-@@@
+ return true;
+ } // -?????@@@@@@@@@@
+ return true;
+ } // @????????????@@@
+ if (!C::eval(p[-3],t)) { // @???????????-@@@
+ if (!C::eval(p[2+2*w],t)) { // @?????-?????-@@@
+ return false;
+ } // @address@hidden@@@
+ if (!C::eval(p[2-2*w],t)) { // @address@hidden@@@
+ return false;
+ } // @address@hidden@?????-@@@
+ if (!C::eval(p[3-w],t)) { // @address@hidden@?????-@@@
+ return false;
+ } // @?@@address@hidden@@@
+ if (!C::eval(p[3+w],t)) { // @?@@address@hidden@@@
+ return false;
+ } // @?@@?@@?????-@@@
+ if (!C::eval(p[3],t)) { // @?@@-@@?????-@@@
+ return false;
+ } // @?@@@@@?????-@@@
+ if (!C::eval(p[1-w3],t)) { // @-@@@@@?????-@@@
+ if (!C::eval(p[1+w3],t)) { // @-@@@@@-????-@@@
+ return false;
+ } // @-@@@@@@????-@@@
+ if (!C::eval(p[-3+w],t)) { // @-@@@@@@???--@@@
+ return false;
+ } // @-@@@@@@address@hidden@@@
+ if (!C::eval(p[w3],t)) { // @-@@@@@@address@hidden@@@
+ return false;
+ } // @-@@@@@@@address@hidden@@@
+ if (!C::eval(p[-1+w3],t)) { // @-@@@@@@@address@hidden@@@
+ return false;
+ } // @-@@@@@@@@address@hidden@@@
+ if (!C::eval(p[-2+2*w],t)) { // @-@@@@@@@@address@hidden@@@
+ return false;
+ } // @-@@@@@@@@@@-@@@
+ return true;
+ } // @@@@@@@?????-@@@
+ return true;
+ } // @???????????@@@@
+ if (!C::eval(p[1-w3],t)) { // @-??????????@@@@
+ if (!C::eval(p[1+w3],t)) { // @-?????-????@@@@
+ return false;
+ } // @address@hidden@@@@
+ if (!C::eval(p[-3+w],t)) { // @address@hidden@@@@
+ return false;
+ } // @address@hidden@@@@@
+ if (!C::eval(p[w3],t)) { // @address@hidden@@@@@
+ return false;
+ } // @-?????@@??@@@@@
+ if (!C::eval(p[-1+w3],t)) { // @-?????@@-?@@@@@
+ return false;
+ } // @-?????@@@?@@@@@
+ if (!C::eval(p[-2+2*w],t)) { // @-?????@@@-@@@@@
+ return false;
+ } // @-?????@@@@@@@@@
+ return true;
+ } // @@??????????@@@@
+ if (!C::eval(p[2-2*w],t)) { // @@-?????????@@@@
+ if (!C::eval(p[-3+w],t)) { // @@-????????-@@@@
+ return false;
+ } // @@-????????@@@@@
+ if (!C::eval(p[w3],t)) { // @@-?????-??@@@@@
+ return false;
+ } // @@address@hidden@@@@@
+ if (!C::eval(p[-1+w3],t)) { // @@address@hidden@@@@@
+ return false;
+ } // @@-?????@@?@@@@@
+ if (!C::eval(p[-2+2*w],t)) { // @@-?????@@-@@@@@
+ return false;
+ } // @@-?????@@@@@@@@
+ return true;
+ } // @@@?????????@@@@
+ if (!C::eval(p[-3+w],t)) { // @@@????????-@@@@
+ if (!C::eval(p[3-w],t)) { // @@@-???????-@@@@
+ return false;
+ } // @@@@???????-@@@@
+ if (!C::eval(p[3],t)) { // @@@@-??????-@@@@
+ return false;
+ } // @@@@@??????-@@@@
+ if (!C::eval(p[3+w],t)) { // @@@@@-?????-@@@@
+ return false;
+ } // @@@@@@?????-@@@@
+ return true;
+ } // @@@????????@@@@@
+ if (!C::eval(p[-2+2*w],t)) { // @@@???????-@@@@@
+ if (!C::eval(p[3-w],t)) { // @@@-??????-@@@@@
+ return false;
+ } // @@@@??????-@@@@@
+ if (!C::eval(p[3],t)) { // @@@@-?????-@@@@@
+ return false;
+ } // @@@@@?????-@@@@@
+ return true;
+ } // @@@???????@@@@@@
+ if (!C::eval(p[3-w],t)) { // @@@-??????@@@@@@
+ if (!C::eval(p[-1+w3],t)) { // @@@-?????-@@@@@@
+ return false;
+ } // @@@-?????@@@@@@@
+ return true;
+ } // @@@@??????@@@@@@
+ return true;
+}
+
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libcvd-members] libcvd cvd/fast_corner.h cvd_src/faster_corner....,
Ethan Eade <=