Definition at line 64 of file AniGauss.h. References TriggsM(). Referenced by anigauss(). 00065 { 00066 int i, j; 00067 double b1, b2, b3; 00068 double pix, p1, p2, p3; 00069 double sum, sumsq; 00070 double iplus, uplus, vplus; 00071 double unp, unp1, unp2; 00072 double M[9]; 00073 00074 sumsq = filter[3]; 00075 sum = sumsq*sumsq; 00076 00077 for (i = 0; i < sy; i++) { 00078 /* causal filter */ 00079 b1 = filter[2]; b2 = filter[1]; b3 = filter[0]; 00080 p1 = *src/sumsq; p2 = p1; p3 = p1; 00081 00082 iplus = src[sx-1]; 00083 for (j = 0; j < sx; j++) { 00084 pix = *src++ + b1*p1 + b2*p2 + b3*p3; 00085 *dest++ = pix; 00086 p3 = p2; p2 = p1; p1 = pix; /* update history */ 00087 } 00088 00089 /* anti-causal filter */ 00090 00091 /* apply Triggs border condition */ 00092 uplus = iplus/(1.0-b1-b2-b3); 00093 b1 = filter[4]; b2 = filter[5]; b3 = filter[6]; 00094 vplus = uplus/(1.0-b1-b2-b3); 00095 00096 unp = p1-uplus; 00097 unp1 = p2-uplus; 00098 unp2 = p3-uplus; 00099 00100 TriggsM(filter, M); 00101 00102 pix = M[0]*unp+M[1]*unp1+M[2]*unp2 + vplus; 00103 p1 = M[3]*unp+M[4]*unp1+M[5]*unp2 + vplus; 00104 p2 = M[6]*unp+M[7]*unp1+M[8]*unp2 + vplus; 00105 pix *= sum; p1 *= sum; p2 *= sum; 00106 00107 *(--dest) = pix; 00108 p3 = p2; p2 = p1; p1 = pix; 00109 00110 for (j = sx-2; j >= 0; j--) { 00111 pix = sum * *(--dest) + b1*p1 + b2*p2 + b3*p3; 00112 *dest = pix; 00113 p3 = p2; p2 = p1; p1 = pix; 00114 } 00115 dest += sx; 00116 } 00117 }
Here is the call graph for this function:
|